1095 Commits

Author SHA1 Message Date
5fd5ab51f8 ignore sbin 2019-04-01 06:50:08 +02:00
a64049a09f removed false 2019-04-01 06:49:58 +02:00
2f741d5893 fixes for design 2019-04-01 06:47:49 +02:00
c5860f338b Gems for design upgraded 2019-04-01 06:42:33 +02:00
011f772bc3 started to migrate themes new wrapper script 2019-03-17 18:06:20 +01:00
00c8045742 eagerload development 2019-03-11 20:48:29 +01:00
f809f36c06 Upgraded to Rails 4 2019-02-24 15:47:27 +01:00
f52ec0411d gremium und studien factory und specs 2019-01-13 15:13:31 +01:00
92d63b71ed neuigkeit factory small fix 2019-01-13 13:35:06 +01:00
30cbe8923f neuigkeit controller spec 2019-01-13 13:24:00 +01:00
1b15fdf385 very small fix for neuigkeit controller 2019-01-13 10:12:01 +01:00
d7c8342817 additional neuigkeit test 2019-01-13 10:11:25 +01:00
71d14c83ae rewriting some factories 2019-01-13 10:01:22 +01:00
fea219ba92 forst neuigkeit controller spec 2019-01-07 23:32:23 +01:00
1b065cd3f0 nes neuigkeiten model specs 2019-01-07 23:31:55 +01:00
67bfa0f699 Merge branch 'master' into prep_upgrade 2019-01-05 16:20:37 +01:00
ff20774889 improve tests for lva 2019-01-05 16:18:30 +01:00
f7f8937197 started increasing test coverage for lva 2019-01-05 02:56:47 +01:00
c713fdd0d0 ignore coverage folder 2019-01-05 02:56:08 +01:00
bc8f4cfce3 small fixes for neuigkeit spec 2019-01-05 02:55:35 +01:00
5759ba79e0 increase test coverage for meetings 2019-01-05 02:54:50 +01:00
70e415446a simplecov added to determine test coverage 2019-01-05 02:53:04 +01:00
82cd127370 Remove generated documentation from version control 2019-01-02 18:52:35 +01:00
72e18f9e29 generated documentation 2019-01-01 19:04:08 +01:00
e873916095 no longer ignore Gemfile.lock and adding Gemfile.lock 2018-12-30 09:33:19 +01:00
6ebb36d840 no longer ignore Gemfile.lock 2018-12-30 09:32:28 +01:00
f6c3cda045 fixes in fotogallery 2018-12-29 01:04:16 +01:00
a20c6fa673 Corrected solr config + minor bugfixes 2018-09-17 12:05:47 +02:00
Andreas Stephanides
52ffe0c701 added developer login strategy for testing 2018-06-02 12:01:18 +02:00
Andreas Stephanides
52fcabf2dc fix login menu 2018-05-26 08:52:26 +02:00
Andreas Stephanides
c03a60c236 developer login added 2018-05-26 08:50:54 +02:00
1cf84c90ae test 2018-05-20 23:35:38 +02:00
2e732561e8 infoscreenframe 2018-05-20 23:29:34 +02:00
a8f353f213 fixes for production Gemfile 2018-05-20 22:21:34 +02:00
6ba20206ab Merge remote-tracking branch 'origin/stable-production' into stable-production 2018-05-20 21:31:56 +02:00
Andreas Stephanides
2ae99b4b9e remove http header language detection 2018-05-20 21:20:43 +02:00
Andreas Stephanides
f61681c5d0 moved views from theme blue2 to default removed override by theme 2018-05-20 21:18:37 +02:00
1b91d99b24 Merge remote-tracking branch 'origin/master' into stable-production 2018-05-14 21:14:40 +02:00
28906eb5fb write True small 2018-05-14 21:13:42 +02:00
745c4413f4 fix the solr path for production 2018-05-14 21:00:17 +02:00
ac7e7f3462 Merge remote-tracking branch 'origin/master' into stable-production 2018-05-14 20:26:09 +02:00
e55a71e77d rake version set to 10 2018-05-14 20:26:04 +02:00
502aae5c27 merge latest 2018-05-14 20:17:30 +02:00
c2ebdcbefc merge master and stable 2018-05-14 19:58:17 +02:00
734a137563 testtmp 2018-05-14 18:55:37 +02:00
9f1de3d9d0 diverse hot fixes von der productive Version auf fetruby 2018-05-14 17:56:17 +02:00
Pet
0f683ac974 Found out the testrby is on Mogok ;) 2018-04-12 23:25:25 +02:00
Pet
5ffecf7087 Updated Lackis infoscreen layout 2018-04-12 22:48:20 +02:00
Pet
965db4dec0 Updated Lackis infoscreen layout 2018-04-12 22:45:00 +02:00
Pet
6aecb4b4a8 Updated Lackis infoscreen layout 2018-04-12 22:43:10 +02:00
Pet
b1616a6d6d Updated Lackis infoscreen layout 2018-04-12 22:39:48 +02:00
Pet
122bf6c6d4 Updated Lackis infoscreen layout 2018-04-12 22:37:00 +02:00
Pet
829bdb97be Updated Lackis infoscreen layout 2018-04-12 22:35:10 +02:00
Pet
6c91513ff8 Updated Lackis infoscreen layout 2018-04-12 22:33:00 +02:00
Pet
d1a496a017 Updated Lackis infoscreen layout 2018-04-12 22:29:34 +02:00
Pet
eb95f7a5e4 Updated Lackis infoscreen layout 2018-04-12 22:26:46 +02:00
Pet
de225627b1 Updated Lackis infoscreen layout 2018-04-12 22:20:44 +02:00
Pet
08aa459f57 Updated Lackis infoscreen layout 2018-04-12 22:16:06 +02:00
Pet
2b6890a6e6 Updated Lackis infoscreen layout 2018-04-12 22:14:55 +02:00
Pet
04ce26754a Updated Lackis infoscreen layout 2018-04-12 22:10:14 +02:00
Pet
163e1adfc2 Updated Lackis infoscreen layout 2018-04-12 22:04:47 +02:00
Pet
e5a5ec85ef Updated Lackis infoscreen layout 2018-04-12 22:02:50 +02:00
Pet
256d9f09fb Updated Lackis infoscreen layout 2018-04-12 21:58:19 +02:00
Pet
e3c6721811 Updated Lackis infoscreen layout 2018-04-12 21:55:05 +02:00
Pet
e5f0d75b79 Updated Lackis infoscreen layout 2018-04-12 21:47:07 +02:00
Pet
07bb853501 Updated Lackis infoscreen layout 2018-04-12 21:42:03 +02:00
Pet
af5b081a3b Updated Lackis infoscreen layout 2018-04-12 20:54:08 +02:00
Pet
24f3e90235 Updated Lackis infoscreen layout 2018-04-12 20:51:16 +02:00
Pet
ef1135962e Implemented Lackis infoscreen layout 2018-04-12 20:33:09 +02:00
Pet
22cf26f76c changed infoscreen layout 2018-03-28 16:06:52 +02:00
Pet
0c7614b41d removed the wrong login window 2018-03-27 23:09:18 +02:00
Pet
0fedeb2bde changed etherpad link 2018-03-27 22:03:17 +02:00
Pet
146885abae changed etherpad link 2018-03-27 22:01:20 +02:00
Pet
c38139d6f1 changed the etherpad url 2018-03-26 22:18:50 +02:00
ruby fuer rvm
8cb6ec785c no sunspot pid file 2018-03-10 07:10:03 +00:00
root
b8903c6d9a ignore pid files 2018-03-10 06:59:53 +00:00
Andreas Stephanides
242d05f4fa AutoCommit Mit Aug 23 10:03:01 CEST 2017 2017-08-23 10:03:01 +02:00
Andreas Stephanides
070e0dfedb fixing blue2 index 2017-07-27 09:23:02 +02:00
ruby
610e6ae3dd new design 2017-07-25 17:11:51 +02:00
Andreas Stephanides
6c4873d869 AutoCommit Die Jul 25 11:03:01 CEST 2017 2017-07-25 11:03:01 +02:00
Andreas Stephanides
09d5e7b880 Merge branch 'master' of https://git.triton.fet.at/git/fetsite 2017-07-25 10:21:50 +02:00
Andreas Stephanides
6b37d44c9a AutoCommit Die Jul 25 10:03:02 CEST 2017 2017-07-25 10:03:02 +02:00
peter
20088b868f added header image to infoscreen 2017-06-01 00:06:20 +02:00
peter
f1fbd3bef3 added header image to infoscreen 2017-05-31 23:58:38 +02:00
peter
17a43097e7 added header image to infoscreen 2017-05-31 23:55:56 +02:00
peter
3498535d8c added header image to infoscreen 2017-05-31 23:54:11 +02:00
peter
d313e712f1 added header image to infoscreen 2017-05-31 23:52:47 +02:00
peter
bb4adf2eb7 added header image to infoscreen 2017-05-31 23:47:38 +02:00
peter
09532fc74c added header image to infoscreen 2017-05-31 23:41:51 +02:00
peter
29d5c8dac7 added header image to infoscreen 2017-05-31 23:39:50 +02:00
peter
926431c0a2 added header image to infoscreen 2017-05-31 23:38:02 +02:00
peter
d95e1a3399 added header image to infoscreen 2017-05-31 23:35:58 +02:00
peter
d6fa4e1dc7 added header image to infoscreen 2017-05-31 23:27:07 +02:00
peter
6528e8a320 added header image to infoscreen 2017-05-31 23:24:35 +02:00
peter
18beead785 added header image to infoscreen 2017-05-31 23:16:34 +02:00
peter
3baf44c057 added header image to infoscreen 2017-05-31 23:08:43 +02:00
peter
9ec7a76d4a added header image to infoscreen 2017-05-31 23:03:13 +02:00
peter
3b6590f369 added header image to infoscreen 2017-05-31 23:01:07 +02:00
peter
708911ba4e added header image to infoscreen 2017-05-31 22:55:09 +02:00
peter
797d2a1d31 added header image to infoscreen 2017-05-31 22:54:01 +02:00
peter
7ad484cdd7 added header image to infoscreen 2017-05-31 22:52:06 +02:00
peter
aca92e1107 added header image to infoscreen 2017-05-31 22:46:11 +02:00
peter
f13fbafaae added header image to infoscreen 2017-05-31 22:45:42 +02:00
peter
f6738a5226 added header image to infoscreen 2017-05-31 22:42:31 +02:00
peter
2f4a9e4f10 added header image to infoscreen 2017-05-31 22:40:19 +02:00
peter
dff490163e added header image to infoscreen 2017-05-31 22:39:03 +02:00
peter
20a7091800 added header image to infoscreen 2017-05-31 22:38:10 +02:00
peter
ff49499204 added header image to infoscreen 2017-05-31 22:36:18 +02:00
peter
8b3e1ee225 added header image to infoscreen 2017-05-31 22:32:14 +02:00
peter
dc4f161ce4 added header image to infoscreen 2017-05-31 22:29:42 +02:00
peter
5c5236062b added header image to infoscreen 2017-05-31 22:20:53 +02:00
peter
43af1114e8 added header image to infoscreen 2017-05-31 22:16:54 +02:00
peter
0772d51c71 added header image to infoscreen 2017-05-31 22:15:34 +02:00
peter
f2293513c1 added header image to infoscreen 2017-05-31 22:14:12 +02:00
peter
87cad802d7 added header image to infoscreen 2017-05-31 22:12:39 +02:00
peter
2e4a0680df added header image to infoscreen 2017-05-31 22:07:11 +02:00
peter
4ca664a091 added header image to infoscreen 2017-05-31 22:04:03 +02:00
peter
02c766f428 added header image to infoscreen 2017-05-31 22:03:05 +02:00
peter
75e5b8e267 added header image to infoscreen 2017-05-31 21:59:47 +02:00
peter
7d008cb599 added header image to infoscreen 2017-05-31 21:51:41 +02:00
peter
b1fc24af80 set config.serve_static_assets = false 2017-05-31 21:49:21 +02:00
peter
7477b028c5 set config.serve_static_assets = false 2017-05-31 21:44:51 +02:00
peter
fddaa0dcb6 set config.serve_static_assets = false 2017-05-31 21:40:47 +02:00
peter
4ed7e92385 set config.serve_static_assets = true 2017-05-31 21:35:24 +02:00
peter
82876f34a8 changed infoscreen layout 2017-05-31 21:29:54 +02:00
peter
3d97153fa5 changed infoscreen layout 2017-05-31 21:28:09 +02:00
peter
6e10830b83 changed infoscreen layout 2017-05-31 21:05:06 +02:00
peter
8ad15aafd2 changed infoscreen layout 2017-05-31 21:03:43 +02:00
peter
d4948fff5e changed infoscreen layout 2017-05-31 15:11:59 +02:00
peter
8ea2109b27 changed infoscreen layout 2017-05-31 15:10:40 +02:00
peter
f72466f1cd changed infoscreen layout 2017-05-31 15:09:05 +02:00
peter
cba94e926c changed infoscreen layout 2017-05-31 15:07:47 +02:00
peter
f522a83813 changed infoscreen layout 2017-05-31 15:05:53 +02:00
peter
94d67463a9 changed infoscreen layout 2017-05-31 15:03:08 +02:00
peter
38656a1e75 changed infoscreen layout 2017-05-31 15:01:35 +02:00
peter
503b9eb732 changed infoscreen layout 2017-05-31 14:59:25 +02:00
peter
ffee3b8dfb changed infoscreen layout 2017-05-31 14:57:01 +02:00
peter
978f617131 changed infoscreen layout 2017-05-31 14:54:07 +02:00
peter
cf2a8adf49 changed infoscreen layout 2017-05-31 14:49:35 +02:00
peter
14e563ef95 changed infoscreen layout 2017-05-31 12:35:30 +02:00
Pet
5660cd7748 added testtext 2017-05-31 12:14:00 +02:00
Andreas Stephanides
af5d055014 change timeout for inforscreen 2017-05-29 09:56:46 +02:00
Andreas Stephanides
453dd7867d change timeout for inforscreen 2017-05-29 09:44:09 +02:00
root
bbfb5e6a1d Merge branch 'latest' of https://git.triton.fet.at/git/fetsite into latest 2017-05-13 23:04:50 +02:00
Andreas Stephanides
4ed35f184c https-etherpad 2017-05-12 07:18:19 +02:00
ruby
37aab0ef59 Merge branch 'latest' of https://git.triton.fet.at/git/fetsite into latest 2017-05-09 15:13:08 +02:00
ruby
c53d34191a fixes to init script 2017-05-09 15:11:28 +02:00
ruby
61c5624b16 blue2 default2 2017-05-09 15:11:00 +02:00
ruby
a1ef7028fd local solr sunspot 2017-05-09 15:10:40 +02:00
Andreas Stephanides
b5f1ae9e69 APIKEY 2017-05-09 13:39:52 +02:00
Andreas Stephanides
6a9fe8243b fix apth for ETHERPAD Key 2017-05-09 13:38:32 +02:00
Andreas Stephanides
1f581ab819 delete empty files 2017-05-09 13:31:45 +02:00
root
e73315bd41 fix neuigkeiten 2017-05-04 17:56:47 +02:00
Andreas Stephanides
491e360141 small fixes incl. solr 2017-04-18 19:03:09 +02:00
Andreas Stephanides
28226df76c Merge remote-tracking branch 'fetmaster/master' 2017-04-17 13:20:01 +02:00
root
dfef3721dc test1 2017-04-15 15:32:26 +02:00
Andreas Stephanides
14598fbbd9 add a README 2017-04-03 15:26:29 +02:00
Andreas Stephanides
ffaa57c914 starttopic nil 2017-04-03 15:26:19 +02:00
Andreas Stephanides
cd439ecf02 solr config update 2017-04-03 15:26:01 +02:00
Andreas Stephanides
328adfe3a5 calentries view fixed 2017-04-03 15:25:40 +02:00
Andreas Stephanides
e0312386e7 no boost for studium 2017-04-03 15:25:22 +02:00
ee451cdd9b some changes 2017-03-30 23:11:57 +02:00
cfdbeeaf46 Merge /home/andis/fetsite 2015-09-14 16:01:15 +02:00
Andreas Stephanides
5542777216 AutoCommit Mon Sep 14 16:00:56 CEST 2015 2015-09-14 16:00:56 +02:00
e341384493 Merge /home/andis/fetsite 2015-09-14 15:56:10 +02:00
Andreas Stephanides
0337131472 AutoCommit Mon Sep 14 15:54:50 CEST 2015 2015-09-14 15:54:50 +02:00
e4a100823f Merge /home/andis/fetsite 2015-09-14 13:50:46 +02:00
Andreas Stephanides
e15526865d AutoCommit Mon Sep 14 13:50:05 CEST 2015 2015-09-14 13:50:05 +02:00
f052940d6c Merge /home/andis/fetsite 2015-09-14 12:06:15 +02:00
7c6e04ca2e inactive facebook config 2015-09-14 12:05:55 +02:00
Andreas Stephanides
1d8bae3aee AutoCommit Mon Sep 14 12:03:04 CEST 2015 2015-09-14 12:03:04 +02:00
Andreas Stephanides
168b4d9e4c AutoCommit Mon Sep 14 01:03:01 CEST 2015 2015-09-14 01:03:01 +02:00
Andreas Stephanides
a47c6fea7a AutoCommit Mon Sep 14 00:03:01 CEST 2015 2015-09-14 00:03:01 +02:00
Andreas Stephanides
10949e9708 AutoCommit Son Sep 13 14:03:06 CEST 2015 2015-09-13 14:03:06 +02:00
Andreas Stephanides
a9c9b22a94 AutoCommit Son Sep 13 13:03:44 CEST 2015 2015-09-13 13:03:44 +02:00
Andreas Stephanides
b073a1a098 AutoCommit Son Sep 13 12:03:20 CEST 2015 2015-09-13 12:03:21 +02:00
Andreas Stephanides
d85a01c810 AutoCommit Son Sep 13 11:03:05 CEST 2015 2015-09-13 11:03:05 +02:00
Andreas Stephanides
4a8e5d393e AutoCommit Son Sep 13 10:03:11 CEST 2015 2015-09-13 10:03:11 +02:00
Andreas Stephanides
97d5427f6d AutoCommit Son Sep 13 00:03:01 CEST 2015 2015-09-13 00:03:01 +02:00
Andreas Stephanides
92667b92e9 AutoCommit Sam Sep 12 22:03:04 CEST 2015 2015-09-12 22:03:04 +02:00
Andreas Stephanides
ff70c31c40 AutoCommit Sam Sep 12 13:03:02 CEST 2015 2015-09-12 13:03:02 +02:00
Andreas Stephanides
3d87ce6fd2 AutoCommit Sam Sep 12 12:03:06 CEST 2015 2015-09-12 12:03:06 +02:00
Andreas Stephanides
cfb42584e1 AutoCommit Sam Sep 12 11:03:02 CEST 2015 2015-09-12 11:03:02 +02:00
Andreas Stephanides
52dac513f7 AutoCommit Sam Sep 12 10:03:56 CEST 2015 2015-09-12 10:03:56 +02:00
Andreas Stephanides
514bdc1ef0 AutoCommit Fre Sep 11 21:03:01 CEST 2015 2015-09-11 21:03:01 +02:00
Andreas Stephanides
e486ab02fd AutoCommit Fre Sep 11 19:03:01 CEST 2015 2015-09-11 19:03:01 +02:00
Andreas Stephanides
0dc83df98c AutoCommit Fre Sep 11 15:03:05 CEST 2015 2015-09-11 15:03:05 +02:00
Andreas Stephanides
9a9c7f74f9 AutoCommit Fre Sep 11 13:03:02 CEST 2015 2015-09-11 13:03:02 +02:00
Andreas Stephanides
68e2d4a5a7 AutoCommit Don Sep 10 22:03:01 CEST 2015 2015-09-10 22:03:01 +02:00
Andreas Stephanides
edaf154549 AutoCommit Don Sep 10 21:03:02 CEST 2015 2015-09-10 21:03:02 +02:00
Andreas Stephanides
f59f0cb05a AutoCommit Don Sep 10 20:03:01 CEST 2015 2015-09-10 20:03:01 +02:00
Andreas Stephanides
b7abbb8a77 AutoCommit Don Sep 10 09:03:01 CEST 2015 2015-09-10 09:03:01 +02:00
Andreas Stephanides
9521f04c72 AutoCommit Don Sep 10 00:03:03 CEST 2015 2015-09-10 00:03:03 +02:00
Andreas Stephanides
01c6fedaee AutoCommit Mit Sep 9 23:03:01 CEST 2015 2015-09-09 23:03:01 +02:00
Andreas Stephanides
1e48881830 AutoCommit Mit Sep 9 22:03:05 CEST 2015 2015-09-09 22:03:05 +02:00
Andreas Stephanides
0da3ee8ed9 AutoCommit Mit Sep 9 11:03:36 CEST 2015 2015-09-09 11:03:37 +02:00
Andreas Stephanides
5531eb089e AutoCommit Die Sep 8 14:03:06 CEST 2015 2015-09-08 14:03:06 +02:00
Andreas Stephanides
8fa549ae23 AutoCommit Mon Sep 7 00:03:01 CEST 2015 2015-09-07 00:03:01 +02:00
Andreas Stephanides
8c2efffff4 AutoCommit Son Sep 6 23:03:05 CEST 2015 2015-09-06 23:03:05 +02:00
Andreas Stephanides
b9079c0525 AutoCommit Son Sep 6 21:03:06 CEST 2015 2015-09-06 21:03:06 +02:00
Andreas Stephanides
d509884aa1 AutoCommit Sam Sep 5 21:03:02 CEST 2015 2015-09-05 21:03:02 +02:00
Andreas Stephanides
13f852cf48 AutoCommit Sam Sep 5 19:03:01 CEST 2015 2015-09-05 19:03:01 +02:00
Andreas Stephanides
a96e48fa36 AutoCommit Sam Sep 5 18:03:02 CEST 2015 2015-09-05 18:03:02 +02:00
Andreas Stephanides
a84332d09f AutoCommit Sam Sep 5 17:03:04 CEST 2015 2015-09-05 17:03:04 +02:00
Andreas Stephanides
4b1d11751d AutoCommit Sam Sep 5 16:03:02 CEST 2015 2015-09-05 16:03:02 +02:00
Andreas Stephanides
eccb090d5c AutoCommit Sam Sep 5 15:03:11 CEST 2015 2015-09-05 15:03:11 +02:00
Andreas Stephanides
c7d12e9a42 AutoCommit Fre Sep 4 14:03:04 CEST 2015 2015-09-04 14:03:04 +02:00
Andreas Stephanides
f7ad93c398 AutoCommit Don Sep 3 16:03:01 CEST 2015 2015-09-03 16:03:01 +02:00
Andreas Stephanides
984e5f4b56 AutoCommit Don Sep 3 12:03:05 CEST 2015 2015-09-03 12:03:05 +02:00
Andreas Stephanides
4835155d06 AutoCommit Don Sep 3 11:03:01 CEST 2015 2015-09-03 11:03:01 +02:00
Andreas Stephanides
e7c21ad95b AutoCommit Don Sep 3 10:03:06 CEST 2015 2015-09-03 10:03:06 +02:00
Andreas Stephanides
889d7ac3d0 AutoCommit Mit Sep 2 23:03:01 CEST 2015 2015-09-02 23:03:01 +02:00
Andreas Stephanides
194a8375dd AutoCommit Mit Sep 2 22:03:01 CEST 2015 2015-09-02 22:03:01 +02:00
Andreas Stephanides
7b9b226e59 AutoCommit Mit Sep 2 21:03:01 CEST 2015 2015-09-02 21:03:01 +02:00
Andreas Stephanides
d4964f40fb AutoCommit Die Sep 1 14:03:03 CEST 2015 2015-09-01 14:03:03 +02:00
Andreas Stephanides
5134dc2e5f AutoCommit Die Sep 1 13:03:03 CEST 2015 2015-09-01 13:03:03 +02:00
Andreas Stephanides
c37040a74b AutoCommit Die Sep 1 12:03:25 CEST 2015 2015-09-01 12:03:25 +02:00
Andreas Stephanides
c1a7d9b7c2 AutoCommit Die Sep 1 10:03:01 CEST 2015 2015-09-01 10:03:01 +02:00
Andreas Stephanides
576b763d82 AutoCommit Die Sep 1 09:03:01 CEST 2015 2015-09-01 09:03:01 +02:00
Andreas Stephanides
c02ee30013 AutoCommit Die Sep 1 01:03:02 CEST 2015 2015-09-01 01:03:02 +02:00
Andreas Stephanides
1cea790324 AutoCommit Die Sep 1 00:03:02 CEST 2015 2015-09-01 00:03:02 +02:00
Andreas Stephanides
3bcd8389d4 AutoCommit Mon Aug 31 23:03:01 CEST 2015 2015-08-31 23:03:01 +02:00
Andreas Stephanides
221bd95cbf AutoCommit Mon Aug 31 22:03:01 CEST 2015 2015-08-31 22:03:01 +02:00
Andreas Stephanides
8c1e430bb2 AutoCommit Mon Aug 31 18:03:21 CEST 2015 2015-08-31 18:03:21 +02:00
Andreas Stephanides
589597509a AutoCommit Mon Aug 31 17:03:03 CEST 2015 2015-08-31 17:03:03 +02:00
Andreas Stephanides
93dbdedf53 AutoCommit Mon Aug 31 16:03:01 CEST 2015 2015-08-31 16:03:01 +02:00
Andreas Stephanides
1bc9d65a44 AutoCommit Mon Aug 31 15:03:01 CEST 2015 2015-08-31 15:03:01 +02:00
Andreas Stephanides
f61231accc AutoCommit Mon Aug 31 14:03:19 CEST 2015 2015-08-31 14:03:19 +02:00
Andreas Stephanides
cec9939144 AutoCommit Mon Aug 31 13:03:02 CEST 2015 2015-08-31 13:03:02 +02:00
Andreas Stephanides
6b324ded44 AutoCommit Son Aug 30 20:03:01 CEST 2015 2015-08-30 20:03:01 +02:00
Andreas Stephanides
18a6821029 AutoCommit Son Aug 30 19:03:01 CEST 2015 2015-08-30 19:03:01 +02:00
Andreas Stephanides
2d9944dfc3 AutoCommit Son Aug 30 18:03:01 CEST 2015 2015-08-30 18:03:01 +02:00
Andreas Stephanides
9dd9c3cc48 AutoCommit Son Aug 30 17:03:01 CEST 2015 2015-08-30 17:03:01 +02:00
Andreas Stephanides
8bfd96d0af AutoCommit Son Aug 30 16:03:01 CEST 2015 2015-08-30 16:03:01 +02:00
Andreas Stephanides
4a671f5cff AutoCommit Son Aug 30 15:03:01 CEST 2015 2015-08-30 15:03:01 +02:00
Andreas Stephanides
5bf63421a6 AutoCommit Son Aug 30 14:03:01 CEST 2015 2015-08-30 14:03:01 +02:00
Andreas Stephanides
723d7be980 Merge branch 'master' of https://github.com/fetsite/fetsite into tests 2015-08-30 13:04:23 +02:00
Andreas Stephanides
e098c0cd36 AutoCommit Son Aug 30 10:03:05 CEST 2015 2015-08-30 10:03:05 +02:00
Andreas Stephanides
bffb978fc7 AutoCommit Don Aug 27 17:03:04 CEST 2015 2015-08-27 17:03:04 +02:00
Andreas Stephanides
8e1e19d3ab AutoCommit Don Aug 27 16:03:04 CEST 2015 2015-08-27 16:03:04 +02:00
Andreas Stephanides
7c2f1f9753 AutoCommit Don Aug 27 15:03:02 CEST 2015 2015-08-27 15:03:02 +02:00
Andreas Stephanides
370c439c29 AutoCommit Don Aug 27 14:03:04 CEST 2015 2015-08-27 14:03:04 +02:00
Andreas Stephanides
1047851b47 AutoCommit Mit Aug 26 12:03:05 CEST 2015 2015-08-26 12:03:05 +02:00
Andreas Stephanides
94cad06e31 AutoCommit Mit Aug 26 11:03:04 CEST 2015 2015-08-26 11:03:04 +02:00
8ed5b7287e small fixes 2015-08-26 09:40:53 +02:00
Andreas Stephanides
934e004416 AutoCommit Sam Aug 22 18:17:03 CEST 2015 2015-08-22 18:17:03 +02:00
Andreas Stephanides
af39f21595 AutoCommit Sam Aug 22 18:03:02 CEST 2015 2015-08-22 18:03:02 +02:00
Andreas Stephanides
82b71f045f Merge branch 'survey' 2015-08-22 17:55:32 +02:00
Andreas Stephanides
37c2d893b6 AutoCommit Sam Aug 22 00:03:01 CEST 2015 2015-08-22 00:03:01 +02:00
Andreas Stephanides
09e3f2568c AutoCommit Fre Aug 21 23:03:02 CEST 2015 2015-08-21 23:03:02 +02:00
Andreas Stephanides
c8e8a0d229 AutoCommit Fre Aug 21 22:03:01 CEST 2015 2015-08-21 22:03:01 +02:00
Andreas Stephanides
bfe65e14e3 AutoCommit Fre Aug 21 21:03:01 CEST 2015 2015-08-21 21:03:01 +02:00
Andreas Stephanides
c396c7410e AutoCommit Fre Aug 21 20:03:03 CEST 2015 2015-08-21 20:03:03 +02:00
Andreas Stephanides
6102587cab AutoCommit Don Aug 20 11:03:23 CEST 2015 2015-08-20 11:03:23 +02:00
Andreas Stephanides
8b0e655a88 AutoCommit Mit Aug 19 23:03:02 CEST 2015 2015-08-19 23:03:02 +02:00
Andreas Stephanides
3c493ae9d4 AutoCommit Mit Aug 19 22:03:03 CEST 2015 2015-08-19 22:03:03 +02:00
Andreas Stephanides
38f5591ee2 AutoCommit Mit Aug 19 21:03:04 CEST 2015 2015-08-19 21:03:04 +02:00
Andreas Stephanides
06599b5ce7 AutoCommit Mit Aug 19 20:03:01 CEST 2015 2015-08-19 20:03:01 +02:00
Andreas Stephanides
578dcdfbd6 AutoCommit Mit Aug 19 19:03:04 CEST 2015 2015-08-19 19:03:04 +02:00
Andreas Stephanides
1ce070aab3 AutoCommit Mit Aug 19 18:03:01 CEST 2015 2015-08-19 18:03:01 +02:00
Andreas Stephanides
11d95e71d2 AutoCommit Die Aug 11 00:03:03 CEST 2015 2015-08-11 00:03:03 +02:00
Andreas Stephanides
0ad67e860c AutoCommit Mon Aug 10 22:03:02 CEST 2015 2015-08-10 22:03:02 +02:00
Andreas Stephanides
cc45de5791 AutoCommit Mon Aug 10 21:03:04 CEST 2015 2015-08-10 21:03:04 +02:00
Andreas Stephanides
2ef0dc7fb8 AutoCommit Mon Aug 10 20:03:02 CEST 2015 2015-08-10 20:03:02 +02:00
Andreas Stephanides
d628d6cee8 AutoCommit Mon Aug 10 18:03:03 CEST 2015 2015-08-10 18:03:03 +02:00
Andreas Stephanides
07b0755004 AutoCommit Mon Aug 10 17:03:04 CEST 2015 2015-08-10 17:03:04 +02:00
Andreas Stephanides
db53f4843d AutoCommit Mon Aug 10 16:03:01 CEST 2015 2015-08-10 16:03:01 +02:00
Andreas Stephanides
7c180080ef AutoCommit Mon Aug 10 14:03:05 CEST 2015 2015-08-10 14:03:05 +02:00
Andreas Stephanides
3835c0e773 AutoCommit Mon Aug 10 13:03:04 CEST 2015 2015-08-10 13:03:04 +02:00
Andreas Stephanides
58fd356f00 Merge branch 'master' of fet.at:~/fetsite 2015-08-07 17:23:16 +02:00
Andreas Stephanides
cb73bbfa43 lösche unnötiges 2015-08-07 17:21:49 +02:00
Andreas Stephanides
3f57e83d49 AutoCommit Fre Aug 7 11:03:01 CEST 2015 2015-08-07 11:03:01 +02:00
Andreas Stephanides
7419e72eed AutoCommit Fre Aug 7 10:03:04 CEST 2015 2015-08-07 10:03:04 +02:00
Andreas Stephanides
84b88a141c AutoCommit Fre Aug 7 09:03:01 CEST 2015 2015-08-07 09:03:01 +02:00
Andreas Stephanides
13283e0e65 AutoCommit Fre Aug 7 01:03:02 CEST 2015 2015-08-07 01:03:02 +02:00
Andreas Stephanides
c6222cdc23 AutoCommit Fre Aug 7 00:03:02 CEST 2015 2015-08-07 00:03:02 +02:00
Andreas Stephanides
73f364e620 AutoCommit Don Aug 6 23:03:01 CEST 2015 2015-08-06 23:03:01 +02:00
Andreas Stephanides
bdb0025a8c AutoCommit Don Aug 6 22:03:02 CEST 2015 2015-08-06 22:03:02 +02:00
Andreas Stephanides
0c0e7ba051 AutoCommit Don Aug 6 21:03:01 CEST 2015 2015-08-06 21:03:01 +02:00
Andreas Stephanides
390075aa7f AutoCommit Don Aug 6 20:03:03 CEST 2015 2015-08-06 20:03:03 +02:00
Andreas Stephanides
7083da8125 AutoCommit Mit Aug 5 11:03:06 CEST 2015 2015-08-05 11:03:06 +02:00
Andreas Stephanides
3a4888c9a4 AutoCommit Mit Aug 5 09:03:03 CEST 2015 2015-08-05 09:03:03 +02:00
Andreas Stephanides
9b1c35f499 AutoCommit Die Aug 4 22:03:01 CEST 2015 2015-08-04 22:03:01 +02:00
Andreas Stephanides
aa06d2195e AutoCommit Die Aug 4 17:03:24 CEST 2015 2015-08-04 17:03:24 +02:00
Andreas Stephanides
d88edd708d AutoCommit Mon Aug 3 09:03:01 CEST 2015 2015-08-03 09:03:01 +02:00
Andreas Stephanides
e7a328737c AutoCommit Mon Aug 3 08:03:01 CEST 2015 2015-08-03 08:03:01 +02:00
Andreas Stephanides
1a12a3d394 AutoCommit Son Aug 2 17:03:02 CEST 2015 2015-08-02 17:03:03 +02:00
Andreas Stephanides
bbb924fcfb AutoCommit Son Aug 2 16:03:01 CEST 2015 2015-08-02 16:03:01 +02:00
Andreas Stephanides
270f42bba1 AutoCommit Son Aug 2 15:03:01 CEST 2015 2015-08-02 15:03:01 +02:00
Andreas Stephanides
15b70ad8c6 AutoCommit Son Aug 2 10:03:02 CEST 2015 2015-08-02 10:03:02 +02:00
Andreas Stephanides
f71171f509 css & destroy 2015-08-01 23:38:06 +02:00
Andreas Stephanides
38183bdc00 fixes fuer choices 2015-08-01 23:37:41 +02:00
Andreas Stephanides
9933718750 AutoCommit Sam Aug 1 23:03:02 CEST 2015 2015-08-01 23:03:02 +02:00
Andreas Stephanides
2b01a87d15 AutoCommit Sam Aug 1 22:03:01 CEST 2015 2015-08-01 22:03:01 +02:00
Andreas Stephanides
2a7ae7c2bf AutoCommit Sam Aug 1 21:03:02 CEST 2015 2015-08-01 21:03:02 +02:00
Andreas Stephanides
aa6f03574e AutoCommit Sam Aug 1 20:03:01 CEST 2015 2015-08-01 20:03:01 +02:00
Andreas Stephanides
dae218c4ff AutoCommit Sam Aug 1 16:03:03 CEST 2015 2015-08-01 16:03:03 +02:00
Andreas Stephanides
ab0559a45c AutoCommit Sam Aug 1 15:03:01 CEST 2015 2015-08-01 15:03:01 +02:00
Andreas Stephanides
cc764f68af AutoCommit Sam Aug 1 14:03:01 CEST 2015 2015-08-01 14:03:01 +02:00
Andreas Stephanides
fb99d55734 AutoCommit Sam Aug 1 13:03:01 CEST 2015 2015-08-01 13:03:01 +02:00
Andreas Stephanides
234880d90e AutoCommit Sam Aug 1 12:03:01 CEST 2015 2015-08-01 12:03:01 +02:00
Andreas Stephanides
a079a88dbc AutoCommit Sam Aug 1 11:03:01 CEST 2015 2015-08-01 11:03:01 +02:00
Andreas Stephanides
d5571b38fa AutoCommit Sam Aug 1 01:03:01 CEST 2015 2015-08-01 01:03:01 +02:00
Andreas Stephanides
ca6deabb34 AutoCommit Sam Aug 1 00:03:01 CEST 2015 2015-08-01 00:03:01 +02:00
Andreas Stephanides
786cde0d08 AutoCommit Fre Jul 31 23:03:01 CEST 2015 2015-07-31 23:03:01 +02:00
Andreas Stephanides
4bb81ef9d1 AutoCommit Fre Jul 31 22:03:01 CEST 2015 2015-07-31 22:03:01 +02:00
Andreas Stephanides
ca903cf84b AutoCommit Fre Jul 31 21:03:04 CEST 2015 2015-07-31 21:03:04 +02:00
Andreas Stephanides
cd5f415ca1 update für questions 2015-07-31 18:32:36 +02:00
Andreas Stephanides
8a867b72a3 AutoCommit Fre Jul 31 18:03:05 CEST 2015 2015-07-31 18:03:05 +02:00
Andreas Stephanides
02b3a651ca AutoCommit Fre Jul 31 17:03:12 CEST 2015 2015-07-31 17:03:12 +02:00
Andreas Stephanides
e61142382e AutoCommit Fre Jul 31 12:03:05 CEST 2015 2015-07-31 12:03:05 +02:00
Andreas Stephanides
8a4a168fe4 AutoCommit Fre Jul 31 11:03:07 CEST 2015 2015-07-31 11:03:07 +02:00
Andreas Stephanides
b450757e47 AutoCommit Fre Jul 31 10:03:05 CEST 2015 2015-07-31 10:03:05 +02:00
Andreas Stephanides
a9e413ada0 change gitignore 2015-07-31 09:01:55 +02:00
Andreas Stephanides
2193fcc49e AutoCommit Don Jul 30 14:03:07 CEST 2015 2015-07-30 14:03:07 +02:00
Andreas Stephanides
1e72b8e6ce AutoCommit Don Jul 30 02:03:02 CEST 2015 2015-07-30 02:03:02 +02:00
Andreas Stephanides
f161d15174 AutoCommit Don Jul 30 01:03:05 CEST 2015 2015-07-30 01:03:05 +02:00
Andreas Stephanides
97df081b33 AutoCommit Don Jul 30 00:03:02 CEST 2015 2015-07-30 00:03:02 +02:00
Andreas Stephanides
068c2a2e55 AutoCommit Fre Jul 17 14:03:07 CEST 2015 2015-07-17 14:03:07 +02:00
Andreas Stephanides
0e9525af81 AutoCommit Fre Jul 17 13:03:05 CEST 2015 2015-07-17 13:03:05 +02:00
Andreas Stephanides
353bbc145f AutoCommit Fre Jul 17 12:03:01 CEST 2015 2015-07-17 12:03:01 +02:00
Andreas Stephanides
d5cc41bfe6 AutoCommit Fre Jul 17 11:03:05 CEST 2015 2015-07-17 11:03:05 +02:00
Andreas Stephanides
9def2be84e AutoCommit Don Jul 16 21:03:06 CEST 2015 2015-07-16 21:03:06 +02:00
Andreas Stephanides
5b70b67bfe AutoCommit Mit Jul 15 12:03:05 CEST 2015 2015-07-15 12:03:05 +02:00
Andreas Stephanides
1d4bc2baab moderator lva 2015-07-14 15:04:28 +02:00
909cefb85b Merge branch 'master' of https://github.com/fetsite/fetsite 2015-07-14 14:38:36 +02:00
Andreas Stephanides
a7b6576fbd fix verwalten lva 2015-07-14 14:30:17 +02:00
07549c6f0e Merge branch 'master' of https://github.com/fetsite/fetsite 2015-07-13 11:52:23 +02:00
Andreas Stephanides
0f221ad4f4 AutoCommit Mon Jul 13 11:03:01 CEST 2015 2015-07-13 11:03:01 +02:00
c356c3c128 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-07-12 09:44:32 +02:00
Andreas Stephanides
880ca238ad fix locale 2 2015-07-12 09:41:02 +02:00
c7902423b5 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-07-12 07:15:57 +02:00
Andreas Stephanides
f16c9a89d5 Store loclae to session 2015-07-12 07:14:17 +02:00
dd94a1b47b Merge branch 'master' of https://github.com/fetsite/fetsite 2015-07-11 20:07:28 +02:00
Andreas Stephanides
5b09d51365 AutoCommit Fre Jul 10 12:03:14 CEST 2015 2015-07-10 12:03:14 +02:00
Andreas Stephanides
5d9571b03a AutoCommit Fre Jul 10 11:03:02 CEST 2015 2015-07-10 11:03:02 +02:00
Andreas Stephanides
b399a961a3 AutoCommit Don Jul 9 17:03:04 CEST 2015 2015-07-09 17:03:04 +02:00
Andreas Stephanides
fe32c2102b AutoCommit Don Jul 9 16:03:02 CEST 2015 2015-07-09 16:03:02 +02:00
Andreas Stephanides
783ba0d030 AutoCommit Don Jul 2 13:03:01 CEST 2015 2015-07-02 13:03:01 +02:00
Andreas Stephanides
7e5e8ea688 AutoCommit Son Jun 28 18:03:01 CEST 2015 2015-06-28 18:03:01 +02:00
48f8c975cd Merge branch 'master' of https://github.com/fetsite/fetsite 2015-06-26 16:21:38 +02:00
Andreas Stephanides
f5cc774c92 AutoCommit Fre Jun 26 16:03:06 CEST 2015 2015-06-26 16:03:06 +02:00
Andreas Stephanides
2ca5f49436 AutoCommit Fre Jun 26 15:03:04 CEST 2015 2015-06-26 15:03:04 +02:00
Andreas Stephanides
6aeccfb1d6 AutoCommit Fre Jun 26 14:03:06 CEST 2015 2015-06-26 14:03:06 +02:00
Andreas Stephanides
9c073a91c3 AutoCommit Fre Jun 26 13:03:01 CEST 2015 2015-06-26 13:03:01 +02:00
Andreas Stephanides
9fc0efd467 AutoCommit Fre Jun 26 12:03:01 CEST 2015 2015-06-26 12:03:01 +02:00
6b0314af7a merge cachebsp 2015-06-26 11:08:44 +02:00
f718567722 fix cachebsp 2015-06-26 11:07:08 +02:00
Andreas Stephanides
133a882cf8 AutoCommit Don Jun 25 17:04:03 CEST 2015 2015-06-25 17:04:04 +02:00
Andreas Stephanides
a5c950ad46 Merge branch 'master' of github.com:fetsite/fetsite 2015-06-25 16:35:14 +02:00
74e39f45d6 smallfix 2015-06-25 16:33:51 +02:00
Andreas Stephanides
88877ccab0 AutoCommit Don Jun 25 16:03:19 CEST 2015 2015-06-25 16:03:20 +02:00
Andreas Stephanides
b9d436789c beispiel ability cache fix 2015-06-24 11:17:15 +02:00
Andreas Stephanides
d93fd7e6b0 Merge branch 'master' of github.com:fetsite/fetsite 2015-06-24 11:16:43 +02:00
37fc308e46 smallfixes, performance 2015-06-24 11:15:58 +02:00
Andreas Stephanides
fe0980fb6c AutoCommit Mit Jun 24 11:03:03 CEST 2015 2015-06-24 11:03:03 +02:00
1d8b85afa9 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-06-21 16:01:30 +02:00
308b542caa Hot Fixes 2015-06-21 16:01:01 +02:00
Andreas Stephanides
ef4bfa4012 AutoCommit Son Jun 21 01:03:01 CEST 2015 2015-06-21 01:03:01 +02:00
Andreas Stephanides
c62b3b34dd AutoCommit Son Jun 21 00:03:01 CEST 2015 2015-06-21 00:03:01 +02:00
Andreas Stephanides
916f2246f2 AutoCommit Sam Jun 20 20:03:01 CEST 2015 2015-06-20 20:03:01 +02:00
Andreas Stephanides
08c901c04f AutoCommit Sam Jun 20 19:03:05 CEST 2015 2015-06-20 19:03:05 +02:00
Andreas Stephanides
bd0f24603e AutoCommit Sam Jun 20 18:03:01 CEST 2015 2015-06-20 18:03:01 +02:00
Andreas Stephanides
99e32424c7 AutoCommit Sam Jun 20 15:03:01 CEST 2015 2015-06-20 15:03:01 +02:00
Andreas Stephanides
aadf180670 AutoCommit Sam Jun 20 14:03:01 CEST 2015 2015-06-20 14:03:01 +02:00
Andreas Stephanides
67404cc605 AutoCommit Sam Jun 20 13:03:01 CEST 2015 2015-06-20 13:03:01 +02:00
Andreas Stephanides
6e05c3d589 AutoCommit Sam Jun 20 12:03:03 CEST 2015 2015-06-20 12:03:03 +02:00
Andreas Stephanides
a3346e4c7a AutoCommit Sam Jun 20 11:03:04 CEST 2015 2015-06-20 11:03:04 +02:00
Andreas Stephanides
815c81add0 AutoCommit Mit Jun 17 14:03:07 CEST 2015 2015-06-17 14:03:07 +02:00
Andreas Stephanides
7ce34e9d29 AutoCommit Mit Jun 17 13:03:07 CEST 2015 2015-06-17 13:03:07 +02:00
Andreas Stephanides
efe17c681f AutoCommit Die Jun 16 16:03:07 CEST 2015 2015-06-16 16:03:07 +02:00
Andreas Stephanides
3c5ca56b13 AutoCommit Mon Jun 15 18:03:04 CEST 2015 2015-06-15 18:03:04 +02:00
Andreas Stephanides
3618db1376 AutoCommit Mon Jun 15 17:03:08 CEST 2015 2015-06-15 17:03:08 +02:00
Andreas Stephanides
67c3fc8089 intend 2015-06-15 15:39:09 +02:00
Andreas Stephanides
e3624263f5 crawler type 6 2015-06-15 15:39:03 +02:00
Andreas Stephanides
01521104ce crawler link 2015-06-15 15:21:49 +02:00
Andreas Stephanides
72be6c2f10 ability search document 2015-06-15 15:21:22 +02:00
Andreas Stephanides
b0f1a2823f calendar full url 2015-06-11 15:51:09 +02:00
Andreas Stephanides
12a82f519c dependent and calendar 2015-06-11 15:47:26 +02:00
Andreas Stephanides
2f1a63931c fix document 2015-06-11 11:56:11 +02:00
Andreas Stephanides
015ef4a64d search document html redirect 2015-06-11 11:54:40 +02:00
Andreas Stephanides
090e2ad72a document search 2015-06-11 11:36:36 +02:00
Andreas Stephanides
34659014df AutoCommit Don Jun 11 11:03:02 CEST 2015 2015-06-11 11:03:02 +02:00
Andreas Stephanides
9aaacbbb63 AutoCommit Don Jun 11 09:03:21 CEST 2015 2015-06-11 09:03:21 +02:00
Andreas Stephanides
f62ed335ec key, ability fixes 2015-06-10 17:11:21 +02:00
Andreas Stephanides
c57095bbca AutoCommit Mit Jun 10 17:03:04 CEST 2015 2015-06-10 17:03:04 +02:00
Andreas Stephanides
d10401c1c4 AutoCommit Mit Jun 10 11:03:37 CEST 2015 2015-06-10 11:03:37 +02:00
Andreas Stephanides
18a7e33012 AutoCommit Die Jun 9 19:03:02 CEST 2015 2015-06-09 19:03:02 +02:00
Andreas Stephanides
852a893a32 AutoCommit Die Jun 9 18:03:02 CEST 2015 2015-06-09 18:03:02 +02:00
Andreas Stephanides
e70cc8405f AutoCommit Die Jun 9 15:03:01 CEST 2015 2015-06-09 15:03:01 +02:00
Andreas Stephanides
d146cf09a7 AutoCommit Die Jun 9 12:03:27 CEST 2015 2015-06-09 12:03:27 +02:00
Andreas Stephanides
dd9ae1d20b AutoCommit Die Jun 9 10:03:05 CEST 2015 2015-06-09 10:03:05 +02:00
Andreas Stephanides
cc2ab28d16 AutoCommit Mon Jun 8 22:03:14 CEST 2015 2015-06-08 22:03:14 +02:00
Andreas Stephanides
18021fb502 AutoCommit Mon Jun 8 18:03:05 CEST 2015 2015-06-08 18:03:05 +02:00
Andreas Stephanides
45b5798e7d AutoCommit Mon Jun 8 17:03:02 CEST 2015 2015-06-08 17:03:02 +02:00
Andreas Stephanides
dc318e0efb AutoCommit Mon Jun 8 12:03:12 CEST 2015 2015-06-08 12:03:12 +02:00
Andreas Stephanides
c36008729b AutoCommit Don Jun 4 13:03:01 CEST 2015 2015-06-04 13:03:01 +02:00
Andreas Stephanides
6c8e30b701 gitignore 2015-06-04 12:47:52 +02:00
Andreas Stephanides
d3e97ff422 preferred theme 2015-06-03 08:28:09 +02:00
Andreas Stephanides
6c2238e740 blue2 update 2015-06-01 17:21:47 +02:00
Andreas Stephanides
5a7eb23a1f studium form update 2015-05-28 20:17:36 +02:00
Andreas Stephanides
c7e6c5022b Merge branch 'master' of github.com:fetsite/fetsite
Conflicts:
	app/views/neuigkeiten/_form.html.erb
2015-05-28 20:16:33 +02:00
Andreas Stephanides
7c668809dc neuigkeit no fallback for editor 2015-05-24 13:43:37 +02:00
eee8248c0f small fixes 2015-05-24 13:42:26 +02:00
Andreas Stephanides
020e46c2cc long etherpad session 2015-05-13 16:43:36 +02:00
Andreas Stephanides
c86b175250 flag_important 2015-05-13 15:14:02 +02:00
Andreas Stephanides
7b6d2eb57e Merge branch 'master' of github.com:fetsite/fetsite 2015-05-13 15:09:34 +02:00
fa61337459 rake task for crawl 2015-05-13 11:27:02 +02:00
8de4946109 fix lva & crawlobject 2015-05-13 11:26:43 +02:00
79dd7c4f68 unicorn gem 2015-05-13 11:26:04 +02:00
Andreas Stephanides
8eae985a97 add flag important 2015-05-13 11:22:51 +02:00
Andreas Stephanides
c7f87e5aa6 treeview update 2015-05-13 11:22:24 +02:00
Andreas Stephanides
e425a015ba document toolbar 2015-05-13 11:22:10 +02:00
Andreas Stephanides
42b6503707 neuigkeit calentrynil? fix 2015-05-13 11:21:54 +02:00
Andreas Stephanides
bac4c5f924 document toolbar sticky 2015-05-13 11:21:42 +02:00
Andreas Stephanides
03c81104b2 sort meetings 2015-05-13 11:21:16 +02:00
Andreas Stephanides
759d3f8916 attachments 2015-05-13 11:21:08 +02:00
Andreas Stephanides
c7aec6bb9b abiltiy themengruppe 2015-05-13 11:20:54 +02:00
Andreas Stephanides
53977df4c0 ability on thema 2015-05-13 11:20:03 +02:00
Andreas Stephanides
0f11ccfcfe themengruppe check if nil 2015-05-07 20:02:42 +02:00
Andreas Stephanides
69fa1ed634 studien load 2015-05-07 11:15:47 +02:00
Andreas Stephanides
7a3255ef6f studien 2015-05-06 15:23:14 +02:00
Andreas Stephanides
4b71964e26 studien visible 2015-05-06 15:10:16 +02:00
Andreas Stephanides
0656e849bd toc raw 2015-05-05 11:04:40 +02:00
Andreas Stephanides
649664c318 timezone fix 2015-05-05 10:39:40 +02:00
Andreas Stephanides
24ed5d29e3 toc added 2015-05-05 10:39:21 +02:00
Andreas Stephanides
e16762fdd0 crawler update 2015-05-04 13:41:07 +02:00
Andreas Stephanides
a2491ee84d inline tinymce document 2015-05-04 13:40:27 +02:00
Andreas Stephanides
9a9cee5768 view neuigekit meeting 2015-04-29 16:07:54 +02:00
Andreas Stephanides
8a32bff399 sanitize document 2015-04-29 16:07:39 +02:00
Andreas Stephanides
19959b083e time zone 2015-04-29 15:25:10 +02:00
Andreas Stephanides
2d2931cdb8 icon form 2015-04-29 15:24:59 +02:00
Andreas Stephanides
e5df9d3190 use Time.now instead of date 2015-04-28 20:14:20 +02:00
Andreas Stephanides
caaea67994 style update 2015-04-27 17:23:25 +02:00
Andreas Stephanides
160005b79f ignore bin 2015-04-26 18:09:18 +02:00
Andreas Stephanides
4526681198 crawlobject config 2015-04-26 18:09:11 +02:00
Andreas Stephanides
d56d77daef create_pdf 2015-04-26 18:08:46 +02:00
Andreas Stephanides
408a32ae5f ignore 2015-04-22 18:47:02 +02:00
Andreas Stephanides
9e1100f786 rubrik show cache key 2015-04-22 18:45:43 +02:00
Andreas Stephanides
7753c80120 crawl routes 2015-04-22 18:43:41 +02:00
Andreas Stephanides
224f2c6f83 tiss link 2015-04-22 18:43:32 +02:00
Andreas Stephanides
036f90e6e5 crawler 2015-04-22 18:43:24 +02:00
Andreas Stephanides
de215c16eb ability for crawlobject 2015-04-22 18:42:18 +02:00
Andreas Stephanides
c88a337de7 fix app helper 2015-04-22 18:41:49 +02:00
Andreas Stephanides
7321a63b37 Merge branch 'master' of github.com:fetsite/fetsite into crawler 2015-04-21 18:56:22 +02:00
c6574cee00 fetprofile validated date 2015-04-21 17:17:01 +02:00
f0bb767ba4 fix cache key 2015-04-20 20:55:17 +02:00
Andreas Stephanides
d757a31e75 Merge branch 'master' into crawler 2015-04-17 11:07:30 +02:00
Andreas Stephanides
682d5687fc remove h from english time 2015-04-17 10:50:05 +02:00
Andreas Stephanides
6bb7cb917c fix meeting translation 2015-04-14 18:26:03 +02:00
Andreas Stephanides
d8aa87d25a translation date 2015-04-14 18:19:37 +02:00
Andreas Stephanides
e56ff2597b on->am 2015-04-14 18:16:30 +02:00
Andreas Stephanides
bbc8dc27cc date->datum.on 2015-04-14 18:15:18 +02:00
Andreas Stephanides
3a747cb04f date on 2015-04-14 18:08:27 +02:00
Andreas Stephanides
6cc2dad611 date.en 2015-04-14 18:05:39 +02:00
Andreas Stephanides
659653606a move translation for date.on 2015-04-14 18:03:21 +02:00
Andreas Stephanides
34852650d9 Merge branch 'master' of github.com:fetsite/fetsite 2015-04-14 17:58:28 +02:00
Andreas Stephanides
b02dcad387 add a treeview 2015-04-14 17:56:35 +02:00
404b6a858b Merge branch 'master' of https://github.com/fetsite/fetsite 2015-04-10 09:35:28 +02:00
Andreas Stephanides
fdecf48e43 caching 2015-04-10 09:34:59 +02:00
4ac77d6c80 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-04-10 08:48:56 +02:00
Andreas Stephanides
4e8938fdd6 tabs cache #259 fix 2015-04-10 00:15:40 +02:00
61593d9ff4 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-04-09 16:46:38 +02:00
Andreas Stephanides
a729c0ace6 remove empty div 2015-04-09 16:46:03 +02:00
Andreas Stephanides
4f8dd29240 translation meeting 2015-04-09 16:45:54 +02:00
Andreas Stephanides
bd9857c62a tweak neuigkeit sort 2015-04-09 16:45:34 +02:00
Andreas Stephanides
387312f631 #247 2015-04-09 09:14:53 +02:00
Andreas Stephanides
2c6406f268 cache rubrik tabs 2015-04-09 09:14:27 +02:00
Andreas Stephanides
ca4e2ef7cd faq fragezeichen fix 2015-04-09 09:14:01 +02:00
793f8a6a84 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-04-07 23:34:55 +02:00
3a1736c3c5 lva show fix 2015-04-07 23:34:14 +02:00
Andreas Stephanides
88b81be49d new view for beispiel 2015-04-07 23:23:37 +02:00
Andreas Stephanides
5cd9ca9750 meeting new view 2015-04-07 23:23:28 +02:00
Andreas Stephanides
080150f11b attachments has_many for document, neuigkeit, thema 2015-04-07 23:23:14 +02:00
Andreas Stephanides
04b6bcac8a attachments for studium 2015-04-07 23:22:31 +02:00
Andreas Stephanides
6c3c98c919 attachment titlepic for neuigkeit 2015-04-07 23:22:08 +02:00
Andreas Stephanides
0df5e72e15 attachment new version 2015-04-07 23:21:33 +02:00
Andreas Stephanides
b04b23e647 foto exif 2015-04-07 23:19:27 +02:00
Andreas Stephanides
ee137959c4 addcrawlobjects 2015-04-01 00:01:41 +02:00
Andreas Stephanides
bd7aac9bb7 lvs fix 2015-03-30 16:53:00 +02:00
4cd5bffff2 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-03-30 11:24:03 +02:00
32f9e010f8 compact fix 2015-03-30 11:23:49 +02:00
Andreas Stephanides
69c9e346d7 Merge branch 'master' of github.com:fetsite/fetsite 2015-03-30 11:20:54 +02:00
Andreas Stephanides
fe65602b7e fix calentries empty? 2015-03-30 11:19:50 +02:00
Andreas Stephanides
c5fced7176 fix illegal href in div 2015-03-30 11:19:39 +02:00
Andreas Stephanides
5dd021d385 #245 fixed - direkt veröffentlichung von Ankündigungen 2015-03-30 11:19:19 +02:00
7000870853 Merge branch 'master' of https://github.com/fetsite/fetsite
Conflicts:
	app/views/lvas/show.html.erb
2015-03-20 17:29:37 +01:00
f1ba8f7719 fix 404 message for mobile 2015-03-20 17:27:25 +01:00
3d11c09c26 fix lva view 2015-03-20 17:27:12 +01:00
Andreas Stephanides
044d7fc555 lva markup 2015-03-20 17:25:21 +01:00
Andreas Stephanides
c5dd8e9637 higher priority for articles 2015-03-20 17:25:13 +01:00
Andreas Stephanides
e5606ad966 cache menu 2015-03-20 17:24:57 +01:00
Andreas Stephanides
ac9ec1be45 hreflang tag 2015-03-20 17:24:48 +01:00
Andreas Stephanides
5a57062726 remove markup from neuigkeit snippet 2015-03-20 17:24:23 +01:00
Andreas Stephanides
22e782cbee url meta tag 2015-03-16 07:43:04 +01:00
Andreas Stephanides
d58cdb07fb cache key neuigkeitenjs 2015-03-16 07:42:58 +01:00
Andreas Stephanides
4833c8d679 beispiel cache key 2015-03-16 07:42:07 +01:00
Andreas Stephanides
e3faacf586 cache key fix locale calendar 2015-03-15 21:17:46 +01:00
Andreas Stephanides
6a785b55df cache key fix 2015-03-15 21:15:41 +01:00
Andreas Stephanides
e4f54b1ca8 neuigkeit cache 2015-03-15 20:57:26 +01:00
Andreas Stephanides
351174bd17 cahce locale 2015-03-15 20:53:51 +01:00
Andreas Stephanides
99a9ad6c07 cache key fix2 2015-03-15 20:51:20 +01:00
Andreas Stephanides
58f7fb8b27 calentries fix2 2015-03-15 20:17:28 +01:00
Andreas Stephanides
0c643d4347 fix calender cache key 2015-03-15 20:15:36 +01:00
Andreas Stephanides
94c488ce59 FIX calentries cache 2015-03-15 20:10:29 +01:00
Andreas Stephanides
b5884a4ae5 calentries cache key 2015-03-15 20:01:44 +01:00
Andreas Stephanides
012f46d17f calendar cache 2015-03-15 19:52:40 +01:00
Andreas Stephanides
2e9910b4ea style box 2015-03-15 19:50:52 +01:00
Andreas Stephanides
1981efafac themen print + gremien view 2015-03-15 19:50:42 +01:00
Andreas Stephanides
001c2e3070 startpage new 2015-03-15 19:50:17 +01:00
Andreas Stephanides
76c0565a7c documents show toolbar 2015-03-15 19:49:18 +01:00
Andreas Stephanides
27d478281e document styling print version 2015-03-15 13:10:37 +01:00
Andreas Stephanides
34c0374877 meeting style 2015-03-15 13:09:05 +01:00
Andreas Stephanides
3cc9de7d29 Merge branch 'master' of github.com:fetsite/fetsite
Conflicts:
	app/controllers/application_controller.rb
2015-03-09 17:40:52 +01:00
Andreas Stephanides
d5e0d20884 app controler url parameter 2015-03-09 17:39:33 +01:00
63e3d68053 fixes 2015-03-09 17:37:02 +01:00
Andreas Stephanides
c9f58dea34 fix published scope 2015-03-09 00:42:18 +01:00
Andreas Stephanides
8046b1ac7f only published news in sitemap 2015-03-09 00:36:13 +01:00
Andreas Stephanides
1f790c3f9b sitemap news name 2015-03-09 00:04:38 +01:00
Andreas Stephanides
6e9b2b8d7b fix update cache 2015-03-08 22:57:40 +01:00
Andreas Stephanides
b76239c850 neuigkeit relevant date 2015-03-08 22:33:50 +01:00
Andreas Stephanides
badb43c7e3 rubriken tabs 2015-03-08 22:13:30 +01:00
Andreas Stephanides
f2131f7725 lva fix 2015-03-08 22:13:16 +01:00
Andreas Stephanides
9b46f868da thema doku 2015-03-08 22:13:05 +01:00
Andreas Stephanides
d02b3a7e69 calentry neuigkeit order 2015-03-08 22:12:55 +01:00
Andreas Stephanides
fc19206edd gremium tags 2015-03-08 22:11:56 +01:00
Andreas Stephanides
8bf5583e00 caching fuer neuigkeiten and bsp 2015-03-06 16:41:08 +01:00
Andreas Stephanides
bd3c3a25e1 document versions 2015-03-06 16:40:47 +01:00
Andreas Stephanides
06dd5ff5bb 2003 theme inaktive 2015-03-06 16:40:17 +01:00
Andreas Stephanides
f663da2bb0 Imageobject on profile 2015-03-05 16:11:33 +01:00
Andreas Stephanides
89640623be cache update fuer neuigkeit 2015-03-05 15:55:34 +01:00
83eaca3cba ability fix 2015-03-05 15:51:03 +01:00
Andreas Stephanides
02c5cc2d55 neuigkeiten sort und ability 2015-03-04 15:51:44 +01:00
Andreas Stephanides
c01590f36c fetprofile fix 2015-03-04 15:50:53 +01:00
Andreas Stephanides
6736e4cf04 Merge branch 'master' of github.com:fetsite/fetsite 2015-03-03 20:06:14 +01:00
Andreas Stephanides
ee69c09aa4 neuigkeit cache added 2015-03-03 20:06:08 +01:00
0d6e11299a fix neuigkeiten 2015-03-03 18:12:22 +01:00
Andreas Stephanides
8718a77e4f neuigkeit update 2015-03-02 19:12:07 +01:00
Andreas Stephanides
1926c51836 foto update 2015-03-02 19:03:31 +01:00
Andreas Stephanides
97b646ec7d gallery div fix 2015-02-28 17:56:26 +01:00
Andreas Stephanides
c55a2479e8 shareable 2015-02-28 16:22:01 +01:00
Andreas Stephanides
bf774d27eb Merge branch 'master' of github.com:fetsite/fetsite 2015-02-28 15:14:37 +01:00
Andreas Stephanides
97bef49aba fix gallery histitem 2015-02-28 15:14:02 +01:00
fa33d76656 merge Merge branch 'master' of https://github.com/fetsite/fetsite
Conflicts:
	app/views/galleries/show.html.erb
2015-02-28 15:07:50 +01:00
Andreas Stephanides
c71cef48fa do not fix links for themen 2015-02-28 15:02:52 +01:00
Andreas Stephanides
62b6f8ca88 gallery fixes 2015-02-28 15:02:22 +01:00
Andreas Stephanides
f07925701d tinymce relative urls 2015-02-28 15:01:56 +01:00
Andreas Stephanides
be24c23751 gitignore update 2015-02-28 13:31:19 +01:00
Andreas Stephanides
daf258820a gallery foto view history fix 2015-02-28 13:27:40 +01:00
Andreas Stephanides
444db14e98 foto fb button 2015-02-25 17:15:14 +01:00
5c112be55c Merge branch 'master' of https://github.com/fetsite/fetsite 2015-02-25 17:10:44 +01:00
Andreas Stephanides
2f37259a53 gallery og tag 2015-02-25 17:10:27 +01:00
7993b2f543 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-02-25 17:09:44 +01:00
3d21645596 gall2 2015-02-25 17:09:31 +01:00
Andreas Stephanides
819f9885b2 gallery og tag 2015-02-25 17:08:29 +01:00
b158d2cb05 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-02-25 17:01:34 +01:00
Andreas Stephanides
d0732cbc57 gallery og tag 2015-02-25 17:00:43 +01:00
ce9d5fc947 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-02-25 16:34:32 +01:00
Andreas Stephanides
5775c1b419 gallery public 2015-02-25 16:34:12 +01:00
735a9493ab Merge branch 'master' of https://github.com/fetsite/fetsite 2015-02-25 16:19:28 +01:00
3e879d620e gallery shwo 0 2015-02-25 16:19:19 +01:00
Andreas Stephanides
6286e2dadf gallery view 2015-02-25 16:18:35 +01:00
Andreas Stephanides
554c7ef937 ability foto 3 2015-02-25 16:15:06 +01:00
Andreas Stephanides
855117a117 ability foto 2 2015-02-25 16:12:12 +01:00
Andreas Stephanides
0575546603 ability fotogallery 2015-02-25 16:07:55 +01:00
Andreas Stephanides
3b332d5272 sitemap fix 2015-02-25 12:41:33 +01:00
Andreas Stephanides
d2816e2d21 sitemap neuigkeit name 2015-02-25 12:40:06 +01:00
c04c8d8f91 fixes in views 2015-02-25 12:16:17 +01:00
Andreas Stephanides
2f7fcc3ca9 gallery fix double 2015-02-25 12:03:26 +01:00
Thomas Blazek
0d1bf9739a fixed no image on the download-view (data-type -> type) 2015-02-25 12:00:53 +01:00
Thomas Blazek
dbf52f11f9 Merge branch 'master' of https://github.com/andreassteph/fetsite into andi_spinnt 2015-02-25 11:43:02 +01:00
Andreas Stephanides
374f535dac sitemap add themen 2015-02-25 11:42:20 +01:00
Andreas Stephanides
ad375d6c10 neuigkeiten Themen view fix 2015-02-25 11:42:12 +01:00
Andreas Stephanides
564c355d2d fetprofile schema 2015-02-25 11:41:59 +01:00
Andreas Stephanides
e410aef098 foto abiltiy 2015-02-25 11:41:13 +01:00
Thomas Blazek
710ef968dc Merge branch 'master' of https://github.com/andreassteph/fetsite into andi_spinnt 2015-02-25 10:37:12 +01:00
Andreas Stephanides
2ab6be038f neuigkeiten schema.org 2015-02-24 13:50:29 +01:00
Andreas Stephanides
6197f1d15e themen index 2015-02-24 13:50:09 +01:00
Andreas Stephanides
15327c75de alle themen anzeigen 2015-02-24 13:49:29 +01:00
Andreas Stephanides
67d0d19bd7 foto gallery - schema.org und download button 2015-02-24 13:46:43 +01:00
Andreas Stephanides
742962255b show topic default theme 2015-02-23 09:22:07 +01:00
Andreas Stephanides
52a33a027c faq fix 2015-02-23 09:21:54 +01:00
Andreas Stephanides
53ef07ab1a schema.org for neuigkeit 2015-02-23 09:21:48 +01:00
Andreas Stephanides
90f7485c06 themengruppe fix 2015-02-23 09:21:32 +01:00
Andreas Stephanides
63d4e90d72 show sticky topics 2015-02-23 09:21:24 +01:00
Andreas Stephanides
088b3562cc admin fixes 2015-02-23 09:21:14 +01:00
Andreas Stephanides
a0427336c8 sticky topics 2015-02-23 09:19:30 +01:00
Andreas Stephanides
81e97837de filter log fix 2015-02-17 19:31:32 +01:00
e1ffc5ae85 gallery order 2015-02-17 19:04:04 +01:00
e38ec2594d Merge branch 'master' of https://github.com/fetsite/fetsite 2015-02-17 19:02:21 +01:00
743914dc58 Themen show corrected 2015-02-17 19:01:57 +01:00
Andreas Stephanides
1cb6cecf81 Merge branch 'opengraph' 2015-02-17 19:00:37 +01:00
Andreas Stephanides
aa6d291495 admin link 2015-02-17 18:59:58 +01:00
Andreas Stephanides
a82bafd7ac absolut url helper 2015-02-17 18:59:49 +01:00
Andreas Stephanides
415da41236 log file view 2015-02-17 18:59:28 +01:00
Andreas Stephanides
ebe8d1f8df opengraph 2015-02-14 18:24:46 +01:00
Andreas Stephanides
5c8b8dcfe6 fixes 2015-02-14 17:26:37 +01:00
Andreas Stephanides
b4683bd396 rubrik / Themen -> accessible by 2015-02-14 17:26:33 +01:00
Andreas Stephanides
14ebb13bc1 meeting fixes 2015-02-14 17:25:51 +01:00
Andreas Stephanides
195b982ef4 thema show 2015-02-11 20:59:40 +01:00
Andreas Stephanides
29a35f76d8 modify attachments 2015-02-11 20:53:25 +01:00
Andreas Stephanides
5439d33a3c thema show width 2015-02-11 18:54:10 +01:00
Andreas Stephanides
01d8b58777 meta tags für themen 2015-02-11 15:26:29 +01:00
Andreas Stephanides
ddd786994c Merge branch 'master' of github.com:fetsite/fetsite 2015-02-11 01:16:49 +01:00
20240b75de social plugin 2015-02-11 01:14:52 +01:00
Andreas Stephanides
44d35e196f picture url bei neuigkeiten ohne locale und theme 2015-02-10 14:05:20 +01:00
Andreas Stephanides
7326b08729 themen spezifische rollen 2015-02-10 14:04:54 +01:00
Andreas Stephanides
2b483ae9e9 themen auf eigenen seiten anzeigen 2015-02-10 14:04:18 +01:00
Andreas Stephanides
ebf486b347 outdate topics after 7 months 2015-02-09 15:38:38 +01:00
Andreas Stephanides
f1a149908d meetingtyp management 2015-02-09 15:38:21 +01:00
Andreas Stephanides
6c39c40403 precompile blueimp 2015-02-01 20:22:31 +01:00
Thomas Blazek
3720d9cb6b Merge pull request #5 from bernis/master
Fixes bug in Neuigkeiten mobile view, see picture
2015-01-28 12:39:57 +01:00
Bernhard Stampfer
1731714367 Layout changes for blue1
Ist das so ok, oder soll ich besser ein neues theme machen?
2015-01-28 09:35:08 +01:00
Bernhard Stampfer
db0a50acf2 LVA ECTS/Std right-aligned
Uses style="overflow:auto" to keep the Box arround the Modul sized correctly,
even if left and right aligned text uses more than one line.
This seems to hide the bulltes in chromium for some reason (shown in firefox)
2015-01-28 09:18:26 +01:00
Bernhard Stampfer
cdcbce6803 Fixes bug in Neuigkeiten mobile view, see picture
If display width forced header (Rubrik / User+Date) to display in two lines
whole content of Neuigkeit was squeezed to the width of the whitespace left
to the lower line
2015-01-27 17:26:55 +01:00
Thomas Blazek
d91a150d51 addendum 2015-01-27 10:59:09 +01:00
Thomas Blazek
deb8ccf47d started working on menu 2015-01-27 10:58:45 +01:00
Thomas Blazek
6f52496a7a updating beispielupload 2015-01-22 11:19:49 +01:00
Thomas Blazek
0280ebb6a1 Merge pull request #4 from bernis/master
Die spans/offsets + Optische Veränderungen (Hauptseite)
2015-01-21 10:37:48 +01:00
Bernhard Stampfer
a196b56669 Kleinere optische Veränderungen
Bitte umbedingt testen
Etwas größere Maximalbreite des content-wrap (kann man das sauberer ändern?)
5/7 Aufteilung des Contents
Word-wrap in den neuen Beispielen
Einige margins angepasst (oben sind die Boxen jetzt bündig)
2015-01-20 14:58:04 +01:00
Bernhard Stampfer
767df6439b Platzhalter SPAN1s durch OFFSETs ersetzt, reduziert Leerstellen in Mobilansicht
Die span10 mit dem Seiteninhalt wurden von zwei span1 davor und dahinter
zentriert, diese verursachen aber Abstände in der mobilen Ansicht (sind dort
ober und unter dem span10), offset ist denk ich sauberer
2015-01-20 13:05:40 +01:00
Thomas Blazek
028cf58952 started working on beispiel 2015-01-19 18:40:15 +01:00
Thomas Blazek
229a44df4e Alignment/added fix for dropdown 2015-01-19 14:59:14 +01:00
Andreas Stephanides
69b7604761 fix calendar for all 2015-01-18 15:08:18 +01:00
Andreas Stephanides
7a8889dcc4 meeting cont 2015-01-18 14:51:56 +01:00
Andreas Stephanides
b46e19b466 integrate calendar with meetings 2015-01-18 14:32:20 +01:00
Thomas Blazek
e5966bccce I18n korrekturen 2015-01-18 00:30:42 +01:00
Thomas Blazek
7c5ac3b8d7 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-01-18 00:21:19 +01:00
Thomas Blazek
b3000ae542 Show lecturer picture if it exists 2015-01-18 00:19:41 +01:00
Andreas Stephanides
e93b9b7342 Merge branch 'testgallery' 2015-01-17 12:18:14 +01:00
Andreas Stephanides
3c2250b4fc Revert "change meetings"
This reverts commit 585b386e7c.

Conflicts:
	app/controllers/neuigkeiten_controller.rb
2015-01-17 12:16:37 +01:00
edc8f6c2e3 small fixes 2015-01-17 12:04:53 +01:00
057a66966d fix document searchable 2015-01-17 12:04:10 +01:00
Thomas Blazek
9ffebfd4e7 started writing the init script 2015-01-16 15:25:44 +01:00
Thomas Blazek
b7f9cf942b Bildergallerie auf Kurs
Für alle mit löschrechten: 2 Buttons, einer zeigt auf originaldatei,
einer löscht das bild.
2015-01-16 14:41:37 +01:00
Thomas Blazek
9c6038d6dd Gallery show enhancements
a) Worked on better pagination, knows now 25, 50, 100  and "all"
b) Viewer always shows ALL pictures, sorted to fit the order of the
pagination
2015-01-16 12:10:02 +01:00
Thomas Blazek
a9969a6c72 updates 2015-01-16 09:46:01 +01:00
Thomas Blazek
75667ae6ce work in progress 2015-01-16 00:03:09 +01:00
Andreas Stephanides
978d923082 fix blueimp gallery 2015-01-15 16:38:16 +01:00
Andreas Stephanides
c95782744a gemfle update 2015-01-15 16:13:28 +01:00
Andreas Stephanides
fe4d72dcb3 application css scss 2015-01-15 15:57:00 +01:00
Andreas Stephanides
43a551fc28 Merge branch 'master' of https://github.com/Inachos/fetsite into testgallery
Conflicts:
	app/views/layouts/application.html.erb
2015-01-15 15:40:36 +01:00
Thomas Blazek
48e3c1149a added start_topic.yml to gitignore 2015-01-15 15:36:54 +01:00
Thomas Blazek
3dff2d2bbe Fix: Bildergallerie
Bildergallerie läuft jetzt auf Blueimp-gallery.
Viel spaß
2015-01-15 15:36:20 +01:00
Andreas Stephanides
565024c282 blue2 2015-01-15 15:20:19 +01:00
Thomas Blazek
9873c4f1c1 Merge branch 'master' of https://github.com/Inachos/fetsite 2015-01-15 14:38:41 +01:00
Thomas Blazek
f6a95dee57 commit 2015-01-15 14:30:53 +01:00
Thomas Blazek
3a00794851 dfsd 2015-01-15 14:01:16 +01:00
Thomas Blazek
2931ee6cd6 Need to enforce the jquery-fileupload version
0.4.2 broke uploads for me
2015-01-15 12:56:52 +01:00
Thomas Blazek
bcffee7bc9 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-01-14 09:12:56 +01:00
70e34875f1 search results fix 2015-01-14 09:11:09 +01:00
Thomas Blazek
9cc108b2ed Merge branch 'master' of https://github.com/andreassteph/fetsite 2015-01-14 09:10:57 +01:00
1d11b270cf Merge branch 'master' of https://github.com/fetsite/fetsite 2015-01-14 09:08:51 +01:00
Andreas Stephanides
1731d1f3d2 Merge branch 'master' of github.com:fetsite/fetsite 2015-01-14 09:08:05 +01:00
Andreas Stephanides
47b692b243 Suchergebnis darstellung 2015-01-14 09:07:34 +01:00
Thomas Blazek
f95c8469e3 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-01-12 16:54:21 +01:00
Thomas Blazek
25cf052f95 Merge pull request #212 from bernis/master
Sprache/Login im Menü rechtsbündig
2015-01-12 12:26:29 +01:00
Thomas Blazek
85d2bb5bf9 Check for 0 themen 2015-01-11 22:18:31 +01:00
Thomas Blazek
79ba089b70 Merge branch 'master' of https://github.com/Inachos/fetsite
Conflicts:
	Gemfile.lock
	config/routes.rb
2015-01-11 22:18:05 +01:00
Bernhard Stampfer
c879189705 Sprache/Login im Menü rechtsbündig 2015-01-05 18:37:05 +01:00
5b0840a7d2 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-01-04 16:31:51 +01:00
Andreas Stephanides
fd20bd5c90 ability agenda sehen 2015-01-04 16:31:19 +01:00
edecf20a44 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-01-04 16:26:38 +01:00
Andreas Stephanides
940e7211d2 fix meeting auth 2015-01-04 16:25:44 +01:00
40739523c2 fix document typ 2015-01-03 11:40:25 +01:00
81f1db8ff6 Merge remote-tracking branch 'origin' 2015-01-03 10:54:48 +01:00
3799e5f842 configuration for production 2015-01-03 10:52:34 +01:00
Andreas Stephanides
aa080a1eec Buttons doument show 2015-01-03 10:49:41 +01:00
Andreas Stephanides
0cca373f33 document views 2015-01-03 10:08:00 +01:00
Andreas Stephanides
d72f78488d document/meeting updates 2015-01-03 10:06:58 +01:00
Andreas Stephanides
de8802c34a Merge branch 'master' into documentmeeting 2014-12-18 07:50:16 +01:00
52ec22646b Merge branch 'master' of https://github.com/fetsite/fetsite 2014-12-17 17:01:13 +01:00
Andreas Stephanides
9307acf29f fix2 2014-12-17 17:00:50 +01:00
1b3aeadba7 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-12-17 16:58:41 +01:00
Andreas Stephanides
8232b0d0c0 faqs fix 2014-12-17 16:58:24 +01:00
33c1cc6fea Merge branch 'master' of https://github.com/fetsite/fetsite 2014-12-17 16:57:34 +01:00
Andreas Stephanides
bf7111816f faqs 2014-12-17 16:57:13 +01:00
5fdfc944e7 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-12-17 16:51:09 +01:00
Andreas Stephanides
3cddab7276 extend whitelist sanitze 2014-12-17 16:44:34 +01:00
Andreas Stephanides
349753106e gitignore data.yml 2014-12-17 16:42:06 +01:00
Andreas Stephanides
5e6a32c244 yaml_db added 2014-12-17 16:41:42 +01:00
Andreas Stephanides
afb4508e71 updated tinymce config 2014-12-17 16:41:33 +01:00
Andreas Stephanides
d26ab277af merge errors 2014-12-16 09:23:47 +01:00
Andreas Stephanides
881df624b3 Merge remote-tracking branch 'origin/documentmeeting' into documentmeeting
Conflicts:
	app/controllers/documents_controller.rb
	app/controllers/meetings_controller.rb
	app/models/ability.rb
	app/models/document.rb
	app/models/meeting.rb
	app/models/meetingtyp.rb
	app/views/documents/_document.html.erb
	app/views/documents/_nested_form.html.erb
	app/views/documents/edit.js.erb
	app/views/documents/new.js.erb
	app/views/meetings/_meeting.html.erb
	app/views/themen/_small.html.erb
	config/routes.rb
2014-12-16 09:00:43 +01:00
Andreas Stephanides
07944bce89 meeting 2014-12-14 21:30:21 +01:00
Andreas Stephanides
aa98919e88 searchable 2014-12-14 21:30:09 +01:00
Andreas Stephanides
a9ef5c14ba meeting ix 2014-12-12 15:24:20 +01:00
Andreas Stephanides
e411a98b4e Treffen sichtbar 2014-12-08 22:58:22 +01:00
Andreas Stephanides
ab396c002e meeting views 2014-12-08 22:58:21 +01:00
Andreas Stephanides
b259c1080a merge 2014-12-08 22:58:21 +01:00
Andreas Stephanides
87dd70ea44 meetings added, documents added 2014-12-08 22:58:21 +01:00
Andreas Stephanides
c2ea1782ff documents 2014-12-08 22:58:21 +01:00
60d8c6754c send to all 2014-12-08 18:45:10 +01:00
Andreas Stephanides
6ad5a76cc8 logo2014 2014-12-08 17:17:18 +01:00
Andreas Stephanides
cba52fccc2 Merge branch 'master' of github.com:fetsite/fetsite 2014-12-08 17:12:11 +01:00
Andreas Stephanides
2bc428456c logo2014 added , sitemap fix 2014-12-08 17:08:26 +01:00
41d6407093 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-12-08 16:14:28 +01:00
d17e5330e9 sitemap update 2014-12-08 16:14:15 +01:00
Andreas Stephanides
34891f09bf themengruppen statt themen ind der sitmap 2014-12-08 16:09:00 +01:00
Andreas Stephanides
ad6fc74303 whenever 2014-12-08 14:58:29 +01:00
Andreas Stephanides
276496635f extend sitemap 2014-12-08 14:29:01 +01:00
Andreas Stephanides
bd3c6054fb sitemap generator 2014-12-08 13:42:34 +01:00
Andreas Stephanides
71b63187fa fix order 1 2014-12-05 15:04:18 +01:00
Andreas Stephanides
ec82bc5edd themengruppen-themen-reverse 2014-12-05 14:52:15 +01:00
Andreas Stephanides
f0bb4654b4 Merge branch 'master' of github.com:fetsite/fetsite 2014-12-05 14:50:04 +01:00
f90a545fe6 themen reverse 2014-12-05 14:47:54 +01:00
Andreas Stephanides
282d16c086 reformat searchable 2014-12-02 23:29:19 +01:00
2df6f7745e Fix SunSpot and minor fix in calentry 2014-12-02 12:03:14 +01:00
Andreas Stephanides
85c6985a06 lva nlink fix 2014-11-28 20:48:22 +01:00
Andreas Stephanides
dc124e3810 weitere classen durchsuchen 2014-11-28 14:27:44 +01:00
Andreas Stephanides
e9245919c3 ignore log 2014-11-28 14:27:44 +01:00
Andreas Stephanides
a41f964a84 sunspot install 2014-11-28 14:27:44 +01:00
Andreas Stephanides
e49d30a627 Merge branch 'comments' of github.com:andreassteph/fetsite into comments 2014-11-28 14:26:28 +01:00
Andreas Stephanides
80790dcada Revert "beispielcontroller fix :show_comments"
This reverts commit 4815f57a83.
2014-11-28 14:22:43 +01:00
Andreas Stephanides
699517fb56 Revert "removecomments"
This reverts commit 6ee1468ce3.
2014-11-28 14:22:43 +01:00
Andreas Stephanides
741a3abb6d meetings added, documents added 2014-11-26 20:36:04 +01:00
Andreas Stephanides
3a8f84d9b4 Merge branch 'master' of github.com:fetsite/fetsite 2014-11-24 13:43:48 +01:00
Andreas Stephanides
3aafa0cc4e facebook publish fix 2014-11-24 13:43:30 +01:00
Andreas Stephanides
9bef57284e remove article_author 2014-11-24 13:34:56 +01:00
c4e63eac6e neuigkeit mailer host parameter fix 2014-11-20 12:08:39 +01:00
Andreas Stephanides
684d198470 neuigkeit mail host parameter 2014-11-20 11:58:02 +01:00
Andreas Stephanides
8178898db2 link fix news mailer 2014-11-20 11:49:33 +01:00
Andreas Stephanides
1a6c8422b3 neuigkeit mailer text 2014-11-20 11:44:52 +01:00
Andreas Stephanides
65cb400126 documents 2014-11-20 11:40:49 +01:00
Andreas Stephanides
c49ec5e736 calentry js interface 2014-11-16 14:30:04 +01:00
Andreas Stephanides
4c47919543 nlink-modul 2014-11-15 12:53:58 +01:00
Andreas Stephanides
5ee1b68d6e fetprofile picture url 2014-11-13 10:33:19 +01:00
Andreas Stephanides
fd4bd81e96 fetprofile path 2014-11-13 10:19:26 +01:00
Andreas Stephanides
02eba03439 Merge branch 'master' of github.com:fetsite/fetsite
Conflicts:
	app/controllers/application_controller.rb
2014-11-10 20:23:47 +01:00
Andreas Stephanides
24c76a7f5d login fix 2014-11-10 20:20:36 +01:00
9f61769425 app controller 2014-11-08 11:17:53 +01:00
e7933eb7ad Merge branch 'master' of https://github.com/fetsite/fetsite
Conflicts:
	app/views/neuigkeiten/show.html.erb
2014-11-08 11:08:43 +01:00
0308eeaa47 fix picture url 2014-11-08 11:07:55 +01:00
Andreas Stephanides
68fb657c97 meta tag link fix 2014-11-08 11:02:02 +01:00
Andreas Stephanides
e1ee0bc7f9 studieninterface,title 2014-11-08 11:00:42 +01:00
Andreas Stephanides
483fc37345 studium info, modulgruppen 2014-11-08 10:38:22 +01:00
Andreas Stephanides
2a35a29bf5 metaimage neuigkeit nil 2014-11-08 10:30:27 +01:00
Andreas Stephanides
8aa52bc83c redirect after sign in 2014-11-08 10:30:01 +01:00
Andreas Stephanides
5b52a13a4c #180 fixed 2014-10-31 15:07:05 +01:00
Andreas Stephanides
ecb555bc06 #183 fixed 2014-10-31 15:00:46 +01:00
Andreas Stephanides
0463cf57fd meta tag fix 2014-10-30 12:16:27 +01:00
Andreas Stephanides
2855b72bb6 fix public thema 2014-10-29 13:44:17 +01:00
b0abb75d6b thma fix 2014-10-29 13:27:34 +01:00
Andreas Stephanides
6dfeafecb5 nur public thmen wenn themengruppe public 2014-10-29 13:22:18 +01:00
c709202644 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-28 16:54:13 +01:00
Andreas Stephanides
dce5acefeb no robots 2014-10-28 16:53:07 +01:00
Andreas Stephanides
bff600a896 remove hallo welt 2014-10-28 08:44:19 +01:00
Andreas Stephanides
2688bca831 calentry inline form 2014-10-28 08:43:44 +01:00
7f831f8c7a Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-27 15:40:48 +01:00
Andreas Stephanides
2622ed1513 neuigkeiten max_width 2014-10-27 15:40:26 +01:00
Andreas Stephanides
9a2bf17e81 fetprofile redesign 2014-10-27 15:40:12 +01:00
a5294ae7a7 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-27 14:57:27 +01:00
Andreas Stephanides
9c5063b047 fix search form 2014-10-27 14:49:48 +01:00
Andreas Stephanides
378f6c4894 meta data 2014-10-27 14:49:42 +01:00
Andreas Stephanides
27d5d2cda2 hide gallery 2014-10-27 14:49:28 +01:00
Andreas Stephanides
1e34dd4533 meta_tag no theme url 2014-10-27 14:08:30 +01:00
Andreas Stephanides
d1c8002f3b Revert "beispielcontroller fix :show_comments"
This reverts commit 4815f57a83.
2014-10-27 13:00:50 +01:00
Andreas Stephanides
d20c968fa4 Revert "removecomments"
This reverts commit 6ee1468ce3.
2014-10-27 13:00:50 +01:00
Andreas Stephanides
58417fd59f try to fix gallery 2014-10-27 13:00:03 +01:00
b3182c0d97 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-26 13:16:06 +01:00
Andreas Stephanides
f000e91b6d #182 links versteckt 2014-10-26 13:15:12 +01:00
Andreas Stephanides
b4f9e793c3 fix link dialog #181 2014-10-26 13:14:37 +01:00
8b5df8d1f4 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-21 13:31:46 +02:00
Andreas Stephanides
42ecb7dbcb themen scope+ fix search 2014-10-21 13:29:42 +02:00
Andreas Stephanides
ba8a20c3d1 sanitize 2014-10-21 13:29:14 +02:00
Andreas Stephanides
88b1a53fc7 Rate Beispiele text 2014-10-21 13:28:59 +02:00
Andreas Stephanides
54a2aee4c3 translate lva 2014-10-20 16:10:37 +02:00
c90aa756bc Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 22:22:03 +02:00
Andreas Stephanides
cd1982afc6 hard hardcoded host news mailer 2014-10-19 22:21:53 +02:00
7a80700219 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 22:20:08 +02:00
Andreas Stephanides
a73a9b9594 hardcoded host 2014-10-19 22:19:44 +02:00
11d3081624 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 22:16:47 +02:00
Andreas Stephanides
6a2be58a73 default host für mailer 2014-10-19 22:16:34 +02:00
529707ff5d Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 22:11:42 +02:00
Andreas Stephanides
c218e298a6 news mailer 2014-10-19 22:11:30 +02:00
0df979b7b7 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 22:09:49 +02:00
Andreas Stephanides
a337e2a589 host request fix2 2014-10-19 22:09:34 +02:00
98c600bc22 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 22:07:36 +02:00
Andreas Stephanides
4d34375cdc request host -> controller news_mailer 2014-10-19 22:04:06 +02:00
95b6028066 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 22:02:17 +02:00
Andreas Stephanides
7247d67a64 Merge branch 'master' of https://github.com/HausdorffHimself/fetsite 2014-10-19 21:59:29 +02:00
Andreas Stephanides
e548933cbd neuigkeit thumb 2014-10-19 21:59:11 +02:00
Andreas Deutschmann
d321123d49 Fix Gremien Überschrift ohne Beschreibungen 2014-10-19 21:57:51 +02:00
Andreas Deutschmann
309d10bc39 Gremien "Alle Gremien" entfernt 2014-10-19 21:41:14 +02:00
Andreas Stephanides
3254cc86e8 sort & paginate nlinks @ gremium 2014-10-19 21:04:38 +02:00
a6f8c453ab Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 20:47:03 +02:00
e705e5a563 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 20:45:47 +02:00
Andreas Stephanides
8a93f460ca default startpage 2014-10-19 20:41:22 +02:00
Andreas Stephanides
5b81cbcdad blue1 startpage 2014-10-19 20:39:21 +02:00
Andreas Stephanides
2b09735989 lva typ PR 2014-10-19 20:39:00 +02:00
Andreas Stephanides
6343896744 showversions, Neuigkeit 2014-10-19 19:50:24 +02:00
Andreas Stephanides
7436c5c01e rechte für actions versions neuigkeiten 2014-10-19 19:49:33 +02:00
Andreas Stephanides
ad751c0837 button ausblenden wenn nicht eingeloggt 2014-10-19 19:29:29 +02:00
a6a34f5974 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 19:25:56 +02:00
Andreas Stephanides
96ef48cb31 is updated button für themen 2014-10-19 19:25:34 +02:00
dfcfc8892e Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 18:43:02 +02:00
Andreas Stephanides
fd248947f1 add semester 2014-10-19 18:42:25 +02:00
88249c1771 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 17:59:36 +02:00
Andreas Stephanides
faf3151de0 lva Beispiele translate 2014-10-19 17:59:19 +02:00
6f1e819482 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 17:50:06 +02:00
Andreas Stephanides
caa6c0ee4a html fix lva semester 2014-10-19 17:46:10 +02:00
d48e9fe026 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 17:44:03 +02:00
Andreas Stephanides
ba8b7920ea lva semester fix 2014-10-19 17:43:47 +02:00
7581ee99e2 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 17:39:10 +02:00
Andreas Stephanides
9cbe9942e3 modulname fix 2014-10-19 17:38:47 +02:00
6cbb761fc7 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 17:36:30 +02:00
Andreas Stephanides
6613df4b55 lvamodul_fix 2014-10-19 17:36:03 +02:00
9cf06cc02f Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 17:16:56 +02:00
Andreas Stephanides
4fd089a096 fix lva show 2014-10-19 17:16:38 +02:00
ee40680230 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 17:10:56 +02:00
Andreas Stephanides
2de81b5cc7 translate lva 2014-10-19 17:10:04 +02:00
Andreas Stephanides
1394dfc58c rm gemfile.lock 2014-10-19 17:00:05 +02:00
cea69a84fb Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 16:35:42 +02:00
Andreas Stephanides
e81c263ba0 is_wiki fix thmen 2014-10-19 16:35:23 +02:00
b8013a47fd merge gemfile.lock 2014-10-19 16:30:04 +02:00
Andreas Stephanides
55b8e17242 datum vom bsp 2014-10-19 16:29:09 +02:00
a696da2fa2 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 16:17:38 +02:00
Andreas Stephanides
e7ffb850d5 calentry edit 2014-10-19 16:16:55 +02:00
Andreas Stephanides
e7bc4276db beispielform 2014-10-19 16:16:00 +02:00
74c1877500 Merge branch 'master' of https://github.com/fetsite/fetsite
Conflicts:
	Gemfile.lock
2014-10-19 16:04:38 +02:00
Andreas Stephanides
2fbd277e21 can manage lecturer 2014-10-19 16:03:58 +02:00
a40e5307bf Merge branch 'master' of https://github.com/fetsite/fetsite
Conflicts:
	Gemfile.lock
2014-10-19 15:45:59 +02:00
Andreas Stephanides
94d9653ae2 neuigkeiten show fix 2014-10-19 15:44:19 +02:00
Andreas Stephanides
64f6c86e0f modulgruppen / semesteransicht 2014-10-19 15:42:08 +02:00
Andreas Stephanides
d609b4a5ff metatag neuigkeit 2014-10-19 15:41:50 +02:00
Andreas Stephanides
de77bce5ca order beispiel 2014-10-19 15:41:31 +02:00
Andreas Stephanides
71d1595bac remove refresh button 2014-10-19 15:41:08 +02:00
Andreas Stephanides
327ee73c7a Remove Gemfile.lock 2014-10-17 10:24:48 +02:00
c64e2f9e5a merge fiy 2014-10-17 10:21:04 +02:00
Andreas Stephanides
46490d73bf Merge branch 'master' of github.com:andreassteph/fetsite 2014-10-17 10:18:00 +02:00
Andreas Stephanides
9007cb33c5 header studium show seitentitel 2014-10-17 10:17:24 +02:00
Andreas Stephanides
0aa28cf26c small fix neue verknüpfung dialog 2014-10-17 10:17:24 +02:00
Andreas Stephanides
47dd9d78dc remove wiki gems 2014-10-17 10:17:24 +02:00
Andreas Stephanides
d083d00bbb rmeove wiki 2014-10-17 10:17:24 +02:00
Andreas Stephanides
fcc2c5105c glock 2014-10-17 10:17:24 +02:00
Andreas Stephanides
6639011968 thmen sanitize 2014-10-17 10:17:24 +02:00
Andreas Stephanides
a785cc0bc5 beispielcontroller fix :show_comments 2014-10-17 10:17:24 +02:00
Andreas Stephanides
116d0562d9 removecomments 2014-10-17 10:17:24 +02:00
Andreas Stephanides
1f2cc5d202 meta tags neuigkeit 2014-10-17 10:17:24 +02:00
Andreas Stephanides
a8dd419f9e pagination update 2014-10-17 10:17:24 +02:00
Andreas Stephanides
fc48959e48 nlink fix 2014-10-17 10:17:23 +02:00
Andreas Stephanides
a65f1a8926 lva paper_trail fix 2014-10-17 10:17:23 +02:00
Andreas Stephanides
c40804b5cb membership gremium scope 2014-10-17 10:17:23 +02:00
Andreas Stephanides
f8d00e7b4f beispielsammlungs link 2014-10-17 10:17:23 +02:00
Andreas Stephanides
30a80edb3d datetimepicker fix 2014-10-17 10:17:23 +02:00
Andreas Stephanides
c929025cb6 birthday nil fix 2014-10-17 10:17:23 +02:00
Andreas Stephanides
fce2b0a02a themengruppe verwalten fix link 2014-10-17 10:17:23 +02:00
Andreas Stephanides
974fcaf3d0 Title für rubrik 2014-10-17 10:17:23 +02:00
Andreas Stephanides
7a7128aa32 Pagination fix 2014-10-17 10:17:23 +02:00
Andreas Stephanides
0658a8b423 fetprofiles 2014-10-17 10:17:23 +02:00
1d00b07719 pagination bootstrap update layout 2014-10-17 10:17:23 +02:00
753d4e212f commentslayout fix 2014-10-17 10:17:23 +02:00
0dfc58f125 gemlock 2014-10-17 10:17:23 +02:00
190a69e0ae comments_spec 2014-10-17 10:17:23 +02:00
7d56d10431 comments 2014-10-17 10:17:23 +02:00
2b562fd7e0 Interface Neuigkeiten & Attachment 2014-10-17 10:17:22 +02:00
ed5b2b8685 thmen nur rendern wenn erlaubt 2014-10-17 10:17:22 +02:00
371309ea7b geburtstag anzeigen 2014-10-17 10:17:22 +02:00
5bf20e1a98 contact page new 2014-10-17 10:17:22 +02:00
Andreas Stephanides
d26c11b93f header studium show seitentitel 2014-10-17 10:09:40 +02:00
Andreas Stephanides
599ec23167 small fix neue verknüpfung dialog 2014-10-17 10:09:24 +02:00
Andreas Stephanides
35a95c0922 remove wiki gems 2014-10-16 22:00:58 +02:00
Andreas Stephanides
e1d5cc8d7b rmeove wiki 2014-10-16 21:50:41 +02:00
Andreas Stephanides
629c7941cf glock 2014-10-16 21:44:29 +02:00
Andreas Stephanides
33b30119ea thmen sanitize 2014-10-16 21:44:22 +02:00
Andreas Stephanides
4815f57a83 beispielcontroller fix :show_comments 2014-10-14 13:29:48 +02:00
Andreas Stephanides
6ee1468ce3 removecomments 2014-10-04 12:09:56 +02:00
Andreas Stephanides
6a4d2ff536 meta tags neuigkeit 2014-10-04 09:49:19 +02:00
Andreas Stephanides
fbd51caf3e pagination update 2014-09-24 14:39:59 +02:00
Andreas Stephanides
3365303b61 nlink fix 2014-09-14 18:32:31 +02:00
Andreas Stephanides
017e3cb8c1 lva paper_trail fix 2014-09-14 18:32:03 +02:00
Andreas Stephanides
e8576d532f membership gremium scope 2014-09-14 18:30:56 +02:00
Andreas Stephanides
b11773ac85 beispielsammlungs link 2014-09-14 18:29:29 +02:00
Andreas Stephanides
6c8bd756e5 datetimepicker fix 2014-09-14 12:37:23 +02:00
Andreas Stephanides
4135260421 birthday nil fix 2014-09-14 02:09:16 +02:00
Andreas Stephanides
853bc1e5da themengruppe verwalten fix link 2014-09-14 02:00:21 +02:00
Andreas Stephanides
900f15285d Title für rubrik 2014-09-13 18:14:42 +02:00
Andreas Stephanides
b66a60a215 Pagination fix 2014-09-13 18:14:27 +02:00
Andreas Stephanides
4a635000ce Merge remote-tracking branch 'origin/paginate' into extrafeature 2014-09-13 16:52:01 +02:00
Andreas Stephanides
9869acfc4a Merge remote-tracking branch 'origin/master' into extrafeature 2014-09-13 16:36:31 +02:00
Andreas Stephanides
f5da3ac3dc fetprofiles 2014-09-13 16:35:10 +02:00
Andreas Stephanides
f0e5c0b192 Merge remote-tracking branch 'origin' 2014-09-08 22:30:45 +02:00
Andreas Stephanides
d9c7d48142 Merge branch 'fetsite' 2014-09-08 22:30:12 +02:00
Thomas Blazek
bb3229e826 Merge branch 'master' of https://github.com/thisisaname/fetsite
Conflicts:
	app/controllers/neuigkeiten_controller.rb
	config/routes.rb
2014-08-27 15:31:52 +02:00
Sai
585b386e7c change meetings 2014-08-27 15:22:47 +02:00
c87ce13045 pagination bootstrap update layout 2014-08-21 16:29:29 +05:30
bfb4d54244 commentslayout fix 2014-08-13 15:02:48 +05:30
b409244246 gemlock 2014-08-11 14:39:27 +05:30
3f9d61289c comments_spec 2014-08-11 14:39:27 +05:30
1871c64e6c comments 2014-08-11 14:39:27 +05:30
f5beed1264 UnLike added 2014-08-11 14:39:27 +05:30
658ce0ed27 manage bsp 2014-08-11 14:39:26 +05:30
af9da058ab Interface Neuigkeiten & Attachment 2014-08-11 14:38:14 +05:30
360f6880fe rechte fuer attachment 2014-07-26 08:45:21 +02:00
fabacd6c83 UnLike added 2014-07-24 09:22:57 +02:00
d2f269f15b manage bsp 2014-07-24 09:22:06 +02:00
3347ac89d9 thmen nur rendern wenn erlaubt 2014-07-23 22:57:40 +05:30
74546b1d8d geburtstag anzeigen 2014-07-23 22:57:25 +05:30
caebc36644 contact page new 2014-07-23 22:57:14 +05:30
4de0cfcd26 neue bsp text 2014-07-21 23:56:21 +05:30
bd4f84e7ec ability rework 2014-07-21 23:41:56 +05:30
44a0dc2f98 voteable 2014-07-21 23:41:44 +05:30
e8252fbf16 Beispiele als ZIP Datei 2014-07-19 18:41:50 +05:30
c52e5192c0 upfix 2014-07-18 01:03:23 +05:30
d1d1e6c7e1 uploader fixes 2014-07-18 01:03:14 +05:30
f8a5b57050 Merge branch 'master' of http://github.com/fetsite/fetsite 2014-07-17 17:40:43 +05:30
a0a0306c23 mail to current user 2014-07-17 17:40:36 +05:30
dce0b1507e uploader 2014-07-17 14:08:58 +02:00
3572cb8d01 Merge branch 'master' of http://github.com/andreassteph/fetsite 2014-07-16 06:00:39 +02:00
8d347886c7 Gremium deletes memberships if deleted 2014-07-16 06:00:14 +02:00
6c92fd8607 abilities und beispiel delete 2014-07-16 00:24:34 +05:30
3291ca364b #162 edit_lvas 2014-07-16 00:24:21 +05:30
62facba744 Merge branch 'master' of http://github.com/fetsite/fetsite 2014-07-14 20:41:38 +05:30
111e703274 studien 2014-07-14 20:41:29 +05:30
d823dea5c2 error fixes 2014-07-14 17:09:26 +02:00
adaf924fd7 Merge branch 'master' of http://github.com/fetsite/fetsite 2014-07-09 23:51:38 +05:30
38394df7c3 etforum link 2014-07-09 23:49:48 +05:30
397721f89e Merge branch 'master' of https://github.com/fetsite/fetsite
Conflicts:
	app/views/themen/_form.html.erb
2014-07-09 20:18:07 +02:00
4bc7c4b001 Interface fixes icons,colors 2014-07-09 22:44:42 +05:30
9bd786d053 design neue Farben & icons 2014-07-05 19:20:47 +05:30
6a730c7411 for error 2014-07-04 06:44:48 +02:00
520ce0c6ed Form themen fix1 2014-07-04 06:37:43 +02:00
527743c4c1 tinmce update 2014-07-03 21:31:27 +05:30
d72ece824c Mailer fuer Neuigkeiten added 2014-07-02 12:06:11 +02:00
38716d7a58 neuigkeiten form 2014-06-28 18:11:46 +05:30
b76818eaab fix neuigkeit_path 2014-06-26 10:47:29 +02:00
ee8f2d0076 themessticker, cleanup routes 2014-06-25 23:09:05 +05:30
2ba920331a profile form fixed, themen isdraft 2014-06-24 16:32:00 +05:30
a86d7482f1 Merge branch 'master' of http://github.com/fetsite/fetsite 2014-06-24 16:31:08 +05:30
87bc66f7df sort themen 2014-06-24 13:00:24 +02:00
c1469c5964 home fix 2014-06-24 12:59:49 +02:00
3a8ccdd205 Oberfläche aufräumen... 2014-06-24 13:53:38 +05:30
a87990c338 Zeit formatiert
Datetimepicker fixed, Speichern und weiter
2014-06-21 16:36:30 +05:30
6c9a1b51c4 themen interface cleanup1 2014-06-21 14:53:16 +05:30
6fdee8a7d6 datetimepicker 2014-06-21 14:52:45 +05:30
2df0d89b61 facebookpublish,themen fixes 2014-06-20 00:15:45 +05:30
61510a8891 gemfile 2014-06-15 18:03:57 +05:30
b1c46a3dc3 error fixes 2014-06-14 14:16:16 +02:00
25743f8b9f error fixes 2014-06-12 13:04:20 +02:00
d24e127b90 mergeconflict Gemfilelock 2014-06-12 11:18:22 +02:00
1a48dddb62 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-06-12 11:16:40 +02:00
0526ea71f2 lvas ueberarbeitet 2014-06-11 00:55:46 +05:30
e3b6eebe1d fetprofile form fixed 2014-06-11 00:37:49 +05:30
91e04fdeb7 gremien for ueberarbeitet 2014-06-10 20:12:06 +05:30
67ccecaf51 #143
#143 fixed
themen fixed
2014-06-10 18:47:16 +05:30
6451c0f175 themen ueberarbeitet attachments verwalten 2014-06-09 23:14:05 +05:30
babbfb7d73 div kleinigkeiten(FAQ Link) 2014-06-04 23:16:25 +05:30
63e4bf8f29 Merge branch 'wiki' 2014-06-04 23:09:26 +05:30
e34aefd603 Profile +geschlecht 2014-06-04 18:59:18 +05:30
bd073e0835 Wiki integriert in HP 2014-06-03 18:23:14 +05:30
3aacb1642f geburtstag 2014-05-29 17:33:16 +05:30
adfec2446e themengruppeprivate 2014-05-27 19:42:05 +05:30
13514317c9 fetprofileprivate data 2014-05-27 19:41:35 +05:30
79c6454588 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-05-08 15:55:14 +02:00
Andreas Stephanides
015bf132a9 neuigkeiten rechte abfrage bei gremien 2014-05-08 15:53:46 +02:00
4e8ac08ddb Merge branch 'master' of https://github.com/fetsite/fetsite 2014-05-02 18:56:37 +02:00
Andreas Stephanides
667f5b680e attachments view 2014-05-02 18:55:38 +02:00
Andreas Stephanides
ad704aacd5 größerer Editor 2014-05-02 18:55:26 +02:00
Andreas Stephanides
c713a44884 Intern Bereich 2014-05-02 18:54:50 +02:00
a7f78aa5da Merge branch 'master' of https://github.com/fetsite/fetsite 2014-04-25 16:43:43 +02:00
Andreas Stephanides
ef62b73b2d gremium search fix 2014-04-25 16:43:13 +02:00
3fc4664687 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-04-24 10:56:03 +02:00
Andreas Stephanides
73a2627cd3 link Profile und Gremien an neuigkeit 2014-04-23 17:15:59 +02:00
749cf1532d Merge branch 'master' of https://github.com/fetsite/fetsite 2014-04-18 13:14:14 +02:00
Andreas Stephanides
63f3b09a5d load rubriken 2014-04-18 13:13:39 +02:00
811e6348b6 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-04-18 13:04:30 +02:00
Andreas Stephanides
ae350f6d25 gremien filter fix + habils inzugefügt 2014-04-18 13:02:55 +02:00
124821515b Merge branch 'master' of https://github.com/fetsite/fetsite 2014-04-18 11:30:53 +02:00
Andreas Stephanides
b0448541b2 edit_lvas fix 2014-04-18 11:29:40 +02:00
Andreas Stephanides
a50a7c50f8 kontakt 2014-04-18 11:29:29 +02:00
Andreas Stephanides
4aafbd1831 fonts darkblue theme 2014-04-18 11:29:24 +02:00
Andreas Stephanides
78197f54b8 verschiedene Schriftarten css 2014-04-17 15:17:31 +02:00
Andreas Stephanides
65df35f6cc semester in lva edit 2014-04-17 15:14:51 +02:00
99b6f3968a Merge remote-tracking branch 'origin/master'
Conflicts:
	.gitignore
2014-04-13 15:55:25 +02:00
0cc90eb220 gitignore 2014-04-13 15:52:23 +02:00
48fcdc1d7e gemfile lock 2014-04-13 15:50:44 +02:00
Andreas Stephanides
b6e69925db webrick update 2014-04-12 18:03:48 +02:00
Andreas Stephanides
f96c3dee9a studium_edit_lvas added 2014-04-12 18:03:39 +02:00
Andreas Stephanides
7fff32bab1 getting started updated 2014-04-12 18:03:10 +02:00
Andreas Stephanides
079890b814 Merge remote-tracking branch 'thisisaname/master' 2014-04-12 12:29:30 +02:00
2a54145a52 back button studien 2014-04-11 14:58:15 +02:00
Sai
3b6a964ae6 add_favicon 2014-04-11 14:11:36 +02:00
5a4e6d5946 verdoppelung gelöscht
Verdoppelung in der Bildergalerie gelöst
2014-04-11 13:24:20 +02:00
Thomas Blazek
ae6125571f Deutsche flagge geändert 2014-04-11 13:10:37 +02:00
Andreas Stephanides
a64edc0d8d Merge branch 'master' of github.com:fetsite/fetsite 2014-04-11 13:04:27 +02:00
Andreas Stephanides
e56c1c3ce4 gemfile-lock ignore 2014-04-11 13:04:11 +02:00
Andreas Stephanides
40a34b44ca Merge branch 'master' of http://github.com/mleop/fetsite 2014-04-11 13:02:20 +02:00
Andreas Stephanides
e9be76d6e4 small fixes rubriken und themen 2014-04-11 13:02:00 +02:00
73bba9bc6f faqs oberfläche 2014-04-11 13:01:17 +02:00
68925c1463 Merge branch 'master' of http://github.com/fetsite/fetsite
gitignore conflikt behoben
2014-04-11 12:59:49 +02:00
Thomas Blazek
1ffbfe6306 Added en.png
For all locales, a flag by the same name should be present.
2014-04-11 12:52:54 +02:00
Sai
c226eb8613 added dropdown menu 2014-04-11 12:34:55 +02:00
838534887b gitignore 2014-04-11 12:07:20 +02:00
Sai
99492e9380 Merge branch 'master' of http://github.com/fetsite/fetsite 2014-04-11 11:54:49 +02:00
Andreas Stephanides
9b6907f4cb Merge branch 'master' of http://github.com/mleop/fetsite 2014-04-11 11:48:13 +02:00
4db3056e6a #96 fixed 2014-04-11 11:44:12 +02:00
Andreas Stephanides
a9cfc39bae lvas bei modulgruppen und studium hinzugefügt 2014-04-07 10:07:41 +02:00
Andreas Stephanides
8c284e6363 change precision 2014-04-06 23:07:07 +02:00
Andreas Stephanides
6159503dd9 habil & Modulgruppen name 2014-04-06 23:06:55 +02:00
Andreas Stephanides
d7de52ed38 infoansicht studien neuigkeiten added 2014-04-06 23:01:58 +02:00
Andreas Stephanides
58c46375a1 nlinks fetprofile added 2014-04-06 23:01:37 +02:00
Andreas Stephanides
4c9a3c8999 studium nlink added 2014-04-05 12:46:32 +02:00
Andreas Stephanides
b73f456f45 thema first words 2014-04-05 12:46:13 +02:00
Andreas Stephanides
8194defd35 desc and depend bulk update 2014-04-04 15:09:23 +02:00
Andreas Stephanides
87cad4b910 fix für bulk edit moduls 2014-04-04 14:50:48 +02:00
Andreas Stephanides
c3e1a23073 bulk modul edit 2014-04-04 14:13:47 +02:00
Andreas Stephanides
644f89a230 link fix 2014-04-02 15:46:08 +02:00
Andreas Stephanides
42312b6bc9 fix save modulgruppen 2014-04-02 15:32:30 +02:00
Andreas Stephanides
c0d30f3e38 neuigkeit first words fix 2014-04-02 14:31:42 +02:00
Andreas Stephanides
484776802a modul code clean up 2014-04-02 14:31:30 +02:00
Andreas Stephanides
b990510212 fix neuigkeiten model 2014-04-02 12:35:42 +02:00
Andreas Stephanides
447f2dae1b Merge branch 'master' of http://github.com/mleop/fetsite 2014-04-02 12:11:48 +02:00
Andreas Stephanides
b973e71ade einrückungen moduls 2014-04-02 12:11:00 +02:00
Andreas Stephanides
332b20f969 faq ability 2014-04-02 12:10:52 +02:00
Andreas Stephanides
71dc435d13 strip links for first words 2014-04-02 11:23:27 +02:00
Thomas Blazek
4ec176f310 Fixed desc field to, same problem 2014-04-01 10:35:54 +02:00
Thomas Blazek
35e0821f5a Merge branch 'master' of github.com:fetsite/fetsite 2014-04-01 10:28:29 +02:00
Thomas Blazek
5aedfa752e Fixed Bug when loading from tiss + typo in lvas_controller
The Bug would ALWAYS appear if Pruefungsinformation is empty at submission.
The Fix replaces the empty string with an dummy div-block.
This maybe has to be checked for all input fields.
2014-04-01 10:25:44 +02:00
4015ac71c8 ignore bak folder 2014-04-01 10:16:12 +02:00
771d101b9a welcome text 2014-03-31 21:27:19 +02:00
9dd2576701 Merge commit '0beda737a3e080f116ff8c3b053304b1fed51d9b' 2014-03-31 17:41:44 +02:00
0beda737a3 mysl bug 2014-03-31 17:10:55 +02:00
c8f6d0ddae mysql bug 2014-03-31 17:10:30 +02:00
e7b43ab025 datentyp fix 2014-03-31 16:20:36 +02:00
Andreas Stephanides
d9cfe567f7 routes für neugikeiten fixed 2014-03-31 13:19:40 +02:00
Andreas Stephanides
16799c57b6 calender icon awesome font 2014-03-31 13:19:31 +02:00
Andreas Stephanides
b36c8ddb7c modul form fixed 2014-03-31 13:19:11 +02:00
Andreas Stephanides
3afa8aa7f1 lvacontroller toolbar ausgelagert 2014-03-31 13:19:00 +02:00
Andreas Stephanides
fcdbb2248a Rechte für alle zum Beispielupload 2014-03-30 20:41:22 +02:00
Andreas Stephanides
69b5ebdaec LVA template update 2014-03-30 20:41:12 +02:00
Andreas Stephanides
46f5f713ce thema validations 2014-03-30 20:09:53 +02:00
Andreas Stephanides
1bf0940862 ability show thema 2014-03-30 20:09:40 +02:00
Andreas Stephanides
2c0f3ff0b8 THEMA TESTS 2014-03-30 20:09:02 +02:00
Andreas Stephanides
341f6db268 themengruppen show small fix 2014-03-29 14:06:44 +01:00
Andreas Stephanides
ddb230604c small fixes
removed beispiel show action
beautified search url
anchors for faqs fixed
2014-03-29 14:05:33 +01:00
Andreas Stephanides
5134e25b81 FIXED themengruppe verwalten + faqs order 2014-03-29 13:10:41 +01:00
Andreas Stephanides
7f9b0b996e nice Gremium - Themen Links 2014-03-29 12:53:49 +01:00
Andreas Stephanides
f533adc956 gemfilelock 2014-03-29 12:43:51 +01:00
Andreas Stephanides
5a083cf30a awesome font icons added 2014-03-29 12:43:37 +01:00
Andreas Stephanides
95370d4ae8 verwalten template 2014-03-29 12:43:24 +01:00
Andreas Stephanides
07f53c59bc thema verwalten added 2014-03-29 12:43:08 +01:00
Andreas Stephanides
a8401391a6 Neuigkeiten Link
Querverweise für Neuigkeiten
2014-03-29 11:30:46 +01:00
34f296e6c3 gl 2014-03-28 14:10:49 +01:00
Andreas Stephanides
1d2d3e791b Qualifikation #129
#129 closed
2014-03-25 19:41:48 +01:00
Andreas Stephanides
1e342cb66a v0.0.3a 2014-03-25 16:14:21 +01:00
Andreas Stephanides
1257d55403 modul view fixed 2014-03-24 14:41:08 +01:00
Andreas Stephanides
69111eb8e7 versions link fix 2014-03-24 14:40:54 +01:00
Andreas Stephanides
1857566b70 modulgruppenansicht 2014-03-23 21:48:38 +01:00
Andreas Stephanides
6f3c172ea1 Ansichtlinks translated 2014-03-23 21:48:30 +01:00
Andreas Stephanides
5186f06cdd links in studienansicht fixed 2014-03-23 21:28:55 +01:00
Andreas Stephanides
c235619e31 diverse fixed 2014-03-23 21:02:47 +01:00
Andreas Stephanides
8f4528f994 studienansicht zentralisisert
immer show template mit unterschiedlichen partials statt komplett
unterschiedlichen templates
2014-03-23 21:02:16 +01:00
82d591a116 gitignore 2014-03-18 17:38:46 +01:00
52d24d463f inti debuguser 2014-03-18 17:38:31 +01:00
01977cef20 Infofile fürblue1 added 2014-03-18 10:05:30 +01:00
1f886cc99a fixed nil error Studium
Wenn Beschreibung leer, dann leeren String als Kurzbeschreibung
zurückgeben
2014-03-18 09:56:12 +01:00
Andreas Stephanides
cbec643b96 #114 closed 2014-03-16 15:28:22 +01:00
Andreas Stephanides
94778f0fa7 Issue #71 Tisslink in neuem Tab
Issue #71 closed
2014-03-16 14:55:18 +01:00
Andreas Stephanides
c9fb304a78 Das Wort Semester hinzugefügt 2014-03-16 14:24:43 +01:00
Andreas Stephanides
699ef383eb raute dateien ignorieren (emacs) 2014-03-16 14:17:02 +01:00
Andreas Stephanides
0411a71394 logos 2014-03-16 14:16:21 +01:00
Andreas Stephanides
4eebaec132 missing views & Migration 2014-03-16 14:16:15 +01:00
Andreas Stephanides
6d4c24742a added some transations to thema 2014-03-16 14:15:48 +01:00
Andreas Stephanides
2598fc28f9 button text lvas 2014-03-16 14:15:24 +01:00
Andreas Stephanides
0959cb067d fixed insert issue 2014-03-16 14:15:06 +01:00
Andreas Stephanides
286fb014d2 kontakt added 2014-03-16 13:32:27 +01:00
Andreas Stephanides
3b8aee9e47 searchresults themen fixed 2014-03-16 13:32:09 +01:00
Andreas Stephanides
34fe0739d6 lecturers von tiss laden 2014-03-16 13:13:31 +01:00
Andreas Stephanides
dbf02ef3f8 removed database.yml 2014-03-16 11:23:23 +01:00
Andreas Stephanides
dfe06c5495 remotipart removed 2014-03-16 11:20:04 +01:00
Andreas Stephanides
340c9a4455 fetlogin translated 2014-03-16 11:19:47 +01:00
Andreas Stephanides
35cb224fb6 beuigkeiten reihenfolge fix 2014-03-16 11:19:31 +01:00
Andreas Stephanides
e62416dde4 remotipart fix 2014-03-16 11:19:18 +01:00
Andreas Stephanides
4ac7b41a7f lecturer load lva load first steps 2014-03-16 11:19:10 +01:00
Andreas Stephanides
bc455fcf06 Merge branch 'master' of github.com:fetsite/fetsite 2014-03-16 10:04:10 +01:00
HausdorffHimself
41ac6887af Merge pull request #125 from HausdorffHimself/master
Fixed Issues
2014-03-12 22:36:44 +01:00
Andreas Deutschmann
9fae6dae7f FIX: Translation Missing Themengruppe verwalten 2014-03-12 22:20:04 +01:00
Andreas Deutschmann
1dd6f027a0 FIX: Issue #117 2014-03-12 22:07:03 +01:00
Andreas Deutschmann
6022491a26 FIX: Translations Gremien Issure #121 2014-03-12 17:58:49 +01:00
Sai
784319bb61 Typos 2014-03-12 14:56:35 +01:00
Andreas Stephanides
28dd49bbee Merge branch 'master' of github.com:fetsite/fetsite
Conflicts:
	Gemfile.lock
2014-02-23 14:30:26 +01:00
Andreas Stephanides
aa2ef0955c gemfile fix 2014-02-23 14:26:01 +01:00
14b42ef33a Merge branch 'master' of https://github.com/fetsite/fetsite
Conflicts:
	Gemfile.lock
2014-02-22 19:27:08 +01:00
35941f0f72 fixes for new server 2014-02-22 19:00:03 +01:00
Andreas Stephanides
fce30918a9 Merge branch 'master' of github.com:fetsite/fetsite
Conflicts:
	Gemfile.lock
2014-02-20 10:52:49 +01:00
Andreas Stephanides
16102fbef6 gemlock 2014-02-20 10:50:50 +01:00
Andreas Stephanides
8897a217d9 upload beispiele attachments... 2014-02-20 10:50:03 +01:00
Andreas Stephanides
f13a59b64e link zu gremien 2014-02-20 10:49:29 +01:00
Andreas Stephanides
032d7913e8 testing remotipart 2014-02-20 10:49:11 +01:00
Andreas Stephanides
c314be8574 default theme -> blue1 2014-02-20 10:48:30 +01:00
Andreas Stephanides
b7c577d3b9 calender eintrag im compact view 2014-02-16 15:34:33 +01:00
Andreas Stephanides
82388150ff themengruppen verwaltung ergänzung 2014-02-16 15:34:16 +01:00
Andreas Stephanides
87d7cc247a themengruppen verwalten form 2014-02-16 15:32:04 +01:00
Andreas Stephanides
e466ed5679 no alerts sort_all 2014-02-10 19:27:41 +01:00
Andreas Stephanides
b0c3c5a08c Merge branch 'master' of github.com:fetsite/fetsite into fetsite 2013-08-25 13:54:50 +02:00
659 changed files with 22275 additions and 3628 deletions

37
.gitignore vendored
View File

@@ -1,5 +1,19 @@
/test2.pdf
/test.pdf
/output.json
/ignore
/app/views/neuigkeiten/_compact.bak.html.erb
/config/crawl_config.yml
/db/data.yml
/db/data_*.yml
/db/.#initdebug.rb
/usergroup.ldif
/newuser.ldif
/passwd.ldif
/config/omniauth_secrets.yml
/config/database.yml
/config/initializers/omniauth_secrets.rb
/config/databas*
# See http://help.github.com/ignore-files/ for more about ignoring files.
#
# If you find yourself ignoring temporary files generated by your text editor
@@ -20,8 +34,29 @@
/tmp
/config/initializers/devise.rb
/app/doc/*
/bin/*
/sbin/*
console
/server
/public/uploads/
/public/sitemap*
/public/assets/
/vendor/*
/bak/*
/solr/*
/log/*
*#
/config/database.yml
/config/start_topic.yml
/config/contact_topic.yml
/config/etherpad/APIKEY.*
/config/page.yml
.#*
.*
!/.gitignore
*.pid
/doc/app
coverage/*

136
Gemfile
View File

@@ -1,26 +1,31 @@
source 'https://rubygems.org'
gem 'rake', '~>12.3'
#gem 'rails', '3.2.13'
gem 'rails', '~>4.0'
gem 'rails', '3.2.9'
gem 'sprockets'#, '2.2.2'
gem 'webrick'#, '1.3.1'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'mysql2'
gem 'sqlite3'
gem 'mysql2'#, '~>0.3.10'
gem 'sqlite3', '~>1.3.0'
gem 'execjs', '~>1.4.0'
gem 'sanitize'
gem 'sanitize', :git=>'git://github.com/rgrove/sanitize'
# Gems used only for assets and not required
# in production environments by default.
gem 'sass-rails', '~> 3.2'
gem 'coffee-rails', '~> 3.2.1'
gem 'bootstrap-sass','~> 2.3.2.1'
gem 'sass-rails', '~> 5.0'
gem 'coffee-rails', '~> 4.2.2'
gem 'bootstrap'#,'~> 3.4'
group :assets do
#group :assets do
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
# gem 'therubyracer', :platforms => :ruby
gem 'mini_racer'
gem 'uglifier'#, '>= 1.0.3'
#end
gem 'active_record_query_trace'
gem 'jquery-rails'
@@ -31,9 +36,9 @@ gem 'jquery-rails'
# gem 'jbuilder'
# Use unicorn as the app server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'unicorn', '~>5.4' #4.8.0'
gem 'puma'
# Deploy with Capistran
# gem 'capistrano'
# To use debugger
@@ -41,55 +46,106 @@ gem 'jquery-rails'
# Formbuilder for easier form generation
gem 'formtastic', '~>2.2.1'
gem 'formtastic-bootstrap', '~>2.1.3' #, :git => "git://github.com/mjbellantoni/formtastic-bootstrap.git"
gem 'formtastic', '~>3.1'
# gem 'formtastic-bootstrap', '~>2.1.3' #, :git => "git://github.com/mjbellantoni/formtastic-bootstrap.git"
gem 'formtastic-bootstrap', '~>3.0.0' #, :git => "git://github.com/mjbellantoni/formtastic-bootstrap.git"
# TinyMCE
gem "tinymce-rails" , '~>3.5.8'
gem "tinymce-rails" , '~>4.1.0'
# Internationalisierung
#gem "globalize3" ,'~>3.0.4'
gem "globalize" ,'~>3.0.4'#,:git =>'git://github.com/globalize/globalize.git'
gem "globalize" ,'~>5.1'#,:git =>'git://github.com/globalize/globalize.git'
gem 'globalize-versioning'
gem 'globalize-accessors'
# Version controll
gem "paper_trail" , '>=2.7.0', :git=>'git://github.com/airblade/paper_trail.git'
gem "paper_trail" # , '~>3.0.5i'#, :git=>'git://github.com/airblade/paper_trail.git'
# User management
gem "devise" ,'~>2.2.3'
gem "omniauth"
gem "omniauth-facebook"
gem "omniauth-ldap"
gem "devise" #,'~>2.2.3'
gem "omniauth" , '~>1.6'
gem "omniauth-facebook" #, '~>2.0.0'
gem "omniauth-ldap" #, '~>1.0.4'
gem "fb_graph" #,'~>2.7.17'
gem "meta-tags"
# Roles for users
gem "rolify"
gem "rolify" # , '~>4.0.0'
# Abilities
gem "cancan"
gem "cancan" #, '~>1.6.0'
# Fileupload
gem 'paperclip' ,'~>3.4.0'
gem 'paperclip' #,'~>3.4.0'
gem 'git'
gem 'haml'
#gem 'RedCloth'
#gem 'gollum'
#gem 'wikicloth'
#gem 'gollum-lib'
gem 'awesome_nested_set'
gem 'annotate', ">=2.5.0"
gem 'carrierwave', "~>0.9.0"
gem 'annotate' #, "~>2.6.0"
gem 'carrierwave'#, "~>0.9.0"
group :development, :test do
gem 'factory_girl_rails'
gem 'rspec-rails'
gem 'factory_bot_rails'#,"~>4.5.0"
gem 'minitest'#, "~>4.7.5"
gem 'progress_bar'
gem 'rspec-core'#, '~>3.8.0'
gem 'rspec-support'#, '~>3.3.0'
gem 'rspec-rails'#, '~>3.3.0'
gem 'rspec-collection_matchers'#, '~>1.1.2'
gem 'rspec-activemodel-mocks'#, '~>1.0.1'
gem 'rspec-html-matchers'#, '~>0.7.0'
gem 'rspec-expectations'#, '~>3.3.1'
gem 'capybara'#, '~>2.5.0'
gem 'simplecov'
end
gem "simple_calendar", "~> 0.1.9"
gem "simple_calendar"#, "~> 0.1.9"
gem 'rmagick'
gem 'bootstrap-addons-rails'
gem "jquery-fileupload-rails"
gem "jquery-ui-rails","~> 4.1.1"
gem "jquery-fileupload-rails"#, "0.4.1"
gem "jquery-ui-rails" #,"~> 4.1.0"
gem "font-awesome-rails"
gem "jquery-datetimepicker-rails"
# gem "jquery-sortable-rails"
gem "seed_dump", "~> 0.5.3"
gem "seed_dump"#, "~> 0.5.3"
#gem "themes_for_rails" ,:git =>'git://github.com/tkriplean/themes_for_rails.git'
#gem "themes_for_rails", :git=> 'git://github.com/lucasefe/themes_for_rails.git'
gem 'themes_for_rails'
#gem 'themes_for_rails'
gem 'themes_on_rails'
gem 'rubyzip'
gem 'acts_as_votable'
gem 'kaminari'
gem 'bootstrap-kaminari-views', :git=>'git://github.com/matenia/bootstrap-kaminari-views.git'
#gem 'will_paginate', :git=>'git://github.com/mislav/will_paginate.git'
#gem 'bootstrap-will_paginate'
gem 'sunspot_rails'
gem 'sunspot_solr'
gem 'sitemap_generator'
gem 'whenever'
gem 'yaml_db'
gem 'etherpad-lite'
gem 'opengraph_parser'
# Image gallery
gem 'blueimp-gallery'
gem 'blueimp-gallery-rails'
gem 'shareable'
gem 'sunspot_test'
# needed because of RAILS 4
gem 'protected_attributes'
gem 'actionpack-action_caching'

View File

@@ -1,267 +1,512 @@
GIT
remote: git://github.com/airblade/paper_trail.git
revision: 802b7d4ead71703860fcb9befc2c9b2ee05a8b9f
remote: git://github.com/matenia/bootstrap-kaminari-views.git
revision: 9df61d400fc144c3f33d65f3f97e4867b8e68273
specs:
paper_trail (3.0.0)
activerecord (>= 3.0, < 5.0)
activesupport (>= 3.0, < 5.0)
bootstrap-kaminari-views (0.0.5)
kaminari (>= 0.13)
rails (>= 3.1)
GIT
remote: git://github.com/rgrove/sanitize
revision: 424f02f4fd279e650117d32388d0840097dbc4c9
specs:
sanitize (5.0.0)
crass (~> 1.0.2)
nokogiri (>= 1.8.0)
nokogumbo (~> 2.0)
GEM
remote: https://rubygems.org/
specs:
actionmailer (3.2.9)
actionpack (= 3.2.9)
mail (~> 2.4.4)
actionpack (3.2.9)
activemodel (= 3.2.9)
activesupport (= 3.2.9)
builder (~> 3.0.0)
actionmailer (4.2.11)
actionpack (= 4.2.11)
actionview (= 4.2.11)
activejob (= 4.2.11)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 1.0, >= 1.0.5)
actionpack (4.2.11)
actionview (= 4.2.11)
activesupport (= 4.2.11)
rack (~> 1.6)
rack-test (~> 0.6.2)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionpack-action_caching (1.2.0)
actionpack (>= 4.0.0, < 6)
actionview (4.2.11)
activesupport (= 4.2.11)
builder (~> 3.1)
erubis (~> 2.7.0)
journey (~> 1.0.4)
rack (~> 1.4.0)
rack-cache (~> 1.2)
rack-test (~> 0.6.1)
sprockets (~> 2.2.1)
activemodel (3.2.9)
activesupport (= 3.2.9)
builder (~> 3.0.0)
activerecord (3.2.9)
activemodel (= 3.2.9)
activesupport (= 3.2.9)
arel (~> 3.0.2)
tzinfo (~> 0.3.29)
activeresource (3.2.9)
activemodel (= 3.2.9)
activesupport (= 3.2.9)
activesupport (3.2.9)
i18n (~> 0.6)
multi_json (~> 1.0)
annotate (2.6.1)
activerecord (>= 2.3.0)
rake (>= 0.8.7)
arel (3.0.3)
awesome_nested_set (2.1.6)
activerecord (>= 3.0.0)
bcrypt-ruby (3.1.2)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
active_record_query_trace (1.5.4)
activejob (4.2.11)
activesupport (= 4.2.11)
globalid (>= 0.3.0)
activemodel (4.2.11)
activesupport (= 4.2.11)
builder (~> 3.1)
activerecord (4.2.11)
activemodel (= 4.2.11)
activesupport (= 4.2.11)
arel (~> 6.0)
activesupport (4.2.11)
i18n (~> 0.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
acts_as_votable (0.12.0)
addressable (2.6.0)
public_suffix (>= 2.0.2, < 4.0)
aes_key_wrap (1.0.1)
annotate (2.7.4)
activerecord (>= 3.2, < 6.0)
rake (>= 10.4, < 13.0)
arel (6.0.4)
attr_required (1.0.1)
autoprefixer-rails (9.5.0)
execjs
awesome_nested_set (3.1.4)
activerecord (>= 4.0.0, < 5.3)
bcrypt (3.1.12)
bindata (2.4.4)
blueimp-gallery (2.11.0.1)
railties (>= 3.1.0)
blueimp-gallery-rails (2.7.0)
railties (>= 3.0, < 5.0)
bootstrap (4.3.1)
autoprefixer-rails (>= 9.1.0)
popper_js (>= 1.14.3, < 2)
sassc-rails (>= 2.0.0)
bootstrap-addons-rails (0.1.2)
rails
bootstrap-sass (2.3.2.2)
sass (~> 3.2)
builder (3.0.4)
builder (3.2.3)
cancan (1.6.10)
carrierwave (0.9.0)
activemodel (>= 3.2.0)
activesupport (>= 3.2.0)
json (>= 1.7)
climate_control (0.0.3)
activesupport (>= 3.0)
cocaine (0.5.3)
climate_control (>= 0.0.3, < 1.0)
coffee-rails (3.2.2)
capybara (3.13.2)
addressable
mini_mime (>= 0.1.3)
nokogiri (~> 1.8)
rack (>= 1.6.0)
rack-test (>= 0.6.3)
regexp_parser (~> 1.2)
xpath (~> 3.2)
carrierwave (1.3.1)
activemodel (>= 4.0.0)
activesupport (>= 4.0.0)
mime-types (>= 1.16)
chronic (0.10.2)
climate_control (0.2.0)
coffee-rails (4.2.2)
coffee-script (>= 2.2.0)
railties (~> 3.2.0)
coffee-script (2.2.0)
railties (>= 4.0.0)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.6.3)
devise (2.2.8)
bcrypt-ruby (~> 3.0)
coffee-script-source (1.12.2)
concurrent-ruby (1.1.4)
crass (1.0.4)
devise (4.6.1)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (~> 3.1)
warden (~> 1.2.1)
diff-lcs (1.2.5)
railties (>= 4.1.0, < 6.0)
responders
warden (~> 1.2.3)
diff-lcs (1.3)
docile (1.3.1)
domain_name (0.5.20180417)
unf (>= 0.0.5, < 1.0.0)
erubis (2.7.0)
execjs (1.4.0)
etherpad-lite (0.3.0)
rest-client (>= 1.6)
execjs (1.4.1)
multi_json (~> 1.0)
factory_girl (4.3.0)
activesupport (>= 3.0.0)
factory_girl_rails (4.3.0)
factory_girl (~> 4.3.0)
railties (>= 3.0.0)
faraday (0.8.8)
multipart-post (~> 1.2.0)
formtastic (2.2.1)
actionpack (>= 3.0)
formtastic-bootstrap (2.1.3)
formtastic (~> 2.2)
git (1.2.6)
globalize (3.0.4)
activemodel (>= 3.0.0, < 4.0.0)
activerecord (>= 3.0.0, < 4.0.0)
globalize-versioning (0.1.0.alpha.1)
globalize (>= 3, < 5)
paper_trail (~> 3.0.0)
haml (4.0.5)
factory_bot (5.0.2)
activesupport (>= 4.2.0)
factory_bot_rails (5.0.1)
factory_bot (~> 5.0.0)
railties (>= 4.2.0)
faraday (0.15.4)
multipart-post (>= 1.2, < 3)
fb_graph (2.7.17)
httpclient (>= 2.4)
multi_json (>= 1.3)
rack-oauth2 (>= 0.14.4)
tzinfo
ffi (1.10.0)
font-awesome-rails (4.7.0.4)
railties (>= 3.2, < 6.0)
formtastic (3.1.5)
actionpack (>= 3.2.13)
formtastic-bootstrap (3.0.0)
formtastic (>= 2.2)
git (1.5.0)
globalid (0.4.2)
activesupport (>= 4.2.0)
globalize (5.2.0)
activemodel (>= 4.2, < 5.3)
activerecord (>= 4.2, < 5.3)
request_store (~> 1.0)
globalize-accessors (0.1.5)
globalize (>= 3)
globalize-versioning (0.2.0)
activemodel (>= 3.2.0, < 5)
activerecord (>= 3.2.0, < 5)
globalize (>= 3.0.4, < 6)
paper_trail (>= 3.0.0, < 5)
haml (5.0.4)
temple (>= 0.8.0)
tilt
hashie (2.0.5)
hike (1.2.3)
httpauth (0.2.0)
i18n (0.6.9)
journey (1.0.4)
jquery-fileupload-rails (0.4.1)
hashie (3.6.0)
highline (2.0.1)
http-cookie (1.0.3)
domain_name (~> 0.5)
httpclient (2.8.3)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
jquery-datetimepicker-rails (2.4.1.0)
jquery-fileupload-rails (1.0.0)
actionpack (>= 3.1)
railties (>= 3.1)
jquery-rails (3.0.4)
railties (>= 3.0, < 5.0)
sassc
jquery-rails (4.3.3)
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
json (1.8.1)
jwt (0.1.8)
multi_json (>= 1.5)
libv8 (3.16.14.3)
mail (2.4.4)
i18n (>= 0.4.0)
mime-types (~> 1.16)
treetop (~> 1.4.8)
mime-types (1.25.1)
mini_portile (0.5.2)
multi_json (1.8.2)
multipart-post (1.2.0)
mysql2 (0.3.14)
net-ldap (0.3.1)
nokogiri (1.6.1)
mini_portile (~> 0.5.0)
oauth2 (0.8.1)
faraday (~> 0.8)
httpauth (~> 0.1)
jwt (~> 0.1.4)
multi_json (~> 1.0)
rack (~> 1.2)
omniauth (1.1.4)
hashie (>= 1.2, < 3)
rack
omniauth-facebook (1.5.1)
omniauth-oauth2 (~> 1.1.0)
omniauth-ldap (1.0.4)
net-ldap (~> 0.3.1)
omniauth (~> 1.0)
pyu-ruby-sasl (~> 0.0.3.1)
rubyntlm (~> 0.1.1)
omniauth-oauth2 (1.1.1)
oauth2 (~> 0.8.0)
jquery-ui-rails (6.0.1)
railties (>= 3.2.16)
json (2.1.0)
json-jwt (1.10.0)
activesupport (>= 4.2)
aes_key_wrap
bindata
jwt (2.1.0)
kaminari (1.1.1)
activesupport (>= 4.1.0)
kaminari-actionview (= 1.1.1)
kaminari-activerecord (= 1.1.1)
kaminari-core (= 1.1.1)
kaminari-actionview (1.1.1)
actionview
kaminari-core (= 1.1.1)
kaminari-activerecord (1.1.1)
activerecord
kaminari-core (= 1.1.1)
kaminari-core (1.1.1)
libv8 (6.7.288.46.1)
loofah (2.2.3)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.1)
mini_mime (>= 0.1.1)
meta-tags (2.11.1)
actionpack (>= 3.2.0, < 6.1)
mime-types (3.2.2)
mime-types-data (~> 3.2015)
mime-types-data (3.2018.0812)
mimemagic (0.3.3)
mini_mime (1.0.1)
mini_portile2 (2.4.0)
mini_racer (0.2.4)
libv8 (>= 6.3)
minitest (5.11.3)
multi_json (1.13.1)
multi_xml (0.6.0)
multipart-post (2.0.0)
mysql2 (0.5.2)
net-ldap (0.16.1)
netrc (0.11.0)
nokogiri (1.10.1)
mini_portile2 (~> 2.4.0)
nokogumbo (2.0.1)
nokogiri (~> 1.8, >= 1.8.4)
oauth2 (1.4.1)
faraday (>= 0.8, < 0.16.0)
jwt (>= 1.0, < 3.0)
multi_json (~> 1.3)
multi_xml (~> 0.5)
rack (>= 1.2, < 3)
omniauth (1.9.0)
hashie (>= 3.4.6, < 3.7.0)
rack (>= 1.6.2, < 3)
omniauth-facebook (5.0.0)
omniauth-oauth2 (~> 1.2)
omniauth-ldap (1.0.5)
net-ldap (~> 0.12)
omniauth (~> 1.0)
pyu-ruby-sasl (~> 0.0.3.2)
rubyntlm (~> 0.3.4)
omniauth-oauth2 (1.6.0)
oauth2 (~> 1.1)
omniauth (~> 1.9)
opengraph_parser (0.2.3)
addressable
nokogiri
options (2.3.2)
orm_adapter (0.5.0)
paperclip (3.4.2)
activemodel (>= 3.0.0)
activerecord (>= 3.0.0)
activesupport (>= 3.0.0)
cocaine (~> 0.5.0)
paper_trail (4.2.0)
activerecord (>= 3.0, < 6.0)
activesupport (>= 3.0, < 6.0)
request_store (~> 1.1)
paperclip (6.1.0)
activemodel (>= 4.2.0)
activesupport (>= 4.2.0)
mime-types
polyglot (0.3.3)
mimemagic (~> 0.3.0)
terrapin (~> 0.6.0)
popper_js (1.14.5)
pr_geohash (1.0.0)
progress_bar (1.3.0)
highline (>= 1.6, < 3)
options (~> 2.3.0)
protected_attributes (1.1.4)
activemodel (>= 4.0.1, < 5.0)
public_suffix (3.0.3)
puma (3.12.0)
pyu-ruby-sasl (0.0.3.3)
rack (1.4.5)
rack-cache (1.2)
rack (>= 0.4)
rack-ssl (1.3.3)
rack (1.6.11)
rack-oauth2 (1.9.3)
activesupport
attr_required
httpclient
json-jwt (>= 1.9.0)
rack
rack-test (0.6.2)
rack-test (0.6.3)
rack (>= 1.0)
rails (3.2.9)
actionmailer (= 3.2.9)
actionpack (= 3.2.9)
activerecord (= 3.2.9)
activeresource (= 3.2.9)
activesupport (= 3.2.9)
bundler (~> 1.0)
railties (= 3.2.9)
railties (3.2.9)
actionpack (= 3.2.9)
activesupport (= 3.2.9)
rack-ssl (~> 1.3.2)
rails (4.2.11)
actionmailer (= 4.2.11)
actionpack (= 4.2.11)
actionview (= 4.2.11)
activejob (= 4.2.11)
activemodel (= 4.2.11)
activerecord (= 4.2.11)
activesupport (= 4.2.11)
bundler (>= 1.3.0, < 2.0)
railties (= 4.2.11)
sprockets-rails
rails-deprecated_sanitizer (1.0.3)
activesupport (>= 4.2.0.alpha)
rails-dom-testing (1.0.9)
activesupport (>= 4.2.0, < 5.0)
nokogiri (~> 1.6)
rails-deprecated_sanitizer (>= 1.0.1)
rails-html-sanitizer (1.0.4)
loofah (~> 2.2, >= 2.2.2)
railties (4.2.11)
actionpack (= 4.2.11)
activesupport (= 4.2.11)
rake (>= 0.8.7)
rdoc (~> 3.4)
thor (>= 0.14.6, < 2.0)
rake (10.1.1)
rdoc (3.12.2)
json (~> 1.4)
ref (1.0.5)
rmagick (2.13.2)
rolify (3.2.0)
rspec-core (2.14.7)
rspec-expectations (2.14.4)
diff-lcs (>= 1.1.3, < 2.0)
rspec-mocks (2.14.4)
rspec-rails (2.14.1)
actionpack (>= 3.0)
thor (>= 0.18.1, < 2.0)
rake (12.3.2)
rb-fsevent (0.10.3)
rb-inotify (0.10.0)
ffi (~> 1.0)
regexp_parser (1.3.0)
request_store (1.4.1)
rack (>= 1.4)
responders (2.4.1)
actionpack (>= 4.2.0, < 6.0)
railties (>= 4.2.0, < 6.0)
rest-client (2.0.2)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
rmagick (2.16.0)
rolify (5.2.0)
rsolr (2.2.1)
builder (>= 2.1.2)
faraday (>= 0.9.0)
rspec (3.8.0)
rspec-core (~> 3.8.0)
rspec-expectations (~> 3.8.0)
rspec-mocks (~> 3.8.0)
rspec-activemodel-mocks (1.1.0)
activemodel (>= 3.0)
activesupport (>= 3.0)
rspec-mocks (>= 2.99, < 4.0)
rspec-collection_matchers (1.1.3)
rspec-expectations (>= 2.99.0.beta1)
rspec-core (3.8.0)
rspec-support (~> 3.8.0)
rspec-expectations (3.8.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-html-matchers (0.9.1)
nokogiri (~> 1)
rspec (>= 3.0.0.a, < 4)
rspec-mocks (3.8.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-rails (3.8.2)
actionpack (>= 3.0)
activesupport (>= 3.0)
railties (>= 3.0)
rspec-core (~> 2.14.0)
rspec-expectations (~> 2.14.0)
rspec-mocks (~> 2.14.0)
rubyntlm (0.1.1)
sanitize (2.0.6)
nokogiri (>= 1.4.4)
sass (3.2.13)
sass-rails (3.2.6)
railties (~> 3.2.0)
sass (>= 3.1.10)
tilt (~> 1.3)
seed_dump (0.5.3)
simple_calendar (0.1.9)
rspec-core (~> 3.8.0)
rspec-expectations (~> 3.8.0)
rspec-mocks (~> 3.8.0)
rspec-support (~> 3.8.0)
rspec-support (3.8.0)
rubyntlm (0.3.4)
rubyzip (1.2.2)
sass (3.7.3)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
sass-rails (5.0.7)
railties (>= 4.0.0, < 6)
sass (~> 3.1)
sprockets (>= 2.8, < 4.0)
sprockets-rails (>= 2.0, < 4.0)
tilt (>= 1.1, < 3)
sassc (2.0.1)
ffi (~> 1.9)
rake
sassc-rails (2.1.0)
railties (>= 4.0.0)
sassc (>= 2.0)
sprockets (> 3.0)
sprockets-rails
tilt
seed_dump (3.3.1)
activerecord (>= 4)
activesupport (>= 4)
shareable (1.1.4)
actionpack (>= 3.0.0)
activesupport (>= 3.0.0)
simple_calendar (2.3.0)
rails (>= 3.0)
sprockets (2.2.1)
hike (~> 1.2)
multi_json (~> 1.0)
rack (~> 1.0)
tilt (~> 1.1, != 1.3.0)
sqlite3 (1.3.8)
themes_for_rails (0.5.1)
rails (>= 3.0.0)
therubyracer (0.12.0)
libv8 (~> 3.16.14.0)
ref
thor (0.18.1)
tilt (1.4.1)
tinymce-rails (3.5.8)
simplecov (0.16.1)
docile (~> 1.1)
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)
simplecov-html (0.10.2)
sitemap_generator (6.0.2)
builder (~> 3.0)
sprockets (3.7.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.1)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
sqlite3 (1.3.13)
sunspot (2.3.0)
pr_geohash (~> 1.0)
rsolr (>= 1.1.1, < 3)
sunspot_rails (2.3.0)
rails (>= 3)
sunspot (= 2.3.0)
sunspot_solr (2.3.0)
sunspot_test (0.4.1)
sunspot_rails (>= 2.1.1)
sunspot_solr
temple (0.8.0)
terrapin (0.6.0)
climate_control (>= 0.0.3, < 1.0)
themes_on_rails (0.4.0)
rails (>= 3.2)
thor (0.20.3)
thread_safe (0.3.6)
tilt (2.0.9)
tinymce-rails (4.1.10)
railties (>= 3.1.1)
treetop (1.4.15)
polyglot
polyglot (>= 0.3.1)
tzinfo (0.3.38)
uglifier (2.4.0)
execjs (>= 0.3.0)
json (>= 1.8.0)
warden (1.2.3)
tzinfo (1.2.5)
thread_safe (~> 0.1)
uglifier (4.1.20)
execjs (>= 0.3.0, < 3)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.5)
warden (1.2.7)
rack (>= 1.0)
webrick (1.4.2)
whenever (0.10.0)
chronic (>= 0.6.3)
xpath (3.2.0)
nokogiri (~> 1.8)
yaml_db (0.7.0)
rails (>= 3.0)
rake (>= 0.8.7)
PLATFORMS
ruby
DEPENDENCIES
annotate (>= 2.5.0)
actionpack-action_caching
active_record_query_trace
acts_as_votable
annotate
awesome_nested_set
blueimp-gallery
blueimp-gallery-rails
bootstrap
bootstrap-addons-rails
bootstrap-sass (~> 2.3.2.1)
bootstrap-kaminari-views!
cancan
carrierwave (~> 0.9.0)
coffee-rails (~> 3.2.1)
devise (~> 2.2.3)
capybara
carrierwave
coffee-rails (~> 4.2.2)
devise
etherpad-lite
execjs (~> 1.4.0)
factory_girl_rails
formtastic (~> 2.2.1)
formtastic-bootstrap (~> 2.1.3)
factory_bot_rails
fb_graph
font-awesome-rails
formtastic (~> 3.1)
formtastic-bootstrap (~> 3.0.0)
git
globalize (~> 3.0.4)
globalize (~> 5.1)
globalize-accessors
globalize-versioning
haml
jquery-datetimepicker-rails
jquery-fileupload-rails
jquery-rails
jquery-ui-rails
kaminari
meta-tags
mini_racer
minitest
mysql2
omniauth
omniauth (~> 1.6)
omniauth-facebook
omniauth-ldap
paper_trail (>= 2.7.0)!
paperclip (~> 3.4.0)
rails (= 3.2.9)
opengraph_parser
paper_trail
paperclip
progress_bar
protected_attributes
puma
rails (~> 4.0)
rake (~> 12.3)
rmagick
rolify
rspec-activemodel-mocks
rspec-collection_matchers
rspec-core
rspec-expectations
rspec-html-matchers
rspec-rails
sanitize
sass-rails (~> 3.2)
seed_dump (~> 0.5.3)
simple_calendar (~> 0.1.9)
sqlite3
themes_for_rails
therubyracer
tinymce-rails (~> 3.5.8)
uglifier (>= 1.0.3)
rspec-support
rubyzip
sanitize!
sass-rails (~> 5.0)
seed_dump
shareable
simple_calendar
simplecov
sitemap_generator
sprockets
sqlite3 (~> 1.3.0)
sunspot_rails
sunspot_solr
sunspot_test
themes_on_rails
tinymce-rails (~> 4.1.0)
uglifier
webrick
whenever
yaml_db
BUNDLED WITH
1.16.6

25
README Normal file
View File

@@ -0,0 +1,25 @@
SETUP:
install ruby 2.1.10
install requirements
apt-get ...
mkdir /srv/fetsite
cd /srv/fetsite
copy / fetch Gemfile
make User fetsite
bundle install
# Config Files kopieren:
cp /srv/fetsite/config/omniout_secrets.yml.example /srv/fetsite/config/omniout_secrets.yml
cp /srv/fetsite/config/omniout_secrets.yml.example /srv/fetsite/config/omniout_secrets.yml
touch crawler_config.yml
# Datenbank erstellen
rake db:migrate

11
README_productive.md Normal file
View File

@@ -0,0 +1,11 @@
install ruby/fetsite requirements
do all the rvm stuff
apt-get install git
chown fetsite /srv
su fetsite
cd /srv

Binary file not shown.

BIN
app/assets/fonts/cmunrm.eot Normal file

Binary file not shown.

204
app/assets/fonts/cmunrm.svg Normal file
View File

@@ -0,0 +1,204 @@
<?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" > <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
<defs >
<font id="cmunrm" horiz-adv-x="441" ><font-face
font-family="CMU Serif"
units-per-em="1000"
panose-1="2 0 6 3 0 0 0 0 0 0"
ascent="935"
descent="-250"
alphabetic="0" />
<missing-glyph horiz-adv-x="760" d="M10 10V765H750V10H10ZM70 112L346 388L70 663V112ZM105 70H655L380 346L105 70ZM105 705L380 429L655 705H105ZM414 388L690 112V663L414 388Z" />
<glyph unicode=" " glyph-name="space" horiz-adv-x="333" />
<glyph unicode="!" glyph-name="exclam" horiz-adv-x="278" d="M85 53Q85 76 101 91T138 106T174 91T190 53Q190 31 174 16T138 1Q115 1 100 16T85 53ZM85 664Q85 688 101 702T138 716T175 702T191 664Q191 662 191 659T190 653L152 211Q150 188 137 188Q126 188
124 215L86 650Q86 652 86 657T85 664Z" />
<glyph unicode="&quot;" glyph-name="quotedbl" horiz-adv-x="500" d="M119 664Q119 689 134 699T165 710Q182 710 197 700T212 664Q212 659 204 583T186 428T177 347H154Q151 378 142 456T126 596T119 664ZM287 663Q287 686 300 698T333 710Q349 710 364 700T379
664Q379 659 372 597T356 457T344 347H322Q320 362 304 508T287 663Z" />
<glyph unicode="#" glyph-name="numbersign" horiz-adv-x="833" d="M57 153Q57 164 83 164H261L308 336H80Q57 336 57 347Q57 359 87 359H315L396 655Q396 656 398 664T401 674T405 682T410 690T416 692Q425 692 425 680Q425 674 419 650L339 359H554L635 655Q636
657 637 664T640 674T643 682T648 689T654 692Q664 692 664 680Q664 678 657 650L577 359H750Q775 359 775 347Q774 336 749 336H570L524 164H751Q775 164 775 153Q775 141 751 141H517L435 -155Q435 -157 433 -164T430 -174T427 -183T422 -190T416 -192Q407 -192
407 -180Q407 -174 413 -150L493 141H278L197 -155Q197 -157 195 -164T192 -174T189 -183T184 -190T178 -192Q168 -192 168 -180Q168 -178 175 -150L255 141H82Q57 141 57 153ZM285 164H500L547 336H332L285 164Z" />
<glyph unicode="$" glyph-name="dollar" horiz-adv-x="500" d="M55 177Q55 204 69 216T101 228Q119 228 133 216T147 183Q147 164 135 151T102 137Q97 137 85 139Q113 31 234 20V319Q233 319 223 321T207 325T189 331T168 339T147 350T124 366T104 386T84 412Q55
458 55 513Q55 587 104 641T234 705V750H265V705Q308 702 341 688T393 655T423 612T439 569T443 530Q443 502 429 491T398 480Q379 480 366 492T352 525Q352 544 364 557T397 571Q403 571 413 569Q383 663 265 674V403Q266 403 276 401T291 397T307 392T326 384T345
375T366 361T385 344T404 322T420 295Q444 248 444 195Q444 116 394 57T265 -10V-55H234V-10Q180 -6 142 15T87 67T62 124T55 177ZM107 543Q107 500 132 469T191 423Q199 419 216 415T234 411V673Q179 667 143 630T107 543ZM265 21Q324 29 358 71T392 165Q392 210
368 246T307 298Q301 301 265 311V21Z" />
<glyph unicode="%" glyph-name="percent" horiz-adv-x="833" d="M56 549Q56 635 100 692T203 750Q239 750 275 718Q356 641 462 641Q582 641 652 736Q664 750 673 750Q681 750 687 744T693 730Q693 724 685 712L179 -41Q168 -56 159 -56Q151 -56 145 -50T139 -36Q139
-29 148 -16L597 653L596 654Q544 619 463 619Q386 619 312 661Q333 609 333 548Q333 464 296 406T203 347Q144 347 100 404T56 549ZM118 595T118 548T125 466T142 413T165 385T187 372T204 369Q245 369 276 420T308 549Q308 625 277 676T204 728Q195 728 187 726T165
713T142 684T125 631ZM499 146Q499 232 543 289T646 347Q700 347 738 289T776 145Q776 61 739 3T646 -56Q587 -56 543 1T499 146ZM561 192T561 145T568 63T585 10T608 -18T630 -31T647 -34Q688 -34 719 17T751 146Q751 222 720 273T647 325Q638 325 630 323T608
310T585 281T568 228Z" />
<glyph unicode="&amp;" glyph-name="ampersand" horiz-adv-x="777" d="M42 128Q42 165 57 189T113 255L204 352Q163 456 163 555Q163 629 205 672T299 716Q324 716 342 703T369 668T382 627T386 587Q386 556 364 517T322 452T264 385Q292 312 347 231T430 118Q494
197 573 336Q579 354 579 356Q579 375 561 387T508 400V431Q548 428 630 428Q672 428 727 431V400Q694 400 672 394T633 372T606 343T578 298Q493 152 446 98Q521 9 584 9Q624 9 659 38T696 121H721Q720 58 679 18T580 -22Q491 -22 404 54Q319 -22 223 -22Q148
-22 95 21T42 128ZM125 160Q125 128 133 96T167 37T231 9Q313 9 385 73Q346 112 293 190Q247 256 213 329Q165 283 145 249T125 160ZM226 578Q226 498 256 409Q361 523 361 588Q361 593 361 600T357 626T349 657T331 682T301 694Q271 694 249 665T226 578Z" />
<glyph unicode="&apos;" glyph-name="quotesingle" horiz-adv-x="278" d="M92 664Q92 689 107 699T138 710Q158 710 171 698T184 664Q184 654 183 649L150 347H127L93 649Q92 654 92 664Z" />
<glyph unicode="(" glyph-name="parenleft" horiz-adv-x="388" d="M99 250Q99 419 162 555Q189 612 226 660T289 729T321 750Q331 750 331 740Q331 735 318 723Q157 559 157 250Q157 -60 314 -218Q331 -235 331 -240Q331 -250 321 -250Q314 -250 290 -230T229
-164T165 -62Q99 74 99 250Z" />
<glyph unicode=")" glyph-name="parenright" horiz-adv-x="388" d="M57 -240Q57 -235 70 -223Q231 -59 231 250Q231 560 76 717Q57 735 57 740Q57 750 67 750Q74 750 98 730T159 664T223 562Q289 426 289 250Q289 81 226 -55Q199 -112 162 -160T99 -229T67 -250Q57
-250 57 -240Z" />
<glyph unicode="*" glyph-name="asterisk" horiz-adv-x="500" d="M65 441Q65 458 88 469L227 535L86 601Q65 611 65 628Q65 638 73 647T92 656Q100 656 114 645L238 555Q223 720 223 725Q223 735 230 742T250 750Q260 750 268 743T276 725L261 555L372 637Q398
656 407 656Q418 656 426 647T434 628Q434 611 411 600L272 534L413 468Q434 458 434 441Q434 431 426 422T407 413Q401 413 391 419Q389 420 368 435T315 475T261 514Q276 349 276 344Q276 334 269 327T249 319Q239 319 231 326T223 344L238 514L98 413Q83 413
75 420T66 432T65 441Z" />
<glyph unicode="+" glyph-name="plus" horiz-adv-x="778" d="M57 238T57 250T81 262Q84 262 89 262T95 261H377V544Q377 545 377 549T376 557Q376 581 388 581T400 557V261H682Q683 261 688 261T696 262Q719 262 719 250T695 238Q692 238 688 238T682 239H400V-58Q400
-81 388 -81T376 -57Q376 -54 376 -50T377 -44V239H95Q94 239 89 239T80 238Q57 238 57 250Z" />
<glyph unicode="," glyph-name="comma" horiz-adv-x="277" d="M86 32T86 53T100 90T139 106Q169 106 186 78T203 1Q203 -51 182 -99T141 -170T112 -193Q102 -193 102 -182Q102 -178 109 -171Q181 -94 181 1Q181 16 179 16L177 14Q160 0 139 0Q114 0 100 16Z" />
<glyph unicode="-" glyph-name="hyphen" horiz-adv-x="333" d="M10 186V245H276V186H10Z" />
<glyph unicode="." glyph-name="period" horiz-adv-x="278" d="M85 32T85 53T100 89T138 105Q160 105 175 91T190 53T174 15T138 0Q115 0 100 16Z" />
<glyph unicode="/" glyph-name="slash" horiz-adv-x="500" d="M57 -236Q57 -231 61 -220L414 723Q414 724 416 729T420 738T425 745T432 748Q442 748 442 736Q442 735 439 723L85 -221Q79 -238 76 -243T66 -248Q57 -248 57 -236Z" />
<glyph unicode="0" glyph-name="zero" horiz-adv-x="500" d="M39 320Q39 467 76 547Q128 666 250 666Q276 666 303 659T364 625T420 554Q460 469 460 320Q460 174 423 94Q369 -22 249 -22Q204 -22 159 1T84 79Q39 162 39 320ZM122 332Q122 181 133 121Q145 56
178 28T249 0Q289 0 322 30T366 125Q377 189 377 332Q377 471 367 527Q354 592 319 618T249 644Q236 644 222 640T188 625T153 586T130 516Q122 462 122 332Z" />
<glyph unicode="1" glyph-name="one" horiz-adv-x="500" d="M89 571V602Q209 602 271 666Q288 666 291 662T294 640V79Q294 49 308 40T387 31H419V0Q384 3 257 3T95 0V31H127Q190 31 205 40T220 79V597Q168 571 89 571Z" />
<glyph unicode="2" glyph-name="two" horiz-adv-x="500" d="M50 0Q50 18 51 23T61 37L253 251Q358 369 358 472Q358 539 323 587T224 635Q180 635 143 608T89 533Q92 534 102 534Q127 534 141 519T155 482Q155 455 138 442T103 429Q96 429 87 430T64 446T50 485Q50
555 103 610T237 666Q329 666 389 612T449 472Q449 442 440 415T419 367T375 313T317 255T233 180L127 77H307Q395 77 402 85Q412 99 424 174H449L421 0H50Z" />
<glyph unicode="3" glyph-name="three" horiz-adv-x="500" d="M42 135Q42 165 59 179T98 193Q121 193 137 178T154 137Q154 109 135 94T88 82Q112 42 156 24T241 6Q284 6 319 43T354 171Q354 248 324 292T235 337H191Q176 337 172 338T167 348Q167 358 182 360Q197
360 221 363Q279 365 310 415Q338 462 338 529Q338 590 309 615T242 641Q207 641 169 627T109 579Q171 579 171 529Q171 507 157 493T120 478Q98 478 84 492T69 530Q69 587 120 626T246 666Q320 666 375 627T430 528Q430 469 391 421T290 352Q366 337 411 286T457
171Q457 93 396 36T244 -22Q161 -22 102 23T42 135Z" />
<glyph unicode="4" glyph-name="four" horiz-adv-x="500" d="M28 165V196L335 665Q343 677 355 677Q366 677 368 673T371 651V196H471V165H371V78Q371 49 383 40T447 31H468V0Q427 3 332 3Q238 3 197 0V31H218Q270 31 282 40T294 78V165H28ZM56 196H300V569L56 196Z" />
<glyph unicode="5" glyph-name="five" horiz-adv-x="500" d="M50 161Q50 191 66 202T99 214Q122 214 135 200T149 165T136 131T99 116Q88 116 82 118Q95 72 135 39T229 6Q296 6 336 71Q360 113 360 208Q360 292 342 334Q314 398 257 398Q176 398 128 328Q122 319
115 319Q105 319 103 324T101 345V641Q101 665 111 665Q115 665 123 662Q186 634 256 634Q328 634 392 663Q397 666 400 666Q410 666 410 655Q410 651 402 640T377 613T338 584T284 561T217 551Q175 551 132 564V369Q184 420 259 420Q339 420 394 356T449 201Q449
107 384 43T231 -22Q151 -22 101 35T50 161Z" />
<glyph unicode="6" glyph-name="six" horiz-adv-x="500" d="M42 316Q42 473 122 569T305 666Q365 666 398 636T432 558Q432 532 417 521T386 510Q368 510 354 522T340 556Q340 601 395 601Q369 641 307 641Q288 641 269 636T224 612T179 564T146 479T132 352V328Q173
427 257 427T399 363T457 204Q457 107 397 43T251 -22Q213 -22 179 -6T112 46T61 151T42 316ZM134 226Q134 128 152 81Q155 73 161 63T179 38T210 15T251 6Q318 6 350 71Q367 107 367 205Q367 305 349 342Q318 404 256 404Q214 404 185 375T145 308T134 226Z" />
<glyph unicode="7" glyph-name="seven" horiz-adv-x="500" d="M56 470L89 676H114Q117 664 122 659T155 649T242 644H485Q485 621 476 609L341 419Q298 359 279 248Q268 174 268 84V33Q268 -22 222 -22T176 33Q176 224 299 409Q312 428 360 496T411 567H204Q113
567 106 561Q96 552 81 470H56Z" />
<glyph unicode="8" glyph-name="eight" horiz-adv-x="500" d="M42 151Q42 263 186 335Q124 377 113 389Q69 438 69 499Q69 569 122 617T250 666Q322 666 376 625T430 517Q430 424 309 362Q389 312 408 291Q457 237 457 168Q457 88 396 33T249 -22Q166 -22 104
26T42 151ZM92 151Q92 89 138 48T250 6Q313 6 360 42T407 132Q407 153 400 171T379 203T357 224T332 242L209 320Q92 255 92 151ZM113 538Q113 490 163 457L287 377Q386 435 386 517Q386 570 346 605T249 641Q194 641 154 612T113 538Z" />
<glyph unicode="9" glyph-name="nine" horiz-adv-x="500" d="M42 441Q42 494 57 530T106 603Q166 666 253 666Q290 666 323 651T387 600T438 495T457 329Q457 174 382 76T206 -22Q142 -22 105 7T67 86Q67 112 81 123T113 134Q131 134 145 122T159 88Q159 70 148
56T107 42Q136 6 205 6Q230 6 255 17T307 57T350 144T367 286V318Q327 218 242 218Q158 218 100 282T42 441ZM132 440Q132 341 150 304Q181 241 243 241Q304 241 334 295T365 421Q365 519 349 562Q319 641 253 641T153 578Q132 541 132 440Z" />
<glyph unicode=":" glyph-name="colon" horiz-adv-x="277" d="M86 356T86 378T101 415T139 431T176 416T192 378T177 341T139 325T102 340ZM86 31T86 53T101 90T139 106T176 91T192 53T177 16T139 0T102 15Z" />
<glyph unicode=";" glyph-name="semicolon" horiz-adv-x="278" d="M85 357T85 378T100 414T138 430Q160 430 175 416T190 378T174 340T138 325Q115 325 100 341ZM86 32T86 53T100 90T139 106Q169 106 186 78T203 1Q203 -51 182 -99T141 -170T112 -193Q102 -193
102 -182Q102 -178 109 -171Q181 -94 181 1Q181 16 179 16L177 14Q160 0 139 0Q114 0 100 16Z" />
<glyph unicode="&lt;" glyph-name="less" horiz-adv-x="778" d="M85 250Q85 258 101 266L656 519Q676 529 681 529Q691 529 691 519Q691 511 668 500L180 276Q150 262 122 250Q150 238 180 224L668 0Q691 -10 691 -19Q691 -29 681 -29Q676 -29 656 -19L101 234Q86
240 85 250Z" />
<glyph unicode="=" glyph-name="equal" horiz-adv-x="778" d="M57 152Q58 164 77 164H690Q719 164 719 153Q719 141 692 141H84Q57 141 57 152ZM57 347Q57 359 78 359H689Q719 359 719 347Q719 336 694 336H77Q57 336 57 347Z" />
<glyph unicode="&gt;" glyph-name="greater" horiz-adv-x="778" d="M85 -19Q85 -13 89 -10T109 0L597 224Q635 242 655 250Q635 258 597 276L109 500Q107 501 103 503T96 506T91 510T87 514T85 519Q85 529 96 529Q101 529 121 519L676 266Q677 266 679 265T684
262T688 259T691 255T692 250Q691 241 663 228L121 -19Q101 -29 96 -29Q85 -29 85 -19Z" />
<glyph unicode="?" glyph-name="question" horiz-adv-x="472" d="M56 572Q56 624 102 664T226 705Q327 705 371 664T415 570Q415 508 367 472Q235 374 235 249V214Q235 203 235 199T231 191T222 187Q214 187 212 191T210 211V256Q210 309 231 370T298 481Q309
492 315 500T326 528T332 576Q332 593 332 603T325 630T309 657T276 675T223 683Q132 683 92 615Q148 615 148 570Q148 550 136 537T102 524Q83 524 70 536T56 572ZM169 31T169 53T184 90T222 106T259 91T275 53T260 16T222 0T185 15Z" />
<glyph unicode="@" glyph-name="at" horiz-adv-x="777" d="M56 347Q56 496 153 600T389 705Q450 705 509 680T615 610T692 494T721 338Q721 293 717 260T703 194T672 145T619 128Q586 128 556 145T519 199Q468 128 387 128Q308 128 249 191T189 347T248 502T387
566Q468 566 524 489Q531 481 547 481H564Q581 481 584 478T588 457V216Q588 150 623 150Q647 150 662 164T684 207T693 264T696 332Q696 418 668 487T593 598T494 661T388 683Q263 683 172 586T81 347Q81 210 170 111T393 11Q529 11 665 75Q670 78 688 78H697Q707
78 710 78T717 75T720 68Q720 58 664 39T574 11Q480 -11 394 -11Q248 -11 152 95T56 347ZM258 430T258 347T297 207T390 150Q457 150 505 219Q519 240 519 262V432Q519 453 506 472Q460 544 390 544Q335 544 297 487Z" />
<glyph unicode="A" glyph-name="A" horiz-adv-x="750" d="M32 0V31Q121 33 144 98L351 696Q355 708 359 712T375 716Q381 716 384 715T390 711T394 705T398 696L614 71Q622 46 638 39T699 31H717V0Q654 3 586 3Q478 3 442 0V31Q525 31 525 61Q525 63 522 75L469
228H222L176 97Q174 93 174 82Q174 61 193 46T249 31V0Q153 3 134 3Q101 3 32 0ZM233 259H458L345 584L233 259Z" />
<glyph unicode="B" glyph-name="B" horiz-adv-x="708" d="M36 0V31H60Q114 31 126 40T139 78V605Q139 634 127 643T60 652H36V683H402Q497 683 560 632T624 514Q624 459 578 415T458 357Q541 348 596 298T651 183Q651 110 588 55T428 0H36ZM222 71Q222 45 229
38T271 31H396Q468 31 509 78T551 184T515 293T410 344H222V71ZM222 366H367Q444 366 485 412T527 514Q527 563 494 607T395 652H271Q237 652 230 645T222 612V366Z" />
<glyph unicode="C" glyph-name="C" horiz-adv-x="722" d="M56 342Q56 493 159 599T404 705Q448 705 487 689T544 659T588 619L638 693Q646 705 654 705T663 701T665 681V444Q665 428 663 424T649 420Q639 420 637 423T633 437Q618 545 558 609T415 674Q391 674
365 669T300 643T232 588T181 490T159 341Q159 257 180 193T231 95T299 41T365 15T416 9Q502 9 568 70T640 234Q641 239 641 241T642 245T645 249T652 250Q665 250 665 233Q665 138 592 58T404 -22Q262 -22 159 83T56 342Z" />
<glyph unicode="D" glyph-name="D" horiz-adv-x="763" d="M35 0V31H59Q113 31 125 40T138 78V605Q138 634 126 643T59 652H35V683H401Q529 683 618 581T707 336Q707 196 618 98T401 0H35ZM224 71Q224 45 231 38T273 31H374Q440 31 484 58T552 116Q607 191 607
336Q607 488 555 559Q488 652 373 652H273Q239 652 232 645T224 612V71Z" />
<glyph unicode="E" glyph-name="E" horiz-adv-x="680" d="M33 0V31H57Q111 31 123 40T136 78V602Q136 631 124 640T57 649H33V680H596L624 455H599Q592 512 583 545T553 603T496 639T403 649H274Q240 649 233 642T225 609V369H315Q384 369 403 393T423 486H448V221H423Q423
289 404 313T315 338H225V71Q225 45 232 38T274 31H407Q450 31 481 36T535 56T572 86T597 131T614 187T627 258H652L610 0H33Z" />
<glyph unicode="F" glyph-name="F" horiz-adv-x="652" d="M33 0V31H57Q111 31 123 40T136 78V602Q136 631 124 640T57 649H33V680H582L610 455H585Q578 512 569 544T540 603T485 639T394 649H274Q240 649 233 642T225 609V356H311Q379 356 398 380T417 473H442V208H417Q417
277 398 301T311 325H225V79Q225 58 228 50T253 37T320 31H353V0Q317 3 185 3Q68 3 33 0Z" />
<glyph unicode="G" glyph-name="G" horiz-adv-x="784" d="M56 190T56 342T159 599T404 705Q439 705 469 697T523 673T559 647T589 619L639 693Q647 705 655 705T664 701T666 681V444Q666 428 664 424T650 420Q640 420 638 423T634 437Q619 545 559 609T416 674Q392
674 366 669T300 643T232 589T181 491T159 342Q159 258 180 194T232 96T301 41T369 15T422 9Q439 9 459 12T509 27T558 64T577 130V194Q577 224 563 233T484 242H452V273Q488 270 613 270Q624 270 735 273V242Q687 242 677 235T666 198V24Q666 1 657 1Q649 1 626
23T593 63Q569 21 517 0T406 -22Q262 -22 159 84Z" />
<glyph unicode="H" glyph-name="H" horiz-adv-x="750" d="M33 0V31H57Q111 31 123 40T136 78V605Q136 634 124 643T57 652H33V683Q68 680 181 680Q293 680 328 683V652H304Q250 652 238 643T225 605V371H524V605Q524 634 512 643T445 652H421V683Q456 680 569
680Q681 680 716 683V652H692Q638 652 626 643T613 605V78Q613 49 625 40T692 31H716V0Q681 3 568 3Q456 3 421 0V31H445Q499 31 511 40T524 78V340H225V78Q225 49 237 40T304 31H328V0Q293 3 180 3Q68 3 33 0Z" />
<glyph unicode="I" glyph-name="I" horiz-adv-x="361" d="M28 0V31H54Q110 31 123 40T136 78V605Q136 634 123 643T54 652H28V683Q63 680 181 680Q298 680 333 683V652H307Q251 652 238 643T225 605V78Q225 49 238 40T307 31H333V0Q298 3 180 3Q63 3 28 0Z" />
<glyph unicode="J" glyph-name="J" horiz-adv-x="513" d="M41 112Q41 142 58 156T97 170Q119 170 136 155T153 114Q153 58 89 58Q125 0 199 0Q241 0 271 41T302 148V604Q302 625 298 633T273 646T204 652H168V683Q206 680 336 680Q399 680 465 683V652Q414 652
401 646T388 611V167Q388 131 387 123Q378 64 327 21T201 -22Q134 -22 88 17T41 112Z" />
<glyph unicode="K" glyph-name="K" horiz-adv-x="777" d="M33 0V31H57Q111 31 123 40T136 78V605Q136 634 124 643T57 652H33V683Q68 680 181 680Q293 680 328 683V652H304Q250 652 238 643T225 605V287L538 586Q556 602 556 619Q556 625 554 631T540 645T510
652V683Q544 680 637 680Q696 680 722 683V652Q639 651 580 592L400 419L631 79Q652 48 672 40T736 31V0Q673 3 621 3Q513 3 478 0V31Q537 31 537 61Q537 72 522 95L341 363L225 253V78Q225 49 237 40T304 31H328V0Q293 3 180 3Q68 3 33 0Z" />
<glyph unicode="L" glyph-name="L" horiz-adv-x="625" d="M33 0V31H57Q111 31 123 40T136 78V605Q136 634 124 643T57 652H33V683Q68 680 185 680Q317 680 353 683V652H320Q274 652 253 646T229 632T225 604V71Q225 45 232 38T274 31H356Q407 31 443 46T499 80T532
135T549 194T557 258H582L554 0H33Z" />
<glyph unicode="M" glyph-name="M" horiz-adv-x="916" d="M37 0V31Q73 31 96 38T127 58T138 81T140 105V605Q140 634 128 643T61 652H37V683H206Q224 683 229 680T241 661L458 101L677 664Q682 678 686 680T710 683H879V652H855Q801 652 789 643T776 605V78Q776
49 788 40T855 31H879V0Q842 3 736 3Q629 3 592 0V31H616Q670 31 682 40T695 78V652H694L448 19Q441 0 430 0Q418 0 410 22L169 644H168V105Q168 90 170 81T180 59T212 38T271 31V0Q166 3 154 3T37 0Z" />
<glyph unicode="N" glyph-name="N" horiz-adv-x="750" d="M33 0V31Q69 31 92 38T123 58T134 81T136 105V627Q136 641 133 644T112 650Q82 652 62 652H33V683H203Q217 683 221 681T232 670L585 151V578Q585 593 583 602T573 624T541 645T482 652V683Q587 680 599
680T716 683V652Q680 652 657 645T626 625T615 602T613 578V26Q613 10 611 5T599 0Q592 0 582 13L174 613Q170 619 164 625V105Q164 90 166 81T176 59T208 38T267 31V0Q162 3 150 3T33 0Z" />
<glyph unicode="O" glyph-name="O" horiz-adv-x="777" d="M56 339Q56 492 154 598T388 705Q525 705 623 598T721 339Q721 188 623 83T388 -22Q253 -22 155 82T56 339ZM159 353Q159 260 181 189T238 80T312 23T389 4Q427 4 464 22T537 78T595 187T618 353Q618 426
603 485T563 579T507 638T446 671T388 680Q353 680 317 665T243 615T183 513T159 353Z" />
<glyph unicode="P" glyph-name="P" horiz-adv-x="680" d="M35 0V31H59Q113 31 125 40T138 78V605Q138 634 126 643T59 652H35V683H388Q489 683 556 628T624 497Q624 423 556 370T396 316H227V78Q227 49 239 40T306 31H330V0Q295 3 182 3Q70 3 35 0ZM224 342H362Q407
342 439 354T487 382T510 423T520 462T521 497Q521 519 520 533T511 572T487 612T440 640T362 652H273Q239 652 232 645T224 612V342Z" />
<glyph unicode="Q" glyph-name="Q" horiz-adv-x="777" d="M56 339Q56 492 154 598T388 705Q525 705 623 598T721 339Q721 228 665 138T518 7Q537 -44 558 -67T614 -91T674 -69T705 -7Q707 11 716 11Q727 11 727 -10Q727 -34 722 -61T705 -120T668 -173T606 -194Q579
-194 559 -183T528 -157T507 -113T494 -64T484 -7Q436 -22 389 -22Q252 -22 154 83T56 339ZM156 339Q156 258 173 196T219 98T272 44T322 16Q308 44 308 64Q308 97 331 122T390 148Q461 148 503 42Q621 129 621 339Q621 430 599 499T540 606T466 662T388 680Q350
680 312 663T238 608T179 501T156 339ZM330 64Q330 53 333 41T351 16T389 3Q436 3 477 26Q458 126 390 126Q363 126 347 107T330 64Z" />
<glyph unicode="R" glyph-name="R" horiz-adv-x="736" d="M35 0V31H59Q113 31 125 40T138 78V605Q138 634 126 643T59 652H35V683H349Q458 683 534 630T610 503Q610 447 561 403T435 340Q534 306 557 224L570 144Q574 115 576 101T583 66T592 37T604 17T620 4T641
0Q664 0 683 20T707 89Q709 105 719 105Q732 105 732 88Q732 75 728 59T715 23T685 -9T637 -22Q559 -22 511 20Q491 38 482 61T472 103T470 163Q470 221 464 246T432 297Q397 331 339 331H224V78Q224 49 236 40T303 31H327V0Q291 3 181 3T35 0ZM224 353H335Q388
353 424 366T477 402T500 449T507 503Q507 538 499 564T474 606T440 632T397 646T352 651T305 652Q256 652 246 650Q235 649 231 644T225 632T224 612V353Z" />
<glyph unicode="S" glyph-name="S" horiz-adv-x="555" d="M56 2V202Q56 213 56 217T60 224T69 227Q80 227 81 217Q84 118 143 63Q201 9 301 9Q361 9 398 52T435 152Q435 206 404 244Q391 261 375 272T348 286T319 295Q195 325 187 328Q128 348 92 398T56 511Q56
591 112 648T251 705Q292 705 326 692T375 668T411 635L446 692Q454 705 461 705Q469 705 470 701T472 681V480Q472 469 472 465T468 459T459 456Q449 456 447 468Q419 677 252 677Q195 677 158 639T120 546Q120 502 147 466T221 419L349 388Q413 373 456 317T499
186Q499 101 444 40T302 -22Q240 -22 192 -2T118 48Q98 15 85 -4L82 -9Q74 -22 67 -22Q59 -22 58 -17T56 2Z" />
<glyph unicode="T" glyph-name="T" horiz-adv-x="722" d="M36 452L55 677H666L685 452H660Q656 497 653 523T641 573T622 610T591 631T545 643T480 646Q434 646 423 644Q411 641 408 633T405 606V79Q405 59 409 51T436 37T510 31H550V0Q509 3 360 3Q212 3 171
0V31H211Q262 31 285 37T312 51T316 79V606Q316 620 315 626T310 637T295 644T241 646Q202 646 176 644T130 632T100 610T81 574T69 523T61 452H36Z" />
<glyph unicode="U" glyph-name="U" horiz-adv-x="750" d="M33 652V683Q68 680 181 680Q293 680 328 683V652H304Q250 652 238 643T225 605V224Q225 157 243 111T291 45T343 17T390 9Q466 9 524 69T582 231V578Q582 593 580 602T570 624T538 645T479 652V683Q587
680 598 680Q608 680 716 683V652Q680 652 657 646T626 625T615 601T613 574V254Q613 205 610 185Q597 98 535 38T388 -22Q285 -22 211 50T136 228V605Q136 634 124 643T57 652H33Z" />
<glyph unicode="V" glyph-name="V" horiz-adv-x="750" d="M19 652V683Q127 680 146 680Q253 680 289 683V652Q207 652 207 623Q207 619 213 605L404 100L587 582Q592 597 592 602Q592 622 574 636T519 652V683Q597 680 633 680Q684 680 730 683V652Q646 651 621
585L398 -3Q394 -15 390 -18T374 -22Q364 -22 359 -18T349 0L117 614Q107 641 90 646T19 652Z" />
<glyph unicode="W" glyph-name="W" horiz-adv-x="1027" d="M18 652V683Q32 683 57 682T103 681T140 680Q246 680 282 683V652Q198 652 198 622Q198 615 200 609L361 117L500 546L478 616Q470 641 453 646T388 652V683Q402 683 427 682T473 681T510 680Q616 680
652 683V652Q568 652 568 622Q568 619 571 607L731 117L881 579Q886 594 886 599Q886 617 865 634T799 652V683Q877 680 918 680Q964 680 1009 683V652Q930 652 909 585L718 -2Q716 -10 715 -13T709 -19T698 -22Q685 -22 679 -3L513 506L348 -2Q346 -10 345 -13T339
-19T328 -22Q315 -22 309 -3L109 610Q100 639 87 645T18 652Z" />
<glyph unicode="X" glyph-name="X" horiz-adv-x="750" d="M24 0V31Q70 31 103 45T147 69T169 97L333 339L149 617Q135 638 116 645T56 652H37V683Q92 680 167 680Q278 680 313 683V652Q283 651 266 642T248 622Q248 618 255 607L384 414L498 583Q507 597 507 606Q507
624 491 637T445 652V683Q485 680 573 680Q584 680 602 680T645 682T684 683V652Q583 651 539 587L402 386L613 67Q628 45 647 38T707 31H726V0Q663 3 596 3Q485 3 450 0V31Q480 32 497 41T515 61Q515 62 510 72L352 311L210 101Q200 85 200 77Q200 61 216 47T263
31V0Q227 3 135 3Q132 3 24 0Z" />
<glyph unicode="Y" glyph-name="Y" horiz-adv-x="750" d="M11 652V683Q74 680 141 680Q253 680 289 683V652Q252 652 236 647T219 627Q219 620 226 610L407 315L572 583Q582 598 582 613Q582 630 568 641T525 652V683Q603 680 640 680Q692 680 738 683V652Q649
652 610 587L417 273V80Q417 49 429 40T497 31H520V0Q484 3 374 3T228 0V31H252Q306 31 318 40T331 78V273L121 615Q112 630 105 636T80 647T29 652H11Z" />
<glyph unicode="Z" glyph-name="Z" horiz-adv-x="611" d="M56 17Q56 26 63 37L452 652H295Q235 652 196 639T135 597T106 537T94 458H69L80 683H528Q537 683 540 683T548 681T553 676T554 667Q554 659 547 648L159 34H323Q377 34 415 45T475 75T510 125T527 188T535
267H560L543 0H82Q65 0 61 2T56 17Z" />
<glyph unicode="[" glyph-name="bracketleft" horiz-adv-x="278" d="M104 -250V750H255V727H171V-227H255V-250H104Z" />
<glyph unicode="\" glyph-name="backslash" horiz-adv-x="500" d="M57 736Q57 748 66 748T83 727L437 -218Q442 -233 442 -236Q442 -248 432 -248Q424 -248 415 -225L61 721Q57 731 57 736Z" />
<glyph unicode="]" glyph-name="bracketright" horiz-adv-x="278" d="M21 -227H105V727H21V750H172V-250H21V-227Z" />
<glyph unicode="^" glyph-name="asciicircum" horiz-adv-x="611" d="M117 484L304 628L492 484L477 463L304 575L132 463L117 484Z" />
<glyph unicode="_" glyph-name="underscore" horiz-adv-x="778" d="M84 -233T84 -213T114 -193H662Q692 -193 692 -213T664 -233H113Q84 -233 84 -213Z" />
<glyph unicode="`" glyph-name="grave" horiz-adv-x="500" d="M100 605Q100 618 110 630T135 642Q146 642 159 631T228 566Q262 532 285 510L270 490Q250 500 136 565L130 568Q125 571 123 572T115 578T108 585T103 594T100 605Z" />
<glyph unicode="a" glyph-name="a" horiz-adv-x="500" d="M42 95Q42 180 142 225Q202 254 326 261V298Q326 360 294 393T220 426Q147 426 112 380Q142 379 152 364T163 334Q163 314 151 301T117 288Q97 288 84 300T71 335Q71 384 115 416T222 448Q304 448 359
393Q376 376 384 354T394 318T395 275V75Q395 69 397 60T408 38T432 25Q468 25 468 89V145H493V89Q493 36 465 15T411 -6Q378 -6 357 18T333 76Q318 38 284 14T202 -11Q166 -11 132 -2T70 32T42 95ZM119 96Q119 59 145 35T209 11Q251 11 288 43T326 140V240Q215
236 167 192T119 96Z" />
<glyph unicode="b" glyph-name="b" horiz-adv-x="555" d="M28 652V683L172 694V377Q230 442 309 442Q395 442 458 376T521 216Q521 121 455 55T298 -11Q215 -11 167 62Q132 1 131 0H106V596Q106 633 93 642T28 652ZM175 114Q175 93 189 72Q229 11 294 11Q364 11
407 75Q438 123 438 217Q438 310 409 356Q369 420 304 420Q231 420 186 356Q175 340 175 320V114Z" />
<glyph unicode="c" glyph-name="c" horiz-adv-x="444" d="M34 121T34 216T96 379T251 448Q312 448 358 419T404 341Q404 319 391 307T358 294Q337 294 325 307T312 340Q312 349 315 357T329 375T359 386Q323 423 252 423Q201 423 159 375T117 218Q117 161 131
119T168 56T213 24T258 14Q356 14 389 119Q392 129 402 129Q415 129 415 119Q415 114 411 102T395 69T366 32T318 2T249 -11Q161 -11 98 55Z" />
<glyph unicode="d" glyph-name="d" horiz-adv-x="555" d="M34 215Q34 310 100 376T257 442Q333 442 383 380V596Q383 633 370 642T305 652V683L449 694V87Q449 50 462 41T527 31V0L380 -11V55Q328 -11 246 -11Q160 -11 97 55T34 215ZM117 214Q117 121 146 75Q186
11 251 11Q325 11 369 81Q380 98 380 118V323Q380 343 369 360Q328 420 261 420Q191 420 148 356Q117 308 117 214Z" />
<glyph unicode="e" glyph-name="e" horiz-adv-x="444" d="M28 220Q28 314 88 381T236 448Q324 448 369 391T415 252Q415 237 411 234T390 231H111Q111 129 141 81Q183 14 254 14Q264 14 275 16T311 26T356 58T389 117Q392 131 402 131Q415 131 415 119Q415 110
406 91T378 48T325 7T248 -11Q160 -11 94 55T28 220ZM112 252H349Q349 273 346 296T332 352T297 405T236 426Q220 426 203 419T164 396T129 342T112 252Z" />
<glyph unicode="f" glyph-name="f" horiz-adv-x="305" d="M33 400V431H112V546Q112 620 160 662T267 705Q306 705 331 684T357 635Q357 616 346 604T313 591Q293 591 282 603T270 634Q270 666 300 676Q285 683 267 683Q231 683 203 646T175 547V431H292V400H178V78Q178
49 190 40T254 31H275V0Q235 3 148 3Q136 3 117 3T73 1T34 0V31Q87 31 99 37T112 76V400H33Z" />
<glyph unicode="g" glyph-name="g" horiz-adv-x="500" d="M28 -79Q28 -47 52 -19T120 21Q76 49 76 110Q76 157 107 193Q60 232 60 296Q60 355 107 398T222 442Q282 442 328 406Q376 453 434 453Q460 453 472 437T485 404Q485 389 476 382T456 374Q444 374 436
382T427 403Q427 424 443 430Q440 431 433 431Q384 431 343 392Q384 354 384 295T337 193T222 149Q166 149 123 180Q106 160 106 133Q106 108 121 89T159 66Q166 65 234 65Q274 65 296 64T349 57T406 37Q471 1 471 -77Q471 -134 406 -170T249 -206Q157 -206 93
-170T28 -79ZM80 -79Q80 -120 128 -151T250 -183Q322 -183 370 -152T419 -79Q419 -49 402 -30T350 -4T291 5T221 7H162Q128 5 104 -20T80 -79ZM135 295Q135 172 222 172Q266 172 293 212Q309 239 309 296Q309 419 222 419Q178 419 151 379Q135 352 135 295Z" />
<glyph unicode="h" glyph-name="h" horiz-adv-x="555" d="M32 0V31Q85 31 97 37T110 76V596Q110 633 97 642T32 652V683L176 694V346H177Q193 382 229 412T321 442Q396 442 426 405Q448 380 452 352T457 252V61Q458 40 474 36T535 31V0Q433 3 423 3Q415 3 310
0V31Q363 31 375 37T388 76V309Q388 360 373 390T314 420Q262 420 221 377T179 260V76Q179 44 191 38T257 31V0Q155 3 145 3Q137 3 32 0Z" />
<glyph unicode="i" glyph-name="i" horiz-adv-x="277" d="M33 0V31Q86 31 98 37T111 76V345Q111 382 99 391T37 400V431L177 442V75Q177 45 187 38T247 31V0Q145 3 143 3Q129 3 33 0ZM75 616Q75 636 90 652T128 669T165 654T181 616T166 578T128 563Q105 563 90
579T75 616Z" />
<glyph unicode="j" glyph-name="j" horiz-adv-x="305" d="M104 594T104 616T119 653T157 669T194 654T210 616T195 579T157 563T120 578ZM-40 -125Q-40 -105 -28 -92T6 -79T39 -92T52 -125Q52 -143 42 -154T17 -170Q43 -183 71 -183Q94 -183 109 -170T132 -134T141
-92T144 -52V344Q144 381 130 390T58 400V431L210 442V-50Q210 -117 170 -161T73 -205Q27 -205 -6 -184T-40 -125Z" />
<glyph unicode="k" glyph-name="k" horiz-adv-x="527" d="M28 0V31Q81 31 93 37T106 76V596Q106 633 93 642T28 652V683L172 694V214L313 336Q335 355 335 375Q335 398 306 400V431Q348 428 418 428Q459 428 488 431V400Q425 397 362 346Q348 335 315 306T281
274Q281 273 282 271T285 266T287 263L414 84Q440 48 459 40T511 31V0Q468 3 424 3Q400 3 316 0V31Q352 31 352 54Q352 70 271 182Q265 190 252 207Q240 225 233 234L169 179V76Q169 44 181 38T247 31V0Q187 3 137 3Q127 3 28 0Z" />
<glyph unicode="l" glyph-name="l" horiz-adv-x="277" d="M33 0V31Q86 31 98 37T111 76V596Q111 633 98 642T33 652V683L177 694V76Q177 44 189 38T255 31V0Q243 0 218 1T174 2T144 3Q132 3 33 0Z" />
<glyph unicode="m" glyph-name="m" horiz-adv-x="833" d="M32 0V31Q85 31 97 37T110 76V344Q110 381 97 390T32 400V431L173 442V337Q220 442 321 442Q438 442 454 344Q471 382 507 412T599 442Q674 442 704 405Q726 380 730 352T735 252V61Q736 40 752 36T813
31V0Q711 3 701 3Q693 3 588 0V31Q641 31 653 37T666 76V309Q666 360 651 390T592 420Q540 420 499 377T457 260V76Q457 44 469 38T535 31V0Q433 3 423 3Q415 3 310 0V31Q363 31 375 37T388 76V309Q388 360 373 390T314 420Q262 420 221 377T179 260V76Q179 44
191 38T257 31V0Q155 3 145 3Q137 3 32 0Z" />
<glyph unicode="n" glyph-name="n" horiz-adv-x="555" d="M32 0V31Q85 31 97 37T110 76V344Q110 381 97 390T32 400V431L173 442V337Q220 442 321 442Q396 442 426 405Q448 380 452 352T457 252V61Q458 40 474 36T535 31V0Q433 3 423 3Q415 3 310 0V31Q363 31
375 37T388 76V309Q388 360 373 390T314 420Q262 420 221 377T179 260V76Q179 44 191 38T257 31V0Q155 3 145 3Q137 3 32 0Z" />
<glyph unicode="o" glyph-name="o" horiz-adv-x="500" d="M28 119T28 214T92 378T250 448Q341 448 406 379T471 214Q471 120 406 55T249 -11Q160 -11 94 54ZM111 222Q111 125 136 81Q175 14 250 14Q287 14 318 34T366 88Q388 132 388 222Q388 318 362 361Q323
426 249 426Q217 426 186 409T135 359Q111 315 111 222Z" />
<glyph unicode="p" glyph-name="p" horiz-adv-x="555" d="M28 -163Q81 -163 93 -157T106 -118V350Q106 383 94 391T28 400V431L172 442V376Q232 442 312 442Q397 442 459 376T521 216Q521 121 455 55T298 -11Q248 -11 215 14T175 59V50V-118Q175 -150 187 -156T253
-163V-194Q148 -191 140 -191Q130 -191 28 -194V-163ZM175 114Q175 99 177 94T189 72Q229 11 294 11Q351 11 394 69T438 216Q438 300 399 358T304 417Q265 417 231 396T175 337V114Z" />
<glyph unicode="q" glyph-name="q" horiz-adv-x="527" d="M34 215Q34 311 100 376T255 442Q292 442 322 424T366 388T389 351L427 442H449V-118Q449 -150 461 -156T527 -163V-194Q422 -191 414 -191Q404 -191 302 -194V-163Q355 -163 367 -157T380 -118V61Q325
-11 247 -11Q160 -11 97 55T34 215ZM117 215Q117 129 156 70T251 11Q305 11 343 52Q383 96 383 136V277Q383 324 350 370T261 417Q204 417 161 360T117 215Z" />
<glyph unicode="r" glyph-name="r" horiz-adv-x="391" d="M28 0V31Q81 31 93 37T106 76V344Q106 381 93 390T28 400V431L167 442V332Q181 375 211 408T290 442Q322 442 343 424T364 381Q364 359 351 348T321 337Q303 337 291 348T278 380Q278 392 283 401T293
414T301 419Q299 420 290 420Q235 420 204 365T172 232V78Q172 49 184 40T248 31H269V0Q229 3 142 3Q130 3 111 3T67 1T28 0Z" />
<glyph unicode="s" glyph-name="s" horiz-adv-x="394" d="M33 13V145Q33 156 33 160T37 167T46 170Q53 170 55 167T60 153Q75 84 107 48T199 11Q255 11 283 36T312 102Q312 175 208 194Q148 206 123 214T76 240Q33 275 33 325T71 411T193 448Q249 448 287 420Q298
429 304 436Q317 448 324 448Q332 448 333 443T335 424V323Q335 312 335 308T331 302T322 299Q311 299 310 308Q302 429 193 429Q134 429 108 407T81 353Q81 336 89 323T107 303T137 288T169 279T204 271Q284 256 318 223Q360 181 360 128Q360 69 320 29T199 -11Q134
-11 89 32Q83 26 79 21T73 14T71 11T69 9Q49 -11 44 -11Q36 -11 35 -6T33 13Z" />
<glyph unicode="t" glyph-name="t" horiz-adv-x="388" d="M19 400V422Q65 424 95 456T136 529T148 615H173V431H316V400H173V122Q173 14 240 14Q269 14 288 43T307 126V181H332V124Q332 70 307 30T233 -11Q215 -11 197 -7T156 10T119 51T104 124V400H19Z" />
<glyph unicode="u" glyph-name="u" horiz-adv-x="555" d="M32 400V431L179 442V110Q179 86 181 72T191 42T218 19T267 11Q321 11 354 55T388 166V344Q388 381 375 390T310 400V431L457 442V87Q457 50 470 41T535 31V0L391 -11V79Q349 -11 262 -11Q218 -11 188
0T143 25T120 66T111 109T110 158V308Q110 376 100 388T32 400Z" />
<glyph unicode="v" glyph-name="v" horiz-adv-x="527" d="M19 400V431Q64 428 116 428Q135 428 225 431V400Q168 400 168 374Q168 370 174 357L286 78L388 333Q394 350 394 357Q394 374 383 386T346 400V431Q397 428 433 428Q474 428 508 431V400Q478 400 457
387T430 362T416 333L285 8Q277 -11 264 -11Q255 -11 252 -8T243 8L99 363Q89 388 77 394T19 400Z" />
<glyph unicode="w" glyph-name="w" horiz-adv-x="722" d="M18 400V431Q72 428 111 428Q130 428 220 431V400Q161 400 161 373Q161 367 166 355L261 88L347 330Q329 379 324 385Q312 400 261 400V431Q306 428 350 428Q367 428 454 431V400Q395 400 395 373Q395
369 400 354L499 75L590 331Q595 344 595 352Q595 374 580 386T537 400V431Q594 428 630 428Q670 428 703 431V400Q641 398 619 336L502 8Q491 -10 482 -11Q469 -11 462 8L360 292L259 9Q255 -3 252 -7T239 -11T226 -6T218 11L92 365Q83 388 70 394T18 400Z" />
<glyph unicode="x" glyph-name="x" horiz-adv-x="527" d="M12 0V31Q90 31 140 91Q140 91 234 210L135 339Q100 384 85 392T17 400V431Q58 428 112 428Q142 428 220 431V400Q185 398 185 375Q185 367 194 357L272 256L334 334Q349 352 349 369Q349 397 320 400V431Q359
428 416 428Q459 428 498 431V400Q422 398 379 348Q360 327 287 235L421 62Q437 41 455 36T516 31V0Q471 3 420 3Q402 3 312 0V31Q330 32 339 40T348 56Q348 60 327 89L251 189Q175 99 165 78Q161 69 161 62Q161 35 190 31V0Q118 3 95 3Q51 3 12 0Z" />
<glyph unicode="y" glyph-name="y" horiz-adv-x="527" d="M19 -124Q19 -103 31 -92T61 -81Q79 -81 91 -92T103 -123Q103 -160 64 -165Q83 -183 111 -183Q141 -183 165 -161T199 -118T225 -59Q239 -29 250 0L100 365Q90 389 75 394T19 400V431Q64 428 116 428Q147
428 225 431V400Q169 400 169 374Q169 371 175 356L286 87L387 333Q393 347 393 357Q393 398 346 400V431Q412 428 433 428Q474 428 508 431V400Q441 400 415 336L239 -91Q191 -205 111 -205Q73 -205 46 -182T19 -124Z" />
<glyph unicode="z" glyph-name="z" horiz-adv-x="444" d="M28 14Q28 21 37 32L316 409H202Q123 409 98 380T67 270H42L53 431H373Q384 431 388 431T396 427T399 418T390 401L112 25H230Q313 25 341 59T376 187H401L384 0H54Q38 0 33 2T28 14Z" />
<glyph unicode="{" glyph-name="braceleft" horiz-adv-x="500" d="M73 246T73 250T74 256T79 260T86 261T97 263T111 265Q147 272 176 296T212 357Q214 367 214 386V604Q214 656 239 686Q266 719 314 734T407 750Q425 750 425 739Q425 734 422 732T414 728T402
726T386 724T369 720Q284 692 284 610V385Q284 280 165 250Q284 220 284 121V-101Q284 -125 286 -137Q293 -171 324 -196T401 -226Q425 -229 425 -239Q425 -250 408 -250Q337 -250 280 -220T215 -131Q214 -121 214 -102V117Q214 150 201 175T167 212T132 229T105
237Q102 237 97 237T88 238T81 240T75 243Z" />
<glyph unicode="|" glyph-name="bar" horiz-adv-x="278" d="M118 -219V712Q118 749 138 749T158 719V-212Q158 -249 138 -249T118 -219Z" />
<glyph unicode="}" glyph-name="braceright" horiz-adv-x="500" d="M73 -239Q73 -232 79 -230T101 -226T129 -220Q214 -192 214 -110V115Q214 220 333 250Q214 280 214 378V601Q214 625 212 637Q205 671 174 696T97 726Q96 726 92 726T85 727T80 729T75 732T73
738Q73 750 90 750Q161 750 218 720T283 631Q284 621 284 602V383Q284 350 297 325T330 288T365 271T393 263Q396 263 401 263T410 261T417 259T423 256T425 250Q425 246 424 244T418 240T410 239T399 237T386 235Q350 228 321 204T286 143Q284 133 284 114V-104Q284
-124 283 -136T270 -169T236 -208Q179 -250 91 -250Q73 -250 73 -239Z" />
<glyph unicode="~" glyph-name="asciitilde" horiz-adv-x="611" d="M83 588Q85 590 96 603T111 620T125 634T143 648T161 658T183 666T208 668Q243 668 310 644T412 620Q444 620 465 632T510 668L527 653Q526 651 516 640T504 625T491 613T477 600T462 590T444
581T425 577T402 574Q367 574 300 597T198 621Q166 621 145 610T100 574L83 588Z" />
</font>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 36 KiB

BIN
app/assets/fonts/cmunrm.ttf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,537 @@
<!DOCTYPE html>
<html>
<head>
<title>Flaticon WebFont</title>
<link rel="stylesheet" type="text/css" href="flaticon.css">
<meta charset="UTF-8">
<style>
body {
font-family: sans-serif;
line-height: 1.5;
font-size: 16px;
padding: 20px;
color:#333;
}
* {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
margin: 0;
padding: 0;
}
[class^="flaticon-"]:before, [class*=" flaticon-"]:before, [class^="flaticon-"]:after, [class*=" flaticon-"]:after {
font-family: Flaticon;
font-size: 30px;
font-style: normal;
margin-left: 20px;
color: #333;
}
.image p {
font-size: 12px;
margin: 0px;
clear: none;
width: 300px;
line-height: 40px;
}
.text {
float: left;
font-size:14px;
margin-top: 15px;
}
.text ul {
margin-left:0px;
color:#111;
margin-bottom:20px;
}
.text .ex {
font-size:12px;
color:#666;
margin-left:35px;
display:block;
}
.text ul li {
margin-top:10px;
list-style:none;
}
.num {
background:#66A523;
color:#fff;
border-radius:20px;
padding:1px;
display:inline-block;
width:22px;
height:22px;
text-align:center;
margin-right: 5px;
}
.text ul strong {
font-weight:normal;
color:#000;
}
.image {
width: 280px;
float: left;
margin-bottom: 15px;
margin-right: 30px;
}
#glyphs {
clear: both;
}
.image p:nth-child(even) i {
clear: none;
}
.glyph {
display: inline-block;
width: 120px;
margin: 10px;
text-align: center;
vertical-align: top;
background: #FFF;
}
.glyph .glyph-icon {
padding: 10px;
display: block;
font-family:"Flaticon";
font-size: 64px;
line-height: 1;
}
.glyph .glyph-icon:before {
font-size: 64px;
color: #666;
margin-left: 0;
}
.class-name {
font-size: 12px;
}
.author-name {
font-size: 10px;
}
a{
color: #66A523;
}
.instructions {
font-style:italic;
font-size:22px;
margin-bottom:10px;
}
.iconsuse {
font-size:22px;
font-style:italic;
padding-top:20px;
margin-top:20px;
border-top:1px solid #bbb;
}
.usetitle {
margin-bottom: 10px;
font-size: 20px;
font-style: italic;
}
.class-name:last-child {
font-size: 10px;
color:#888;
}
.class-name:last-child a {
font-size: 10px;
color:#555;
}
.class-name:last-child a:hover {
color:#66A523;
}
.glyph > input {
display: block;
width: 100px;
margin: 5px auto;
text-align: center;
font-size: 12px;
cursor: text;
}
.glyph > input.icon-input {
font-family:"Flaticon";
font-size: 16px;
margin-bottom: 10px;
}
h1.logo {
font-size: 40px;
letter-spacing: -1px;
margin-top: -16px;
text-transform: lowercase;
border-bottom:1px solid #bbb;
}
h1.logo strong {
font-size: 16px;
font-family:sans-serif;
font-weight:normal;
color:#333;
}
h1.logo a {
color:#34302d;
text-decoration: none;
}
h1.logo a span {
color:#66A523;
}
#footer {
padding-top:40px;
clear:both;
text-align:center;
}
#footer a {
color:#66A523;
}
textarea {
margin: 0px;
width: 800px;
height: 150px;
border: 1px solid #CCC;
resize: none;
background: #EEE;
}
.author-link, .attrDiv a{
font-size: 12px;
color: #333;
text-decoration: none;
}
.external {
display: block;
}
.attrDiv {
font-size: 12px;
}
.attribution {
border-top: 1px solid #AAA;
margin: 10px 0;
padding-top: 15px;
}
</style>
</head>
<body>
<header>
<h1 class="logo">
<a href="http://www.flaticon.com">
<span>FLAT</span>ICON</a>
<strong>Font Demo</strong>
</h1>
</header>
<section class="demo">
<div class="text">
<div class="instructions">Instructions:</div>
<ul>
<li>
<p>
<span class="num">1</span>Copy the "Fonts" files and CSS files to your website CSS folder.
</li>
<li>
<p>
<span class="num">2</span>Add the CSS link to your website source code on header.
<br />
<span class="ex">&lt;head&gt;
<br/>...
<br/>&lt;link rel="stylesheet" type="text/css" href="your_website_domain/css_root/flaticon.css"&gt;
<br/>...
<br/>&lt;/head&gt;</span>
</li>
<li>
<p>
<span class="num">3</span>Use the icon class on "display:inline" elements:
<br />
<span class="ex">Use example: &lt;i class=&quot;flaticon-airplane49&quot;&gt;&lt;/i&gt; or &lt;span class=&quot;flaticon-airplane49&quot;&gt;&lt;/span&gt;</span>
</li>
</ul>
</div>
</section>
<section id="glyphs"><div class="glyph">
<div class="glyph-icon flaticon-accident3"></div>
<div class="class-name">.flaticon-accident3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/man-with-arm-injury_18026">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-alphabet3"></div>
<div class="class-name">.flaticon-alphabet3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/alphabet-letters-a-b-and-c_27482">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-angel"></div>
<div class="class-name">.flaticon-angel</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/angel-face_75956">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-angry"></div>
<div class="class-name">.flaticon-angry</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/discontent-boy-face_75489">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-angry2"></div>
<div class="class-name">.flaticon-angry2</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/shouting-boy_75490">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-angry23"></div>
<div class="class-name">.flaticon-angry23</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/angry-emoticon-face-with-opened-mouth-in-rounded-square-outline_42818">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-angry40"></div>
<div class="class-name">.flaticon-angry40</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/anger-face_75495">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-angry41"></div>
<div class="class-name">.flaticon-angry41</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-anger-face_75595">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-animal203"></div>
<div class="class-name">.flaticon-animal203</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/fish-with-four-bubbles_85113">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-annulled3"></div>
<div class="class-name">.flaticon-annulled3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/annulled-emoticon-square-face_42874">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-bandaid"></div>
<div class="class-name">.flaticon-bandaid</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/band-aid-forming-a-cross-mark_26590">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-battery88"></div>
<div class="class-name">.flaticon-battery88</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/battery-charging-with-solar-panel_34518">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-book97"></div>
<div class="class-name">.flaticon-book97</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/book-with-bookmark_27478">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-boy11"></div>
<div class="class-name">.flaticon-boy11</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-raising-hand-for-question_27472">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-boy12"></div>
<div class="class-name">.flaticon-boy12</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-reading-a-book_27474">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-business57"></div>
<div class="class-name">.flaticon-business57</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/business-man_33563">SimpleIcon</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-camouflage"></div>
<div class="class-name">.flaticon-camouflage</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-concealing-face_75457">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-car65"></div>
<div class="class-name">.flaticon-car65</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/car-in-black-side-view_26352">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-certificate7"></div>
<div class="class-name">.flaticon-certificate7</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/certificate-award_27477">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-checklist4"></div>
<div class="class-name">.flaticon-checklist4</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/checklist-on-a-paper-with-a-pencil_48746">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-circuit4"></div>
<div class="class-name">.flaticon-circuit4</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/circuit-print-for-electronic-products_34643">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-confused4"></div>
<div class="class-name">.flaticon-confused4</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/confusion-boy-face_75505">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-cpu"></div>
<div class="class-name">.flaticon-cpu</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/cpu_31005">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-cpu1"></div>
<div class="class-name">.flaticon-cpu1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/cpu_31046">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-cry1"></div>
<div class="class-name">.flaticon-cry1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/weeping-face_75409">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-cry2"></div>
<div class="class-name">.flaticon-cry2</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-face-weep_75533">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-crying7"></div>
<div class="class-name">.flaticon-crying7</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/crying-emoticon-rounded-square-face_42888">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-customerservice10"></div>
<div class="class-name">.flaticon-customerservice10</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/_"></a></div></div><div class="glyph">
<div class="glyph-icon flaticon-doubt3"></div>
<div class="class-name">.flaticon-doubt3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/doubt-on-emoticon-square-face_42908">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-doubts1"></div>
<div class="class-name">.flaticon-doubts1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/doubt-face-with-glasses_75535">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-drinks48"></div>
<div class="class-name">.flaticon-drinks48</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/cocktail-coconut_85120">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-education6"></div>
<div class="class-name">.flaticon-education6</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/education-diploma_27485">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-election3"></div>
<div class="class-name">.flaticon-election3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/election-envelopes-and-box_48761">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-electronic51"></div>
<div class="class-name">.flaticon-electronic51</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/electronic-printed-circuit-with-lines-and-circles_34740">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-emoticon101"></div>
<div class="class-name">.flaticon-emoticon101</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/emoticon-in-love-face-with-heart-shaped-eyes-in-square-outline_42899">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-emoticon82"></div>
<div class="class-name">.flaticon-emoticon82</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/emoticon-square-smile_42815">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-emoticon83"></div>
<div class="class-name">.flaticon-emoticon83</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/emoticon-square-face-with-curved-mouth-expression_42819">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-emoticon98"></div>
<div class="class-name">.flaticon-emoticon98</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/emoticon-square-face-with-closed-eyes-and-mouth-of-straight-lines_42890">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-emoticons11"></div>
<div class="class-name">.flaticon-emoticons11</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/emoticons-square-face-with-sunglasses_42845">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-family4"></div>
<div class="class-name">.flaticon-family4</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/family-of-three_27506">OCHA</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-fear3"></div>
<div class="class-name">.flaticon-fear3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/afraid-boy-face_75487">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-first21"></div>
<div class="class-name">.flaticon-first21</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/first-aid-case_33485">SimpleIcon</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-fright"></div>
<div class="class-name">.flaticon-fright</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-face-with-fear_75531">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-furious3"></div>
<div class="class-name">.flaticon-furious3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/furious-emoticon-square-face_42872">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-graduate2"></div>
<div class="class-name">.flaticon-graduate2</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/graduate-boy-reading-a-book_27473">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-group58"></div>
<div class="class-name">.flaticon-group58</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/group-of-three-men-standing-side-by-side-hugging-each-other_47352">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-handshake3"></div>
<div class="class-name">.flaticon-handshake3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/employment-deal_69165">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-hatchback"></div>
<div class="class-name">.flaticon-hatchback</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/hatchback-car-silhouette_26561">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-help9"></div>
<div class="class-name">.flaticon-help9</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/customer-service_78935">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-house77"></div>
<div class="class-name">.flaticon-house77</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/house-with-solar-panel-installed_34550">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-illness1"></div>
<div class="class-name">.flaticon-illness1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/nausea-boy-face_75421">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-inadequacy"></div>
<div class="class-name">.flaticon-inadequacy</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/inadequacy_75396">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-incompetence"></div>
<div class="class-name">.flaticon-incompetence</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-inadequacy-face_75559">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-indifferent"></div>
<div class="class-name">.flaticon-indifferent</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/indifference-face_75404">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-kiss3"></div>
<div class="class-name">.flaticon-kiss3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-kissing_75399">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-laughing7"></div>
<div class="class-name">.flaticon-laughing7</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/laughter-boy-face_75534">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-laughing8"></div>
<div class="class-name">.flaticon-laughing8</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/laughter-face_75970">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-lifesaver28"></div>
<div class="class-name">.flaticon-lifesaver28</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/life-vest_85132">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-lively"></div>
<div class="class-name">.flaticon-lively</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/friskiness-boy-face_75532">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-love2"></div>
<div class="class-name">.flaticon-love2</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-love-face_75451">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-mad1"></div>
<div class="class-name">.flaticon-mad1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/offense-face_75965">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-man282"></div>
<div class="class-name">.flaticon-man282</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/man-talking-by-speaker_46770">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-manager3"></div>
<div class="class-name">.flaticon-manager3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/management-group_71041">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-medical43"></div>
<div class="class-name">.flaticon-medical43</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/medical-date-reminder-calendar-daily-page-interface-symbol-with-first-aid-cross_42954">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-mobile26"></div>
<div class="class-name">.flaticon-mobile26</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/mobile-tool_23621">Icomoon</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-moustaches1"></div>
<div class="class-name">.flaticon-moustaches1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-moustache-and-up-eyebrow_75456">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-mute24"></div>
<div class="class-name">.flaticon-mute24</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/mute-emoticon-square-face_42868">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-mute3"></div>
<div class="class-name">.flaticon-mute3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/silence-face_75408">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-navigation28"></div>
<div class="class-name">.flaticon-navigation28</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/radar-working_85141">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-nerd6"></div>
<div class="class-name">.flaticon-nerd6</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/nerd-happy-smiling-face-in-rounded-square-face_42863">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-nervous"></div>
<div class="class-name">.flaticon-nervous</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/nerve-boy-face_75483">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-owl9"></div>
<div class="class-name">.flaticon-owl9</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/owl-wearing-graduation-hat_27471">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-palmtrees1"></div>
<div class="class-name">.flaticon-palmtrees1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/_"></a></div></div><div class="glyph">
<div class="glyph-icon flaticon-panic1"></div>
<div class="class-name">.flaticon-panic1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/fright-boy-face_75442">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-pencil32"></div>
<div class="class-name">.flaticon-pencil32</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/pencil-and-paintbrush_27476">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-pirate5"></div>
<div class="class-name">.flaticon-pirate5</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/pirate-emoticon-face-with-one-covered-eye-in-square-outline_42905">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-plus13"></div>
<div class="class-name">.flaticon-plus13</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/mathematic-symbol_5156">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-protection24"></div>
<div class="class-name">.flaticon-protection24</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/big-sunglasses_85149">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-robot30"></div>
<div class="class-name">.flaticon-robot30</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/robot-design_48717">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-robotic2"></div>
<div class="class-name">.flaticon-robotic2</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/robotic-arm-ios-7-interface-symbol_22464">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-rough"></div>
<div class="class-name">.flaticon-rough</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/abrupt-boy-face_75448">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sad34"></div>
<div class="class-name">.flaticon-sad34</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sad-suffering-crying-emoticon-face_42811">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sad35"></div>
<div class="class-name">.flaticon-sad35</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sad-sleepy-emoticon-face-square_42812">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sad37"></div>
<div class="class-name">.flaticon-sad37</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sad-emoticon-square-face_42833">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sad38"></div>
<div class="class-name">.flaticon-sad38</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sad-rounded-square-emoticon_42849">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sad39"></div>
<div class="class-name">.flaticon-sad39</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sad-face-in-rounded-square_42901">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sad74"></div>
<div class="class-name">.flaticon-sad74</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sadness-boy-face_75441">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sad75"></div>
<div class="class-name">.flaticon-sad75</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-sadness-face_75493">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sad77"></div>
<div class="class-name">.flaticon-sad77</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sorrow-face_75968">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-scary"></div>
<div class="class-name">.flaticon-scary</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/fear-face_75536">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-serious3"></div>
<div class="class-name">.flaticon-serious3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/seriousness-boy-face_75500">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-severe"></div>
<div class="class-name">.flaticon-severe</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/serious-boy-face_75443">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-silhouette121"></div>
<div class="class-name">.flaticon-silhouette121</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/black-user-shape_16612">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-singing4"></div>
<div class="class-name">.flaticon-singing4</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/singing-emoticon-square-face_42869">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sleep1"></div>
<div class="class-name">.flaticon-sleep1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-sleeping-face_75562">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sleepness"></div>
<div class="class-name">.flaticon-sleepness</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-fatigue-face_75597">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sleepy6"></div>
<div class="class-name">.flaticon-sleepy6</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sleepy-emoticon-square-face_42820">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-smile31"></div>
<div class="class-name">.flaticon-smile31</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-smiling_75418">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-smile32"></div>
<div class="class-name">.flaticon-smile32</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/very-happy-boy-face_75482">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-smile33"></div>
<div class="class-name">.flaticon-smile33</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-smiling-face_75558">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-smiley41"></div>
<div class="class-name">.flaticon-smiley41</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/smiley-of-square-face-shape_42865">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-smiley42"></div>
<div class="class-name">.flaticon-smiley42</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/smiley-square-face_42878">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-smiling35"></div>
<div class="class-name">.flaticon-smiling35</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/smiling-happy-emoticon-square-face-with-eyes-like-stars_42871">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-smiling36"></div>
<div class="class-name">.flaticon-smiling36</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/smiling-emoticon-square-face_42877">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-solar12"></div>
<div class="class-name">.flaticon-solar12</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/solar-powered-house-building-with-solar-panels-on-the-roof_34541">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-spring13"></div>
<div class="class-name">.flaticon-spring13</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/spring-square-notepad_27481">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-square103"></div>
<div class="class-name">.flaticon-square103</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/square-emoticon-angry-face_42875">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-stars53"></div>
<div class="class-name">.flaticon-stars53</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/win-face_75957">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-student12"></div>
<div class="class-name">.flaticon-student12</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/student-smiling-emoticon-square-face_42886">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-study7"></div>
<div class="class-name">.flaticon-study7</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/nerd-boy-face_75486">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-stupor"></div>
<div class="class-name">.flaticon-stupor</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/stupor-boy-face_75492">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-surprise5"></div>
<div class="class-name">.flaticon-surprise5</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-shock-face_75594">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-surprised"></div>
<div class="class-name">.flaticon-surprised</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/surprise-face_75967">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-surprised19"></div>
<div class="class-name">.flaticon-surprised19</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/surprised-emoticon-square-face-with-open-eyes-and-mouth_42835">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-surprised21"></div>
<div class="class-name">.flaticon-surprised21</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/surprised-square-face-with-eyes-and-mouth-opened_42893">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-surveillance1"></div>
<div class="class-name">.flaticon-surveillance1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/surveillance-camera_32029">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-suspicions"></div>
<div class="class-name">.flaticon-suspicions</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-suspicious-face_75599">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sweat1"></div>
<div class="class-name">.flaticon-sweat1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/shock-face-with-drop_75596">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sweating3"></div>
<div class="class-name">.flaticon-sweating3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sweating-emoticon-square-face_42894">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-tears"></div>
<div class="class-name">.flaticon-tears</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-face-with-tear_75530">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-telephone45"></div>
<div class="class-name">.flaticon-telephone45</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/old-telephone-ringing_15914">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-think7"></div>
<div class="class-name">.flaticon-think7</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/man-thinking_76818">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-timidity"></div>
<div class="class-name">.flaticon-timidity</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/humility-face_75966">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-tongue1"></div>
<div class="class-name">.flaticon-tongue1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/inadequacy-boy-face_75450">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-tongue2"></div>
<div class="class-name">.flaticon-tongue2</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/unconcious-boy-face_75496">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-two128"></div>
<div class="class-name">.flaticon-two128</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/two-books-with-apple-on-top_27480">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-two210"></div>
<div class="class-name">.flaticon-two210</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/two-persons-talking-sharing-sitting-on-a-table_47024">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-users53"></div>
<div class="class-name">.flaticon-users53</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/user-with-tie_74229">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-very7"></div>
<div class="class-name">.flaticon-very7</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/very-angry-emoticon-square-face_42898">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-wink"></div>
<div class="class-name">.flaticon-wink</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-winking_75598">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-wink9"></div>
<div class="class-name">.flaticon-wink9</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/wink-face-square_42830">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-winking9"></div>
<div class="class-name">.flaticon-winking9</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/winking-emoticon-smiling-face-with-tongue-out-of-the-mouth-in-square-rounded-outline-shape_42861">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-winners1"></div>
<div class="class-name">.flaticon-winners1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/winners-ribbon_27475">Freepik</a></div></div></section>
<section class="attribution">
<div class="usetitle">License and attribution:</div><div class="attrDiv">Font generated by <a href="http://www.flaticon.com">flaticon.com</a>
under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY</a>. The authors are: <a href="http://www.freepik.com">Freepik</a>, <a href="http://www.simpleicon.com">SimpleIcon</a>, <a href="http://"></a>, <a href="http://www.unocha.org">OCHA</a>, <a href="http://www.icomoon.io">Icomoon</a>.</div><div class="usetitle">Copy the Attribution License:</div>
<textarea onclick="this.focus();this.select();">Font generated by &lt;a href=&quot;http://www.flaticon.com&quot;&gt;flaticon.com&lt;/a&gt;
under &lt;a href=&quot;http://creativecommons.org/licenses/by/3.0/&quot;&gt;CC BY&lt;/a&gt;. The authors are: &lt;a href=&quot;http://www.freepik.com&quot;&gt;Freepik&lt;/a&gt;, &lt;a href=&quot;http://www.simpleicon.com&quot;&gt;SimpleIcon&lt;/a&gt;, &lt;a href=&quot;http://&quot;&gt;&lt;/a&gt;, &lt;a href=&quot;http://www.unocha.org&quot;&gt;OCHA&lt;/a&gt;, &lt;a href=&quot;http://www.icomoon.io&quot;&gt;Icomoon&lt;/a&gt;.</textarea>
</section>
<section class="iconsuse">
<div class="usetitle">Examples:</div>
<div class="image"><p>&lt;i class=&quot;flaticon-accident3&quot;&gt;&lt;/i&gt; <i class="flaticon-accident3"></i></p><p>&lt;i class=&quot;flaticon-alphabet3&quot;&gt;&lt;/i&gt; <i class="flaticon-alphabet3"></i></p><p>&lt;i class=&quot;flaticon-angel&quot;&gt;&lt;/i&gt; <i class="flaticon-angel"></i></p><p>&lt;i class=&quot;flaticon-angry&quot;&gt;&lt;/i&gt; <i class="flaticon-angry"></i></p><p>&lt;i class=&quot;flaticon-angry2&quot;&gt;&lt;/i&gt; <i class="flaticon-angry2"></i></p></div><div class="image"><p>&lt;span class=&quot;flaticon-angry23&quot;&gt;&lt;/span&gt; <span class="flaticon-angry23"></span></p><p>&lt;span class=&quot;flaticon-angry40&quot;&gt;&lt;/span&gt; <span class="flaticon-angry40"></span></p><p>&lt;span class=&quot;flaticon-angry41&quot;&gt;&lt;/span&gt; <span class="flaticon-angry41"></span></p><p>&lt;span class=&quot;flaticon-animal203&quot;&gt;&lt;/span&gt; <span class="flaticon-animal203"></span></p><p>&lt;span class=&quot;flaticon-annulled3&quot;&gt;&lt;/span&gt; <span class="flaticon-annulled3"></span></p></div><div class="image"><p>&lt;span class=&quot;flaticon-bandaid&quot;&gt;&lt;/span&gt; <span class="flaticon-bandaid"></span></p><p>&lt;i class=&quot;flaticon-battery88&quot;&gt;&lt;/i&gt; <i class="flaticon-battery88"></i></p><p>&lt;i class=&quot;flaticon-book97&quot;&gt;&lt;/i&gt; <i class="flaticon-book97"></i></p><p>&lt;i class=&quot;flaticon-boy11&quot;&gt;&lt;/i&gt; <i class="flaticon-boy11"></i></p><p>&lt;i class=&quot;flaticon-boy12&quot;&gt;&lt;/i&gt; <i class="flaticon-boy12"></i></p></div><div class="image"><p>&lt;span class=&quot;flaticon-business57&quot;&gt;&lt;/span&gt; <span class="flaticon-business57"></span></p><p>&lt;span class=&quot;flaticon-camouflage&quot;&gt;&lt;/span&gt; <span class="flaticon-camouflage"></span></p><p>&lt;span class=&quot;flaticon-car65&quot;&gt;&lt;/span&gt; <span class="flaticon-car65"></span></p><p>&lt;span class=&quot;flaticon-certificate7&quot;&gt;&lt;/span&gt; <span class="flaticon-certificate7"></span></p><p>&lt;span class=&quot;flaticon-checklist4&quot;&gt;&lt;/span&gt; <span class="flaticon-checklist4"></span></p></div><div class="image"></div>
</section>
<div id="footer">
<div>Generated by <a href="http://www.flaticon.com">flaticon.com</a>
</div>
</div>
</body>
</html>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Binary file not shown.

View File

@@ -12,28 +12,31 @@
//
//= require jquery
//= require jquery_ujs
//= require jquery.ui.all
//= require jquery-ui/core
// require jquery.ui.draggable
// require jquery.ui.sortable
// require jquery.ui.gallery
// require jquery.sortable
// require jquery-ui
//= require_tree .
//= require tinymce-jquery
//= require bootstrap
//= require bootstrap/colorpicker
//= require bootstrap/datepicker
//= require bootstrap/load-image.min
//= require bootstrap/image-gallery.min
//= require jquery-fileupload
// require jquery.remotipart
//= require jquery.datetimepicker
//= require_tree .
function insertAttachment(url,name) {
var ext = url.split('.').pop().toLowerCase();
var img_ext = [ "jpg", "png", "bmp" , "jpeg" ];
if ( img_ext.indexOf(ext) > -1) {
tinymce.activeEditor.setContent(tinymce.activeEditor.getContent({format : 'raw'}) + "<img src=\"" + url + "\" title=\"" + name + "\">");
tinymce.activeEditor.execCommand('mceInsertContent', false, "<img src=\"" + url + "\" title=\"" + name + "\">");
}
else {
tinymce.activeEditor.setContent(tinymce.activeEditor.getContent({format : 'raw'}) + "<a href=\"" + url + "\">" + name +"</a>");
tinymce.activeEditor.execCommand('mceInsertContent', false, "<a href=\"" + url + "\">" + name +"</a>");
}
}
function insertIcon_ffi1(name) {
tinymce.activeEditor.execCommand('mceInsertContent',false,'<span class="'+name+'">&nbsp;</span>&nbsp;')
}

View File

@@ -0,0 +1,12 @@
/**
* @preserve
* Project: Bootstrap Hover Dropdown
* Author: Cameron Spear
* Version: v2.0.11
* Contributors: Mattia Larentis
* Dependencies: Bootstrap's Dropdown plugin, jQuery
* Description: A simple plugin to enable Bootstrap dropdowns to active on hover and provide a nice user experience.
* License: MIT
* Homepage: http://cameronspear.com/blog/bootstrap-dropdown-on-hover-plugin/
*/
!function($,n,e){var o=$();$.fn.dropdownHover=function(e){return"ontouchstart"in document?this:(o=o.add(this.parent()),this.each(function(){function t(e){o.find(":focus").blur(),h.instantlyCloseOthers===!0&&o.removeClass("open"),n.clearTimeout(c),i.addClass("open"),r.trigger(a)}var r=$(this),i=r.parent(),d={delay:500,instantlyCloseOthers:!0},s={delay:$(this).data("delay"),instantlyCloseOthers:$(this).data("close-others")},a="show.bs.dropdown",u="hide.bs.dropdown",h=$.extend(!0,{},d,e,s),c;i.hover(function(n){return i.hasClass("open")||r.is(n.target)?void t(n):!0},function(){c=n.setTimeout(function(){i.removeClass("open"),r.trigger(u)},h.delay)}),r.hover(function(n){return i.hasClass("open")||i.is(n.target)?void t(n):!0}),i.find(".dropdown-submenu").each(function(){var e=$(this),o;e.hover(function(){n.clearTimeout(o),e.children(".dropdown-menu").show(),e.siblings().children(".dropdown-menu").hide()},function(){var t=e.children(".dropdown-menu");o=n.setTimeout(function(){t.hide()},h.delay)})})}))},$(document).ready(function(){$('[data-hover="dropdown"]').dropdownHover()})}(jQuery,this);

View File

@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View File

@@ -0,0 +1,402 @@
/*
Highcharts JS v4.1.7 (2015-06-26)
(c) 2009-2014 Torstein Honsi
License: www.highcharts.com/license
*/
(function(){function z(){var a,b=arguments,c,d={},e=function(a,b){var c,d;typeof a!=="object"&&(a={});for(d in b)b.hasOwnProperty(d)&&(c=b[d],a[d]=c&&typeof c==="object"&&Object.prototype.toString.call(c)!=="[object Array]"&&d!=="renderTo"&&typeof c.nodeType!=="number"?e(a[d]||{},c):b[d]);return a};b[0]===!0&&(d=b[1],b=Array.prototype.slice.call(b,2));c=b.length;for(a=0;a<c;a++)d=e(d,b[a]);return d}function D(a,b){return parseInt(a,b||10)}function Da(a){return typeof a==="string"}function da(a){return a&&
typeof a==="object"}function Ha(a){return Object.prototype.toString.call(a)==="[object Array]"}function ra(a){return typeof a==="number"}function Ea(a){return W.log(a)/W.LN10}function ia(a){return W.pow(10,a)}function ja(a,b){for(var c=a.length;c--;)if(a[c]===b){a.splice(c,1);break}}function q(a){return a!==y&&a!==null}function J(a,b,c){var d,e;if(Da(b))q(c)?a.setAttribute(b,c):a&&a.getAttribute&&(e=a.getAttribute(b));else if(q(b)&&da(b))for(d in b)a.setAttribute(d,b[d]);return e}function sa(a){return Ha(a)?
a:[a]}function L(a,b){if(ya&&!ca&&b&&b.opacity!==y)b.filter="alpha(opacity="+b.opacity*100+")";x(a.style,b)}function $(a,b,c,d,e){a=B.createElement(a);b&&x(a,b);e&&L(a,{padding:0,border:P,margin:0});c&&L(a,c);d&&d.appendChild(a);return a}function ka(a,b){var c=function(){return y};c.prototype=new a;x(c.prototype,b);return c}function Ia(a,b){return Array((b||2)+1-String(a).length).join(0)+a}function Wa(a){return(eb&&eb(a)||ob||0)*6E4}function Ja(a,b){for(var c="{",d=!1,e,f,g,h,i,j=[];(c=a.indexOf(c))!==
-1;){e=a.slice(0,c);if(d){f=e.split(":");g=f.shift().split(".");i=g.length;e=b;for(h=0;h<i;h++)e=e[g[h]];if(f.length)f=f.join(":"),g=/\.([0-9])/,h=T.lang,i=void 0,/f$/.test(f)?(i=(i=f.match(g))?i[1]:-1,e!==null&&(e=A.numberFormat(e,i,h.decimalPoint,f.indexOf(",")>-1?h.thousandsSep:""))):e=Oa(f,e)}j.push(e);a=a.slice(c+1);c=(d=!d)?"}":"{"}j.push(a);return j.join("")}function pb(a){return W.pow(10,V(W.log(a)/W.LN10))}function qb(a,b,c,d,e){var f,g=a,c=p(c,1);f=a/c;b||(b=[1,2,2.5,5,10],d===!1&&(c===
1?b=[1,2,5,10]:c<=0.1&&(b=[1/c])));for(d=0;d<b.length;d++)if(g=b[d],e&&g*c>=a||!e&&f<=(b[d]+(b[d+1]||b[d]))/2)break;g*=c;return g}function rb(a,b){var c=a.length,d,e;for(e=0;e<c;e++)a[e].ss_i=e;a.sort(function(a,c){d=b(a,c);return d===0?a.ss_i-c.ss_i:d});for(e=0;e<c;e++)delete a[e].ss_i}function Pa(a){for(var b=a.length,c=a[0];b--;)a[b]<c&&(c=a[b]);return c}function Fa(a){for(var b=a.length,c=a[0];b--;)a[b]>c&&(c=a[b]);return c}function Qa(a,b){for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destroy(),
delete a[c]}function Ra(a){fb||(fb=$(Ka));a&&fb.appendChild(a);fb.innerHTML=""}function la(a,b){var c="Highcharts error #"+a+": www.highcharts.com/errors/"+a;if(b)throw c;K.console&&console.log(c)}function ea(a){return parseFloat(a.toPrecision(14))}function Sa(a,b){za=p(a,b.animation)}function Db(){var a=T.global,b=a.useUTC,c=b?"getUTC":"get",d=b?"setUTC":"set";Aa=a.Date||window.Date;ob=b&&a.timezoneOffset;eb=b&&a.getTimezoneOffset;gb=function(a,c,d,h,i,j){var k;b?(k=Aa.UTC.apply(0,arguments),k+=
Wa(k)):k=(new Aa(a,c,p(d,1),p(h,0),p(i,0),p(j,0))).getTime();return k};sb=c+"Minutes";tb=c+"Hours";ub=c+"Day";Xa=c+"Date";Ya=c+"Month";Za=c+"FullYear";Eb=d+"Milliseconds";Fb=d+"Seconds";Gb=d+"Minutes";Hb=d+"Hours";vb=d+"Date";wb=d+"Month";xb=d+"FullYear"}function Q(){}function Ta(a,b,c,d){this.axis=a;this.pos=b;this.type=c||"";this.isNew=!0;!c&&!d&&this.addLabel()}function Ib(a,b,c,d,e){var f=a.chart.inverted;this.axis=a;this.isNegative=c;this.options=b;this.x=d;this.total=null;this.points={};this.stack=
e;this.alignOptions={align:b.align||(f?c?"left":"right":"center"),verticalAlign:b.verticalAlign||(f?"middle":c?"bottom":"top"),y:p(b.y,f?4:c?14:-6),x:p(b.x,f?c?-6:6:0)};this.textAlign=b.textAlign||(f?c?"right":"left":"center")}var y,B=document,K=window,W=Math,r=W.round,V=W.floor,ta=W.ceil,u=W.max,C=W.min,O=W.abs,X=W.cos,aa=W.sin,ma=W.PI,ha=ma*2/360,Ba=navigator.userAgent,Jb=K.opera,ya=/(msie|trident)/i.test(Ba)&&!Jb,hb=B.documentMode===8,ib=/AppleWebKit/.test(Ba),La=/Firefox/.test(Ba),Kb=/(Mobile|Android|Windows Phone)/.test(Ba),
Ca="http://www.w3.org/2000/svg",ca=!!B.createElementNS&&!!B.createElementNS(Ca,"svg").createSVGRect,Ob=La&&parseInt(Ba.split("Firefox/")[1],10)<4,fa=!ca&&!ya&&!!B.createElement("canvas").getContext,$a,ab,Lb={},yb=0,fb,T,Oa,za,zb,E,na=function(){return y},Y=[],bb=0,Ka="div",P="none",Pb=/^[0-9]+$/,jb=["plotTop","marginRight","marginBottom","plotLeft"],Qb="stroke-width",Aa,gb,ob,eb,sb,tb,ub,Xa,Ya,Za,Eb,Fb,Gb,Hb,vb,wb,xb,M={},A;A=K.Highcharts=K.Highcharts?la(16,!0):{};A.seriesTypes=M;var x=A.extend=function(a,
b){var c;a||(a={});for(c in b)a[c]=b[c];return a},p=A.pick=function(){var a=arguments,b,c,d=a.length;for(b=0;b<d;b++)if(c=a[b],c!==y&&c!==null)return c},cb=A.wrap=function(a,b,c){var d=a[b];a[b]=function(){var a=Array.prototype.slice.call(arguments);a.unshift(d);return c.apply(this,a)}};Oa=function(a,b,c){if(!q(b)||isNaN(b))return"Invalid date";var a=p(a,"%Y-%m-%d %H:%M:%S"),d=new Aa(b-Wa(b)),e,f=d[tb](),g=d[ub](),h=d[Xa](),i=d[Ya](),j=d[Za](),k=T.lang,l=k.weekdays,d=x({a:l[g].substr(0,3),A:l[g],
d:Ia(h),e:h,w:g,b:k.shortMonths[i],B:k.months[i],m:Ia(i+1),y:j.toString().substr(2,2),Y:j,H:Ia(f),I:Ia(f%12||12),l:f%12||12,M:Ia(d[sb]()),p:f<12?"AM":"PM",P:f<12?"am":"pm",S:Ia(d.getSeconds()),L:Ia(r(b%1E3),3)},A.dateFormats);for(e in d)for(;a.indexOf("%"+e)!==-1;)a=a.replace("%"+e,typeof d[e]==="function"?d[e](b):d[e]);return c?a.substr(0,1).toUpperCase()+a.substr(1):a};E={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5,month:24192E5,year:314496E5};A.numberFormat=function(a,b,
c,d){var e=T.lang,a=+a||0,f=b===-1?C((a.toString().split(".")[1]||"").length,20):isNaN(b=O(b))?2:b,b=c===void 0?e.decimalPoint:c,d=d===void 0?e.thousandsSep:d,e=a<0?"-":"",c=String(D(a=O(a).toFixed(f))),g=c.length>3?c.length%3:0;return e+(g?c.substr(0,g)+d:"")+c.substr(g).replace(/(\d{3})(?=\d)/g,"$1"+d)+(f?b+O(a-c).toFixed(f).slice(2):"")};zb={init:function(a,b,c){var b=b||"",d=a.shift,e=b.indexOf("C")>-1,f=e?7:3,g,b=b.split(" "),c=[].concat(c),h,i,j=function(a){for(g=a.length;g--;)a[g]==="M"&&a.splice(g+
1,0,a[g+1],a[g+2],a[g+1],a[g+2])};e&&(j(b),j(c));a.isArea&&(h=b.splice(b.length-6,6),i=c.splice(c.length-6,6));if(d<=c.length/f&&b.length===c.length)for(;d--;)c=[].concat(c).splice(0,f).concat(c);a.shift=0;if(b.length)for(a=c.length;b.length<a;)d=[].concat(b).splice(b.length-f,f),e&&(d[f-6]=d[f-2],d[f-5]=d[f-1]),b=b.concat(d);h&&(b=b.concat(h),c=c.concat(i));return[b,c]},step:function(a,b,c,d){var e=[],f=a.length;if(c===1)e=d;else if(f===b.length&&c<1)for(;f--;)d=parseFloat(a[f]),e[f]=isNaN(d)?a[f]:
c*parseFloat(b[f]-d)+d;else e=b;return e}};(function(a){K.HighchartsAdapter=K.HighchartsAdapter||a&&{init:function(b){var c=a.fx;a.extend(a.easing,{easeOutQuad:function(a,b,c,g,h){return-g*(b/=h)*(b-2)+c}});a.each(["cur","_default","width","height","opacity"],function(b,e){var f=c.step,g;e==="cur"?f=c.prototype:e==="_default"&&a.Tween&&(f=a.Tween.propHooks[e],e="set");(g=f[e])&&(f[e]=function(a){var c,a=b?a:this;if(a.prop!=="align")return c=a.elem,c.attr?c.attr(a.prop,e==="cur"?y:a.now):g.apply(this,
arguments)})});cb(a.cssHooks.opacity,"get",function(a,b,c){return b.attr?b.opacity||0:a.call(this,b,c)});this.addAnimSetter("d",function(a){var c=a.elem,f;if(!a.started)f=b.init(c,c.d,c.toD),a.start=f[0],a.end=f[1],a.started=!0;c.attr("d",b.step(a.start,a.end,a.pos,c.toD))});this.each=Array.prototype.forEach?function(a,b){return Array.prototype.forEach.call(a,b)}:function(a,b){var c,g=a.length;for(c=0;c<g;c++)if(b.call(a[c],a[c],c,a)===!1)return c};a.fn.highcharts=function(){var a="Chart",b=arguments,
c,g;if(this[0]){Da(b[0])&&(a=b[0],b=Array.prototype.slice.call(b,1));c=b[0];if(c!==y)c.chart=c.chart||{},c.chart.renderTo=this[0],new A[a](c,b[1]),g=this;c===y&&(g=Y[J(this[0],"data-highcharts-chart")])}return g}},addAnimSetter:function(b,c){a.Tween?a.Tween.propHooks[b]={set:c}:a.fx.step[b]=c},getScript:a.getScript,inArray:a.inArray,adapterRun:function(b,c){return a(b)[c]()},grep:a.grep,map:function(a,c){for(var d=[],e=0,f=a.length;e<f;e++)d[e]=c.call(a[e],a[e],e,a);return d},offset:function(b){return a(b).offset()},
addEvent:function(b,c,d){a(b).bind(c,d)},removeEvent:function(b,c,d){var e=B.removeEventListener?"removeEventListener":"detachEvent";B[e]&&b&&!b[e]&&(b[e]=function(){});a(b).unbind(c,d)},fireEvent:function(b,c,d,e){var f=a.Event(c),g="detached"+c,h;!ya&&d&&(delete d.layerX,delete d.layerY,delete d.returnValue);x(f,d);b[c]&&(b[g]=b[c],b[c]=null);a.each(["preventDefault","stopPropagation"],function(a,b){var c=f[b];f[b]=function(){try{c.call(f)}catch(a){b==="preventDefault"&&(h=!0)}}});a(b).trigger(f);
b[g]&&(b[c]=b[g],b[g]=null);e&&!f.isDefaultPrevented()&&!h&&e(f)},washMouseEvent:function(a){var c=a.originalEvent||a;if(c.pageX===y)c.pageX=a.pageX,c.pageY=a.pageY;return c},animate:function(b,c,d){var e=a(b);if(!b.style)b.style={};if(c.d)b.toD=c.d,c.d=1;e.stop();c.opacity!==y&&b.attr&&(c.opacity+="px");b.hasAnim=1;e.animate(c,d)},stop:function(b){b.hasAnim&&a(b).stop()}}})(K.jQuery);var U=K.HighchartsAdapter,F=U||{};U&&U.init.call(U,zb);var kb=F.adapterRun,Rb=F.getScript,Ma=F.inArray,o=A.each=F.each,
lb=F.grep,Sb=F.offset,Ua=F.map,H=F.addEvent,Z=F.removeEvent,I=F.fireEvent,Tb=F.washMouseEvent,mb=F.animate,db=F.stop;T={colors:"#7cb5ec,#434348,#90ed7d,#f7a35c,#8085e9,#f15c80,#e4d354,#2b908f,#f45b5b,#91e8e1".split(","),symbols:["circle","diamond","square","triangle","triangle-down"],lang:{loading:"Loading...",months:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),shortMonths:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),weekdays:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),
decimalPoint:".",numericSymbols:"k,M,G,T,P,E".split(","),resetZoom:"Reset zoom",resetZoomTitle:"Reset zoom level 1:1",thousandsSep:" "},global:{useUTC:!0,canvasToolsURL:"http://code.highcharts.com/4.1.7/modules/canvas-tools.js",VMLRadialGradientURL:"http://code.highcharts.com/4.1.7/gfx/vml-radial-gradient.png"},chart:{borderColor:"#4572A7",borderRadius:0,defaultSeriesType:"line",ignoreHiddenSeries:!0,spacing:[10,10,15,10],backgroundColor:"#FFFFFF",plotBorderColor:"#C0C0C0",resetZoomButton:{theme:{zIndex:20},
position:{align:"right",x:-10,y:10}}},title:{text:"Chart title",align:"center",margin:15,style:{color:"#333333",fontSize:"18px"}},subtitle:{text:"",align:"center",style:{color:"#555555"}},plotOptions:{line:{allowPointSelect:!1,showCheckbox:!1,animation:{duration:1E3},events:{},lineWidth:2,marker:{lineWidth:0,radius:4,lineColor:"#FFFFFF",states:{hover:{enabled:!0,lineWidthPlus:1,radiusPlus:2},select:{fillColor:"#FFFFFF",lineColor:"#000000",lineWidth:2}}},point:{events:{}},dataLabels:{align:"center",
formatter:function(){return this.y===null?"":A.numberFormat(this.y,-1)},style:{color:"contrast",fontSize:"11px",fontWeight:"bold",textShadow:"0 0 6px contrast, 0 0 3px contrast"},verticalAlign:"bottom",x:0,y:0,padding:5},cropThreshold:300,pointRange:0,states:{hover:{lineWidthPlus:1,marker:{},halo:{size:10,opacity:0.25}},select:{marker:{}}},stickyTracking:!0,turboThreshold:1E3}},labels:{style:{position:"absolute",color:"#3E576F"}},legend:{enabled:!0,align:"center",layout:"horizontal",labelFormatter:function(){return this.name},
borderColor:"#909090",borderRadius:0,navigation:{activeColor:"#274b6d",inactiveColor:"#CCC"},shadow:!1,itemStyle:{color:"#333333",fontSize:"12px",fontWeight:"bold"},itemHoverStyle:{color:"#000"},itemHiddenStyle:{color:"#CCC"},itemCheckboxStyle:{position:"absolute",width:"13px",height:"13px"},symbolPadding:5,verticalAlign:"bottom",x:0,y:0,title:{style:{fontWeight:"bold"}}},loading:{labelStyle:{fontWeight:"bold",position:"relative",top:"45%"},style:{position:"absolute",backgroundColor:"white",opacity:0.5,
textAlign:"center"}},tooltip:{enabled:!0,animation:ca,backgroundColor:"rgba(249, 249, 249, .85)",borderWidth:1,borderRadius:3,dateTimeLabelFormats:{millisecond:"%A, %b %e, %H:%M:%S.%L",second:"%A, %b %e, %H:%M:%S",minute:"%A, %b %e, %H:%M",hour:"%A, %b %e, %H:%M",day:"%A, %b %e, %Y",week:"Week from %A, %b %e, %Y",month:"%B %Y",year:"%Y"},footerFormat:"",headerFormat:'<span style="font-size: 10px">{point.key}</span><br/>',pointFormat:'<span style="color:{point.color}">\u25CF</span> {series.name}: <b>{point.y}</b><br/>',
shadow:!0,snap:Kb?25:10,style:{color:"#333333",cursor:"default",fontSize:"12px",padding:"8px",whiteSpace:"nowrap"}},credits:{enabled:!0,text:"Highcharts.com",href:"http://www.highcharts.com",position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#909090",fontSize:"9px"}}};var ba=T.plotOptions,U=ba.line;Db();var Ub=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,Vb=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,
Wb=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,oa=function(a){var b=[],c,d;(function(a){a&&a.stops?d=Ua(a.stops,function(a){return oa(a[1])}):(c=Ub.exec(a))?b=[D(c[1]),D(c[2]),D(c[3]),parseFloat(c[4],10)]:(c=Vb.exec(a))?b=[D(c[1],16),D(c[2],16),D(c[3],16),1]:(c=Wb.exec(a))&&(b=[D(c[1]),D(c[2]),D(c[3]),1])})(a);return{get:function(c){var f;d?(f=z(a),f.stops=[].concat(f.stops),o(d,function(a,b){f.stops[b]=[f.stops[b][0],a.get(c)]})):f=b&&!isNaN(b[0])?c==="rgb"?"rgb("+b[0]+","+
b[1]+","+b[2]+")":c==="a"?b[3]:"rgba("+b.join(",")+")":a;return f},brighten:function(a){if(d)o(d,function(b){b.brighten(a)});else if(ra(a)&&a!==0){var c;for(c=0;c<3;c++)b[c]+=D(a*255),b[c]<0&&(b[c]=0),b[c]>255&&(b[c]=255)}return this},rgba:b,setOpacity:function(a){b[3]=a;return this},raw:a}};Q.prototype={opacity:1,textProps:"fontSize,fontWeight,fontFamily,fontStyle,color,lineHeight,width,textDecoration,textShadow".split(","),init:function(a,b){this.element=b==="span"?$(b):B.createElementNS(Ca,b);
this.renderer=a},animate:function(a,b,c){b=p(b,za,!0);db(this);if(b){b=z(b,{});if(c)b.complete=c;mb(this,a,b)}else this.attr(a),c&&c();return this},colorGradient:function(a,b,c){var d=this.renderer,e,f,g,h,i,j,k,l,m,n,v=[];a.linearGradient?f="linearGradient":a.radialGradient&&(f="radialGradient");if(f){g=a[f];h=d.gradients;j=a.stops;m=c.radialReference;Ha(g)&&(a[f]=g={x1:g[0],y1:g[1],x2:g[2],y2:g[3],gradientUnits:"userSpaceOnUse"});f==="radialGradient"&&m&&!q(g.gradientUnits)&&(g=z(g,{cx:m[0]-m[2]/
2+g.cx*m[2],cy:m[1]-m[2]/2+g.cy*m[2],r:g.r*m[2],gradientUnits:"userSpaceOnUse"}));for(n in g)n!=="id"&&v.push(n,g[n]);for(n in j)v.push(j[n]);v=v.join(",");h[v]?a=h[v].attr("id"):(g.id=a="highcharts-"+yb++,h[v]=i=d.createElement(f).attr(g).add(d.defs),i.stops=[],o(j,function(a){a[1].indexOf("rgba")===0?(e=oa(a[1]),k=e.get("rgb"),l=e.get("a")):(k=a[1],l=1);a=d.createElement("stop").attr({offset:a[0],"stop-color":k,"stop-opacity":l}).add(i);i.stops.push(a)}));c.setAttribute(b,"url("+d.url+"#"+a+")")}},
applyTextShadow:function(a){var b=this.element,c,d=a.indexOf("contrast")!==-1,e={},f=this.renderer.forExport||b.style.textShadow!==y&&!ya;if(d)e.textShadow=a=a.replace(/contrast/g,this.renderer.getContrast(b.style.fill));if(ib)e.textRendering="geometricPrecision";f?L(b,e):(this.fakeTS=!0,this.ySetter=this.xSetter,c=[].slice.call(b.getElementsByTagName("tspan")),o(a.split(/\s?,\s?/g),function(a){var d=b.firstChild,e,f,a=a.split(" ");e=a[a.length-1];(f=a[a.length-2])&&o(c,function(a,c){var g;c===0&&
(a.setAttribute("x",b.getAttribute("x")),c=b.getAttribute("y"),a.setAttribute("y",c||0),c===null&&b.setAttribute("y",0));g=a.cloneNode(1);J(g,{"class":"highcharts-text-shadow",fill:e,stroke:e,"stroke-opacity":1/u(D(f),3),"stroke-width":f,"stroke-linejoin":"round"});b.insertBefore(g,d)})}))},attr:function(a,b){var c,d,e=this.element,f,g=this,h;typeof a==="string"&&b!==y&&(c=a,a={},a[c]=b);if(typeof a==="string")g=(this[a+"Getter"]||this._defaultGetter).call(this,a,e);else{for(c in a){d=a[c];h=!1;this.symbolName&&
/^(x|y|width|height|r|start|end|innerR|anchorX|anchorY)/.test(c)&&(f||(this.symbolAttr(a),f=!0),h=!0);if(this.rotation&&(c==="x"||c==="y"))this.doTransform=!0;h||(this[c+"Setter"]||this._defaultSetter).call(this,d,c,e);this.shadows&&/^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(c)&&this.updateShadows(c,d)}if(this.doTransform)this.updateTransform(),this.doTransform=!1}return g},updateShadows:function(a,b){for(var c=this.shadows,d=c.length;d--;)c[d].setAttribute(a,a==="height"?u(b-(c[d].cutHeight||
0),0):a==="d"?this.d:b)},addClass:function(a){var b=this.element,c=J(b,"class")||"";c.indexOf(a)===-1&&J(b,"class",c+" "+a);return this},symbolAttr:function(a){var b=this;o("x,y,r,start,end,width,height,innerR,anchorX,anchorY".split(","),function(c){b[c]=p(a[c],b[c])});b.attr({d:b.renderer.symbols[b.symbolName](b.x,b.y,b.width,b.height,b)})},clip:function(a){return this.attr("clip-path",a?"url("+this.renderer.url+"#"+a.id+")":P)},crisp:function(a){var b,c={},d,e=a.strokeWidth||this.strokeWidth||0;
d=r(e)%2/2;a.x=V(a.x||this.x||0)+d;a.y=V(a.y||this.y||0)+d;a.width=V((a.width||this.width||0)-2*d);a.height=V((a.height||this.height||0)-2*d);a.strokeWidth=e;for(b in a)this[b]!==a[b]&&(this[b]=c[b]=a[b]);return c},css:function(a){var b=this.styles,c={},d=this.element,e,f,g="";e=!b;if(a&&a.color)a.fill=a.color;if(b)for(f in a)a[f]!==b[f]&&(c[f]=a[f],e=!0);if(e){e=this.textWidth=a&&a.width&&d.nodeName.toLowerCase()==="text"&&D(a.width)||this.textWidth;b&&(a=x(b,c));this.styles=a;e&&(fa||!ca&&this.renderer.forExport)&&
delete a.width;if(ya&&!ca)L(this.element,a);else{b=function(a,b){return"-"+b.toLowerCase()};for(f in a)g+=f.replace(/([A-Z])/g,b)+":"+a[f]+";";J(d,"style",g)}e&&this.added&&this.renderer.buildText(this)}return this},on:function(a,b){var c=this,d=c.element;ab&&a==="click"?(d.ontouchstart=function(a){c.touchEventFired=Aa.now();a.preventDefault();b.call(d,a)},d.onclick=function(a){(Ba.indexOf("Android")===-1||Aa.now()-(c.touchEventFired||0)>1100)&&b.call(d,a)}):d["on"+a]=b;return this},setRadialReference:function(a){this.element.radialReference=
a;return this},translate:function(a,b){return this.attr({translateX:a,translateY:b})},invert:function(){this.inverted=!0;this.updateTransform();return this},updateTransform:function(){var a=this.translateX||0,b=this.translateY||0,c=this.scaleX,d=this.scaleY,e=this.inverted,f=this.rotation,g=this.element;e&&(a+=this.attr("width"),b+=this.attr("height"));a=["translate("+a+","+b+")"];e?a.push("rotate(90) scale(-1,1)"):f&&a.push("rotate("+f+" "+(g.getAttribute("x")||0)+" "+(g.getAttribute("y")||0)+")");
(q(c)||q(d))&&a.push("scale("+p(c,1)+" "+p(d,1)+")");a.length&&g.setAttribute("transform",a.join(" "))},toFront:function(){var a=this.element;a.parentNode.appendChild(a);return this},align:function(a,b,c){var d,e,f,g,h={};e=this.renderer;f=e.alignedObjects;if(a){if(this.alignOptions=a,this.alignByTranslate=b,!c||Da(c))this.alignTo=d=c||"renderer",ja(f,this),f.push(this),c=null}else a=this.alignOptions,b=this.alignByTranslate,d=this.alignTo;c=p(c,e[d],e);d=a.align;e=a.verticalAlign;f=(c.x||0)+(a.x||
0);g=(c.y||0)+(a.y||0);if(d==="right"||d==="center")f+=(c.width-(a.width||0))/{right:1,center:2}[d];h[b?"translateX":"x"]=r(f);if(e==="bottom"||e==="middle")g+=(c.height-(a.height||0))/({bottom:1,middle:2}[e]||1);h[b?"translateY":"y"]=r(g);this[this.placed?"animate":"attr"](h);this.placed=!0;this.alignAttr=h;return this},getBBox:function(a){var b,c=this.renderer,d,e=this.rotation,f=this.element,g=this.styles,h=e*ha;d=this.textStr;var i,j=f.style,k,l;d!==y&&(l=["",e||0,g&&g.fontSize,f.style.width].join(","),
l=d===""||Pb.test(d)?"num:"+d.toString().length+l:d+l);l&&!a&&(b=c.cache[l]);if(!b){if(f.namespaceURI===Ca||c.forExport){try{k=this.fakeTS&&function(a){o(f.querySelectorAll(".highcharts-text-shadow"),function(b){b.style.display=a})},La&&j.textShadow?(i=j.textShadow,j.textShadow=""):k&&k(P),b=f.getBBox?x({},f.getBBox()):{width:f.offsetWidth,height:f.offsetHeight},i?j.textShadow=i:k&&k("")}catch(m){}if(!b||b.width<0)b={width:0,height:0}}else b=this.htmlGetBBox();if(c.isSVG){a=b.width;d=b.height;if(ya&&
g&&g.fontSize==="11px"&&d.toPrecision(3)==="16.9")b.height=d=14;if(e)b.width=O(d*aa(h))+O(a*X(h)),b.height=O(d*X(h))+O(a*aa(h))}c.cache[l]=b}return b},show:function(a){a&&this.element.namespaceURI===Ca?this.element.removeAttribute("visibility"):this.attr({visibility:a?"inherit":"visible"});return this},hide:function(){return this.attr({visibility:"hidden"})},fadeOut:function(a){var b=this;b.animate({opacity:0},{duration:a||150,complete:function(){b.attr({y:-9999})}})},add:function(a){var b=this.renderer,
c=this.element,d;if(a)this.parentGroup=a;this.parentInverted=a&&a.inverted;this.textStr!==void 0&&b.buildText(this);this.added=!0;if(!a||a.handleZ||this.zIndex)d=this.zIndexSetter();d||(a?a.element:b.box).appendChild(c);if(this.onAdd)this.onAdd();return this},safeRemoveChild:function(a){var b=a.parentNode;b&&b.removeChild(a)},destroy:function(){var a=this,b=a.element||{},c=a.shadows,d=a.renderer.isSVG&&b.nodeName==="SPAN"&&a.parentGroup,e,f;b.onclick=b.onmouseout=b.onmouseover=b.onmousemove=b.point=
null;db(a);if(a.clipPath)a.clipPath=a.clipPath.destroy();if(a.stops){for(f=0;f<a.stops.length;f++)a.stops[f]=a.stops[f].destroy();a.stops=null}a.safeRemoveChild(b);for(c&&o(c,function(b){a.safeRemoveChild(b)});d&&d.div&&d.div.childNodes.length===0;)b=d.parentGroup,a.safeRemoveChild(d.div),delete d.div,d=b;a.alignTo&&ja(a.renderer.alignedObjects,a);for(e in a)delete a[e];return null},shadow:function(a,b,c){var d=[],e,f,g=this.element,h,i,j,k;if(a){i=p(a.width,3);j=(a.opacity||0.15)/i;k=this.parentInverted?
"(-1,-1)":"("+p(a.offsetX,1)+", "+p(a.offsetY,1)+")";for(e=1;e<=i;e++){f=g.cloneNode(0);h=i*2+1-2*e;J(f,{isShadow:"true",stroke:a.color||"black","stroke-opacity":j*e,"stroke-width":h,transform:"translate"+k,fill:P});if(c)J(f,"height",u(J(f,"height")-h,0)),f.cutHeight=h;b?b.element.appendChild(f):g.parentNode.insertBefore(f,g);d.push(f)}this.shadows=d}return this},xGetter:function(a){this.element.nodeName==="circle"&&(a={x:"cx",y:"cy"}[a]||a);return this._defaultGetter(a)},_defaultGetter:function(a){a=
p(this[a],this.element?this.element.getAttribute(a):null,0);/^[\-0-9\.]+$/.test(a)&&(a=parseFloat(a));return a},dSetter:function(a,b,c){a&&a.join&&(a=a.join(" "));/(NaN| {2}|^$)/.test(a)&&(a="M 0 0");c.setAttribute(b,a);this[b]=a},dashstyleSetter:function(a){var b;if(a=a&&a.toLowerCase()){a=a.replace("shortdashdotdot","3,1,1,1,1,1,").replace("shortdashdot","3,1,1,1").replace("shortdot","1,1,").replace("shortdash","3,1,").replace("longdash","8,3,").replace(/dot/g,"1,3,").replace("dash","4,3,").replace(/,$/,
"").split(",");for(b=a.length;b--;)a[b]=D(a[b])*this["stroke-width"];a=a.join(",").replace("NaN","none");this.element.setAttribute("stroke-dasharray",a)}},alignSetter:function(a){this.element.setAttribute("text-anchor",{left:"start",center:"middle",right:"end"}[a])},opacitySetter:function(a,b,c){this[b]=a;c.setAttribute(b,a)},titleSetter:function(a){var b=this.element.getElementsByTagName("title")[0];b||(b=B.createElementNS(Ca,"title"),this.element.appendChild(b));b.appendChild(B.createTextNode(String(p(a),
"").replace(/<[^>]*>/g,"")))},textSetter:function(a){if(a!==this.textStr)delete this.bBox,this.textStr=a,this.added&&this.renderer.buildText(this)},fillSetter:function(a,b,c){typeof a==="string"?c.setAttribute(b,a):a&&this.colorGradient(a,b,c)},zIndexSetter:function(a,b){var c=this.renderer,d=this.parentGroup,c=(d||c).element||c.box,e,f,g=this.element,h;e=this.added;var i;q(a)&&(g.setAttribute(b,a),a=+a,this[b]===a&&(e=!1),this[b]=a);if(e){if((a=this.zIndex)&&d)d.handleZ=!0;d=c.childNodes;for(i=0;i<
d.length&&!h;i++)if(e=d[i],f=J(e,"zIndex"),e!==g&&(D(f)>a||!q(a)&&q(f)))c.insertBefore(g,e),h=!0;h||c.appendChild(g)}return h},_defaultSetter:function(a,b,c){c.setAttribute(b,a)}};Q.prototype.yGetter=Q.prototype.xGetter;Q.prototype.translateXSetter=Q.prototype.translateYSetter=Q.prototype.rotationSetter=Q.prototype.verticalAlignSetter=Q.prototype.scaleXSetter=Q.prototype.scaleYSetter=function(a,b){this[b]=a;this.doTransform=!0};Q.prototype["stroke-widthSetter"]=Q.prototype.strokeSetter=function(a,
b,c){this[b]=a;if(this.stroke&&this["stroke-width"])this.strokeWidth=this["stroke-width"],Q.prototype.fillSetter.call(this,this.stroke,"stroke",c),c.setAttribute("stroke-width",this["stroke-width"]),this.hasStroke=!0;else if(b==="stroke-width"&&a===0&&this.hasStroke)c.removeAttribute("stroke"),this.hasStroke=!1};var ua=function(){this.init.apply(this,arguments)};ua.prototype={Element:Q,init:function(a,b,c,d,e){var f=location,g,d=this.createElement("svg").attr({version:"1.1"}).css(this.getStyle(d));
g=d.element;a.appendChild(g);a.innerHTML.indexOf("xmlns")===-1&&J(g,"xmlns",Ca);this.isSVG=!0;this.box=g;this.boxWrapper=d;this.alignedObjects=[];this.url=(La||ib)&&B.getElementsByTagName("base").length?f.href.replace(/#.*?$/,"").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20"):"";this.createElement("desc").add().element.appendChild(B.createTextNode("Created with Highcharts 4.1.7"));this.defs=this.createElement("defs").add();this.forExport=e;this.gradients={};this.cache={};this.setSize(b,c,!1);var h;
if(La&&a.getBoundingClientRect)this.subPixelFix=b=function(){L(a,{left:0,top:0});h=a.getBoundingClientRect();L(a,{left:ta(h.left)-h.left+"px",top:ta(h.top)-h.top+"px"})},b(),H(K,"resize",b)},getStyle:function(a){return this.style=x({fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif',fontSize:"12px"},a)},isHidden:function(){return!this.boxWrapper.getBBox().width},destroy:function(){var a=this.defs;this.box=null;this.boxWrapper=this.boxWrapper.destroy();Qa(this.gradients||
{});this.gradients=null;if(a)this.defs=a.destroy();this.subPixelFix&&Z(K,"resize",this.subPixelFix);return this.alignedObjects=null},createElement:function(a){var b=new this.Element;b.init(this,a);return b},draw:function(){},buildText:function(a){for(var b=a.element,c=this,d=c.forExport,e=p(a.textStr,"").toString(),f=e.indexOf("<")!==-1,g=b.childNodes,h,i,j=J(b,"x"),k=a.styles,l=a.textWidth,m=k&&k.lineHeight,n=k&&k.textShadow,v=k&&k.textOverflow==="ellipsis",s=g.length,S=l&&!a.added&&this.box,N=function(a){return m?
D(m):c.fontMetrics(/(px|em)$/.test(a&&a.style.fontSize)?a.style.fontSize:k&&k.fontSize||c.style.fontSize||12,a).h},t=function(a){return a.replace(/&lt;/g,"<").replace(/&gt;/g,">")};s--;)b.removeChild(g[s]);!f&&!n&&!v&&e.indexOf(" ")===-1?b.appendChild(B.createTextNode(t(e))):(h=/<.*style="([^"]+)".*>/,i=/<.*href="(http[^"]+)".*>/,S&&S.appendChild(b),e=f?e.replace(/<(b|strong)>/g,'<span style="font-weight:bold">').replace(/<(i|em)>/g,'<span style="font-style:italic">').replace(/<a/g,"<span").replace(/<\/(b|strong|i|em|a)>/g,
"</span>").split(/<br.*?>/g):[e],e[e.length-1]===""&&e.pop(),o(e,function(e,f){var g,m=0,e=e.replace(/<span/g,"|||<span").replace(/<\/span>/g,"</span>|||");g=e.split("|||");o(g,function(e){if(e!==""||g.length===1){var n={},s=B.createElementNS(Ca,"tspan"),p;h.test(e)&&(p=e.match(h)[1].replace(/(;| |^)color([ :])/,"$1fill$2"),J(s,"style",p));i.test(e)&&!d&&(J(s,"onclick",'location.href="'+e.match(i)[1]+'"'),L(s,{cursor:"pointer"}));e=t(e.replace(/<(.|\n)*?>/g,"")||" ");if(e!==" "){s.appendChild(B.createTextNode(e));
if(m)n.dx=0;else if(f&&j!==null)n.x=j;J(s,n);b.appendChild(s);!m&&f&&(!ca&&d&&L(s,{display:"block"}),J(s,"dy",N(s)));if(l){for(var n=e.replace(/([^\^])-/g,"$1- ").split(" "),o=g.length>1||f||n.length>1&&k.whiteSpace!=="nowrap",S,w,q,u=[],y=N(s),r=1,x=a.rotation,z=e,C=z.length;(o||v)&&(n.length||u.length);)a.rotation=0,S=a.getBBox(!0),q=S.width,!ca&&c.forExport&&(q=c.measureSpanWidth(s.firstChild.data,a.styles)),S=q>l,w===void 0&&(w=S),v&&w?(C/=2,z===""||!S&&C<0.5?n=[]:(S&&(w=!0),z=e.substring(0,z.length+
(S?-1:1)*ta(C)),n=[z+(l>3?"…":"")],s.removeChild(s.firstChild))):!S||n.length===1?(n=u,u=[],n.length&&(r++,s=B.createElementNS(Ca,"tspan"),J(s,{dy:y,x:j}),p&&J(s,"style",p),b.appendChild(s)),q>l&&(l=q)):(s.removeChild(s.firstChild),u.unshift(n.pop())),n.length&&s.appendChild(B.createTextNode(n.join(" ").replace(/- /g,"-")));w&&a.attr("title",a.textStr);a.rotation=x}m++}}})}),S&&S.removeChild(b),n&&a.applyTextShadow&&a.applyTextShadow(n))},getContrast:function(a){a=oa(a).rgba;return a[0]+a[1]+a[2]>
384?"#000000":"#FFFFFF"},button:function(a,b,c,d,e,f,g,h,i){var j=this.label(a,b,c,i,null,null,null,null,"button"),k=0,l,m,n,v,s,p,a={x1:0,y1:0,x2:0,y2:1},e=z({"stroke-width":1,stroke:"#CCCCCC",fill:{linearGradient:a,stops:[[0,"#FEFEFE"],[1,"#F6F6F6"]]},r:2,padding:5,style:{color:"black"}},e);n=e.style;delete e.style;f=z(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0,"#FFF"],[1,"#ACF"]]}},f);v=f.style;delete f.style;g=z(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0,"#9BD"],[1,"#CDF"]]}},g);
s=g.style;delete g.style;h=z(e,{style:{color:"#CCC"}},h);p=h.style;delete h.style;H(j.element,ya?"mouseover":"mouseenter",function(){k!==3&&j.attr(f).css(v)});H(j.element,ya?"mouseout":"mouseleave",function(){k!==3&&(l=[e,f,g][k],m=[n,v,s][k],j.attr(l).css(m))});j.setState=function(a){(j.state=k=a)?a===2?j.attr(g).css(s):a===3&&j.attr(h).css(p):j.attr(e).css(n)};return j.on("click",function(){k!==3&&d.call(j)}).attr(e).css(x({cursor:"default"},n))},crispLine:function(a,b){a[1]===a[4]&&(a[1]=a[4]=
r(a[1])-b%2/2);a[2]===a[5]&&(a[2]=a[5]=r(a[2])+b%2/2);return a},path:function(a){var b={fill:P};Ha(a)?b.d=a:da(a)&&x(b,a);return this.createElement("path").attr(b)},circle:function(a,b,c){a=da(a)?a:{x:a,y:b,r:c};b=this.createElement("circle");b.xSetter=function(a){this.element.setAttribute("cx",a)};b.ySetter=function(a){this.element.setAttribute("cy",a)};return b.attr(a)},arc:function(a,b,c,d,e,f){if(da(a))b=a.y,c=a.r,d=a.innerR,e=a.start,f=a.end,a=a.x;a=this.symbol("arc",a||0,b||0,c||0,c||0,{innerR:d||
0,start:e||0,end:f||0});a.r=c;return a},rect:function(a,b,c,d,e,f){var e=da(a)?a.r:e,g=this.createElement("rect"),a=da(a)?a:a===y?{}:{x:a,y:b,width:u(c,0),height:u(d,0)};if(f!==y)a.strokeWidth=f,a=g.crisp(a);if(e)a.r=e;g.rSetter=function(a){J(this.element,{rx:a,ry:a})};return g.attr(a)},setSize:function(a,b,c){var d=this.alignedObjects,e=d.length;this.width=a;this.height=b;for(this.boxWrapper[p(c,!0)?"animate":"attr"]({width:a,height:b});e--;)d[e].align()},g:function(a){var b=this.createElement("g");
return q(a)?b.attr({"class":"highcharts-"+a}):b},image:function(a,b,c,d,e){var f={preserveAspectRatio:P};arguments.length>1&&x(f,{x:b,y:c,width:d,height:e});f=this.createElement("image").attr(f);f.element.setAttributeNS?f.element.setAttributeNS("http://www.w3.org/1999/xlink","href",a):f.element.setAttribute("hc-svg-href",a);return f},symbol:function(a,b,c,d,e,f){var g,h=this.symbols[a],h=h&&h(r(b),r(c),d,e,f),i=/^url\((.*?)\)$/,j,k;if(h)g=this.path(h),x(g,{symbolName:a,x:b,y:c,width:d,height:e}),
f&&x(g,f);else if(i.test(a))k=function(a,b){a.element&&(a.attr({width:b[0],height:b[1]}),a.alignByTranslate||a.translate(r((d-b[0])/2),r((e-b[1])/2)))},j=a.match(i)[1],a=Lb[j]||f&&f.width&&f.height&&[f.width,f.height],g=this.image(j).attr({x:b,y:c}),g.isImg=!0,a?k(g,a):(g.attr({width:0,height:0}),$("img",{onload:function(){k(g,Lb[j]=[this.width,this.height])},src:j}));return g},symbols:{circle:function(a,b,c,d){var e=0.166*c;return["M",a+c/2,b,"C",a+c+e,b,a+c+e,b+d,a+c/2,b+d,"C",a-e,b+d,a-e,b,a+c/
2,b,"Z"]},square:function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c,b+d,a,b+d,"Z"]},triangle:function(a,b,c,d){return["M",a+c/2,b,"L",a+c,b+d,a,b+d,"Z"]},"triangle-down":function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c/2,b+d,"Z"]},diamond:function(a,b,c,d){return["M",a+c/2,b,"L",a+c,b+d/2,a+c/2,b+d,a,b+d/2,"Z"]},arc:function(a,b,c,d,e){var f=e.start,c=e.r||c||d,g=e.end-0.001,d=e.innerR,h=e.open,i=X(f),j=aa(f),k=X(g),g=aa(g),e=e.end-f<ma?0:1;return["M",a+c*i,b+c*j,"A",c,c,0,e,1,a+c*k,b+c*g,h?"M":"L",a+d*
k,b+d*g,"A",d,d,0,e,0,a+d*i,b+d*j,h?"":"Z"]},callout:function(a,b,c,d,e){var f=C(e&&e.r||0,c,d),g=f+6,h=e&&e.anchorX,e=e&&e.anchorY,i;i=["M",a+f,b,"L",a+c-f,b,"C",a+c,b,a+c,b,a+c,b+f,"L",a+c,b+d-f,"C",a+c,b+d,a+c,b+d,a+c-f,b+d,"L",a+f,b+d,"C",a,b+d,a,b+d,a,b+d-f,"L",a,b+f,"C",a,b,a,b,a+f,b];h&&h>c&&e>b+g&&e<b+d-g?i.splice(13,3,"L",a+c,e-6,a+c+6,e,a+c,e+6,a+c,b+d-f):h&&h<0&&e>b+g&&e<b+d-g?i.splice(33,3,"L",a,e+6,a-6,e,a,e-6,a,b+f):e&&e>d&&h>a+g&&h<a+c-g?i.splice(23,3,"L",h+6,b+d,h,b+d+6,h-6,b+d,a+
f,b+d):e&&e<0&&h>a+g&&h<a+c-g&&i.splice(3,3,"L",h-6,b,h,b-6,h+6,b,c-f,b);return i}},clipRect:function(a,b,c,d){var e="highcharts-"+yb++,f=this.createElement("clipPath").attr({id:e}).add(this.defs),a=this.rect(a,b,c,d,0).add(f);a.id=e;a.clipPath=f;a.count=0;return a},text:function(a,b,c,d){var e=fa||!ca&&this.forExport,f={};if(d&&!this.forExport)return this.html(a,b,c);f.x=Math.round(b||0);if(c)f.y=Math.round(c);if(a||a===0)f.text=a;a=this.createElement("text").attr(f);e&&a.css({position:"absolute"});
if(!d)a.xSetter=function(a,b,c){var d=c.getElementsByTagName("tspan"),e,f=c.getAttribute(b),m;for(m=0;m<d.length;m++)e=d[m],e.getAttribute(b)===f&&e.setAttribute(b,a);c.setAttribute(b,a)};return a},fontMetrics:function(a,b){var c,d,a=a||this.style.fontSize;b&&K.getComputedStyle&&(b=b.element||b,a=(c=K.getComputedStyle(b,""))&&c.fontSize);a=/px/.test(a)?D(a):/em/.test(a)?parseFloat(a)*12:12;c=a<24?a+3:r(a*1.2);d=r(c*0.8);return{h:c,b:d,f:a}},rotCorr:function(a,b,c){var d=a;b&&c&&(d=u(d*X(b*ha),4));
return{x:-a/3*aa(b*ha),y:d}},label:function(a,b,c,d,e,f,g,h,i){function j(){var a,b;a=v.element.style;p=(ga===void 0||u===void 0||n.styles.textAlign)&&q(v.textStr)&&v.getBBox();n.width=(ga||p.width||0)+2*t+w;n.height=(u||p.height||0)+2*t;A=t+m.fontMetrics(a&&a.fontSize,v).b;if(D){if(!s)a=r(-N*t)+B,b=(h?-A:0)+B,n.box=s=d?m.symbol(d,a,b,n.width,n.height,G):m.rect(a,b,n.width,n.height,0,G[Qb]),s.attr("fill",P).add(n);s.isImg||s.attr(x({width:r(n.width),height:r(n.height)},G));G=null}}function k(){var a=
n.styles,a=a&&a.textAlign,b=w+t*(1-N),c;c=h?0:A;if(q(ga)&&p&&(a==="center"||a==="right"))b+={center:0.5,right:1}[a]*(ga-p.width);if(b!==v.x||c!==v.y)v.attr("x",b),c!==y&&v.attr("y",c);v.x=b;v.y=c}function l(a,b){s?s.attr(a,b):G[a]=b}var m=this,n=m.g(i),v=m.text("",0,0,g).attr({zIndex:1}),s,p,N=0,t=3,w=0,ga,u,Ab,C,B=0,G={},A,D;n.onAdd=function(){v.add(n);n.attr({text:a||a===0?a:"",x:b,y:c});s&&q(e)&&n.attr({anchorX:e,anchorY:f})};n.widthSetter=function(a){ga=a};n.heightSetter=function(a){u=a};n.paddingSetter=
function(a){if(q(a)&&a!==t)t=n.padding=a,k()};n.paddingLeftSetter=function(a){q(a)&&a!==w&&(w=a,k())};n.alignSetter=function(a){N={left:0,center:0.5,right:1}[a]};n.textSetter=function(a){a!==y&&v.textSetter(a);j();k()};n["stroke-widthSetter"]=function(a,b){a&&(D=!0);B=a%2/2;l(b,a)};n.strokeSetter=n.fillSetter=n.rSetter=function(a,b){b==="fill"&&a&&(D=!0);l(b,a)};n.anchorXSetter=function(a,b){e=a;l(b,r(a)-B-Ab)};n.anchorYSetter=function(a,b){f=a;l(b,a-C)};n.xSetter=function(a){n.x=a;N&&(a-=N*((ga||
p.width)+t));Ab=r(a);n.attr("translateX",Ab)};n.ySetter=function(a){C=n.y=r(a);n.attr("translateY",C)};var F=n.css;return x(n,{css:function(a){if(a){var b={},a=z(a);o(n.textProps,function(c){a[c]!==y&&(b[c]=a[c],delete a[c])});v.css(b)}return F.call(n,a)},getBBox:function(){return{width:p.width+2*t,height:p.height+2*t,x:p.x-t,y:p.y-t}},shadow:function(a){s&&s.shadow(a);return n},destroy:function(){Z(n.element,"mouseenter");Z(n.element,"mouseleave");v&&(v=v.destroy());s&&(s=s.destroy());Q.prototype.destroy.call(n);
n=m=j=k=l=null}})}};$a=ua;x(Q.prototype,{htmlCss:function(a){var b=this.element;if(b=a&&b.tagName==="SPAN"&&a.width)delete a.width,this.textWidth=b,this.updateTransform();if(a&&a.textOverflow==="ellipsis")a.whiteSpace="nowrap",a.overflow="hidden";this.styles=x(this.styles,a);L(this.element,a);return this},htmlGetBBox:function(){var a=this.element;if(a.nodeName==="text")a.style.position="absolute";return{x:a.offsetLeft,y:a.offsetTop,width:a.offsetWidth,height:a.offsetHeight}},htmlUpdateTransform:function(){if(this.added){var a=
this.renderer,b=this.element,c=this.translateX||0,d=this.translateY||0,e=this.x||0,f=this.y||0,g=this.textAlign||"left",h={left:0,center:0.5,right:1}[g],i=this.shadows,j=this.styles;L(b,{marginLeft:c,marginTop:d});i&&o(i,function(a){L(a,{marginLeft:c+1,marginTop:d+1})});this.inverted&&o(b.childNodes,function(c){a.invertChild(c,b)});if(b.tagName==="SPAN"){var k=this.rotation,l,m=D(this.textWidth),n=[k,g,b.innerHTML,this.textWidth].join(",");if(n!==this.cTT){l=a.fontMetrics(b.style.fontSize).b;q(k)&&
this.setSpanRotation(k,h,l);i=p(this.elemWidth,b.offsetWidth);if(i>m&&/[ \-]/.test(b.textContent||b.innerText))L(b,{width:m+"px",display:"block",whiteSpace:j&&j.whiteSpace||"normal"}),i=m;this.getSpanCorrection(i,l,h,k,g)}L(b,{left:e+(this.xCorr||0)+"px",top:f+(this.yCorr||0)+"px"});if(ib)l=b.offsetHeight;this.cTT=n}}else this.alignOnAdd=!0},setSpanRotation:function(a,b,c){var d={},e=ya?"-ms-transform":ib?"-webkit-transform":La?"MozTransform":Jb?"-o-transform":"";d[e]=d.transform="rotate("+a+"deg)";
d[e+(La?"Origin":"-origin")]=d.transformOrigin=b*100+"% "+c+"px";L(this.element,d)},getSpanCorrection:function(a,b,c){this.xCorr=-a*c;this.yCorr=-b}});x(ua.prototype,{html:function(a,b,c){var d=this.createElement("span"),e=d.element,f=d.renderer;d.textSetter=function(a){a!==e.innerHTML&&delete this.bBox;e.innerHTML=this.textStr=a};d.xSetter=d.ySetter=d.alignSetter=d.rotationSetter=function(a,b){b==="align"&&(b="textAlign");d[b]=a;d.htmlUpdateTransform()};d.attr({text:a,x:r(b),y:r(c)}).css({position:"absolute",
fontFamily:this.style.fontFamily,fontSize:this.style.fontSize});e.style.whiteSpace="nowrap";d.css=d.htmlCss;if(f.isSVG)d.add=function(a){var b,c=f.box.parentNode,j=[];if(this.parentGroup=a){if(b=a.div,!b){for(;a;)j.push(a),a=a.parentGroup;o(j.reverse(),function(a){var d,e=J(a.element,"class");e&&(e={className:e});b=a.div=a.div||$(Ka,e,{position:"absolute",left:(a.translateX||0)+"px",top:(a.translateY||0)+"px"},b||c);d=b.style;x(a,{translateXSetter:function(b,c){d.left=b+"px";a[c]=b;a.doTransform=
!0},translateYSetter:function(b,c){d.top=b+"px";a[c]=b;a.doTransform=!0},visibilitySetter:function(a,b){d[b]=a}})})}}else b=c;b.appendChild(e);d.added=!0;d.alignOnAdd&&d.htmlUpdateTransform();return d};return d}});if(!ca&&!fa){F={init:function(a,b){var c=["<",b,' filled="f" stroked="f"'],d=["position: ","absolute",";"],e=b===Ka;(b==="shape"||e)&&d.push("left:0;top:0;width:1px;height:1px;");d.push("visibility: ",e?"hidden":"visible");c.push(' style="',d.join(""),'"/>');if(b)c=e||b==="span"||b==="img"?
c.join(""):a.prepVML(c),this.element=$(c);this.renderer=a},add:function(a){var b=this.renderer,c=this.element,d=b.box,d=a?a.element||a:d;a&&a.inverted&&b.invertChild(c,d);d.appendChild(c);this.added=!0;this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform();if(this.onAdd)this.onAdd();return this},updateTransform:Q.prototype.htmlUpdateTransform,setSpanRotation:function(){var a=this.rotation,b=X(a*ha),c=aa(a*ha);L(this.element,{filter:a?["progid:DXImageTransform.Microsoft.Matrix(M11=",b,
", M12=",-c,", M21=",c,", M22=",b,", sizingMethod='auto expand')"].join(""):P})},getSpanCorrection:function(a,b,c,d,e){var f=d?X(d*ha):1,g=d?aa(d*ha):0,h=p(this.elemHeight,this.element.offsetHeight),i;this.xCorr=f<0&&-a;this.yCorr=g<0&&-h;i=f*g<0;this.xCorr+=g*b*(i?1-c:c);this.yCorr-=f*b*(d?i?c:1-c:1);e&&e!=="left"&&(this.xCorr-=a*c*(f<0?-1:1),d&&(this.yCorr-=h*c*(g<0?-1:1)),L(this.element,{textAlign:e}))},pathToVML:function(a){for(var b=a.length,c=[];b--;)if(ra(a[b]))c[b]=r(a[b]*10)-5;else if(a[b]===
"Z")c[b]="x";else if(c[b]=a[b],a.isArc&&(a[b]==="wa"||a[b]==="at"))c[b+5]===c[b+7]&&(c[b+7]+=a[b+7]>a[b+5]?1:-1),c[b+6]===c[b+8]&&(c[b+8]+=a[b+8]>a[b+6]?1:-1);return c.join(" ")||"x"},clip:function(a){var b=this,c;a?(c=a.members,ja(c,b),c.push(b),b.destroyClip=function(){ja(c,b)},a=a.getCSS(b)):(b.destroyClip&&b.destroyClip(),a={clip:hb?"inherit":"rect(auto)"});return b.css(a)},css:Q.prototype.htmlCss,safeRemoveChild:function(a){a.parentNode&&Ra(a)},destroy:function(){this.destroyClip&&this.destroyClip();
return Q.prototype.destroy.apply(this)},on:function(a,b){this.element["on"+a]=function(){var a=K.event;a.target=a.srcElement;b(a)};return this},cutOffPath:function(a,b){var c,a=a.split(/[ ,]/);c=a.length;if(c===9||c===11)a[c-4]=a[c-2]=D(a[c-2])-10*b;return a.join(" ")},shadow:function(a,b,c){var d=[],e,f=this.element,g=this.renderer,h,i=f.style,j,k=f.path,l,m,n,v;k&&typeof k.value!=="string"&&(k="x");m=k;if(a){n=p(a.width,3);v=(a.opacity||0.15)/n;for(e=1;e<=3;e++){l=n*2+1-2*e;c&&(m=this.cutOffPath(k.value,
l+0.5));j=['<shape isShadow="true" strokeweight="',l,'" filled="false" path="',m,'" coordsize="10 10" style="',f.style.cssText,'" />'];h=$(g.prepVML(j),null,{left:D(i.left)+p(a.offsetX,1),top:D(i.top)+p(a.offsetY,1)});if(c)h.cutOff=l+1;j=['<stroke color="',a.color||"black",'" opacity="',v*e,'"/>'];$(g.prepVML(j),null,null,h);b?b.element.appendChild(h):f.parentNode.insertBefore(h,f);d.push(h)}this.shadows=d}return this},updateShadows:na,setAttr:function(a,b){hb?this.element[a]=b:this.element.setAttribute(a,
b)},classSetter:function(a){this.element.className=a},dashstyleSetter:function(a,b,c){(c.getElementsByTagName("stroke")[0]||$(this.renderer.prepVML(["<stroke/>"]),null,null,c))[b]=a||"solid";this[b]=a},dSetter:function(a,b,c){var d=this.shadows,a=a||[];this.d=a.join&&a.join(" ");c.path=a=this.pathToVML(a);if(d)for(c=d.length;c--;)d[c].path=d[c].cutOff?this.cutOffPath(a,d[c].cutOff):a;this.setAttr(b,a)},fillSetter:function(a,b,c){var d=c.nodeName;if(d==="SPAN")c.style.color=a;else if(d!=="IMG")c.filled=
a!==P,this.setAttr("fillcolor",this.renderer.color(a,c,b,this))},opacitySetter:na,rotationSetter:function(a,b,c){c=c.style;this[b]=c[b]=a;c.left=-r(aa(a*ha)+1)+"px";c.top=r(X(a*ha))+"px"},strokeSetter:function(a,b,c){this.setAttr("strokecolor",this.renderer.color(a,c,b))},"stroke-widthSetter":function(a,b,c){c.stroked=!!a;this[b]=a;ra(a)&&(a+="px");this.setAttr("strokeweight",a)},titleSetter:function(a,b){this.setAttr(b,a)},visibilitySetter:function(a,b,c){a==="inherit"&&(a="visible");this.shadows&&
o(this.shadows,function(c){c.style[b]=a});c.nodeName==="DIV"&&(a=a==="hidden"?"-999em":0,hb||(c.style[b]=a?"visible":"hidden"),b="top");c.style[b]=a},xSetter:function(a,b,c){this[b]=a;b==="x"?b="left":b==="y"&&(b="top");this.updateClipping?(this[b]=a,this.updateClipping()):c.style[b]=a},zIndexSetter:function(a,b,c){c.style[b]=a}};A.VMLElement=F=ka(Q,F);F.prototype.ySetter=F.prototype.widthSetter=F.prototype.heightSetter=F.prototype.xSetter;var Na={Element:F,isIE8:Ba.indexOf("MSIE 8.0")>-1,init:function(a,
b,c,d){var e;this.alignedObjects=[];d=this.createElement(Ka).css(x(this.getStyle(d),{position:"relative"}));e=d.element;a.appendChild(d.element);this.isVML=!0;this.box=e;this.boxWrapper=d;this.cache={};this.setSize(b,c,!1);if(!B.namespaces.hcv){B.namespaces.add("hcv","urn:schemas-microsoft-com:vml");try{B.createStyleSheet().cssText="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}catch(f){B.styleSheets[0].cssText+="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}}},
isHidden:function(){return!this.box.offsetWidth},clipRect:function(a,b,c,d){var e=this.createElement(),f=da(a);return x(e,{members:[],count:0,left:(f?a.x:a)+1,top:(f?a.y:b)+1,width:(f?a.width:c)-1,height:(f?a.height:d)-1,getCSS:function(a){var b=a.element,c=b.nodeName,a=a.inverted,d=this.top-(c==="shape"?b.offsetTop:0),e=this.left,b=e+this.width,f=d+this.height,d={clip:"rect("+r(a?e:d)+"px,"+r(a?f:b)+"px,"+r(a?b:f)+"px,"+r(a?d:e)+"px)"};!a&&hb&&c==="DIV"&&x(d,{width:b+"px",height:f+"px"});return d},
updateClipping:function(){o(e.members,function(a){a.element&&a.css(e.getCSS(a))})}})},color:function(a,b,c,d){var e=this,f,g=/^rgba/,h,i,j=P;a&&a.linearGradient?i="gradient":a&&a.radialGradient&&(i="pattern");if(i){var k,l,m=a.linearGradient||a.radialGradient,n,v,s,p,N,t="",a=a.stops,w,ga=[],q=function(){h=['<fill colors="'+ga.join(",")+'" opacity="',s,'" o:opacity2="',v,'" type="',i,'" ',t,'focus="100%" method="any" />'];$(e.prepVML(h),null,null,b)};n=a[0];w=a[a.length-1];n[0]>0&&a.unshift([0,n[1]]);
w[0]<1&&a.push([1,w[1]]);o(a,function(a,b){g.test(a[1])?(f=oa(a[1]),k=f.get("rgb"),l=f.get("a")):(k=a[1],l=1);ga.push(a[0]*100+"% "+k);b?(s=l,p=k):(v=l,N=k)});if(c==="fill")if(i==="gradient")c=m.x1||m[0]||0,a=m.y1||m[1]||0,n=m.x2||m[2]||0,m=m.y2||m[3]||0,t='angle="'+(90-W.atan((m-a)/(n-c))*180/ma)+'"',q();else{var j=m.r,u=j*2,y=j*2,r=m.cx,x=m.cy,C=b.radialReference,z,j=function(){C&&(z=d.getBBox(),r+=(C[0]-z.x)/z.width-0.5,x+=(C[1]-z.y)/z.height-0.5,u*=C[2]/z.width,y*=C[2]/z.height);t='src="'+T.global.VMLRadialGradientURL+
'" size="'+u+","+y+'" origin="0.5,0.5" position="'+r+","+x+'" color2="'+N+'" ';q()};d.added?j():d.onAdd=j;j=p}else j=k}else if(g.test(a)&&b.tagName!=="IMG")f=oa(a),h=["<",c,' opacity="',f.get("a"),'"/>'],$(this.prepVML(h),null,null,b),j=f.get("rgb");else{j=b.getElementsByTagName(c);if(j.length)j[0].opacity=1,j[0].type="solid";j=a}return j},prepVML:function(a){var b=this.isIE8,a=a.join("");b?(a=a.replace("/>",' xmlns="urn:schemas-microsoft-com:vml" />'),a=a.indexOf('style="')===-1?a.replace("/>",' style="display:inline-block;behavior:url(#default#VML);" />'):
a.replace('style="','style="display:inline-block;behavior:url(#default#VML);')):a=a.replace("<","<hcv:");return a},text:ua.prototype.html,path:function(a){var b={coordsize:"10 10"};Ha(a)?b.d=a:da(a)&&x(b,a);return this.createElement("shape").attr(b)},circle:function(a,b,c){var d=this.symbol("circle");if(da(a))c=a.r,b=a.y,a=a.x;d.isCircle=!0;d.r=c;return d.attr({x:a,y:b})},g:function(a){var b;a&&(b={className:"highcharts-"+a,"class":"highcharts-"+a});return this.createElement(Ka).attr(b)},image:function(a,
b,c,d,e){var f=this.createElement("img").attr({src:a});arguments.length>1&&f.attr({x:b,y:c,width:d,height:e});return f},createElement:function(a){return a==="rect"?this.symbol(a):ua.prototype.createElement.call(this,a)},invertChild:function(a,b){var c=this,d=b.style,e=a.tagName==="IMG"&&a.style;L(a,{flip:"x",left:D(d.width)-(e?D(e.top):1),top:D(d.height)-(e?D(e.left):1),rotation:-90});o(a.childNodes,function(b){c.invertChild(b,a)})},symbols:{arc:function(a,b,c,d,e){var f=e.start,g=e.end,h=e.r||c||
d,c=e.innerR,d=X(f),i=aa(f),j=X(g),k=aa(g);if(g-f===0)return["x"];f=["wa",a-h,b-h,a+h,b+h,a+h*d,b+h*i,a+h*j,b+h*k];e.open&&!c&&f.push("e","M",a,b);f.push("at",a-c,b-c,a+c,b+c,a+c*j,b+c*k,a+c*d,b+c*i,"x","e");f.isArc=!0;return f},circle:function(a,b,c,d,e){e&&(c=d=2*e.r);e&&e.isCircle&&(a-=c/2,b-=d/2);return["wa",a,b,a+c,b+d,a+c,b+d/2,a+c,b+d/2,"e"]},rect:function(a,b,c,d,e){return ua.prototype.symbols[!q(e)||!e.r?"square":"callout"].call(0,a,b,c,d,e)}}};A.VMLRenderer=F=function(){this.init.apply(this,
arguments)};F.prototype=z(ua.prototype,Na);$a=F}ua.prototype.measureSpanWidth=function(a,b){var c=B.createElement("span"),d;d=B.createTextNode(a);c.appendChild(d);L(c,b);this.box.appendChild(c);d=c.offsetWidth;Ra(c);return d};var Mb;if(fa)A.CanVGRenderer=F=function(){Ca="http://www.w3.org/1999/xhtml"},F.prototype.symbols={},Mb=function(){function a(){var a=b.length,d;for(d=0;d<a;d++)b[d]();b=[]}var b=[];return{push:function(c,d){b.length===0&&Rb(d,a);b.push(c)}}}(),$a=F;Ta.prototype={addLabel:function(){var a=
this.axis,b=a.options,c=a.chart,d=a.categories,e=a.names,f=this.pos,g=b.labels,h=a.tickPositions,i=f===h[0],j=f===h[h.length-1],e=d?p(d[f],e[f],f):f,d=this.label,h=h.info,k;a.isDatetimeAxis&&h&&(k=b.dateTimeLabelFormats[h.higherRanks[f]||h.unitName]);this.isFirst=i;this.isLast=j;b=a.labelFormatter.call({axis:a,chart:c,isFirst:i,isLast:j,dateTimeLabelFormat:k,value:a.isLog?ea(ia(e)):e});q(d)?d&&d.attr({text:b}):(this.labelLength=(this.label=d=q(b)&&g.enabled?c.renderer.text(b,0,0,g.useHTML).css(z(g.style)).add(a.labelGroup):
null)&&d.getBBox().width,this.rotation=0)},getLabelSize:function(){return this.label?this.label.getBBox()[this.axis.horiz?"height":"width"]:0},handleOverflow:function(a){var b=this.axis,c=a.x,d=b.chart.chartWidth,e=b.chart.spacing,f=p(b.labelLeft,C(b.pos,e[3])),e=p(b.labelRight,u(b.pos+b.len,d-e[1])),g=this.label,h=this.rotation,i={left:0,center:0.5,right:1}[b.labelAlign],j=g.getBBox().width,k=b.slotWidth,l=1,m,n={};if(h)h<0&&c-i*j<f?m=r(c/X(h*ha)-f):h>0&&c+i*j>e&&(m=r((d-c)/X(h*ha)));else if(d=c+
(1-i)*j,c-i*j<f?k=a.x+k*(1-i)-f:d>e&&(k=e-a.x+k*i,l=-1),k=C(b.slotWidth,k),k<b.slotWidth&&b.labelAlign==="center"&&(a.x+=l*(b.slotWidth-k-i*(b.slotWidth-C(j,k)))),j>k||b.autoRotation&&g.styles.width)m=k;if(m){n.width=m;if(!b.options.labels.style.textOverflow)n.textOverflow="ellipsis";g.css(n)}},getPosition:function(a,b,c,d){var e=this.axis,f=e.chart,g=d&&f.oldChartHeight||f.chartHeight;return{x:a?e.translate(b+c,null,null,d)+e.transB:e.left+e.offset+(e.opposite?(d&&f.oldChartWidth||f.chartWidth)-
e.right-e.left:0),y:a?g-e.bottom+e.offset-(e.opposite?e.height:0):g-e.translate(b+c,null,null,d)-e.transB}},getLabelPosition:function(a,b,c,d,e,f,g,h){var i=this.axis,j=i.transA,k=i.reversed,l=i.staggerLines,m=i.tickRotCorr||{x:0,y:0},c=p(e.y,m.y+(i.side===2?8:-(c.getBBox().height/2))),a=a+e.x+m.x-(f&&d?f*j*(k?-1:1):0),b=b+c-(f&&!d?f*j*(k?1:-1):0);l&&(b+=g/(h||1)%l*(i.labelOffset/l));return{x:a,y:r(b)}},getMarkPath:function(a,b,c,d,e,f){return f.crispLine(["M",a,b,"L",a+(e?0:-c),b+(e?c:0)],d)},render:function(a,
b,c){var d=this.axis,e=d.options,f=d.chart.renderer,g=d.horiz,h=this.type,i=this.label,j=this.pos,k=e.labels,l=this.gridLine,m=h?h+"Grid":"grid",n=h?h+"Tick":"tick",v=e[m+"LineWidth"],s=e[m+"LineColor"],o=e[m+"LineDashStyle"],N=e[n+"Length"],m=e[n+"Width"]||0,t=e[n+"Color"],w=e[n+"Position"],n=this.mark,ga=k.step,q=!0,u=d.tickmarkOffset,r=this.getPosition(g,j,u,b),x=r.x,r=r.y,z=g&&x===d.pos+d.len||!g&&r===d.pos?-1:1,c=p(c,1);this.isActive=!0;if(v){j=d.getPlotLinePath(j+u,v*z,b,!0);if(l===y){l={stroke:s,
"stroke-width":v};if(o)l.dashstyle=o;if(!h)l.zIndex=1;if(b)l.opacity=0;this.gridLine=l=v?f.path(j).attr(l).add(d.gridGroup):null}if(!b&&l&&j)l[this.isNew?"attr":"animate"]({d:j,opacity:c})}if(m&&N)w==="inside"&&(N=-N),d.opposite&&(N=-N),h=this.getMarkPath(x,r,N,m*z,g,f),n?n.animate({d:h,opacity:c}):this.mark=f.path(h).attr({stroke:t,"stroke-width":m,opacity:c}).add(d.axisGroup);if(i&&!isNaN(x))i.xy=r=this.getLabelPosition(x,r,i,g,k,u,a,ga),this.isFirst&&!this.isLast&&!p(e.showFirstLabel,1)||this.isLast&&
!this.isFirst&&!p(e.showLastLabel,1)?q=!1:g&&!d.isRadial&&!k.step&&!k.rotation&&!b&&c!==0&&this.handleOverflow(r),ga&&a%ga&&(q=!1),q&&!isNaN(r.y)?(r.opacity=c,i[this.isNew?"attr":"animate"](r),this.isNew=!1):i.attr("y",-9999)},destroy:function(){Qa(this,this.axis)}};A.PlotLineOrBand=function(a,b){this.axis=a;if(b)this.options=b,this.id=b.id};A.PlotLineOrBand.prototype={render:function(){var a=this,b=a.axis,c=b.horiz,d=a.options,e=d.label,f=a.label,g=d.width,h=d.to,i=d.from,j=q(i)&&q(h),k=d.value,
l=d.dashStyle,m=a.svgElem,n=[],v,s=d.color,p=d.zIndex,o=d.events,t={},w=b.chart.renderer;b.isLog&&(i=Ea(i),h=Ea(h),k=Ea(k));if(g){if(n=b.getPlotLinePath(k,g),t={stroke:s,"stroke-width":g},l)t.dashstyle=l}else if(j){n=b.getPlotBandPath(i,h,d);if(s)t.fill=s;if(d.borderWidth)t.stroke=d.borderColor,t["stroke-width"]=d.borderWidth}else return;if(q(p))t.zIndex=p;if(m)if(n)m.animate({d:n},null,m.onGetPath);else{if(m.hide(),m.onGetPath=function(){m.show()},f)a.label=f=f.destroy()}else if(n&&n.length&&(a.svgElem=
m=w.path(n).attr(t).add(),o))for(v in d=function(b){m.on(b,function(c){o[b].apply(a,[c])})},o)d(v);if(e&&q(e.text)&&n&&n.length&&b.width>0&&b.height>0){e=z({align:c&&j&&"center",x:c?!j&&4:10,verticalAlign:!c&&j&&"middle",y:c?j?16:10:j?6:-4,rotation:c&&!j&&90},e);if(!f){t={align:e.textAlign||e.align,rotation:e.rotation};if(q(p))t.zIndex=p;a.label=f=w.text(e.text,0,0,e.useHTML).attr(t).css(e.style).add()}b=[n[1],n[4],j?n[6]:n[1]];j=[n[2],n[5],j?n[7]:n[2]];n=Pa(b);c=Pa(j);f.align(e,!1,{x:n,y:c,width:Fa(b)-
n,height:Fa(j)-c});f.show()}else f&&f.hide();return a},destroy:function(){ja(this.axis.plotLinesAndBands,this);delete this.axis;Qa(this)}};var va=A.Axis=function(){this.init.apply(this,arguments)};va.prototype={defaultOptions:{dateTimeLabelFormats:{millisecond:"%H:%M:%S.%L",second:"%H:%M:%S",minute:"%H:%M",hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"},endOnTick:!1,gridLineColor:"#D8D8D8",labels:{enabled:!0,style:{color:"#606060",cursor:"default",fontSize:"11px"},x:0,y:15},lineColor:"#C0D0E0",
lineWidth:1,minPadding:0.01,maxPadding:0.01,minorGridLineColor:"#E0E0E0",minorGridLineWidth:1,minorTickColor:"#A0A0A0",minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tickColor:"#C0D0E0",tickLength:10,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",tickWidth:1,title:{align:"middle",style:{color:"#707070"}},type:"linear"},defaultYAxisOptions:{endOnTick:!0,gridLineWidth:1,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8,y:3},lineWidth:0,maxPadding:0.05,
minPadding:0.05,startOnTick:!0,tickWidth:0,title:{rotation:270,text:"Values"},stackLabels:{enabled:!1,formatter:function(){return A.numberFormat(this.total,-1)},style:z(ba.line.dataLabels.style,{color:"#000000"})}},defaultLeftAxisOptions:{labels:{x:-15,y:null},title:{rotation:270}},defaultRightAxisOptions:{labels:{x:15,y:null},title:{rotation:90}},defaultBottomAxisOptions:{labels:{autoRotation:[-45],x:0,y:null},title:{rotation:0}},defaultTopAxisOptions:{labels:{autoRotation:[-45],x:0,y:-15},title:{rotation:0}},
init:function(a,b){var c=b.isX;this.horiz=a.inverted?!c:c;this.coll=(this.isXAxis=c)?"xAxis":"yAxis";this.opposite=b.opposite;this.side=b.side||(this.horiz?this.opposite?0:2:this.opposite?1:3);this.setOptions(b);var d=this.options,e=d.type;this.labelFormatter=d.labels.formatter||this.defaultLabelFormatter;this.userOptions=b;this.minPixelPadding=0;this.chart=a;this.reversed=d.reversed;this.zoomEnabled=d.zoomEnabled!==!1;this.categories=d.categories||e==="category";this.names=this.names||[];this.isLog=
e==="logarithmic";this.isDatetimeAxis=e==="datetime";this.isLinked=q(d.linkedTo);this.ticks={};this.labelEdge=[];this.minorTicks={};this.plotLinesAndBands=[];this.alternateBands={};this.len=0;this.minRange=this.userMinRange=d.minRange||d.maxZoom;this.range=d.range;this.offset=d.offset||0;this.stacks={};this.oldStacks={};this.min=this.max=null;this.crosshair=p(d.crosshair,sa(a.options.tooltip.crosshairs)[c?0:1],!1);var f,d=this.options.events;Ma(this,a.axes)===-1&&(c&&!this.isColorAxis?a.axes.splice(a.xAxis.length,
0,this):a.axes.push(this),a[this.coll].push(this));this.series=this.series||[];if(a.inverted&&c&&this.reversed===y)this.reversed=!0;this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;for(f in d)H(this,f,d[f]);if(this.isLog)this.val2lin=Ea,this.lin2val=ia},setOptions:function(a){this.options=z(this.defaultOptions,this.isXAxis?{}:this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],z(T[this.coll],
a))},defaultLabelFormatter:function(){var a=this.axis,b=this.value,c=a.categories,d=this.dateTimeLabelFormat,e=T.lang.numericSymbols,f=e&&e.length,g,h=a.options.labels.format,a=a.isLog?b:a.tickInterval;if(h)g=Ja(h,this);else if(c)g=b;else if(d)g=Oa(d,b);else if(f&&a>=1E3)for(;f--&&g===y;)c=Math.pow(1E3,f+1),a>=c&&b*10%c===0&&e[f]!==null&&(g=A.numberFormat(b/c,-1)+e[f]);g===y&&(g=O(b)>=1E4?A.numberFormat(b,-1):A.numberFormat(b,-1,y,""));return g},getSeriesExtremes:function(){var a=this,b=a.chart;a.hasVisibleSeries=
!1;a.dataMin=a.dataMax=a.ignoreMinPadding=a.ignoreMaxPadding=null;a.buildStacks&&a.buildStacks();o(a.series,function(c){if(c.visible||!b.options.chart.ignoreHiddenSeries){var d;d=c.options.threshold;var e;a.hasVisibleSeries=!0;a.isLog&&d<=0&&(d=null);if(a.isXAxis){if(d=c.xData,d.length)a.dataMin=C(p(a.dataMin,d[0]),Pa(d)),a.dataMax=u(p(a.dataMax,d[0]),Fa(d))}else{c.getExtremes();e=c.dataMax;c=c.dataMin;if(q(c)&&q(e))a.dataMin=C(p(a.dataMin,c),c),a.dataMax=u(p(a.dataMax,e),e);if(q(d))if(a.dataMin>=
d)a.dataMin=d,a.ignoreMinPadding=!0;else if(a.dataMax<d)a.dataMax=d,a.ignoreMaxPadding=!0}}})},translate:function(a,b,c,d,e,f){var g=this.linkedParent||this,h=1,i=0,j=d?g.oldTransA:g.transA,d=d?g.oldMin:g.min,k=g.minPixelPadding,e=(g.doPostTranslate||g.isLog&&e)&&g.lin2val;if(!j)j=g.transA;if(c)h*=-1,i=g.len;g.reversed&&(h*=-1,i-=h*(g.sector||g.len));b?(a=a*h+i,a-=k,a=a/j+d,e&&(a=g.lin2val(a))):(e&&(a=g.val2lin(a)),f==="between"&&(f=0.5),a=h*(a-d)*j+i+h*k+(ra(f)?j*f*g.pointRange:0));return a},toPixels:function(a,
b){return this.translate(a,!1,!this.horiz,null,!0)+(b?0:this.pos)},toValue:function(a,b){return this.translate(a-(b?0:this.pos),!0,!this.horiz,null,!0)},getPlotLinePath:function(a,b,c,d,e){var f=this.chart,g=this.left,h=this.top,i,j,k=c&&f.oldChartHeight||f.chartHeight,l=c&&f.oldChartWidth||f.chartWidth,m;i=this.transB;var n=function(a,b,c){if(a<b||a>c)d?a=C(u(b,a),c):m=!0;return a},e=p(e,this.translate(a,null,null,c)),a=c=r(e+i);i=j=r(k-e-i);isNaN(e)?m=!0:this.horiz?(i=h,j=k-this.bottom,a=c=n(a,
g,g+this.width)):(a=g,c=l-this.right,i=j=n(i,h,h+this.height));return m&&!d?null:f.renderer.crispLine(["M",a,i,"L",c,j],b||1)},getLinearTickPositions:function(a,b,c){var d,e=ea(V(b/a)*a),f=ea(ta(c/a)*a),g=[];if(b===c&&ra(b))return[b];for(b=e;b<=f;){g.push(b);b=ea(b+a);if(b===d)break;d=b}return g},getMinorTickPositions:function(){var a=this.options,b=this.tickPositions,c=this.minorTickInterval,d=[],e,f=this.min;e=this.max;var g=e-f;if(g&&g/c<this.len/3)if(this.isLog){a=b.length;for(e=1;e<a;e++)d=d.concat(this.getLogTickPositions(c,
b[e-1],b[e],!0))}else if(this.isDatetimeAxis&&a.minorTickInterval==="auto")d=d.concat(this.getTimeTicks(this.normalizeTimeTickInterval(c),f,e,a.startOfWeek));else for(b=f+(b[0]-f)%c;b<=e;b+=c)d.push(b);this.trimTicks(d);return d},adjustForMinRange:function(){var a=this.options,b=this.min,c=this.max,d,e=this.dataMax-this.dataMin>=this.minRange,f,g,h,i,j;if(this.isXAxis&&this.minRange===y&&!this.isLog)q(a.min)||q(a.max)?this.minRange=null:(o(this.series,function(a){i=a.xData;for(g=j=a.xIncrement?1:
i.length-1;g>0;g--)if(h=i[g]-i[g-1],f===y||h<f)f=h}),this.minRange=C(f*5,this.dataMax-this.dataMin));if(c-b<this.minRange){var k=this.minRange;d=(k-c+b)/2;d=[b-d,p(a.min,b-d)];if(e)d[2]=this.dataMin;b=Fa(d);c=[b+k,p(a.max,b+k)];if(e)c[2]=this.dataMax;c=Pa(c);c-b<k&&(d[0]=c-k,d[1]=p(a.min,c-k),b=Fa(d))}this.min=b;this.max=c},setAxisTranslation:function(a){var b=this,c=b.max-b.min,d=b.axisPointRange||0,e,f=0,g=0,h=b.linkedParent,i=!!b.categories,j=b.transA,k=b.isXAxis;if(k||i||d)if(h?(f=h.minPointOffset,
g=h.pointRangePadding):o(b.series,function(a){var h=i?1:k?a.pointRange:b.axisPointRange||0,j=a.options.pointPlacement,v=a.closestPointRange;h>c&&(h=0);d=u(d,h);b.single||(f=u(f,Da(j)?0:h/2),g=u(g,j==="on"?0:h));!a.noSharedTooltip&&q(v)&&(e=q(e)?C(e,v):v)}),h=b.ordinalSlope&&e?b.ordinalSlope/e:1,b.minPointOffset=f*=h,b.pointRangePadding=g*=h,b.pointRange=C(d,c),k)b.closestPointRange=e;if(a)b.oldTransA=j;b.translationSlope=b.transA=j=b.len/(c+g||1);b.transB=b.horiz?b.left:b.bottom;b.minPixelPadding=
j*f},setTickInterval:function(a){var b=this,c=b.chart,d=b.options,e=b.isLog,f=b.isDatetimeAxis,g=b.isXAxis,h=b.isLinked,i=d.maxPadding,j=d.minPadding,k=d.tickInterval,l=d.tickPixelInterval,m=b.categories;!f&&!m&&!h&&this.getTickAmount();h?(b.linkedParent=c[b.coll][d.linkedTo],c=b.linkedParent.getExtremes(),b.min=p(c.min,c.dataMin),b.max=p(c.max,c.dataMax),d.type!==b.linkedParent.options.type&&la(11,1)):(b.min=p(b.userMin,d.min,b.dataMin),b.max=p(b.userMax,d.max,b.dataMax));if(e)!a&&C(b.min,p(b.dataMin,
b.min))<=0&&la(10,1),b.min=ea(Ea(b.min)),b.max=ea(Ea(b.max));if(b.range&&q(b.max))b.userMin=b.min=u(b.min,b.max-b.range),b.userMax=b.max,b.range=null;b.beforePadding&&b.beforePadding();b.adjustForMinRange();if(!m&&!b.axisPointRange&&!b.usePercentage&&!h&&q(b.min)&&q(b.max)&&(c=b.max-b.min)){if(!q(d.min)&&!q(b.userMin)&&j&&(b.dataMin<0||!b.ignoreMinPadding))b.min-=c*j;if(!q(d.max)&&!q(b.userMax)&&i&&(b.dataMax>0||!b.ignoreMaxPadding))b.max+=c*i}if(ra(d.floor))b.min=u(b.min,d.floor);if(ra(d.ceiling))b.max=
C(b.max,d.ceiling);b.tickInterval=b.min===b.max||b.min===void 0||b.max===void 0?1:h&&!k&&l===b.linkedParent.options.tickPixelInterval?k=b.linkedParent.tickInterval:p(k,this.tickAmount?(b.max-b.min)/u(this.tickAmount-1,1):void 0,m?1:(b.max-b.min)*l/u(b.len,l));g&&!a&&o(b.series,function(a){a.processData(b.min!==b.oldMin||b.max!==b.oldMax)});b.setAxisTranslation(!0);b.beforeSetTickPositions&&b.beforeSetTickPositions();if(b.postProcessTickInterval)b.tickInterval=b.postProcessTickInterval(b.tickInterval);
if(b.pointRange)b.tickInterval=u(b.pointRange,b.tickInterval);a=p(d.minTickInterval,b.isDatetimeAxis&&b.closestPointRange);if(!k&&b.tickInterval<a)b.tickInterval=a;if(!f&&!e&&!k)b.tickInterval=qb(b.tickInterval,null,pb(b.tickInterval),p(d.allowDecimals,!(b.tickInterval>0.5&&b.tickInterval<5&&b.max>1E3&&b.max<9999)),!!this.tickAmount);if(!this.tickAmount&&this.len)b.tickInterval=b.unsquish();this.setTickPositions()},setTickPositions:function(){var a=this.options,b,c=a.tickPositions,d=a.tickPositioner,
e=a.startOnTick,f=a.endOnTick,g;this.tickmarkOffset=this.categories&&a.tickmarkPlacement==="between"&&this.tickInterval===1?0.5:0;this.minorTickInterval=a.minorTickInterval==="auto"&&this.tickInterval?this.tickInterval/5:a.minorTickInterval;this.tickPositions=b=c&&c.slice();if(!b&&(this.tickPositions=b=this.isDatetimeAxis?this.getTimeTicks(this.normalizeTimeTickInterval(this.tickInterval,a.units),this.min,this.max,a.startOfWeek,this.ordinalPositions,this.closestPointRange,!0):this.isLog?this.getLogTickPositions(this.tickInterval,
this.min,this.max):this.getLinearTickPositions(this.tickInterval,this.min,this.max),d&&(d=d.apply(this,[this.min,this.max]))))this.tickPositions=b=d;if(!this.isLinked)this.trimTicks(b,e,f),this.min===this.max&&q(this.min)&&!this.tickAmount&&(g=!0,this.min-=0.5,this.max+=0.5),this.single=g,!c&&!d&&this.adjustTickAmount()},trimTicks:function(a,b,c){var d=a[0],e=a[a.length-1],f=this.minPointOffset||0;b?this.min=d:this.min-f>d&&a.shift();c?this.max=e:this.max+f<e&&a.pop();a.length===0&&q(d)&&a.push((e+
d)/2)},getTickAmount:function(){var a={},b,c=this.options,d=c.tickAmount,e=c.tickPixelInterval;!q(c.tickInterval)&&this.len<e&&!this.isRadial&&!this.isLog&&c.startOnTick&&c.endOnTick&&(d=2);!d&&this.chart.options.chart.alignTicks!==!1&&c.alignTicks!==!1&&(o(this.chart[this.coll],function(c){var d=c.options,e=c.horiz,d=[e?d.left:d.top,e?d.width:d.height,d.pane].join(",");a[d]?c.series.length&&(b=!0):a[d]=1}),b&&(d=ta(this.len/e)+1));if(d<4)this.finalTickAmt=d,d=5;this.tickAmount=d},adjustTickAmount:function(){var a=
this.tickInterval,b=this.tickPositions,c=this.tickAmount,d=this.finalTickAmt,e=b&&b.length;if(e<c){for(;b.length<c;)b.push(ea(b[b.length-1]+a));this.transA*=(e-1)/(c-1);this.max=b[b.length-1]}else e>c&&(this.tickInterval*=2,this.setTickPositions());if(q(d)){for(a=c=b.length;a--;)(d===3&&a%2===1||d<=2&&a>0&&a<c-1)&&b.splice(a,1);this.finalTickAmt=y}},setScale:function(){var a=this.stacks,b,c,d,e;this.oldMin=this.min;this.oldMax=this.max;this.oldAxisLength=this.len;this.setAxisSize();e=this.len!==this.oldAxisLength;
o(this.series,function(a){if(a.isDirtyData||a.isDirty||a.xAxis.isDirty)d=!0});if(e||d||this.isLinked||this.forceRedraw||this.userMin!==this.oldUserMin||this.userMax!==this.oldUserMax){if(!this.isXAxis)for(b in a)for(c in a[b])a[b][c].total=null,a[b][c].cum=0;this.forceRedraw=!1;this.getSeriesExtremes();this.setTickInterval();this.oldUserMin=this.userMin;this.oldUserMax=this.userMax;if(!this.isDirty)this.isDirty=e||this.min!==this.oldMin||this.max!==this.oldMax}else if(!this.isXAxis){if(this.oldStacks)a=
this.stacks=this.oldStacks;for(b in a)for(c in a[b])a[b][c].cum=a[b][c].total}},setExtremes:function(a,b,c,d,e){var f=this,g=f.chart,c=p(c,!0);o(f.series,function(a){delete a.kdTree});e=x(e,{min:a,max:b});I(f,"setExtremes",e,function(){f.userMin=a;f.userMax=b;f.eventArgs=e;f.isDirtyExtremes=!0;c&&g.redraw(d)})},zoom:function(a,b){var c=this.dataMin,d=this.dataMax,e=this.options;this.allowZoomOutside||(q(c)&&a<=C(c,p(e.min,c))&&(a=y),q(d)&&b>=u(d,p(e.max,d))&&(b=y));this.displayBtn=a!==y||b!==y;this.setExtremes(a,
b,!1,y,{trigger:"zoom"});return!0},setAxisSize:function(){var a=this.chart,b=this.options,c=b.offsetLeft||0,d=this.horiz,e=p(b.width,a.plotWidth-c+(b.offsetRight||0)),f=p(b.height,a.plotHeight),g=p(b.top,a.plotTop),b=p(b.left,a.plotLeft+c),c=/%$/;c.test(f)&&(f=parseFloat(f)/100*a.plotHeight);c.test(g)&&(g=parseFloat(g)/100*a.plotHeight+a.plotTop);this.left=b;this.top=g;this.width=e;this.height=f;this.bottom=a.chartHeight-f-g;this.right=a.chartWidth-e-b;this.len=u(d?e:f,0);this.pos=d?b:g},getExtremes:function(){var a=
this.isLog;return{min:a?ea(ia(this.min)):this.min,max:a?ea(ia(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(a){var b=this.isLog,c=b?ia(this.min):this.min,b=b?ia(this.max):this.max;a===null?a=b<0?b:c:c>a?a=c:b<a&&(a=b);return this.translate(a,0,1,0,1)},autoLabelAlign:function(a){a=(p(a,0)-this.side*90+720)%360;return a>15&&a<165?"right":a>195&&a<345?"left":"center"},unsquish:function(){var a=this.ticks,b=this.options.labels,
c=this.horiz,d=this.tickInterval,e=d,f=this.len/(((this.categories?1:0)+this.max-this.min)/d),g,h=b.rotation,i=this.chart.renderer.fontMetrics(b.style.fontSize,a[0]&&a[0].label),j,k=Number.MAX_VALUE,l,m=function(a){a/=f||1;a=a>1?ta(a):1;return a*d};c?(l=q(h)?[h]:f<p(b.autoRotationLimit,80)&&!b.staggerLines&&!b.step&&b.autoRotation)&&o(l,function(a){var b;if(a===h||a&&a>=-90&&a<=90)j=m(O(i.h/aa(ha*a))),b=j+O(a/360),b<k&&(k=b,g=a,e=j)}):e=m(i.h);this.autoRotation=l;this.labelRotation=g;return e},renderUnsquish:function(){var a=
this.chart,b=a.renderer,c=this.tickPositions,d=this.ticks,e=this.options.labels,f=this.horiz,g=a.margin,h=this.categories?c.length:c.length-1,i=this.slotWidth=f&&!e.step&&!e.rotation&&(this.staggerLines||1)*a.plotWidth/h||!f&&(g[3]&&g[3]-a.spacing[3]||a.chartWidth*0.33),j=u(1,r(i-2*(e.padding||5))),k={},g=b.fontMetrics(e.style.fontSize,d[0]&&d[0].label),h=e.style.textOverflow,l,m=0;if(!Da(e.rotation))k.rotation=e.rotation;if(this.autoRotation)o(c,function(a){if((a=d[a])&&a.labelLength>m)m=a.labelLength}),
m>j&&m>g.h?k.rotation=this.labelRotation:this.labelRotation=0;else if(i&&(l={width:j+"px"},!h)){l.textOverflow="clip";for(i=c.length;!f&&i--;)if(j=c[i],j=d[j].label)if(j.styles.textOverflow==="ellipsis"&&j.css({textOverflow:"clip"}),j.getBBox().height>this.len/c.length-(g.h-g.f))j.specCss={textOverflow:"ellipsis"}}if(k.rotation&&(l={width:(m>a.chartHeight*0.5?a.chartHeight*0.33:a.chartHeight)+"px"},!h))l.textOverflow="ellipsis";this.labelAlign=k.align=e.align||this.autoLabelAlign(this.labelRotation);
o(c,function(a){var b=(a=d[a])&&a.label;if(b)l&&b.css(z(l,b.specCss)),delete b.specCss,b.attr(k),a.rotation=k.rotation});this.tickRotCorr=b.rotCorr(g.b,this.labelRotation||0,this.side===2)},hasData:function(){return this.hasVisibleSeries||q(this.min)&&q(this.max)&&!!this.tickPositions},getOffset:function(){var a=this,b=a.chart,c=b.renderer,d=a.options,e=a.tickPositions,f=a.ticks,g=a.horiz,h=a.side,i=b.inverted?[1,0,3,2][h]:h,j,k,l=0,m,n=0,v=d.title,s=d.labels,S=0,N=b.axisOffset,b=b.clipOffset,t=[-1,
1,1,-1][h],w;j=a.hasData();a.showAxis=k=j||p(d.showEmpty,!0);a.staggerLines=a.horiz&&s.staggerLines;if(!a.axisGroup)a.gridGroup=c.g("grid").attr({zIndex:d.gridZIndex||1}).add(),a.axisGroup=c.g("axis").attr({zIndex:d.zIndex||2}).add(),a.labelGroup=c.g("axis-labels").attr({zIndex:s.zIndex||7}).addClass("highcharts-"+a.coll.toLowerCase()+"-labels").add();if(j||a.isLinked){if(o(e,function(b){f[b]?f[b].addLabel():f[b]=new Ta(a,b)}),a.renderUnsquish(),o(e,function(b){if(h===0||h===2||{1:"left",3:"right"}[h]===
a.labelAlign)S=u(f[b].getLabelSize(),S)}),a.staggerLines)S*=a.staggerLines,a.labelOffset=S}else for(w in f)f[w].destroy(),delete f[w];if(v&&v.text&&v.enabled!==!1){if(!a.axisTitle)a.axisTitle=c.text(v.text,0,0,v.useHTML).attr({zIndex:7,rotation:v.rotation||0,align:v.textAlign||{low:"left",middle:"center",high:"right"}[v.align]}).addClass("highcharts-"+this.coll.toLowerCase()+"-title").css(v.style).add(a.axisGroup),a.axisTitle.isNew=!0;if(k)l=a.axisTitle.getBBox()[g?"height":"width"],m=v.offset,n=
q(m)?0:p(v.margin,g?5:10);a.axisTitle[k?"show":"hide"]()}a.offset=t*p(d.offset,N[h]);a.tickRotCorr=a.tickRotCorr||{x:0,y:0};c=h===2?a.tickRotCorr.y:0;g=S+n+(S&&t*(g?p(s.y,a.tickRotCorr.y+8):s.x)-c);a.axisTitleMargin=p(m,g);N[h]=u(N[h],a.axisTitleMargin+l+t*a.offset,g);l=V(d.lineWidth/2)*2;d.offset&&(l=u(0,l-d.offset));b[i]=u(b[i],l)},getLinePath:function(a){var b=this.chart,c=this.opposite,d=this.offset,e=this.horiz,f=this.left+(c?this.width:0)+d,d=b.chartHeight-this.bottom-(c?this.height:0)+d;c&&
(a*=-1);return b.renderer.crispLine(["M",e?this.left:f,e?d:this.top,"L",e?b.chartWidth-this.right:f,e?d:b.chartHeight-this.bottom],a)},getTitlePosition:function(){var a=this.horiz,b=this.left,c=this.top,d=this.len,e=this.options.title,f=a?b:c,g=this.opposite,h=this.offset,i=e.x||0,j=e.y||0,k=D(e.style.fontSize||12),d={low:f+(a?0:d),middle:f+d/2,high:f+(a?d:0)}[e.align],b=(a?c+this.height:b)+(a?1:-1)*(g?-1:1)*this.axisTitleMargin+(this.side===2?k:0);return{x:a?d+i:b+(g?this.width:0)+h+i,y:a?b+j-(g?
this.height:0)+h:d+j}},render:function(){var a=this,b=a.chart,c=b.renderer,d=a.options,e=a.isLog,f=a.isLinked,g=a.tickPositions,h=a.axisTitle,i=a.ticks,j=a.minorTicks,k=a.alternateBands,l=d.stackLabels,m=d.alternateGridColor,n=a.tickmarkOffset,v=d.lineWidth,s,p=b.hasRendered&&q(a.oldMin)&&!isNaN(a.oldMin),N=a.showAxis,t,w;a.labelEdge.length=0;a.overlap=!1;o([i,j,k],function(a){for(var b in a)a[b].isActive=!1});if(a.hasData()||f){a.minorTickInterval&&!a.categories&&o(a.getMinorTickPositions(),function(b){j[b]||
(j[b]=new Ta(a,b,"minor"));p&&j[b].isNew&&j[b].render(null,!0);j[b].render(null,!1,1)});if(g.length&&(o(g,function(b,c){if(!f||b>=a.min&&b<=a.max)i[b]||(i[b]=new Ta(a,b)),p&&i[b].isNew&&i[b].render(c,!0,0.1),i[b].render(c)}),n&&(a.min===0||a.single)))i[-1]||(i[-1]=new Ta(a,-1,null,!0)),i[-1].render(-1);m&&o(g,function(b,c){if(c%2===0&&b<a.max)k[b]||(k[b]=new A.PlotLineOrBand(a)),t=b+n,w=g[c+1]!==y?g[c+1]+n:a.max,k[b].options={from:e?ia(t):t,to:e?ia(w):w,color:m},k[b].render(),k[b].isActive=!0});if(!a._addedPlotLB)o((d.plotLines||
[]).concat(d.plotBands||[]),function(b){a.addPlotBandOrLine(b)}),a._addedPlotLB=!0}o([i,j,k],function(a){var c,d,e=[],f=za?za.duration||500:0,g=function(){for(d=e.length;d--;)a[e[d]]&&!a[e[d]].isActive&&(a[e[d]].destroy(),delete a[e[d]])};for(c in a)if(!a[c].isActive)a[c].render(c,!1,0),a[c].isActive=!1,e.push(c);a===k||!b.hasRendered||!f?g():f&&setTimeout(g,f)});if(v)s=a.getLinePath(v),a.axisLine?a.axisLine.animate({d:s}):a.axisLine=c.path(s).attr({stroke:d.lineColor,"stroke-width":v,zIndex:7}).add(a.axisGroup),
a.axisLine[N?"show":"hide"]();if(h&&N)h[h.isNew?"attr":"animate"](a.getTitlePosition()),h.isNew=!1;l&&l.enabled&&a.renderStackTotals();a.isDirty=!1},redraw:function(){this.render();o(this.plotLinesAndBands,function(a){a.render()});o(this.series,function(a){a.isDirty=!0})},destroy:function(a){var b=this,c=b.stacks,d,e=b.plotLinesAndBands;a||Z(b);for(d in c)Qa(c[d]),c[d]=null;o([b.ticks,b.minorTicks,b.alternateBands],function(a){Qa(a)});for(a=e.length;a--;)e[a].destroy();o("stackTotalGroup,axisLine,axisTitle,axisGroup,cross,gridGroup,labelGroup".split(","),
function(a){b[a]&&(b[a]=b[a].destroy())});this.cross&&this.cross.destroy()},drawCrosshair:function(a,b){var c,d=this.crosshair,e=d.animation;if(!this.crosshair||(q(b)||!p(this.crosshair.snap,!0))===!1||b&&b.series&&b.series[this.coll]!==this)this.hideCrosshair();else if(p(d.snap,!0)?q(b)&&(c=this.isXAxis?b.plotX:this.len-b.plotY):c=this.horiz?a.chartX-this.pos:this.len-a.chartY+this.pos,c=this.isRadial?this.getPlotLinePath(this.isXAxis?b.x:p(b.stackY,b.y))||null:this.getPlotLinePath(null,null,null,
null,c)||null,c===null)this.hideCrosshair();else if(this.cross)this.cross.attr({visibility:"visible"})[e?"animate":"attr"]({d:c},e);else{e=this.categories&&!this.isRadial;e={"stroke-width":d.width||(e?this.transA:1),stroke:d.color||(e?"rgba(155,200,255,0.2)":"#C0C0C0"),zIndex:d.zIndex||2};if(d.dashStyle)e.dashstyle=d.dashStyle;this.cross=this.chart.renderer.path(c).attr(e).add()}},hideCrosshair:function(){this.cross&&this.cross.hide()}};x(va.prototype,{getPlotBandPath:function(a,b){var c=this.getPlotLinePath(b,
null,null,!0),d=this.getPlotLinePath(a,null,null,!0);d&&c&&d.toString()!==c.toString()?d.push(c[4],c[5],c[1],c[2]):d=null;return d},addPlotBand:function(a){return this.addPlotBandOrLine(a,"plotBands")},addPlotLine:function(a){return this.addPlotBandOrLine(a,"plotLines")},addPlotBandOrLine:function(a,b){var c=(new A.PlotLineOrBand(this,a)).render(),d=this.userOptions;c&&(b&&(d[b]=d[b]||[],d[b].push(a)),this.plotLinesAndBands.push(c));return c},removePlotBandOrLine:function(a){for(var b=this.plotLinesAndBands,
c=this.options,d=this.userOptions,e=b.length;e--;)b[e].id===a&&b[e].destroy();o([c.plotLines||[],d.plotLines||[],c.plotBands||[],d.plotBands||[]],function(b){for(e=b.length;e--;)b[e].id===a&&ja(b,b[e])})}});va.prototype.getTimeTicks=function(a,b,c,d){var e=[],f={},g=T.global.useUTC,h,i=new Aa(b-Wa(b)),j=a.unitRange,k=a.count;if(q(b)){i[Eb](j>=E.second?0:k*V(i.getMilliseconds()/k));if(j>=E.second)i[Fb](j>=E.minute?0:k*V(i.getSeconds()/k));if(j>=E.minute)i[Gb](j>=E.hour?0:k*V(i[sb]()/k));if(j>=E.hour)i[Hb](j>=
E.day?0:k*V(i[tb]()/k));if(j>=E.day)i[vb](j>=E.month?1:k*V(i[Xa]()/k));j>=E.month&&(i[wb](j>=E.year?0:k*V(i[Ya]()/k)),h=i[Za]());j>=E.year&&(h-=h%k,i[xb](h));if(j===E.week)i[vb](i[Xa]()-i[ub]()+p(d,1));b=1;if(ob||eb)i=i.getTime(),i=new Aa(i+Wa(i));h=i[Za]();for(var d=i.getTime(),l=i[Ya](),m=i[Xa](),n=(E.day+(g?Wa(i):i.getTimezoneOffset()*6E4))%E.day;d<c;)e.push(d),j===E.year?d=gb(h+b*k,0):j===E.month?d=gb(h,l+b*k):!g&&(j===E.day||j===E.week)?d=gb(h,l,m+b*k*(j===E.day?1:7)):d+=j*k,b++;e.push(d);o(lb(e,
function(a){return j<=E.hour&&a%E.day===n}),function(a){f[a]="day"})}e.info=x(a,{higherRanks:f,totalRange:j*k});return e};va.prototype.normalizeTimeTickInterval=function(a,b){var c=b||[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2]],["week",[1,2]],["month",[1,2,3,4,6]],["year",null]],d=c[c.length-1],e=E[d[0]],f=d[1],g;for(g=0;g<c.length;g++)if(d=c[g],e=E[d[0]],f=d[1],c[g+1]&&a<=(e*f[f.length-1]+E[c[g+1][0]])/
2)break;e===E.year&&a<5*e&&(f=[1,2,5]);c=qb(a/e,f,d[0]==="year"?u(pb(a/e),1):1);return{unitRange:e,count:c,unitName:d[0]}};va.prototype.getLogTickPositions=function(a,b,c,d){var e=this.options,f=this.len,g=[];if(!d)this._minorAutoInterval=null;if(a>=0.5)a=r(a),g=this.getLinearTickPositions(a,b,c);else if(a>=0.08)for(var f=V(b),h,i,j,k,l,e=a>0.3?[1,2,4]:a>0.15?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9];f<c+1&&!l;f++){i=e.length;for(h=0;h<i&&!l;h++)j=Ea(ia(f)*e[h]),j>b&&(!d||k<=c)&&k!==y&&g.push(k),k>c&&(l=!0),
k=j}else if(b=ia(b),c=ia(c),a=e[d?"minorTickInterval":"tickInterval"],a=p(a==="auto"?null:a,this._minorAutoInterval,(c-b)*(e.tickPixelInterval/(d?5:1))/((d?f/this.tickPositions.length:f)||1)),a=qb(a,null,pb(a)),g=Ua(this.getLinearTickPositions(a,b,c),Ea),!d)this._minorAutoInterval=a/5;if(!d)this.tickInterval=a;return g};var Nb=A.Tooltip=function(){this.init.apply(this,arguments)};Nb.prototype={init:function(a,b){var c=b.borderWidth,d=b.style,e=D(d.padding);this.chart=a;this.options=b;this.crosshairs=
[];this.now={x:0,y:0};this.isHidden=!0;this.label=a.renderer.label("",0,0,b.shape||"callout",null,null,b.useHTML,null,"tooltip").attr({padding:e,fill:b.backgroundColor,"stroke-width":c,r:b.borderRadius,zIndex:8}).css(d).css({padding:0}).add().attr({y:-9999});fa||this.label.shadow(b.shadow);this.shared=b.shared},destroy:function(){if(this.label)this.label=this.label.destroy();clearTimeout(this.hideTimer);clearTimeout(this.tooltipTimeout)},move:function(a,b,c,d){var e=this,f=e.now,g=e.options.animation!==
!1&&!e.isHidden&&(O(a-f.x)>1||O(b-f.y)>1),h=e.followPointer||e.len>1;x(f,{x:g?(2*f.x+a)/3:a,y:g?(f.y+b)/2:b,anchorX:h?y:g?(2*f.anchorX+c)/3:c,anchorY:h?y:g?(f.anchorY+d)/2:d});e.label.attr(f);if(g)clearTimeout(this.tooltipTimeout),this.tooltipTimeout=setTimeout(function(){e&&e.move(a,b,c,d)},32)},hide:function(a){var b=this;clearTimeout(this.hideTimer);if(!this.isHidden)this.hideTimer=setTimeout(function(){b.label.fadeOut();b.isHidden=!0},p(a,this.options.hideDelay,500))},getAnchor:function(a,b){var c,
d=this.chart,e=d.inverted,f=d.plotTop,g=d.plotLeft,h=0,i=0,j,k,a=sa(a);c=a[0].tooltipPos;this.followPointer&&b&&(b.chartX===y&&(b=d.pointer.normalize(b)),c=[b.chartX-d.plotLeft,b.chartY-f]);c||(o(a,function(a){j=a.series.yAxis;k=a.series.xAxis;h+=a.plotX+(!e&&k?k.left-g:0);i+=(a.plotLow?(a.plotLow+a.plotHigh)/2:a.plotY)+(!e&&j?j.top-f:0)}),h/=a.length,i/=a.length,c=[e?d.plotWidth-i:h,this.shared&&!e&&a.length>1&&b?b.chartY-f:e?d.plotHeight-h:i]);return Ua(c,r)},getPosition:function(a,b,c){var d=this.chart,
e=this.distance,f={},g=c.h||0,h,i=["y",d.chartHeight,b,c.plotY+d.plotTop],j=["x",d.chartWidth,a,c.plotX+d.plotLeft],k=p(c.ttBelow,d.inverted&&!c.negative||!d.inverted&&c.negative),l=function(a,b,c,d){var h=c<d-e,i=d+e+c<b,j=d-e-c;d+=e;if(k&&i)f[a]=d;else if(!k&&h)f[a]=j;else if(h)f[a]=j-g<0?j:j-g;else if(i)f[a]=d+g+c>b?d:d+g;else return!1},m=function(a,b,c,d){if(d<e||d>b-e)return!1;else f[a]=d<c/2?1:d>b-c/2?b-c-2:d-c/2},n=function(a){var b=i;i=j;j=b;h=a},v=function(){l.apply(0,i)!==!1?m.apply(0,j)===
!1&&!h&&(n(!0),v()):h?f.x=f.y=0:(n(!0),v())};(d.inverted||this.len>1)&&n();v();return f},defaultFormatter:function(a){var b=this.points||sa(this),c;c=[a.tooltipFooterHeaderFormatter(b[0])];c=c.concat(a.bodyFormatter(b));c.push(a.tooltipFooterHeaderFormatter(b[0],!0));return c.join("")},refresh:function(a,b){var c=this.chart,d=this.label,e=this.options,f,g,h,i={},j,k=[];j=e.formatter||this.defaultFormatter;var i=c.hoverPoints,l,m=this.shared;clearTimeout(this.hideTimer);this.followPointer=sa(a)[0].series.tooltipOptions.followPointer;
h=this.getAnchor(a,b);f=h[0];g=h[1];m&&(!a.series||!a.series.noSharedTooltip)?(c.hoverPoints=a,i&&o(i,function(a){a.setState()}),o(a,function(a){a.setState("hover");k.push(a.getLabelConfig())}),i={x:a[0].category,y:a[0].y},i.points=k,this.len=k.length,a=a[0]):i=a.getLabelConfig();j=j.call(i,this);i=a.series;this.distance=p(i.tooltipOptions.distance,16);j===!1?this.hide():(this.isHidden&&(db(d),d.attr("opacity",1).show()),d.attr({text:j}),l=e.borderColor||a.color||i.color||"#606060",d.attr({stroke:l}),
this.updatePosition({plotX:f,plotY:g,negative:a.negative,ttBelow:a.ttBelow,h:h[2]||0}),this.isHidden=!1);I(c,"tooltipRefresh",{text:j,x:f+c.plotLeft,y:g+c.plotTop,borderColor:l})},updatePosition:function(a){var b=this.chart,c=this.label,c=(this.options.positioner||this.getPosition).call(this,c.width,c.height,a);this.move(r(c.x),r(c.y||0),a.plotX+b.plotLeft,a.plotY+b.plotTop)},getXDateFormat:function(a,b,c){var d,b=b.dateTimeLabelFormats,e=c&&c.closestPointRange,f,g={millisecond:15,second:12,minute:9,
hour:6,day:3},h,i="millisecond";if(e){h=Oa("%m-%d %H:%M:%S.%L",a.x);for(f in E){if(e===E.week&&+Oa("%w",a.x)===c.options.startOfWeek&&h.substr(6)==="00:00:00.000"){f="week";break}else if(E[f]>e){f=i;break}else if(g[f]&&h.substr(g[f])!=="01-01 00:00:00.000".substr(g[f]))break;f!=="week"&&(i=f)}f&&(d=b[f])}else d=b.day;return d||b.year},tooltipFooterHeaderFormatter:function(a,b){var c=b?"footer":"header",d=a.series,e=d.tooltipOptions,f=e.xDateFormat,g=d.xAxis,h=g&&g.options.type==="datetime"&&ra(a.key),
c=e[c+"Format"];h&&!f&&(f=this.getXDateFormat(a,e,g));h&&f&&(c=c.replace("{point.key}","{point.key:"+f+"}"));return Ja(c,{point:a,series:d})},bodyFormatter:function(a){return Ua(a,function(a){var c=a.series.tooltipOptions;return(c.pointFormatter||a.point.tooltipFormatter).call(a.point,c.pointFormat)})}};var pa;ab=B.documentElement.ontouchstart!==y;var Va=A.Pointer=function(a,b){this.init(a,b)};Va.prototype={init:function(a,b){var c=b.chart,d=c.events,e=fa?"":c.zoomType,c=a.inverted,f;this.options=
b;this.chart=a;this.zoomX=f=/x/.test(e);this.zoomY=e=/y/.test(e);this.zoomHor=f&&!c||e&&c;this.zoomVert=e&&!c||f&&c;this.hasZoom=f||e;this.runChartClick=d&&!!d.click;this.pinchDown=[];this.lastValidTouch={};if(A.Tooltip&&b.tooltip.enabled)a.tooltip=new Nb(a,b.tooltip),this.followTouchMove=p(b.tooltip.followTouchMove,!0);this.setDOMEvents()},normalize:function(a,b){var c,d,a=a||window.event,a=Tb(a);if(!a.target)a.target=a.srcElement;d=a.touches?a.touches.length?a.touches.item(0):a.changedTouches[0]:
a;if(!b)this.chartPosition=b=Sb(this.chart.container);d.pageX===y?(c=u(a.x,a.clientX-b.left),d=a.y):(c=d.pageX-b.left,d=d.pageY-b.top);return x(a,{chartX:r(c),chartY:r(d)})},getCoordinates:function(a){var b={xAxis:[],yAxis:[]};o(this.chart.axes,function(c){b[c.isXAxis?"xAxis":"yAxis"].push({axis:c,value:c.toValue(a[c.horiz?"chartX":"chartY"])})});return b},runPointActions:function(a){var b=this.chart,c=b.series,d=b.tooltip,e=d?d.shared:!1,f=b.hoverPoint,g=b.hoverSeries,h,i=b.chartWidth,j,k,l=[],m,
n;if(!e&&!g)for(h=0;h<c.length;h++)if(c[h].directTouch||!c[h].options.stickyTracking)c=[];!e&&g&&g.directTouch&&f?m=f:(o(c,function(b){j=b.noSharedTooltip&&e;k=!e&&b.directTouch;b.visible&&!j&&!k&&p(b.options.enableMouseTracking,!0)&&(n=b.searchPoint(a,!j&&b.kdDimensions===1))&&l.push(n)}),o(l,function(a){if(a&&typeof a.dist==="number"&&a.dist<i)i=a.dist,m=a}));if(m&&(m!==this.prevKDPoint||d&&d.isHidden)){if(e&&!m.series.noSharedTooltip){for(h=l.length;h--;)(l[h].clientX!==m.clientX||l[h].series.noSharedTooltip)&&
l.splice(h,1);l.length&&d&&d.refresh(l,a);o(l,function(b){if(b!==m)b.onMouseOver(a)});(g&&g.directTouch&&f||m).onMouseOver(a)}else d&&d.refresh(m,a),m.onMouseOver(a);this.prevKDPoint=m}else c=g&&g.tooltipOptions.followPointer,d&&c&&!d.isHidden&&(c=d.getAnchor([{}],a),d.updatePosition({plotX:c[0],plotY:c[1]}));if(d&&!this._onDocumentMouseMove)this._onDocumentMouseMove=function(a){if(Y[pa])Y[pa].pointer.onDocumentMouseMove(a)},H(B,"mousemove",this._onDocumentMouseMove);o(b.axes,function(b){b.drawCrosshair(a,
p(m,f))})},reset:function(a,b){var c=this.chart,d=c.hoverSeries,e=c.hoverPoint,f=c.hoverPoints,g=c.tooltip,h=g&&g.shared?f:e;(a=a&&g&&h)&&sa(h)[0].plotX===y&&(a=!1);if(a)g.refresh(h),e&&(e.setState(e.state,!0),o(c.axes,function(a){p(a.options.crosshair&&a.options.crosshair.snap,!0)?a.drawCrosshair(null,e):a.hideCrosshair()}));else{if(e)e.onMouseOut();f&&o(f,function(a){a.setState()});if(d)d.onMouseOut();g&&g.hide(b);if(this._onDocumentMouseMove)Z(B,"mousemove",this._onDocumentMouseMove),this._onDocumentMouseMove=
null;o(c.axes,function(a){a.hideCrosshair()});this.hoverX=c.hoverPoints=c.hoverPoint=null}},scaleGroups:function(a,b){var c=this.chart,d;o(c.series,function(e){d=a||e.getPlotBox();e.xAxis&&e.xAxis.zoomEnabled&&(e.group.attr(d),e.markerGroup&&(e.markerGroup.attr(d),e.markerGroup.clip(b?c.clipRect:null)),e.dataLabelsGroup&&e.dataLabelsGroup.attr(d))});c.clipRect.attr(b||c.clipBox)},dragStart:function(a){var b=this.chart;b.mouseIsDown=a.type;b.cancelClick=!1;b.mouseDownX=this.mouseDownX=a.chartX;b.mouseDownY=
this.mouseDownY=a.chartY},drag:function(a){var b=this.chart,c=b.options.chart,d=a.chartX,e=a.chartY,f=this.zoomHor,g=this.zoomVert,h=b.plotLeft,i=b.plotTop,j=b.plotWidth,k=b.plotHeight,l,m=this.mouseDownX,n=this.mouseDownY,v=c.panKey&&a[c.panKey+"Key"];d<h?d=h:d>h+j&&(d=h+j);e<i?e=i:e>i+k&&(e=i+k);this.hasDragged=Math.sqrt(Math.pow(m-d,2)+Math.pow(n-e,2));if(this.hasDragged>10){l=b.isInsidePlot(m-h,n-i);if(b.hasCartesianSeries&&(this.zoomX||this.zoomY)&&l&&!v&&!this.selectionMarker)this.selectionMarker=
b.renderer.rect(h,i,f?1:j,g?1:k,0).attr({fill:c.selectionMarkerFill||"rgba(69,114,167,0.25)",zIndex:7}).add();this.selectionMarker&&f&&(d-=m,this.selectionMarker.attr({width:O(d),x:(d>0?0:d)+m}));this.selectionMarker&&g&&(d=e-n,this.selectionMarker.attr({height:O(d),y:(d>0?0:d)+n}));l&&!this.selectionMarker&&c.panning&&b.pan(a,c.panning)}},drop:function(a){var b=this,c=this.chart,d=this.hasPinched;if(this.selectionMarker){var e={xAxis:[],yAxis:[],originalEvent:a.originalEvent||a},f=this.selectionMarker,
g=f.attr?f.attr("x"):f.x,h=f.attr?f.attr("y"):f.y,i=f.attr?f.attr("width"):f.width,j=f.attr?f.attr("height"):f.height,k;if(this.hasDragged||d)o(c.axes,function(c){if(c.zoomEnabled&&q(c.min)&&(d||b[{xAxis:"zoomX",yAxis:"zoomY"}[c.coll]])){var f=c.horiz,n=a.type==="touchend"?c.minPixelPadding:0,v=c.toValue((f?g:h)+n),f=c.toValue((f?g+i:h+j)-n);e[c.coll].push({axis:c,min:C(v,f),max:u(v,f)});k=!0}}),k&&I(c,"selection",e,function(a){c.zoom(x(a,d?{animation:!1}:null))});this.selectionMarker=this.selectionMarker.destroy();
d&&this.scaleGroups()}if(c)L(c.container,{cursor:c._cursor}),c.cancelClick=this.hasDragged>10,c.mouseIsDown=this.hasDragged=this.hasPinched=!1,this.pinchDown=[]},onContainerMouseDown:function(a){a=this.normalize(a);a.preventDefault&&a.preventDefault();this.dragStart(a)},onDocumentMouseUp:function(a){Y[pa]&&Y[pa].pointer.drop(a)},onDocumentMouseMove:function(a){var b=this.chart,c=this.chartPosition,a=this.normalize(a,c);c&&!this.inClass(a.target,"highcharts-tracker")&&!b.isInsidePlot(a.chartX-b.plotLeft,
a.chartY-b.plotTop)&&this.reset()},onContainerMouseLeave:function(){var a=Y[pa];if(a)a.pointer.reset(),a.pointer.chartPosition=null},onContainerMouseMove:function(a){var b=this.chart;pa=b.index;a=this.normalize(a);a.returnValue=!1;b.mouseIsDown==="mousedown"&&this.drag(a);(this.inClass(a.target,"highcharts-tracker")||b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop))&&!b.openMenu&&this.runPointActions(a)},inClass:function(a,b){for(var c;a;){if(c=J(a,"class"))if(c.indexOf(b)!==-1)return!0;else if(c.indexOf("highcharts-container")!==
-1)return!1;a=a.parentNode}},onTrackerMouseOut:function(a){var b=this.chart.hoverSeries,c=(a=a.relatedTarget||a.toElement)&&a.point&&a.point.series;if(b&&!b.options.stickyTracking&&!this.inClass(a,"highcharts-tooltip")&&c!==b)b.onMouseOut()},onContainerClick:function(a){var b=this.chart,c=b.hoverPoint,d=b.plotLeft,e=b.plotTop,a=this.normalize(a);a.originalEvent=a;b.cancelClick||(c&&this.inClass(a.target,"highcharts-tracker")?(I(c.series,"click",x(a,{point:c})),b.hoverPoint&&c.firePointEvent("click",
a)):(x(a,this.getCoordinates(a)),b.isInsidePlot(a.chartX-d,a.chartY-e)&&I(b,"click",a)))},setDOMEvents:function(){var a=this,b=a.chart.container;b.onmousedown=function(b){a.onContainerMouseDown(b)};b.onmousemove=function(b){a.onContainerMouseMove(b)};b.onclick=function(b){a.onContainerClick(b)};H(b,"mouseleave",a.onContainerMouseLeave);bb===1&&H(B,"mouseup",a.onDocumentMouseUp);if(ab)b.ontouchstart=function(b){a.onContainerTouchStart(b)},b.ontouchmove=function(b){a.onContainerTouchMove(b)},bb===1&&
H(B,"touchend",a.onDocumentTouchEnd)},destroy:function(){var a;Z(this.chart.container,"mouseleave",this.onContainerMouseLeave);bb||(Z(B,"mouseup",this.onDocumentMouseUp),Z(B,"touchend",this.onDocumentTouchEnd));clearInterval(this.tooltipTimeout);for(a in this)this[a]=null}};x(A.Pointer.prototype,{pinchTranslate:function(a,b,c,d,e,f){(this.zoomHor||this.pinchHor)&&this.pinchTranslateDirection(!0,a,b,c,d,e,f);(this.zoomVert||this.pinchVert)&&this.pinchTranslateDirection(!1,a,b,c,d,e,f)},pinchTranslateDirection:function(a,
b,c,d,e,f,g,h){var i=this.chart,j=a?"x":"y",k=a?"X":"Y",l="chart"+k,m=a?"width":"height",n=i["plot"+(a?"Left":"Top")],v,s,p=h||1,o=i.inverted,t=i.bounds[a?"h":"v"],w=b.length===1,q=b[0][l],u=c[0][l],r=!w&&b[1][l],y=!w&&c[1][l],x,c=function(){!w&&O(q-r)>20&&(p=h||O(u-y)/O(q-r));s=(n-u)/p+q;v=i["plot"+(a?"Width":"Height")]/p};c();b=s;b<t.min?(b=t.min,x=!0):b+v>t.max&&(b=t.max-v,x=!0);x?(u-=0.8*(u-g[j][0]),w||(y-=0.8*(y-g[j][1])),c()):g[j]=[u,y];o||(f[j]=s-n,f[m]=v);f=o?1/p:p;e[m]=v;e[j]=b;d[o?a?"scaleY":
"scaleX":"scale"+k]=p;d["translate"+k]=f*n+(u-f*q)},pinch:function(a){var b=this,c=b.chart,d=b.pinchDown,e=a.touches,f=e.length,g=b.lastValidTouch,h=b.hasZoom,i=b.selectionMarker,j={},k=f===1&&(b.inClass(a.target,"highcharts-tracker")&&c.runTrackerClick||b.runChartClick),l={};if(f>1)b.initiated=!0;h&&b.initiated&&!k&&a.preventDefault();Ua(e,function(a){return b.normalize(a)});if(a.type==="touchstart")o(e,function(a,b){d[b]={chartX:a.chartX,chartY:a.chartY}}),g.x=[d[0].chartX,d[1]&&d[1].chartX],g.y=
[d[0].chartY,d[1]&&d[1].chartY],o(c.axes,function(a){if(a.zoomEnabled){var b=c.bounds[a.horiz?"h":"v"],d=a.minPixelPadding,e=a.toPixels(p(a.options.min,a.dataMin)),f=a.toPixels(p(a.options.max,a.dataMax)),g=C(e,f),e=u(e,f);b.min=C(a.pos,g-d);b.max=u(a.pos+a.len,e+d)}}),b.res=!0;else if(d.length){if(!i)b.selectionMarker=i=x({destroy:na},c.plotBox);b.pinchTranslate(d,e,j,i,l,g);b.hasPinched=h;b.scaleGroups(j,l);if(!h&&b.followTouchMove&&f===1)this.runPointActions(b.normalize(a));else if(b.res)b.res=
!1,this.reset(!1,0)}},touch:function(a,b){var c=this.chart;pa=c.index;a.touches.length===1?(a=this.normalize(a),c.isInsidePlot(a.chartX-c.plotLeft,a.chartY-c.plotTop)&&!c.openMenu?(b&&this.runPointActions(a),this.pinch(a)):b&&this.reset()):a.touches.length===2&&this.pinch(a)},onContainerTouchStart:function(a){this.touch(a,!0)},onContainerTouchMove:function(a){this.touch(a)},onDocumentTouchEnd:function(a){Y[pa]&&Y[pa].pointer.drop(a)}});if(K.PointerEvent||K.MSPointerEvent){var wa={},Bb=!!K.PointerEvent,
Xb=function(){var a,b=[];b.item=function(a){return this[a]};for(a in wa)wa.hasOwnProperty(a)&&b.push({pageX:wa[a].pageX,pageY:wa[a].pageY,target:wa[a].target});return b},Cb=function(a,b,c,d){a=a.originalEvent||a;if((a.pointerType==="touch"||a.pointerType===a.MSPOINTER_TYPE_TOUCH)&&Y[pa])d(a),d=Y[pa].pointer,d[b]({type:c,target:a.currentTarget,preventDefault:na,touches:Xb()})};x(Va.prototype,{onContainerPointerDown:function(a){Cb(a,"onContainerTouchStart","touchstart",function(a){wa[a.pointerId]={pageX:a.pageX,
pageY:a.pageY,target:a.currentTarget}})},onContainerPointerMove:function(a){Cb(a,"onContainerTouchMove","touchmove",function(a){wa[a.pointerId]={pageX:a.pageX,pageY:a.pageY};if(!wa[a.pointerId].target)wa[a.pointerId].target=a.currentTarget})},onDocumentPointerUp:function(a){Cb(a,"onDocumentTouchEnd","touchend",function(a){delete wa[a.pointerId]})},batchMSEvents:function(a){a(this.chart.container,Bb?"pointerdown":"MSPointerDown",this.onContainerPointerDown);a(this.chart.container,Bb?"pointermove":
"MSPointerMove",this.onContainerPointerMove);a(B,Bb?"pointerup":"MSPointerUp",this.onDocumentPointerUp)}});cb(Va.prototype,"init",function(a,b,c){a.call(this,b,c);this.hasZoom&&L(b.container,{"-ms-touch-action":P,"touch-action":P})});cb(Va.prototype,"setDOMEvents",function(a){a.apply(this);(this.hasZoom||this.followTouchMove)&&this.batchMSEvents(H)});cb(Va.prototype,"destroy",function(a){this.batchMSEvents(Z);a.call(this)})}var nb=A.Legend=function(a,b){this.init(a,b)};nb.prototype={init:function(a,
b){var c=this,d=b.itemStyle,e=b.itemMarginTop||0;this.options=b;if(b.enabled)c.itemStyle=d,c.itemHiddenStyle=z(d,b.itemHiddenStyle),c.itemMarginTop=e,c.padding=d=p(b.padding,8),c.initialItemX=d,c.initialItemY=d-5,c.maxItemWidth=0,c.chart=a,c.itemHeight=0,c.symbolWidth=p(b.symbolWidth,16),c.pages=[],c.render(),H(c.chart,"endResize",function(){c.positionCheckboxes()})},colorizeItem:function(a,b){var c=this.options,d=a.legendItem,e=a.legendLine,f=a.legendSymbol,g=this.itemHiddenStyle.color,c=b?c.itemStyle.color:
g,h=b?a.legendColor||a.color||"#CCC":g,g=a.options&&a.options.marker,i={fill:h},j;d&&d.css({fill:c,color:c});e&&e.attr({stroke:h});if(f){if(g&&f.isMarker)for(j in i.stroke=h,g=a.convertAttribs(g),g)d=g[j],d!==y&&(i[j]=d);f.attr(i)}},positionItem:function(a){var b=this.options,c=b.symbolPadding,b=!b.rtl,d=a._legendItemPos,e=d[0],d=d[1],f=a.checkbox;(a=a.legendGroup)&&a.element&&a.translate(b?e:this.legendWidth-e-2*c-4,d);if(f)f.x=e,f.y=d},destroyItem:function(a){var b=a.checkbox;o(["legendItem","legendLine",
"legendSymbol","legendGroup"],function(b){a[b]&&(a[b]=a[b].destroy())});b&&Ra(a.checkbox)},destroy:function(){var a=this.group,b=this.box;if(b)this.box=b.destroy();if(a)this.group=a.destroy()},positionCheckboxes:function(a){var b=this.group.alignAttr,c,d=this.clipHeight||this.legendHeight;if(b)c=b.translateY,o(this.allItems,function(e){var f=e.checkbox,g;f&&(g=c+f.y+(a||0)+3,L(f,{left:b.translateX+e.checkboxOffset+f.x-20+"px",top:g+"px",display:g>c-6&&g<c+d-6?"":P}))})},renderTitle:function(){var a=
this.padding,b=this.options.title,c=0;if(b.text){if(!this.title)this.title=this.chart.renderer.label(b.text,a-3,a-4,null,null,null,null,null,"legend-title").attr({zIndex:1}).css(b.style).add(this.group);a=this.title.getBBox();c=a.height;this.offsetWidth=a.width;this.contentGroup.attr({translateY:c})}this.titleHeight=c},setText:function(a){var b=this.options;a.legendItem.attr({text:b.labelFormat?Ja(b.labelFormat,a):b.labelFormatter.call(a)})},renderItem:function(a){var b=this.chart,c=b.renderer,d=
this.options,e=d.layout==="horizontal",f=this.symbolWidth,g=d.symbolPadding,h=this.itemStyle,i=this.itemHiddenStyle,j=this.padding,k=e?p(d.itemDistance,20):0,l=!d.rtl,m=d.width,n=d.itemMarginBottom||0,v=this.itemMarginTop,s=this.initialItemX,o=a.legendItem,q=a.series&&a.series.drawLegendSymbol?a.series:a,t=q.options,t=this.createCheckboxForItem&&t&&t.showCheckbox,w=d.useHTML;if(!o){a.legendGroup=c.g("legend-item").attr({zIndex:1}).add(this.scrollGroup);a.legendItem=o=c.text("",l?f+g:-g,this.baseline||
0,w).css(z(a.visible?h:i)).attr({align:l?"left":"right",zIndex:2}).add(a.legendGroup);if(!this.baseline)this.fontMetrics=c.fontMetrics(h.fontSize,o),this.baseline=this.fontMetrics.f+3+v,o.attr("y",this.baseline);q.drawLegendSymbol(this,a);this.setItemEvents&&this.setItemEvents(a,o,w,h,i);this.colorizeItem(a,a.visible);t&&this.createCheckboxForItem(a)}this.setText(a);c=o.getBBox();f=a.checkboxOffset=d.itemWidth||a.legendItemWidth||f+g+c.width+k+(t?20:0);this.itemHeight=g=r(a.legendItemHeight||c.height);
if(e&&this.itemX-s+f>(m||b.chartWidth-2*j-s-d.x))this.itemX=s,this.itemY+=v+this.lastLineHeight+n,this.lastLineHeight=0;this.maxItemWidth=u(this.maxItemWidth,f);this.lastItemY=v+this.itemY+n;this.lastLineHeight=u(g,this.lastLineHeight);a._legendItemPos=[this.itemX,this.itemY];e?this.itemX+=f:(this.itemY+=v+g+n,this.lastLineHeight=g);this.offsetWidth=m||u((e?this.itemX-s-k:f)+j,this.offsetWidth)},getAllItems:function(){var a=[];o(this.chart.series,function(b){var c=b.options;if(p(c.showInLegend,!q(c.linkedTo)?
y:!1,!0))a=a.concat(b.legendItems||(c.legendType==="point"?b.data:b))});return a},adjustMargins:function(a,b){var c=this.chart,d=this.options,e=d.align[0]+d.verticalAlign[0]+d.layout[0];this.display&&!d.floating&&o([/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/],function(f,g){f.test(e)&&!q(a[g])&&(c[jb[g]]=u(c[jb[g]],c.legend[(g+1)%2?"legendHeight":"legendWidth"]+[1,-1,-1,1][g]*d[g%2?"x":"y"]+p(d.margin,12)+b[g]))})},render:function(){var a=this,b=a.chart,c=b.renderer,d=a.group,e,f,
g,h,i=a.box,j=a.options,k=a.padding,l=j.borderWidth,m=j.backgroundColor;a.itemX=a.initialItemX;a.itemY=a.initialItemY;a.offsetWidth=0;a.lastItemY=0;if(!d)a.group=d=c.g("legend").attr({zIndex:7}).add(),a.contentGroup=c.g().attr({zIndex:1}).add(d),a.scrollGroup=c.g().add(a.contentGroup);a.renderTitle();e=a.getAllItems();rb(e,function(a,b){return(a.options&&a.options.legendIndex||0)-(b.options&&b.options.legendIndex||0)});j.reversed&&e.reverse();a.allItems=e;a.display=f=!!e.length;a.lastLineHeight=0;
o(e,function(b){a.renderItem(b)});g=(j.width||a.offsetWidth)+k;h=a.lastItemY+a.lastLineHeight+a.titleHeight;h=a.handleOverflow(h);h+=k;if(l||m){if(i){if(g>0&&h>0)i[i.isNew?"attr":"animate"](i.crisp({width:g,height:h})),i.isNew=!1}else a.box=i=c.rect(0,0,g,h,j.borderRadius,l||0).attr({stroke:j.borderColor,"stroke-width":l||0,fill:m||P}).add(d).shadow(j.shadow),i.isNew=!0;i[f?"show":"hide"]()}a.legendWidth=g;a.legendHeight=h;o(e,function(b){a.positionItem(b)});f&&d.align(x({width:g,height:h},j),!0,
"spacingBox");b.isResizing||this.positionCheckboxes()},handleOverflow:function(a){var b=this,c=this.chart,d=c.renderer,e=this.options,f=e.y,f=c.spacingBox.height+(e.verticalAlign==="top"?-f:f)-this.padding,g=e.maxHeight,h,i=this.clipRect,j=e.navigation,k=p(j.animation,!0),l=j.arrowSize||12,m=this.nav,n=this.pages,v=this.padding,s,q=this.allItems,N=function(a){i.attr({height:a});if(b.contentGroup.div)b.contentGroup.div.style.clip="rect("+v+"px,9999px,"+(v+a)+"px,0)"};e.layout==="horizontal"&&(f/=2);
g&&(f=C(f,g));n.length=0;if(a>f){this.clipHeight=h=u(f-20-this.titleHeight-v,0);this.currentPage=p(this.currentPage,1);this.fullHeight=a;o(q,function(a,b){var c=a._legendItemPos[1],d=r(a.legendItem.getBBox().height),e=n.length;if(!e||c-n[e-1]>h&&(s||c)!==n[e-1])n.push(s||c),e++;b===q.length-1&&c+d-n[e-1]>h&&n.push(c);c!==s&&(s=c)});if(!i)i=b.clipRect=d.clipRect(0,v,9999,0),b.contentGroup.clip(i);N(h);if(!m)this.nav=m=d.g().attr({zIndex:1}).add(this.group),this.up=d.symbol("triangle",0,0,l,l).on("click",
function(){b.scroll(-1,k)}).add(m),this.pager=d.text("",15,10).css(j.style).add(m),this.down=d.symbol("triangle-down",0,0,l,l).on("click",function(){b.scroll(1,k)}).add(m);b.scroll(0);a=f}else if(m)N(c.chartHeight),m.hide(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0;return a},scroll:function(a,b){var c=this.pages,d=c.length,e=this.currentPage+a,f=this.clipHeight,g=this.options.navigation,h=g.activeColor,g=g.inactiveColor,i=this.pager,j=this.padding;e>d&&(e=d);if(e>0)b!==y&&Sa(b,this.chart),
this.nav.attr({translateX:j,translateY:f+this.padding+7+this.titleHeight,visibility:"visible"}),this.up.attr({fill:e===1?g:h}).css({cursor:e===1?"default":"pointer"}),i.attr({text:e+"/"+d}),this.down.attr({x:18+this.pager.getBBox().width,fill:e===d?g:h}).css({cursor:e===d?"default":"pointer"}),c=-c[e-1]+this.initialItemY,this.scrollGroup.animate({translateY:c}),this.currentPage=e,this.positionCheckboxes(c)}};Na=A.LegendSymbolMixin={drawRectangle:function(a,b){var c=a.options.symbolHeight||a.fontMetrics.f;
b.legendSymbol=this.chart.renderer.rect(0,a.baseline-c+1,a.symbolWidth,c,a.options.symbolRadius||0).attr({zIndex:3}).add(b.legendGroup)},drawLineMarker:function(a){var b=this.options,c=b.marker,d;d=a.symbolWidth;var e=this.chart.renderer,f=this.legendGroup,a=a.baseline-r(a.fontMetrics.b*0.3),g;if(b.lineWidth){g={"stroke-width":b.lineWidth};if(b.dashStyle)g.dashstyle=b.dashStyle;this.legendLine=e.path(["M",0,a,"L",d,a]).attr(g).add(f)}if(c&&c.enabled!==!1)b=c.radius,this.legendSymbol=d=e.symbol(this.symbol,
d/2-b,a-b,2*b,2*b).add(f),d.isMarker=!0}};(/Trident\/7\.0/.test(Ba)||La)&&cb(nb.prototype,"positionItem",function(a,b){var c=this,d=function(){b._legendItemPos&&a.call(c,b)};d();setTimeout(d)});F=A.Chart=function(){this.init.apply(this,arguments)};F.prototype={callbacks:[],init:function(a,b){var c,d=a.series;a.series=null;c=z(T,a);c.series=a.series=d;this.userOptions=a;d=c.chart;this.margin=this.splashArray("margin",d);this.spacing=this.splashArray("spacing",d);var e=d.events;this.bounds={h:{},v:{}};
this.callback=b;this.isResizing=0;this.options=c;this.axes=[];this.series=[];this.hasCartesianSeries=d.showAxes;var f=this,g;f.index=Y.length;Y.push(f);bb++;d.reflow!==!1&&H(f,"load",function(){f.initReflow()});if(e)for(g in e)H(f,g,e[g]);f.xAxis=[];f.yAxis=[];f.animation=fa?!1:p(d.animation,!0);f.pointCount=f.colorCounter=f.symbolCounter=0;f.firstRender()},initSeries:function(a){var b=this.options.chart;(b=M[a.type||b.type||b.defaultSeriesType])||la(17,!0);b=new b;b.init(this,a);return b},isInsidePlot:function(a,
b,c){var d=c?b:a,a=c?a:b;return d>=0&&d<=this.plotWidth&&a>=0&&a<=this.plotHeight},redraw:function(a){var b=this.axes,c=this.series,d=this.pointer,e=this.legend,f=this.isDirtyLegend,g,h,i=this.hasCartesianSeries,j=this.isDirtyBox,k=c.length,l=k,m=this.renderer,n=m.isHidden(),p=[];Sa(a,this);n&&this.cloneRenderTo();for(this.layOutTitles();l--;)if(a=c[l],a.options.stacking&&(g=!0,a.isDirty)){h=!0;break}if(h)for(l=k;l--;)if(a=c[l],a.options.stacking)a.isDirty=!0;o(c,function(a){a.isDirty&&a.options.legendType===
"point"&&(a.updateTotals&&a.updateTotals(),f=!0)});if(f&&e.options.enabled)e.render(),this.isDirtyLegend=!1;g&&this.getStacks();if(i&&!this.isResizing)this.maxTicks=null,o(b,function(a){a.setScale()});this.getMargins();i&&(o(b,function(a){a.isDirty&&(j=!0)}),o(b,function(a){if(a.isDirtyExtremes)a.isDirtyExtremes=!1,p.push(function(){I(a,"afterSetExtremes",x(a.eventArgs,a.getExtremes()));delete a.eventArgs});(j||g)&&a.redraw()}));j&&this.drawChartBox();o(c,function(a){a.isDirty&&a.visible&&(!a.isCartesian||
a.xAxis)&&a.redraw()});d&&d.reset(!0);m.draw();I(this,"redraw");n&&this.cloneRenderTo(!0);o(p,function(a){a.call()})},get:function(a){var b=this.axes,c=this.series,d,e;for(d=0;d<b.length;d++)if(b[d].options.id===a)return b[d];for(d=0;d<c.length;d++)if(c[d].options.id===a)return c[d];for(d=0;d<c.length;d++){e=c[d].points||[];for(b=0;b<e.length;b++)if(e[b].id===a)return e[b]}return null},getAxes:function(){var a=this,b=this.options,c=b.xAxis=sa(b.xAxis||{}),b=b.yAxis=sa(b.yAxis||{});o(c,function(a,
b){a.index=b;a.isX=!0});o(b,function(a,b){a.index=b});c=c.concat(b);o(c,function(b){new va(a,b)})},getSelectedPoints:function(){var a=[];o(this.series,function(b){a=a.concat(lb(b.points||[],function(a){return a.selected}))});return a},getSelectedSeries:function(){return lb(this.series,function(a){return a.selected})},getStacks:function(){var a=this;o(a.yAxis,function(a){if(a.stacks&&a.hasVisibleSeries)a.oldStacks=a.stacks});o(a.series,function(b){if(b.options.stacking&&(b.visible===!0||a.options.chart.ignoreHiddenSeries===
!1))b.stackKey=b.type+p(b.options.stack,"")})},setTitle:function(a,b,c){var g;var d=this,e=d.options,f;f=e.title=z(e.title,a);g=e.subtitle=z(e.subtitle,b),e=g;o([["title",a,f],["subtitle",b,e]],function(a){var b=a[0],c=d[b],e=a[1],a=a[2];c&&e&&(d[b]=c=c.destroy());a&&a.text&&!c&&(d[b]=d.renderer.text(a.text,0,0,a.useHTML).attr({align:a.align,"class":"highcharts-"+b,zIndex:a.zIndex||4}).css(a.style).add())});d.layOutTitles(c)},layOutTitles:function(a){var b=0,c=this.title,d=this.subtitle,e=this.options,
f=e.title,e=e.subtitle,g=this.renderer,h=this.spacingBox.width-44;if(c&&(c.css({width:(f.width||h)+"px"}).align(x({y:g.fontMetrics(f.style.fontSize,c).b-3},f),!1,"spacingBox"),!f.floating&&!f.verticalAlign))b=c.getBBox().height;d&&(d.css({width:(e.width||h)+"px"}).align(x({y:b+(f.margin-13)+g.fontMetrics(f.style.fontSize,d).b},e),!1,"spacingBox"),!e.floating&&!e.verticalAlign&&(b=ta(b+d.getBBox().height)));c=this.titleOffset!==b;this.titleOffset=b;if(!this.isDirtyBox&&c)this.isDirtyBox=c,this.hasRendered&&
p(a,!0)&&this.isDirtyBox&&this.redraw()},getChartSize:function(){var a=this.options.chart,b=a.width,a=a.height,c=this.renderToClone||this.renderTo;if(!q(b))this.containerWidth=kb(c,"width");if(!q(a))this.containerHeight=kb(c,"height");this.chartWidth=u(0,b||this.containerWidth||600);this.chartHeight=u(0,p(a,this.containerHeight>19?this.containerHeight:400))},cloneRenderTo:function(a){var b=this.renderToClone,c=this.container;a?b&&(this.renderTo.appendChild(c),Ra(b),delete this.renderToClone):(c&&
c.parentNode===this.renderTo&&this.renderTo.removeChild(c),this.renderToClone=b=this.renderTo.cloneNode(0),L(b,{position:"absolute",top:"-9999px",display:"block"}),b.style.setProperty&&b.style.setProperty("display","block","important"),B.body.appendChild(b),c&&b.appendChild(c))},getContainer:function(){var a,b=this.options.chart,c,d,e;this.renderTo=a=b.renderTo;e="highcharts-"+yb++;if(Da(a))this.renderTo=a=B.getElementById(a);a||la(13,!0);c=D(J(a,"data-highcharts-chart"));!isNaN(c)&&Y[c]&&Y[c].hasRendered&&
Y[c].destroy();J(a,"data-highcharts-chart",this.index);a.innerHTML="";!b.skipClone&&!a.offsetWidth&&this.cloneRenderTo();this.getChartSize();c=this.chartWidth;d=this.chartHeight;this.container=a=$(Ka,{className:"highcharts-container"+(b.className?" "+b.className:""),id:e},x({position:"relative",overflow:"hidden",width:c+"px",height:d+"px",textAlign:"left",lineHeight:"normal",zIndex:0,"-webkit-tap-highlight-color":"rgba(0,0,0,0)"},b.style),this.renderToClone||a);this._cursor=a.style.cursor;this.renderer=
b.forExport?new ua(a,c,d,b.style,!0):new $a(a,c,d,b.style);fa&&this.renderer.create(this,a,c,d);this.renderer.chartIndex=this.index},getMargins:function(a){var b=this.spacing,c=this.margin,d=this.titleOffset;this.resetMargins();if(d&&!q(c[0]))this.plotTop=u(this.plotTop,d+this.options.title.margin+b[0]);this.legend.adjustMargins(c,b);this.extraBottomMargin&&(this.marginBottom+=this.extraBottomMargin);this.extraTopMargin&&(this.plotTop+=this.extraTopMargin);a||this.getAxisMargins()},getAxisMargins:function(){var a=
this,b=a.axisOffset=[0,0,0,0],c=a.margin;a.hasCartesianSeries&&o(a.axes,function(a){a.getOffset()});o(jb,function(d,e){q(c[e])||(a[d]+=b[e])});a.setChartSize()},reflow:function(a){var b=this,c=b.options.chart,d=b.renderTo,e=c.width||kb(d,"width"),f=c.height||kb(d,"height"),c=a?a.target:K,d=function(){if(b.container)b.setSize(e,f,!1),b.hasUserSize=null};if(!b.hasUserSize&&!b.isPrinting&&e&&f&&(c===K||c===B)){if(e!==b.containerWidth||f!==b.containerHeight)clearTimeout(b.reflowTimeout),a?b.reflowTimeout=
setTimeout(d,100):d();b.containerWidth=e;b.containerHeight=f}},initReflow:function(){var a=this,b=function(b){a.reflow(b)};H(K,"resize",b);H(a,"destroy",function(){Z(K,"resize",b)})},setSize:function(a,b,c){var d=this,e,f,g;d.isResizing+=1;g=function(){d&&I(d,"endResize",null,function(){d.isResizing-=1})};Sa(c,d);d.oldChartHeight=d.chartHeight;d.oldChartWidth=d.chartWidth;if(q(a))d.chartWidth=e=u(0,r(a)),d.hasUserSize=!!e;if(q(b))d.chartHeight=f=u(0,r(b));(za?mb:L)(d.container,{width:e+"px",height:f+
"px"},za);d.setChartSize(!0);d.renderer.setSize(e,f,c);d.maxTicks=null;o(d.axes,function(a){a.isDirty=!0;a.setScale()});o(d.series,function(a){a.isDirty=!0});d.isDirtyLegend=!0;d.isDirtyBox=!0;d.layOutTitles();d.getMargins();d.redraw(c);d.oldChartHeight=null;I(d,"resize");za===!1?g():setTimeout(g,za&&za.duration||500)},setChartSize:function(a){var b=this.inverted,c=this.renderer,d=this.chartWidth,e=this.chartHeight,f=this.options.chart,g=this.spacing,h=this.clipOffset,i,j,k,l;this.plotLeft=i=r(this.plotLeft);
this.plotTop=j=r(this.plotTop);this.plotWidth=k=u(0,r(d-i-this.marginRight));this.plotHeight=l=u(0,r(e-j-this.marginBottom));this.plotSizeX=b?l:k;this.plotSizeY=b?k:l;this.plotBorderWidth=f.plotBorderWidth||0;this.spacingBox=c.spacingBox={x:g[3],y:g[0],width:d-g[3]-g[1],height:e-g[0]-g[2]};this.plotBox=c.plotBox={x:i,y:j,width:k,height:l};d=2*V(this.plotBorderWidth/2);b=ta(u(d,h[3])/2);c=ta(u(d,h[0])/2);this.clipBox={x:b,y:c,width:V(this.plotSizeX-u(d,h[1])/2-b),height:u(0,V(this.plotSizeY-u(d,h[2])/
2-c))};a||o(this.axes,function(a){a.setAxisSize();a.setAxisTranslation()})},resetMargins:function(){var a=this;o(jb,function(b,c){a[b]=p(a.margin[c],a.spacing[c])});a.axisOffset=[0,0,0,0];a.clipOffset=[0,0,0,0]},drawChartBox:function(){var a=this.options.chart,b=this.renderer,c=this.chartWidth,d=this.chartHeight,e=this.chartBackground,f=this.plotBackground,g=this.plotBorder,h=this.plotBGImage,i=a.borderWidth||0,j=a.backgroundColor,k=a.plotBackgroundColor,l=a.plotBackgroundImage,m=a.plotBorderWidth||
0,n,p=this.plotLeft,o=this.plotTop,q=this.plotWidth,u=this.plotHeight,t=this.plotBox,w=this.clipRect,r=this.clipBox;n=i+(a.shadow?8:0);if(i||j)if(e)e.animate(e.crisp({width:c-n,height:d-n}));else{e={fill:j||P};if(i)e.stroke=a.borderColor,e["stroke-width"]=i;this.chartBackground=b.rect(n/2,n/2,c-n,d-n,a.borderRadius,i).attr(e).addClass("highcharts-background").add().shadow(a.shadow)}if(k)f?f.animate(t):this.plotBackground=b.rect(p,o,q,u,0).attr({fill:k}).add().shadow(a.plotShadow);if(l)h?h.animate(t):
this.plotBGImage=b.image(l,p,o,q,u).add();w?w.animate({width:r.width,height:r.height}):this.clipRect=b.clipRect(r);if(m)g?g.animate(g.crisp({x:p,y:o,width:q,height:u,strokeWidth:-m})):this.plotBorder=b.rect(p,o,q,u,0,-m).attr({stroke:a.plotBorderColor,"stroke-width":m,fill:P,zIndex:1}).add();this.isDirtyBox=!1},propFromSeries:function(){var a=this,b=a.options.chart,c,d=a.options.series,e,f;o(["inverted","angular","polar"],function(g){c=M[b.type||b.defaultSeriesType];f=a[g]||b[g]||c&&c.prototype[g];
for(e=d&&d.length;!f&&e--;)(c=M[d[e].type])&&c.prototype[g]&&(f=!0);a[g]=f})},linkSeries:function(){var a=this,b=a.series;o(b,function(a){a.linkedSeries.length=0});o(b,function(b){var d=b.options.linkedTo;if(Da(d)&&(d=d===":previous"?a.series[b.index-1]:a.get(d)))d.linkedSeries.push(b),b.linkedParent=d})},renderSeries:function(){o(this.series,function(a){a.translate();a.render()})},renderLabels:function(){var a=this,b=a.options.labels;b.items&&o(b.items,function(c){var d=x(b.style,c.style),e=D(d.left)+
a.plotLeft,f=D(d.top)+a.plotTop+12;delete d.left;delete d.top;a.renderer.text(c.html,e,f).attr({zIndex:2}).css(d).add()})},render:function(){var a=this.axes,b=this.renderer,c=this.options,d,e,f,g;this.setTitle();this.legend=new nb(this,c.legend);this.getStacks();this.getMargins(!0);this.setChartSize();d=this.plotWidth;e=this.plotHeight-=13;o(a,function(a){a.setScale()});this.getAxisMargins();f=d/this.plotWidth>1.1;g=e/this.plotHeight>1.1;if(f||g)this.maxTicks=null,o(a,function(a){(a.horiz&&f||!a.horiz&&
g)&&a.setTickInterval(!0)}),this.getMargins();this.drawChartBox();this.hasCartesianSeries&&o(a,function(a){a.render()});if(!this.seriesGroup)this.seriesGroup=b.g("series-group").attr({zIndex:3}).add();this.renderSeries();this.renderLabels();this.showCredits(c.credits);this.hasRendered=!0},showCredits:function(a){if(a.enabled&&!this.credits)this.credits=this.renderer.text(a.text,0,0).on("click",function(){if(a.href)location.href=a.href}).attr({align:a.position.align,zIndex:8}).css(a.style).add().align(a.position)},
destroy:function(){var a=this,b=a.axes,c=a.series,d=a.container,e,f=d&&d.parentNode;I(a,"destroy");Y[a.index]=y;bb--;a.renderTo.removeAttribute("data-highcharts-chart");Z(a);for(e=b.length;e--;)b[e]=b[e].destroy();for(e=c.length;e--;)c[e]=c[e].destroy();o("title,subtitle,chartBackground,plotBackground,plotBGImage,plotBorder,seriesGroup,clipRect,credits,pointer,scroller,rangeSelector,legend,resetZoomButton,tooltip,renderer".split(","),function(b){var c=a[b];c&&c.destroy&&(a[b]=c.destroy())});if(d)d.innerHTML=
"",Z(d),f&&Ra(d);for(e in a)delete a[e]},isReadyToRender:function(){var a=this;return!ca&&K==K.top&&B.readyState!=="complete"||fa&&!K.canvg?(fa?Mb.push(function(){a.firstRender()},a.options.global.canvasToolsURL):B.attachEvent("onreadystatechange",function(){B.detachEvent("onreadystatechange",a.firstRender);B.readyState==="complete"&&a.firstRender()}),!1):!0},firstRender:function(){var a=this,b=a.options,c=a.callback;if(a.isReadyToRender()){a.getContainer();I(a,"init");a.resetMargins();a.setChartSize();
a.propFromSeries();a.getAxes();o(b.series||[],function(b){a.initSeries(b)});a.linkSeries();I(a,"beforeRender");if(A.Pointer)a.pointer=new Va(a,b);a.render();a.renderer.draw();c&&c.apply(a,[a]);o(a.callbacks,function(b){a.index!==y&&b.apply(a,[a])});I(a,"load");a.cloneRenderTo(!0)}},splashArray:function(a,b){var c=b[a],c=da(c)?c:[c,c,c,c];return[p(b[a+"Top"],c[0]),p(b[a+"Right"],c[1]),p(b[a+"Bottom"],c[2]),p(b[a+"Left"],c[3])]}};var Yb=A.CenteredSeriesMixin={getCenter:function(){var a=this.options,
b=this.chart,c=2*(a.slicedOffset||0),d=b.plotWidth-2*c,b=b.plotHeight-2*c,e=a.center,e=[p(e[0],"50%"),p(e[1],"50%"),a.size||"100%",a.innerSize||0],f=C(d,b),g,h;for(g=0;g<4;++g)h=e[g],a=g<2||g===2&&/%$/.test(h),e[g]=(/%$/.test(h)?[d,b,f,e[2]][g]*parseFloat(h)/100:parseFloat(h))+(a?c:0);return e}},Ga=function(){};Ga.prototype={init:function(a,b,c){this.series=a;this.color=a.color;this.applyOptions(b,c);this.pointAttr={};if(a.options.colorByPoint&&(b=a.options.colors||a.chart.options.colors,this.color=
this.color||b[a.colorCounter++],a.colorCounter===b.length))a.colorCounter=0;a.chart.pointCount++;return this},applyOptions:function(a,b){var c=this.series,d=c.options.pointValKey||c.pointValKey,a=Ga.prototype.optionsToObject.call(this,a);x(this,a);this.options=this.options?x(this.options,a):a;if(d)this.y=this[d];if(this.x===y&&c)this.x=b===y?c.autoIncrement():b;return this},optionsToObject:function(a){var b={},c=this.series,d=c.options.keys,e=d||c.pointArrayMap||["y"],f=e.length,g=0,h=0;if(typeof a===
"number"||a===null)b[e[0]]=a;else if(Ha(a)){if(!d&&a.length>f){c=typeof a[0];if(c==="string")b.name=a[0];else if(c==="number")b.x=a[0];g++}for(;h<f;)b[e[h++]]=a[g++]}else if(typeof a==="object"){b=a;if(a.dataLabels)c._hasPointLabels=!0;if(a.marker)c._hasPointMarkers=!0}return b},destroy:function(){var a=this.series.chart,b=a.hoverPoints,c;a.pointCount--;if(b&&(this.setState(),ja(b,this),!b.length))a.hoverPoints=null;if(this===a.hoverPoint)this.onMouseOut();if(this.graphic||this.dataLabel)Z(this),
this.destroyElements();this.legendItem&&a.legend.destroyItem(this);for(c in this)this[c]=null},destroyElements:function(){for(var a="graphic,dataLabel,dataLabelUpper,group,connector,shadowGroup".split(","),b,c=6;c--;)b=a[c],this[b]&&(this[b]=this[b].destroy())},getLabelConfig:function(){return{x:this.category,y:this.y,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}},tooltipFormatter:function(a){var b=this.series,c=b.tooltipOptions,
d=p(c.valueDecimals,""),e=c.valuePrefix||"",f=c.valueSuffix||"";o(b.pointArrayMap||["y"],function(b){b="{point."+b;if(e||f)a=a.replace(b+"}",e+b+"}"+f);a=a.replace(b+"}",b+":,."+d+"f}")});return Ja(a,{point:this,series:this.series})},firePointEvent:function(a,b,c){var d=this,e=this.series.options;(e.point.events[a]||d.options&&d.options.events&&d.options.events[a])&&this.importEvents();a==="click"&&e.allowPointSelect&&(c=function(a){d.select&&d.select(null,a.ctrlKey||a.metaKey||a.shiftKey)});I(this,
a,b,c)}};var R=A.Series=function(){};R.prototype={isCartesian:!0,type:"line",pointClass:Ga,sorted:!0,requireSorting:!0,pointAttrToOptions:{stroke:"lineColor","stroke-width":"lineWidth",fill:"fillColor",r:"radius"},axisTypes:["xAxis","yAxis"],colorCounter:0,parallelArrays:["x","y"],init:function(a,b){var c=this,d,e,f=a.series,g=function(a,b){return p(a.options.index,a._i)-p(b.options.index,b._i)};c.chart=a;c.options=b=c.setOptions(b);c.linkedSeries=[];c.bindAxes();x(c,{name:b.name,state:"",pointAttr:{},
visible:b.visible!==!1,selected:b.selected===!0});if(fa)b.animation=!1;e=b.events;for(d in e)H(c,d,e[d]);if(e&&e.click||b.point&&b.point.events&&b.point.events.click||b.allowPointSelect)a.runTrackerClick=!0;c.getColor();c.getSymbol();o(c.parallelArrays,function(a){c[a+"Data"]=[]});c.setData(b.data,!1);if(c.isCartesian)a.hasCartesianSeries=!0;f.push(c);c._i=f.length-1;rb(f,g);this.yAxis&&rb(this.yAxis.series,g);o(f,function(a,b){a.index=b;a.name=a.name||"Series "+(b+1)})},bindAxes:function(){var a=
this,b=a.options,c=a.chart,d;o(a.axisTypes||[],function(e){o(c[e],function(c){d=c.options;if(b[e]===d.index||b[e]!==y&&b[e]===d.id||b[e]===y&&d.index===0)c.series.push(a),a[e]=c,c.isDirty=!0});!a[e]&&a.optionalAxis!==e&&la(18,!0)})},updateParallelArrays:function(a,b){var c=a.series,d=arguments;o(c.parallelArrays,typeof b==="number"?function(d){var f=d==="y"&&c.toYData?c.toYData(a):a[d];c[d+"Data"][b]=f}:function(a){Array.prototype[b].apply(c[a+"Data"],Array.prototype.slice.call(d,2))})},autoIncrement:function(){var a=
this.options,b=this.xIncrement,c,d=a.pointIntervalUnit,b=p(b,a.pointStart,0);this.pointInterval=c=p(this.pointInterval,a.pointInterval,1);if(d==="month"||d==="year")a=new Aa(b),a=d==="month"?+a[wb](a[Ya]()+c):+a[xb](a[Za]()+c),c=a-b;this.xIncrement=b+c;return b},getSegments:function(){var a=-1,b=[],c,d=this.points,e=d.length;if(e)if(this.options.connectNulls){for(c=e;c--;)d[c].y===null&&d.splice(c,1);d.length&&(b=[d])}else o(d,function(c,g){c.y===null?(g>a+1&&b.push(d.slice(a+1,g)),a=g):g===e-1&&
b.push(d.slice(a+1,g+1))});this.segments=b},setOptions:function(a){var b=this.chart,c=b.options.plotOptions,b=b.userOptions||{},d=b.plotOptions||{},e=c[this.type];this.userOptions=a;c=z(e,c.series,a);this.tooltipOptions=z(T.tooltip,T.plotOptions[this.type].tooltip,b.tooltip,d.series&&d.series.tooltip,d[this.type]&&d[this.type].tooltip,a.tooltip);e.marker===null&&delete c.marker;this.zoneAxis=c.zoneAxis;a=this.zones=(c.zones||[]).slice();if((c.negativeColor||c.negativeFillColor)&&!c.zones)a.push({value:c[this.zoneAxis+
"Threshold"]||c.threshold||0,color:c.negativeColor,fillColor:c.negativeFillColor});a.length&&q(a[a.length-1].value)&&a.push({color:this.color,fillColor:this.fillColor});return c},getCyclic:function(a,b,c){var d=this.userOptions,e="_"+a+"Index",f=a+"Counter";b||(q(d[e])?b=d[e]:(d[e]=b=this.chart[f]%c.length,this.chart[f]+=1),b=c[b]);this[a]=b},getColor:function(){this.options.colorByPoint||this.getCyclic("color",this.options.color||ba[this.type].color,this.chart.options.colors)},getSymbol:function(){var a=
this.options.marker;this.getCyclic("symbol",a.symbol,this.chart.options.symbols);if(/^url/.test(this.symbol))a.radius=0},drawLegendSymbol:Na.drawLineMarker,setData:function(a,b,c,d){var e=this,f=e.points,g=f&&f.length||0,h,i=e.options,j=e.chart,k=null,l=e.xAxis,m=l&&!!l.categories,n=i.turboThreshold,v=this.xData,s=this.yData,q=(h=e.pointArrayMap)&&h.length,a=a||[];h=a.length;b=p(b,!0);if(d!==!1&&h&&g===h&&!e.cropped&&!e.hasGroupedData&&e.visible)o(a,function(a,b){f[b].update&&f[b].update(a,!1,null,
!1)});else{e.xIncrement=null;e.pointRange=m?1:i.pointRange;e.colorCounter=0;o(this.parallelArrays,function(a){e[a+"Data"].length=0});if(n&&h>n){for(c=0;k===null&&c<h;)k=a[c],c++;if(ra(k)){m=p(i.pointStart,0);i=p(i.pointInterval,1);for(c=0;c<h;c++)v[c]=m,s[c]=a[c],m+=i;e.xIncrement=m}else if(Ha(k))if(q)for(c=0;c<h;c++)i=a[c],v[c]=i[0],s[c]=i.slice(1,q+1);else for(c=0;c<h;c++)i=a[c],v[c]=i[0],s[c]=i[1];else la(12)}else for(c=0;c<h;c++)if(a[c]!==y&&(i={series:e},e.pointClass.prototype.applyOptions.apply(i,
[a[c]]),e.updateParallelArrays(i,c),m&&i.name))l.names[i.x]=i.name;Da(s[0])&&la(14,!0);e.data=[];e.options.data=a;for(c=g;c--;)f[c]&&f[c].destroy&&f[c].destroy();if(l)l.minRange=l.userMinRange;e.isDirty=e.isDirtyData=j.isDirtyBox=!0;c=!1}b&&j.redraw(c)},processData:function(a){var b=this.xData,c=this.yData,d=b.length,e;e=0;var f,g,h=this.xAxis,i,j=this.options;i=j.cropThreshold;var k=this.isCartesian,l,m;if(k&&!this.isDirty&&!h.isDirty&&!this.yAxis.isDirty&&!a)return!1;if(h)a=h.getExtremes(),l=a.min,
m=a.max;if(k&&this.sorted&&(!i||d>i||this.forceCrop))if(b[d-1]<l||b[0]>m)b=[],c=[];else if(b[0]<l||b[d-1]>m)e=this.cropData(this.xData,this.yData,l,m),b=e.xData,c=e.yData,e=e.start,f=!0;for(i=b.length-1;i>=0;i--)d=b[i]-b[i-1],d>0&&(g===y||d<g)?g=d:d<0&&this.requireSorting&&la(15);this.cropped=f;this.cropStart=e;this.processedXData=b;this.processedYData=c;if(j.pointRange===null)this.pointRange=g||1;this.closestPointRange=g},cropData:function(a,b,c,d){var e=a.length,f=0,g=e,h=p(this.cropShoulder,1),
i;for(i=0;i<e;i++)if(a[i]>=c){f=u(0,i-h);break}for(;i<e;i++)if(a[i]>d){g=i+h;break}return{xData:a.slice(f,g),yData:b.slice(f,g),start:f,end:g}},generatePoints:function(){var a=this.options.data,b=this.data,c,d=this.processedXData,e=this.processedYData,f=this.pointClass,g=d.length,h=this.cropStart||0,i,j=this.hasGroupedData,k,l=[],m;if(!b&&!j)b=[],b.length=a.length,b=this.data=b;for(m=0;m<g;m++)i=h+m,j?l[m]=(new f).init(this,[d[m]].concat(sa(e[m]))):(b[i]?k=b[i]:a[i]!==y&&(b[i]=k=(new f).init(this,
a[i],d[m])),l[m]=k),l[m].index=i;if(b&&(g!==(c=b.length)||j))for(m=0;m<c;m++)if(m===h&&!j&&(m+=g),b[m])b[m].destroyElements(),b[m].plotX=y;this.data=b;this.points=l},getExtremes:function(a){var b=this.yAxis,c=this.processedXData,d,e=[],f=0;d=this.xAxis.getExtremes();var g=d.min,h=d.max,i,j,k,l,a=a||this.stackedYData||this.processedYData;d=a.length;for(l=0;l<d;l++)if(j=c[l],k=a[l],i=k!==null&&k!==y&&(!b.isLog||k.length||k>0),j=this.getExtremesFromAll||this.options.getExtremesFromAll||this.cropped||
(c[l+1]||j)>=g&&(c[l-1]||j)<=h,i&&j)if(i=k.length)for(;i--;)k[i]!==null&&(e[f++]=k[i]);else e[f++]=k;this.dataMin=Pa(e);this.dataMax=Fa(e)},translate:function(){this.processedXData||this.processData();this.generatePoints();for(var a=this.options,b=a.stacking,c=this.xAxis,d=c.categories,e=this.yAxis,f=this.points,g=f.length,h=!!this.modifyValue,i=a.pointPlacement,j=i==="between"||ra(i),k=a.threshold,l=a.startFromThreshold?k:0,m,n,v,o=Number.MAX_VALUE,a=0;a<g;a++){var r=f[a],x=r.x,t=r.y;n=r.low;var w=
b&&e.stacks[(this.negStacks&&t<(l?0:k)?"-":"")+this.stackKey];if(e.isLog&&t!==null&&t<=0)r.y=t=null,la(10);r.plotX=m=C(u(-1E5,c.translate(x,0,0,0,1,i,this.type==="flags")),1E5);if(b&&this.visible&&w&&w[x])w=w[x],t=w.points[this.index+","+a],n=t[0],t=t[1],n===l&&(n=p(k,e.min)),e.isLog&&n<=0&&(n=null),r.total=r.stackTotal=w.total,r.percentage=w.total&&r.y/w.total*100,r.stackY=t,w.setOffset(this.pointXOffset||0,this.barW||0);r.yBottom=q(n)?e.translate(n,0,1,0,1):null;h&&(t=this.modifyValue(t,r));r.plotY=
n=typeof t==="number"&&t!==Infinity?C(u(-1E5,e.translate(t,0,1,0,1)),1E5):y;r.isInside=n!==y&&n>=0&&n<=e.len&&m>=0&&m<=c.len;r.clientX=j?c.translate(x,0,0,0,1):m;r.negative=r.y<(k||0);r.category=d&&d[r.x]!==y?d[r.x]:r.x;a&&(o=C(o,O(m-v)));v=m}this.closestPointRangePx=o;this.getSegments()},setClip:function(a){var b=this.chart,c=b.renderer,d=b.inverted,e=this.clipBox,f=e||b.clipBox,g=this.sharedClipKey||["_sharedClip",a&&a.duration,a&&a.easing,f.height].join(","),h=b[g],i=b[g+"m"];if(!h){if(a)f.width=
0,b[g+"m"]=i=c.clipRect(-99,d?-b.plotLeft:-b.plotTop,99,d?b.chartWidth:b.chartHeight);b[g]=h=c.clipRect(f)}a&&(h.count+=1);if(this.options.clip!==!1)this.group.clip(a||e?h:b.clipRect),this.markerGroup.clip(i),this.sharedClipKey=g;a||(h.count-=1,h.count<=0&&g&&b[g]&&(e||(b[g]=b[g].destroy()),b[g+"m"]&&(b[g+"m"]=b[g+"m"].destroy())))},animate:function(a){var b=this.chart,c=this.options.animation,d;if(c&&!da(c))c=ba[this.type].animation;a?this.setClip(c):(d=this.sharedClipKey,(a=b[d])&&a.animate({width:b.plotSizeX},
c),b[d+"m"]&&b[d+"m"].animate({width:b.plotSizeX+99},c),this.animate=null)},afterAnimate:function(){this.setClip();I(this,"afterAnimate")},drawPoints:function(){var a,b=this.points,c=this.chart,d,e,f,g,h,i,j,k,l=this.options.marker,m=this.pointAttr[""],n,v,o,r=this.markerGroup,q=p(l.enabled,this.xAxis.isRadial,this.closestPointRangePx>2*l.radius);if(l.enabled!==!1||this._hasPointMarkers)for(f=b.length;f--;)if(g=b[f],d=V(g.plotX),e=g.plotY,k=g.graphic,n=g.marker||{},v=!!g.marker,a=q&&n.enabled===y||
n.enabled,o=g.isInside,a&&e!==y&&!isNaN(e)&&g.y!==null)if(a=g.pointAttr[g.selected?"select":""]||m,h=a.r,i=p(n.symbol,this.symbol),j=i.indexOf("url")===0,k)k[o?"show":"hide"](!0).animate(x({x:d-h,y:e-h},k.symbolName?{width:2*h,height:2*h}:{}));else{if(o&&(h>0||j))g.graphic=c.renderer.symbol(i,d-h,e-h,2*h,2*h,v?n:l).attr(a).add(r)}else if(k)g.graphic=k.destroy()},convertAttribs:function(a,b,c,d){var e=this.pointAttrToOptions,f,g,h={},a=a||{},b=b||{},c=c||{},d=d||{};for(f in e)g=e[f],h[f]=p(a[g],b[f],
c[f],d[f]);return h},getAttribs:function(){var a=this,b=a.options,c=ba[a.type].marker?b.marker:b,d=c.states,e=d.hover,f,g=a.color,h=a.options.negativeColor;f={stroke:g,fill:g};var i=a.points||[],j,k=[],l,m=a.pointAttrToOptions;l=a.hasPointSpecificOptions;var n=c.lineColor,p=c.fillColor;j=b.turboThreshold;var s=a.zones,r=a.zoneAxis||"y",u;b.marker?(e.radius=e.radius||c.radius+e.radiusPlus,e.lineWidth=e.lineWidth||c.lineWidth+e.lineWidthPlus):(e.color=e.color||oa(e.color||g).brighten(e.brightness).get(),
e.negativeColor=e.negativeColor||oa(e.negativeColor||h).brighten(e.brightness).get());k[""]=a.convertAttribs(c,f);o(["hover","select"],function(b){k[b]=a.convertAttribs(d[b],k[""])});a.pointAttr=k;g=i.length;if(!j||g<j||l)for(;g--;){j=i[g];if((c=j.options&&j.options.marker||j.options)&&c.enabled===!1)c.radius=0;if(s.length){l=0;for(f=s[l];j[r]>=f.value;)f=s[++l];j.color=j.fillColor=f.color}l=b.colorByPoint||j.color;if(j.options)for(u in m)q(c[m[u]])&&(l=!0);if(l){c=c||{};l=[];d=c.states||{};f=d.hover=
d.hover||{};if(!b.marker)f.color=f.color||!j.options.color&&e[j.negative&&h?"negativeColor":"color"]||oa(j.color).brighten(f.brightness||e.brightness).get();f={color:j.color};if(!p)f.fillColor=j.color;if(!n)f.lineColor=j.color;c.hasOwnProperty("color")&&!c.color&&delete c.color;l[""]=a.convertAttribs(x(f,c),k[""]);l.hover=a.convertAttribs(d.hover,k.hover,l[""]);l.select=a.convertAttribs(d.select,k.select,l[""])}else l=k;j.pointAttr=l}},destroy:function(){var a=this,b=a.chart,c=/AppleWebKit\/533/.test(Ba),
d,e=a.data||[],f,g,h;I(a,"destroy");Z(a);o(a.axisTypes||[],function(b){if(h=a[b])ja(h.series,a),h.isDirty=h.forceRedraw=!0});a.legendItem&&a.chart.legend.destroyItem(a);for(d=e.length;d--;)(f=e[d])&&f.destroy&&f.destroy();a.points=null;clearTimeout(a.animationTimeout);for(g in a)a[g]instanceof Q&&!a[g].survive&&(d=c&&g==="group"?"hide":"destroy",a[g][d]());if(b.hoverSeries===a)b.hoverSeries=null;ja(b.series,a);for(g in a)delete a[g]},getSegmentPath:function(a){var b=this,c=[],d=b.options.step;o(a,
function(e,f){var g=e.plotX,h=e.plotY,i;b.getPointSpline?c.push.apply(c,b.getPointSpline(a,e,f)):(c.push(f?"L":"M"),d&&f&&(i=a[f-1],d==="right"?c.push(i.plotX,h):d==="center"?c.push((i.plotX+g)/2,i.plotY,(i.plotX+g)/2,h):c.push(g,i.plotY)),c.push(e.plotX,e.plotY))});return c},getGraphPath:function(){var a=this,b=[],c,d=[];o(a.segments,function(e){c=a.getSegmentPath(e);e.length>1?b=b.concat(c):d.push(e[0])});a.singlePoints=d;return a.graphPath=b},drawGraph:function(){var a=this,b=this.options,c=[["graph",
b.lineColor||this.color,b.dashStyle]],d=b.lineWidth,e=b.linecap!=="square",f=this.getGraphPath(),g=this.fillGraph&&this.color||P;o(this.zones,function(d,e){c.push(["zoneGraph"+e,d.color||a.color,d.dashStyle||b.dashStyle])});o(c,function(c,i){var j=c[0],k=a[j];if(k)db(k),k.animate({d:f});else if((d||g)&&f.length)k={stroke:c[1],"stroke-width":d,fill:g,zIndex:1},c[2]?k.dashstyle=c[2]:e&&(k["stroke-linecap"]=k["stroke-linejoin"]="round"),a[j]=a.chart.renderer.path(f).attr(k).add(a.group).shadow(i<2&&
b.shadow)})},applyZones:function(){var a=this,b=this.chart,c=b.renderer,d=this.zones,e,f,g=this.clips||[],h,i=this.graph,j=this.area,k=u(b.chartWidth,b.chartHeight),l=this[(this.zoneAxis||"y")+"Axis"],m,n=l.reversed,v=b.inverted,s=l.horiz,q,x,t,w=!1;if(d.length&&(i||j))i&&i.hide(),j&&j.hide(),m=l.getExtremes(),o(d,function(d,o){e=n?s?b.plotWidth:0:s?0:l.toPixels(m.min);e=C(u(p(f,e),0),k);f=C(u(r(l.toPixels(p(d.value,m.max),!0)),0),k);w&&(e=f=l.toPixels(m.max));q=Math.abs(e-f);x=C(e,f);t=u(e,f);if(l.isXAxis){if(h=
{x:v?t:x,y:0,width:q,height:k},!s)h.x=b.plotHeight-h.x}else if(h={x:0,y:v?t:x,width:k,height:q},s)h.y=b.plotWidth-h.y;b.inverted&&c.isVML&&(h=l.isXAxis?{x:0,y:n?x:t,height:h.width,width:b.chartWidth}:{x:h.y-b.plotLeft-b.spacingBox.x,y:0,width:h.height,height:b.chartHeight});g[o]?g[o].animate(h):(g[o]=c.clipRect(h),i&&a["zoneGraph"+o].clip(g[o]),j&&a["zoneArea"+o].clip(g[o]));w=d.value>m.max}),this.clips=g},invertGroups:function(){function a(){var a={width:b.yAxis.len,height:b.xAxis.len};o(["group",
"markerGroup"],function(c){b[c]&&b[c].attr(a).invert()})}var b=this,c=b.chart;if(b.xAxis)H(c,"resize",a),H(b,"destroy",function(){Z(c,"resize",a)}),a(),b.invertGroups=a},plotGroup:function(a,b,c,d,e){var f=this[a],g=!f;g&&(this[a]=f=this.chart.renderer.g(b).attr({visibility:c,zIndex:d||0.1}).add(e));f[g?"attr":"animate"](this.getPlotBox());return f},getPlotBox:function(){var a=this.chart,b=this.xAxis,c=this.yAxis;if(a.inverted)b=c,c=this.xAxis;return{translateX:b?b.left:a.plotLeft,translateY:c?c.top:
a.plotTop,scaleX:1,scaleY:1}},render:function(){var a=this,b=a.chart,c,d=a.options,e=(c=d.animation)&&!!a.animate&&b.renderer.isSVG&&p(c.duration,500)||0,f=a.visible?"visible":"hidden",g=d.zIndex,h=a.hasRendered,i=b.seriesGroup;c=a.plotGroup("group","series",f,g,i);a.markerGroup=a.plotGroup("markerGroup","markers",f,g,i);e&&a.animate(!0);a.getAttribs();c.inverted=a.isCartesian?b.inverted:!1;a.drawGraph&&(a.drawGraph(),a.applyZones());o(a.points,function(a){a.redraw&&a.redraw()});a.drawDataLabels&&
a.drawDataLabels();a.visible&&a.drawPoints();a.drawTracker&&a.options.enableMouseTracking!==!1&&a.drawTracker();b.inverted&&a.invertGroups();d.clip!==!1&&!a.sharedClipKey&&!h&&c.clip(b.clipRect);e&&a.animate();if(!h)e?a.animationTimeout=setTimeout(function(){a.afterAnimate()},e):a.afterAnimate();a.isDirty=a.isDirtyData=!1;a.hasRendered=!0},redraw:function(){var a=this.chart,b=this.isDirtyData,c=this.isDirty,d=this.group,e=this.xAxis,f=this.yAxis;d&&(a.inverted&&d.attr({width:a.plotWidth,height:a.plotHeight}),
d.animate({translateX:p(e&&e.left,a.plotLeft),translateY:p(f&&f.top,a.plotTop)}));this.translate();this.render();b&&I(this,"updatedData");(c||b)&&delete this.kdTree},kdDimensions:1,kdAxisArray:["clientX","plotY"],searchPoint:function(a,b){var c=this.xAxis,d=this.yAxis,e=this.chart.inverted;return this.searchKDTree({clientX:e?c.len-a.chartY+c.pos:a.chartX-c.pos,plotY:e?d.len-a.chartX+d.pos:a.chartY-d.pos},b)},buildKDTree:function(){function a(b,d,g){var h,i;if(i=b&&b.length)return h=c.kdAxisArray[d%
g],b.sort(function(a,b){return a[h]-b[h]}),i=Math.floor(i/2),{point:b[i],left:a(b.slice(0,i),d+1,g),right:a(b.slice(i+1),d+1,g)}}function b(){var b=lb(c.points,function(a){return a.y!==null});c.kdTree=a(b,d,d)}var c=this,d=c.kdDimensions;delete c.kdTree;c.options.kdSync?b():setTimeout(b)},searchKDTree:function(a,b){function c(a,b,j,k){var l=b.point,m=d.kdAxisArray[j%k],n,p,o=l;p=q(a[e])&&q(l[e])?Math.pow(a[e]-l[e],2):null;n=q(a[f])&&q(l[f])?Math.pow(a[f]-l[f],2):null;n=(p||0)+(n||0);l.dist=q(n)?Math.sqrt(n):
Number.MAX_VALUE;l.distX=q(p)?Math.sqrt(p):Number.MAX_VALUE;m=a[m]-l[m];n=m<0?"left":"right";p=m<0?"right":"left";b[n]&&(n=c(a,b[n],j+1,k),o=n[g]<o[g]?n:l);b[p]&&Math.sqrt(m*m)<o[g]&&(a=c(a,b[p],j+1,k),o=a[g]<o[g]?a:o);return o}var d=this,e=this.kdAxisArray[0],f=this.kdAxisArray[1],g=b?"distX":"dist";this.kdTree||this.buildKDTree();if(this.kdTree)return c(a,this.kdTree,this.kdDimensions,this.kdDimensions)}};Ib.prototype={destroy:function(){Qa(this,this.axis)},render:function(a){var b=this.options,
c=b.format,c=c?Ja(c,this):b.formatter.call(this);this.label?this.label.attr({text:c,visibility:"hidden"}):this.label=this.axis.chart.renderer.text(c,null,null,b.useHTML).css(b.style).attr({align:this.textAlign,rotation:b.rotation,visibility:"hidden"}).add(a)},setOffset:function(a,b){var c=this.axis,d=c.chart,e=d.inverted,f=c.reversed,f=this.isNegative&&!f||!this.isNegative&&f,g=c.translate(c.usePercentage?100:this.total,0,0,0,1),c=c.translate(0),c=O(g-c),h=d.xAxis[0].translate(this.x)+a,i=d.plotHeight,
f={x:e?f?g:g-c:h,y:e?i-h-b:f?i-g-c:i-g,width:e?c:b,height:e?b:c};if(e=this.label)e.align(this.alignOptions,null,f),f=e.alignAttr,e[this.options.crop===!1||d.isInsidePlot(f.x,f.y)?"show":"hide"](!0)}};va.prototype.buildStacks=function(){var a=this.series,b=p(this.options.reversedStacks,!0),c=a.length;if(!this.isXAxis){for(this.usePercentage=!1;c--;)a[b?c:a.length-c-1].setStackedPoints();if(this.usePercentage)for(c=0;c<a.length;c++)a[c].setPercentStacks()}};va.prototype.renderStackTotals=function(){var a=
this.chart,b=a.renderer,c=this.stacks,d,e,f=this.stackTotalGroup;if(!f)this.stackTotalGroup=f=b.g("stack-labels").attr({visibility:"visible",zIndex:6}).add();f.translate(a.plotLeft,a.plotTop);for(d in c)for(e in a=c[d],a)a[e].render(f)};R.prototype.setStackedPoints=function(){if(this.options.stacking&&!(this.visible!==!0&&this.chart.options.chart.ignoreHiddenSeries!==!1)){var a=this.processedXData,b=this.processedYData,c=[],d=b.length,e=this.options,f=e.threshold,g=e.startFromThreshold?f:0,h=e.stack,
e=e.stacking,i=this.stackKey,j="-"+i,k=this.negStacks,l=this.yAxis,m=l.stacks,n=l.oldStacks,o,s,q,r,t,w;for(r=0;r<d;r++){t=a[r];w=b[r];q=this.index+","+r;s=(o=k&&w<(g?0:f))?j:i;m[s]||(m[s]={});if(!m[s][t])n[s]&&n[s][t]?(m[s][t]=n[s][t],m[s][t].total=null):m[s][t]=new Ib(l,l.options.stackLabels,o,t,h);s=m[s][t];s.points[q]=[p(s.cum,g)];e==="percent"?(o=o?i:j,k&&m[o]&&m[o][t]?(o=m[o][t],s.total=o.total=u(o.total,s.total)+O(w)||0):s.total=ea(s.total+(O(w)||0))):s.total=ea(s.total+(w||0));s.cum=p(s.cum,
g)+(w||0);s.points[q].push(s.cum);c[r]=s.cum}if(e==="percent")l.usePercentage=!0;this.stackedYData=c;l.oldStacks={}}};R.prototype.setPercentStacks=function(){var a=this,b=a.stackKey,c=a.yAxis.stacks,d=a.processedXData;o([b,"-"+b],function(b){var e;for(var f=d.length,g,h;f--;)if(g=d[f],e=(h=c[b]&&c[b][g])&&h.points[a.index+","+f],g=e)h=h.total?100/h.total:0,g[0]=ea(g[0]*h),g[1]=ea(g[1]*h),a.stackedYData[f]=g[1]})};x(F.prototype,{addSeries:function(a,b,c){var d,e=this;a&&(b=p(b,!0),I(e,"addSeries",
{options:a},function(){d=e.initSeries(a);e.isDirtyLegend=!0;e.linkSeries();b&&e.redraw(c)}));return d},addAxis:function(a,b,c,d){var e=b?"xAxis":"yAxis",f=this.options;new va(this,z(a,{index:this[e].length,isX:b}));f[e]=sa(f[e]||{});f[e].push(a);p(c,!0)&&this.redraw(d)},showLoading:function(a){var b=this,c=b.options,d=b.loadingDiv,e=c.loading,f=function(){d&&L(d,{left:b.plotLeft+"px",top:b.plotTop+"px",width:b.plotWidth+"px",height:b.plotHeight+"px"})};if(!d)b.loadingDiv=d=$(Ka,{className:"highcharts-loading"},
x(e.style,{zIndex:10,display:P}),b.container),b.loadingSpan=$("span",null,e.labelStyle,d),H(b,"redraw",f);b.loadingSpan.innerHTML=a||c.lang.loading;if(!b.loadingShown)L(d,{opacity:0,display:""}),mb(d,{opacity:e.style.opacity},{duration:e.showDuration||0}),b.loadingShown=!0;f()},hideLoading:function(){var a=this.options,b=this.loadingDiv;b&&mb(b,{opacity:0},{duration:a.loading.hideDuration||100,complete:function(){L(b,{display:P})}});this.loadingShown=!1}});x(Ga.prototype,{update:function(a,b,c,d){function e(){f.applyOptions(a);
if(f.y===null&&h)f.graphic=h.destroy();if(da(a)&&!Ha(a))f.redraw=function(){if(h)if(a&&a.marker&&a.marker.symbol)f.graphic=h.destroy();else h.attr(f.pointAttr[f.state||""])[f.visible===!1?"hide":"show"]();if(a&&a.dataLabels&&f.dataLabel)f.dataLabel=f.dataLabel.destroy();f.redraw=null};i=f.index;g.updateParallelArrays(f,i);if(l&&f.name)l[f.x]=f.name;k.data[i]=f.options;g.isDirty=g.isDirtyData=!0;if(!g.fixedBox&&g.hasCartesianSeries)j.isDirtyBox=!0;if(k.legendType==="point")j.isDirtyLegend=!0;b&&j.redraw(c)}
var f=this,g=f.series,h=f.graphic,i,j=g.chart,k=g.options,l=g.xAxis&&g.xAxis.names,b=p(b,!0);d===!1?e():f.firePointEvent("update",{options:a},e)},remove:function(a,b){this.series.removePoint(Ma(this,this.series.data),a,b)}});x(R.prototype,{addPoint:function(a,b,c,d){var e=this,f=e.options,g=e.data,h=e.graph,i=e.area,j=e.chart,k=e.xAxis&&e.xAxis.names,l=h&&h.shift||0,m=["graph","area"],h=f.data,n,v=e.xData;Sa(d,j);if(c){for(d=e.zones.length;d--;)m.push("zoneGraph"+d,"zoneArea"+d);o(m,function(a){if(e[a])e[a].shift=
l+1})}if(i)i.isArea=!0;b=p(b,!0);i={series:e};e.pointClass.prototype.applyOptions.apply(i,[a]);m=i.x;d=v.length;if(e.requireSorting&&m<v[d-1])for(n=!0;d&&v[d-1]>m;)d--;e.updateParallelArrays(i,"splice",d,0,0);e.updateParallelArrays(i,d);if(k&&i.name)k[m]=i.name;h.splice(d,0,a);n&&(e.data.splice(d,0,null),e.processData());f.legendType==="point"&&e.generatePoints();c&&(g[0]&&g[0].remove?g[0].remove(!1):(g.shift(),e.updateParallelArrays(i,"shift"),h.shift()));e.isDirty=!0;e.isDirtyData=!0;b&&(e.getAttribs(),
j.redraw())},removePoint:function(a,b,c){var d=this,e=d.data,f=e[a],g=d.points,h=d.chart,i=function(){e.length===g.length&&g.splice(a,1);e.splice(a,1);d.options.data.splice(a,1);d.updateParallelArrays(f||{series:d},"splice",a,1);f&&f.destroy();d.isDirty=!0;d.isDirtyData=!0;b&&h.redraw()};Sa(c,h);b=p(b,!0);f?f.firePointEvent("remove",null,i):i()},remove:function(a,b){var c=this,d=c.chart,a=p(a,!0);if(!c.isRemoving)c.isRemoving=!0,I(c,"remove",null,function(){c.destroy();d.isDirtyLegend=d.isDirtyBox=
!0;d.linkSeries();a&&d.redraw(b)});c.isRemoving=!1},update:function(a,b){var c=this,d=this.chart,e=this.userOptions,f=this.type,g=M[f].prototype,h=["group","markerGroup","dataLabelsGroup"],i;if(a.type&&a.type!==f||a.zIndex!==void 0)h.length=0;o(h,function(a){h[a]=c[a];delete c[a]});a=z(e,{animation:!1,index:this.index,pointStart:this.xData[0]},{data:this.options.data},a);this.remove(!1);for(i in g)this[i]=y;x(this,M[a.type||f].prototype);o(h,function(a){c[a]=h[a]});this.init(d,a);d.linkSeries();p(b,
!0)&&d.redraw(!1)}});x(va.prototype,{update:function(a,b){var c=this.chart,a=c.options[this.coll][this.options.index]=z(this.userOptions,a);this.destroy(!0);this._addedPlotLB=this.chart._labelPanes=y;this.init(c,x(a,{events:y}));c.isDirtyBox=!0;p(b,!0)&&c.redraw()},remove:function(a){for(var b=this.chart,c=this.coll,d=this.series,e=d.length;e--;)d[e]&&d[e].remove(!1);ja(b.axes,this);ja(b[c],this);b.options[c].splice(this.options.index,1);o(b[c],function(a,b){a.options.index=b});this.destroy();b.isDirtyBox=
!0;p(a,!0)&&b.redraw()},setTitle:function(a,b){this.update({title:a},b)},setCategories:function(a,b){this.update({categories:a},b)}});var xa=ka(R);M.line=xa;ba.area=z(U,{threshold:0});var qa=ka(R,{type:"area",getSegments:function(){var a=this,b=[],c=[],d=[],e=this.xAxis,f=this.yAxis,g=f.stacks[this.stackKey],h={},i,j,k=this.points,l=this.options.connectNulls,m,n;if(this.options.stacking&&!this.cropped){for(m=0;m<k.length;m++)h[k[m].x]=k[m];for(n in g)g[n].total!==null&&d.push(+n);d.sort(function(a,
b){return a-b});o(d,function(b){var d=0,k;if(!l||h[b]&&h[b].y!==null)if(h[b])c.push(h[b]);else{for(m=a.index;m<=f.series.length;m++)if(k=g[b].points[m+","+b]){d=k[1];break}i=e.translate(b);j=f.toPixels(d,!0);c.push({y:null,plotX:i,clientX:i,plotY:j,yBottom:j,onMouseOver:na})}});c.length&&b.push(c)}else R.prototype.getSegments.call(this),b=this.segments;this.segments=b},getSegmentPath:function(a){var b=R.prototype.getSegmentPath.call(this,a),c=[].concat(b),d,e=this.options;d=b.length;var f=this.yAxis.getThreshold(e.threshold),
g;d===3&&c.push("L",b[1],b[2]);if(e.stacking&&!this.closedStacks)for(d=a.length-1;d>=0;d--)g=p(a[d].yBottom,f),d<a.length-1&&e.step&&c.push(a[d+1].plotX,g),c.push(a[d].plotX,g);else this.closeSegment(c,a,f);this.areaPath=this.areaPath.concat(c);return b},closeSegment:function(a,b,c){a.push("L",b[b.length-1].plotX,c,"L",b[0].plotX,c)},drawGraph:function(){this.areaPath=[];R.prototype.drawGraph.apply(this);var a=this,b=this.areaPath,c=this.options,d=[["area",this.color,c.fillColor]];o(this.zones,function(b,
f){d.push(["zoneArea"+f,b.color||a.color,b.fillColor||c.fillColor])});o(d,function(d){var f=d[0],g=a[f];g?g.animate({d:b}):a[f]=a.chart.renderer.path(b).attr({fill:p(d[2],oa(d[1]).setOpacity(p(c.fillOpacity,0.75)).get()),zIndex:0}).add(a.group)})},drawLegendSymbol:Na.drawRectangle});M.area=qa;ba.spline=z(U);xa=ka(R,{type:"spline",getPointSpline:function(a,b,c){var d=b.plotX,e=b.plotY,f=a[c-1],g=a[c+1],h,i,j,k;if(f&&g){a=f.plotY;j=g.plotX;var g=g.plotY,l;h=(1.5*d+f.plotX)/2.5;i=(1.5*e+a)/2.5;j=(1.5*
d+j)/2.5;k=(1.5*e+g)/2.5;l=(k-i)*(j-d)/(j-h)+e-k;i+=l;k+=l;i>a&&i>e?(i=u(a,e),k=2*e-i):i<a&&i<e&&(i=C(a,e),k=2*e-i);k>g&&k>e?(k=u(g,e),i=2*e-k):k<g&&k<e&&(k=C(g,e),i=2*e-k);b.rightContX=j;b.rightContY=k}c?(b=["C",f.rightContX||f.plotX,f.rightContY||f.plotY,h||d,i||e,d,e],f.rightContX=f.rightContY=null):b=["M",d,e];return b}});M.spline=xa;ba.areaspline=z(ba.area);qa=qa.prototype;xa=ka(xa,{type:"areaspline",closedStacks:!0,getSegmentPath:qa.getSegmentPath,closeSegment:qa.closeSegment,drawGraph:qa.drawGraph,
drawLegendSymbol:Na.drawRectangle});M.areaspline=xa;ba.column=z(U,{borderColor:"#FFFFFF",borderRadius:0,groupPadding:0.2,marker:null,pointPadding:0.1,minPointLength:0,cropThreshold:50,pointRange:null,states:{hover:{brightness:0.1,shadow:!1,halo:!1},select:{color:"#C0C0C0",borderColor:"#000000",shadow:!1}},dataLabels:{align:null,verticalAlign:null,y:null},startFromThreshold:!0,stickyTracking:!1,tooltip:{distance:6},threshold:0});xa=ka(R,{type:"column",pointAttrToOptions:{stroke:"borderColor",fill:"color",
r:"borderRadius"},cropShoulder:0,directTouch:!0,trackerGroups:["group","dataLabelsGroup"],negStacks:!0,init:function(){R.prototype.init.apply(this,arguments);var a=this,b=a.chart;b.hasRendered&&o(b.series,function(b){if(b.type===a.type)b.isDirty=!0})},getColumnMetrics:function(){var a=this,b=a.options,c=a.xAxis,d=a.yAxis,e=c.reversed,f,g={},h,i=0;b.grouping===!1?i=1:o(a.chart.series,function(b){var c=b.options,e=b.yAxis;if(b.type===a.type&&b.visible&&d.len===e.len&&d.pos===e.pos)c.stacking?(f=b.stackKey,
g[f]===y&&(g[f]=i++),h=g[f]):c.grouping!==!1&&(h=i++),b.columnIndex=h});var c=C(O(c.transA)*(c.ordinalSlope||b.pointRange||c.closestPointRange||c.tickInterval||1),c.len),j=c*b.groupPadding,k=(c-2*j)/i,l=b.pointWidth,b=q(l)?(k-l)/2:k*b.pointPadding,l=p(l,k-2*b);return a.columnMetrics={width:l,offset:b+(j+((e?i-(a.columnIndex||0):a.columnIndex)||0)*k-c/2)*(e?-1:1)}},translate:function(){var a=this,b=a.chart,c=a.options,d=a.borderWidth=p(c.borderWidth,a.closestPointRange*a.xAxis.transA<2?0:1),e=a.yAxis,
f=a.translatedThreshold=e.getThreshold(c.threshold),g=p(c.minPointLength,5),h=a.getColumnMetrics(),i=h.width,j=a.barW=u(i,1+2*d),k=a.pointXOffset=h.offset,l=-(d%2?0.5:0),m=d%2?0.5:1;b.inverted&&(f-=0.5,b.renderer.isVML&&(m+=1));c.pointPadding&&(j=ta(j));R.prototype.translate.apply(a);o(a.points,function(c){var d=p(c.yBottom,f),h=999+O(d),h=C(u(-h,c.plotY),e.len+h),o=c.plotX+k,q=j,t=C(h,d),w,x;w=u(h,d)-t;O(w)<g&&g&&(w=g,x=!e.reversed&&!c.negative||e.reversed&&c.negative,t=r(O(t-f)>g?d-g:f-(x?g:0)));
c.barX=o;c.pointWidth=i;q=r(o+q)+l;o=r(o)+l;q-=o;d=O(t)<0.5;w=C(r(t+w)+m,9E4);t=r(t)+m;w-=t;d&&(t-=1,w+=1);c.tooltipPos=b.inverted?[e.len+e.pos-b.plotLeft-h,a.xAxis.len-o-q/2,w]:[o+q/2,h+e.pos-b.plotTop,w];c.shapeType="rect";c.shapeArgs={x:o,y:t,width:q,height:w}})},getSymbol:na,drawLegendSymbol:Na.drawRectangle,drawGraph:na,drawPoints:function(){var a=this,b=this.chart,c=a.options,d=b.renderer,e=c.animationLimit||250,f,g;o(a.points,function(h){var i=h.plotY,j=h.graphic;if(i!==y&&!isNaN(i)&&h.y!==
null)f=h.shapeArgs,i=q(a.borderWidth)?{"stroke-width":a.borderWidth}:{},g=h.pointAttr[h.selected?"select":""]||a.pointAttr[""],j?(db(j),j.attr(i)[b.pointCount<e?"animate":"attr"](z(f))):h.graphic=d[h.shapeType](f).attr(i).attr(g).add(a.group).shadow(c.shadow,null,c.stacking&&!c.borderRadius);else if(j)h.graphic=j.destroy()})},animate:function(a){var b=this.yAxis,c=this.options,d=this.chart.inverted,e={};if(ca)a?(e.scaleY=0.001,a=C(b.pos+b.len,u(b.pos,b.toPixels(c.threshold))),d?e.translateX=a-b.len:
e.translateY=a,this.group.attr(e)):(e.scaleY=1,e[d?"translateX":"translateY"]=b.pos,this.group.animate(e,this.options.animation),this.animate=null)},remove:function(){var a=this,b=a.chart;b.hasRendered&&o(b.series,function(b){if(b.type===a.type)b.isDirty=!0});R.prototype.remove.apply(a,arguments)}});M.column=xa;ba.bar=z(ba.column);qa=ka(xa,{type:"bar",inverted:!0});M.bar=qa;ba.scatter=z(U,{lineWidth:0,marker:{enabled:!0},tooltip:{headerFormat:'<span style="color:{series.color}">\u25CF</span> <span style="font-size: 10px;"> {series.name}</span><br/>',
pointFormat:"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>"}});qa=ka(R,{type:"scatter",sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:["group","markerGroup","dataLabelsGroup"],takeOrdinalPosition:!1,kdDimensions:2,drawGraph:function(){this.options.lineWidth&&R.prototype.drawGraph.call(this)}});M.scatter=qa;ba.pie=z(U,{borderColor:"#FFFFFF",borderWidth:1,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{distance:30,enabled:!0,formatter:function(){return this.point.name},x:0},
ignoreHiddenPoint:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,states:{hover:{brightness:0.1,shadow:!1}},stickyTracking:!1,tooltip:{followPointer:!0}});U={type:"pie",isCartesian:!1,pointClass:ka(Ga,{init:function(){Ga.prototype.init.apply(this,arguments);var a=this,b;x(a,{visible:a.visible!==!1,name:p(a.name,"Slice")});b=function(b){a.slice(b.type==="select")};H(a,"select",b);H(a,"unselect",b);return a},setVisible:function(a,b){var c=this,d=c.series,e=d.chart,f=d.options.ignoreHiddenPoint,
b=p(b,f);if(a!==c.visible){c.visible=c.options.visible=a=a===y?!c.visible:a;d.options.data[Ma(c,d.data)]=c.options;o(["graphic","dataLabel","connector","shadowGroup"],function(b){if(c[b])c[b][a?"show":"hide"](!0)});c.legendItem&&e.legend.colorizeItem(c,a);!a&&c.state==="hover"&&c.setState("");if(f)d.isDirty=!0;b&&e.redraw()}},slice:function(a,b,c){var d=this.series;Sa(c,d.chart);p(b,!0);this.sliced=this.options.sliced=a=q(a)?a:!this.sliced;d.options.data[Ma(this,d.data)]=this.options;a=a?this.slicedTranslation:
{translateX:0,translateY:0};this.graphic.animate(a);this.shadowGroup&&this.shadowGroup.animate(a)},haloPath:function(a){var b=this.shapeArgs,c=this.series.chart;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(c.plotLeft+b.x,c.plotTop+b.y,b.r+a,b.r+a,{innerR:this.shapeArgs.r,start:b.start,end:b.end})}}),requireSorting:!1,directTouch:!0,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],axisTypes:[],pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth",
fill:"color"},getColor:na,animate:function(a){var b=this,c=b.points,d=b.startAngleRad;if(!a)o(c,function(a){var c=a.graphic,g=a.shapeArgs;c&&(c.attr({r:a.startR||b.center[3]/2,start:d,end:d}),c.animate({r:g.r,start:g.start,end:g.end},b.options.animation))}),b.animate=null},setData:function(a,b,c,d){R.prototype.setData.call(this,a,!1,c,d);this.processData();this.generatePoints();p(b,!0)&&this.chart.redraw(c)},updateTotals:function(){var a,b=0,c=this.points,d=c.length,e,f=this.options.ignoreHiddenPoint;
for(a=0;a<d;a++)e=c[a],b+=f&&!e.visible?0:e.y;this.total=b;for(a=0;a<d;a++)e=c[a],e.percentage=b>0&&(e.visible||!f)?e.y/b*100:0,e.total=b},generatePoints:function(){R.prototype.generatePoints.call(this);this.updateTotals()},translate:function(a){this.generatePoints();var b=0,c=this.options,d=c.slicedOffset,e=d+c.borderWidth,f,g,h,i=c.startAngle||0,j=this.startAngleRad=ma/180*(i-90),i=(this.endAngleRad=ma/180*(p(c.endAngle,i+360)-90))-j,k=this.points,l=c.dataLabels.distance,c=c.ignoreHiddenPoint,m,
n=k.length,o;if(!a)this.center=a=this.getCenter();this.getX=function(b,c){h=W.asin(C((b-a[1])/(a[2]/2+l),1));return a[0]+(c?-1:1)*X(h)*(a[2]/2+l)};for(m=0;m<n;m++){o=k[m];f=j+b*i;if(!c||o.visible)b+=o.percentage/100;g=j+b*i;o.shapeType="arc";o.shapeArgs={x:a[0],y:a[1],r:a[2]/2,innerR:a[3]/2,start:r(f*1E3)/1E3,end:r(g*1E3)/1E3};h=(g+f)/2;h>1.5*ma?h-=2*ma:h<-ma/2&&(h+=2*ma);o.slicedTranslation={translateX:r(X(h)*d),translateY:r(aa(h)*d)};f=X(h)*a[2]/2;g=aa(h)*a[2]/2;o.tooltipPos=[a[0]+f*0.7,a[1]+g*
0.7];o.half=h<-ma/2||h>ma/2?1:0;o.angle=h;e=C(e,l/2);o.labelPos=[a[0]+f+X(h)*l,a[1]+g+aa(h)*l,a[0]+f+X(h)*e,a[1]+g+aa(h)*e,a[0]+f,a[1]+g,l<0?"center":o.half?"right":"left",h]}},drawGraph:null,drawPoints:function(){var a=this,b=a.chart.renderer,c,d,e=a.options.shadow,f,g,h;if(e&&!a.shadowGroup)a.shadowGroup=b.g("shadow").add(a.group);o(a.points,function(i){d=i.graphic;g=i.shapeArgs;f=i.shadowGroup;if(e&&!f)f=i.shadowGroup=b.g("shadow").add(a.shadowGroup);c=i.sliced?i.slicedTranslation:{translateX:0,
translateY:0};f&&f.attr(c);if(d)d.animate(x(g,c));else{h={"stroke-linejoin":"round"};if(!i.visible)h.visibility="hidden";i.graphic=d=b[i.shapeType](g).setRadialReference(a.center).attr(i.pointAttr[i.selected?"select":""]).attr(h).attr(c).add(a.group).shadow(e,f)}})},searchPoint:na,sortByAngle:function(a,b){a.sort(function(a,d){return a.angle!==void 0&&(d.angle-a.angle)*b})},drawLegendSymbol:Na.drawRectangle,getCenter:Yb.getCenter,getSymbol:na};U=ka(R,U);M.pie=U;R.prototype.drawDataLabels=function(){var a=
this,b=a.options,c=b.cursor,d=b.dataLabels,e=a.points,f,g,h=a.hasRendered||0,i,j,k=a.chart.renderer;if(d.enabled||a._hasPointLabels)a.dlProcessOptions&&a.dlProcessOptions(d),j=a.plotGroup("dataLabelsGroup","data-labels",d.defer?"hidden":"visible",d.zIndex||6),p(d.defer,!0)&&(j.attr({opacity:+h}),h||H(a,"afterAnimate",function(){a.visible&&j.show();j[b.animation?"animate":"attr"]({opacity:1},{duration:200})})),g=d,o(e,function(e){var h,n=e.dataLabel,o,s,r=e.connector,u=!0,t,w={};f=e.dlOptions||e.options&&
e.options.dataLabels;h=p(f&&f.enabled,g.enabled);if(n&&!h)e.dataLabel=n.destroy();else if(h){d=z(g,f);t=d.style;h=d.rotation;o=e.getLabelConfig();i=d.format?Ja(d.format,o):d.formatter.call(o,d);t.color=p(d.color,t.color,a.color,"black");if(n)if(q(i))n.attr({text:i}),u=!1;else{if(e.dataLabel=n=n.destroy(),r)e.connector=r.destroy()}else if(q(i)){n={fill:d.backgroundColor,stroke:d.borderColor,"stroke-width":d.borderWidth,r:d.borderRadius||0,rotation:h,padding:d.padding,zIndex:1};if(t.color==="contrast")w.color=
d.inside||d.distance<0||b.stacking?k.getContrast(e.color||a.color):"#000000";if(c)w.cursor=c;for(s in n)n[s]===y&&delete n[s];n=e.dataLabel=k[h?"text":"label"](i,0,-999,d.shape,null,null,d.useHTML).attr(n).css(x(t,w)).add(j).shadow(d.shadow)}n&&a.alignDataLabel(e,n,d,null,u)}})};R.prototype.alignDataLabel=function(a,b,c,d,e){var f=this.chart,g=f.inverted,h=p(a.plotX,-999),i=p(a.plotY,-999),j=b.getBBox(),k=f.renderer.fontMetrics(c.style.fontSize).b,l=this.visible&&(a.series.forceDL||f.isInsidePlot(h,
r(i),g)||d&&f.isInsidePlot(h,g?d.x+1:d.y+d.height-1,g));if(l)d=x({x:g?f.plotWidth-i:h,y:r(g?f.plotHeight-h:i),width:0,height:0},d),x(c,{width:j.width,height:j.height}),c.rotation?(a=f.renderer.rotCorr(k,c.rotation),b[e?"attr":"animate"]({x:d.x+c.x+d.width/2+a.x,y:d.y+c.y+d.height/2}).attr({align:c.align})):(b.align(c,null,d),g=b.alignAttr,p(c.overflow,"justify")==="justify"?this.justifyDataLabel(b,c,g,j,d,e):p(c.crop,!0)&&(l=f.isInsidePlot(g.x,g.y)&&f.isInsidePlot(g.x+j.width,g.y+j.height)),c.shape&&
b.attr({anchorX:a.plotX,anchorY:a.plotY}));if(!l)b.attr({y:-999}),b.placed=!1};R.prototype.justifyDataLabel=function(a,b,c,d,e,f){var g=this.chart,h=b.align,i=b.verticalAlign,j,k,l=a.box?0:a.padding||0;j=c.x+l;if(j<0)h==="right"?b.align="left":b.x=-j,k=!0;j=c.x+d.width-l;if(j>g.plotWidth)h==="left"?b.align="right":b.x=g.plotWidth-j,k=!0;j=c.y+l;if(j<0)i==="bottom"?b.verticalAlign="top":b.y=-j,k=!0;j=c.y+d.height-l;if(j>g.plotHeight)i==="top"?b.verticalAlign="bottom":b.y=g.plotHeight-j,k=!0;if(k)a.placed=
!f,a.align(b,null,e)};if(M.pie)M.pie.prototype.drawDataLabels=function(){var a=this,b=a.data,c,d=a.chart,e=a.options.dataLabels,f=p(e.connectorPadding,10),g=p(e.connectorWidth,1),h=d.plotWidth,i=d.plotHeight,j,k,l=p(e.softConnector,!0),m=e.distance,n=a.center,q=n[2]/2,s=n[1],x=m>0,y,t,w,z=[[],[]],B,A,D,F,G,E=[0,0,0,0],L=function(a,b){return b.y-a.y};if(a.visible&&(e.enabled||a._hasPointLabels)){R.prototype.drawDataLabels.apply(a);o(b,function(a){a.dataLabel&&a.visible&&z[a.half].push(a)});for(F=2;F--;){var I=
[],M=[],H=z[F],K=H.length,J;if(K){a.sortByAngle(H,F-0.5);for(G=b=0;!b&&H[G];)b=H[G]&&H[G].dataLabel&&(H[G].dataLabel.getBBox().height||21),G++;if(m>0){t=C(s+q+m,d.plotHeight);for(G=u(0,s-q-m);G<=t;G+=b)I.push(G);t=I.length;if(K>t){c=[].concat(H);c.sort(L);for(G=K;G--;)c[G].rank=G;for(G=K;G--;)H[G].rank>=t&&H.splice(G,1);K=H.length}for(G=0;G<K;G++){c=H[G];w=c.labelPos;c=9999;var Q,P;for(P=0;P<t;P++)Q=O(I[P]-w[1]),Q<c&&(c=Q,J=P);if(J<G&&I[G]!==null)J=G;else for(t<K-G+J&&I[G]!==null&&(J=t-K+G);I[J]===
null;)J++;M.push({i:J,y:I[J]});I[J]=null}M.sort(L)}for(G=0;G<K;G++){c=H[G];w=c.labelPos;y=c.dataLabel;D=c.visible===!1?"hidden":"inherit";c=w[1];if(m>0){if(t=M.pop(),J=t.i,A=t.y,c>A&&I[J+1]!==null||c<A&&I[J-1]!==null)A=C(u(0,c),d.plotHeight)}else A=c;B=e.justify?n[0]+(F?-1:1)*(q+m):a.getX(A===s-q-m||A===s+q+m?c:A,F);y._attr={visibility:D,align:w[6]};y._pos={x:B+e.x+({left:f,right:-f}[w[6]]||0),y:A+e.y-10};y.connX=B;y.connY=A;if(this.options.size===null)t=y.width,B-t<f?E[3]=u(r(t-B+f),E[3]):B+t>h-
f&&(E[1]=u(r(B+t-h+f),E[1])),A-b/2<0?E[0]=u(r(-A+b/2),E[0]):A+b/2>i&&(E[2]=u(r(A+b/2-i),E[2]))}}}if(Fa(E)===0||this.verifyDataLabelOverflow(E))this.placeDataLabels(),x&&g&&o(this.points,function(b){j=b.connector;w=b.labelPos;if((y=b.dataLabel)&&y._pos&&b.visible)D=y._attr.visibility,B=y.connX,A=y.connY,k=l?["M",B+(w[6]==="left"?5:-5),A,"C",B,A,2*w[2]-w[4],2*w[3]-w[5],w[2],w[3],"L",w[4],w[5]]:["M",B+(w[6]==="left"?5:-5),A,"L",w[2],w[3],"L",w[4],w[5]],j?(j.animate({d:k}),j.attr("visibility",D)):b.connector=
j=a.chart.renderer.path(k).attr({"stroke-width":g,stroke:e.connectorColor||b.color||"#606060",visibility:D}).add(a.dataLabelsGroup);else if(j)b.connector=j.destroy()})}},M.pie.prototype.placeDataLabels=function(){o(this.points,function(a){var b=a.dataLabel;if(b&&a.visible)(a=b._pos)?(b.attr(b._attr),b[b.moved?"animate":"attr"](a),b.moved=!0):b&&b.attr({y:-999})})},M.pie.prototype.alignDataLabel=na,M.pie.prototype.verifyDataLabelOverflow=function(a){var b=this.center,c=this.options,d=c.center,e=c.minSize||
80,f=e,g;d[0]!==null?f=u(b[2]-u(a[1],a[3]),e):(f=u(b[2]-a[1]-a[3],e),b[0]+=(a[3]-a[1])/2);d[1]!==null?f=u(C(f,b[2]-u(a[0],a[2])),e):(f=u(C(f,b[2]-a[0]-a[2]),e),b[1]+=(a[0]-a[2])/2);f<b[2]?(b[2]=f,b[3]=/%$/.test(c.innerSize||0)?f*parseFloat(c.innerSize||0)/100:parseFloat(c.innerSize||0),this.translate(b),o(this.points,function(a){if(a.dataLabel)a.dataLabel._pos=null}),this.drawDataLabels&&this.drawDataLabels()):g=!0;return g};if(M.column)M.column.prototype.alignDataLabel=function(a,b,c,d,e){var f=
this.chart.inverted,g=a.series,h=a.dlBox||a.shapeArgs,i=p(a.below,a.plotY>p(this.translatedThreshold,g.yAxis.len)),j=p(c.inside,!!this.options.stacking);if(h&&(d=z(h),f&&(d={x:g.yAxis.len-d.y-d.height,y:g.xAxis.len-d.x-d.width,width:d.height,height:d.width}),!j))f?(d.x+=i?0:d.width,d.width=0):(d.y+=i?d.height:0,d.height=0);c.align=p(c.align,!f||j?"center":i?"right":"left");c.verticalAlign=p(c.verticalAlign,f||j?"middle":i?"top":"bottom");R.prototype.alignDataLabel.call(this,a,b,c,d,e)};(function(a){var b=
a.Chart,c=a.each,d=a.pick,e=HighchartsAdapter.addEvent;b.prototype.callbacks.push(function(a){function b(){var e=[];c(a.series,function(a){var b=a.options.dataLabels;(b.enabled||a._hasPointLabels)&&!b.allowOverlap&&a.visible&&c(a.points,function(a){if(a.dataLabel)a.dataLabel.labelrank=d(a.labelrank,a.shapeArgs&&a.shapeArgs.height),e.push(a.dataLabel)})});a.hideOverlappingLabels(e)}b();e(a,"redraw",b)});b.prototype.hideOverlappingLabels=function(a){var b=a.length,c,d,e,k;for(d=0;d<b;d++)if(c=a[d])c.oldOpacity=
c.opacity,c.newOpacity=1;a.sort(function(a,b){return b.labelrank-a.labelrank});for(d=0;d<b;d++){e=a[d];for(c=d+1;c<b;++c)if(k=a[c],e&&k&&e.placed&&k.placed&&e.newOpacity!==0&&k.newOpacity!==0&&!(k.alignAttr.x>e.alignAttr.x+e.width||k.alignAttr.x+k.width<e.alignAttr.x||k.alignAttr.y>e.alignAttr.y+e.height||k.alignAttr.y+k.height<e.alignAttr.y))(e.labelrank<k.labelrank?e:k).newOpacity=0}for(d=0;d<b;d++)if(c=a[d]){if(c.oldOpacity!==c.newOpacity&&c.placed)c.alignAttr.opacity=c.newOpacity,c[c.isOld&&c.newOpacity?
"animate":"attr"](c.alignAttr);c.isOld=!0}}})(A);U=A.TrackerMixin={drawTrackerPoint:function(){var a=this,b=a.chart,c=b.pointer,d=a.options.cursor,e=d&&{cursor:d},f=function(a){for(var c=a.target,d;c&&!d;)d=c.point,c=c.parentNode;if(d!==y&&d!==b.hoverPoint)d.onMouseOver(a)};o(a.points,function(a){if(a.graphic)a.graphic.element.point=a;if(a.dataLabel)a.dataLabel.element.point=a});if(!a._hasTracking)o(a.trackerGroups,function(b){if(a[b]&&(a[b].addClass("highcharts-tracker").on("mouseover",f).on("mouseout",
function(a){c.onTrackerMouseOut(a)}).css(e),ab))a[b].on("touchstart",f)}),a._hasTracking=!0},drawTrackerGraph:function(){var a=this,b=a.options,c=b.trackByArea,d=[].concat(c?a.areaPath:a.graphPath),e=d.length,f=a.chart,g=f.pointer,h=f.renderer,i=f.options.tooltip.snap,j=a.tracker,k=b.cursor,l=k&&{cursor:k},k=a.singlePoints,m,n=function(){if(f.hoverSeries!==a)a.onMouseOver()},p="rgba(192,192,192,"+(ca?1.0E-4:0.002)+")";if(e&&!c)for(m=e+1;m--;)d[m]==="M"&&d.splice(m+1,0,d[m+1]-i,d[m+2],"L"),(m&&d[m]===
"M"||m===e)&&d.splice(m,0,"L",d[m-2]+i,d[m-1]);for(m=0;m<k.length;m++)e=k[m],d.push("M",e.plotX-i,e.plotY,"L",e.plotX+i,e.plotY);j?j.attr({d:d}):(a.tracker=h.path(d).attr({"stroke-linejoin":"round",visibility:a.visible?"visible":"hidden",stroke:p,fill:c?p:P,"stroke-width":b.lineWidth+(c?0:2*i),zIndex:2}).add(a.group),o([a.tracker,a.markerGroup],function(a){a.addClass("highcharts-tracker").on("mouseover",n).on("mouseout",function(a){g.onTrackerMouseOut(a)}).css(l);if(ab)a.on("touchstart",n)}))}};if(M.column)xa.prototype.drawTracker=
U.drawTrackerPoint;if(M.pie)M.pie.prototype.drawTracker=U.drawTrackerPoint;if(M.scatter)qa.prototype.drawTracker=U.drawTrackerPoint;x(nb.prototype,{setItemEvents:function(a,b,c,d,e){var f=this;(c?b:a.legendGroup).on("mouseover",function(){a.setState("hover");b.css(f.options.itemHoverStyle)}).on("mouseout",function(){b.css(a.visible?d:e);a.setState()}).on("click",function(b){var c=function(){a.setVisible()},b={browserEvent:b};a.firePointEvent?a.firePointEvent("legendItemClick",b,c):I(a,"legendItemClick",
b,c)})},createCheckboxForItem:function(a){a.checkbox=$("input",{type:"checkbox",checked:a.selected,defaultChecked:a.selected},this.options.itemCheckboxStyle,this.chart.container);H(a.checkbox,"click",function(b){I(a.series||a,"checkboxClick",{checked:b.target.checked,item:a},function(){a.select()})})}});T.legend.itemStyle.cursor="pointer";x(F.prototype,{showResetZoom:function(){var a=this,b=T.lang,c=a.options.chart.resetZoomButton,d=c.theme,e=d.states,f=c.relativeTo==="chart"?null:"plotBox";this.resetZoomButton=
a.renderer.button(b.resetZoom,null,null,function(){a.zoomOut()},d,e&&e.hover).attr({align:c.position.align,title:b.resetZoomTitle}).add().align(c.position,!1,f)},zoomOut:function(){var a=this;I(a,"selection",{resetSelection:!0},function(){a.zoom()})},zoom:function(a){var b,c=this.pointer,d=!1,e;!a||a.resetSelection?o(this.axes,function(a){b=a.zoom()}):o(a.xAxis.concat(a.yAxis),function(a){var e=a.axis,h=e.isXAxis;if(c[h?"zoomX":"zoomY"]||c[h?"pinchX":"pinchY"])b=e.zoom(a.min,a.max),e.displayBtn&&
(d=!0)});e=this.resetZoomButton;if(d&&!e)this.showResetZoom();else if(!d&&da(e))this.resetZoomButton=e.destroy();b&&this.redraw(p(this.options.chart.animation,a&&a.animation,this.pointCount<100))},pan:function(a,b){var c=this,d=c.hoverPoints,e;d&&o(d,function(a){a.setState()});o(b==="xy"?[1,0]:[1],function(b){var d=a[b?"chartX":"chartY"],h=c[b?"xAxis":"yAxis"][0],i=c[b?"mouseDownX":"mouseDownY"],j=(h.pointRange||0)/2,k=h.getExtremes(),l=h.toValue(i-d,!0)+j,j=h.toValue(i+c[b?"plotWidth":"plotHeight"]-
d,!0)-j,i=i>d;if(h.series.length&&(i||l>C(k.dataMin,k.min))&&(!i||j<u(k.dataMax,k.max)))h.setExtremes(l,j,!1,!1,{trigger:"pan"}),e=!0;c[b?"mouseDownX":"mouseDownY"]=d});e&&c.redraw(!1);L(c.container,{cursor:"move"})}});x(Ga.prototype,{select:function(a,b){var c=this,d=c.series,e=d.chart,a=p(a,!c.selected);c.firePointEvent(a?"select":"unselect",{accumulate:b},function(){c.selected=c.options.selected=a;d.options.data[Ma(c,d.data)]=c.options;c.setState(a&&"select");b||o(e.getSelectedPoints(),function(a){if(a.selected&&
a!==c)a.selected=a.options.selected=!1,d.options.data[Ma(a,d.data)]=a.options,a.setState(""),a.firePointEvent("unselect")})})},onMouseOver:function(a){var b=this.series,c=b.chart,d=c.tooltip,e=c.hoverPoint;if(c.hoverSeries!==b)b.onMouseOver();if(e&&e!==this)e.onMouseOut();if(this.series)this.firePointEvent("mouseOver"),d&&(!d.shared||b.noSharedTooltip)&&d.refresh(this,a),this.setState("hover"),c.hoverPoint=this},onMouseOut:function(){var a=this.series.chart,b=a.hoverPoints;this.firePointEvent("mouseOut");
if(!b||Ma(this,b)===-1)this.setState(),a.hoverPoint=null},importEvents:function(){if(!this.hasImportedEvents){var a=z(this.series.options.point,this.options).events,b;this.events=a;for(b in a)H(this,b,a[b]);this.hasImportedEvents=!0}},setState:function(a,b){var c=this.plotX,d=this.plotY,e=this.series,f=e.options.states,g=ba[e.type].marker&&e.options.marker,h=g&&!g.enabled,i=g&&g.states[a],j=i&&i.enabled===!1,k=e.stateMarkerGraphic,l=this.marker||{},m=e.chart,n=e.halo,o,a=a||"";o=this.pointAttr[a]||
e.pointAttr[a];if(!(a===this.state&&!b||this.selected&&a!=="select"||f[a]&&f[a].enabled===!1||a&&(j||h&&i.enabled===!1)||a&&l.states&&l.states[a]&&l.states[a].enabled===!1)){if(this.graphic)g=g&&this.graphic.symbolName&&o.r,this.graphic.attr(z(o,g?{x:c-g,y:d-g,width:2*g,height:2*g}:{})),k&&k.hide();else{if(a&&i)if(g=i.radius,l=l.symbol||e.symbol,k&&k.currentSymbol!==l&&(k=k.destroy()),k)k[b?"animate":"attr"]({x:c-g,y:d-g});else if(l)e.stateMarkerGraphic=k=m.renderer.symbol(l,c-g,d-g,2*g,2*g).attr(o).add(e.markerGroup),
k.currentSymbol=l;if(k)k[a&&m.isInsidePlot(c,d,m.inverted)?"show":"hide"](),k.element.point=this}if((c=f[a]&&f[a].halo)&&c.size){if(!n)e.halo=n=m.renderer.path().add(m.seriesGroup);n.attr(x({fill:oa(this.color||e.color).setOpacity(c.opacity).get()},c.attributes))[b?"animate":"attr"]({d:this.haloPath(c.size)})}else n&&n.attr({d:[]});this.state=a}},haloPath:function(a){var b=this.series,c=b.chart,d=b.getPlotBox(),e=c.inverted;return c.renderer.symbols.circle(d.translateX+(e?b.yAxis.len-this.plotY:this.plotX)-
a,d.translateY+(e?b.xAxis.len-this.plotX:this.plotY)-a,a*2,a*2)}});x(R.prototype,{onMouseOver:function(){var a=this.chart,b=a.hoverSeries;if(b&&b!==this)b.onMouseOut();this.options.events.mouseOver&&I(this,"mouseOver");this.setState("hover");a.hoverSeries=this},onMouseOut:function(){var a=this.options,b=this.chart,c=b.tooltip,d=b.hoverPoint;b.hoverSeries=null;if(d)d.onMouseOut();this&&a.events.mouseOut&&I(this,"mouseOut");c&&!a.stickyTracking&&(!c.shared||this.noSharedTooltip)&&c.hide();this.setState()},
setState:function(a){var b=this.options,c=this.graph,d=b.states,e=b.lineWidth,b=0,a=a||"";if(this.state!==a&&(this.state=a,!(d[a]&&d[a].enabled===!1)&&(a&&(e=d[a].lineWidth||e+(d[a].lineWidthPlus||0)),c&&!c.dashstyle))){a={"stroke-width":e};for(c.attr(a);this["zoneGraph"+b];)this["zoneGraph"+b].attr(a),b+=1}},setVisible:function(a,b){var c=this,d=c.chart,e=c.legendItem,f,g=d.options.chart.ignoreHiddenSeries,h=c.visible;f=(c.visible=a=c.userOptions.visible=a===y?!h:a)?"show":"hide";o(["group","dataLabelsGroup",
"markerGroup","tracker"],function(a){if(c[a])c[a][f]()});if(d.hoverSeries===c||(d.hoverPoint&&d.hoverPoint.series)===c)c.onMouseOut();e&&d.legend.colorizeItem(c,a);c.isDirty=!0;c.options.stacking&&o(d.series,function(a){if(a.options.stacking&&a.visible)a.isDirty=!0});o(c.linkedSeries,function(b){b.setVisible(a,!1)});if(g)d.isDirtyBox=!0;b!==!1&&d.redraw();I(c,f)},show:function(){this.setVisible(!0)},hide:function(){this.setVisible(!1)},select:function(a){this.selected=a=a===y?!this.selected:a;if(this.checkbox)this.checkbox.checked=
a;I(this,a?"select":"unselect")},drawTracker:U.drawTrackerGraph});x(A,{Color:oa,Point:Ga,Tick:Ta,Renderer:$a,SVGElement:Q,SVGRenderer:ua,arrayMin:Pa,arrayMax:Fa,charts:Y,dateFormat:Oa,error:la,format:Ja,pathAnim:zb,getOptions:function(){return T},hasBidiBug:Ob,isTouchDevice:Kb,setOptions:function(a){T=z(!0,T,a);Db();return T},addEvent:H,removeEvent:Z,createElement:$,discardElement:Ra,css:L,each:o,map:Ua,merge:z,splat:sa,extendClass:ka,pInt:D,svg:ca,canvas:fa,vml:!ca&&!fa,product:"Highcharts",version:"4.1.7"})})();
/*
Highcharts JS v4.1.7 (2015-06-26)
Exporting module
(c) 2010-2014 Torstein Honsi
License: www.highcharts.com/license
*/
(function(f){var z=f.Chart,s=f.addEvent,A=f.removeEvent,B=HighchartsAdapter.fireEvent,j=f.createElement,p=f.discardElement,u=f.css,l=f.merge,m=f.each,q=f.extend,E=f.splat,F=Math.max,k=document,C=window,G=f.isTouchDevice,H=f.Renderer.prototype.symbols,r=f.getOptions(),x;q(r.lang,{printChart:"Print chart",downloadPNG:"Download PNG image",downloadJPEG:"Download JPEG image",downloadPDF:"Download PDF document",downloadSVG:"Download SVG vector image",contextButtonTitle:"Chart context menu"});r.navigation=
{menuStyle:{border:"1px solid #A0A0A0",background:"#FFFFFF",padding:"5px 0"},menuItemStyle:{padding:"0 10px",background:"none",color:"#303030",fontSize:G?"14px":"11px"},menuItemHoverStyle:{background:"#4572A5",color:"#FFFFFF"},buttonOptions:{symbolFill:"#E0E0E0",symbolSize:14,symbolStroke:"#666",symbolStrokeWidth:3,symbolX:12.5,symbolY:10.5,align:"right",buttonSpacing:3,height:22,theme:{fill:"white",stroke:"none"},verticalAlign:"top",width:24}};r.exporting={type:"image/png",url:"http://export.highcharts.com/",
buttons:{contextButton:{menuClassName:"highcharts-contextmenu",symbol:"menu",_titleKey:"contextButtonTitle",menuItems:[{textKey:"printChart",onclick:function(){this.print()}},{separator:!0},{textKey:"downloadPNG",onclick:function(){this.exportChart()}},{textKey:"downloadJPEG",onclick:function(){this.exportChart({type:"image/jpeg"})}},{textKey:"downloadPDF",onclick:function(){this.exportChart({type:"application/pdf"})}},{textKey:"downloadSVG",onclick:function(){this.exportChart({type:"image/svg+xml"})}}]}}};
f.post=function(b,a,e){var c,b=j("form",l({method:"post",action:b,enctype:"multipart/form-data"},e),{display:"none"},k.body);for(c in a)j("input",{type:"hidden",name:c,value:a[c]},null,b);b.submit();p(b)};q(z.prototype,{sanitizeSVG:function(b){return b.replace(/zIndex="[^"]+"/g,"").replace(/isShadow="[^"]+"/g,"").replace(/symbolName="[^"]+"/g,"").replace(/jQuery[0-9]+="[^"]+"/g,"").replace(/url\([^#]+#/g,"url(#").replace(/<svg /,'<svg xmlns:xlink="http://www.w3.org/1999/xlink" ').replace(/ (NS[0-9]+\:)?href=/g,
" xlink:href=").replace(/\n/," ").replace(/<\/svg>.*?$/,"</svg>").replace(/(fill|stroke)="rgba\(([ 0-9]+,[ 0-9]+,[ 0-9]+),([ 0-9\.]+)\)"/g,'$1="rgb($2)" $1-opacity="$3"').replace(/&nbsp;/g," ").replace(/&shy;/g,"­").replace(/<IMG /g,"<image ").replace(/<(\/?)TITLE>/g,"<$1title>").replace(/height=([^" ]+)/g,'height="$1"').replace(/width=([^" ]+)/g,'width="$1"').replace(/hc-svg-href="([^"]+)">/g,'xlink:href="$1"/>').replace(/ id=([^" >]+)/g,' id="$1"').replace(/class=([^" >]+)/g,'class="$1"').replace(/ transform /g,
" ").replace(/:(path|rect)/g,"$1").replace(/style="([^"]+)"/g,function(a){return a.toLowerCase()})},getSVG:function(b){var a=this,e,c,g,y,h,d=l(a.options,b);if(!k.createElementNS)k.createElementNS=function(a,b){return k.createElement(b)};c=j("div",null,{position:"absolute",top:"-9999em",width:a.chartWidth+"px",height:a.chartHeight+"px"},k.body);g=a.renderTo.style.width;h=a.renderTo.style.height;g=d.exporting.sourceWidth||d.chart.width||/px$/.test(g)&&parseInt(g,10)||600;h=d.exporting.sourceHeight||
d.chart.height||/px$/.test(h)&&parseInt(h,10)||400;q(d.chart,{animation:!1,renderTo:c,forExport:!0,width:g,height:h});d.exporting.enabled=!1;delete d.data;d.series=[];m(a.series,function(a){y=l(a.options,{animation:!1,enableMouseTracking:!1,showCheckbox:!1,visible:a.visible});y.isInternal||d.series.push(y)});b&&m(["xAxis","yAxis"],function(a){m(E(b[a]),function(b,c){d[a][c]=l(d[a][c],b)})});e=new f.Chart(d,a.callback);m(["xAxis","yAxis"],function(b){m(a[b],function(a,d){var c=e[b][d],g=a.getExtremes(),
h=g.userMin,g=g.userMax;c&&(h!==void 0||g!==void 0)&&c.setExtremes(h,g,!0,!1)})});g=e.container.innerHTML;d=null;e.destroy();p(c);g=this.sanitizeSVG(g);return g=g.replace(/(url\(#highcharts-[0-9]+)&quot;/g,"$1").replace(/&quot;/g,"'")},getSVGForExport:function(b,a){var e=this.options.exporting;return this.getSVG(l({chart:{borderRadius:0}},e.chartOptions,a,{exporting:{sourceWidth:b&&b.sourceWidth||e.sourceWidth,sourceHeight:b&&b.sourceHeight||e.sourceHeight}}))},exportChart:function(b,a){var e=this.getSVGForExport(b,
a),b=l(this.options.exporting,b);f.post(b.url,{filename:b.filename||"chart",type:b.type,width:b.width||0,scale:b.scale||2,svg:e},b.formAttributes)},print:function(){var b=this,a=b.container,e=[],c=a.parentNode,g=k.body,f=g.childNodes;if(!b.isPrinting)b.isPrinting=!0,B(b,"beforePrint"),m(f,function(a,b){if(a.nodeType===1)e[b]=a.style.display,a.style.display="none"}),g.appendChild(a),C.focus(),C.print(),setTimeout(function(){c.appendChild(a);m(f,function(a,b){if(a.nodeType===1)a.style.display=e[b]});
b.isPrinting=!1;B(b,"afterPrint")},1E3)},contextMenu:function(b,a,e,c,g,f,h){var d=this,l=d.options.navigation,D=l.menuItemStyle,n=d.chartWidth,o=d.chartHeight,k="cache-"+b,i=d[k],t=F(g,f),v,w,p,r=function(a){d.pointer.inClass(a.target,b)||w()};if(!i)d[k]=i=j("div",{className:b},{position:"absolute",zIndex:1E3,padding:t+"px"},d.container),v=j("div",null,q({MozBoxShadow:"3px 3px 10px #888",WebkitBoxShadow:"3px 3px 10px #888",boxShadow:"3px 3px 10px #888"},l.menuStyle),i),w=function(){u(i,{display:"none"});
h&&h.setState(0);d.openMenu=!1},s(i,"mouseleave",function(){p=setTimeout(w,500)}),s(i,"mouseenter",function(){clearTimeout(p)}),s(document,"mouseup",r),s(d,"destroy",function(){A(document,"mouseup",r)}),m(a,function(a){if(a){var b=a.separator?j("hr",null,null,v):j("div",{onmouseover:function(){u(this,l.menuItemHoverStyle)},onmouseout:function(){u(this,D)},onclick:function(){w();a.onclick&&a.onclick.apply(d,arguments)},innerHTML:a.text||d.options.lang[a.textKey]},q({cursor:"pointer"},D),v);d.exportDivElements.push(b)}}),
d.exportDivElements.push(v,i),d.exportMenuWidth=i.offsetWidth,d.exportMenuHeight=i.offsetHeight;a={display:"block"};e+d.exportMenuWidth>n?a.right=n-e-g-t+"px":a.left=e-t+"px";c+f+d.exportMenuHeight>o&&h.alignOptions.verticalAlign!=="top"?a.bottom=o-c-t+"px":a.top=c+f-t+"px";u(i,a);d.openMenu=!0},addButton:function(b){var a=this,e=a.renderer,c=l(a.options.navigation.buttonOptions,b),g=c.onclick,k=c.menuItems,h,d,m={stroke:c.symbolStroke,fill:c.symbolFill},j=c.symbolSize||12;if(!a.btnCount)a.btnCount=
0;if(!a.exportDivElements)a.exportDivElements=[],a.exportSVGElements=[];if(c.enabled!==!1){var n=c.theme,o=n.states,p=o&&o.hover,o=o&&o.select,i;delete n.states;g?i=function(){g.apply(a,arguments)}:k&&(i=function(){a.contextMenu(d.menuClassName,k,d.translateX,d.translateY,d.width,d.height,d);d.setState(2)});c.text&&c.symbol?n.paddingLeft=f.pick(n.paddingLeft,25):c.text||q(n,{width:c.width,height:c.height,padding:0});d=e.button(c.text,0,0,i,n,p,o).attr({title:a.options.lang[c._titleKey],"stroke-linecap":"round"});
d.menuClassName=b.menuClassName||"highcharts-menu-"+a.btnCount++;c.symbol&&(h=e.symbol(c.symbol,c.symbolX-j/2,c.symbolY-j/2,j,j).attr(q(m,{"stroke-width":c.symbolStrokeWidth||1,zIndex:1})).add(d));d.add().align(q(c,{width:d.width,x:f.pick(c.x,x)}),!0,"spacingBox");x+=(d.width+c.buttonSpacing)*(c.align==="right"?-1:1);a.exportSVGElements.push(d,h)}},destroyExport:function(b){var b=b.target,a,e;for(a=0;a<b.exportSVGElements.length;a++)if(e=b.exportSVGElements[a])e.onclick=e.ontouchstart=null,b.exportSVGElements[a]=
e.destroy();for(a=0;a<b.exportDivElements.length;a++)e=b.exportDivElements[a],A(e,"mouseleave"),b.exportDivElements[a]=e.onmouseout=e.onmouseover=e.ontouchstart=e.onclick=null,p(e)}});H.menu=function(b,a,e,c){return["M",b,a+2.5,"L",b+e,a+2.5,"M",b,a+c/2+0.5,"L",b+e,a+c/2+0.5,"M",b,a+c-1.5,"L",b+e,a+c-1.5]};z.prototype.callbacks.push(function(b){var a,e=b.options.exporting,c=e.buttons;x=0;if(e.enabled!==!1){for(a in c)b.addButton(c[a]);s(b,"destroy",b.destroyExport)}})})(Highcharts);
/*
Highcharts JS v4.1.7 (2015-06-26)
(c) 2009-2014 Torstein Honsi
License: www.highcharts.com/license
*/
(function(k,D){function K(a,b,c){this.init.call(this,a,b,c)}var P=k.arrayMin,Q=k.arrayMax,t=k.each,H=k.extend,o=k.merge,R=k.map,q=k.pick,x=k.pInt,p=k.getOptions().plotOptions,h=k.seriesTypes,v=k.extendClass,L=k.splat,u=k.wrap,M=k.Axis,y=k.Tick,I=k.Point,S=k.Pointer,T=k.CenteredSeriesMixin,z=k.TrackerMixin,s=k.Series,w=Math,E=w.round,B=w.floor,N=w.max,U=k.Color,r=function(){};H(K.prototype,{init:function(a,b,c){var d=this,e=d.defaultOptions;d.chart=b;d.options=a=o(e,b.angular?{background:{}}:void 0,
a);(a=a.background)&&t([].concat(L(a)).reverse(),function(a){var b=a.backgroundColor,g=c.userOptions,a=o(d.defaultBackgroundOptions,a);if(b)a.backgroundColor=b;a.color=a.backgroundColor;c.options.plotBands.unshift(a);g.plotBands=g.plotBands||[];g.plotBands.unshift(a)})},defaultOptions:{center:["50%","50%"],size:"85%",startAngle:0},defaultBackgroundOptions:{shape:"circle",borderWidth:1,borderColor:"silver",backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,"#FFF"],[1,"#DDD"]]},from:-Number.MAX_VALUE,
innerRadius:0,to:Number.MAX_VALUE,outerRadius:"105%"}});var G=M.prototype,y=y.prototype,V={getOffset:r,redraw:function(){this.isDirty=!1},render:function(){this.isDirty=!1},setScale:r,setCategories:r,setTitle:r},O={isRadial:!0,defaultRadialGaugeOptions:{labels:{align:"center",x:0,y:null},minorGridLineWidth:0,minorTickInterval:"auto",minorTickLength:10,minorTickPosition:"inside",minorTickWidth:1,tickLength:10,tickPosition:"inside",tickWidth:2,title:{rotation:0},zIndex:2},defaultRadialXOptions:{gridLineWidth:1,
labels:{align:null,distance:15,x:0,y:null},maxPadding:0,minPadding:0,showLastLabel:!1,tickLength:0},defaultRadialYOptions:{gridLineInterpolation:"circle",labels:{align:"right",x:-3,y:-2},showLastLabel:!1,title:{x:4,text:null,rotation:90}},setOptions:function(a){a=this.options=o(this.defaultOptions,this.defaultRadialOptions,a);if(!a.plotBands)a.plotBands=[]},getOffset:function(){G.getOffset.call(this);this.chart.axisOffset[this.side]=0;this.center=this.pane.center=T.getCenter.call(this.pane)},getLinePath:function(a,
b){var c=this.center,b=q(b,c[2]/2-this.offset);return this.chart.renderer.symbols.arc(this.left+c[0],this.top+c[1],b,b,{start:this.startAngleRad,end:this.endAngleRad,open:!0,innerR:0})},setAxisTranslation:function(){G.setAxisTranslation.call(this);if(this.center)this.transA=this.isCircular?(this.endAngleRad-this.startAngleRad)/(this.max-this.min||1):this.center[2]/2/(this.max-this.min||1),this.minPixelPadding=this.isXAxis?this.transA*this.minPointOffset:0},beforeSetTickPositions:function(){this.autoConnect&&
(this.max+=this.categories&&1||this.pointRange||this.closestPointRange||0)},setAxisSize:function(){G.setAxisSize.call(this);if(this.isRadial){this.center=this.pane.center=k.CenteredSeriesMixin.getCenter.call(this.pane);if(this.isCircular)this.sector=this.endAngleRad-this.startAngleRad;this.len=this.width=this.height=this.center[2]*q(this.sector,1)/2}},getPosition:function(a,b){return this.postTranslate(this.isCircular?this.translate(a):0,q(this.isCircular?b:this.translate(a),this.center[2]/2)-this.offset)},
postTranslate:function(a,b){var c=this.chart,d=this.center,a=this.startAngleRad+a;return{x:c.plotLeft+d[0]+Math.cos(a)*b,y:c.plotTop+d[1]+Math.sin(a)*b}},getPlotBandPath:function(a,b,c){var d=this.center,e=this.startAngleRad,f=d[2]/2,i=[q(c.outerRadius,"100%"),c.innerRadius,q(c.thickness,10)],g=/%$/,l,m=this.isCircular;this.options.gridLineInterpolation==="polygon"?d=this.getPlotLinePath(a).concat(this.getPlotLinePath(b,!0)):(a=Math.max(a,this.min),b=Math.min(b,this.max),m||(i[0]=this.translate(a),
i[1]=this.translate(b)),i=R(i,function(a){g.test(a)&&(a=x(a,10)*f/100);return a}),c.shape==="circle"||!m?(a=-Math.PI/2,b=Math.PI*1.5,l=!0):(a=e+this.translate(a),b=e+this.translate(b)),d=this.chart.renderer.symbols.arc(this.left+d[0],this.top+d[1],i[0],i[0],{start:Math.min(a,b),end:Math.max(a,b),innerR:q(i[1],i[0]-i[2]),open:l}));return d},getPlotLinePath:function(a,b){var c=this,d=c.center,e=c.chart,f=c.getPosition(a),i,g,l;c.isCircular?l=["M",d[0]+e.plotLeft,d[1]+e.plotTop,"L",f.x,f.y]:c.options.gridLineInterpolation===
"circle"?(a=c.translate(a))&&(l=c.getLinePath(0,a)):(t(e.xAxis,function(a){a.pane===c.pane&&(i=a)}),l=[],a=c.translate(a),d=i.tickPositions,i.autoConnect&&(d=d.concat([d[0]])),b&&(d=[].concat(d).reverse()),t(d,function(f,c){g=i.getPosition(f,a);l.push(c?"L":"M",g.x,g.y)}));return l},getTitlePosition:function(){var a=this.center,b=this.chart,c=this.options.title;return{x:b.plotLeft+a[0]+(c.x||0),y:b.plotTop+a[1]-{high:0.5,middle:0.25,low:0}[c.align]*a[2]+(c.y||0)}}};u(G,"init",function(a,b,c){var j;
var d=b.angular,e=b.polar,f=c.isX,i=d&&f,g,l;l=b.options;var m=c.pane||0;if(d){if(H(this,i?V:O),g=!f)this.defaultRadialOptions=this.defaultRadialGaugeOptions}else if(e)H(this,O),this.defaultRadialOptions=(g=f)?this.defaultRadialXOptions:o(this.defaultYAxisOptions,this.defaultRadialYOptions);a.call(this,b,c);if(!i&&(d||e)){a=this.options;if(!b.panes)b.panes=[];this.pane=(j=b.panes[m]=b.panes[m]||new K(L(l.pane)[m],b,this),m=j);m=m.options;b.inverted=!1;l.chart.zoomType=null;this.startAngleRad=b=(m.startAngle-
90)*Math.PI/180;this.endAngleRad=l=(q(m.endAngle,m.startAngle+360)-90)*Math.PI/180;this.offset=a.offset||0;if((this.isCircular=g)&&c.max===D&&l-b===2*Math.PI)this.autoConnect=!0}});u(y,"getPosition",function(a,b,c,d,e){var f=this.axis;return f.getPosition?f.getPosition(c):a.call(this,b,c,d,e)});u(y,"getLabelPosition",function(a,b,c,d,e,f,i,g,l){var m=this.axis,j=f.y,n=20,h=f.align,A=(m.translate(this.pos)+m.startAngleRad+Math.PI/2)/Math.PI*180%360;m.isRadial?(a=m.getPosition(this.pos,m.center[2]/
2+q(f.distance,-25)),f.rotation==="auto"?d.attr({rotation:A}):j===null&&(j=m.chart.renderer.fontMetrics(d.styles.fontSize).b-d.getBBox().height/2),h===null&&(m.isCircular?(this.label.getBBox().width>m.len*m.tickInterval/(m.max-m.min)&&(n=0),h=A>n&&A<180-n?"left":A>180+n&&A<360-n?"right":"center"):h="center",d.attr({align:h})),a.x+=f.x,a.y+=j):a=a.call(this,b,c,d,e,f,i,g,l);return a});u(y,"getMarkPath",function(a,b,c,d,e,f,i){var g=this.axis;g.isRadial?(a=g.getPosition(this.pos,g.center[2]/2+d),b=
["M",b,c,"L",a.x,a.y]):b=a.call(this,b,c,d,e,f,i);return b});p.arearange=o(p.area,{lineWidth:1,marker:null,threshold:null,tooltip:{pointFormat:'<span style="color:{series.color}">\u25CF</span> {series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>'},trackByArea:!0,dataLabels:{align:null,verticalAlign:null,xLow:0,xHigh:0,yLow:0,yHigh:0},states:{hover:{halo:!1}}});h.arearange=v(h.area,{type:"arearange",pointArrayMap:["low","high"],toYData:function(a){return[a.low,a.high]},pointValKey:"low",deferTranslatePolar:!0,
highToXY:function(a){var b=this.chart,c=this.xAxis.postTranslate(a.rectPlotX,this.yAxis.len-a.plotHigh);a.plotHighX=c.x-b.plotLeft;a.plotHigh=c.y-b.plotTop},getSegments:function(){var a=this;t(a.points,function(b){if(!a.options.connectNulls&&(b.low===null||b.high===null))b.y=null;else if(b.low===null&&b.high!==null)b.y=b.high});s.prototype.getSegments.call(this)},translate:function(){var a=this,b=a.yAxis;h.area.prototype.translate.apply(a);t(a.points,function(a){var d=a.low,e=a.high,f=a.plotY;e===
null&&d===null?a.y=null:d===null?(a.plotLow=a.plotY=null,a.plotHigh=b.translate(e,0,1,0,1)):e===null?(a.plotLow=f,a.plotHigh=null):(a.plotLow=f,a.plotHigh=b.translate(e,0,1,0,1))});this.chart.polar&&t(this.points,function(c){a.highToXY(c)})},getSegmentPath:function(a){var b,c=[],d=a.length,e=s.prototype.getSegmentPath,f,i;i=this.options;var g=i.step;for(b=HighchartsAdapter.grep(a,function(a){return a.plotLow!==null});d--;)f=a[d],f.plotHigh!==null&&c.push({plotX:f.plotHighX||f.plotX,plotY:f.plotHigh});
a=e.call(this,b);if(g)g===!0&&(g="left"),i.step={left:"right",center:"center",right:"left"}[g];c=e.call(this,c);i.step=g;i=[].concat(a,c);this.chart.polar||(c[0]="L");this.areaPath=this.areaPath.concat(a,c);return i},drawDataLabels:function(){var a=this.data,b=a.length,c,d=[],e=s.prototype,f=this.options.dataLabels,i=f.align,g,l,m=this.chart.inverted;if(f.enabled||this._hasPointLabels){for(c=b;c--;)if(g=a[c])if(l=g.plotHigh>g.plotLow,g.y=g.high,g._plotY=g.plotY,g.plotY=g.plotHigh,d[c]=g.dataLabel,
g.dataLabel=g.dataLabelUpper,g.below=l,m){if(!i)f.align=l?"right":"left";f.x=f.xHigh}else f.y=f.yHigh;e.drawDataLabels&&e.drawDataLabels.apply(this,arguments);for(c=b;c--;)if(g=a[c])if(l=g.plotHigh>g.plotLow,g.dataLabelUpper=g.dataLabel,g.dataLabel=d[c],g.y=g.low,g.plotY=g._plotY,g.below=!l,m){if(!i)f.align=l?"left":"right";f.x=f.xLow}else f.y=f.yLow;e.drawDataLabels&&e.drawDataLabels.apply(this,arguments)}f.align=i},alignDataLabel:function(){h.column.prototype.alignDataLabel.apply(this,arguments)},
setStackedPoints:r,getSymbol:r,drawPoints:r});p.areasplinerange=o(p.arearange);h.areasplinerange=v(h.arearange,{type:"areasplinerange",getPointSpline:h.spline.prototype.getPointSpline});(function(){var a=h.column.prototype;p.columnrange=o(p.column,p.arearange,{lineWidth:1,pointRange:null});h.columnrange=v(h.arearange,{type:"columnrange",translate:function(){var b=this,c=b.yAxis,d;a.translate.apply(b);t(b.points,function(a){var f=a.shapeArgs,i=b.options.minPointLength,g;a.tooltipPos=null;a.plotHigh=
d=c.translate(a.high,0,1,0,1);a.plotLow=a.plotY;g=d;a=a.plotY-d;Math.abs(a)<i?(i-=a,a+=i,g-=i/2):a<0&&(a*=-1,g-=a);f.height=a;f.y=g})},directTouch:!0,trackerGroups:["group","dataLabelsGroup"],drawGraph:r,pointAttrToOptions:a.pointAttrToOptions,drawPoints:a.drawPoints,drawTracker:a.drawTracker,animate:a.animate,getColumnMetrics:a.getColumnMetrics})})();p.gauge=o(p.line,{dataLabels:{enabled:!0,defer:!1,y:15,borderWidth:1,borderColor:"silver",borderRadius:3,crop:!1,verticalAlign:"top",zIndex:2},dial:{},
pivot:{},tooltip:{headerFormat:""},showInLegend:!1});z={type:"gauge",pointClass:v(I,{setState:function(a){this.state=a}}),angular:!0,drawGraph:r,fixedBox:!0,forceDL:!0,trackerGroups:["group","dataLabelsGroup"],translate:function(){var a=this.yAxis,b=this.options,c=a.center;this.generatePoints();t(this.points,function(d){var e=o(b.dial,d.dial),f=x(q(e.radius,80))*c[2]/200,i=x(q(e.baseLength,70))*f/100,g=x(q(e.rearLength,10))*f/100,l=e.baseWidth||3,m=e.topWidth||1,j=b.overshoot,n=a.startAngleRad+a.translate(d.y,
null,null,null,!0);j&&typeof j==="number"?(j=j/180*Math.PI,n=Math.max(a.startAngleRad-j,Math.min(a.endAngleRad+j,n))):b.wrap===!1&&(n=Math.max(a.startAngleRad,Math.min(a.endAngleRad,n)));n=n*180/Math.PI;d.shapeType="path";d.shapeArgs={d:e.path||["M",-g,-l/2,"L",i,-l/2,f,-m/2,f,m/2,i,l/2,-g,l/2,"z"],translateX:c[0],translateY:c[1],rotation:n};d.plotX=c[0];d.plotY=c[1]})},drawPoints:function(){var a=this,b=a.yAxis.center,c=a.pivot,d=a.options,e=d.pivot,f=a.chart.renderer;t(a.points,function(c){var b=
c.graphic,e=c.shapeArgs,m=e.d,j=o(d.dial,c.dial);b?(b.animate(e),e.d=m):c.graphic=f[c.shapeType](e).attr({stroke:j.borderColor||"none","stroke-width":j.borderWidth||0,fill:j.backgroundColor||"black",rotation:e.rotation}).add(a.group)});c?c.animate({translateX:b[0],translateY:b[1]}):a.pivot=f.circle(0,0,q(e.radius,5)).attr({"stroke-width":e.borderWidth||0,stroke:e.borderColor||"silver",fill:e.backgroundColor||"black"}).translate(b[0],b[1]).add(a.group)},animate:function(a){var b=this;if(!a)t(b.points,
function(a){var d=a.graphic;d&&(d.attr({rotation:b.yAxis.startAngleRad*180/Math.PI}),d.animate({rotation:a.shapeArgs.rotation},b.options.animation))}),b.animate=null},render:function(){this.group=this.plotGroup("group","series",this.visible?"visible":"hidden",this.options.zIndex,this.chart.seriesGroup);s.prototype.render.call(this);this.group.clip(this.chart.clipRect)},setData:function(a,b){s.prototype.setData.call(this,a,!1);this.processData();this.generatePoints();q(b,!0)&&this.chart.redraw()},
drawTracker:z&&z.drawTrackerPoint};h.gauge=v(h.line,z);p.boxplot=o(p.column,{fillColor:"#FFFFFF",lineWidth:1,medianWidth:2,states:{hover:{brightness:-0.3}},threshold:null,tooltip:{pointFormat:'<span style="color:{point.color}">\u25CF</span> <b> {series.name}</b><br/>Maximum: {point.high}<br/>Upper quartile: {point.q3}<br/>Median: {point.median}<br/>Lower quartile: {point.q1}<br/>Minimum: {point.low}<br/>'},whiskerLength:"50%",whiskerWidth:2});h.boxplot=v(h.column,{type:"boxplot",pointArrayMap:["low","q1",
"median","q3","high"],toYData:function(a){return[a.low,a.q1,a.median,a.q3,a.high]},pointValKey:"high",pointAttrToOptions:{fill:"fillColor",stroke:"color","stroke-width":"lineWidth"},drawDataLabels:r,translate:function(){var a=this.yAxis,b=this.pointArrayMap;h.column.prototype.translate.apply(this);t(this.points,function(c){t(b,function(b){c[b]!==null&&(c[b+"Plot"]=a.translate(c[b],0,1,0,1))})})},drawPoints:function(){var a=this,b=a.points,c=a.options,d=a.chart.renderer,e,f,i,g,l,m,j,n,h,A,k,J,p,o,
u,r,v,s,w,x,z,y,F=a.doQuartiles!==!1,C=parseInt(a.options.whiskerLength,10)/100;t(b,function(b){h=b.graphic;z=b.shapeArgs;k={};o={};r={};y=b.color||a.color;if(b.plotY!==D)if(e=b.pointAttr[b.selected?"selected":""],v=z.width,s=B(z.x),w=s+v,x=E(v/2),f=B(F?b.q1Plot:b.lowPlot),i=B(F?b.q3Plot:b.lowPlot),g=B(b.highPlot),l=B(b.lowPlot),k.stroke=b.stemColor||c.stemColor||y,k["stroke-width"]=q(b.stemWidth,c.stemWidth,c.lineWidth),k.dashstyle=b.stemDashStyle||c.stemDashStyle,o.stroke=b.whiskerColor||c.whiskerColor||
y,o["stroke-width"]=q(b.whiskerWidth,c.whiskerWidth,c.lineWidth),r.stroke=b.medianColor||c.medianColor||y,r["stroke-width"]=q(b.medianWidth,c.medianWidth,c.lineWidth),j=k["stroke-width"]%2/2,n=s+x+j,A=["M",n,i,"L",n,g,"M",n,f,"L",n,l],F&&(j=e["stroke-width"]%2/2,n=B(n)+j,f=B(f)+j,i=B(i)+j,s+=j,w+=j,J=["M",s,i,"L",s,f,"L",w,f,"L",w,i,"L",s,i,"z"]),C&&(j=o["stroke-width"]%2/2,g+=j,l+=j,p=["M",n-x*C,g,"L",n+x*C,g,"M",n-x*C,l,"L",n+x*C,l]),j=r["stroke-width"]%2/2,m=E(b.medianPlot)+j,u=["M",s,m,"L",w,
m],h)b.stem.animate({d:A}),C&&b.whiskers.animate({d:p}),F&&b.box.animate({d:J}),b.medianShape.animate({d:u});else{b.graphic=h=d.g().add(a.group);b.stem=d.path(A).attr(k).add(h);if(C)b.whiskers=d.path(p).attr(o).add(h);if(F)b.box=d.path(J).attr(e).add(h);b.medianShape=d.path(u).attr(r).add(h)}})},setStackedPoints:r});p.errorbar=o(p.boxplot,{color:"#000000",grouping:!1,linkedTo:":previous",tooltip:{pointFormat:'<span style="color:{point.color}">\u25CF</span> {series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>'},
whiskerWidth:null});h.errorbar=v(h.boxplot,{type:"errorbar",pointArrayMap:["low","high"],toYData:function(a){return[a.low,a.high]},pointValKey:"high",doQuartiles:!1,drawDataLabels:h.arearange?h.arearange.prototype.drawDataLabels:r,getColumnMetrics:function(){return this.linkedParent&&this.linkedParent.columnMetrics||h.column.prototype.getColumnMetrics.call(this)}});p.waterfall=o(p.column,{lineWidth:1,lineColor:"#333",dashStyle:"dot",borderColor:"#333",dataLabels:{inside:!0},states:{hover:{lineWidthPlus:0}}});
h.waterfall=v(h.column,{type:"waterfall",upColorProp:"fill",pointValKey:"y",translate:function(){var a=this.options,b=this.yAxis,c,d,e,f,i,g,l,m,j,n=a.threshold,k=a.stacking;h.column.prototype.translate.apply(this);l=m=n;d=this.points;for(c=0,a=d.length;c<a;c++){e=d[c];g=this.processedYData[c];f=e.shapeArgs;j=(i=k&&b.stacks[(this.negStacks&&g<n?"-":"")+this.stackKey])?i[e.x].points[this.index+","+c]:[0,g];if(e.isSum)e.y=g;else if(e.isIntermediateSum)e.y=g-m;i=N(l,l+e.y)+j[0];f.y=b.translate(i,0,1);
if(e.isSum)f.y=b.translate(j[1],0,1),f.height=Math.min(b.translate(j[0],0,1),b.len)-f.y;else if(e.isIntermediateSum)f.y=b.translate(j[1],0,1),f.height=Math.min(b.translate(m,0,1),b.len)-f.y,m=j[1];else{if(l!==0)f.height=g>0?b.translate(l,0,1)-f.y:b.translate(l,0,1)-b.translate(l-g,0,1);l+=g}f.height<0&&(f.y+=f.height,f.height*=-1);e.plotY=f.y=E(f.y)-this.borderWidth%2/2;f.height=N(E(f.height),0.001);e.yBottom=f.y+f.height;f=e.plotY+(e.negative?f.height:0);this.chart.inverted?e.tooltipPos[0]=b.len-
f:e.tooltipPos[1]=f}},processData:function(a){var b=this.yData,c=this.options.data,d,e=b.length,f,i,g,l,m,j;i=f=g=l=this.options.threshold||0;for(j=0;j<e;j++)m=b[j],d=c&&c[j]?c[j]:{},m==="sum"||d.isSum?b[j]=i:m==="intermediateSum"||d.isIntermediateSum?b[j]=f:(i+=m,f+=m),g=Math.min(i,g),l=Math.max(i,l);s.prototype.processData.call(this,a);this.dataMin=g;this.dataMax=l},toYData:function(a){if(a.isSum)return a.x===0?null:"sum";else if(a.isIntermediateSum)return a.x===0?null:"intermediateSum";return a.y},
getAttribs:function(){h.column.prototype.getAttribs.apply(this,arguments);var a=this,b=a.options,c=b.states,d=b.upColor||a.color,b=k.Color(d).brighten(0.1).get(),e=o(a.pointAttr),f=a.upColorProp;e[""][f]=d;e.hover[f]=c.hover.upColor||b;e.select[f]=c.select.upColor||d;t(a.points,function(b){if(!b.options.color)b.y>0?(b.pointAttr=e,b.color=d):b.pointAttr=a.pointAttr})},getGraphPath:function(){var a=this.data,b=a.length,c=E(this.options.lineWidth+this.borderWidth)%2/2,d=[],e,f,i;for(i=1;i<b;i++)f=a[i].shapeArgs,
e=a[i-1].shapeArgs,f=["M",e.x+e.width,e.y+c,"L",f.x,e.y+c],a[i-1].y<0&&(f[2]+=e.height,f[5]+=e.height),d=d.concat(f);return d},getExtremes:r,drawGraph:s.prototype.drawGraph});p.polygon=o(p.scatter,{marker:{enabled:!1}});h.polygon=v(h.scatter,{type:"polygon",fillGraph:!0,getSegmentPath:function(a){return s.prototype.getSegmentPath.call(this,a).concat("z")},drawGraph:s.prototype.drawGraph,drawLegendSymbol:k.LegendSymbolMixin.drawRectangle});p.bubble=o(p.scatter,{dataLabels:{formatter:function(){return this.point.z},
inside:!0,verticalAlign:"middle"},marker:{lineColor:null,lineWidth:1},minSize:8,maxSize:"20%",states:{hover:{halo:{size:5}}},tooltip:{pointFormat:"({point.x}, {point.y}), Size: {point.z}"},turboThreshold:0,zThreshold:0,zoneAxis:"z"});z=v(I,{haloPath:function(){return I.prototype.haloPath.call(this,this.shapeArgs.r+this.series.options.states.hover.halo.size)},ttBelow:!1});h.bubble=v(h.scatter,{type:"bubble",pointClass:z,pointArrayMap:["y","z"],parallelArrays:["x","y","z"],trackerGroups:["group","dataLabelsGroup"],
bubblePadding:!0,zoneAxis:"z",pointAttrToOptions:{stroke:"lineColor","stroke-width":"lineWidth",fill:"fillColor"},applyOpacity:function(a){var b=this.options.marker,c=q(b.fillOpacity,0.5),a=a||b.fillColor||this.color;c!==1&&(a=U(a).setOpacity(c).get("rgba"));return a},convertAttribs:function(){var a=s.prototype.convertAttribs.apply(this,arguments);a.fill=this.applyOpacity(a.fill);return a},getRadii:function(a,b,c,d){var e,f,i,g=this.zData,l=[],m=this.options.sizeBy!=="width";for(f=0,e=g.length;f<
e;f++)i=b-a,i=i>0?(g[f]-a)/(b-a):0.5,m&&i>=0&&(i=Math.sqrt(i)),l.push(w.ceil(c+i*(d-c))/2);this.radii=l},animate:function(a){var b=this.options.animation;if(!a)t(this.points,function(a){var d=a.graphic,a=a.shapeArgs;d&&a&&(d.attr("r",1),d.animate({r:a.r},b))}),this.animate=null},translate:function(){var a,b=this.data,c,d,e=this.radii;h.scatter.prototype.translate.call(this);for(a=b.length;a--;)c=b[a],d=e?e[a]:0,d>=this.minPxSize/2?(c.shapeType="circle",c.shapeArgs={x:c.plotX,y:c.plotY,r:d},c.dlBox=
{x:c.plotX-d,y:c.plotY-d,width:2*d,height:2*d}):c.shapeArgs=c.plotY=c.dlBox=D},drawLegendSymbol:function(a,b){var c=x(a.itemStyle.fontSize)/2;b.legendSymbol=this.chart.renderer.circle(c,a.baseline-c,c).attr({zIndex:3}).add(b.legendGroup);b.legendSymbol.isMarker=!0},drawPoints:h.column.prototype.drawPoints,alignDataLabel:h.column.prototype.alignDataLabel,buildKDTree:r,applyZones:r});M.prototype.beforePadding=function(){var a=this,b=this.len,c=this.chart,d=0,e=b,f=this.isXAxis,i=f?"xData":"yData",g=
this.min,l={},m=w.min(c.plotWidth,c.plotHeight),j=Number.MAX_VALUE,n=-Number.MAX_VALUE,h=this.max-g,k=b/h,p=[];t(this.series,function(b){var g=b.options;if(b.bubblePadding&&(b.visible||!c.options.chart.ignoreHiddenSeries))if(a.allowZoomOutside=!0,p.push(b),f)t(["minSize","maxSize"],function(a){var b=g[a],f=/%$/.test(b),b=x(b);l[a]=f?m*b/100:b}),b.minPxSize=l.minSize,b=b.zData,b.length&&(j=q(g.zMin,w.min(j,w.max(P(b),g.displayNegative===!1?g.zThreshold:-Number.MAX_VALUE))),n=q(g.zMax,w.max(n,Q(b))))});
t(p,function(a){var b=a[i],c=b.length,m;f&&a.getRadii(j,n,l.minSize,l.maxSize);if(h>0)for(;c--;)typeof b[c]==="number"&&(m=a.radii[c],d=Math.min((b[c]-g)*k-m,d),e=Math.max((b[c]-g)*k+m,e))});p.length&&h>0&&q(this.options.min,this.userMin)===D&&q(this.options.max,this.userMax)===D&&(e-=b,k*=(b+d-e)/b,this.min+=d/k,this.max+=e/k)};(function(){function a(a,b,c){a.call(this,b,c);if(this.chart.polar)this.closeSegment=function(a){var b=this.xAxis.center;a.push("L",b[0],b[1])},this.closedStacks=!0}function b(a,
b){var c=this.chart,d=this.options.animation,e=this.group,j=this.markerGroup,n=this.xAxis.center,h=c.plotLeft,k=c.plotTop;if(c.polar){if(c.renderer.isSVG)d===!0&&(d={}),b?(c={translateX:n[0]+h,translateY:n[1]+k,scaleX:0.001,scaleY:0.001},e.attr(c),j&&j.attr(c)):(c={translateX:h,translateY:k,scaleX:1,scaleY:1},e.animate(c,d),j&&j.animate(c,d),this.animate=null)}else a.call(this,b)}var c=s.prototype,d=S.prototype,e;c.searchPointByAngle=function(a){var b=this.chart,c=this.xAxis.pane.center;return this.searchKDTree({clientX:180+
Math.atan2(a.chartX-c[0]-b.plotLeft,a.chartY-c[1]-b.plotTop)*(-180/Math.PI)})};u(c,"buildKDTree",function(a){if(this.chart.polar)this.kdByAngle?this.searchPoint=this.searchPointByAngle:this.kdDimensions=2;a.apply(this)});c.toXY=function(a){var b,c=this.chart,d=a.plotX;b=a.plotY;a.rectPlotX=d;a.rectPlotY=b;b=this.xAxis.postTranslate(a.plotX,this.yAxis.len-b);a.plotX=a.polarPlotX=b.x-c.plotLeft;a.plotY=a.polarPlotY=b.y-c.plotTop;this.kdByAngle?(c=(d/Math.PI*180+this.xAxis.pane.options.startAngle)%360,
c<0&&(c+=360),a.clientX=c):a.clientX=a.plotX};h.area&&u(h.area.prototype,"init",a);h.areaspline&&u(h.areaspline.prototype,"init",a);h.spline&&u(h.spline.prototype,"getPointSpline",function(a,b,c,d){var e,j,n,h,k,p,o;if(this.chart.polar){e=c.plotX;j=c.plotY;a=b[d-1];n=b[d+1];this.connectEnds&&(a||(a=b[b.length-2]),n||(n=b[1]));if(a&&n)h=a.plotX,k=a.plotY,b=n.plotX,p=n.plotY,h=(1.5*e+h)/2.5,k=(1.5*j+k)/2.5,n=(1.5*e+b)/2.5,o=(1.5*j+p)/2.5,b=Math.sqrt(Math.pow(h-e,2)+Math.pow(k-j,2)),p=Math.sqrt(Math.pow(n-
e,2)+Math.pow(o-j,2)),h=Math.atan2(k-j,h-e),k=Math.atan2(o-j,n-e),o=Math.PI/2+(h+k)/2,Math.abs(h-o)>Math.PI/2&&(o-=Math.PI),h=e+Math.cos(o)*b,k=j+Math.sin(o)*b,n=e+Math.cos(Math.PI+o)*p,o=j+Math.sin(Math.PI+o)*p,c.rightContX=n,c.rightContY=o;d?(c=["C",a.rightContX||a.plotX,a.rightContY||a.plotY,h||e,k||j,e,j],a.rightContX=a.rightContY=null):c=["M",e,j]}else c=a.call(this,b,c,d);return c});u(c,"translate",function(a){var b=this.chart;a.call(this);if(b.polar&&(this.kdByAngle=b.tooltip&&b.tooltip.shared,
!this.preventPostTranslate)){a=this.points;for(b=a.length;b--;)this.toXY(a[b])}});u(c,"getSegmentPath",function(a,b){var c=this.points;if(this.chart.polar&&this.options.connectEnds!==!1&&b[b.length-1]===c[c.length-1]&&c[0].y!==null)this.connectEnds=!0,b=[].concat(b,[c[0]]);return a.call(this,b)});u(c,"animate",b);if(h.column)e=h.column.prototype,u(e,"animate",b),u(e,"translate",function(a){var b=this.xAxis,c=this.yAxis.len,d=b.center,e=b.startAngleRad,j=this.chart.renderer,h,k;this.preventPostTranslate=
!0;a.call(this);if(b.isRadial){b=this.points;for(k=b.length;k--;)h=b[k],a=h.barX+e,h.shapeType="path",h.shapeArgs={d:j.symbols.arc(d[0],d[1],c-h.plotY,null,{start:a,end:a+h.pointWidth,innerR:c-q(h.yBottom,c)})},this.toXY(h),h.tooltipPos=[h.plotX,h.plotY],h.ttBelow=h.plotY>d[1]}}),u(e,"alignDataLabel",function(a,b,d,e,h,j){if(this.chart.polar){a=b.rectPlotX/Math.PI*180;if(e.align===null)e.align=a>20&&a<160?"left":a>200&&a<340?"right":"center";if(e.verticalAlign===null)e.verticalAlign=a<45||a>315?"bottom":
a>135&&a<225?"top":"middle";c.alignDataLabel.call(this,b,d,e,h,j)}else a.call(this,b,d,e,h,j)});u(d,"getCoordinates",function(a,b){var c=this.chart,d={xAxis:[],yAxis:[]};c.polar?t(c.axes,function(a){var e=a.isXAxis,f=a.center,h=b.chartX-f[0]-c.plotLeft,f=b.chartY-f[1]-c.plotTop;d[e?"xAxis":"yAxis"].push({axis:a,value:a.translate(e?Math.PI-Math.atan2(h,f):Math.sqrt(Math.pow(h,2)+Math.pow(f,2)),!0)})}):d=a.call(this,b);return d})})()})(Highcharts);

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View File

@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View File

@@ -1,3 +1,7 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
$ ->
`$('.datetimepicker').datetimepicker({format: 'd.m.Y H:i', startDate: (!($(this).attr("value")==undefined))? $(this).attr("value"): '' })`
return

View File

@@ -0,0 +1,17 @@
$ ->
if $('#infinite-scrolling').size() > 0
more_posts_url = $('.pagination .next_page a').attr('href')
b=$(document).height() - $(window).height() - 260
if more_posts_url && $(window).scrollTop() > b
$('.pagination').html('<b> Loading...</b>')
$.getScript more_posts_url
$(window).on 'scroll', ->
more_posts_url = $('.pagination .next_page a').attr('href')
b=$(document).height() - $(window).height() - 260
if more_posts_url && $(window).scrollTop() > b
$('.pagination').html('<b> Loading...</b>')
$.getScript more_posts_url
return
return

View File

@@ -0,0 +1,9 @@
/*
Sticky-kit v1.1.2 | WTFPL | Leaf Corcoran 2015 | http://leafo.net
*/
(function(){var b,f;b=this.jQuery||window.jQuery;f=b(window);b.fn.stick_in_parent=function(d){var A,w,J,n,B,K,p,q,k,E,t;null==d&&(d={});t=d.sticky_class;B=d.inner_scrolling;E=d.recalc_every;k=d.parent;q=d.offset_top;p=d.spacer;w=d.bottoming;null==q&&(q=0);null==k&&(k=void 0);null==B&&(B=!0);null==t&&(t="is_stuck");A=b(document);null==w&&(w=!0);J=function(a,d,n,C,F,u,r,G){var v,H,m,D,I,c,g,x,y,z,h,l;if(!a.data("sticky_kit")){a.data("sticky_kit",!0);I=A.height();g=a.parent();null!=k&&(g=g.closest(k));
if(!g.length)throw"failed to find stick parent";v=m=!1;(h=null!=p?p&&a.closest(p):b("<div />"))&&h.css("position",a.css("position"));x=function(){var c,f,e;if(!G&&(I=A.height(),c=parseInt(g.css("border-top-width"),10),f=parseInt(g.css("padding-top"),10),d=parseInt(g.css("padding-bottom"),10),n=g.offset().top+c+f,C=g.height(),m&&(v=m=!1,null==p&&(a.insertAfter(h),h.detach()),a.css({position:"",top:"",width:"",bottom:""}).removeClass(t),e=!0),F=a.offset().top-(parseInt(a.css("margin-top"),10)||0)-q,
u=a.outerHeight(!0),r=a.css("float"),h&&h.css({width:a.outerWidth(!0),height:u,display:a.css("display"),"vertical-align":a.css("vertical-align"),"float":r}),e))return l()};x();if(u!==C)return D=void 0,c=q,z=E,l=function(){var b,l,e,k;if(!G&&(e=!1,null!=z&&(--z,0>=z&&(z=E,x(),e=!0)),e||A.height()===I||x(),e=f.scrollTop(),null!=D&&(l=e-D),D=e,m?(w&&(k=e+u+c>C+n,v&&!k&&(v=!1,a.css({position:"fixed",bottom:"",top:c}).trigger("sticky_kit:unbottom"))),e<F&&(m=!1,c=q,null==p&&("left"!==r&&"right"!==r||a.insertAfter(h),
h.detach()),b={position:"",width:"",top:""},a.css(b).removeClass(t).trigger("sticky_kit:unstick")),B&&(b=f.height(),u+q>b&&!v&&(c-=l,c=Math.max(b-u,c),c=Math.min(q,c),m&&a.css({top:c+"px"})))):e>F&&(m=!0,b={position:"fixed",top:c},b.width="border-box"===a.css("box-sizing")?a.outerWidth()+"px":a.width()+"px",a.css(b).addClass(t),null==p&&(a.after(h),"left"!==r&&"right"!==r||h.append(a)),a.trigger("sticky_kit:stick")),m&&w&&(null==k&&(k=e+u+c>C+n),!v&&k)))return v=!0,"static"===g.css("position")&&g.css({position:"relative"}),
a.css({position:"absolute",bottom:d,top:"auto"}).trigger("sticky_kit:bottom")},y=function(){x();return l()},H=function(){G=!0;f.off("touchmove",l);f.off("scroll",l);f.off("resize",y);b(document.body).off("sticky_kit:recalc",y);a.off("sticky_kit:detach",H);a.removeData("sticky_kit");a.css({position:"",bottom:"",top:"",width:""});g.position("position","");if(m)return null==p&&("left"!==r&&"right"!==r||a.insertAfter(h),h.remove()),a.removeClass(t)},f.on("touchmove",l),f.on("scroll",l),f.on("resize",
y),b(document.body).on("sticky_kit:recalc",y),a.on("sticky_kit:detach",H),setTimeout(l,0)}};n=0;for(K=this.length;n<K;n++)d=this[n],J(b(d));return this}}).call(this);

View File

@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View File

@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View File

@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View File

@@ -11,21 +11,40 @@
*
*= require_self
* require_tree .
*= require blueimp-gallery-all
*= require jquery.fileupload-ui
*= require jquery.datetimepicker
*= require jquery-ui/dialog
*= require jquery-ui/autocomplete
*= require jquery-ui/progressbar
*= require jquery-ui/tabs
* require 'bootstrap'
* require 'neuigkeiten'
*/
// Colorshema #0A64A4
$color_prim: #071672;
$color_schema_1: #006599;
$color_schema_2: #630CE8;
$color_schema_3: #FF0021;
$color_schema_4: #E8820C;
$color_schema_5: #FFF30D;
$color_schema_1_dark: darken($color_schema_1, 10%);
$color_schema_2_dark: darken($color_schema_2, 10%);
$color_schema_3_dark: darken($color_schema_3, 10%);
$color_schema_4_dark: darken($color_schema_4, 10%);
$color_schema_5_dark: darken($color_schema_5, 10%);
$color_prim: $color_schema_1_dark; // #006599; //071672;
$color_prim_light: lighten($color_prim ,10%);
$color_prim_vlight: lighten($color_prim ,30%);
$color_prim_dark: darken($color_prim ,10%);
$color_prim_vdark: darken($color_prim ,30%);
$color_cont: FFDB73;
$color_cont_light:FFDB73;
$color_cont: $color_schema_3;
$color_cont_light:lighten($color_cont ,10%);
$linkColor: $color_prim;
$linkColorHover: $color_schema_1;
$white: #FFFFFF;
$bodyBackground: #EEE;
@@ -36,7 +55,7 @@ $bodyBackground: #EEE;
$navbarBackground: #EEE;//$color_prim;
$navbarText: $color_prim;
$navbarLinkColor: $color_prim;
$navbarLinkColorHover: $color_prim_dark;
$navbarLinkColorHover: $color_schema_1;
$dropdownLinkColor: black;
$navbar-default-brand-color: black;
$navbarBrandColor:black;
@@ -45,7 +64,7 @@ $navbarBrandColor:black;
$navbarBackgroundHighlight: #EEE;
//$navbarBackgroundHighlight:#FFFFFF;
$navbarLinkBackgroundHover:#FFBE00;
$navbarLinkBackgroundHover: darken($navbarBackground,10%);
@@ -54,32 +73,30 @@ $infoText:#03406A;
$sansFontFamily: Helvetica, Arial;
@import 'bootstrap';
@import 'bootstrap-responsive';
//@import 'bootstrap-responsive';
@import 'bootstrap/image-gallery';
@import 'font-awesome';
@import 'neuigkeiten';
@import 'themengruppen';
div.header {
display: block;
// background: url('../../../../header1.png') no-repeat;
// background-color:white;// $color_prim;
// background-position: right;
vertical-align:middle;
float:left;
color:#000;
padding-left:87px;
padding-top:0px;
overflow:visible;
height:45px;
height:45px;
margin-bottom: 0 px
}
div.header h1 {
padding:0;
margin:4px;
font-size:20px;
line-height:32px;
margin:4px;
font-size:20px;
line-height:32px;
}
div.header img {
//top:2px;
@@ -90,13 +107,17 @@ border-bottom: $color_prim solid 3px;
}
div.headerrow {
}
$contentdiv-background:none;
$contentdiv-background:none;
$navbar-li-minwidth: 0;
$box-border: lightgray solid 1px;
$box-border: #ccc solid 1px;
$box-border-radius:0px;
$box-background: white;
@import 'layout';
@import 'linkboxes';
@import 'calendars';
@import 'formtastic-bootstrap'

View File

@@ -1,146 +0,0 @@
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the top of the
* compiled file, but it's generally better to create a new file per style scope.
*
*= require_self
* require_tree .
*= require 'calendars'
*= require jquery.fileupload-ui
* require 'bootstrap'
*/
// Colorshema #0A64A4
$color_prim: #0A64A4;
$color_prim_light: #0B65A5;
$color_prim_vlight: #2B85C5;
$color_cont: FFDB73;
$color_cont_light:FFDB73;
$linkColor: #03006E;
$white: #FFFFFF;
$bodyBackground: $white;
$navbarBackground: $color_cont;
$navbarBackground: #FFFFFF;
$navbarBackgroundHighlight:lighten($navbarBackground,30%);
//$navbarBackgroundHighlight:#FFFFFF;
$navbarLinkBackgroundHover:#FFBE00;
$navbarLinkBackgroundHover: lighten(#cccccc,10%);
$infoBackground:#65A5D1;
$infoText:#03406A;
$sansFontFamily: Helvetica, Arial;
@import 'bootstrap';
@import 'bootstrap-responsive';
@import 'bootstrap/image-gallery';
h1 {
font-size: 23px
}
h2 {
font-size: 19px
}
body,html {
padding:0;
margin:0;
}
a:hover {
text-decoration:none;
}
div.header {
display: block;
// background: url('/header1.png') no-repeat;
background-color: #FFF;
background-position: right;
border-bottom:1px solid black;
height:41px;
color:#000;
padding-left:87px;
padding-top:0px;
overflow:hidden;
margin-bottom: 20px
}
div.header h1 {
padding:0;
margin:4px;
font-size:20px;
line-height:32px;
}
#menudiv {
width:100%;
}
.navbar .nav li {
min-width:100%;
}
.navbar .nav .divider {
border-style: solid;
border-width: 1px 0px 0px 0px;
border-color: grey;
min-width: 100%;
}
.navbar .navbar-inner
{
border:none;
box-shadow:none;
}
#contentdiv
{
background: #FFFFFF
}
#contentdiv .container-fluid
{
padding:0;
}
a.linkbox, div.contentbox
{
display:block;
padding:5px;
border-radius: 10px;
border: lightgray solid 1px;
}
a.linkbox:hover
{
box-shadow: 1px 1px 2px 2px lightgray;
}
a.linkbox li
{
}
ul.linkbox-list li
{
margin-bottom:10px;
}
ul.linkbox-list
{
max-width:70em;
}
div.contentbox
{
margin: 5px;
}
.navbar .nav li {
min-width:100%;
background:44F;
}

View File

@@ -0,0 +1,53 @@
@font-face {
font-family: 'fetlogo';
src: font-url('fetlogo.eot?46715046');
src: font-url('fetlogo.eot?46715046#iefix') format('embedded-opentype'),
font-url('fetlogo.woff?46715046') format('woff'),
font-url('fetlogo.ttf?46715046') format('truetype'),
font-url('fetlogo.svg?46715046#fetlogo') format('svg');
font-weight: normal;
font-style: normal;
}
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
/*
@media screen and (-webkit-min-device-pixel-ratio:0) {
@font-face {
font-family: 'fetlogo';
src: font-url('fetlogo.svg?46715046#fetlogo') format('svg');
}
}
*/
[class^="feticon-"]:before, [class*=" feticon-"]:before {
font-family: "fetlogo";
font-style: normal;
font-weight: normal;
speak: none;
display: inline-block;
text-decoration: inherit;
width: 1em;
margin-right: .2em;
text-align: center;
/* opacity: .8; */
/* For safety - reset parent styles, that can break glyph codes*/
font-variant: normal;
text-transform: none;
/* fix buttons height, for twitter bootstrap */
line-height: 1em;
/* Animation center compensation - margins should be symmetric */
/* remove if not needed */
margin-left: .2em;
/* you can be more comfortable with increased icons size */
/* font-size: 120%; */
/* Uncomment for 3D effect */
/* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
}
.feticon-fet_logo:before { content: '\e800'; } /* '' */

View File

@@ -0,0 +1,786 @@
@font-face {
font-family: "ffi1";
src: url("/assets/flatfeticon.eot");
src: url("/assets/flatfeticon.eot#iefix") format("embedded-opentype"),
url("/assets/flatfeticon.woff") format("woff"),
url("/assets/flatfeticon.ttf") format("truetype"),
url("/assets/flatfeticon.svg") format("svg");
font-weight: normal;
font-style: normal;
}
[class^="ffi1-"]:before, [class*=" ffi1-"]:before,
[class^="ffi1-"]:after, [class*=" ffi1-"]:after {
font-family: ffi1;
font-style: normal;
margin-left: 4px;
font-weight:normal;
}
.ffi1-academic:before {
content: "\e000";
}
.ffi1-apple:before {
content: "\e001";
}
.ffi1-auricular6:before {
content: "\e002";
}
.ffi1-bag2:before {
content: "\e003";
}
.ffi1-bald34:before {
content: "\e004";
}
.ffi1-balloons2:before {
content: "\e005";
}
.ffi1-banes:before {
content: "\e006";
}
.ffi1-bar1:before {
content: "\e007";
}
.ffi1-black268:before {
content: "\e008";
}
.ffi1-book119:before {
content: "\e009";
}
.ffi1-book135:before {
content: "\e00a";
}
.ffi1-book137:before {
content: "\e00b";
}
.ffi1-book139:before {
content: "\e00c";
}
.ffi1-books17:before {
content: "\e00d";
}
.ffi1-books19:before {
content: "\e00e";
}
.ffi1-books20:before {
content: "\e00f";
}
.ffi1-books30:before {
content: "\e010";
}
.ffi1-books8:before {
content: "\e011";
}
.ffi1-boy21:before {
content: "\e012";
}
.ffi1-bricks2:before {
content: "\e013";
}
.ffi1-briefcase32:before {
content: "\e014";
}
.ffi1-businessman216:before {
content: "\e015";
}
.ffi1-businessman217:before {
content: "\e016";
}
.ffi1-businessman56:before {
content: "\e017";
}
.ffi1-businessman65:before {
content: "\e018";
}
.ffi1-businessmen32:before {
content: "\e019";
}
.ffi1-calculator40:before {
content: "\e01a";
}
.ffi1-calendar130:before {
content: "\e01b";
}
.ffi1-call36:before {
content: "\e01c";
}
.ffi1-call7:before {
content: "\e01d";
}
.ffi1-candy1:before {
content: "\e01e";
}
.ffi1-candy10:before {
content: "\e01f";
}
.ffi1-career:before {
content: "\e020";
}
.ffi1-certificate2:before {
content: "\e021";
}
.ffi1-checkboxmark:before {
content: "\e022";
}
.ffi1-chemistry:before {
content: "\e023";
}
.ffi1-chemistry1:before {
content: "\e024";
}
.ffi1-circular114:before {
content: "\e025";
}
.ffi1-circular116:before {
content: "\e026";
}
.ffi1-class6:before {
content: "\e027";
}
.ffi1-classroom:before {
content: "\e028";
}
.ffi1-cleaning1:before {
content: "\e029";
}
.ffi1-clipboard44:before {
content: "\e02a";
}
.ffi1-close13:before {
content: "\e02b";
}
.ffi1-cocktail15:before {
content: "\e02c";
}
.ffi1-cocktail7:before {
content: "\e02d";
}
.ffi1-coffee20:before {
content: "\e02e";
}
.ffi1-coins24:before {
content: "\e02f";
}
.ffi1-colors3:before {
content: "\e030";
}
.ffi1-comfortable:before {
content: "\e031";
}
.ffi1-comments16:before {
content: "\e032";
}
.ffi1-compass58:before {
content: "\e033";
}
.ffi1-computer135:before {
content: "\e034";
}
.ffi1-computer136:before {
content: "\e035";
}
.ffi1-computers:before {
content: "\e036";
}
.ffi1-connected20:before {
content: "\e037";
}
.ffi1-contacts1:before {
content: "\e038";
}
.ffi1-copy12:before {
content: "\e039";
}
.ffi1-croissant1:before {
content: "\e03a";
}
.ffi1-data39:before {
content: "\e03b";
}
.ffi1-data45:before {
content: "\e03c";
}
.ffi1-delivered:before {
content: "\e03d";
}
.ffi1-delivery35:before {
content: "\e03e";
}
.ffi1-descendant1:before {
content: "\e03f";
}
.ffi1-diploma:before {
content: "\e040";
}
.ffi1-dislike:before {
content: "\e041";
}
.ffi1-dna9:before {
content: "\e042";
}
.ffi1-domain1:before {
content: "\e043";
}
.ffi1-drink24:before {
content: "\e044";
}
.ffi1-dwelling1:before {
content: "\e045";
}
.ffi1-earth23:before {
content: "\e046";
}
.ffi1-ecological2:before {
content: "\e047";
}
.ffi1-edit12:before {
content: "\e048";
}
.ffi1-education14:before {
content: "\e049";
}
.ffi1-education17:before {
content: "\e04a";
}
.ffi1-education20:before {
content: "\e04b";
}
.ffi1-educational8:before {
content: "\e04c";
}
.ffi1-educative1:before {
content: "\e04d";
}
.ffi1-electric6:before {
content: "\e04e";
}
.ffi1-electrical7:before {
content: "\e04f";
}
.ffi1-electronic32:before {
content: "\e050";
}
.ffi1-electronic51:before {
content: "\e051";
}
.ffi1-elegant8:before {
content: "\e052";
}
.ffi1-email20:before {
content: "\e053";
}
.ffi1-facebook1:before {
content: "\e054";
}
.ffi1-facebook30:before {
content: "\e055";
}
.ffi1-female188:before {
content: "\e056";
}
.ffi1-female189:before {
content: "\e057";
}
.ffi1-female218:before {
content: "\e058";
}
.ffi1-food23:before {
content: "\e059";
}
.ffi1-fork27:before {
content: "\e05a";
}
.ffi1-gears3:before {
content: "\e05b";
}
.ffi1-gingerbread:before {
content: "\e05c";
}
.ffi1-girl16:before {
content: "\e05d";
}
.ffi1-glass15:before {
content: "\e05e";
}
.ffi1-good2:before {
content: "\e05f";
}
.ffi1-graduate11:before {
content: "\e060";
}
.ffi1-graduate8:before {
content: "\e061";
}
.ffi1-graduate9:before {
content: "\e062";
}
.ffi1-graduates2:before {
content: "\e063";
}
.ffi1-graduation20:before {
content: "\e064";
}
.ffi1-graduation25:before {
content: "\e065";
}
.ffi1-grocery10:before {
content: "\e066";
}
.ffi1-halloween10:before {
content: "\e067";
}
.ffi1-hammer7:before {
content: "\e068";
}
.ffi1-hand132:before {
content: "\e069";
}
.ffi1-handbag6:before {
content: "\e06a";
}
.ffi1-hands-shake:before {
content: "\e06b";
}
.ffi1-handshake1:before {
content: "\e06c";
}
.ffi1-hardbound:before {
content: "\e06d";
}
.ffi1-head21:before {
content: "\e06e";
}
.ffi1-hierarchical:before {
content: "\e06f";
}
.ffi1-homework:before {
content: "\e070";
}
.ffi1-hot31:before {
content: "\e071";
}
.ffi1-hot50:before {
content: "\e072";
}
.ffi1-house25:before {
content: "\e073";
}
.ffi1-important:before {
content: "\e074";
}
.ffi1-index3:before {
content: "\e075";
}
.ffi1-instructor:before {
content: "\e076";
}
.ffi1-italian1:before {
content: "\e077";
}
.ffi1-job:before {
content: "\e078";
}
.ffi1-judge:before {
content: "\e079";
}
.ffi1-keys:before {
content: "\e07a";
}
.ffi1-kids1:before {
content: "\e07b";
}
.ffi1-kindergarden:before {
content: "\e07c";
}
.ffi1-laptop88:before {
content: "\e07d";
}
.ffi1-lecture1:before {
content: "\e07e";
}
.ffi1-lecture2:before {
content: "\e07f";
}
.ffi1-like3:before {
content: "\e080";
}
.ffi1-live2:before {
content: "\e081";
}
.ffi1-magnifier12:before {
content: "\e082";
}
.ffi1-magnifier13:before {
content: "\e083";
}
.ffi1-male103:before {
content: "\e084";
}
.ffi1-man183:before {
content: "\e085";
}
.ffi1-man204:before {
content: "\e086";
}
.ffi1-man315:before {
content: "\e087";
}
.ffi1-man388:before {
content: "\e088";
}
.ffi1-man397:before {
content: "\e089";
}
.ffi1-man82:before {
content: "\e08a";
}
.ffi1-men9:before {
content: "\e08b";
}
.ffi1-milk8:before {
content: "\e08c";
}
.ffi1-mirrors:before {
content: "\e08d";
}
.ffi1-money13:before {
content: "\e08e";
}
.ffi1-mop1:before {
content: "\e08f";
}
.ffi1-mop2:before {
content: "\e090";
}
.ffi1-movie19:before {
content: "\e091";
}
.ffi1-multiple25:before {
content: "\e092";
}
.ffi1-news:before {
content: "\e093";
}
.ffi1-newspaper9:before {
content: "\e094";
}
.ffi1-note20:before {
content: "\e095";
}
.ffi1-open127:before {
content: "\e096";
}
.ffi1-open135:before {
content: "\e097";
}
.ffi1-open160:before {
content: "\e098";
}
.ffi1-open161:before {
content: "\e099";
}
.ffi1-owl10:before {
content: "\e09a";
}
.ffi1-package8:before {
content: "\e09b";
}
.ffi1-paperclip14:before {
content: "\e09c";
}
.ffi1-party:before {
content: "\e09d";
}
.ffi1-party1:before {
content: "\e09e";
}
.ffi1-pen38:before {
content: "\e09f";
}
.ffi1-pen39:before {
content: "\e0a0";
}
.ffi1-pen43:before {
content: "\e0a1";
}
.ffi1-pencil54:before {
content: "\e0a2";
}
.ffi1-pencil66:before {
content: "\e0a3";
}
.ffi1-pens:before {
content: "\e0a4";
}
.ffi1-people30:before {
content: "\e0a5";
}
.ffi1-personal5:before {
content: "\e0a6";
}
.ffi1-persong:before {
content: "\e0a7";
}
.ffi1-persons8:before {
content: "\e0a8";
}
.ffi1-phone25:before {
content: "\e0a9";
}
.ffi1-pie46:before {
content: "\e0aa";
}
.ffi1-plate7:before {
content: "\e0ab";
}
.ffi1-plug12:before {
content: "\e0ac";
}
.ffi1-plugin:before {
content: "\e0ad";
}
.ffi1-power20:before {
content: "\e0ae";
}
.ffi1-power48:before {
content: "\e0af";
}
.ffi1-printer11:before {
content: "\e0b0";
}
.ffi1-printer70:before {
content: "\e0b1";
}
.ffi1-professor17:before {
content: "\e0b2";
}
.ffi1-professor4:before {
content: "\e0b3";
}
.ffi1-professor5:before {
content: "\e0b4";
}
.ffi1-professor7:before {
content: "\e0b5";
}
.ffi1-pumpkin2:before {
content: "\e0b6";
}
.ffi1-puzzle25:before {
content: "\e0b7";
}
.ffi1-question41:before {
content: "\e0b8";
}
.ffi1-question42:before {
content: "\e0b9";
}
.ffi1-quiz:before {
content: "\e0ba";
}
.ffi1-regular2:before {
content: "\e0bb";
}
.ffi1-remove9:before {
content: "\e0bc";
}
.ffi1-resistor1:before {
content: "\e0bd";
}
.ffi1-ruler14:before {
content: "\e0be";
}
.ffi1-running5:before {
content: "\e0bf";
}
.ffi1-sandwich:before {
content: "\e0c0";
}
.ffi1-scales2:before {
content: "\e0c1";
}
.ffi1-school31:before {
content: "\e0c2";
}
.ffi1-school35:before {
content: "\e0c3";
}
.ffi1-school6:before {
content: "\e0c4";
}
.ffi1-science2:before {
content: "\e0c5";
}
.ffi1-scissors3:before {
content: "\e0c6";
}
.ffi1-search4:before {
content: "\e0c7";
}
.ffi1-search54:before {
content: "\e0c8";
}
.ffi1-services:before {
content: "\e0c9";
}
.ffi1-serving1:before {
content: "\e0ca";
}
.ffi1-setting:before {
content: "\e0cb";
}
.ffi1-sheep1:before {
content: "\e0cc";
}
.ffi1-shop3:before {
content: "\e0cd";
}
.ffi1-shopping66:before {
content: "\e0ce";
}
.ffi1-shopping8:before {
content: "\e0cf";
}
.ffi1-soccer32:before {
content: "\e0d0";
}
.ffi1-social19:before {
content: "\e0d1";
}
.ffi1-speech84:before {
content: "\e0d2";
}
.ffi1-square74:before {
content: "\e0d3";
}
.ffi1-stack21:before {
content: "\e0d4";
}
.ffi1-stopwatch6:before {
content: "\e0d5";
}
.ffi1-store:before {
content: "\e0d6";
}
.ffi1-student13:before {
content: "\e0d7";
}
.ffi1-student15:before {
content: "\e0d8";
}
.ffi1-student40:before {
content: "\e0d9";
}
.ffi1-students3:before {
content: "\e0da";
}
.ffi1-students5:before {
content: "\e0db";
}
.ffi1-students6:before {
content: "\e0dc";
}
.ffi1-students7:before {
content: "\e0dd";
}
.ffi1-sweet8:before {
content: "\e0de";
}
.ffi1-tags2:before {
content: "\e0df";
}
.ffi1-tags3:before {
content: "\e0e0";
}
.ffi1-talking2:before {
content: "\e0e1";
}
.ffi1-teacher12:before {
content: "\e0e2";
}
.ffi1-teacher13:before {
content: "\e0e3";
}
.ffi1-teacher4:before {
content: "\e0e4";
}
.ffi1-teacher8:before {
content: "\e0e5";
}
.ffi1-teacher9:before {
content: "\e0e6";
}
.ffi1-test17:before {
content: "\e0e7";
}
.ffi1-text87:before {
content: "\e0e8";
}
.ffi1-textile:before {
content: "\e0e9";
}
.ffi1-three115:before {
content: "\e0ea";
}
.ffi1-thumb31:before {
content: "\e0eb";
}
.ffi1-toilet1:before {
content: "\e0ec";
}
.ffi1-tools:before {
content: "\e0ed";
}
.ffi1-two174:before {
content: "\e0ee";
}
.ffi1-two185:before {
content: "\e0ef";
}
.ffi1-two28:before {
content: "\e0f0";
}
.ffi1-users1:before {
content: "\e0f1";
}
.ffi1-users2:before {
content: "\e0f2";
}
.ffi1-users5:before {
content: "\e0f3";
}
.ffi1-users6:before {
content: "\e0f4";
}
.ffi1-verified9:before {
content: "\e0f5";
}
.ffi1-view2:before {
content: "\e0f6";
}
.ffi1-wifi10:before {
content: "\e0f7";
}
.ffi1-wind15:before {
content: "\e0f8";
}
.ffi1-winners2:before {
content: "\e0f9";
}
.ffi1-woman83:before {
content: "\e0fa";
}
.ffi1-worker12:before {
content: "\e0fb";
}
.ffi1-worker2:before {
content: "\e0fc";
}
.ffi1-worker4:before {
content: "\e0fd";
}
.ffi1-workers:before {
content: "\e0fe";
}
.ffi1-writing17:before {
content: "\e0ff";
}

View File

@@ -0,0 +1,415 @@
@font-face {
font-family: "ffi2";
src: url("/assets/flatfeticon2.eot");
src: url("/assets/flatfeticon2.eot#iefix") format("embedded-opentype"),
url("/assets/flatfeticon2.woff") format("woff"),
url("/assets/flatfeticon2.ttf") format("truetype"),
url("/assets/flatfeticon2.svg") format("svg");
font-weight: normal;
font-style: normal;
}
[class^="ffi2-"]:before, [class*=" ffi2-"]:before,
[class^="ffi2-"]:after, [class*=" ffi2-"]:after {
font-family: ffi2;
font-size: normal;
font-style: normal;
margin-left: 4px;
}.ffi2-accident3:before {
content: "\e000";
}
.ffi2-alphabet3:before {
content: "\e001";
}
.ffi2-angel:before {
content: "\e002";
}
.ffi2-angry:before {
content: "\e003";
}
.ffi2-angry2:before {
content: "\e004";
}
.ffi2-angry23:before {
content: "\e005";
}
.ffi2-angry40:before {
content: "\e006";
}
.ffi2-angry41:before {
content: "\e007";
}
.ffi2-animal203:before {
content: "\e008";
}
.ffi2-annulled3:before {
content: "\e009";
}
.ffi2-bandaid:before {
content: "\e00a";
}
.ffi2-battery88:before {
content: "\e00b";
}
.ffi2-book97:before {
content: "\e00c";
}
.ffi2-boy11:before {
content: "\e00d";
}
.ffi2-boy12:before {
content: "\e00e";
}
.ffi2-business57:before {
content: "\e00f";
}
.ffi2-camouflage:before {
content: "\e010";
}
.ffi2-car65:before {
content: "\e011";
}
.ffi2-certificate7:before {
content: "\e012";
}
.ffi2-checklist4:before {
content: "\e013";
}
.ffi2-circuit4:before {
content: "\e014";
}
.ffi2-confused4:before {
content: "\e015";
}
.ffi2-cpu:before {
content: "\e016";
}
.ffi2-cpu1:before {
content: "\e017";
}
.ffi2-cry1:before {
content: "\e018";
}
.ffi2-cry2:before {
content: "\e019";
}
.ffi2-crying7:before {
content: "\e01a";
}
.ffi2-customerservice10:before {
content: "\e01b";
}
.ffi2-doubt3:before {
content: "\e01c";
}
.ffi2-doubts1:before {
content: "\e01d";
}
.ffi2-drinks48:before {
content: "\e01e";
}
.ffi2-education6:before {
content: "\e01f";
}
.ffi2-election3:before {
content: "\e020";
}
.ffi2-electronic51:before {
content: "\e021";
}
.ffi2-emoticon101:before {
content: "\e022";
}
.ffi2-emoticon82:before {
content: "\e023";
}
.ffi2-emoticon83:before {
content: "\e024";
}
.ffi2-emoticon98:before {
content: "\e025";
}
.ffi2-emoticons11:before {
content: "\e026";
}
.ffi2-family4:before {
content: "\e027";
}
.ffi2-fear3:before {
content: "\e028";
}
.ffi2-first21:before {
content: "\e029";
}
.ffi2-fright:before {
content: "\e02a";
}
.ffi2-furious3:before {
content: "\e02b";
}
.ffi2-graduate2:before {
content: "\e02c";
}
.ffi2-group58:before {
content: "\e02d";
}
.ffi2-handshake3:before {
content: "\e02e";
}
.ffi2-hatchback:before {
content: "\e02f";
}
.ffi2-help9:before {
content: "\e030";
}
.ffi2-house77:before {
content: "\e031";
}
.ffi2-illness1:before {
content: "\e032";
}
.ffi2-inadequacy:before {
content: "\e033";
}
.ffi2-incompetence:before {
content: "\e034";
}
.ffi2-indifferent:before {
content: "\e035";
}
.ffi2-kiss3:before {
content: "\e036";
}
.ffi2-laughing7:before {
content: "\e037";
}
.ffi2-laughing8:before {
content: "\e038";
}
.ffi2-lifesaver28:before {
content: "\e039";
}
.ffi2-lively:before {
content: "\e03a";
}
.ffi2-love2:before {
content: "\e03b";
}
.ffi2-mad1:before {
content: "\e03c";
}
.ffi2-man282:before {
content: "\e03d";
}
.ffi2-manager3:before {
content: "\e03e";
}
.ffi2-medical43:before {
content: "\e03f";
}
.ffi2-mobile26:before {
content: "\e040";
}
.ffi2-moustaches1:before {
content: "\e041";
}
.ffi2-mute24:before {
content: "\e042";
}
.ffi2-mute3:before {
content: "\e043";
}
.ffi2-navigation28:before {
content: "\e044";
}
.ffi2-nerd6:before {
content: "\e045";
}
.ffi2-nervous:before {
content: "\e046";
}
.ffi2-owl9:before {
content: "\e047";
}
.ffi2-palmtrees1:before {
content: "\e048";
}
.ffi2-panic1:before {
content: "\e049";
}
.ffi2-pencil32:before {
content: "\e04a";
}
.ffi2-pirate5:before {
content: "\e04b";
}
.ffi2-plus13:before {
content: "\e04c";
}
.ffi2-protection24:before {
content: "\e04d";
}
.ffi2-robot30:before {
content: "\e04e";
}
.ffi2-robotic2:before {
content: "\e04f";
}
.ffi2-rough:before {
content: "\e050";
}
.ffi2-sad34:before {
content: "\e051";
}
.ffi2-sad35:before {
content: "\e052";
}
.ffi2-sad37:before {
content: "\e053";
}
.ffi2-sad38:before {
content: "\e054";
}
.ffi2-sad39:before {
content: "\e055";
}
.ffi2-sad74:before {
content: "\e056";
}
.ffi2-sad75:before {
content: "\e057";
}
.ffi2-sad77:before {
content: "\e058";
}
.ffi2-scary:before {
content: "\e059";
}
.ffi2-serious3:before {
content: "\e05a";
}
.ffi2-severe:before {
content: "\e05b";
}
.ffi2-silhouette121:before {
content: "\e05c";
}
.ffi2-singing4:before {
content: "\e05d";
}
.ffi2-sleep1:before {
content: "\e05e";
}
.ffi2-sleepness:before {
content: "\e05f";
}
.ffi2-sleepy6:before {
content: "\e060";
}
.ffi2-smile31:before {
content: "\e061";
}
.ffi2-smile32:before {
content: "\e062";
}
.ffi2-smile33:before {
content: "\e063";
}
.ffi2-smiley41:before {
content: "\e064";
}
.ffi2-smiley42:before {
content: "\e065";
}
.ffi2-smiling35:before {
content: "\e066";
}
.ffi2-smiling36:before {
content: "\e067";
}
.ffi2-solar12:before {
content: "\e068";
}
.ffi2-spring13:before {
content: "\e069";
}
.ffi2-square103:before {
content: "\e06a";
}
.ffi2-stars53:before {
content: "\e06b";
}
.ffi2-student12:before {
content: "\e06c";
}
.ffi2-study7:before {
content: "\e06d";
}
.ffi2-stupor:before {
content: "\e06e";
}
.ffi2-surprise5:before {
content: "\e06f";
}
.ffi2-surprised:before {
content: "\e070";
}
.ffi2-surprised19:before {
content: "\e071";
}
.ffi2-surprised21:before {
content: "\e072";
}
.ffi2-surveillance1:before {
content: "\e073";
}
.ffi2-suspicions:before {
content: "\e074";
}
.ffi2-sweat1:before {
content: "\e075";
}
.ffi2-sweating3:before {
content: "\e076";
}
.ffi2-tears:before {
content: "\e077";
}
.ffi2-telephone45:before {
content: "\e078";
}
.ffi2-think7:before {
content: "\e079";
}
.ffi2-timidity:before {
content: "\e07a";
}
.ffi2-tongue1:before {
content: "\e07b";
}
.ffi2-tongue2:before {
content: "\e07c";
}
.ffi2-two128:before {
content: "\e07d";
}
.ffi2-two210:before {
content: "\e07e";
}
.ffi2-users53:before {
content: "\e07f";
}
.ffi2-very7:before {
content: "\e080";
}
.ffi2-wink:before {
content: "\e081";
}
.ffi2-wink9:before {
content: "\e082";
}
.ffi2-winking9:before {
content: "\e083";
}
.ffi2-winners1:before {
content: "\e084";
}

View File

@@ -2,39 +2,6 @@
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
//.modal.fade {
// top: -25%;
// transition: opacity 0.3s linear 0s, top 0.3s ease-out 0s;
//}
//.modal-gallery {
// max-height: none;
// outline: medium none;
// width: auto;
//}
//.modal {
// color: #333333;
//}
//.hide {
// display: none;
//}
//.modal {
//background-clip: padding-box;
// background-color: #FFFFFF;
// border: 1px solid rgba(0, 0, 0, 0.3);
//border-radius: 6px 6px 6px 6px;
// box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
// left: 50%;
// margin-left: -280px;
// outline: medium none;
// position: fixed;
// top: 10%;;
// z-index: 1050;
//}
//.fade {
// opacity: 0;
// transition: opacity 0.15s linear 0s;
//}
div.gallery-block
{
padding: 10px;

View File

@@ -0,0 +1,134 @@
html {
background-color: #fff;
overflow: hidden;
}
body {
display: flex;
flex-flow: wrap;
height: 100vh;
justify-content: space-between;
flex-direction: column;
}
.header {
height: 200px;
width: 100%
}
svg {
padding-top: 2em;
}
.impulsPath {
fill: none;
stroke: #04669c;
stroke-miterlimit: 1;
stroke-width: 6px;
stroke-dasharray: 1946.243;
stroke-dashoffset: 0;
stroke-linejoin: round;
stroke-linecap: round;
animation: dash 10s ease-out infinite;
animation-direction: normal;
}
.FET-logotext-stroke {
fill: #fff;
}
#FET-logotext {
opacity: 0;
animation: logotext 10s ease-in infinite;
}
.content-area {
height: auto;
width: 100%;
}
.footer {
width: 100%;
height: 150px;
background-color: #04669c;
padding-bottom: 10px;
display: flex;
flex-wrap: nowrap;
justify-content: space-between;
color: #fff;
flex-basis: bottom;
}
.footer h3,
p {
margin: 0;
padding: 0 20px;
font-family: Helvetica, Arial;
letter-spacing: 0.1em;
}
.footer h3 {
padding-top: 20px;
}
.footer .adress {
margin: auto;
text-align: left;
}
.footer .contact {
margin: auto;
text-align: center;
}
.footer .servicecontainer{
display: inline-flex;
margin: auto;
}
.footer .servicecontainer .servicetime {
margin: auto;
text-align: right;
}
.footer .servicecontainer .servicetime #time {
font-size: 0.7em
}
.footer .servicecontainer .servicestatus{
margin: auto;
width:20px;
height: 100vh; /* height: 100%;*/
padding-right: 30px;
background-color: #fff;
}
/*K E Y F R A M E S*/
@keyframes dash {
from {
stroke-dashoffset: 1946.243;
opacity: 0;
stroke-width: 0.5;
}
to {
opacity: 1;
stroke-dashoffset: 0;
stroke-width: 5px;
}
}
@keyframes logotext {
from {
opacity: 0;
}
to {
opacity: 1;
}
}

View File

@@ -1,3 +1,13 @@
@import 'blueimp-gallery-all';
.left
{
float: left;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
/* etc. */
}
h1 {
font-size: 23px
}
@@ -6,6 +16,17 @@ h2 {
font-size: 19px
}
h3 {
font-size: 16px
}
h4 {
font-size: 14px
}
body,html {
padding:0;
margin:0;
@@ -15,52 +36,24 @@ a:hover {
text-decoration:none;
}
@import 'tinymce';
@import 'fetlogo';
@import 'flatfeticon1';
@import 'flatfeticon2';
ul.linkbox-list
{
max-width:70em;
}
a.linkbox, div.contentbox
{
display:block;
padding:5px;
border-radius:$box-border-radius;
border: $box-border;
background: $box-background;
}
a.linkbox:hover
{
box-shadow: 1px 1px 2px 2px lightgray;
}
a.linkbox li
{
}
ul.linkbox-list li
{
margin-bottom:10px;
}
div.contentbox
{
margin: 5px;
}
div.content-column {
max-width:70em;
max-width:70em;
}
div.content-wrap {
margin-left:auto;
margin-right:auto;
margin-left:auto;
margin-right:auto;
}
#contentdiv
@@ -91,3 +84,81 @@ div.smallspan {
}
form.inline div {
float:left;}
form.inline input {
}
form.inline {
float:clear; }
@import 'tinymce';
a.flag-true { color: $color_schema_3_dark}
a.flag-true.flag-goodquality-true { color: green}
a.flag-true.flag-template-true {color: $color_schema_1_dark}
a.flag-false { color: #CCC}
ul.ui-menu
{list-style-type:none;
}
ul.ui-menu > li > a
{
padding:2px;
padding-left:10px;
cursor: pointer;
}
a.choice-true
{font-weight: bold;}
a.choice-false
{color:grey}
ul.choice-list
{list-style-type: none;
margin:0;
}
ul.choice-list > li
{
}
ul.choice-list > li > a {
line-height:normal;
}
ul.choice-list > li > a > i {
font-size:3em;
}
ul.choice-list > li > a.btn > i {
font-size:1em;
}
a.choice > i {font-size: 32px}
span.highcharts-axis-labels > i {
font-size:32px}
div.toolbar-inline > div.dropdown
{ display:inline;
}
div.btn-toolbar > div.dropdown > ul.dropdown-menu
{ font-size: small;
}
.fa-stack {
height: 1em;}
.fa-stack-sm > .fa-stack
{postion:relative;
top:-7px;
width:2em;
}
.fa-stack-sm {
height:1em;
line-height:1em;
width:1em;
height:1em;
}
.btn.stacked {
padding-left:4px;
padding-right:4px;
}

View File

@@ -0,0 +1,61 @@
ul.linkbox-list
{
max-width:70em;
margin-left:auto;
margin-right:auto;
}
a.linkbox, div.contentbox
{
display:block;
padding:5px;
border-radius:$box-border-radius;
border: $box-border;
background: $box-background;
}
a.linkbox:hover{ box-shadow: 1px 1px 2px 2px lightgray; }
a.linkbox.color-1 { color:$color_schema_1; }
a.linkbox.color-2 { color:$color_schema_2; }
a.linkbox.color-3 { color:$color_schema_3; }
a.linkbox.color-4 { color:$color_schema_4;}
a.linkbox.color-5 { color:$color_schema_5;}
a.color-1-dark { color:$color_schema_1_dark; }
a.color-2-dark { color:$color_schema_2_dark; }
a.color-3-dark { color:$color_schema_3_dark;}
a.color-4-dark { color:$color_schema_4_dark;}
a.color-5-dark { color:$color_schema_5_dark;}
a.color-1-dark:hover { color:$color_schema_1; }
a.color-2-dark:hover { color:$color_schema_2; }
a.color-3-dark:hover { color:$color_schema_3; }
a.color-4-dark:hover { color:$color_schema_4; }
a.color-5-dark:hover { color:$color_schema_5; }
a.linkbox li { }
ul.linkbox-list li {
margin-bottom:10px;
}
ul.linklist {
max-width:100%;
padding:0;
margin:5px;
}
ul.linklist li {
list-style:none;
margin-bottom:2px;
}
ul.linklist li a i{
vertical-align:middle;
margin-right:6px;
font-size:2em;}
span.linklist a {
padding:5px;
border-radius:$box-border-radius;
border: $box-border;
background: $box-background;
display:block;
float:left;
}

View File

@@ -0,0 +1,3 @@
// Place all the styles related to the meetings controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View File

@@ -0,0 +1,3 @@
// Place all the styles related to the meetingtyps controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View File

@@ -12,3 +12,7 @@ padding:10px;
div .neuigkeit_block:hover {
box-shadow: 1px 1px 2px 2px lightgray;
}
a.unpublished div.media{
background: rgb(255, 188, 99);
}

View File

@@ -0,0 +1,19 @@
@page :first {
@bottom-right-corner {
content: none
}
}
@page {
@top-center {
content: element(heading);
}
@left-top {
}
@bottom-right-corner {
content: counter(page)
}
}
#rh {
position: running(header);
}

View File

@@ -0,0 +1,3 @@
// Place all the styles related to the Survey::answers controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View File

@@ -0,0 +1,3 @@
// Place all the styles related to the Survey::choices controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View File

@@ -0,0 +1,3 @@
// Place all the styles related to the Survey::questions controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View File

@@ -1,22 +1,19 @@
// Place all the styles related to the themengruppen controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
div.themengruppe
{padding:10px;
margin:2px;
border-radius: 10px;
min-width:13em;
border: #91B4FF solid 0px;
height: 90%
}
a.themengruppe:hover
{
box-shadow: 1px 1px 2px 2px lightgray;
}
a.themengruppe
div.sticker
{
width: 90%;
border-radius: 5px;
text-align: center;
padding: 5px;
display:block;
margin:auto;
}
div.sticker-red
{ border:solid red;
}
div.sticker-yellow
{ background: yellow;
}

View File

@@ -1,93 +0,0 @@
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the top of the
* compiled file, but it's generally better to create a new file per style scope.
*
*= require_self
* require_tree .
*= require jquery.fileupload-ui
* require 'bootstrap'
* require 'neuigkeiten'
*/
// Colorshema #0A64A4
$color_prim: #7070a0;
$color_prim_light: lighten($color_prim ,10%);
$color_prim_vlight: lighten($color_prim ,30%);
$color_prim_dark: darken($color_prim ,10%);
$color_prim_vdark: darken($color_prim ,30%);
$color_cont: FFDB73;
$color_cont_light:FFDB73;
$linkColor: $color_prim_vdark;
$white: #FFFFFF;
$bodyBackground: #EEE;
$navbarBackground: $color_prim;
$navbarText: black;
$navbarLinkColor: $color_prim_vdark;
$navbarLinkColorHover: black;
$dropdownLinkColor: black;
$navbar-default-brand-color: black;
$navbarBrandColor:black;
$navbarBackgroundHighlight: $color_prim;
//$navbarBackgroundHighlight:#FFFFFF;
$navbarLinkBackgroundHover:#FFBE00;
$navbarLinkBackgroundHover: darken($navbarBackground,10%);
$infoBackground:#65A5D1;
$infoText:#03406A;
$sansFontFamily: Helvetica, Arial;
@import 'bootstrap';
@import 'bootstrap-responsive';
@import 'bootstrap/image-gallery';
@import 'neuigkeiten';
div.header {
display: block;
// background: url('../../../../header1.png') no-repeat;
// background-color:white;// $color_prim;
background-position: right;
border-bottom:1px solid black;
float:left;
color:#000;
padding-left:87px;
padding-top:0px;
// overflow:hidden;
margin-bottom: 0 px
}
div.header h1 {
padding:0;
margin:4px;
font-size:20px;
line-height:32px;
}
div.headerrow {
background: $color_prim
}
$contentdiv-background:none;
$navbar-li-minwidth: 0;
$box-border: lightgray solid 1px;
$box-border-radius:8px;
$box-background: white;
@import 'layout';
@import 'calendars';

View File

@@ -1,5 +0,0 @@
@import "bootstrap/responsive";
@media (max-width: 979px){
.earlymax {
min-width: 100%;
}}

View File

@@ -1,4 +0,0 @@
#content
{
background:red;
}

View File

@@ -1,93 +0,0 @@
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the top of the
* compiled file, but it's generally better to create a new file per style scope.
*
*= require_self
* require_tree .
*= require jquery.fileupload-ui
* require 'bootstrap'
* require 'neuigkeiten'
*/
// Colorshema #0A64A4
$color_prim: #071672;
$color_prim_light: lighten($color_prim ,10%);
$color_prim_vlight: lighten($color_prim ,30%);
$color_prim_dark: darken($color_prim ,10%);
$color_prim_vdark: darken($color_prim ,30%);
$color_cont: FFDB73;
$color_cont_light:FFDB73;
$linkColor: $color_prim;
$white: #FFFFFF;
$bodyBackground: #EEE;
$navbarBackground: $color_prim;
$navbarText: $white;
$navbarLinkColor: $white;
$navbarLinkColorHover: white;
$dropdownLinkColor: black;
$navbar-default-brand-color: black;
$navbarBrandColor:black;
$navbarBackgroundHighlight: $color_prim;
//$navbarBackgroundHighlight:#FFFFFF;
$navbarLinkBackgroundHover:#FFBE00;
$navbarLinkBackgroundHover: darken($navbarBackground,10%);
$infoBackground:#65A5D1;
$infoText:#03406A;
$sansFontFamily: Helvetica, Arial;
@import 'bootstrap';
@import 'bootstrap-responsive';
@import 'bootstrap/image-gallery';
@import 'neuigkeiten';
div.header {
display: block;
// background: url('../../../../header1.png') no-repeat;
// background-color:white;// $color_prim;
background-position: right;
// border-bottom:1px solid black;
float:left;
color:#000;
padding-left:87px;
padding-top:0px;
// overflow:hidden;
margin-bottom: 0 px
}
div.header h1 {
padding:0;
margin:4px;
font-size:20px;
line-height:32px;
}
div.headerrow {
background: $color_prim
}
$contentdiv-background:none;
$navbar-li-minwidth: 0;
$box-border: lightgray solid 1px;
$box-border-radius:0px;
$box-background: white;
@import 'layout';
@import 'calendars';

View File

@@ -1,76 +0,0 @@
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the top of the
* compiled file, but it's generally better to create a new file per style scope.
*
*= require_self
* require_tree .
*= require jquery.fileupload-ui
* require 'bootstrap'
* require 'neuigkeiten'
*/
$color_prim: #0A64A4;
$color_prim_light: #0B65A5;
$color_prim_vlight: #2B85C5;
$color_cont: FFDB73;
$color_cont_light:FFDB73;
$linkColor: #03006E;
$white: #FFFFFF;
$bodyBackground: $white;
$navbarBackground: $color_cont;
$navbarBackground: #FFFFFF;
$navbarBackgroundHighlight:lighten($navbarBackground,30%);
//$navbarBackgroundHighlight:#FFFFFF;
$navbarLinkBackgroundHover:#FFBE00;
$navbarLinkBackgroundHover: lighten(#cccccc,10%);
$infoBackground:#65A5D1;
$infoText:#03406A;
$sansFontFamily: Helvetica, Arial;
@import 'bootstrap';
@import 'bootstrap-responsive';
@import 'bootstrap/image-gallery';
@import 'neuigkeiten';
div.header {
display: block;
// background: url('/header1.png') no-repeat;
background-color: #FFF;
background-position: right;
border-bottom:1px solid black;
height:41px;
color:#000;
padding-left:87px;
padding-top:0px;
overflow:hidden;
margin-bottom: 20px
}
div.header h1 {
padding:0;
margin:4px;
font-size:20px;
line-height:32px;
}
div.headerrow {
background: $white
}
$navbar-li-minwidth: 100%;
$contentdiv-background:none;
$box-border: lightgray solid 1px;
$box-border-radius:8px;
$box-background: white;
@import 'layout';
@import 'calendars';

View File

@@ -0,0 +1,22 @@
i.mce-i-fa {
font: 400 17px/1 FontAwesome;
padding: 0;
vertical-align: middle;
speak: none;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
margin-left: -2px;
padding-right: 2px
}
i.fa-red { color:red; }
.mc-important {
color: red;
font-weight:bold;
text-align: center;
}
div.article {
border: thin dotted black;
}
@import 'flatfeticon1'

View File

@@ -1,27 +1,74 @@
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :set_i18n_locale_from_params
protected
theme :get_theme
def set_i18n_locale_from_params
if params[:locale]
if I18n.available_locales.include?(params[:locale].to_sym)
I18n.locale=params[:locale].to_sym
session[:locale] = params[:locale]
else
flash.now[:notice]= "#{params[:locale]} translation not available"
logger.error flash.now[:notice]
end
end
http_header=request.env['HTTP_ACCEPT_LANGUAGE']
unless http_header.nil?
ht= http_header.scan(/^de|en/).first
else
ht=nil
end
def get_theme
if ThemesForRails.available_theme_names.include?(params[:theme])
params[:theme]
I18n.locale = session[:locale] || I18n.default_locale
# removed ht from selection add || ht to check http header
else
"2003"
end
session[:locale] = I18n.locale
end
def after_sign_in_path_for(resource)
sign_in_url = new_user_session_path(:only_path => false, :protocol => 'http')
if request.referer == sign_in_url
super
else
stored_location_for(resource) || root_path
end
end
rescue_from CanCan::AccessDenied do |exception|
if user_signed_in?
flash[:error] = "Not authorized to view this page"
session[:user_return_to] = nil
respond_to do |format|
format.html {redirect_to root_url}
format.js {render text:"alert(\"Not authorized to do this\");", status: 401}
end
else
flash[:error] = "You must first login to view this page"
session[:user_return_to] = request.url
return redirect_to "/users/sign_in"
end
end
def get_theme
u=current_user
if ! u.try(:preferredtheme).nil? and ThemesForRails.available_theme_names.include?(u.preferredtheme)
u.preferredtheme
else
"blue2"
end
end
def current_ability
@current_ability ||= Ability.new(current_user, request, params[:key])
end
def default_url_options
{locale: I18n.locale, theme: theme_name}
{locale: nil, theme: nil , ansicht: nil} # I18n.locale
end
end

View File

@@ -3,7 +3,7 @@ class AttachmentsController < ApplicationController
# GET /attachments.json
load_and_authorize_resource
def index
@attachments = Attachment.all
# @attachments = Attachment.all
respond_to do |format|
format.html # index.html.erb
@@ -11,19 +11,43 @@ class AttachmentsController < ApplicationController
end
end
# GET /attachments/1
# GET /attachments/1.json
# GET
# sets the titlepic flag for one attachment for one parent object
def set_titlepic
@attachment = Attachment.find(params[:id])
if @attachment.image? # if attachment is an Image set flag
@attachment.parent.attachments.update_all("flag_titlepic=0")
@attachment.flag_titlepic=true
@attachment.save
end
respond_to do |format|
format.html {
redirect_to @attachment}
format.js {
@parent=@attachment.parent
@attachments=@parent.attachments
render :refresh_list
}
end
end
# GET refresh_list
# refresh the attachment list for a parent object
def refresh_list
@parent = params[:parent_type].constantize.find(params[:parent_id])
@attachments=@parent.attachments
respond_to do |format|
format.js
end
end
#get /attachments/ID
def show
@attachment = Attachment.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @attachment }
end
end
# GET /attachments/new
# GET /attachments/new.json
def new
@attachment = Attachment.new
@thema = Thema.find(params[:thema_id])
@@ -32,6 +56,7 @@ class AttachmentsController < ApplicationController
respond_to do |format|
format.html # new.html.erb
format.json { render json: @attachment }
format.js
end
end
@@ -45,16 +70,27 @@ class AttachmentsController < ApplicationController
# POST /attachments.json
def create
@attachment = Attachment.new(params[:attachment])
@thema = Thema.find(params[:thema_id])
@attachment.thema_id = @thema.id
@thema = Thema.find_by_id(params[:thema_id])
# logger.info "gg"
@attachment.thema = @thema
@attachment.name=@attachment.datei.filename
@action="create"
# logger.info "sdf"
respond_to do |format|
if @attachment.save
format.html { redirect_to @thema, notice: 'Attachment was successfully created.' }
format.json { render json: @thema, status: :created, location: @thema }
format.html {
render :json => [@attachment.to_jq_upload].to_json,
:content_type => 'text/html',
:layout => false
}
# format.html { redirect_to @thema, notice: 'Attachment was successfully created.' }
format.json { render json: {files: [@attachment.to_jq_upload]}, status: :created, location: [@thema, @attachment]}
else
format.html { render action: "new" }
format.json { render json: @attachment.errors, status: :unprocessable_entity }
end
end
end
@@ -63,15 +99,17 @@ class AttachmentsController < ApplicationController
# PUT /attachments/1.json
def update
@attachment = Attachment.find(params[:id])
@thema = @attachment.thema
@parent= @attachment.parent
respond_to do |format|
if @attachment.update_attributes(params[:attachment])
format.html { redirect_to @thema, notice: 'Attachment was successfully updated.' }
format.html { redirect_to @parent, notice: 'Attachment was successfully updated.' }
format.json { head :no_content }
format.js {@attachment=Attachment.new; render action:"create"}
else
format.html { render action: "edit" }
format.json { render json: @attachment.errors, status: :unprocessable_entity }
format.js { render action: "new"}
end
end
end

View File

@@ -1,14 +1,19 @@
class BeispieleController < ApplicationController
# GET /beispiele
# GET /beispiele.json
load_and_authorize_resource
def index
@beispiele = Beispiel.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @beispiele }
end
load_and_authorize_resource
include LikeVoteable
acts_as_flagable
def index
# unless params[:lva_id].nil?
# @beispiele= Lva.find(params[:lva_id]).beispiele.accessible_by(current_ability, :show)
# else
# @beispiele = Beispiel.accessible_by(current_ability, :show)
# end
# respond_to do |format|
# format.html # index.html.erb
# format.json { render json: @beispiele }
# end
end
# GET /beispiele/1
@@ -16,10 +21,9 @@ class BeispieleController < ApplicationController
def show
# @lva = params([:lva]) unless params([:lva]).nil?
@beispiel = Beispiel.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @beispiel }
format.html { redirect_to lva_path(@beispiel.lva , show_comments: params[:show_comments])}
format.js
end
end
@@ -28,6 +32,7 @@ class BeispieleController < ApplicationController
def new
@beispiel = Beispiel.new
@beispiel.lva = Lva.find_by_id(params[:lva_id])
@beispiel.flag_delete=false
@backlink = @beispiel.lva.nil? ? root_url : lva_path(@beispiel.lva)
respond_to do |format|
format.html # new.html.erb
@@ -35,6 +40,23 @@ class BeispieleController < ApplicationController
end
end
def set_lecturer
@beispiel = Beispiel.find(params[:id])
@beispiel.lecturer = Lecturer.find(params[:beispiel][:lecturer_id])
@beispiel.save
if @beispiel.save
format.html { redirect_to @backlink, notice: 'Beispiel was successfully updated.' }
format.js {render text: "alert(\"updated\");"}
format.json { head :no_content }
else
format.html { render action: "edit" }
format.js
format.json { render json: @beispiel.errors, status: :unprocessable_entity }
end
end
# GET /beispiele/1/edit
def edit
@beispiel = Beispiel.find(params[:id])
@@ -43,19 +65,47 @@ class BeispieleController < ApplicationController
# POST /beispiele
# POST /beispiele.json
def create
logger.info "Creating Beispiel..."
@lva = Lva.find_by_id(params[:lva_id])
params.delete(:lva_id)
params[:beispiel][:flag_delete]=false
@beispiel = Beispiel.new(params[:beispiel])
@backlink = @beispiel.lva.nil? ? root_url : lva_path(@beispiel.lva)
@beispiel.flag_delete=false
logger.info "New Beispiel: #{params.inspect}"
@beispiel.name=@beispiel.beispieldatei.filename
logger.info "New Beispiel: #{@beispiel.attributes.inspect}"
respond_to do |format|
@beispiel.name=@beispiel.beispieldatei.to_s.split('/').last
unless @lva.nil?
@beispiel.lva=@lva
@beispiel.datum=Time.now
if @beispiel.save
format.html { redirect_to @backlink, notice: 'Beispiel was successfully created.' }
format.json { render json: @beispiel, status: :created, location: @beispiel }
format.html {
render :json => [@beispiel.to_jq_upload].to_json,
:content_type => 'text/html',
:layout => false
}
format.json { render json: {files: [@beispiel.to_jq_upload]}, status: :created, location: [@lva, @beispiel] }
# format.html { redirect_to @backlink, notice: 'Beispiel was successfully created.' }
# format.json { render json: @beispiel, status: :created, location: @beispiel }
else
format.html { render action: "new" }
format.json { render json: @beispiel.errors, status: :unprocessable_entity }
end
else
if @beispiel.update_attributes(params[:beispiel])
@backlink = Lva.find(@beispiel.lva)
format.html { redirect_to @backlink, notice: 'Beispiel was successfully uploaded.'}
format.json { head :no_content }
else
format.html { render action: "new" }
format.json { render json: @beispiel.errors, status: :unprocessable_entity }
end
end
end
end
@@ -65,10 +115,13 @@ class BeispieleController < ApplicationController
@beispiel = Beispiel.find(params[:id])
@beispiel.name=@beispiel.beispieldatei.to_s.split('/').last
@backlink = @beispiel.lva.nil? ? root_url : lva_path(@beispiel.lva)
params[:beispiel].delete :beispieldatei
params[:beispiel].delete :beispieldatei_cache
@lva = @beispiel.lva
respond_to do |format|
if @beispiel.update_attributes(params[:beispiel])
format.html { redirect_to @backlink, notice: 'Beispiel was successfully updated.' }
format.js {render action: "show"}
format.json { head :no_content }
else
format.html { render action: "edit" }

View File

@@ -3,12 +3,13 @@ class CalendarsController < ApplicationController
# GET /calendars.json
load_and_authorize_resource
def index
@calendars = Calendar.all
@calentries = Calentry.all
@calendars = Calendar.accessible_by(current_ability,:show)
@calentries =@calendars.map{|c| c.calentries }.flatten
respond_to do |format|
format.html # index.html.erb
format.json { render json: @calendars }
format.ics
end
end
@@ -37,6 +38,11 @@ class CalendarsController < ApplicationController
# GET /calendars/1/edit
def edit
@calendar = Calendar.find(params[:id])
respond_to do |format|
format.html # new.html.erb
format.js
end
end
# POST /calendars

View File

@@ -2,14 +2,13 @@ class CalentriesController < ApplicationController
# GET /calentries
# GET /calentries.json
load_and_authorize_resource
# def index
# @calentries = Calentry.all
def index
# respond_to do |format|
# format.html # index.html.erb
# format.json { render json: @calentries }
# end
# end
respond_to do |format|
format.html {redirect_to rubriken_path}
end
end
# GET /calentries/1
# GET /calentries/1.json
@@ -25,36 +24,43 @@ class CalentriesController < ApplicationController
# GET /calentries/new
# GET /calentries/new.json
# def new
# @calentry = Calentry.new
# respond_to do |format|
# format.html # new.html.erb
# format.json { render json: @calentry }
# end
# end
def new
@calentry = Calentry.new
@calentry.object=params[:object_type].constantize.find(params[:object_id])
@calentry.typ=1
respond_to do |format|
format.html # new.html.erb
format.json { render json: @calentry }
format.js
end
end
# GET /calentries/1/edit
#def edit
# @calentry = Calentry.find(params[:id])
# end
def edit
@calentry = Calentry.find(params[:id])
respond_to do |format|
format.html
format.js
end
end
# POST /calentries
# POST /calentries.json
# def create
# @calentry = Calentry.new(params[:calentry])
def create
@calentry = Calentry.new(params[:calentry])
# respond_to do |format|
# if @calentry.save
# format.html { redirect_to @calentry, notice: 'Calentry was successfully created.' }
# format.json { render json: @calentry, status: :created, location: @calentry }
# else
# format.html { render action: "new" }
# format.json { render json: @calentry.errors, status: :unprocessable_entity }
# end
# end
# end
respond_to do |format|
if @calentry.save
format.html { redirect_to @calentry, notice: 'Calentry was successfully created.' }
format.json { render json: @calentry, status: :created, location: @calentry }
format.js
else
format.html { render action: "new" }
format.json { render json: @calentry.errors, status: :unprocessable_entity }
format.js { render action: "new" }
end
end
end
# PUT /calentries/1
# PUT /calentries/1.json
@@ -65,9 +71,11 @@ class CalentriesController < ApplicationController
if @calentry.update_attributes(params[:calentry])
format.html { redirect_to @calentry, notice: 'Calentry was successfully updated.' }
format.json { head :no_content }
format.js
else
format.html { render action: "edit" }
format.json { render json: @calentry.errors, status: :unprocessable_entity }
format.js { render action: "edit"}
end
end
end
@@ -75,12 +83,16 @@ class CalentriesController < ApplicationController
# DELETE /calentries/1
# DELETE /calentries/1.json
def destroy
logger.info("-------------delete------------------")
@calentry = Calentry.find(params[:id])
@calentry_id = params[:id]
@object=@calentry.object
@calentry.destroy
respond_to do |format|
format.html { redirect_to calentries_url }
format.html { redirect_to @object}
format.json { head :no_content }
format.js
end
end
end

View File

@@ -0,0 +1,100 @@
class CommentsController < ApplicationController
load_and_authorize_resource
before_filter :decode_commentable_type
def index
@commentable=params[:commentable_type].constantize.find(params[:commentable_id]) unless params[:commentable_type].nil? or params[:commentable_id].nil?
if @commentable.nil?
render status: 404
else
@comments=@commentable.comments.order(:created_at).roots.accessible_by(current_ability, :show).page(params[:page]).per(Comment::NUM[params[:commentable_type]]).reverse_order
respond_to do |format|
format.js
end
end
end
def hide
@commentable=params[:commentable_type].constantize.find(params[:commentable_id]) unless params[:commentable_type].nil? or params[:commentable_id].nil?
respond_to do |format|
format.js
end
end
def show
@comment = Comment.find(params[:id])
respond_to do |format|
format.js
format.html {redirect_to @comment.commentable}
end
end
def new
@comment = Comment.new
@comment.commentable=params[:commentable_type].constantize.find(params[:commentable_id]) unless params[:commentable_type].nil? or params[:commentable_id].nil?
authorize! :comment, @comment.commentable
respond_to do |format|
format.js
end
end
# GET /comments/1/edit
def edit
@comment = Comment.find(params[:id])
end
# POST /comments
# POST /comments.json
def create
params_new= params[:comment].select {|i| !["commentable_id", "commentable_type"].include?(i)}
c = params[:comment][:commentable_type].constantize.find(params[:comment][:commentable_id]) unless params[:comment][:commentable_type].nil? or params[:comment][:commentable_id].nil?
authorize! :comment, c
@comment = Comment.build_for(c, current_user,"", params_new)
@commentable=c
if @comment.parent_object.class==Comment
@comments= @comment.parent_object.children
else
@comments=@comment.parent_object.comments.order(:created_at).roots.page(params[:page]).per(Comment::NUM[params[:commentable_type]]).reverse_order
end
respond_to do |format|
if @comment
format.js
else
format.js {render action:"new"}
end
end
end
# PUT /comments/1
# PUT /comments/1.json
def update
params[:comment].select! {|i| !["commentable_id", "commentable_type"].include?(i)}
@comment = Comment.find(params[:id])
@comment.commentable=params[:comment][:commentable_type].constantize.find(params[:comment][:commentable_id]) unless params[:comment][:commentable_type].nil? or params[:comment][:commentable_id].nil?
respond_to do |format|
if @comment.update_attributes(params[:comment])
format.html { redirect_to @comment.commentable, notice: 'Comment was successfully updated.' }
else
format.html { render action: "edit" }
end
end
end
# DELETE /comments/1
# DELETE /comments/1.json
def destroy
@comment = Comment.find(params[:id])
@commentable=@comment.commentable
@comment.destroy
@comments=@commentable.comments.order(:created_at).roots.page(params[:page]).per(Comment::NUM[params[:commentable_type]]).reverse_order
respond_to do |format|
format.js
end
end
private
def decode_commentable_type
params[:commentable_type].gsub!("_","::") unless params[:commentable_type].nil?
end
end

View File

@@ -4,4 +4,6 @@ class ConfigController < ApplicationController
end
def choose_contact_topics
end
end

View File

@@ -0,0 +1,36 @@
class CrawlerController < ApplicationController
def index
authorize! :doadmin, User
@crawlobjs=Crawlobject.where(:objtype=>5).order(:published_at).reverse_order
@crawlobjs_etit=Crawlobject.where(:objtype=>6).order(:published_at).reverse_order
end
def load_attachments
authorize! :doadmin, User
c = Crawlobject.find(params[:id])
if c.has_attachments?
c.load_attachments
end
respond_to do |format|
format.html {redirect_to c.something}
format.js
end
end
def move_to_news
authorize! :doadmin, User
co=Crawlobject.find(params[:id])
if co.objtype == 5 || co.objtype==6
co.move_to_neuigkeit(User.find(Rails.configuration.crawlconfig[co.objtype]["user_id"]), Rubrik.find(Rails.configuration.crawlconfig[co.objtype]["rubrik_id"]))
redirect_to co.something
end
end
def do_crawl_news
Crawlobject.crawl_news(5)
Crawlobject.crawl_news(6)
redirect_to action: :index
end
end

View File

@@ -0,0 +1,174 @@
class DocumentsController < ApplicationController
# require('etherpad-lite')
load_and_authorize_resource
def index
respond_to do |format|
format.html {redirect_to rubriken_path}
end
end
def new
@document=Document.new
@parent=params[:parent_type].constantize.find(params[:parent_id])
@document.parent=@parent
@document.typ = 1
respond_to do |format|
format.js
end
end
def edit
@document = Document.find(params[:id])
@parent=@document.parent
respond_to do |format|
format.js
format.html
end
end
def sanitize
@document = Document.find(params[:id])
@document.sanitize
@parent=@document.parent
render :edit
end
def show
@document = Document.find(params[:id])
respond_to do |format|
format.pdf { send_file @document.create_pdf.path }
format.html
end
end
def dump_to_etherpad
@document = Document.find(params[:id])
@document.dump_to_etherpad
@document.save
# author = ether.author('author_1')
# pad=group.pad(@document.etherpadkey)
# pad.html='<div>'+@document.text+'</div>'
redirect_to action: :show
end
def read_from_etherpad
@document = Document.find(params[:id])
@document.read_from_etherpad
@document.save
render :show
end
def write_etherpad
@document = Document.find(params[:id])
ether=Document.ether
author = Document.ether.author("fetsite_"+current_user.uid, :name => current_user.text)
session[:ep_sessions]={} if session[:ep_sessions].nil?
group=@document.ep_group
sess = session[:ep_sessions][group.id] ? ether.get_session(session[:ep_sessions][group.id]) : group.create_session(author, 300)
if sess.expired?
sess.delete
sess = group.create_session(author, 300)
end
session[:ep_sessions][group.id] = sess.id
# Set the EtherpadLite session cookie. This will automatically be picked up by the jQuery plugin's iframe.
cookies[:sessionID] = {value: sess.id.to_s, domain: %w(.fet.at), expires: 5.hour.from_now}
#cookies[:sessionID] = {:value => sess.id}
cookies[:sessionID]= {value: sess.id, expires: 5.hour.from_now}
# cookies[:sdf]=sess.id
# pad=ether.pad(@document.etherpadkey)
# redirect_to "http://www.fet.at/etherpad/p/"+@document.ep_pad.id
#render :write
end
def write
@document = Document.find(params[:id])
if @document.is_etherpad? && params[:versionid].nil?
redirect_to action: :write_etherpad
else
unless params[:versionid].nil?
v=@document.versions.find(params[:versionid])
if v.reify.nil?
v=v.next
end
@document=v.reify
end
@parent=@document.parent
respond_to do |format|
format.html {render :edit}
end
end
end
def create
@document = Document.new(params[:document])
@parent=@document.parent
respond_to do |format|
if @document.save
# format.html { redirect_to @document, notice: 'Document was successfully created.' }
#format.json { render json: @document, status: :created, location: @document }
format.js
else
# format.html { render action: "new" }
# format.json { render json: @document.errors, status: :unprocessable_entity }
format.js { render action: "new" }
end
end
end
def update
@document = Document.find(params[:id])
@parent=@document.parent
respond_to do |format|
if @document.update_attributes(params[:document])
format.html { redirect_to @document, notice: 'Document was successfully updated.' }
format.json { head :no_content }
format.js
else
# format.html { render action: "edit" }
# format.json { render json: @document.errors, status: :unprocessable_entity }
format.js { render action: "edit"}
end
end
end
def destroy
logger.info("-------------delete------------------")
@document = Document.find(params[:id])
@parent=@document.parent
@document_id = params[:id]
@document.destroy
respond_to do |format|
#format.html { redirect_to @object}
#format.json { head :no_content }
format.js
end
end
def search
unless params['query'].nil? || params['query'].empty?
@results = Document.search do
fulltext params['query'] do
fields :name, :text, :meeting
highlight :text,:name,:meeting
end
end
@res=[]
@results.results.each do |r|
@res << r if can?(:show,r)
end
end
respond_to do |format|
format.html { redirect_to action: :intern}
format.js
end
end
end

View File

@@ -0,0 +1,22 @@
class EmailsController < ApplicationController
before_filter :authorize
def index
end
def daily_reminder
ActionMailer::Base.default_url_options[:host] = request.host_with_port
@mail =NewsMailer.daily_reminder(current_user.id)
if params[:send]
usr=User.where(:flag_getemails => true)
usr.each do |u|
NewsMailer.daily_reminder(current_user.id).deliver
end
end
render layout: false
end
protected
def authorize
authorize! :emails, User
end
end

View File

@@ -7,15 +7,20 @@ class FetprofilesController < ApplicationController
@fetprofiles = Fetprofile.active.order(:vorname,:nachname)
@fetprofiles = Fetprofile.order(:vorname,:nachname) if params[:filter]== "all"
@fetprofiles = Fetprofile.where(:active=>false).order(:vorname,:nachname) if params[:filter]== "notactive"
@fetprofiles = Fetprofile.where(:active=>false).order(:nachname,:vorname) if params[:filter]== "notactive"
@gremientabs = Gremium.tabs
@toolbar_elements << {:hicon=>'icon-plus', :text=> I18n.t('profile.new_profile'),:path => new_fetprofile_path(@fetprofile) } if can? :new, @fetprofile
respond_to do |format|
format.html # index.html.erb
format.json { render json: @fetprofiles }
end
end
def internlist
@fetprofiles = Fetprofile.order(:vorname,:nachname)
end
# GET /fetprofiles/1
# GET /fetprofiles/1.json
def show
@@ -28,7 +33,7 @@ class FetprofilesController < ApplicationController
@toolbar_elements << {:hicon=>'icon-pencil', :text=> I18n.t('common.edit'),:path => edit_fetprofile_path(@fetprofile) } if can? :edit, @fetprofile
@toolbar_elements << {:hicon=>'icon-minus', :text => I18n.t('common.delete'), :method=>:delete, :confirm=>"Sure"}
@toolbar_elements << {:hicon=>'icon-minus', :text => I18n.t('common.delete'), :method=>:delete, :confirm=>"Sure"} if can? :destroy,@fetprofile
respond_to do |format|
@@ -84,7 +89,18 @@ class FetprofilesController < ApplicationController
respond_to do |format|
if @fetprofile.update_attributes(params[:fetprofile])
format.html { redirect_to @fetprofile, notice: 'Fetprofile was successfully updated.' }
format.html {
unless params[:button]=="continue" || params[:commit]=="continue"
redirect_to @fetprofile, notice: 'profile was successfully updated.'
else
@memberships=@fetprofile.memberships.order(:typ)
@memberships<< Membership.new
@memberships<< Membership.new
@memberships<< Membership.new
render action: "edit", notice: 'profile was successfully updated.'
end
}
format.json { head :no_content }
else
@memberships=@fetprofile.memberships.order(:typ)

View File

@@ -1,5 +1,6 @@
class FotosController < ApplicationController
before_filter {@toolbar_elements=[]}
load_and_authorize_resource
# GET /fotos
# GET /fotos.json
def index
@@ -15,9 +16,22 @@ class FotosController < ApplicationController
# GET /fotos/1.json
def show
@foto = Foto.find(params[:id])
@gallery=@foto.gallery
@openfotoid=@foto.id
@pppage=params[:pppage].to_i % 4
@pppage_array = [ 25 , 50 , 100, 10000]
@page = params[:page].nil? ? 1 : params[:page].to_i
@fotos_p = @gallery.fotos.page(@page).per(@pppage_array[@pppage])
@fotos_n = @gallery.fotos- @fotos_p
respond_to do |format|
format.html # show.html.erb
format.html {
if params[:plain]
render "show", layout: false
else
render "galleries/show" #controller: :galleries, action: :show #gallery_path(@foto.gallery,:params=>{fotoid: @foto.id})
end
}
format.json { render json: @foto }
end
end
@@ -87,10 +101,11 @@ class FotosController < ApplicationController
# DELETE /fotos/1.json
def destroy
@foto = Foto.find(params[:id])
gallery = @foto.gallery_id
@foto.destroy
respond_to do |format|
format.html { redirect_to galleries_url }
format.html { redirect_to gallery_path(gallery) }
format.json { head :no_content }
end
end

View File

@@ -31,24 +31,30 @@ class FragenController < ApplicationController
respond_to do |format|
format.html
format.json { render json: @frage }
format.js
end
end
# GET /fragen/1/edit
def edit
@frage = Frage.find(params[:id])
respond_to do |format|
format.html
format.js {render action: :new}
end
end
# POST /fragen
# POST /fragen.json
def create
@frage = Frage.new(params[:frage])
thema=@frage.thema
@fragen=@frage.thema.fragen
respond_to do |format|
if @frage.save
format.html { redirect_to @frage.thema, notice: 'Frage was successfully created.' }
format.json { render json: @frage, status: :created, location: @frage }
format.js
format.js {@frage=Frage.new ; @frage.thema=thema}
else
format.html { render action: "new" }
format.json { render json: @frage.errors, status: :unprocessable_entity }
@@ -66,9 +72,11 @@ class FragenController < ApplicationController
if @frage.update_attributes(params[:frage])
format.html { redirect_to @frage, notice: 'Frage was successfully updated.' }
format.json { head :no_content }
format.js {@frage=Frage.new; render action: "new"}
else
format.html { render action: "edit" }
format.json { render json: @frage.errors, status: :unprocessable_entity }
format.js {render action: "edit"}
end
end
end

View File

@@ -6,7 +6,7 @@ class GalleriesController < ApplicationController
# GET /galleries.json
def index
@galleries = Gallery.all
@toolbar_elements << {:hicon => 'icon-plus', :text => I18n.t('fotos.new-gallery'), :path => new_gallery_path }
@toolbar_elements << {:hicon => 'icon-plus', :text => I18n.t('fotos.new-gallery'), :path => new_gallery_path } if can? :new, Gallery
respond_to do |format|
format.html # index.html.erb
@@ -19,25 +19,57 @@ class GalleriesController < ApplicationController
def show
@gallery = Gallery.find(params[:id])
@pppage_array = [ 25 , 50 , 100 ] #defines number & size of picture chunks
@pppage_array = [ 25 , 50 , 100, 10000] #defines number & size of picture chunks
@pppage = 0 #starting index of pppage_array
if params[:pppage].to_i <= 2 && params[:pppage].to_i >= 0
if !params[:pppage].nil? && params[:pppage].to_i <= 3 && params[:pppage].to_i >= 0
@pppage = params[:pppage].to_i
end
@page = params[:page].nil? ? 1 : params[:page].to_i
# @fotos = Foto.where(:gallery_id => params[:id]).limit(@pppage_array[@pppage]).offset(@pppage_array[@pppage]*(@page-1))
@fotos = Foto.where(:gallery_id => params[:id])
unless params[:fotoid].nil?
foto_ind = @fotos.find_index(Foto.find(params[:fotoid]))
# @page=(@fotos.count/foto_ind).to_i+1
@openfotoid=params[:fotoid]
else
@openfotoid=0
end
if @fotos.nil? || @fotos.empty?
@fotos_p = []
@fotos_n = []
@pages = 1
else
if @pppage_array[@pppage] != "all"
@fotos_p = @fotos.page(@page).per(@pppage_array[@pppage])
@fotos_n = @fotos- @fotos_p
@foto_ind = @fotos.find_index(@fotos_p.first)
@fotos_n = @fotos_n.rotate(@foto_ind)
@pages = (Foto.where(:gallery_id => params[:id]).count/(@pppage_array[@pppage])+1)
@showind=[]
@showind.fill(0,@pppage_array[@pppage]){ |i| i+ @pppage_array[@pppage]*(@page-1)} # Hier ausrechnen welche angezeigt werden sollen
@toolbar_elements << {:hicon=>'icon-plus', :text=> I18n.t('fotos.new-fotos'), :path=>new_gallery_foto_path(@gallery)}
@toolbar_elements << {:hicon=>'icon-pencil', :text => I18n.t('common.edit'), :path=>edit_gallery_path(@gallery)}
else
@fotos_p = @fotos
@fotos_n = []
@pages = 1
end
end
# Hier ausrechnen welche angezeigt werden sollen
@toolbar_elements << {:hicon=>'icon-plus', :text=> I18n.t('fotos.new-fotos'), :path=>new_gallery_foto_path(@gallery)} if can? :create, @gallery
@toolbar_elements << {:hicon=>'icon-pencil', :text => I18n.t('common.edit'), :path=>edit_gallery_path(@gallery)} if can? :edit, @gallery
@toolbar_elements << {:hicon=>'icon-arrow-left', :text=>I18n.t('common.back'), :path=>galleries_path()}
@toolbar_elements << {:hicon => 'icon-remove-circle', :text => I18n.t('common.delete'), :path => gallery_path(@gallery),:confirm=>'Sure?', :method=>:delete} if can? :delete, Gallery
respond_to do |format|
format.html # show.html.erb
format.html {
if @fotos.nil? || @fotos.empty?
redirect_to new_gallery_foto_path(@gallery)
end
}
format.json { render json: @gallery }
end
end
@@ -56,6 +88,7 @@ class GalleriesController < ApplicationController
# GET /galleries/1/edit
def edit
@gallery = Gallery.find(params[:id])
@fotos_old = @gallery.fotos
end
# POST /galleries
@@ -81,6 +114,10 @@ class GalleriesController < ApplicationController
@foto = Foto.new
respond_to do |format|
if @gallery.update_attributes(params[:gallery])
Foto.where(:gallery_id=>nil).each do |tbd|
tbd.destroy
end
format.html { redirect_to @gallery, notice: 'Gallery was successfully updated.' }
format.json { head :no_content }
else

View File

@@ -6,7 +6,9 @@ class GremienController < ApplicationController
def verwalten
@gremien = Gremium.all
@gremientabs=Gremium.tabs
@toolbar_elements << {:text=>I18n.t('common.new'),:path=>new_gremium_path() ,:icon=>:plus} if can? :new, Gremium
@toolbar_elements << {:text=>I18n.t('gremium.new'),:path=>new_gremium_path() ,:icon=>:plus} if can? :new, Gremium
@toolbar_elements << {:text=>I18n.t('profile.new'),:path=>new_fetprofile_path() ,:icon=>:plus} if can? :new, Fetprofile
respond_to do |format|
format.html # index.html.erb
format.json { render json: @gremien }
@@ -31,8 +33,8 @@ class GremienController < ApplicationController
def show
@gremium = Gremium.find(params[:id])
@gremientabs=Gremium.tabs
@memberships=@gremium.memberships.active.includes(:fetprofile).order(:typ,"fetprofiles.vorname","fetprofiles.nachname")
@memberships=@gremium.memberships.visible_in_gremium
@nlinks = @gremium.nlinks.page(params[:page]).per(5)
respond_to do |format|
format.html # show.html.erb
format.json { render json: @gremium }
@@ -83,7 +85,17 @@ class GremienController < ApplicationController
respond_to do |format|
if @gremium.update_attributes(params[:gremium])
format.html { redirect_to @gremium, notice: 'Gremium was successfully updated.' }
format.html {
unless params[:button]=="continue" || params[:commit]=="continue"
redirect_to @gremium, notice: 'Gremium was successfully updated.'
else
@memberships=@gremium.memberships.order(:typ)
@memberships<< Membership.new
@memberships<< Membership.new
@memberships<< Membership.new
render action: "edit", notice: 'gremium was successfully updated.'
end
}
format.json { head :no_content }
else
format.html { render action: "edit" }
@@ -93,7 +105,8 @@ class GremienController < ApplicationController
end
# DELETE /gremien/1
# DELETE /gremien/1.json
#
#
def destroy
@gremium = Gremium.find(params[:id])
@gremium.destroy

View File

@@ -1,9 +1,60 @@
class HomeController < ApplicationController
def index
@beispiele = Beispiel.last([Beispiel.count, 3].min)
@neuigkeiten = Neuigkeit.accessible_by(current_ability, :show).limit(10)
if Thema.count>0
t=YAML.load_file("#{::Rails.root.to_s}/config/start_topic.yml")
@rubriken= Rubrik.accessible_by(current_ability, :show)
params[:month]= Date.today.month if params[:month].nil?
params[:year]= Date.today.year if params[:year].nil?
@calentries= (@rubriken.map {|r| r.calendar}).collect(&:calentries).flatten.select {|c| c.object !=nil}
@starttopic= @themen = Thema.where(:id=>t).first
else
@starttopic=@themen = nil
end
@stickythemen = Thema.where(:sticky_startpage=>true)
end
def dev
end
def infoscreen
authorize! :infoscreen, User
@neuigkeiten = Neuigkeit.accessible_by(current_ability, :show).where(flag_infoscreen: true)
render layout: false
end
def kontakt
t=YAML.load_file("#{::Rails.root.to_s}/config/contact_topic.yml")
@themen = Thema.where(:id=>t)
end
def treeview
authorize! :doadmin, User
@themengruppen = Themengruppe.order(:priority).reverse
@themengruppen += Themengruppe.intern.order(:priority).reverse
end
def intern
authorize! :seeintern, User
@neuigkeiten = Neuigkeit.intern.recent
@themengruppen=Themengruppe.intern.order(:priority).reverse
end
def admin
authorize! :doadmin, User
t=YAML.load_file("#{::Rails.root.to_s}/config/contact_topic.yml")
@kontaktthemen = Thema.where(:id=>t)
end
def log
authorize! :doadmin, User
lines = params[:lines]
if Rails.env == "production"
@logs = `tail -n #{lines} log/production.log | grep -v 'actionpack\\|railties\\|activesupport\\|::Translation'`
else
@logs = `tail -n #{lines} log/development.log | grep -v 'actionpack\\|railties\\|activesupport\\|::Translation'`
end
end
def startdev
render 'setup_fetsite_dev'
@@ -11,11 +62,33 @@ class HomeController < ApplicationController
def linksnotimplemented
render 'links_notimplemented'
end
def search
unless params['query'].nil? || params['query'].empty?
@neuigkeiten=Neuigkeit.search(params['query'])
@fetprofiles = Fetprofile.search(params['query'])
@themen=Thema.search(params['query'])
@results = Sunspot.search Neuigkeit,Rubrik, Fetprofile, Thema, Themengruppe, Lva, Studium, Modul, Modulgruppe, Gremium, Document do
fulltext params['query']
end
@neuigkeiten=[];
if can?(:showintern, Neuigkeit)
#@neuigkeiten=Neuigkeit.search(params['query'])
else
# @neuigkeiten =Neuigkeit.search(params['query']).public
end
@res=[]
@results.results.each do |r|
@res << r if can?(:show,r)
end
# @fetprofiles = Fetprofile.search(params['query'])
@fetprofiles=[]
# if can?(:showintern, Neuigkeit)
# @themen=Thema.search(params['query'])
# else
# @themen=Thema.search(params['query']).public
# end
@themen=[]
else
@neuigkeiten=[]
@fetprofiles=[]
@@ -26,4 +99,22 @@ class HomeController < ApplicationController
format.js
end
end
def language
redirect_to :back
rescue ActionController::RedirectBackError
redirect_to :root
end
def choose_contact_topics
authorize! :doadmin, User
t=YAML.load_file("#{::Rails.root.to_s}/config/contact_topic.yml")
unless params[:themen].nil?
t=([t].flatten+params[:themen]).uniq
end
unless params[:rmthema].nil?
t=t-[params[:rmthema]]
end
File.open("config/contact_topic.yml",'w'){|f| f.write(t.to_yaml)}
redirect_to admin_home_index_path
end
end

View File

@@ -1,7 +1,12 @@
class LvasController < ApplicationController
# GET /lvas
before_filter {@toolbar_elements =[]}
require 'zip'
before_filter :load_toolbar, :only => [:verwalten]
load_and_authorize_resource
before_filter :load_studien
def load_studien
@studien = Studium.accessible_by(current_ability, :show)
end
def index
@lvas = Lva.all
@toolbar_elements=[{:hicon=>'icon-plus-sign',:text =>I18n.t('lva.add'),:path => new_lva_path}]
@@ -9,76 +14,122 @@ class LvasController < ApplicationController
{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path},
{:hicon=>'icon-list', :text=>I18n.t("lva.list"),:path=>lvas_path}]
end
def beispiel_sammlung
@lva = Lva.find_by_id(params[:id])
filename = 'beispiel_sammlung_' + @lva.lvanr.to_s + '_' + l(Date.today).to_s + '.zip'
temp_file = Tempfile.new(filename)
begin
Zip::OutputStream.open(temp_file) { |zos| }
Zip::File.open(temp_file.path, Zip::File::CREATE) do |zip|
i=1
@lva.beispiele.each do |bsp|
zip.add(i.to_s + '_' + File.basename(bsp.beispieldatei.current_path), bsp.beispieldatei.current_path)
i = i + 1
end
end
#Read the binary data from the file
zip_data = File.read(temp_file.path)
send_data(zip_data, :type => 'application/zip', :filename => filename)
ensure
#Close and delete the temp file
temp_file.close
temp_file.unlink
end
end
# GET /lvas/1
def show
@lva = Lva.find_by_id(params[:id])
@beispiel=Beispiel.new
@toolbar_elements<<{:hicon=>'icon-plus-sign', :icon=>:plus, :text => "Neues Beispiel", :path=> new_beispiel_path(:lva_id =>@lva.id)}
@toolbar_elements<<{:hicon=>'icon-pencil', :icon=>:pencil,:text =>I18n.t('common.edit'),:path => edit_lva_path(@lva)}
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('common.delete'), :path=> lva_path(@lva), :method=>:delete, :confirm=>'Sure?' }
@beispiele_all=@lva.beispiele.order(:datum).accessible_by(current_ability, :show)
@beispiele = @lva.beispiele.not_flag_badquality.not_flag_delete.order(:lecturer_id,:datum).accessible_by(current_ability, :show)
@beispiele_badQ = @lva.beispiele.flag_badquality.not_flag_delete.order(:datum).accessible_by(current_ability, :show)
@beispiele_deleted = @lva.beispiele.flag_delete.order(:datum).accessible_by(current_ability, :show)
@toolbar_elements =[]
@toolbar_elements<<{:hicon=>'icon-pencil', :icon=>:pencil,:text =>I18n.t('common.manage'),:path => verwalten_lva_path(@lva)} if can? :verwalten, @lva
@crawlobjects = @lva.crawlobjects.roots.accessible_by(current_ability)
@questions=@lva.questions.accessible_by(current_ability,:show)
end
def verwalten
@lva = Lva.find_by_id(params[:id])
@beispiel=Beispiel.new
@beispiele_all=@lva.beispiele.order(:datum).accessible_by(current_ability, :show)
@beispiele = @lva.beispiele.not_flag_badquality.not_flag_delete.order(:lecturer_id,:datum).accessible_by(current_ability, :show)
@beispiele_badQ = @lva.beispiele.flag_badquality.not_flag_delete.order(:datum).accessible_by(current_ability, :show)
@beispiele_deleted = @lva.beispiele.flag_delete.order(:datum).accessible_by(current_ability, :show)
render :show
end
# GET /lvas/new
# GET /lvas/new.json
def new
@lva = Lva.new
modul=Modul.find_by_id(params[:modul_id])
@lva.modul<<modul unless modul.nil? #
end
# GET /lvas/1/edit
def edit
@lva = Lva.find(params[:id])
@semester = @lva.modul.map(&:modulgruppen).flatten.map(&:studium).map(&:semester).flatten.uniq
end
def compare_tiss
@lva = Lva.find_by_id(params[:id])
@lvatiss = Lva.new
@lvatiss.lvanr=@lva.lvanr
@lvatiss.load_tissdata
end
# POST /lvas
# POST /lvas.json
def load_tiss
@lva = Lva.find_by_id(params[:id])
@lva.load_tissdata
if @lva.save
redirect_to @lva , notice: 'Lva von TISS geladen.'
else
redirect_to @lva, action: :compare_tiss
end
end
def create
@lva = Lva.new(params[:lva])
respond_to do |format|
if @lva.save
@lva.add_semesters
format.html { redirect_to @lva, notice: 'Lva was successfully created.' }
else
format.html { render action: "new" }
end
end
end
# PUT /lvas/1
# PUT /lvas/1.json
def update
@lva = Lva.find(params[:id])
respond_to do |format|
if @lva.update_attributes(params[:lva])
@lva.add_semesters
format.html { redirect_to @lva, notice: 'Lva was successfully updated.' }
else
format.html { render action: "edit" }
end
end
end
# DELETE /lvas/1
# DELETE /lvas/1.json
def destroy
@lva = Lva.find(params[:id])
@lva.destroy
respond_to do |format|
format.html { redirect_to lvas_url }
end
end
private
def load_toolbar
@lva = Lva.find_by_id(params[:id])
@toolbar_elements =[]
@toolbar_elements<<{:hicon=>'icon-pencil', :icon=>:pencil,:text =>I18n.t('common.edit'),:path => edit_lva_path(@lva)} if can? :edit, @lva
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>"Tissvergleichladen", :path=> compare_tiss_lva_path(@lva)} if can? :compare_tiss, @lva
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('lva.delete'), :path=> lva_path(@lva), :method=>:delete, :confirm=>t('lva.deletesure') } if can? :delete, @lva
end
end
end

View File

@@ -0,0 +1,140 @@
class MeetingsController < ApplicationController
load_and_authorize_resource
def index
parent=params[:parent_type].constantize.find(params[:parent_id])
unless parent.nil?
#authorize! :show, parent
if params[:filter]=="upcomming"
@meetings=parent.meetings.upcomming
else
@meetings=parent.meetings
end
@parent=parent
end
respond_to do |format|
format.html {redirect_to rubriken_path}
format.js
end
end
def announce
m=Meeting.find(params[:id])
m.create_announcement(current_user)
m.save
@meeting=Meeting.find(params[:id])
respond_to do |format|
format.html {redirect_to m.parent}
format.js {render action: :show}
end
end
def show
m=Meeting.find(params[:id])
respond_to do |format|
format.html {
if can?(:show, m.parent)
redirect_to m.parent
else
if can?(:show, m.neuigkeit) && !m.neuigkeit.nil?
redirect_to m.neuigkeit
else
redirect_to m.parent
end
end
}
format.js
end
end
def new
@meeting=Meeting.new
@meeting.parent=params[:parent_type].constantize.find(params[:parent_id])
@parent=@meeting.parent
@meeting.calentry=Calentry.new
@meeting.calentry.typ = 2
respond_to do |format|
format.js
end
end
def create_protocol
@meeting = Meeting.find(params[:id])
@meeting.create_protocol
@meeting.save
respond_to do |format|
format.js {render action: :show}
end
end
def create_agenda
@meeting = Meeting.find(params[:id])
@meeting.create_agenda
respond_to do |format|
format.js {render action: :show}
end
end
def edit
@meeting = Meeting.find(params[:id])
@parent=@meeting.parent
respond_to do |format|
format.js
end
end
def create
@meeting = Meeting.new(params[:meeting])
@parent=@meeting.parent
#@meeting.assign_attributes(params[:meeting])
respond_to do |format|
if @meeting.save
# format.html { redirect_to @meeting, notice: 'Meeting was successfully created.' }
#format.json { render json: @meeting, status: :created, location: @meeting }
format.js
else
# format.html { render action: "new" }
# format.json { render json: @meeting.errors, status: :unprocessable_entity }
format.js { render action: "new" }
end
end
end
def update
@meeting = Meeting.find(params[:id])
@parent=@meeting.parent
respond_to do |format|
if @meeting.update_attributes(params[:meeting])
format.html { redirect_to @meeting, notice: 'Meeting was successfully updated.' }
format.json { head :no_content }
format.js
else
# format.html
# format.json { render json: @meeting.errors, status: :unprocessable_entity }
format.js { render action: "edit" }
end
end
end
def destroy
logger.info("-------------delete------------------")
@meeting = Meeting.find(params[:id])
@parent=@meeting.parent
@meeting_id = params[:id]
@meeting.destroy
respond_to do |format|
#format.html { redirect_to @object}
#format.json { head :no_content }
format.js
end
end
end

View File

@@ -0,0 +1,76 @@
class MeetingtypsController < ApplicationController
load_and_authorize_resource
def index
@meetingtyps=Meetingtyp.all
end
def show
redirect_to action: :index
end
def edit
@meetingtyp = Meetingtyp.find(params[:id])
end
def new
@meetingtyp=Meetingtyp.new
end
def create_protocol_and_agenda
@meetingtyp = Meetingtyp.find(params[:id])
if @meetingtyp.agenda.nil?
d=Document.new
d.typ=11
d.name="Agendavorlage"
d.save
@meetingtyp.agenda=d
end
if @meetingtyp.protocol.nil?
d=Document.new
d.typ=10
d.name="Protokollvorlage"
d.save
@meetingtyp.protocol=d
end
redirect_to action: :index
end
def create
@meetingtyp = Meetingtyp.new(params[:meetingtyp])
@meetingtyp.assign_attributes(params[:meetingtyp])
respond_to do |format|
if @meetingtyp.save
format.html { redirect_to @meetingtyp, notice: 'Meeting was successfully created.' }
#format.json { render json: @meeting, status: :created, location: @meeting }
format.js
else
format.html { render action: "new" }
# format.json { render json: @meeting.errors, status: :unprocessable_entity }
format.js { render action: "new" }
end
end
end
def update
@meetingtyp = Meetingtyp.find(params[:id])
respond_to do |format|
if @meetingtyp.update_attributes(params[:meetingtyp])
format.html { redirect_to @meetingtyp, notice: 'Meeting was successfully updated.' }
# format.json { head :no_content }
format.js
else
format.html { render action: "edit" }
# format.json { render json: @meeting.errors, status: :unprocessable_entity }
format.js { render action: "edit" }
end
end
end
def destroy
@meetingtyp = Meeting.find(params[:id])
@meetingtyp.destroy
respond_to do |format|
format.html { redirect_to action: :index}
end
end
end

View File

@@ -1,10 +1,16 @@
# -*- coding: utf-8 -*-
class ModulgruppenController < ApplicationController
# GET /modulgruppen
before_filter :find_modulgruppe, :only=>[:show, :delete]
before_filter :load_toolbar_show, :only=>[:show] # Toolbar für show erstellen
load_and_authorize_resource
before_filter :load_studien
def load_studien
@studien = Studium.accessible_by(current_ability, :show)
end
def index
@studien = Studium.accessible_by(current_ability, :show)
@modulgruppen = Modulgruppe.all
if !params[:studium_id].nil?
@studium=Studium.find(params[:studium_id])
@@ -14,22 +20,21 @@ class ModulgruppenController < ApplicationController
end
# GET /modulgruppen/1
def show
@modulgruppe = Modulgruppe.find(params[:id])
@studien = Studium.accessible_by(current_ability, :show)
@studium = Studium.find(@modulgruppe.studium_id)
if !params[:studium_id].nil?
@studium=Studium.find(params[:studium_id])
end
@toolbar_elements = [ {:text=>'Zurück', :path=>studium_path(@studium, :ansicht=>:modulgruppenansicht)}]
@toolbar_elements << {:hicon=>'icon-plus-sign', :text=>I18n.t('modulgruppe.addmodul'), :path=>new_modul_path(@modulgruppe)}
@toolbar_elements << {:hicon=>'icon-pencil', :text=>I18n.t('modulgruppe.edit'), :path=>edit_modulgruppe_path(@modulgruppe)}
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => studium_path(@studium, :ansicht=>:modulgruppenansicht), :method=> :delete,:confirm=>"Sure?" }
end
# GET /modulgruppen/new
def new
@studien = Studium.accessible_by(current_ability, :show)
@modulgruppe = Modulgruppe.new
if !params[:studium_id].nil?
@modulgruppe.studium_id=(params[:studium_id])
@@ -38,26 +43,29 @@ class ModulgruppenController < ApplicationController
end
respond_to do |format|
format.html # new.html.erb
format.json { render json: @modulgruppe }
end
end
# GET /modulgruppen/1/edit
def edit
@studien = Studium.accessible_by(current_ability, :show)
@modulgruppe = Modulgruppe.find(params[:id])
if !params[:studium_id].nil?
@studium=Studium.find(params[:studium_id])
end
end
# POST /modulgruppen
def create
@modulgruppe = Modulgruppe.new(params[:modulgruppe])
respond_to do |format|
if @modulgruppe.save
format.html { redirect_to @modulgruppe.studium, notice: 'Modulgruppe was successfully created.' }
@@ -71,7 +79,6 @@ class ModulgruppenController < ApplicationController
def update
@modulgruppe = Modulgruppe.find(params[:id])
respond_to do |format|
if @modulgruppe.update_attributes(params[:modulgruppe])
format.html { redirect_to @modulgruppe, notice: 'Modulgruppe was successfully updated.' }
@@ -94,4 +101,20 @@ class ModulgruppenController < ApplicationController
end
end
private
def find_modulgruppe
@modulgruppe = Modulgruppe.find(params[:id])
end
def load_toolbar_show
@toolbar_elements = [ {:text=>'Zurück', :path=>studium_path(@modulgruppe.studium, :ansicht=>:modulgruppenansicht)}]
@toolbar_elements << {:hicon=>'icon-plus-sign', :text=>I18n.t('modulgruppe.addmodule'), :path=>new_bulk_moduls_path(:modulgruppen_id=>@modulgruppe.id)} if can? :new ,Modul
@toolbar_elements << {:hicon=>'icon-plus-sign', :text=>I18n.t('modulgruppe.addmodul'), :path=>new_modul_path(:modulgruppen_id=>@modulgruppe.id)} if can? :new, Modul
@toolbar_elements << {:hicon=>'icon-pencil', :text=>I18n.t('modulgruppe.edit'), :path=>edit_modulgruppe_path(@modulgruppe)} if can? :edit, @modulgruppe
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => modulgruppe_path(@modulgruppe, :ansicht=>:modulgruppenansicht), :method=> :delete,:confirm=>'Sure?' }if can? :delete, Modulgruppe
end
end

View File

@@ -1,21 +1,24 @@
# -*- coding: utf-8 -*-
class ModulsController < ApplicationController
# GET /moduls
# GET /moduls.json
before_filter :find_modul, :only=>[:show,:update,:update_lvas,:edit_lvas,:load_tiss,:show_tiss] # @modul laden
before_filter :load_toolbar_show, :only=>[:show] # Toolbar für show erstellen
before_filter :load_toolbar_index, :only=>[:index] # Toolbar für index erstellen
load_and_authorize_resource
before_filter :load_studien
def load_studien
@studien = Studium.accessible_by(current_ability, :show)
end
def index
@moduls = Modul.all
if @moduls
if !params[:studium_id].nil?
@studium=Studium.find_by_id(params[:studium_id])
end
@toolbar_elements = [{:hicon=>'icon-plus-sign', :text=>I18n.t("modul.add"), :path=>new_modul_path}]
@topbar_elements =[{:hicon=>'icon-list', :text=>I18n.t("studien.allestudien"),:path=>studien_path}]
@topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path}
@topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("lva.list"),:path=>lvas_path}
respond_to do |format|
format.html # index.html.erb
format.json { render json: @moduls }
end
end
@@ -24,27 +27,8 @@ class ModulsController < ApplicationController
# GET /moduls/1
# GET /moduls/1.json
def show
@modul = Modul.find(params[:id])
@toolbar_elements = [{:hicon=>'icon-plus-sign', :text=>I18n.t("lva.add"), :path=>new_lva_path(:modul_id =>@modul.id)}]
@toolbar_elements << {:hicon=>'icon-pencil', :text=>"Lvas bearbeiten", :path=>modul_edit_lvas_path(@modul)}
@toolbar_elements << {:hicon=>'icon-plus-sign', :text=>"ADD FROM TISS", :path=>modul_load_tiss_path(:modul_id =>@modul.id)}
@toolbar_elements << {:hicon=>'icon-pencil', :text=>I18n.t("modul.edit"), :path=>edit_modul_path(@modul)}
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t("common.delete"),:path=>@modul , :method=>:delete , :data=>{:confirm =>'Are you sure'}}
@topbar_elements = [{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path}]
@tb=[]
for i in @modul.modulgruppen
if !i.studium.nil?
name =i.studium.name
id = i.studium.id
else
s.name = 'Kein Studium vorhanden'
s.id = nil
end
@tb <<{:text=> i.name + ' ('+i.studium.name + ')', :path=>modulgruppe_path(i)}
@tb <<{:text=> i.long_name, :path=>modulgruppe_path(i)}
end
respond_to do |format|
format.html # show.html.erb
@@ -52,6 +36,7 @@ class ModulsController < ApplicationController
end
end
# GET /moduls/new
# GET /moduls/new.json
def new
@@ -62,70 +47,15 @@ class ModulsController < ApplicationController
end
respond_to do |format|
format.html # new.html.erb
format.json { render json: @modul }
end
end
def edit_lvas
@modul = Modul.find(params[:modul_id])
@lvas = @modul.lvas
@semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).flatten.uniq
def new_bulk
@moduls= []
@modulgruppe=Modulgruppe.find(params[:modulgruppen_id])
10.times {@moduls << Modul.new(:modulgruppen=>[@modulgruppe])}
end
def update_lvas
params[:modul_id]=params[:id] if params[:modul_id].empty?
@modul = Modul.find(params[:modul_id])
@semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).flatten.uniq
@newlvas=[]
@lvas=[]
params["lvas"].each do |i,l|
#lva= Lva.find(l[:id].to_i)
lva=Lva.where(:lvanr=>l["lvanr"]).first if lva.nil?
lva=Lva.new(l) if lva.nil?
lva.modul<<@modul
lva.modul.uniq!
lva.name=l["name"]
lva.lvanr=l["lvanr"]
lva.ects=l["ects"]
lva.desc=l["desc"]
lva.semester=Semester.where(:id=>l["semester_ids"].map(&:to_i))
lva.stunden=l["stunden"]
lva.pruefungsinformation=l["pruefungsinformation"]
lva.lernaufwand=l["lernaufwand"]
lva.typ=l["typ"]
lva.save
@newlvas<<lva
end
@lvas=@newlvas
if @newlvas.map(&:valid?).all?
redirect_to modul_path(@modul)
else
render "edit_lvas"
end
# end
end
def load_tiss
@modul = Modul.find(params[:modul_id])
@lvas = @modul.lvas
end
def show_tiss
@lvas=[];
@modul = Modul.find(params[:modul_id])
@semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).flatten.uniq
params["lvas"].to_a.each do |l|
unless l.last["lvanr"].empty?
l=l.last
lva=Lva.new
lva.lvanr=l["lvanr"]
lva.load_tissdata("-"+ l["sem"])
lva.modul<<@modul
@lvas<<lva
end
end
render 'edit_lvas'
end
# GET /moduls/1/edit
def edit
@modul = Modul.find(params[:id])
if !params[:studium_id].nil?
@@ -133,31 +63,26 @@ class ModulsController < ApplicationController
end
end
# POST /moduls
# POST /moduls.json
def create
@modul = Modul.new(params[:modul])
respond_to do |format|
if @modul.save
for i in @modul.lvas
i.add_semesters
end
format.html { redirect_to modulgruppe_path(@modul.modulgruppen.first), notice: 'Modul was successfully created.' }
format.json { render json: @modul, status: :created, location: @modul }
def edit_bulk
unless params[:modulgruppen_id].nil?
@moduls=Modulgruppe.find(params[:modulgruppen_id]).moduls
else
format.html { render action: "new" }
format.json { render json: @modul.errors, status: :unprocessable_entity }
end
unless params[:studium_id].nil?
@moduls=Studium.find(params[:studium_id]).modulgruppen.collect(&:moduls).flatten
else
@moduls=Modul.all
end
end
end
# PUT /moduls/1
# PUT /moduls/1.json
def edit_lvas
@lvas = @modul.lvas
@semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).flatten.uniq
end
def update
@modul = Modul.find(params[:id])
respond_to do |format|
if @modul.update_attributes(params[:modul])
@@ -165,27 +90,115 @@ class ModulsController < ApplicationController
i.add_semesters
end
format.html { redirect_to url_for(@modul), notice: 'Modul was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @modul.errors, status: :unprocessable_entity }
end
end
end
def update_bulk
@moduls=Modul.update_multiple(params[:moduls])
if @moduls.map(&:valid?).all?
redirect_to @moduls.first.modulgruppen.first, :notice=>"Erfolgreich Module geändert"
else
render :edit_bulk
end
end
def update_lvas
@semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).flatten.uniq
@newlvas=Lva.update_multiple_with_modul(params["lvas"],@modul)
@lvas=@newlvas
if @newlvas.map(&:valid?).all?
redirect_to modul_path(@modul)
else
render "edit_lvas"
end
end
def load_tiss
@lvas = @modul.lvas
end
def show_tiss
@lvas=[];
@semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).uniq
params["lvas"].to_a.each do |l|
unless l.last["lvanr"].empty?
l=l.last
lva=Lva.new
lva.lvanr=l["lvanr"]
lva.load_tissdata
lva.modul<<@modul
@lvas<<lva #
end
end
render 'edit_lvas'
end
# GET /moduls/1/edit
# POST /moduls
# POST /moduls.json
def create
@modul = Modul.new(params[:modul])
respond_to do |format|
if @modul.save
for i in @modul.lvas
i.add_semesters
end
format.html { redirect_to modulgruppe_path(@modul.modulgruppen.first), notice: 'Modul was successfully created.' }
else
format.html { render action: "new" }
end
end
end
# PUT /moduls/1
# PUT /moduls/1.json
# DELETE /moduls/1
# DELETE /moduls/1.json
def destroy
@modul = Modul.find(params[:id])
modulgruppe=@modul.modulgruppen.first
for i in @modul.lvas
i.add_semesters
end
@modul.destroy
redirect_to modulgruppe_path(modulgruppe)
end
private
def find_modul
@modul = Modul.find(params[:id])
end
def load_toolbar_show
@toolbar_elements=[]
@toolbar_elements << {:hicon=>'icon-plus-sign', :text=>I18n.t("lva.add"), :path=>new_lva_path(:modul_id =>@modul.id)} if can? :new, Lva
@toolbar_elements << {:hicon=>'icon-pencil', :text=>"Lvas bearbeiten", :path=>edit_lvas_modul_path(@modul)} if can? :edit, Lva
@toolbar_elements << {:hicon=>'icon-plus-sign', :text=>"ADD FROM TISS", :path=>load_tiss_modul_path(:modul_id =>@modul.id)} if can? :load_tiss, Modul
@toolbar_elements << {:hicon=>'icon-pencil', :text=>I18n.t("modul.edit"), :path=>edit_modul_path(@modul)} if can? :edit, @modul
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t("common.delete"),:path=>@modul , :method=>:delete , :data=>{:confirm =>'Are you sure'}} if can? :delete, @modul
@topbar_elements = [{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path}]
@tb=[]
end
def load_toolbar_index
@toolbar_elements = []
@topbar_elements<<{:hicon=>'icon-plus-sign', :text=>I18n.t("modul.add"), :path=>new_modul_path} if can? :new , Modul
@topbar_elements<< {:hicon=>'icon-list', :text=>I18n.t("studien.allestudien"),:path=>studien_path}
@topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path}
@topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("lva.list"),:path=>lvas_path}
end
end
end

View File

@@ -1,27 +1,35 @@
# -*- coding: utf-8 -*-
class NeuigkeitenController < ApplicationController
before_filter {@toolbar_elements=[]}
load_and_authorize_resource
before_filter :load_toolbar_elements, :only=>[:show,:find_link]
before_filter :load_toolbar_elements_edit, :only=>[:edit]
acts_as_flagable
load_and_authorize_resource
def default_url_options
super
# super.merge({host: request.host_with_port})
end
def show
@neuigkeit = Neuigkeit.find(params[:id])
@rubrik=@neuigkeit.rubrik
if !params[:version].nil?
@neuigkeit.assign_attributes(@neuigkeit.translation.versions.reverse[params[:version].to_i].reify.attributes.select{|k,v| @neuigkeit.translated_attribute_names.include? k.to_sym })
@rubrik = @neuigkeit.rubrik
@questions = @neuigkeit.questions.accessible_by(current_ability,:show)
if can?(:shownonpublic, Rubrik)
@rubriken = Rubrik.all
else
@rubriken = Rubrik.where(:public=>true)
end
# @neuigkeit=Neuigkeit.find(params[:id])
if !params[:version].nil? && can?(:showversions, Neuigkeit)
@neuigkeit.assign_attributes(@neuigkeit.translation.versions.reverse[params[:version].to_i].reify.attributes.select{|k,v| @neuigkeit.translated_attribute_names.include? k.to_sym })
end
@calentries1=@neuigkeit.calentries
@toolbar_elements << {:hicon=>'icon-plus', :text=> I18n.t('neuigkeit.publish'),:path => publish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>"Sure?" } if can? :publish, @neuigkeit
@toolbar_elements << {:hicon=>'icon-minus', :text=> I18n.t('neuigkeit.unpublish'),:path => unpublish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>"Sure?" } if can?(:unpublish, @neuigkeit) && !@neuigkeit.published?
@toolbar_elements << {:text=>I18n.t('common.edit'),:path=>edit_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:icon=>:pencil} if can? :edit, @neuigkeit.rubrik
@versions= @neuigkeit.translation.versions.select([:created_at]).reverse
@toolbar_elements <<{:path=>rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:method=>:versions,:versions=>@versions}
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit), :method=> :delete,:confirm=>'Sure?' } if can? :delete, @neuigkeit
# @toolbar_elements << {:path=> add_calentry_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit), :text=>"Add Calentry", :icon=>:plus}
respond_to do |format|
format.html
format.js
end
end
@@ -38,11 +46,11 @@ class NeuigkeitenController < ApplicationController
if params[:calentry_id].nil?
ce = Calentry.new(:start=>Time.now, :ende=>1.hour.from_now, :typ=>1, :calendar=>@neuigkeit.rubrik.calendar)
else
ce=Calentry.find(params[:calentry_id])
ce = Calentry.find(params[:calentry_id])
end
@calentry=ce
ce.object=@neuigkeit
@neuigkeit.calentry=ce
@neuigkeit.calentries<<ce
@neuigkeit.save
render 'edit'
@@ -52,29 +60,138 @@ class NeuigkeitenController < ApplicationController
@neuigkeit = Neuigkeit.find(params[:id])
@neuigkeit.reverse_publish
@neuigkeit.save
@questions = @neuigkeit.questions.accessible_by(current_ability,:show)
if params[:verwalten]
redirect_to verwalten_rubrik_path(@neuigkeit.rubrik)
else
respond_to do |format|
format.html { redirect_to rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit)}
format.js { render partial: "show"}
end
redirect_to rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit)
end
end
def publish
@neuigkeit = Neuigkeit.find(params[:id])
@neuigkeit.publish
@neuigkeit.save
@questions = @neuigkeit.questions.accessible_by(current_ability,:show)
if params[:verwalten]
redirect_to verwalten_rubrik_path(@neuigkeit.rubrik)
else
respond_to do |format|
format.html { redirect_to rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit)}
format.js { render partial: "show"}
end
redirect_to rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit)
end
end
def publish_to_facebook
@neuigkeit = Neuigkeit.find(params[:id])
unless @neuigkeit.picture.url.nil?
picture_url=URI(root_url)
picture_url.path=@neuigkeit.picture.url(:locale=>nil, :theme=>nil)
end
unless @neuigkeit.published?
redirect_to [@neuigkeit.rubrik,@neuigkeit], notice: 'Neuigkeit muss veröffentlicht sein um sie auf Facebook zu posten.'
else
page=YAML.load_file("#{::Rails.root.to_s}/config/page.yml")
# page.feed!(:access_token=>page.access_token, :message=>@neuigkeit.text_first_words, :name=>@neuigkeit.title, :link=>rubrik_neuigkeit_url(@neuigkeit.rubrik, @neuigkeit)+".html", :picture=>@neuigkeit.picture.url)
page.feed!(:access_token=>page.access_token, :message=>@neuigkeit.text_first_words, :name=>@neuigkeit.title, :link=>rubrik_neuigkeit_url(@neuigkeit.rubrik, @neuigkeit)+".html")# , :picture=>picture_url)
redirect_to [@neuigkeit.rubrik,@neuigkeit], notice: 'Neuigkeit auf Facebook gepostet'
end
end
def mail_to_fet
ActionMailer::Base.default_url_options[:host] = request.host_with_port
@neuigkeit = Neuigkeit.find(params[:id])
authorize! :publish, @neuigkeit
unless @neuigkeit.published?
redirect_to [@neuigkeit.rubrik,@neuigkeit], notice: 'Neuigkeit muss veröffentlicht sein um sie als Mail zu versenden.'
else
NewsMailer.neuigkeit_mail("all@fet.at", params[:id]).deliver
redirect_to [@neuigkeit.rubrik,@neuigkeit], notice: 'Neuigkeit versendet'
end
end
def mail_preview
ActionMailer::Base.default_url_options[:host] = request.host_with_port
@neuigkeit = Neuigkeit.find(params[:id])
@user=current_user
@ability=Ability.new(@user)
@mail = NewsMailer.neuigkeit_mail("all@fet.at", params[:id])
authorize! :publish, @neuigkeit
render layout: false
end
def newsletter_preview
authorize! :publish, Neuigkeit
@neuigkeiten=Neuigkeit.accessible_by(current_ability).where("cache_order<2")
render template: "news_mailer/daily_newsletter", layout: false
end
def edit
@neuigkeit = Neuigkeit.find(params[:id])
@toolbar_elements << {:text=>I18n.t('common.show'),:path=>rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit)} if can? :show, @neuigkeit
@neuigkeit.no_fallbacks=true
@rubrik=@neuigkeit.rubrik
@calentries= @neuigkeit.calentries
@calentries<< Calentry.new
end
def find_link
@rubrik=@neuigkeit.rubrik
if can?(:shownonpublic, Rubrik)
@rubriken = Rubrik.all
else
@rubriken = Rubrik.where(:public=>true)
end
@calentries1=@neuigkeit.calentries
nlink_search = Neuigkeit::LINKTYPES.clone
nlink_search.collect!{|t| t.constantize}
# @nlink_search.collect!{|t| t.search(params[:query]).limit(2)}
@results= Sunspot.search nlink_search do
fulltext params[:query]
end
respond_to do |format|
format.html { render action:"show" }
format.js
end
end
def create_link
@neuigkeit = Neuigkeit.find(params[:id])
Nlink.create(:link=>params[:link_type].constantize.find(params[:link_id]),:neuigkeit=>Neuigkeit.find(params[:id]))
@nlinks=@neuigkeit.nlinks
respond_to do |format|
format.html { redirect_to action:"show" }
format.js
end
end
def delete_link
@neuigkeit = Neuigkeit.find(params[:id])
@nlink = @neuigkeit.nlinks.find(params[:nlink_id])
@nlink.destroy
respond_to do |format|
format.html { redirect_to @neuigkeit }
format.js
end
end
def create
@neuigkeit = Neuigkeit.new(params[:neuigkeit])
@neuigkeit.author=current_user
@@ -111,4 +228,38 @@ class NeuigkeitenController < ApplicationController
end
end
private
def load_toolbar_elements
@neuigkeit=Neuigkeit.find(params[:id])
@toolbar_elements=[]
actions=[]
actions << {:hicon=>'icon-plus', :text=> I18n.t('neuigkeit.publish'),:path => publish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=> I18n.t('neuigkeit.publish_sure') } if can?(:publish, @neuigkeit) && !@neuigkeit.published?
actions << {:hicon=>'ffi1-facebook1', :text=> I18n.t('neuigkeit.publishfb'),:path => publish_to_facebook_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>I18n.t('neuigkeit.publishfb_sure') } if can?(:publish, @neuigkeit) && @neuigkeit.published?
actions << {:hicon=>'icon-facebook', :text=> I18n.t('neuigkeit.publishfetmail'),:path => mail_to_fet_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>I18n.t('neuigkeit.publishfetmail_sure') } if can?(:publish, @neuigkeit) && @neuigkeit.published?
actions << {:hicon=>'icon-minus', :text=> I18n.t('neuigkeit.unpublish'),:path => unpublish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=> I18n.t('neuigkeit.unpublish_sure') } if can?(:unpublish, @neuigkeit) && @neuigkeit.published?
@toolbar_elements << {:text=>I18n.t('common.edit'),:path=>edit_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:icon=>:pencil} if can? :edit, @neuigkeit.rubrik
if can?(:showversions, Neuigkeit)
@versions= @neuigkeit.translation.versions.select([:created_at]).reverse
@toolbar_elements <<{:path=>rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:method=>:versions,:versions=>@versions}
end
actions << {:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit), :method=> :delete,:confirm=>'Sure?' } if can? :delete, @neuigkeit
@toolbar_elements << {:text => "action", :method => :dropdown, :elements=> actions} unless actions.empty?
end
def load_toolbar_elements_edit
@neuigkeit = Neuigkeit.find(params[:id])
@toolbar_elements=[]
@toolbar_elements << {:text=>I18n.t('common.show'),:path=>rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit)} if can? :show, @neuigkeit
end
end

View File

@@ -2,30 +2,53 @@ class RubrikenController < ApplicationController
before_filter {@toolbar_elements=[]}
load_and_authorize_resource
def index
@rubriken = Rubrik.all
@neuigkeiten = Neuigkeit.recent
@calentries= Calentry.public
# if can?(:showintern, Rubrik)
# @rubriken = Rubrik.all
# @neuigkeiten = Neuigkeit.page(params[:page]).per(3)
# else
# @rubriken = Rubrik.where(:public=>true)
# @neuigkeiten = Neuigkeit.public.published.page(params[:page]).per(3)
# end
params[:month]= Date.today.month if params[:month].nil?
params[:year]= Date.today.year if params[:year].nil?
@rubriken= Rubrik.accessible_by(current_ability, :show)
@neuigkeiten = Neuigkeit.accessible_by(current_ability, :list).page(params[:page]).per(3)
@calentries= (@rubriken.map {|r| r.calendar.calentries.of_month(Date.new(params[:year].to_i,params[:month].to_i,1))}).flatten.select {|c| c.object !=nil}
respond_to do |format|
format.html
format.js {render action: :show}
end
end
def intern
end
def show
@rubriken= Rubrik.accessible_by(current_ability, :show)
@rubrik = Rubrik.find(params[:id])
@moderatoren=User.with_role(:newsmoderator,@rubrik)
if can?(:showunpublished, Neuigkeit)
@neuigkeiten = @rubrik.neuigkeiten
else
@neuigkeiten = @rubrik.neuigkeiten.published
end
@toolbar_elements << {:text=>I18n.t('neuigkeit.new.title'),:path=> new_rubrik_neuigkeit_path(@rubrik),:hicon=>'icon-plus-sign'} if can? :verwalten, @rubrik
@toolbar_elements << {:text=>I18n.t('common.verwalten'),:path=>verwalten_rubrik_path(@rubrik),:icon=>:pencil} if can? :verwalten, @rubrik
params[:month]= Date.today.month if params[:month].nil?
params[:year]= Date.today.year if params[:year].nil?
@calentries= @rubrik.calendar.calentries.select {|c| c.object !=nil}
@neuigkeiten = @rubrik.neuigkeiten.accessible_by(current_ability, :list).page(params[:page]).per(3)
@toolbar_elements << {:text=>I18n.t('neuigkeit.new.title'), :path=> new_rubrik_neuigkeit_path(@rubrik),:hicon=>'icon-plus-sign'} if can? :verwalten, @rubrik
@toolbar_elements << {:text=>I18n.t('common.verwalten'), :path=>verwalten_rubrik_path(@rubrik),:icon=>:pencil} if can? :verwalten, @rubrik
respond_to do |format|
format.html
format.js
end
end
def new
@rubrik = Rubrik.new
end
def edit

View File

@@ -3,17 +3,17 @@ class StudienController < ApplicationController
# before_filter :authorize, :only => :verwalten
load_and_authorize_resource
def index
@studien = Studium.all
@studien = Studium.accessible_by(current_ability, :show)
@topbar_elements=[{:hicon=>'icon-list', :text=>I18n.t("studien.allestudien"),:path=>studien_path}]
@topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path}
@topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("lva.list"),:path=>lvas_path}
@toolbar_elements<<{:icon =>:plus, :hicon=>'icon-plus-sign', :text=> I18n.t('studien.new') ,:path=>new_studium_path }
@toolbar_elements<<{:icon =>:plus, :hicon=>'icon-plus-sign', :text=> I18n.t('studien.new') ,:path=>new_studium_path } if can? :new, Studium
# @toolbar_elements<<{:text=> I18n.t('modulgruppe.show.link') ,:path=>modulgruppen_path }
end
def show
@studium= Studium.find(params[:id])
@studien = Studium.accessible_by(current_ability, :show)
@studienphasen=[]
[1, 2 ,3].each do |ph|
modulgruppen_phase=@studium.modulgruppen.where(:phase=>ph)
@@ -31,34 +31,45 @@ class StudienController < ApplicationController
end
@studienphasen << {:modulgruppen=>modulgruppen, :phase => ph}.merge(opts)
end
@toolbar_elements=[]
@toolbar_elements=[{:icon=>:plus, :hicon =>'icon-plus-sign' ,:text=> I18n.t('studien.new') , :path => new_studium_path(@studium) },
{:icon=>:pencil, :hicon=>'icon-pencil',:text =>I18n.t('common.edit'),:path => edit_studium_path(@studium)},
{:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => studium_path(@studium), :method=> :delete,:confirm=>"Sure?" }]
@toolbar_modulgruppen =[ {:hicon=>'icon-plus-sign', :text=> I18n.t('modulgruppe.new'), :path=>new_studium_modulgruppe_path(@studium)},
{:hicon=>'icon-list', :text => I18n.t('modulgruppe.list'), :path=>modulgruppen_path}]
if params[:ansicht] != 'modulgruppenansicht'
@text = 'Zu Modulansicht wechseln'
@flip = 'modulgruppenansicht'
render 'semesteransicht'
@toolbar_elements<<{:icon=>:pencil, :hicon=>'icon-pencil',:text =>I18n.t('common.edit'),:path => edit_studium_path(@studium)} if can? :edit, Studium
@toolbar_elements<<{:icon=>:pencil, :hicon=>'icon-pencil',:text =>I18n.t('lva.editlvas'),:path => edit_lvas_studium_path(@studium)} if can? :edit_lvas, Studium
@toolbar_elements<<{:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => studium_path(@studium), :method=> :delete,:confirm=>'Sure?' } if can? :delete, Studium
@toolbar_modulgruppen =[]
@toolbar_modulgruppen << {:hicon=>'icon-plus-sign', :text=> I18n.t('modulgruppe.new'), :path=>new_studium_modulgruppe_path(@studium)} if can? :new, Modulgruppe
#@toolbar_modulgruppen << {:hicon=>'icon-list', :text => I18n.t('modulgruppe.list'), :path=>modulgruppen_path} if can? :index, Modulgruppe
case params[:ansicht]
when 'semesteransicht'
when 'infoansicht'
when 'qualifikationsprofil'
else
@text = 'Zu Semesteransicht wechseln'
@flip = 'semesteransicht'
params[:ansicht]="modulgruppenansicht"
end
end
def new
@studien = Studium.accessible_by(current_ability, :show)
@studium = Studium.new
end
def edit
@studien = Studium.accessible_by(current_ability, :show)
@studium = Studium.find(params[:id])
@toolbar_elements=[{:text => I18n.t('studien.anzeigen') , :path => url_for(@studium) }]
@toolbar_elements<<{:text =>I18n.t('studien.allestudien'),:path=>studien_path(@studium)}
end
def edit_lvas
@studien = Studium.accessible_by(current_ability, :show)
@studium = Studium.find(params[:id])
@lvas=@studium.lvas.uniq
@semester=@studium.semester
@toolbar_elements=[{:text => I18n.t('studien.anzeigen') , :path => url_for(@studium) }]
@toolbar_elements<<{:text =>I18n.t('studien.allestudien'),:path=>studien_path(@studium)}
end
def create
@studium = Studium.new(params[:studium])
@@ -75,11 +86,16 @@ class StudienController < ApplicationController
def update
@studium = Studium.find(params[:id])
@studien = Studium.accessible_by(current_ability, :show)
logger.info "params: #{params[:studium].inspect}"
if @studium.update_attributes(params[:studium])
if @studium.lvas.map(&:valid?).all?
redirect_to url_for(@studium), notice: 'Studium was successfully updated.'
else
render action: "edit"
end
else
render action: "edit"
end
@@ -94,7 +110,8 @@ class StudienController < ApplicationController
def verwalten
@new_params={:std_verw=>params[:std_verw], :mg_verw=>params[:mg_verw], :m_verw=>params[:m_verw], :lva_verw=>params[:lva_verw], :b_verw=>params[:b_verw], :lec_verw=>params[:lec_verw]}
if @new_params.values.compact.empty?
@studien=Studium.all
@modulgruppen=Modulgruppe.all
@module=Modul.all
@lvas=Lva.all
@@ -242,14 +259,14 @@ class StudienController < ApplicationController
end
def default_url_options
{:ansicht=> params[:ansicht],
super.merge({:ansicht=> params[:ansicht],
:std_verw=> params[:std_verw],
:mg_verw=> params[:mg_verw],
:m_verw=>params[:m_verw],
:lva_verw=>params[:lva_verw],
:b_verw=>params[:b_verw],
:lec_verw=>params[:lec_verw]}.merge(super)
:lec_verw=>params[:lec_verw]})
end
end

View File

@@ -0,0 +1,103 @@
class Survey::ChoicesController < ApplicationController
# GET /survey/choices
# GET /survey/choices.json
load_and_authorize_resource
def index
@survey_choices = Survey::Choice.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @survey_choices }
end
end
# GET /survey/choices/1
# GET /survey/choices/1.json
def show
@survey_choice = Survey::Choice.find(params[:id])
respond_to do |format|
format.html {redirect_to @survey_choice.question}
format.json { render json: @survey_choice }
format.js
end
end
# GET /survey/choices/new
# GET /survey/choices/new.json
def new
@question= Survey::Question.find(params[:question_id])
@choice=Survey::Choice.new
@choice.question=@question
respond_to do |format|
format.js
format.html # new.html.erb
format.json { render json: @survey_choice }
end
end
# GET /survey/choices/1/edit
def edit
@choice = Survey::Choice.find(params[:id])
respond_to do |format|
format.html
format.js
end
end
# POST /survey/choices
# POST /survey/choices.json
include PluginsHelper
def create
@survey_choice = Survey::Choice.new(params[:survey_choice])
@divid = divid_for(@survey_choice)
respond_to do |format|
if @survey_choice.save
format.html { redirect_to @survey_choice, notice: 'Choice was successfully created.' }
format.json { render json: @survey_choice, status: :created, location: @survey_choice }
format.js
else
format.html { render action: "new" }
format.json { render json: @survey_choice.errors, status: :unprocessable_entity }
end
end
end
# PUT /survey/choices/1
# PUT /survey/choices/1.json
def update
@survey_choice = Survey::Choice.find(params[:id])
respond_to do |format|
if @survey_choice.update_attributes(params[:survey_choice])
format.html { redirect_to @survey_choice, notice: 'Choice was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @survey_choice.errors, status: :unprocessable_entity }
5 end
end
end
# DELETE /survey/choices/1
# DELETE /survey/choices/1.json
def destroy
@survey_choice = Survey::Choice.find(params[:id])
if @survey_choice.answers.count>0
redirect_to action: :show
else
@divid = divid_for(@survey_choice)
@survey_choice.destroy
respond_to do |format|
format.html { redirect_to survey_choices_url }
format.json { head :no_content }
format.js
end
end
end
end

View File

@@ -0,0 +1,104 @@
class Survey::QuestionsController < ApplicationController
# GET /survey/questions
# GET /survey/questions.json
load_and_authorize_resource
acts_as_flagable
def index
@survey_questions = Survey::Question.all
respond_to do |format|
format.html # index.html.erb
end
end
def answer
@survey_question = Survey::Question.find(params[:id])
if (params[:key].nil? || params[:key].empty?)
user = current_user
else
k=Key.find_by_uuid(params[:key] )
if k.is_valid && k.typ==3 && k.parent == @survey_question
user = k.user
end
end
@survey_question.do_answer(params[:survey_question][:selected],user)
respond_to do |format|
format.html { redirect_to action: :show}
format.js { render action: :show}
end
end
# GET /survey/questions/1
# GET /survey/questions/1.json
def create_from_template
@template = Survey::Question.find(params[:id])
parent= params[:parent_type].constantize.find(params[:parent_id])
@survey_question = @template.copy_from_template_for(parent)
@survey_question.user=current_user
render action: :show
end
def show
@survey_question = Survey::Question.find(params[:id])
respond_to do |format|
format.html # show.html.erb
end
end
# GET /survey/questions/new
# GET /survey/questions/new.json
def new
@survey_question = Survey::Question.new
@parent=params[:parent_type].constantize.find(params[:parent_id])
@survey_question.parent=@parent
respond_to do |format|
format.html # new.html.erb
end
end
# GET /survey/questions/1/edit
def edit
@survey_question = Survey::Question.find(params[:id])
end
# POST /survey/questions
# POST /survey/questions.json
def create
@survey_question = Survey::Question.new(params[:survey_question])
@survey_question.user=current_user
respond_to do |format|
if @survey_question.save
format.html { redirect_to @survey_question, notice: 'Question was successfully created.' }
else
format.html { render action: "new" }
end
end
end
# PUT /survey/questions/1
# PUT /survey/questions/1.json
def update
@survey_question = Survey::Question.find(params[:id])
@survey_question.user=current_user
@survey_question.save
respond_to do |format|
if @survey_question.update_attributes(params[:survey_question])
format.html { redirect_to @survey_question, notice: 'Question was successfully updated.' }
else
format.html { render action: "edit" }
end
end
end
# DELETE /survey/questions/1
# DELETE /survey/questions/1.json
def destroy
@survey_question = Survey::Question.find(params[:id])
@survey_question.destroy
respond_to do |format|
format.html { redirect_to survey_questions_url }
end
end
end

View File

@@ -1,31 +1,65 @@
class ThemenController < ApplicationController
# GET /themen
# GET /themen.json
load_and_authorize_resource
def index
@themen = Thema.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @themen }
@themen = Thema.accessible_by(current_ability,:show).where(:isdraft=>false)
@themen_drafts = Thema.accessible_by(current_ability,:show).where(:isdraft=>true)
@themen_outdated =Thema.accessible_by(current_ability,:show).outdated
end
end
# GET /themen/1
# GET /themen/1.json
def show
@thema = Thema.find(params[:id])
@fragen=@thema.fragen
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('thema.edit'), :path=>edit_thema_path(@thema)}]
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t("thema.manage"), :path=>verwalten_thema_path(@thema)}]
@toolbar_elements << [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('thema.edit'), :path=>edit_thema_path(@thema)}]
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('thema.remove'), :path=>thema_path(@thema), :method=>:delete, :confirm=>I18n.t('thema.sure')}
respond_to do |format|
format.html # show.html.erb
format.json { render json: @thema }
format.html {
# redirect_to :controller=>'themengruppen', :id=>@thema.themengruppe.id, :action=>:show, :anchor=> "thema_"+params[:id].to_s
}
format.js
end
end
def sanitize
require 'sanitize'
@thema = Thema.find(params[:id])
@fragen = @thema.fragen
trans_icons= lambda do |env|
node=env[:node]
node_name=env[:node_name]
return if env[:is_whitelisted] || !node.element?
return unless node_name == 'span'
# return unless node["class"] =~ /.*ffi.*/
Sanitize.node!(node,{:elements=>["span"],:attributes=>{"span"=>["class","style"]},:css=>{:properties=>["color"]}})
{:node_whitelist=>[node]}
end
@thema.text = Sanitize.fragment(@thema.text, {:elements=>['table','tr','td','p','h1','h2','h3','h4','h5','a','th','img','ul','li','i','b','em','pre','code'],:attributes=>{'p'=>['class'],'table'=>['class'],'a'=>['href','data'],'img'=>['src','width','height'],:all=>['class']},:css=>{:properties=>['float']},:transformers=>[trans_icons]})
# # #
# #
# #
#
# @thema.text = @thema.text.sanitize
render :edit
end
def version
@thema = Thema.find(params[:id])
end
def verwalten
@thema = Thema.find(params[:id])
@attachment=Attachment.new
@fragen=@thema.fragen
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('thema.edit'), :path=>edit_thema_path(@thema)}]
@toolbar_elements <<{ :hicon=>'icon-leaf', :text=>"Sanitize", :path=>sanitize_thema_path(@thema)}
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('thema.remove'), :path=>thema_path(@thema), :method=>:delete, :confirm=>I18n.t('thema.sure')}
end
# GET /themen/new
# GET /themen/new.json
def new
@@ -34,42 +68,92 @@ class ThemenController < ApplicationController
respond_to do |format|
format.html # new.html.erb
format.json { render json: @thema }
format.js { render action: "edit" }
end
end
# GET /themen/1/edit
def edit
@thema = Thema.find(params[:id])
respond_to do |format|
format.html
format.js { @themen= @thema.themengruppe.themen }
end
end
# POST /themen
# POST /themen.json
def create
@thema = Thema.new(params[:thema])
@themen = @thema.themengruppe.themen.order(:priority).reverse
respond_to do |format|
if @thema.save
format.html { redirect_to @thema, notice: 'Thema was successfully created.' }
@themen = @thema.themengruppe.themen.order(:priority).reverse
format.html { redirect_to @thema, notice: I18n.t("thema.created") }
format.json { render json: @thema, status: :created, location: @thema }
format.js {render action: "update"}
else
@themen = @thema.themengruppe.themen.order(:priority).reverse
format.html { render action: "new" }
format.json { render json: @thema.errors, status: :unprocessable_entity }
format.js { render action: "edit" }
end
end
end
def is_updated
@thema = Thema.find(params[:id])
@thema.translation.touch
redirect_to @thema
end
def fragen
@thema = Thema.find(params[:id])
@fragen=@thema.fragen
respond_to do |format|
format.js
end
end
def documents
@thema = Thema.find(params[:id])
@documents=@thema.documents
respond_to do |format|
format.js
end
end
def attachments
@thema = Thema.find(params[:id])
@attachments=@thema.attachments
@attachment=Attachment.new
respond_to do |format|
format.js
end
end
# PUT /themen/1
# PUT /themen/1.json
def update
@thema = Thema.find(params[:id])
@themen = @thema.themengruppe.themen.order(:priority).reverse
@thema.assign_attributes(params[:thema])
# @thema.fix_links(request.host_with_port)
respond_to do |format|
if @thema.update_attributes(params[:thema])
format.html { redirect_to @thema, notice: 'Thema was successfully updated.' }
if @thema.save
format.html {
if params["button"]=="continue"
render action: "edit", notice: I18n.t("thema.updated")
else
redirect_to @thema, notice: I18n.t("thema.updated")
end
}
format.json { head :no_content }
format.js
else
format.html { render action: "edit" }
format.json { render json: @thema.errors, status: :unprocessable_entity }
format.js { render action: "edit" }
end
end
end
@@ -79,7 +163,7 @@ class ThemenController < ApplicationController
def destroy
@thema = Thema.find(params[:id])
@thema.destroy
@themen = @thema.themengruppe.themen.order(:priority).reverse
respond_to do |format|
format.html { redirect_to themengruppe_path(@thema.themengruppe) }
format.json { head :no_content }

View File

@@ -3,28 +3,29 @@ class ThemengruppenController < ApplicationController
# GET /themengruppen.json
load_and_authorize_resource
def index
@themengruppen = Themengruppe.order(:priority).reverse
@toolbar_elements = [{:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('themengruppe.new'), :path=>new_themengruppe_path()}]
@toolbar_elements = [{:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('common.verwalten'), :path=>verwalten_all_themengruppen_path()}]
@themengruppen = Themengruppe.accessible_by(current_ability, :show).not_intern.includes(:themen)
@toolbar_elements = []
@toolbar_elements << {:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('themengruppe.new'), :path=>new_themengruppe_path()} if can? :new, Themengruppe
@toolbar_elements << {:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('themengruppe.manage_all'), :path=>verwalten_all_themengruppen_path()} if can? :verwalten_all, Themengruppe
respond_to do |format|
format.html # index.html.erb
format.json { render json: @themengruppen }
end
end
def faqs
@themengruppen = Themengruppe.accessible_by(current_ability, :show).order("themengruppen.priority").includes(:themen,{themen: :fragen}).order("themen.priority")
end
# GET /themengruppen/1
# GET /themengruppen/1.json
def show
@themengruppe = Themengruppe.find(params[:id])
@themen = @themengruppe.themen.order(:priority).reverse
@themen=@themengruppe.themen.accessible_by(current_ability, :show)
@toolbar_elements = []
@toolbar_elements << {:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('thema.add'), :path=>new_themengruppe_thema_path(@themengruppe)} if can? :new, Themengruppe
@toolbar_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('themengruppe.edit'), :path=>edit_themengruppe_path(@themengruppe)} if can? :edit, @themengruppe
@toolbar_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t("themengruppe.verwalten"), :path=>themengruppe_verwalten_path(@themengruppe)} if can? :edit, @themengruppe
@toolbar_elements << {:hicon=>'icon-remove-circle',:text=>I18n.t('themengruppe.remove'), :path=>themengruppe_path(@themengruppe), :method=>:delete,:confirm=>I18n.t('themengruppe.sure')} if can? :delete, @themengruppe
@toolbar_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t("themengruppe.manage"), :path=>themengruppe_verwalten_path(@themengruppe)} if can? :edit, @themengruppe
respond_to do |format|
format.html # show.html.erb
@@ -48,11 +49,20 @@ class ThemengruppenController < ApplicationController
@themengruppe = Themengruppe.find(params[:id])
end
def verwalten_all
@themengruppen =Themengruppe.order(:priority).reverse
@themengruppen =Themengruppe.public.order(:priority).reverse
@themengruppen_intern =Themengruppe.intern.order(:priority).reverse
@toolbar_elements = [{:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('themengruppe.new'), :path=>new_themengruppe_path()}]
end
def verwalten
@themengruppe = Themengruppe.find(params[:themengruppe_id])
@themen = @themengruppe.themen.order(:priority).reverse
@themen = @themengruppe.themen
@toolbar_elements =[]
@toolbar_elements << {:text=>I18n.t('themengruppe.show'), :path=>themengruppe_path(@themengruppe)} if can? :show, @themengruppe
@toolbar_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('themengruppe.edit'), :path=>edit_themengruppe_path(@themengruppe)} if can? :edit, @themengruppe
@toolbar_elements << {:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('thema.add'), :path=>new_themengruppe_thema_path(@themengruppe), :remote=>true} if can? :new, Thema
@toolbar_elements << {:hicon=>'icon-remove-circle',:text=>I18n.t('themengruppe.remove'), :path=>themengruppe_path(@themengruppe), :method=>:delete,:confirm=>I18n.t('themengruppe.sure')} if can? :delete, @themengruppe
end
def sort_themengruppen
@@ -114,9 +124,7 @@ class ThemengruppenController < ApplicationController
format.json { render json: @themengruppe.errors, status: :unprocessable_entity }
end
end
end
# DELETE /themengruppen/1
end # DELETE /themengruppen/1
# DELETE /themengruppen/1.json
def destroy
@themengruppe = Themengruppe.find(params[:id])

View File

@@ -1,15 +1,29 @@
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
skip_before_filter :verify_authenticity_token
def failure
skip_before_filter :verify_authenticity_token
def failure
# flash[:notice] = "Failure #{Hash.new(request.env)} #{Hash.new(params)}"
#redirect_to new_user_registration_url , :notice=>"Omniauth Login failed"
super
end
def facebook
#redirect_to new_user_registration_url , :notice=>"Omniauth Login failed"
super
end
def developer
if Rails.env.development?
@user= User.find_for_developer_oauth(request.env["omniauth.auth"],current_user)
if @user
sign_in_and_redirect @user, event: :authentication
else
redirect_to new_user_registration_url
end
else
flash[:notice]=flash[:notice] + "Still not logged in "
redirect_to new_user_registration_url
end
end
def facebook
# You need to implement the method below in your model (e.g. app/models/user.rb)
@user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user)
data=request.env["omniauth.auth"]
session[:fbuser_access_token]=data.credentials.token
if @user
sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated
@@ -21,7 +35,7 @@ def facebook
end
def ldap
logger.debug current_user.to_s
logger.debug current_user.to_s
@user=User.find_for_ldap_oauth(request.env["omniauth.auth"],current_user)
# @user=User.find_for_ldap_oauth(session["devise.ldap_data"],current_user)
# @user=User.first

View File

@@ -1,8 +1,22 @@
class UsersController < ApplicationController
def index
authorize!(:index,User)
@users = User.all
end
def show
@user=User.find(params[:id])
authorize!(:show, @user)
end
def set_preferred_theme
@user=User.find(params[:id])
authorize!(:set_preferred_theme, @user)
@user.preferredtheme=params[:theme]
@user.save
redirect_to root_url
end
def add_role
authorize!(:add_role, User)
@user= User.find(params[:id])
if (params[:role]=="fetuser" && can?(:addfetuser,User))
@user.add_role(params[:role])
@@ -12,9 +26,24 @@ class UsersController < ApplicationController
end
redirect_to users_url
end
def fb_set_default_publish_page
authorize!(:doadmin, User)
if Fetsite::Application.config.facebookconfig_enabled
if params["page"].nil? || !(current_user.provider=="facebook")
redirect_to intern_home_index_path
else
@fbu=FbGraph::User.new(current_user.uid.to_s).fetch(:access_token=>session["fbuser_access_token"])
File.open("config/page.yml",'w'){|f| f.write(@fbu.accounts(:access_token=>session["fbuser_access_token"]).select { |p| p.name == params["page"] }.first.to_yaml)}
logger.info @fbu.to_s
logger.info "FbGraph Access" + session["fbuser_access_token"]
redirect_to admin_home_index_path
end
end
end
def all_update
authorize! :doadmin,User
params[:users].each do |id,u|
user=User.find(id)
user.fetprofile = Fetprofile.find(u[:fetprofile_id].to_i) if u[:fetprofile_id].to_i>0
@@ -26,7 +55,6 @@ class UsersController < ApplicationController
def do_confirm
@user= User.find(params[:id])
@user.confirm!
redirect_to users_url
end
end

View File

@@ -1,11 +1,89 @@
module ApplicationHelper
def current_url(overwrite={})
url_for :params => params.merge(overwrite).except(:controller,:action)
end
def switch_locale_url(target_locale)
current_url({:locale=>target_locale}) .sub "/"+I18n.locale.to_s+"/", "/"+target_locale.to_s+"/"
def cache_array_key(array,prefix="")
return "empty_array" if array.nil? or array.empty?
prefix+array.map{|c| c.id}.join('_')+"_"+array.max{|c|c.updated_at.to_i}.updated_at.try(:utc).to_s+"_"+I18n.locale.to_s
# array.map{|c| c.id}.join('')+"_"+array.map{|c|c.try(:updated_at).try(:utc).to_s}.join('') +"_"+I18n.locale.to_s
end
def clean_calendar(cal)
cal.rubrik.meetingtyps.each do |mt|
mt.meetings.each do |m|
m.calentry.calendar=cal
end
end
end
def strip_control_chars(value)
value.chars.inject("") do |str, char|
unless char.ascii_only? && (char.ord < 32 || char.ord == 127)
str << char
end
str
end
end
def convert_topic_to_meeting(t,mt)
m=Meeting.new_with_date_and_typ(t,t.title.to_date+16.hour,mt)
m.save
m.create_protocol
m.protocol.text=t.text
m.protocol.save
m.update_time_from_protocol
m.save
t.meetings << m
t.save
end
def current_url1(overwrite={})
url_for :params => params.merge(overwrite).except(:controller,:action,:ansicht)
end
def switch_locale_url(target_locale)
# current_url1({:locale=>target_locale}) .sub "/"+I18n.locale.to_s+"/", "/"+target_locale.to_s+"/"
language_path(locale: target_locale)
end
def ffi1_icon (name)
content_tag("i", "", class: "ficon ffi1-" + name )
end
def ffi2_icon (name)
content_tag("i","", class: "ficon ffi2-"+name )
end
def ff_icon (name)
content_tag("i","", class: "ficon "+name )
end
def fa_stack(icon1, icon2)
h_1 = content_tag("span", content_tag("i","", class: "ficon "+" fa-"+icon1+" fa fa-stack-1x" ) + content_tag("i","", class: "ficon "+" fa-"+icon2+" fa fa-stack-2x" ),class: "fa-stack ")
h_2 = content_tag("span", h_1 ,class: "fa-stack-sm")
h_2
end
def ffi1_list
y=YAML.load_file("#{::Rails.root.to_s}/config/flatfeticon1.yml")
y["ffi1"]
end
def ffi2_list
y=YAML.load_file("#{::Rails.root.to_s}/config/flatfeticon2.yml")
y["ffi2"]
end
def fa_list
y=YAML.load_file("#{::Rails.root.to_s}/config/fontawesome.yml")
y["fa"]
end
def tinymce_icon_choice
s=""
ffi1_list.each do |i|
s=s+'<a onclick="insertIcon_ffi1(\'ffi1-'+i+'\')">'+ffi1_icon(i)+'</a>'
end
raw(s)
end
def toolbar_html(elemente)
html = ""
limiter = " | "
@@ -45,4 +123,46 @@ module ApplicationHelper
end
raw(html)
end
def absurl(path)
if path.nil?
return nil
end
url=URI(root_url)
url.path=path
return url
end
def get_theme_help(u)
# if params[:theme]== "default" || params[:theme]=="2003" || params[:theme].nil?
# params[:theme]="blue1"
# end
if ! u.try(:preferredtheme).nil? and ThemesForRails.available_theme_names.include?(u.preferredtheme)
u.preferredtheme
else
"blue1"
end
end
def like_dislike_for(obj)
out=""
if can?(:like, obj)
out += link_to ffi1_icon("like3")+" like" + "("+obj.get_likes.size.to_s+")", url_for([:like, obj]),title: "liked by " + ((current_user.liked?(obj)) ? ("you and " + ((obj.get_likes.size - 1).to_s + " others")) : obj.get_likes.size.to_s), remote: true
else
out += "liked by " + obj.get_likes.size.to_s
end
if can?(:dislike, obj)
out += link_to ffi1_icon("dislike")+" dislike" + "("+obj.get_dislikes.size.to_s+")", url_for([:dislike, obj]),title:"disliked by " + ((current_user.disliked?(obj)) ? ("you and " + ((obj.get_dislikes.size - 1).to_s + " others")) : obj.get_dislikes.size.to_s) , remote: true
else
out += "disliked by " + obj.get_dislikes.size.to_s
end
raw(out)
end
def li_tag(content)
content_tag("li", content)
end
def meta_itemprop(itemprop, content)
tag("meta", itemprop: itemprop, content: content)
end
end

View File

@@ -1,2 +1,21 @@
module AttachmentsHelper
def render_attachments_for(p)
a= Attachment.new
a.parent=p
render(partial:"attachments/attachment_list", object: p.attachments, locals: {editor: (can?(:edit, p)), parent: p} )+ ((can?(:edit, p))? (render partial:"attachments/form_bulk2", object: a ): "")
end
def render_attachments_list_for(p)
a= Attachment.new
a.parent=p
render(partial:"attachments/attachment_list", object: p.attachments, locals: {editor: (can?(:edit, p)), parent: p} )
end
def render_new_attachments_for(p, text="", options={})
a= Attachment.new
a.parent=p
((can?(:edit, p))? (render partial:"attachments/form_bulk2", object: a ): "")
end
end

View File

@@ -1,2 +1,9 @@
module CalentriesHelper
def render_calentries_for(p)
calentry_list=p.calentries
render(partial: "calentries/calentry_list", object: calentry_list, locals:{parent: p})
end
def new_calentry_div(p)
content_tag("div", "", id: divid_for(p, "new_calentry"))
end
end

View File

@@ -0,0 +1,8 @@
module CommentsHelper
def wrapid_for(o)
divid_for(o,"comments")
end
def render_comments_for(o)
render partial: "comments/comments_block", object: o
end
end

View File

@@ -0,0 +1,4 @@
module CrawlobjectHelper
end

View File

View File

@@ -0,0 +1,3 @@
module MailerHelper
end

View File

@@ -0,0 +1,2 @@
module MeetingsHelper
end

View File

@@ -0,0 +1,2 @@
module MeetingtypsHelper
end

View File

@@ -1,2 +1,5 @@
module NeuigkeitenHelper # :nodoc:
def send_daily_newsletter(user)
NewsMailer.daily_newsletter(user.id).deliver
end
end

View File

@@ -0,0 +1,14 @@
module PluginsHelper
def divid_for(obj,suffix="")
if obj.nil?
""
else
obj.class.to_s.downcase.gsub("::","_")+ "_" + suffix.downcase + "_" + obj.id.to_s
end
end
def div_tag_for(o,&block)
content = capture(&block)
content_tag(:div, content, :id=>divid_for(o))
end
end

Some files were not shown because too many files have changed in this diff Show More