├── .gitmodules ├── .sass-cache ├── 00150b1072f1bf5f414172ab97327dd3721063b6 │ ├── _core.scssc │ ├── _header.scssc │ ├── _ie.scssc │ ├── _print.scssc │ ├── _screen.scssc │ └── style.scssc ├── 059dc643478da1cd211eeb45c6717b16fed220e1 │ ├── _alert-boxes.scssc │ ├── _block-grid.scssc │ ├── _breadcrumbs.scssc │ ├── _button-groups.scssc │ ├── _buttons.scssc │ ├── _clearing.scssc │ ├── _custom-forms.scssc │ ├── _dropdown-buttons.scssc │ ├── _dropdown.scssc │ ├── _flex-video.scssc │ ├── _forms.scssc │ ├── _grid.scssc │ ├── _inline-lists.scssc │ ├── _joyride.scssc │ ├── _keystrokes.scssc │ ├── _labels.scssc │ ├── _magellan.scssc │ ├── _orbit.scssc │ ├── _pagination.scssc │ ├── _panels.scssc │ ├── _pricing-tables.scssc │ ├── _progress-bars.scssc │ ├── _reveal.scssc │ ├── _section.scssc │ ├── _side-nav.scssc │ ├── _split-buttons.scssc │ ├── _sub-nav.scssc │ ├── _switch.scssc │ ├── _tables.scssc │ ├── _thumbs.scssc │ ├── _tooltips.scssc │ ├── _top-bar.scssc │ ├── _type.scssc │ └── _visibility.scssc ├── 7495abe163c18612acfaa6b2ae1ca88cf2f12de7 │ └── _foundation-global.scssc ├── 806e458a739cb70ecbef612eb477791f020675e5 │ └── _utilities.scssc ├── 93b454166083ed77667b17856172149281bf49f6 │ └── foundation.scssc └── bd2d83bdaaff7267c7afe5749774193520f4f66a │ └── _reset.scssc ├── 404.php ├── MIT-LICENSE.txt ├── README.md ├── archive.php ├── comments.php ├── config.rb ├── content-page.php ├── content-single.php ├── content.php ├── css ├── app.css └── normalize.css ├── footer.php ├── functions.php ├── header.php ├── humans.txt ├── image.php ├── inc ├── custom-header.php ├── customizer.php ├── extras.php ├── jetpack.php └── template-tags.php ├── index.html ├── index.php ├── js ├── customizer.js ├── foundation.min.js ├── foundation │ ├── foundation-ck.js │ ├── foundation.alerts.js │ ├── foundation.clearing.js │ ├── foundation.cookie.js │ ├── foundation.dropdown.js │ ├── foundation.forms.js │ ├── foundation.joyride.js │ ├── foundation.js │ ├── foundation.magellan.js │ ├── foundation.orbit.js │ ├── foundation.placeholder.js │ ├── foundation.reveal.js │ ├── foundation.section.js │ ├── foundation.tooltips.js │ └── foundation.topbar.js ├── html5.js ├── keyboard-image-navigation.js ├── navigation.js ├── skip-link-focus-fix.js └── vendor │ ├── custom.modernizr.js │ ├── jquery.js │ └── zepto.js ├── languages └── readme.txt ├── layouts ├── content-sidebar-sidebar.css ├── content-sidebar.css ├── sidebar-content-sidebar.css ├── sidebar-content.css └── sidebar-sidebar-content.css ├── lib └── foundation.php ├── no-results.php ├── page.php ├── print.css ├── robots.txt ├── rtl.css ├── sass ├── _core.scss ├── _header.scss ├── _ie.scss ├── _print.scss ├── _screen.scss ├── _settings.scss ├── _variables.scss └── style.scss ├── screenshot.png ├── search.php ├── searchform.php ├── sidebar.php ├── single.php └── style.css /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "classTicket"] 2 | path = classTicket 3 | url = git@github.com:lkbgift/classTicket.git 4 | -------------------------------------------------------------------------------- /.sass-cache/00150b1072f1bf5f414172ab97327dd3721063b6/_core.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/00150b1072f1bf5f414172ab97327dd3721063b6/_core.scssc -------------------------------------------------------------------------------- /.sass-cache/00150b1072f1bf5f414172ab97327dd3721063b6/_header.scssc: -------------------------------------------------------------------------------- 1 | 3.2.9 (Media Mark) 2 | da39a3ee5e6b4b0d3255bfef95601890afd80709 3 | o:Sass::Tree::RootNode :@children[:@templateI":ET: 4 | @linei: @options{ -------------------------------------------------------------------------------- /.sass-cache/00150b1072f1bf5f414172ab97327dd3721063b6/_ie.scssc: -------------------------------------------------------------------------------- 1 | 3.2.9 (Media Mark) 2 | 55d03cbe8dc4482082815585822d80503557fdcb 3 | o:Sass::Tree::RootNode 4 | :@children[o:Sass::Tree::CommentNode 5 | : @value[I"/* Welcome to Compass. Use this file to write IE specific override styles. 6 | * Import this file using the following HTML or equivalent: 7 | * */:ET: 10 | @type: normal;[: 11 | @linei: @options{:@templateI"/* Welcome to Compass. Use this file to write IE specific override styles. 12 | * Import this file using the following HTML or equivalent: 13 | * */ 16 | ; T; i:@has_childrenT; @ -------------------------------------------------------------------------------- /.sass-cache/00150b1072f1bf5f414172ab97327dd3721063b6/_print.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/00150b1072f1bf5f414172ab97327dd3721063b6/_print.scssc -------------------------------------------------------------------------------- /.sass-cache/00150b1072f1bf5f414172ab97327dd3721063b6/_screen.scssc: -------------------------------------------------------------------------------- 1 | 3.2.9 (Media Mark) 2 | e24c39d4800ce9f9b6b50e6a9d2d8c3fce9d548f 3 | o:Sass::Tree::RootNode 4 | :@children[o:Sass::Tree::CommentNode 5 | : @value[I" /* Welcome to Compass. 6 | * In this file you should write your main styles. (or centralize your imports) 7 | * Import this file using the following HTML or equivalent: 8 | * */:ET: 9 | @type: normal;[: 10 | @linei: @options{o:Sass::Tree::ImportNode :@imported_filenameI"compass/reset; T;[:@template0; i ; @ :@imported_file0;I"'/* Welcome to Compass. 11 | * In this file you should write your main styles. (or centralize your imports) 12 | * Import this file using the following HTML or equivalent: 13 | * */ 14 | 15 | @import "compass/reset"; 16 | ; T; i:@has_childrenT; @ -------------------------------------------------------------------------------- /.sass-cache/00150b1072f1bf5f414172ab97327dd3721063b6/style.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/00150b1072f1bf5f414172ab97327dd3721063b6/style.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_alert-boxes.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_alert-boxes.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_block-grid.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_block-grid.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_breadcrumbs.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_breadcrumbs.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_button-groups.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_button-groups.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_buttons.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_buttons.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_clearing.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_clearing.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_custom-forms.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_custom-forms.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_dropdown-buttons.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_dropdown-buttons.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_dropdown.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_dropdown.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_flex-video.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_flex-video.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_forms.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_forms.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_grid.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_grid.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_inline-lists.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_inline-lists.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_joyride.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_joyride.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_keystrokes.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_keystrokes.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_labels.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_labels.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_magellan.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_magellan.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_orbit.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_orbit.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_pagination.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_pagination.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_panels.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_panels.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_pricing-tables.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_pricing-tables.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_progress-bars.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_progress-bars.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_reveal.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_reveal.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_section.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_section.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_side-nav.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_side-nav.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_split-buttons.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_split-buttons.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_sub-nav.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_sub-nav.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_switch.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_switch.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_tables.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_tables.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_thumbs.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_thumbs.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_tooltips.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_tooltips.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_top-bar.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_top-bar.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_type.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_type.scssc -------------------------------------------------------------------------------- /.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_visibility.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/059dc643478da1cd211eeb45c6717b16fed220e1/_visibility.scssc -------------------------------------------------------------------------------- /.sass-cache/7495abe163c18612acfaa6b2ae1ca88cf2f12de7/_foundation-global.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/7495abe163c18612acfaa6b2ae1ca88cf2f12de7/_foundation-global.scssc -------------------------------------------------------------------------------- /.sass-cache/806e458a739cb70ecbef612eb477791f020675e5/_utilities.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/806e458a739cb70ecbef612eb477791f020675e5/_utilities.scssc -------------------------------------------------------------------------------- /.sass-cache/93b454166083ed77667b17856172149281bf49f6/foundation.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/.sass-cache/93b454166083ed77667b17856172149281bf49f6/foundation.scssc -------------------------------------------------------------------------------- /.sass-cache/bd2d83bdaaff7267c7afe5749774193520f4f66a/_reset.scssc: -------------------------------------------------------------------------------- 1 | 3.2.9 (Media Mark) 2 | df78759f0fe6b88a633d20d26581ca4cdb829111 3 | o:Sass::Tree::RootNode 4 | :@children[o:Sass::Tree::ImportNode :@imported_filenameI"reset/utilities:ET;[:@template0: 5 | @linei: @options{:@imported_file0o:Sass::Tree::MixinNode : 6 | @nameI"global-reset; T: 7 | @args[:@keywords{: @splat0;[; i; @ 8 | ; 9 | I"8@import "reset/utilities"; 10 | 11 | @include global-reset; 12 | ; T; i:@has_childrenT; @ 13 | -------------------------------------------------------------------------------- /404.php: -------------------------------------------------------------------------------- 1 | 9 | 10 |
11 |
12 | 13 |
14 |
15 |

16 |
17 | 18 |
19 |

20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 |

28 |
    29 | 'count', 32 | 'order' => 'DESC', 33 | 'show_count' => 1, 34 | 'title_li' => '', 35 | 'number' => 10, 36 | ) ); 37 | ?> 38 |
39 |
40 | 41 | 42 | ' . sprintf( __( 'Try looking in the monthly archives. %1$s', 'classticket' ), convert_smilies( ':)' ) ) . '

'; 45 | the_widget( 'WP_Widget_Archives', 'dropdown=1', "after_title=$archive_content" ); 46 | ?> 47 | 48 | 49 | 50 |
51 |
52 | 53 |
54 |
55 | 56 | -------------------------------------------------------------------------------- /MIT-LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011 ZURB, http://www.zurb.com/ 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ClassTicket 2 | The repository is a combination of Underscore with the Foundation SASS and Javascript files. I have concatenated and minified the JS files and enqueued them correctly through the WordPress API. Similarly, I installed Compass, which watches the SASS folder and concatenates all styled files into a single CSS file. 3 | 4 | Its a great starting point for people who like Foundation and want to write a WordPress theme the right way. 5 | 6 | # Underscore 7 | [Underscore](http://underscore.me) is a theme framework without any significant styling. It was made as a base for WordPress theme developers, by providing basic hooks and crucial theme functions. 8 | 9 | # Foundation 10 | [Foundation](http://foundation.zurb.com) is the most advanced frontend framework, which provides a nice mobile first grid system. -------------------------------------------------------------------------------- /archive.php: -------------------------------------------------------------------------------- 1 | 11 | 12 |
13 |
14 | 15 | 16 | 17 |
' ); 74 | endif; 75 | 76 | elseif ( is_tag() ) : 77 | // show an optional tag description 78 | $tag_description = tag_description(); 79 | if ( ! empty( $tag_description ) ) : 80 | echo apply_filters( 'tag_archive_meta', '
' . $tag_description . '
' ); 81 | endif; 82 | 83 | endif; 84 | ?> 85 | 86 | 87 | 88 | 89 | 90 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 |
110 | 111 | 112 | -------------------------------------------------------------------------------- /comments.php: -------------------------------------------------------------------------------- 1 | 21 | 22 |
23 | 24 | 25 | 26 | 27 |

28 | ' . get_the_title() . '' ); 31 | ?> 32 |

33 | 34 | 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?> 35 | 40 | 41 | 42 |
    43 | 'classticket_comment' ) ); 51 | ?> 52 |
53 | 54 | 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?> 55 | 60 | 61 | 62 | 63 | 64 | 68 |

69 | 70 | 71 | 72 | 73 |
74 | -------------------------------------------------------------------------------- /config.rb: -------------------------------------------------------------------------------- 1 | require 'zurb-foundation' 2 | # Require any additional compass plugins here. 3 | 4 | # Set this to the root of your project when deployed: 5 | http_path = "/" 6 | css_dir = "/" 7 | sass_dir = "sass" 8 | images_dir = "images" 9 | javascripts_dir = "js" 10 | 11 | output_style = :compressed 12 | environment = :development 13 | 14 | # You can select your preferred output style here (can be overridden via the command line): 15 | # output_style = :expanded or :nested or :compact or :compressed 16 | 17 | # To enable relative paths to assets via compass helper functions. Uncomment: 18 | # relative_assets = true 19 | 20 | # To disable debugging comments that display the original location of your selectors. Uncomment: 21 | # line_comments = false 22 | 23 | 24 | # If you prefer the indented syntax, you might want to regenerate this 25 | # project again passing --syntax sass, or you can uncomment this: 26 | # preferred_syntax = :sass 27 | # and then run: 28 | # sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass 29 | -------------------------------------------------------------------------------- /content-page.php: -------------------------------------------------------------------------------- 1 | 8 | 9 |
> 10 |
11 |

12 |
13 | 14 |
15 | 16 | '', 20 | ) ); 21 | ?> 22 |
23 | ', '' ); ?> 24 |
25 | -------------------------------------------------------------------------------- /content-single.php: -------------------------------------------------------------------------------- 1 | 6 | 7 |
> 8 |
9 |

10 | 11 | 14 |
15 | 16 |
17 | 18 | '', 22 | ) ); 23 | ?> 24 |
25 | 26 | 63 |
64 | -------------------------------------------------------------------------------- /content.php: -------------------------------------------------------------------------------- 1 | 6 | 7 |
> 8 |
9 |

10 | 11 | 12 | 15 | 16 |
17 | 18 | 19 |
20 | 21 |
22 | 23 |
24 | →', 'classticket' ) ); ?> 25 | '', 29 | ) ); 30 | ?> 31 |
32 | 33 | 34 | 65 |
66 | -------------------------------------------------------------------------------- /css/normalize.css: -------------------------------------------------------------------------------- 1 | /* normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:0.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace, serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0} 2 | -------------------------------------------------------------------------------- /footer.php: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 21 | 22 | 23 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /functions.php: -------------------------------------------------------------------------------- 1 | __( 'Primary Menu', 'classticket' ), 69 | ) ); 70 | 71 | /** 72 | * Enable support for Post Formats 73 | */ 74 | add_theme_support( 'post-formats', array( 'aside', 'image', 'video', 'quote', 'link' ) ); 75 | } 76 | endif; // classticket_setup 77 | add_action( 'after_setup_theme', 'classticket_setup' ); 78 | 79 | /** 80 | * Setup the WordPress core custom background feature. 81 | * 82 | * Use add_theme_support to register support for WordPress 3.4+ 83 | * as well as provide backward compatibility for WordPress 3.3 84 | * using feature detection of wp_get_theme() which was introduced 85 | * in WordPress 3.4. 86 | * 87 | * @todo Remove the 3.3 support when WordPress 3.6 is released. 88 | * 89 | * Hooks into the after_setup_theme action. 90 | */ 91 | function classticket_register_custom_background() { 92 | $args = array( 93 | 'default-color' => 'ffffff', 94 | 'default-image' => '', 95 | ); 96 | 97 | $args = apply_filters( 'classticket_custom_background_args', $args ); 98 | 99 | if ( function_exists( 'wp_get_theme' ) ) { 100 | add_theme_support( 'custom-background', $args ); 101 | } else { 102 | define( 'BACKGROUND_COLOR', $args['default-color'] ); 103 | if ( ! empty( $args['default-image'] ) ) 104 | define( 'BACKGROUND_IMAGE', $args['default-image'] ); 105 | add_custom_background(); 106 | } 107 | } 108 | add_action( 'after_setup_theme', 'classticket_register_custom_background' ); 109 | 110 | /** 111 | * Register widgetized area and update sidebar with default widgets 112 | */ 113 | function classticket_widgets_init() { 114 | register_sidebar( array( 115 | 'name' => __( 'Sidebar', 'classticket' ), 116 | 'id' => 'sidebar-1', 117 | 'before_widget' => '', 119 | 'before_title' => '

', 120 | 'after_title' => '

', 121 | ) ); 122 | } 123 | add_action( 'widgets_init', 'classticket_widgets_init' ); 124 | 125 | /** 126 | * Enqueue scripts and styles 127 | */ 128 | function classticket_scripts() { 129 | wp_enqueue_style( 'ClassTicket-style', get_stylesheet_uri() ); 130 | 131 | wp_enqueue_script( 'ClassTicket-navigation', get_template_directory_uri() . '/js/vendor/custom.modernizr.js', array(), '20130506' ); 132 | 133 | wp_enqueue_script( 'ClassTicket-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '20120206', true ); 134 | 135 | wp_enqueue_script( 'ClassTicket-skip-link-focus-fix', get_template_directory_uri() . '/js/skip-link-focus-fix.js', array(), '20130115', true ); 136 | 137 | wp_enqueue_script( 'Foundation-Sections', get_template_directory_uri() . '/js/foundation.min.js', array( 'jquery' ), '20130511', true ); 138 | 139 | if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { 140 | wp_enqueue_script( 'comment-reply' ); 141 | } 142 | 143 | if ( is_singular() && wp_attachment_is_image() ) { 144 | wp_enqueue_script( 'ClassTicket-keyboard-image-navigation', get_template_directory_uri() . '/js/keyboard-image-navigation.js', array( 'jquery' ), '20120202' ); 145 | } 146 | } 147 | add_action( 'wp_enqueue_scripts', 'classticket_scripts' ); 148 | 149 | /** 150 | * Implement the Custom Header feature 151 | */ 152 | //require( get_template_directory() . '/inc/custom-header.php' ); 153 | 154 | require_once('lib/foundation.php'); -------------------------------------------------------------------------------- /header.php: -------------------------------------------------------------------------------- 1 | section and everything up till
6 | * 7 | * @package ClassTicket 8 | */ 9 | ?> 10 | > 11 | 12 | 13 | 14 | <?php wp_title( '|', true, 'right' ); ?> 15 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | > 25 |
26 | 27 | 41 | 42 |
43 | -------------------------------------------------------------------------------- /humans.txt: -------------------------------------------------------------------------------- 1 | /* Foundation was made by ZURB, an interaction design and design strategy firm in Campbell, CA */ 2 | /* zurb.com */ 3 | /* humanstxt.org */ 4 | 5 | /* SITE */ 6 | Standards: HTML5, CSS3 7 | Components: jQuery, Orbit, Reveal 8 | Software: Coda, Textmate, Git -------------------------------------------------------------------------------- /image.php: -------------------------------------------------------------------------------- 1 | 10 | 11 |
12 |
13 | 14 | 15 | 16 |
> 17 |
18 |

19 | 20 | 36 | 37 | 41 |
42 | 43 |
44 | 45 |
46 |
47 | $post->post_parent, 54 | 'post_status' => 'inherit', 55 | 'post_type' => 'attachment', 56 | 'post_mime_type' => 'image', 57 | 'order' => 'ASC', 58 | 'orderby' => 'menu_order ID' 59 | ) ) ); 60 | foreach ( $attachments as $k => $attachment ) { 61 | if ( $attachment->ID == $post->ID ) 62 | break; 63 | } 64 | $k++; 65 | // If there is more than 1 attachment in a gallery 66 | if ( count( $attachments ) > 1 ) { 67 | if ( isset( $attachments[ $k ] ) ) 68 | // get the URL of the next image attachment 69 | $next_attachment_url = get_attachment_link( $attachments[ $k ]->ID ); 70 | else 71 | // or get the URL of the first image attachment 72 | $next_attachment_url = get_attachment_link( $attachments[ 0 ]->ID ); 73 | } else { 74 | // or, if there's only 1 image, get the URL of the image 75 | $next_attachment_url = wp_get_attachment_url(); 76 | } 77 | ?> 78 | 79 | ID, $attachment_size ); 82 | ?> 83 |
84 | 85 | post_excerpt ) ) : ?> 86 |
87 | 88 |
89 | 90 |
91 | 92 | 93 | '', 97 | ) ); 98 | ?> 99 | 100 |
101 | 102 |
103 | 104 | Post a comment or leave a trackback: Trackback URL.', 'classticket' ), get_trackback_url() ); ?> 105 | 106 | Trackback URL.', 'classticket' ), get_trackback_url() ); ?> 107 | 108 | post a comment.', 'classticket' ); ?> 109 | 110 | 111 | 112 | ', '' ); ?> 113 |
114 |
115 | 116 | 121 | 122 | 123 | 124 |
125 |
126 | 127 | -------------------------------------------------------------------------------- /inc/custom-header.php: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | * 16 | * @package ClassTicket 17 | */ 18 | 19 | /** 20 | * Setup the WordPress core custom header feature. 21 | * 22 | * Use add_theme_support to register support for WordPress 3.4+ 23 | * as well as provide backward compatibility for previous versions. 24 | * Use feature detection of wp_get_theme() which was introduced 25 | * in WordPress 3.4. 26 | * 27 | * @todo Rework this function to remove WordPress 3.4 support when WordPress 3.6 is released. 28 | * 29 | * @uses classticket_header_style() 30 | * @uses classticket_admin_header_style() 31 | * @uses classticket_admin_header_image() 32 | * 33 | * @package ClassTicket 34 | */ 35 | function classticket_custom_header_setup() { 36 | $args = array( 37 | 'default-image' => '', 38 | 'default-text-color' => '000', 39 | 'width' => 1000, 40 | 'height' => 250, 41 | 'flex-height' => true, 42 | 'wp-head-callback' => 'classticket_header_style', 43 | 'admin-head-callback' => 'classticket_admin_header_style', 44 | 'admin-preview-callback' => 'classticket_admin_header_image', 45 | ); 46 | 47 | $args = apply_filters( 'classticket_custom_header_args', $args ); 48 | 49 | if ( function_exists( 'wp_get_theme' ) ) { 50 | add_theme_support( 'custom-header', $args ); 51 | } else { 52 | // Compat: Versions of WordPress prior to 3.4. 53 | define( 'HEADER_TEXTCOLOR', $args['default-text-color'] ); 54 | define( 'HEADER_IMAGE', $args['default-image'] ); 55 | define( 'HEADER_IMAGE_WIDTH', $args['width'] ); 56 | define( 'HEADER_IMAGE_HEIGHT', $args['height'] ); 57 | add_custom_image_header( $args['wp-head-callback'], $args['admin-head-callback'], $args['admin-preview-callback'] ); 58 | } 59 | } 60 | add_action( 'after_setup_theme', 'classticket_custom_header_setup' ); 61 | 62 | /** 63 | * Shiv for get_custom_header(). 64 | * 65 | * get_custom_header() was introduced to WordPress 66 | * in version 3.4. To provide backward compatibility 67 | * with previous versions, we will define our own version 68 | * of this function. 69 | * 70 | * @todo Remove this function when WordPress 3.6 is released. 71 | * @return stdClass All properties represent attributes of the curent header image. 72 | * 73 | * @package ClassTicket 74 | */ 75 | 76 | if ( ! function_exists( 'get_custom_header' ) ) { 77 | function get_custom_header() { 78 | return (object) array( 79 | 'url' => get_header_image(), 80 | 'thumbnail_url' => get_header_image(), 81 | 'width' => HEADER_IMAGE_WIDTH, 82 | 'height' => HEADER_IMAGE_HEIGHT, 83 | ); 84 | } 85 | } 86 | 87 | if ( ! function_exists( 'classticket_header_style' ) ) : 88 | /** 89 | * Styles the header image and text displayed on the blog 90 | * 91 | * @see classticket_custom_header_setup(). 92 | */ 93 | function classticket_header_style() { 94 | 95 | // If no custom options for text are set, let's bail 96 | // get_header_textcolor() options: HEADER_TEXTCOLOR is default, hide text (returns 'blank') or any hex value 97 | if ( HEADER_TEXTCOLOR == get_header_textcolor() ) 98 | return; 99 | // If we get this far, we have custom styles. Let's do this. 100 | ?> 101 | 122 | Header admin panel. 129 | * 130 | * @see classticket_custom_header_setup(). 131 | */ 132 | function classticket_admin_header_style() { 133 | ?> 134 | 150 | Header admin panel. 157 | * 158 | * @see classticket_custom_header_setup(). 159 | */ 160 | function classticket_admin_header_image() { ?> 161 |
162 | 168 |

onclick="return false;" href="">

169 |
>
170 | 172 | 173 | 174 |
175 | get_setting( 'blogname' )->transport = 'postMessage'; 15 | $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; 16 | $wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage'; 17 | } 18 | add_action( 'customize_register', 'classticket_customize_register' ); 19 | 20 | /** 21 | * Binds JS handlers to make Theme Customizer preview reload changes asynchronously. 22 | */ 23 | function classticket_customize_preview_js() { 24 | wp_enqueue_script( 'classticket_customizer', get_template_directory_uri() . '/js/customizer.js', array( 'customize-preview' ), '20130304', true ); 25 | } 26 | add_action( 'customize_preview_init', 'classticket_customize_preview_js' ); 27 | -------------------------------------------------------------------------------- /inc/extras.php: -------------------------------------------------------------------------------- 1 | post_parent ) && $image->post_parent != $id ) 41 | $url .= '#main'; 42 | 43 | return $url; 44 | } 45 | add_filter( 'attachment_link', 'classticket_enhanced_image_navigation', 10, 2 ); 46 | 47 | /** 48 | * Filters wp_title to print a neat tag based on what is being viewed. 49 | */ 50 | function classticket_wp_title( $title, $sep ) { 51 | global $page, $paged; 52 | 53 | if ( is_feed() ) 54 | return $title; 55 | 56 | // Add the blog name 57 | $title .= get_bloginfo( 'name' ); 58 | 59 | // Add the blog description for the home/front page. 60 | $site_description = get_bloginfo( 'description', 'display' ); 61 | if ( $site_description && ( is_home() || is_front_page() ) ) 62 | $title .= " $sep $site_description"; 63 | 64 | // Add a page number if necessary: 65 | if ( $paged >= 2 || $page >= 2 ) 66 | $title .= " $sep " . sprintf( __( 'Page %s', 'classticket' ), max( $paged, $page ) ); 67 | 68 | return $title; 69 | } 70 | add_filter( 'wp_title', 'classticket_wp_title', 10, 2 ); -------------------------------------------------------------------------------- /inc/jetpack.php: -------------------------------------------------------------------------------- 1 | <?php 2 | /** 3 | * Jetpack Compatibility File 4 | * See: http://jetpack.me/ 5 | * 6 | * @package ClassTicket 7 | */ 8 | 9 | /** 10 | * Add theme support for Infinite Scroll. 11 | * See: http://jetpack.me/support/infinite-scroll/ 12 | */ 13 | function classticket_infinite_scroll_setup() { 14 | add_theme_support( 'infinite-scroll', array( 15 | 'container' => 'content', 16 | 'footer' => 'page', 17 | ) ); 18 | } 19 | add_action( 'after_setup_theme', 'classticket_infinite_scroll_setup' ); 20 | -------------------------------------------------------------------------------- /inc/template-tags.php: -------------------------------------------------------------------------------- 1 | <?php 2 | /** 3 | * Custom template tags for this theme. 4 | * 5 | * Eventually, some of the functionality here could be replaced by core features 6 | * 7 | * @package ClassTicket 8 | */ 9 | 10 | if ( ! function_exists( 'classticket_content_nav' ) ) : 11 | /** 12 | * Display navigation to next/previous pages when applicable 13 | */ 14 | function classticket_content_nav( $nav_id ) { 15 | global $wp_query, $post; 16 | 17 | // Don't print empty markup on single pages if there's nowhere to navigate. 18 | if ( is_single() ) { 19 | $previous = ( is_attachment() ) ? get_post( $post->post_parent ) : get_adjacent_post( false, '', true ); 20 | $next = get_adjacent_post( false, '', false ); 21 | 22 | if ( ! $next && ! $previous ) 23 | return; 24 | } 25 | 26 | // Don't print empty markup in archives if there's only one page. 27 | if ( $wp_query->max_num_pages < 2 && ( is_home() || is_archive() || is_search() ) ) 28 | return; 29 | 30 | $nav_class = ( is_single() ) ? 'navigation-post' : 'navigation-paging'; 31 | 32 | ?> 33 | <nav role="navigation" id="<?php echo esc_attr( $nav_id ); ?>" class="<?php echo $nav_class; ?>"> 34 | <h1 class="screen-reader-text"><?php _e( 'Post navigation', 'classticket' ); ?></h1> 35 | 36 | <?php if ( is_single() ) : // navigation links for single posts ?> 37 | 38 | <?php previous_post_link( '<div class="nav-previous">%link</div>', '<span class="meta-nav">' . _x( '←', 'Previous post link', 'classticket' ) . '</span> %title' ); ?> 39 | <?php next_post_link( '<div class="nav-next">%link</div>', '%title <span class="meta-nav">' . _x( '→', 'Next post link', 'classticket' ) . '</span>' ); ?> 40 | 41 | <?php elseif ( $wp_query->max_num_pages > 1 && ( is_home() || is_archive() || is_search() ) ) : // navigation links for home, archive, and search pages ?> 42 | 43 | <?php if ( get_next_posts_link() ) : ?> 44 | <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'classticket' ) ); ?></div> 45 | <?php endif; ?> 46 | 47 | <?php if ( get_previous_posts_link() ) : ?> 48 | <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'classticket' ) ); ?></div> 49 | <?php endif; ?> 50 | 51 | <?php endif; ?> 52 | 53 | </nav><!-- #<?php echo esc_html( $nav_id ); ?> --> 54 | <?php 55 | } 56 | endif; // classticket_content_nav 57 | 58 | if ( ! function_exists( 'classticket_comment' ) ) : 59 | /** 60 | * Template for comments and pingbacks. 61 | * 62 | * Used as a callback by wp_list_comments() for displaying the comments. 63 | */ 64 | function classticket_comment( $comment, $args, $depth ) { 65 | $GLOBALS['comment'] = $comment; 66 | switch ( $comment->comment_type ) : 67 | case 'pingback' : 68 | case 'trackback' : 69 | ?> 70 | <li class="post pingback"> 71 | <p><?php _e( 'Pingback:', 'classticket' ); ?> <?php comment_author_link(); ?><?php edit_comment_link( __( 'Edit', 'classticket' ), '<span class="edit-link">', '<span>' ); ?></p> 72 | <?php 73 | break; 74 | default : 75 | ?> 76 | <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>"> 77 | <article id="comment-<?php comment_ID(); ?>" class="comment"> 78 | <footer> 79 | <div class="comment-author vcard"> 80 | <?php echo get_avatar( $comment, 40 ); ?> 81 | <?php printf( __( '%s <span class="says">says:</span>', 'classticket' ), sprintf( '<cite class="fn">%s</cite>', get_comment_author_link() ) ); ?> 82 | </div><!-- .comment-author .vcard --> 83 | <?php if ( $comment->comment_approved == '0' ) : ?> 84 | <em><?php _e( 'Your comment is awaiting moderation.', 'classticket' ); ?></em> 85 | <br /> 86 | <?php endif; ?> 87 | 88 | <div class="comment-meta commentmetadata"> 89 | <a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>"><time datetime="<?php comment_time( 'c' ); ?>"> 90 | <?php printf( _x( '%1$s at %2$s', '1: date, 2: time', 'classticket' ), get_comment_date(), get_comment_time() ); ?> 91 | </time></a> 92 | <?php edit_comment_link( __( 'Edit', 'classticket' ), '<span class="edit-link">', '<span>' ); ?> 93 | </div><!-- .comment-meta .commentmetadata --> 94 | </footer> 95 | 96 | <div class="comment-content"><?php comment_text(); ?></div> 97 | 98 | <div class="reply"> 99 | <?php 100 | comment_reply_link( array_merge( $args,array( 101 | 'depth' => $depth, 102 | 'max_depth' => $args['max_depth'], 103 | ) ) ); 104 | ?> 105 | </div><!-- .reply --> 106 | </article><!-- #comment-## --> 107 | 108 | <?php 109 | break; 110 | endswitch; 111 | } 112 | endif; // ends check for classticket_comment() 113 | 114 | if ( ! function_exists( 'classticket_posted_on' ) ) : 115 | /** 116 | * Prints HTML with meta information for the current post-date/time and author. 117 | */ 118 | function classticket_posted_on() { 119 | printf( __( 'Posted on <a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s">%4$s</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="%5$s" title="%6$s" rel="author">%7$s</a></span></span>', 'classticket' ), 120 | esc_url( get_permalink() ), 121 | esc_attr( get_the_time() ), 122 | esc_attr( get_the_date( 'c' ) ), 123 | esc_html( get_the_date() ), 124 | esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), 125 | esc_attr( sprintf( __( 'View all posts by %s', 'classticket' ), get_the_author() ) ), 126 | get_the_author() 127 | ); 128 | } 129 | endif; 130 | /** 131 | * Returns true if a blog has more than 1 category 132 | */ 133 | function classticket_categorized_blog() { 134 | if ( false === ( $all_the_cool_cats = get_transient( 'all_the_cool_cats' ) ) ) { 135 | // Create an array of all the categories that are attached to posts 136 | $all_the_cool_cats = get_categories( array( 137 | 'hide_empty' => 1, 138 | ) ); 139 | 140 | // Count the number of categories that are attached to the posts 141 | $all_the_cool_cats = count( $all_the_cool_cats ); 142 | 143 | set_transient( 'all_the_cool_cats', $all_the_cool_cats ); 144 | } 145 | 146 | if ( '1' != $all_the_cool_cats ) { 147 | // This blog has more than 1 category so classticket_categorized_blog should return true 148 | return true; 149 | } else { 150 | // This blog has only 1 category so classticket_categorized_blog should return false 151 | return false; 152 | } 153 | } 154 | 155 | /** 156 | * Flush out the transients used in classticket_categorized_blog 157 | */ 158 | function classticket_category_transient_flusher() { 159 | // Like, beat it. Dig? 160 | delete_transient( 'all_the_cool_cats' ); 161 | } 162 | add_action( 'edit_category', 'classticket_category_transient_flusher' ); 163 | add_action( 'save_post', 'classticket_category_transient_flusher' ); -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | <!DOCTYPE html> 3 | <!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]--> 4 | <!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]--> 5 | 6 | <head> 7 | <meta charset="utf-8" /> 8 | <meta name="viewport" content="width=device-width" /> 9 | <title>Foundation 4 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 |
22 |

Welcome to Foundation

23 |

This is version 4.0.0.rc1.

24 |
25 |
26 |
27 | 28 |
29 |
30 |

The Grid

31 | 32 | 33 |
34 |
35 |
36 |

This is a twelve column section in a row. Each of these includes a div.panel element so you can see where the columns are - it's not required at all for the grid.

37 |
38 |
39 |
40 |
41 |
42 |
43 |

Six columns

44 |
45 |
46 |
47 |
48 |

Six columns

49 |
50 |
51 |
52 |
53 |
54 |
55 |

Four columns

56 |
57 |
58 |
59 |
60 |

Four columns

61 |
62 |
63 |
64 |
65 |

Four columns

66 |
67 |
68 |
69 | 70 |

Buttons

71 | 72 | 84 |
85 | 86 |
87 |

Getting Started

88 |

We're stoked you want to try Foundation! To get going, this file (index.html) includes some basic styles you can modify, play around with, or totally destroy to get going.

89 | 90 |

Other Resources

91 |

Once you've exhausted the fun in this document, you should check out:

92 |
    93 |
  • Foundation Documentation
    Everything you need to know about using the framework.
  • 94 |
  • Foundation on Github
    Latest code, issue reports, feature requests and more.
  • 95 |
  • @foundationzurb
    Ping us on Twitter if you have questions. If you build something with this we'd love to see it (and send you a totally boss sticker).
  • 96 |
97 |
98 |
99 | 100 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | 15 | 16 |
17 |
18 | 19 | 20 | 21 | 22 | 23 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
49 |
50 | 51 | 52 | -------------------------------------------------------------------------------- /js/customizer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Theme Customizer enhancements for a better user experience. 3 | * 4 | * Contains handlers to make Theme Customizer preview reload changes asynchronously. 5 | */ 6 | 7 | ( function( $ ) { 8 | // Site title and description. 9 | wp.customize( 'blogname', function( value ) { 10 | value.bind( function( to ) { 11 | $( '.site-title a' ).text( to ); 12 | } ); 13 | } ); 14 | wp.customize( 'blogdescription', function( value ) { 15 | value.bind( function( to ) { 16 | $( '.site-description' ).text( to ); 17 | } ); 18 | } ); 19 | // Header text color. 20 | wp.customize( 'header_textcolor', function( value ) { 21 | value.bind( function( to ) { 22 | $( '.site-title a, .site-description' ).css( 'color', to ); 23 | } ); 24 | } ); 25 | } )( jQuery ); -------------------------------------------------------------------------------- /js/foundation/foundation.alerts.js: -------------------------------------------------------------------------------- 1 | /*jslint unparam: true, browser: true, indent: 2 */ 2 | 3 | ;(function ($, window, document, undefined) { 4 | 'use strict'; 5 | 6 | Foundation.libs.alerts = { 7 | name : 'alerts', 8 | 9 | version : '4.0.0', 10 | 11 | settings : { 12 | speed: 300, // fade out speed 13 | callback: function (){} 14 | }, 15 | 16 | init : function (scope, method, options) { 17 | this.scope = scope || this.scope; 18 | 19 | if (typeof method === 'object') { 20 | $.extend(true, this.settings, method); 21 | } 22 | 23 | if (typeof method != 'string') { 24 | if (!this.settings.init) this.events(); 25 | 26 | return this.settings.init; 27 | } else { 28 | return this[method].call(this, options); 29 | } 30 | }, 31 | 32 | events : function () { 33 | var self = this; 34 | 35 | $(this.scope).on('click.fndtn.alerts', '[data-alert] a.close', function (e) { 36 | e.preventDefault(); 37 | $(this).closest("[data-alert]").fadeOut(self.speed, function () { 38 | $(this).remove(); 39 | self.settings.callback(); 40 | }); 41 | }); 42 | 43 | this.settings.init = true; 44 | }, 45 | 46 | off : function () { 47 | $(this.scope).off('.fndtn.alerts'); 48 | } 49 | }; 50 | }(Foundation.zj, this, this.document)); -------------------------------------------------------------------------------- /js/foundation/foundation.cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery Cookie Plugin v1.3 3 | * https://github.com/carhartl/jquery-cookie 4 | * 5 | * Copyright 2011, Klaus Hartl 6 | * Dual licensed under the MIT or GPL Version 2 licenses. 7 | * http://www.opensource.org/licenses/mit-license.php 8 | * http://www.opensource.org/licenses/GPL-2.0 9 | * 10 | * Modified to work with Zepto.js by ZURB 11 | */ 12 | (function ($, document, undefined) { 13 | 14 | var pluses = /\+/g; 15 | 16 | function raw(s) { 17 | return s; 18 | } 19 | 20 | function decoded(s) { 21 | return decodeURIComponent(s.replace(pluses, ' ')); 22 | } 23 | 24 | var config = $.cookie = function (key, value, options) { 25 | 26 | // write 27 | if (value !== undefined) { 28 | options = $.extend({}, config.defaults, options); 29 | 30 | if (value === null) { 31 | options.expires = -1; 32 | } 33 | 34 | if (typeof options.expires === 'number') { 35 | var days = options.expires, t = options.expires = new Date(); 36 | t.setDate(t.getDate() + days); 37 | } 38 | 39 | value = config.json ? JSON.stringify(value) : String(value); 40 | 41 | return (document.cookie = [ 42 | encodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value), 43 | options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 44 | options.path ? '; path=' + options.path : '', 45 | options.domain ? '; domain=' + options.domain : '', 46 | options.secure ? '; secure' : '' 47 | ].join('')); 48 | } 49 | 50 | // read 51 | var decode = config.raw ? raw : decoded; 52 | var cookies = document.cookie.split('; '); 53 | for (var i = 0, l = cookies.length; i < l; i++) { 54 | var parts = cookies[i].split('='); 55 | if (decode(parts.shift()) === key) { 56 | var cookie = decode(parts.join('=')); 57 | return config.json ? JSON.parse(cookie) : cookie; 58 | } 59 | } 60 | 61 | return null; 62 | }; 63 | 64 | config.defaults = {}; 65 | 66 | $.removeCookie = function (key, options) { 67 | if ($.cookie(key) !== null) { 68 | $.cookie(key, null, options); 69 | return true; 70 | } 71 | return false; 72 | }; 73 | 74 | })(Foundation.zj, document); -------------------------------------------------------------------------------- /js/foundation/foundation.dropdown.js: -------------------------------------------------------------------------------- 1 | /*jslint unparam: true, browser: true, indent: 2 */ 2 | 3 | ;(function ($, window, document, undefined) { 4 | 'use strict'; 5 | 6 | Foundation.libs.dropdown = { 7 | name : 'dropdown', 8 | 9 | version : '4.0.0', 10 | 11 | settings : { 12 | activeClass: 'open' 13 | }, 14 | 15 | init : function (scope, method, options) { 16 | this.scope = scope || this.scope; 17 | Foundation.inherit(this, 'throttle'); 18 | 19 | if (typeof method === 'object') { 20 | $.extend(true, this.settings, method); 21 | } 22 | 23 | if (typeof method != 'string') { 24 | 25 | if (!this.settings.init) { 26 | this.events(); 27 | } 28 | 29 | return this.settings.init; 30 | } else { 31 | return this[method].call(this, options); 32 | } 33 | }, 34 | 35 | events : function () { 36 | var self = this; 37 | 38 | $(this.scope).on('click.fndtn.dropdown', '[data-dropdown]', function (e) { 39 | e.preventDefault(); 40 | e.stopPropagation(); 41 | self.toggle($(this)); 42 | }); 43 | 44 | $('*, html, body').on('click.fndtn.dropdown', function (e) { 45 | if (!$(e.target).data('dropdown')) { 46 | $('[data-dropdown-content]') 47 | .css('left', '-99999px') 48 | .removeClass(self.settings.activeClass); 49 | } 50 | }); 51 | 52 | $('[data-dropdown-content]').on('click.fndtn.dropdown', function (e) { 53 | e.stopPropagation(); 54 | }); 55 | 56 | $(window).on('resize.fndtn.dropdown', self.throttle(function () { 57 | self.resize.call(self); 58 | }, 50)).trigger('resize'); 59 | 60 | this.settings.init = true; 61 | }, 62 | 63 | toggle : function (target, resize) { 64 | var dropdown = $('#' + target.data('dropdown')); 65 | 66 | $('[data-dropdown-content]').not(dropdown).css('left', '-99999px'); 67 | 68 | if (dropdown.hasClass(this.settings.activeClass)) { 69 | dropdown 70 | .css('left', '-99999px') 71 | .removeClass(this.settings.activeClass); 72 | } else { 73 | this 74 | .css(dropdown 75 | .addClass(this.settings.activeClass), target); 76 | } 77 | }, 78 | 79 | resize : function () { 80 | var dropdown = $('[data-dropdown-content].open'), 81 | target = $("[data-dropdown='" + dropdown.attr('id') + "']"); 82 | 83 | if (dropdown.length && target.length) { 84 | this.css(dropdown, target); 85 | } 86 | }, 87 | 88 | css : function (dropdown, target) { 89 | var offset = target.offset(); 90 | 91 | if (this.small()) { 92 | dropdown.css({ 93 | position : 'absolute', 94 | width: '95%', 95 | left: '2.5%', 96 | 'max-width': 'none', 97 | top: offset.top + this.outerHeight(target), 98 | }); 99 | } else { 100 | dropdown.attr('style', '').css({ 101 | position : 'absolute', 102 | top: offset.top + this.outerHeight(target), 103 | left: offset.left 104 | }); 105 | } 106 | 107 | return dropdown; 108 | }, 109 | 110 | small : function () { 111 | return $(window).width() < 768 || $('html').hasClass('lt-ie9'); 112 | }, 113 | 114 | off: function () { 115 | $(this.scope).off('.fndtn.dropdown'); 116 | $('html, body').off('.fndtn.dropdown'); 117 | $(window).off('.fndtn.dropdown'); 118 | $('[data-dropdown-content]').off('.fndtn.dropdown'); 119 | this.settings.init = false; 120 | } 121 | }; 122 | }(Foundation.zj, this, this.document)); 123 | -------------------------------------------------------------------------------- /js/foundation/foundation.forms.js: -------------------------------------------------------------------------------- 1 | /*jslint unparam: true, browser: true, indent: 2 */ 2 | 3 | ;(function ($, window, document, undefined) { 4 | 'use strict'; 5 | 6 | Foundation.libs.forms = { 7 | name : 'forms', 8 | 9 | version : '4.0.0', 10 | 11 | settings : { 12 | disable_class: 'no-custom' 13 | }, 14 | 15 | init : function (scope, method, options) { 16 | this.scope = scope || this.scope; 17 | 18 | if (typeof method === 'object') { 19 | $.extend(true, this.settings, method); 20 | } 21 | 22 | if (typeof method != 'string') { 23 | if (!this.settings.init) { 24 | this.events(); 25 | } 26 | 27 | this.assemble(); 28 | 29 | return this.settings.init; 30 | } else { 31 | return this[method].call(this, options); 32 | } 33 | }, 34 | 35 | assemble : function () { 36 | $('form.custom input[type="radio"]').not('[data-customforms="disabled"]') 37 | .each(this.append_custom_markup); 38 | $('form.custom input[type="checkbox"]').not('[data-customforms="disabled"]') 39 | .each(this.append_custom_markup); 40 | $('form.custom select').not('[data-customforms="disabled"]') 41 | .each(this.append_custom_select); 42 | }, 43 | 44 | events : function () { 45 | var self = this; 46 | 47 | $(this.scope) 48 | .on('click.fndtn.forms', 'form.custom span.custom.checkbox', function (e) { 49 | e.preventDefault(); 50 | e.stopPropagation(); 51 | self.toggle_checkbox($(this)); 52 | }) 53 | .on('click.fndtn.forms', 'form.custom span.custom.radio', function (e) { 54 | e.preventDefault(); 55 | e.stopPropagation(); 56 | self.toggle_radio($(this)); 57 | }) 58 | .on('change.fndtn.forms', 'form.custom select:not([data-customforms="disabled"])', function (e) { 59 | self.refresh_custom_select($(this)); 60 | }) 61 | .on('click.fndtn.forms', 'form.custom label', function (e) { 62 | var $associatedElement = $('#' + self.escape($(this).attr('for')) + ':not([data-customforms="disabled"])'), 63 | $customCheckbox, 64 | $customRadio; 65 | if ($associatedElement.length !== 0) { 66 | if ($associatedElement.attr('type') === 'checkbox') { 67 | e.preventDefault(); 68 | $customCheckbox = $(this).find('span.custom.checkbox'); 69 | //the checkbox might be outside after the label 70 | if ($customCheckbox.length == 0) { 71 | $customCheckbox = $(this).next('span.custom.checkbox'); 72 | } 73 | //the checkbox might be outside before the label 74 | if ($customCheckbox.length == 0) { 75 | $customCheckbox = $(this).prev('span.custom.checkbox'); 76 | } 77 | self.toggle_checkbox($customCheckbox); 78 | } else if ($associatedElement.attr('type') === 'radio') { 79 | e.preventDefault(); 80 | $customRadio = $(this).find('span.custom.radio'); 81 | //the radio might be outside after the label 82 | if ($customRadio.length == 0) { 83 | $customRadio = $(this).next('span.custom.radio'); 84 | } 85 | //the radio might be outside before the label 86 | if ($customRadio.length == 0) { 87 | $customRadio = $(this).prev('span.custom.radio'); 88 | } 89 | self.toggle_radio($customRadio); 90 | } 91 | } 92 | }) 93 | .on('click.fndtn.forms', 'form.custom div.custom.dropdown a.current, form.custom div.custom.dropdown a.selector', function (e) { 94 | var $this = $(this), 95 | $dropdown = $this.closest('div.custom.dropdown'), 96 | $select = $dropdown.prev(); 97 | 98 | // make sure other dropdowns close 99 | if(!$dropdown.hasClass('open')) 100 | $(self.scope).trigger('click'); 101 | 102 | e.preventDefault(); 103 | if (false === $select.is(':disabled')) { 104 | $dropdown.toggleClass('open'); 105 | 106 | if ($dropdown.hasClass('open')) { 107 | $(self.scope).on('click.fndtn.forms.customdropdown', function () { 108 | $dropdown.removeClass('open'); 109 | $(self.scope).off('.fndtn.forms.customdropdown'); 110 | }); 111 | } else { 112 | $(self.scope).on('.fndtn.forms.customdropdown'); 113 | } 114 | return false; 115 | } 116 | }) 117 | .on('click.fndtn.forms touchend.fndtn.forms', 'form.custom div.custom.dropdown li', function (e) { 118 | var $this = $(this), 119 | $customDropdown = $this.closest('div.custom.dropdown'), 120 | $select = $customDropdown.prev(), 121 | selectedIndex = 0; 122 | 123 | e.preventDefault(); 124 | e.stopPropagation(); 125 | 126 | if ( ! $(this).hasClass('disabled')) { 127 | $('div.dropdown').not($customDropdown).removeClass('open'); 128 | 129 | var $oldThis= $this 130 | .closest('ul') 131 | .find('li.selected'); 132 | $oldThis.removeClass('selected'); 133 | 134 | $this.addClass('selected'); 135 | 136 | $customDropdown 137 | .removeClass('open') 138 | .find('a.current') 139 | .html($this.html()); 140 | 141 | $this.closest('ul').find('li').each(function (index) { 142 | if ($this[0] == this) { 143 | selectedIndex = index; 144 | } 145 | 146 | }); 147 | $select[0].selectedIndex = selectedIndex; 148 | 149 | //store the old value in data 150 | $select.data('prevalue', $oldThis.html()); 151 | $select.trigger('change'); 152 | } 153 | }); 154 | 155 | this.settings.init = true; 156 | }, 157 | 158 | append_custom_markup : function (idx, sel) { 159 | var $this = $(sel).hide(), 160 | type = $this.attr('type'), 161 | $span = $this.next('span.custom.' + type); 162 | 163 | if ($span.length === 0) { 164 | $span = $('').insertAfter($this); 165 | } 166 | 167 | $span.toggleClass('checked', $this.is(':checked')); 168 | $span.toggleClass('disabled', $this.is(':disabled')); 169 | }, 170 | 171 | append_custom_select : function (idx, sel) { 172 | var self = Foundation.libs.forms, 173 | $this = $( sel ), 174 | $customSelect = $this.next( 'div.custom.dropdown' ), 175 | $customList = $customSelect.find( 'ul' ), 176 | $selectCurrent = $customSelect.find( ".current" ), 177 | $selector = $customSelect.find( ".selector" ), 178 | $options = $this.find( 'option' ), 179 | $selectedOption = $options.filter( ':selected' ), 180 | maxWidth = 0, 181 | liHtml = '', 182 | $listItems, 183 | $currentSelect = false; 184 | 185 | if ($this.hasClass(self.settings.disable_class)) return; 186 | 187 | if ($customSelect.length === 0) { 188 | var customSelectSize = $this.hasClass( 'small' ) ? 'small' : 189 | $this.hasClass( 'medium' ) ? 'medium' : 190 | $this.hasClass( 'large' ) ? 'large' : 191 | $this.hasClass( 'expand' ) ? 'expand' : ''; 192 | 193 | $customSelect = $('
    '); 194 | $selector = $customSelect.find(".selector"); 195 | $customList = $customSelect.find("ul"); 196 | liHtml = $options.map(function() { return "
  • " + $( this ).html() + "
  • "; } ).get().join( '' ); 197 | $customList.append(liHtml); 198 | $currentSelect = $customSelect.prepend('' + $selectedOption.html() + '' ).find( ".current" ); 199 | $this 200 | .after( $customSelect ) 201 | .hide(); 202 | 203 | } else { 204 | liHtml = $options.map(function() { 205 | return "
  • " + $( this ).html() + "
  • "; 206 | }) 207 | .get().join(''); 208 | $customList 209 | .html('') 210 | .append(liHtml); 211 | 212 | } // endif $customSelect.length === 0 213 | $customSelect.toggleClass('disabled', $this.is( ':disabled' ) ); 214 | $listItems = $customList.find( 'li' ); 215 | 216 | $options.each( function ( index ) { 217 | if ( this.selected ) { 218 | $listItems.eq( index ).addClass( 'selected' ); 219 | 220 | if ($currentSelect) { 221 | $currentSelect.html( $( this ).html() ); 222 | } 223 | 224 | } 225 | if ($(this).is(':disabled')) { 226 | $listItems.eq( index ).addClass( 'disabled' ); 227 | } 228 | }); 229 | 230 | // 231 | // If we're not specifying a predetermined form size. 232 | // 233 | if (!$customSelect.is('.small, .medium, .large, .expand')) { 234 | 235 | // ------------------------------------------------------------------------------------ 236 | // This is a work-around for when elements are contained within hidden parents. 237 | // For example, when custom-form elements are inside of a hidden reveal modal. 238 | // 239 | // We need to display the current custom list element as well as hidden parent elements 240 | // in order to properly calculate the list item element's width property. 241 | // ------------------------------------------------------------------------------------- 242 | 243 | $customSelect.addClass( 'open' ); 244 | // 245 | // Quickly, display all parent elements. 246 | // This should help us calcualate the width of the list item's within the drop down. 247 | // 248 | var self = Foundation.libs.forms; 249 | self.hidden_fix.adjust( $customList ); 250 | 251 | maxWidth = ( self.outerWidth($listItems) > maxWidth ) ? self.outerWidth($listItems) : maxWidth; 252 | 253 | Foundation.libs.forms.hidden_fix.reset(); 254 | 255 | $customSelect.removeClass( 'open' ); 256 | 257 | } // endif 258 | 259 | }, 260 | 261 | refresh_custom_select : function ($select) { 262 | var self = this; 263 | var maxWidth = 0, 264 | $customSelect = $select.next(), 265 | $options = $select.find('option'); 266 | 267 | $customSelect.find('ul').html(''); 268 | 269 | $options.each(function () { 270 | var $li = $('
  • ' + $(this).html() + '
  • '); 271 | $customSelect.find('ul').append($li); 272 | }); 273 | 274 | // re-populate 275 | $options.each(function (index) { 276 | if (this.selected) { 277 | $customSelect.find('li').eq(index).addClass('selected'); 278 | $customSelect.find('.current').html($(this).html()); 279 | } 280 | if ($(this).is(':disabled')) { 281 | $customSelect.find('li').eq(index).addClass('disabled'); 282 | } 283 | }); 284 | 285 | // fix width 286 | $customSelect.removeAttr('style') 287 | .find('ul').removeAttr('style'); 288 | $customSelect.find('li').each(function () { 289 | $customSelect.addClass('open'); 290 | if (self.outerWidth($(this)) > maxWidth) { 291 | maxWidth = self.outerWidth($(this)); 292 | } 293 | $customSelect.removeClass('open'); 294 | }); 295 | }, 296 | 297 | toggle_checkbox : function ($element) { 298 | var $input = $element.prev(), 299 | input = $input[0]; 300 | 301 | if (false === $input.is(':disabled')) { 302 | input.checked = ((input.checked) ? false : true); 303 | $element.toggleClass('checked'); 304 | 305 | $input.trigger('change'); 306 | } 307 | }, 308 | 309 | toggle_radio : function ($element) { 310 | var $input = $element.prev(), 311 | $form = $input.closest('form.custom'), 312 | input = $input[0]; 313 | 314 | if (false === $input.is(':disabled')) { 315 | $form.find('input[type="radio"][name="' + this.escape($input.attr('name')) + '"]').next().not($element).removeClass('checked'); 316 | if ( !$element.hasClass('checked') ) { 317 | $element.toggleClass('checked'); 318 | } 319 | input.checked = $element.hasClass('checked'); 320 | 321 | $input.trigger('change'); 322 | } 323 | }, 324 | 325 | escape : function (text) { 326 | return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); 327 | }, 328 | 329 | hidden_fix : { 330 | /** 331 | * Sets all hidden parent elements and self to visibile. 332 | * 333 | * @method adjust 334 | * @param {jQuery Object} $child 335 | */ 336 | 337 | // We'll use this to temporarily store style properties. 338 | tmp : [], 339 | 340 | // We'll use this to set hidden parent elements. 341 | hidden : null, 342 | 343 | adjust : function( $child ) { 344 | // Internal reference. 345 | var _self = this; 346 | 347 | // Set all hidden parent elements, including this element. 348 | _self.hidden = $child.parents().andSelf().filter( ":hidden" ); 349 | 350 | // Loop through all hidden elements. 351 | _self.hidden.each( function() { 352 | 353 | // Cache the element. 354 | var $elem = $( this ); 355 | 356 | // Store the style attribute. 357 | // Undefined if element doesn't have a style attribute. 358 | _self.tmp.push( $elem.attr( 'style' ) ); 359 | 360 | // Set the element's display property to block, 361 | // but ensure it's visibility is hidden. 362 | $elem.css( { 'visibility' : 'hidden', 'display' : 'block' } ); 363 | }); 364 | 365 | }, // end adjust 366 | 367 | /** 368 | * Resets the elements previous state. 369 | * 370 | * @method reset 371 | */ 372 | reset : function() { 373 | // Internal reference. 374 | var _self = this; 375 | // Loop through our hidden element collection. 376 | _self.hidden.each( function( i ) { 377 | // Cache this element. 378 | var $elem = $( this ), 379 | _tmp = _self.tmp[ i ]; // Get the stored 'style' value for this element. 380 | 381 | // If the stored value is undefined. 382 | if( _tmp === undefined ) 383 | // Remove the style attribute. 384 | $elem.removeAttr( 'style' ); 385 | else 386 | // Otherwise, reset the element style attribute. 387 | $elem.attr( 'style', _tmp ); 388 | 389 | }); 390 | // Reset the tmp array. 391 | _self.tmp = []; 392 | // Reset the hidden elements variable. 393 | _self.hidden = null; 394 | 395 | } // end reset 396 | 397 | }, 398 | 399 | off : function () { 400 | $(this.scope).off('.fndtn.forms'); 401 | } 402 | }; 403 | }(Foundation.zj, this, this.document)); -------------------------------------------------------------------------------- /js/foundation/foundation.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Foundation Responsive Library 4.0.0 3 | * http://foundation.zurb.com 4 | * Copyright 2013, ZURB 5 | * Free to use under the MIT license. 6 | * http://www.opensource.org/licenses/mit-license.php 7 | */ 8 | 9 | /*jslint unparam: true, browser: true, indent: 2 */ 10 | 11 | (function () { 12 | // add dusty browser stuff 13 | if (!Array.prototype.filter) { 14 | Array.prototype.filter = function(fun /*, thisp */) { 15 | "use strict"; 16 | 17 | if (this == null) { 18 | throw new TypeError(); 19 | } 20 | 21 | var t = Object(this), 22 | len = t.length >>> 0; 23 | if (typeof fun != "function") { 24 | try { 25 | throw new TypeError(); 26 | } catch (e) { 27 | return; 28 | } 29 | } 30 | 31 | var res = [], 32 | thisp = arguments[1]; 33 | for (var i = 0; i < len; i++) { 34 | if (i in t) { 35 | var val = t[i]; // in case fun mutates this 36 | if (fun && fun.call(thisp, val, i, t)) { 37 | res.push(val); 38 | } 39 | } 40 | } 41 | 42 | return res; 43 | }; 44 | 45 | if (!Function.prototype.bind) { 46 | Function.prototype.bind = function (oThis) { 47 | if (typeof this !== "function") { 48 | // closest thing possible to the ECMAScript 5 internal IsCallable function 49 | throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable"); 50 | } 51 | 52 | var aArgs = Array.prototype.slice.call(arguments, 1), 53 | fToBind = this, 54 | fNOP = function () {}, 55 | fBound = function () { 56 | return fToBind.apply(this instanceof fNOP && oThis 57 | ? this 58 | : oThis, 59 | aArgs.concat(Array.prototype.slice.call(arguments))); 60 | }; 61 | 62 | fNOP.prototype = this.prototype; 63 | fBound.prototype = new fNOP(); 64 | 65 | return fBound; 66 | }; 67 | } 68 | } 69 | 70 | // fake stop() for zepto. 71 | $.fn.stop = $.fn.stop || function() { 72 | return this; 73 | }; 74 | }()); 75 | 76 | ;(function (window, document, undefined) { 77 | 'use strict'; 78 | 79 | window.Foundation = { 80 | name : 'Foundation', 81 | 82 | version : '4.0.0', 83 | 84 | // global Foundation cache object 85 | cache : {}, 86 | 87 | init : function (scope, libraries, method, options, response, /* internal */ nc) { 88 | var library_arr, 89 | args = [scope, method, options, response], 90 | responses = [], 91 | nc = nc || false; 92 | 93 | // disable library error catching, 94 | // used for development only 95 | if (nc) this.nc = nc; 96 | 97 | // set foundation global scope 98 | this.scope = scope || this.scope; 99 | 100 | if (libraries && typeof libraries === 'string') { 101 | if (/off/i.test(libraries)) return this.off(); 102 | 103 | library_arr = libraries.split(' '); 104 | 105 | if (library_arr.length > 0) { 106 | for (var i = library_arr.length - 1; i >= 0; i--) { 107 | responses.push(this.init_lib(library_arr[i], args)); 108 | } 109 | } 110 | } else { 111 | for (var lib in this.libs) { 112 | responses.push(this.init_lib(lib, args)); 113 | } 114 | } 115 | 116 | // if first argument is callback, add to args 117 | if (typeof libraries === 'function') { 118 | args.unshift(libraries); 119 | } 120 | 121 | return this.response_obj(responses, args); 122 | }, 123 | 124 | response_obj : function (response_arr, args) { 125 | for (var callback in args) { 126 | if (typeof args[callback] === 'function') { 127 | return args[callback]({ 128 | errors: response_arr.filter(function (s) { 129 | if (typeof s === 'string') return s; 130 | }) 131 | }); 132 | } 133 | } 134 | 135 | return response_arr; 136 | }, 137 | 138 | init_lib : function (lib, args) { 139 | return this.trap(function () { 140 | if (this.libs.hasOwnProperty(lib)) { 141 | this.patch(this.libs[lib]); 142 | return this.libs[lib].init.apply(this.libs[lib], args); 143 | } 144 | }.bind(this), lib); 145 | }, 146 | 147 | trap : function (fun, lib) { 148 | if (!this.nc) { 149 | try { 150 | return fun(); 151 | } catch (e) { 152 | return this.error({name: lib, message: 'could not be initialized', more: e.name + ' ' + e.message}); 153 | } 154 | } 155 | 156 | return fun(); 157 | }, 158 | 159 | patch : function (lib) { 160 | this.fix_outer(lib); 161 | }, 162 | 163 | inherit : function (scope, methods) { 164 | var methods_arr = methods.split(' '); 165 | 166 | for (var i = methods_arr.length - 1; i >= 0; i--) { 167 | if (this.lib_methods.hasOwnProperty(methods_arr[i])) { 168 | this.libs[scope.name][methods_arr[i]] = this.lib_methods[methods_arr[i]]; 169 | } 170 | } 171 | }, 172 | 173 | libs : {}, 174 | 175 | // methods that can be inherited in libraries 176 | lib_methods : { 177 | set_data : function (node, data) { 178 | // this.name references the name of the library calling this method 179 | var id = this.name + (+new Date()); 180 | 181 | Foundation.cache[id] = data; 182 | node.attr('data-' + this.name + '-id', id); 183 | }, 184 | 185 | get_data : function (node) { 186 | return Foundation.cache[node.attr('data-' + this.name + '-id')]; 187 | }, 188 | 189 | remove_data : function (node) { 190 | if (node) { 191 | delete Foundation.cache[node.attr('data-' + this.name + '-id')]; 192 | node.attr('data-' + this.name + '-id', ''); 193 | } else { 194 | $('[data-' + this.name + '-id]').each(function () { 195 | delete Foundation.cache[$(this).attr('data-' + this.name + '-id')]; 196 | $(this).attr('data-' + this.name + '-id', ''); 197 | }); 198 | } 199 | }, 200 | 201 | throttle : function(fun, delay) { 202 | var timer = null; 203 | return function () { 204 | var context = this, args = arguments; 205 | clearTimeout(timer); 206 | timer = setTimeout(function () { 207 | fun.apply(context, args); 208 | }, delay); 209 | }; 210 | }, 211 | 212 | // parses dat-options attribute on page nodes and turns 213 | // them into an object 214 | data_options : function (el) { 215 | var opts = {}, ii, p, 216 | opts_arr = (el.attr('data-options') || ':').split(';'), 217 | opts_len = opts_arr.length; 218 | 219 | function trim(str) { 220 | if (typeof str === 'string') return $.trim(str); 221 | return str; 222 | } 223 | 224 | // parse options 225 | for (ii = opts_len - 1; ii >= 0; ii--) { 226 | p = opts_arr[ii].split(':'); 227 | 228 | if (/true/i.test(p[1])) p[1] = true; 229 | if (/false/i.test(p[1])) p[1] = false; 230 | 231 | if (p.length === 2) { 232 | opts[trim(p[0])] = trim(p[1]); 233 | } 234 | } 235 | 236 | return opts; 237 | }, 238 | 239 | delay : function (fun, delay) { 240 | return setTimeout(fun, delay); 241 | }, 242 | 243 | // animated scrolling 244 | scrollTo : function (el, to, duration) { 245 | if (duration < 0) return; 246 | var difference = to - $(window).scrollTop(); 247 | var perTick = difference / duration * 10; 248 | 249 | this.scrollToTimerCache = setTimeout(function() { 250 | if (!isNaN(parseInt(perTick, 10))) { 251 | window.scrollTo(0, $(window).scrollTop() + perTick); 252 | this.scrollTo(el, to, duration - 10); 253 | } 254 | }.bind(this), 10); 255 | }, 256 | 257 | // not supported in core Zepto 258 | scrollLeft : function (el) { 259 | if (!el.length) return; 260 | return ('scrollLeft' in el[0]) ? el[0].scrollLeft : el[0].pageXOffset; 261 | }, 262 | 263 | // test for empty object or array 264 | empty : function (obj) { 265 | if (obj.length && obj.length > 0) return false; 266 | if (obj.length && obj.length === 0) return true; 267 | 268 | for (var key in obj) { 269 | if (hasOwnProperty.call(obj, key)) return false; 270 | } 271 | 272 | return true; 273 | } 274 | }, 275 | 276 | fix_outer : function (lib) { 277 | lib.outerHeight = function (el, bool) { 278 | if (typeof Zepto === 'function') { 279 | return el.height(); 280 | } 281 | 282 | if (typeof bool !== 'undefined') { 283 | return el.outerHeight(bool); 284 | } 285 | 286 | return el.outerHeight(); 287 | }; 288 | 289 | lib.outerWidth = function (el) { 290 | if (typeof Zepto === 'function') { 291 | return el.width(); 292 | } 293 | 294 | if (typeof bool !== 'undefined') { 295 | return el.outerWidth(bool); 296 | } 297 | 298 | return el.outerWidth(); 299 | }; 300 | }, 301 | 302 | error : function (error) { 303 | return error.name + ' ' + error.message + '; ' + error.more; 304 | }, 305 | 306 | // remove all foundation events. 307 | off: function () { 308 | $(this.scope).off('.fndtn'); 309 | $(window).off('.fndtn'); 310 | return true; 311 | }, 312 | 313 | zj : function () { 314 | try { 315 | return Zepto; 316 | } catch (e) { 317 | return jQuery; 318 | } 319 | }() 320 | }, 321 | 322 | $.fn.foundation = function () { 323 | var args = Array.prototype.slice.call(arguments, 0); 324 | 325 | return this.each(function () { 326 | Foundation.init.apply(Foundation, [this].concat(args)); 327 | return this; 328 | }); 329 | }; 330 | 331 | }(this, this.document)); -------------------------------------------------------------------------------- /js/foundation/foundation.magellan.js: -------------------------------------------------------------------------------- 1 | /*jslint unparam: true, browser: true, indent: 2 */ 2 | 3 | ;(function ($, window, document, undefined) { 4 | 'use strict'; 5 | 6 | Foundation.libs.magellan = { 7 | name : 'magellan', 8 | 9 | version : '4.0.0', 10 | 11 | settings : { 12 | activeClass: 'active' 13 | }, 14 | 15 | init : function (scope, method, options) { 16 | this.scope = scope || this.scope; 17 | Foundation.inherit(this, 'data_options'); 18 | 19 | if (typeof method === 'object') { 20 | $.extend(true, this.settings, method); 21 | } 22 | 23 | if (typeof method != 'string') { 24 | if (!this.settings.init) { 25 | this.fixed_magellan = $("[data-magellan-expedition]"); 26 | this.set_threshold(); 27 | this.last_destination = $('[data-magellan-destination]').last(); 28 | this.events(); 29 | } 30 | 31 | return this.settings.init; 32 | } else { 33 | return this[method].call(this, options); 34 | } 35 | }, 36 | 37 | events : function () { 38 | var self = this; 39 | $(this.scope).on('arrival.fndtn.magellan', '[data-magellan-arrival]', function (e) { 40 | var $destination = $(this), 41 | $expedition = $destination.closest('[data-magellan-expedition]'), 42 | activeClass = $expedition.attr('data-magellan-active-class') 43 | || self.settings.activeClass; 44 | 45 | $destination 46 | .closest('[data-magellan-expedition]') 47 | .find('[data-magellan-arrival]') 48 | .not($destination) 49 | .removeClass(activeClass); 50 | $destination.addClass(activeClass); 51 | }); 52 | 53 | this.fixed_magellan 54 | .on('update-position.fndtn.magellan', function(){ 55 | var $el = $(this); 56 | // $el.data("magellan-fixed-position",""); 57 | //$el.data("magellan-top-offset", ""); 58 | }) 59 | .trigger('update-position'); 60 | 61 | $(window) 62 | .on('resize.fndtn.magellan', function() { 63 | this.fixed_magellan.trigger('update-position'); 64 | }.bind(this)) 65 | 66 | .on('scroll.fndtn.magellan', function() { 67 | var windowScrollTop = $(window).scrollTop(); 68 | self.fixed_magellan.each(function() { 69 | var $expedition = $(this); 70 | if (typeof $expedition.data('magellan-top-offset') === 'undefined') { 71 | $expedition.data('magellan-top-offset', $expedition.offset().top); 72 | } 73 | if (typeof $expedition.data('magellan-fixed-position') === 'undefined') { 74 | $expedition.data('magellan-fixed-position', false) 75 | } 76 | var fixed_position = (windowScrollTop + self.settings.threshold) > $expedition.data("magellan-top-offset"); 77 | var attr = $expedition.attr('data-magellan-top-offset'); 78 | 79 | if ($expedition.data("magellan-fixed-position") != fixed_position) { 80 | $expedition.data("magellan-fixed-position", fixed_position); 81 | if (fixed_position) { 82 | $expedition.css({position:"fixed", top:0}); 83 | } else { 84 | $expedition.css({position:"", top:""}); 85 | } 86 | if (fixed_position && typeof attr != 'undefined' && attr != false) { 87 | $expedition.css({position:"fixed", top:attr + "px"}); 88 | } 89 | } 90 | }); 91 | }); 92 | 93 | 94 | if (this.last_destination.length > 0) { 95 | $(window).on('scroll.fndtn.magellan', function (e) { 96 | var windowScrollTop = $(window).scrollTop(), 97 | scrolltopPlusHeight = windowScrollTop + $(window).height(), 98 | lastDestinationTop = Math.ceil(self.last_destination.offset().top); 99 | 100 | $('[data-magellan-destination]').each(function () { 101 | var $destination = $(this), 102 | destination_name = $destination.attr('data-magellan-destination'), 103 | topOffset = $destination.offset().top - windowScrollTop; 104 | 105 | if (topOffset <= self.settings.threshold) { 106 | $("[data-magellan-arrival='" + destination_name + "']").trigger('arrival'); 107 | } 108 | // In large screens we may hit the bottom of the page and dont reach the top of the last magellan-destination, so lets force it 109 | if (scrolltopPlusHeight >= $(self.scope).height() && lastDestinationTop > windowScrollTop && lastDestinationTop < scrolltopPlusHeight) { 110 | $('[data-magellan-arrival]').last().trigger('arrival'); 111 | } 112 | }); 113 | }); 114 | } 115 | 116 | this.settings.init = true; 117 | }, 118 | 119 | set_threshold : function () { 120 | if (!this.settings.threshold) { 121 | this.settings.threshold = (this.fixed_magellan.length > 0) ? 122 | this.outerHeight(this.fixed_magellan, true) : 0; 123 | } 124 | }, 125 | 126 | off : function () { 127 | $(this.scope).off('.fndtn.magellan'); 128 | } 129 | }; 130 | }(Foundation.zj, this, this.document)); -------------------------------------------------------------------------------- /js/foundation/foundation.orbit.js: -------------------------------------------------------------------------------- 1 | ;(function ($, window, document, undefined) { 2 | 'use strict'; 3 | 4 | Foundation.libs = Foundation.libs || {}; 5 | 6 | Foundation.libs.orbit = { 7 | version: '4.0.0', 8 | 9 | settings: { 10 | timer_speed: 10000, 11 | animation_speed: 500, 12 | bullets: true, 13 | stack_on_small: true, 14 | container_class: 'orbit-container', 15 | stack_on_small_class: 'orbit-stack-on-small', 16 | next_class: 'orbit-next', 17 | prev_class: 'orbit-prev', 18 | timer_container_class: 'orbit-timer', 19 | timer_paused_class: 'paused', 20 | timer_progress_class: 'orbit-progress', 21 | slides_container_class: 'orbit-slides-container', 22 | bullets_container_class: 'orbit-bullets', 23 | bullets_active_class: 'active', 24 | slide_number_class: 'orbit-slide-number', 25 | caption_class: 'orbit-caption', 26 | active_slide_class: 'active', 27 | orbit_transition_class: 'orbit-transitioning' 28 | }, 29 | 30 | init: function (scope, method, options) { 31 | var self = this; 32 | 33 | if (typeof method === 'object') { 34 | $.extend(true, self.settings, method); 35 | } 36 | 37 | $('[data-orbit]', scope).each($.proxy(self._init, self)); 38 | }, 39 | 40 | _container_html: function() { 41 | var self = this; 42 | return '
    '; 43 | }, 44 | 45 | _bullets_container_html: function($slides) { 46 | var self = this, 47 | $list = $('
      '); 48 | $slides.each(function(idx, slide) { 49 | var $item = $('
    1. '); 50 | if (idx === 0) { 51 | $item.addClass(self.settings.bullets_active_class); 52 | } 53 | $list.append($item); 54 | }); 55 | return $list; 56 | }, 57 | 58 | _slide_number_html: function(slide_number, total_slides) { 59 | var self = this, 60 | $container = $('
      '); 61 | $container.append('' + slide_number + ' of ' + total_slides + ''); 62 | return $container; 63 | }, 64 | 65 | _timer_html: function() { 66 | var self = this; 67 | if (typeof self.settings.timer_speed === 'number' && self.settings.timer_speed > 0) { 68 | return '
      '; 71 | } else { 72 | return ''; 73 | } 74 | }, 75 | 76 | _next_html: function() { 77 | var self = this; 78 | return 'Next '; 79 | }, 80 | 81 | _prev_html: function() { 82 | var self = this; 83 | return 'Prev '; 84 | }, 85 | 86 | _init: function (idx, slider) { 87 | var self = this, 88 | $slides_container = $(slider), 89 | $container = $slides_container.wrap(self._container_html()).parent(), 90 | $slides = $slides_container.children(); 91 | 92 | $container.append(self._prev_html()); 93 | $container.append(self._next_html()); 94 | $slides_container.addClass(self.settings.slides_container_class); 95 | if (self.settings.stack_on_small) { 96 | $container.addClass(self.settings.stack_on_small_class); 97 | } 98 | $container.append(self._slide_number_html(1, $slides.length)); 99 | $container.append(self._timer_html()); 100 | if (self.settings.bullets) { 101 | $container.after(self._bullets_container_html($slides)); 102 | } 103 | // To better support the "sliding" effect it's easier 104 | // if we just clone the first and last slides 105 | $slides_container.append($slides.first().clone().attr('data-orbit-slide','')); 106 | $slides_container.prepend($slides.last().clone().attr('data-orbit-slide','')); 107 | // Make the first "real" slide active 108 | $slides_container.css('marginLeft', '-100%'); 109 | $slides.first().addClass(self.settings.active_slide_class); 110 | 111 | self._init_events($slides_container); 112 | self._init_dimensions($slides_container); 113 | self._start_timer($slides_container); 114 | }, 115 | 116 | _init_events: function ($slides_container) { 117 | var self = this, 118 | $container = $slides_container.parent(); 119 | 120 | $(window) 121 | .on('load.fndtn.orbit', function() { 122 | $slides_container.height(''); 123 | $slides_container.height($slides_container.height($container.height())); 124 | $slides_container.trigger('orbit:ready'); 125 | }) 126 | .on('resize.fndtn.orbit', function() { 127 | $slides_container.height(''); 128 | $slides_container.height($slides_container.height($container.height())); 129 | }); 130 | 131 | $(document).on('click.fndtn.orbit', '[data-orbit-link]', function(e) { 132 | e.preventDefault(); 133 | var id = $(e.currentTarget).attr('data-orbit-link'), 134 | $slide = $slides_container.find('[data-orbit-slide=' + id + ']').first(); 135 | 136 | if ($slide.length === 1) { 137 | self._reset_timer($slides_container, true); 138 | self.goto($slides_container, $slide.index(), function() {}); 139 | } 140 | }); 141 | 142 | $container.siblings('.' + self.settings.bullets_container_class) 143 | .on('click.fndtn.orbit', '[data-orbit-slide-number]', function(e) { 144 | e.preventDefault(); 145 | self._reset_timer($slides_container, true); 146 | self.goto($slides_container, $(e.currentTarget).data('orbit-slide-number'),function() {}); 147 | }); 148 | 149 | $container 150 | .on('orbit:after-slide-change.fndtn.orbit', function(e, orbit) { 151 | var $slide_number = $container.find('.' + self.settings.slide_number_class); 152 | 153 | if ($slide_number.length === 1) { 154 | $slide_number.replaceWith(self._slide_number_html(orbit.slide_number, orbit.total_slides)); 155 | } 156 | }) 157 | .on('orbit:next-slide.fndtn.orbit click.fndtn.orbit', '.' + self.settings.next_class, function(e) { 158 | e.preventDefault(); 159 | self._reset_timer($slides_container, true); 160 | self.goto($slides_container, 'next', function() {}); 161 | }) 162 | .on('orbit:prev-slide.fndtn.orbit click.fndtn.orbit', '.' + self.settings.prev_class, function(e) { 163 | e.preventDefault(); 164 | self._reset_timer($slides_container, true); 165 | self.goto($slides_container, 'prev', function() {}); 166 | }) 167 | .on('orbit:toggle-play-pause.fndtn.orbit click.fndtn.orbit touchstart.fndtn.orbit', '.' + self.settings.timer_container_class, function(e) { 168 | e.preventDefault(); 169 | var $timer = $(e.currentTarget).toggleClass(self.settings.timer_paused_class), 170 | $slides_container = $timer.closest('.' + self.settings.container_class) 171 | .find('.' + self.settings.slides_container_class); 172 | 173 | if ($timer.hasClass(self.settings.timer_paused_class)) { 174 | self._stop_timer($slides_container); 175 | } else { 176 | self._start_timer($slides_container); 177 | } 178 | }) 179 | .on('touchstart.fndtn.orbit', function(e) { 180 | var data = { 181 | start_page_x: e.touches[0].pageX, 182 | start_page_y: e.touches[0].pageY, 183 | start_time: (new Date()).getTime(), 184 | delta_x: 0, 185 | is_scrolling: undefined 186 | }; 187 | $container.data('swipe-transition', data); 188 | e.stopPropagation(); 189 | }) 190 | .on('touchmove.fndtn.orbit', function(e) { 191 | // Ignore pinch/zoom events 192 | if(e.touches.length > 1 || e.scale && e.scale !== 1) return; 193 | 194 | var data = $container.data('swipe-transition'); 195 | if (typeof data === 'undefined') { 196 | data = {}; 197 | } 198 | 199 | data.delta_x = e.touches[0].pageX - data.start_page_x; 200 | 201 | if ( typeof data.is_scrolling === 'undefined') { 202 | data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) ); 203 | } 204 | 205 | if (!data.is_scrolling && !data.active) { 206 | e.preventDefault(); 207 | self._stop_timer($slides_container); 208 | var direction = (data.delta_x < 0) ? 'next' : 'prev'; 209 | data.active = true; 210 | self.goto($slides_container, direction, function() {}); 211 | } 212 | }) 213 | .on('touchend.fndtn.orbit', function(e) { 214 | $container.data('swipe-transition', {}); 215 | e.stopPropagation(); 216 | }); 217 | }, 218 | 219 | _init_dimensions: function ($slides_container) { 220 | var $container = $slides_container.parent(), 221 | $slides = $slides_container.children(); 222 | 223 | $slides_container.css('width', $slides.length * 100 + '%'); 224 | $slides.css('width', 100 / $slides.length + '%'); 225 | $slides_container.height($container.height()); 226 | $slides_container.css('width', $slides.length * 100 + '%'); 227 | }, 228 | 229 | _start_timer: function ($slides_container) { 230 | var self = this, 231 | $container = $slides_container.parent(); 232 | 233 | var callback = function() { 234 | self._reset_timer($slides_container, false); 235 | self.goto($slides_container, 'next', function() { 236 | self._start_timer($slides_container); 237 | }); 238 | }; 239 | 240 | var $timer = $container.find('.' + self.settings.timer_container_class), 241 | $progress = $timer.find('.' + self.settings.timer_progress_class), 242 | progress_pct = ($progress.width() / $timer.width()), 243 | delay = self.settings.timer_speed - (progress_pct * self.settings.timer_speed); 244 | 245 | $progress.animate({'width': '100%'}, delay, 'linear', callback).data('is-original', 'beans?'); 246 | $slides_container.trigger('orbit:timer-started'); 247 | }, 248 | 249 | _stop_timer: function ($slides_container) { 250 | var self = this, 251 | $container = $slides_container.parent(), 252 | $timer = $container.find('.' + self.settings.timer_container_class), 253 | $progress = $timer.find('.' + self.settings.timer_progress_class), 254 | progress_pct = $progress.width() / $timer.width() 255 | self._rebuild_timer($container, progress_pct * 100 + '%'); 256 | // $progress.stop(); 257 | $slides_container.trigger('orbit:timer-stopped'); 258 | $timer = $container.find('.' + self.settings.timer_container_class); 259 | $timer.addClass(self.settings.timer_paused_class); 260 | }, 261 | 262 | _reset_timer: function($slides_container, is_paused) { 263 | var self = this, 264 | $container = $slides_container.parent(); 265 | self._rebuild_timer($container, '0%'); 266 | if (typeof is_paused === 'boolean' && is_paused) { 267 | var $timer = $container.find('.' + self.settings.timer_container_class); 268 | $timer.addClass(self.settings.timer_paused_class); 269 | } 270 | }, 271 | 272 | _rebuild_timer: function ($container, width_pct) { 273 | // Zepto is unable to stop animations since they 274 | // are css-based. This is a workaround for that 275 | // limitation, which rebuilds the dom element 276 | // thus stopping the animation 277 | var self = this, 278 | $timer = $container.find('.' + self.settings.timer_container_class), 279 | $new_timer = $(self._timer_html()), 280 | $new_timer_progress = $new_timer.find('.' + self.settings.timer_progress_class); 281 | 282 | if (typeof Zepto === 'function') { 283 | $timer.remove(); 284 | $container.append($new_timer); 285 | $new_timer_progress.css('width', width_pct); 286 | } else if (typeof jQuery === 'function') { 287 | var $progress = $timer.find('.' + self.settings.timer_progress_class); 288 | $progress.css('width', width_pct); 289 | $progress.stop(); 290 | } 291 | }, 292 | 293 | goto: function($slides_container, index_or_direction, callback) { 294 | var self = this, 295 | $container = $slides_container.parent(), 296 | $slides = $slides_container.children(), 297 | $active_slide = $slides_container.find('.' + self.settings.active_slide_class), 298 | active_index = $active_slide.index(); 299 | 300 | if ($container.hasClass(self.settings.orbit_transition_class)) { 301 | return false; 302 | } 303 | 304 | if (index_or_direction === 'prev') { 305 | if (active_index === 0) { 306 | active_index = $slides.length - 1; 307 | } 308 | else { 309 | active_index--; 310 | } 311 | } 312 | else if (index_or_direction === 'next') { 313 | active_index = (active_index+1) % $slides.length; 314 | } 315 | else if (typeof index_or_direction === 'number') { 316 | active_index = (index_or_direction % $slides.length); 317 | } 318 | if (active_index === ($slides.length - 1) && index_or_direction === 'next') { 319 | $slides_container.css('marginLeft', '0%'); 320 | active_index = 1; 321 | } 322 | else if (active_index === 0 && index_or_direction === 'prev') { 323 | $slides_container.css('marginLeft', '-' + ($slides.length - 1) * 100 + '%'); 324 | active_index = $slides.length - 2; 325 | } 326 | // Start transition, make next slide active 327 | $container.addClass(self.settings.orbit_transition_class); 328 | $active_slide.removeClass(self.settings.active_slide_class); 329 | $($slides[active_index]).addClass(self.settings.active_slide_class); 330 | // Make next bullet active 331 | var $bullets = $container.siblings('.' + self.settings.bullets_container_class); 332 | if ($bullets.length === 1) { 333 | $bullets.children().removeClass(self.settings.bullets_active_class); 334 | $($bullets.children()[active_index-1]).addClass(self.settings.bullets_active_class); 335 | } 336 | var new_margin_left = '-' + (active_index * 100) + '%'; 337 | // Check to see if animation will occur, otherwise perform 338 | // callbacks manually 339 | $slides_container.trigger('orbit:before-slide-change'); 340 | if ($slides_container.css('marginLeft') === new_margin_left) { 341 | $container.removeClass(self.settings.orbit_transition_class); 342 | $slides_container.trigger('orbit:after-slide-change', [{slide_number: active_index, total_slides: $slides_container.children().length - 2}]); 343 | callback(); 344 | } else { 345 | $slides_container.animate({ 346 | 'marginLeft' : new_margin_left 347 | }, self.settings.animation_speed, 'linear', function() { 348 | $container.removeClass(self.settings.orbit_transition_class); 349 | $slides_container.trigger('orbit:after-slide-change', [{slide_number: active_index, total_slides: $slides_container.children().length - 2}]); 350 | callback(); 351 | }); 352 | } 353 | } 354 | }; 355 | }(Foundation.zj, this, this.document)); 356 | -------------------------------------------------------------------------------- /js/foundation/foundation.placeholder.js: -------------------------------------------------------------------------------- 1 | /*! http://mths.be/placeholder v2.0.7 by @mathias 2 | Modified to work with Zepto.js by ZURB 3 | */ 4 | ;(function(window, document, $) { 5 | 6 | var isInputSupported = 'placeholder' in document.createElement('input'), 7 | isTextareaSupported = 'placeholder' in document.createElement('textarea'), 8 | prototype = $.fn, 9 | valHooks = $.valHooks, 10 | hooks, 11 | placeholder; 12 | 13 | if (isInputSupported && isTextareaSupported) { 14 | 15 | placeholder = prototype.placeholder = function() { 16 | return this; 17 | }; 18 | 19 | placeholder.input = placeholder.textarea = true; 20 | 21 | } else { 22 | 23 | placeholder = prototype.placeholder = function() { 24 | var $this = this; 25 | $this 26 | .filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]') 27 | .not('.placeholder') 28 | .bind({ 29 | 'focus.placeholder': clearPlaceholder, 30 | 'blur.placeholder': setPlaceholder 31 | }) 32 | .data('placeholder-enabled', true) 33 | .trigger('blur.placeholder'); 34 | return $this; 35 | }; 36 | 37 | placeholder.input = isInputSupported; 38 | placeholder.textarea = isTextareaSupported; 39 | 40 | hooks = { 41 | 'get': function(element) { 42 | var $element = $(element); 43 | return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value; 44 | }, 45 | 'set': function(element, value) { 46 | var $element = $(element); 47 | if (!$element.data('placeholder-enabled')) { 48 | return element.value = value; 49 | } 50 | if (value == '') { 51 | element.value = value; 52 | // Issue #56: Setting the placeholder causes problems if the element continues to have focus. 53 | if (element != document.activeElement) { 54 | // We can't use `triggerHandler` here because of dummy text/password inputs :( 55 | setPlaceholder.call(element); 56 | } 57 | } else if ($element.hasClass('placeholder')) { 58 | clearPlaceholder.call(element, true, value) || (element.value = value); 59 | } else { 60 | element.value = value; 61 | } 62 | // `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363 63 | return $element; 64 | } 65 | }; 66 | 67 | isInputSupported || (valHooks.input = hooks); 68 | isTextareaSupported || (valHooks.textarea = hooks); 69 | 70 | $(function() { 71 | // Look for forms 72 | $(document).delegate('form', 'submit.placeholder', function() { 73 | // Clear the placeholder values so they don't get submitted 74 | var $inputs = $('.placeholder', this).each(clearPlaceholder); 75 | setTimeout(function() { 76 | $inputs.each(setPlaceholder); 77 | }, 10); 78 | }); 79 | }); 80 | 81 | // Clear placeholder values upon page reload 82 | $(window).bind('beforeunload.placeholder', function() { 83 | $('.placeholder').each(function() { 84 | this.value = ''; 85 | }); 86 | }); 87 | 88 | } 89 | 90 | function args(elem) { 91 | // Return an object of element attributes 92 | var newAttrs = {}, 93 | rinlinejQuery = /^jQuery\d+$/; 94 | $.each(elem.attributes, function(i, attr) { 95 | if (attr.specified && !rinlinejQuery.test(attr.name)) { 96 | newAttrs[attr.name] = attr.value; 97 | } 98 | }); 99 | return newAttrs; 100 | } 101 | 102 | function clearPlaceholder(event, value) { 103 | var input = this, 104 | $input = $(input); 105 | if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) { 106 | if ($input.data('placeholder-password')) { 107 | $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id')); 108 | // If `clearPlaceholder` was called from `$.valHooks.input.set` 109 | if (event === true) { 110 | return $input[0].value = value; 111 | } 112 | $input.focus(); 113 | } else { 114 | input.value = ''; 115 | $input.removeClass('placeholder'); 116 | input == document.activeElement && input.select(); 117 | } 118 | } 119 | } 120 | 121 | function setPlaceholder() { 122 | var $replacement, 123 | input = this, 124 | $input = $(input), 125 | $origInput = $input, 126 | id = this.id; 127 | if (input.value == '') { 128 | if (input.type == 'password') { 129 | if (!$input.data('placeholder-textinput')) { 130 | try { 131 | $replacement = $input.clone().attr({ 'type': 'text' }); 132 | } catch(e) { 133 | $replacement = $('').attr($.extend(args(this), { 'type': 'text' })); 134 | } 135 | $replacement 136 | .removeAttr('name') 137 | .data({ 138 | 'placeholder-password': true, 139 | 'placeholder-id': id 140 | }) 141 | .bind('focus.placeholder', clearPlaceholder); 142 | $input 143 | .data({ 144 | 'placeholder-textinput': $replacement, 145 | 'placeholder-id': id 146 | }) 147 | .before($replacement); 148 | } 149 | $input = $input.removeAttr('id').hide().prev().attr('id', id).show(); 150 | // Note: `$input[0] != input` now! 151 | } 152 | $input.addClass('placeholder'); 153 | $input[0].value = $input.attr('placeholder'); 154 | } else { 155 | $input.removeClass('placeholder'); 156 | } 157 | } 158 | 159 | }(this, document, Foundation.zj)); -------------------------------------------------------------------------------- /js/foundation/foundation.reveal.js: -------------------------------------------------------------------------------- 1 | /*jslint unparam: true, browser: true, indent: 2 */ 2 | 3 | ;(function ($, window, document, undefined) { 4 | 'use strict'; 5 | 6 | Foundation.libs.reveal = { 7 | name: 'reveal', 8 | 9 | version : '4.0.0', 10 | 11 | locked : false, 12 | 13 | settings : { 14 | animation: 'fadeAndPop', 15 | animationSpeed: 250, 16 | closeOnBackgroundClick: true, 17 | dismissModalClass: 'close-reveal-modal', 18 | bgClass: 'reveal-modal-bg', 19 | open: function(){}, 20 | opened: function(){}, 21 | close: function(){}, 22 | closed: function(){}, 23 | bg : $('.reveal-modal-bg'), 24 | css : { 25 | open : { 26 | 'opacity': 0, 27 | 'visibility': 'visible', 28 | 'display' : 'block' 29 | }, 30 | close : { 31 | 'opacity': 1, 32 | 'visibility': 'hidden', 33 | 'display': 'none' 34 | } 35 | } 36 | }, 37 | 38 | init : function (scope, method, options) { 39 | this.scope = scope || this.scope; 40 | Foundation.inherit(this, 'data_options delay'); 41 | 42 | if (typeof method === 'object') { 43 | $.extend(true, this.settings, method); 44 | } 45 | 46 | if (typeof method != 'string') { 47 | if (!this.settings.init) this.events(); 48 | 49 | return this.settings.init; 50 | } else { 51 | return this[method].call(this, options); 52 | } 53 | }, 54 | 55 | events : function () { 56 | var self = this; 57 | 58 | $(this.scope) 59 | .on('click.fndtn.reveal', '[data-reveal-id]', function (e) { 60 | e.preventDefault(); 61 | if (!self.locked) { 62 | self.locked = true; 63 | self.open.call(self, $(this)); 64 | } 65 | }) 66 | .on('click.fndtn.reveal touchend.click.fndtn.reveal', this.close_targets(), function (e) { 67 | if (!self.locked) { 68 | self.locked = true; 69 | self.close.call(self, $(this).closest('.reveal-modal')); 70 | } 71 | }) 72 | .on('open.fndtn.reveal', '.reveal-modal', this.settings.open) 73 | .on('opened.fndtn.reveal', '.reveal-modal', this.settings.opened) 74 | .on('opened.fndtn.reveal', '.reveal-modal', this.open_video) 75 | .on('close.fndtn.reveal', '.reveal-modal', this.settings.close) 76 | .on('closed.fndtn.reveal', '.reveal-modal', this.settings.closed) 77 | .on('closed.fndtn.reveal', '.reveal-modal', this.close_video); 78 | }, 79 | 80 | open : function (target) { 81 | var modal = $('#' + target.data('reveal-id')), 82 | open_modal = $('.reveal-modal.open'); 83 | 84 | this.offset = this.cache_offset(modal); 85 | 86 | modal.trigger('open'); 87 | 88 | if (open_modal.length < 1) { 89 | this.toggle_bg(modal); 90 | } 91 | 92 | this.toggle_modals(open_modal, modal); 93 | }, 94 | 95 | close : function (modal) { 96 | this.locked = true; 97 | var open_modal = $('.reveal-modal.open').not(modal); 98 | modal.trigger('close'); 99 | this.toggle_bg(modal); 100 | this.toggle_modals(open_modal, modal); 101 | }, 102 | 103 | close_targets : function () { 104 | var base = '.' + this.settings.dismissModalClass; 105 | 106 | if (this.settings.closeOnBackgroundClick) { 107 | return base + ', .' + this.settings.bgClass; 108 | } 109 | 110 | return base; 111 | }, 112 | 113 | toggle_modals : function (open_modal, modal) { 114 | if (open_modal.length > 0) { 115 | this.hide(open_modal, this.settings.css.close); 116 | } 117 | 118 | if (modal.filter(':visible').length > 0) { 119 | this.hide(modal, this.settings.css.close); 120 | } else { 121 | this.show(modal, this.settings.css.open); 122 | } 123 | }, 124 | 125 | toggle_bg : function (modal) { 126 | if (this.settings.bg.length === 0) { 127 | this.settings.bg = $('
      ', {'class': this.settings.bgClass}) 128 | .insertAfter(modal); 129 | } 130 | 131 | if (this.settings.bg.filter(':visible').length > 0) { 132 | this.hide(this.settings.bg); 133 | } else { 134 | this.show(this.settings.bg); 135 | } 136 | }, 137 | 138 | show : function (el, css) { 139 | // is modal 140 | if (css) { 141 | if (/pop/i.test(this.settings.animation)) { 142 | css.top = $(window).scrollTop() - this.offset + 'px'; 143 | var end_css = { 144 | top: $(window).scrollTop() + parseInt(el.css('top'), 10) + 'px', 145 | opacity: 1 146 | } 147 | 148 | return this.delay(function () { 149 | return el 150 | .css(css) 151 | .animate(end_css, this.settings.animationSpeed, 'linear', function () { 152 | this.locked = false; 153 | el.trigger('opened'); 154 | }.bind(this)) 155 | .addClass('open'); 156 | }.bind(this), this.settings.animationSpeed / 2); 157 | } 158 | 159 | if (/fade/i.test(this.settings.animation)) { 160 | var end_css = {opacity: 1}; 161 | 162 | return this.delay(function () { 163 | return el 164 | .css(css) 165 | .animate(end_css, this.settings.animationSpeed, 'linear', function () { 166 | this.locked = false; 167 | el.trigger('opened'); 168 | }.bind(this)) 169 | .addClass('open'); 170 | }.bind(this), this.settings.animationSpeed / 2); 171 | } 172 | 173 | return el.css(css).show().css({opacity: 1}).addClass('open').trigger('opened'); 174 | } 175 | 176 | // should we animate the background? 177 | if (/fade/i.test(this.settings.animation)) { 178 | return el.fadeIn(this.settings.animationSpeed / 2); 179 | } 180 | 181 | return el.show(); 182 | }, 183 | 184 | hide : function (el, css) { 185 | // is modal 186 | if (css) { 187 | if (/pop/i.test(this.settings.animation)) { 188 | var end_css = { 189 | // need to figure out why this doesn't work. 190 | // top: $(window).scrollTop() - this.offset + 'px', 191 | opacity: 0 192 | }; 193 | 194 | return this.delay(function () { 195 | return el 196 | .animate(end_css, this.settings.animationSpeed, 'linear', function () { 197 | this.locked = false; 198 | el.css(css).trigger('closed'); 199 | }.bind(this)) 200 | .removeClass('open'); 201 | }.bind(this), this.settings.animationSpeed / 2); 202 | } 203 | 204 | if (/fade/i.test(this.settings.animation)) { 205 | var end_css = {opacity: 0}; 206 | 207 | return this.delay(function () { 208 | return el 209 | .animate(end_css, this.settings.animationSpeed, 'linear', function () { 210 | this.locked = false; 211 | el.css(css).trigger('closed'); 212 | }.bind(this)) 213 | .removeClass('open'); 214 | }.bind(this), this.settings.animationSpeed / 2); 215 | } 216 | 217 | return el.hide().css(css).removeClass('open').trigger('closed'); 218 | } 219 | 220 | // should we animate the background? 221 | if (/fade/i.test(this.settings.animation)) { 222 | return el.fadeOut(this.settings.animationSpeed / 2); 223 | } 224 | 225 | return el.hide(); 226 | }, 227 | 228 | close_video : function (e) { 229 | var video = $(this).find('.flex-video'), 230 | iframe = video.find('iframe'); 231 | 232 | if (iframe.length > 0) { 233 | iframe.attr('data-src', iframe[0].src); 234 | iframe.attr('src', 'about:blank'); 235 | video.fadeOut(100).hide(); 236 | } 237 | }, 238 | 239 | open_video : function (e) { 240 | var video = $(this).find('.flex-video'), 241 | iframe = video.find('iframe'); 242 | 243 | if (iframe.length > 0) { 244 | var data_src = iframe.attr('data-src'); 245 | if (typeof data_src === 'string') { 246 | iframe[0].src = iframe.attr('data-src'); 247 | } 248 | video.show().fadeIn(100); 249 | } 250 | }, 251 | 252 | cache_offset : function (modal) { 253 | var offset = modal.show().height() + parseInt(modal.css('top'), 10); 254 | 255 | modal.hide(); 256 | 257 | return offset; 258 | }, 259 | 260 | off : function () { 261 | $(this.scope).off('.fndtn.reveal'); 262 | } 263 | }; 264 | }(Foundation.zj, this, this.document)); -------------------------------------------------------------------------------- /js/foundation/foundation.section.js: -------------------------------------------------------------------------------- 1 | /*jslint unparam: true, browser: true, indent: 2 */ 2 | 3 | ;(function ($, window, document, undefined) { 4 | 'use strict'; 5 | 6 | Foundation.libs.section = { 7 | name: 'section', 8 | 9 | version : '4.0.0', 10 | 11 | settings : { 12 | deep_linking: false, 13 | one_up: true, 14 | callback: function (){} 15 | }, 16 | 17 | init : function (scope, method, options) { 18 | this.scope = scope || this.scope; 19 | Foundation.inherit(this, 'throttle data_options'); 20 | 21 | if (typeof method === 'object') { 22 | $.extend(true, this.settings, method); 23 | } 24 | 25 | if (typeof method != 'string') { 26 | this.set_active_from_hash(); 27 | if (!this.settings.init) this.events(); 28 | 29 | return this.settings.init; 30 | } else { 31 | return this[method].call(this, options); 32 | } 33 | }, 34 | 35 | events : function () { 36 | var self = this; 37 | $(this.scope).on('click.fndtn.section', '[data-section] .title', function (e) { 38 | $.extend(true, self.settings, self.data_options($(this).closest('[data-section]'))); 39 | self.toggle_active.call(this, e, self); 40 | }); 41 | 42 | $(window).on('resize.fndtn.section', self.throttle(function () { 43 | self.resize.call(this); 44 | }, 30)).trigger('resize'); 45 | 46 | this.settings.init = true; 47 | }, 48 | 49 | toggle_active : function (e, self) { 50 | var $this = $(this), 51 | section = $this.closest('section, .section'), 52 | content = section.find('.content'), 53 | parent = section.closest('[data-section]'), 54 | self = Foundation.libs.section; 55 | 56 | if (!self.settings.deep_linking && content.length > 0) { 57 | e.preventDefault(); 58 | } 59 | 60 | if (section.hasClass('active')) { 61 | if (self.small(parent) 62 | || self.is_vertical(parent) 63 | || self.is_accordion(parent)) { 64 | section 65 | .removeClass('active') 66 | .attr('style', ''); 67 | } 68 | } else { 69 | if (self.small(parent) || self.settings.one_up) { 70 | $this 71 | .closest('[data-section]') 72 | .find('section, .section') 73 | .removeClass('active') 74 | .attr('style', ''); 75 | 76 | section.css('padding-top', self.outerHeight(section.find('.title')) - 1); 77 | } 78 | 79 | if (self.small(parent)) { 80 | section.attr('style', ''); 81 | } 82 | 83 | section.addClass('active'); 84 | } 85 | 86 | self.settings.callback(); 87 | }, 88 | 89 | resize : function () { 90 | var sections = $('[data-section]'), 91 | self = Foundation.libs.section; 92 | 93 | sections.each(function() { 94 | var $this = $(this), 95 | active_section = $this.find('section.active, .section.active'); 96 | if (active_section.length > 1) { 97 | active_section 98 | .not(':first') 99 | .removeClass('active') 100 | .attr('style', ''); 101 | } else if (active_section.length < 1 102 | && !self.is_vertical($this) 103 | && !self.is_accordion($this)) { 104 | var first = $this.find('section, .section').first(); 105 | first.addClass('active'); 106 | 107 | if (self.small($this)) { 108 | first.attr('style', ''); 109 | } else { 110 | first.css('padding-top', self.outerHeight(first.find('.title')) - 1); 111 | } 112 | } 113 | 114 | if (self.small($this)) { 115 | active_section.attr('style', ''); 116 | } else { 117 | active_section.css('padding-top', self.outerHeight(active_section.find('.title')) - 1); 118 | } 119 | self.position_titles($this); 120 | }); 121 | }, 122 | 123 | is_vertical : function (el) { 124 | return el.hasClass('vertical-nav'); 125 | }, 126 | 127 | is_accordion : function (el) { 128 | return el.hasClass('accordion'); 129 | }, 130 | 131 | set_active_from_hash : function () { 132 | var hash = window.location.hash.substring(1), 133 | sections = $('[data-section]') 134 | self = this; 135 | 136 | sections.each(function () { 137 | var section = $(this); 138 | $.extend(true, self.settings, self.data_options(section)); 139 | 140 | if (hash.length > 0 && self.settings.deep_linking) { 141 | section 142 | .find('.content[data-slug="' + hash + '"]') 143 | .closest('section, .section') 144 | .addClass('active'); 145 | } 146 | }); 147 | }, 148 | 149 | position_titles : function (section, off) { 150 | var titles = section.find('.title'), 151 | previous_width = 0, 152 | self = this; 153 | 154 | if (typeof off === 'boolean') { 155 | titles.attr('style', ''); 156 | } else { 157 | titles.each(function () { 158 | $(this).css('left', previous_width); 159 | previous_width += self.outerWidth($(this)); 160 | }); 161 | } 162 | }, 163 | 164 | small : function (el) { 165 | if (el && this.is_accordion(el)) { 166 | return true; 167 | } 168 | if ($('html').hasClass('lt-ie9')) { 169 | return true; 170 | } 171 | return $(this.scope).width() < 768; 172 | }, 173 | 174 | off : function () { 175 | $(this.scope).off('.fndtn.section'); 176 | $(window).off('.fndtn.section'); 177 | this.settings.init = false; 178 | } 179 | }; 180 | }(Foundation.zj, this, this.document)); 181 | -------------------------------------------------------------------------------- /js/foundation/foundation.tooltips.js: -------------------------------------------------------------------------------- 1 | /*jslint unparam: true, browser: true, indent: 2 */ 2 | 3 | ;(function ($, window, document, undefined) { 4 | 'use strict'; 5 | 6 | Foundation.libs.tooltips = { 7 | name: 'tooltips', 8 | 9 | version : '4.0.0', 10 | 11 | settings : { 12 | selector : '.has-tip', 13 | additionalInheritableClasses : [], 14 | tooltipClass : '.tooltip', 15 | tipTemplate : function (selector, content) { 16 | return '' + content + ''; 19 | } 20 | }, 21 | 22 | cache : {}, 23 | 24 | init : function (scope, method, options) { 25 | var self = this; 26 | this.scope = scope || this.scope; 27 | 28 | if (typeof method === 'object') { 29 | $.extend(true, this.settings, method); 30 | } 31 | 32 | if (typeof method != 'string') { 33 | if (Modernizr.touch) { 34 | $(this.scope) 35 | .on('click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip', 36 | '[data-tooltip]', function (e) { 37 | e.preventDefault(); 38 | $(self.settings.tooltipClass).hide(); 39 | self.showOrCreateTip($(this)); 40 | }) 41 | .on('click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip', 42 | this.settings.tooltipClass, function (e) { 43 | e.preventDefault(); 44 | $(this).fadeOut(150); 45 | }); 46 | } else { 47 | $(this.scope) 48 | .on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip', 49 | '[data-tooltip]', function (e) { 50 | var $this = $(this); 51 | 52 | if (e.type === 'mouseover' || e.type === 'mouseenter') { 53 | self.showOrCreateTip($this); 54 | } else if (e.type === 'mouseout' || e.type === 'mouseleave') { 55 | self.hide($this); 56 | } 57 | }); 58 | } 59 | 60 | // $(this.scope).data('fndtn-tooltips', true); 61 | } else { 62 | return this[method].call(this, options); 63 | } 64 | 65 | }, 66 | 67 | showOrCreateTip : function ($target) { 68 | var $tip = this.getTip($target); 69 | 70 | if ($tip && $tip.length > 0) { 71 | return this.show($target); 72 | } 73 | 74 | return this.create($target); 75 | }, 76 | 77 | getTip : function ($target) { 78 | var selector = this.selector($target), 79 | tip = null; 80 | 81 | if (selector) { 82 | tip = $('span[data-selector=' + selector + ']' + this.settings.tooltipClass); 83 | } 84 | 85 | return (typeof tip === 'object') ? tip : false; 86 | }, 87 | 88 | selector : function ($target) { 89 | var id = $target.attr('id'), 90 | dataSelector = $target.attr('data-tooltip') || $target.attr('data-selector'); 91 | 92 | if ((id && id.length < 1 || !id) && typeof dataSelector != 'string') { 93 | dataSelector = 'tooltip' + Math.random().toString(36).substring(7); 94 | $target.attr('data-selector', dataSelector); 95 | } 96 | 97 | return (id && id.length > 0) ? id : dataSelector; 98 | }, 99 | 100 | create : function ($target) { 101 | var $tip = $(this.settings.tipTemplate(this.selector($target), $('
      ').html($target.attr('title')).html())), 102 | classes = this.inheritable_classes($target); 103 | 104 | $tip.addClass(classes).appendTo('body'); 105 | if (Modernizr.touch) { 106 | $tip.append('tap to close '); 107 | } 108 | $target.attr('title', ''); 109 | this.show($target); 110 | }, 111 | 112 | reposition : function (target, tip, classes) { 113 | var width, nub, nubHeight, nubWidth, column, objPos; 114 | 115 | tip.css('visibility', 'hidden').show(); 116 | 117 | width = target.data('width'); 118 | nub = tip.children('.nub'); 119 | nubHeight = this.outerHeight(nub); 120 | nubWidth = this.outerHeight(nub); 121 | 122 | objPos = function (obj, top, right, bottom, left, width) { 123 | return obj.css({ 124 | 'top' : (top) ? top : 'auto', 125 | 'bottom' : (bottom) ? bottom : 'auto', 126 | 'left' : (left) ? left : 'auto', 127 | 'right' : (right) ? right : 'auto', 128 | 'width' : (width) ? width : 'auto' 129 | }).end(); 130 | }; 131 | 132 | objPos(tip, (target.offset().top + this.outerHeight(target) + 10), 'auto', 'auto', target.offset().left, width); 133 | 134 | if ($(window).width() < 767) { 135 | objPos(tip, (target.offset().top + this.outerHeight(target) + 10), 'auto', 'auto', 12.5, $(this.scope).width()); 136 | tip.addClass('tip-override'); 137 | objPos(nub, -nubHeight, 'auto', 'auto', target.offset().left); 138 | } else { 139 | objPos(tip, (target.offset().top + this.outerHeight(target) + 10), 'auto', 'auto', target.offset().left, width); 140 | tip.removeClass('tip-override'); 141 | if (classes && classes.indexOf('tip-top') > -1) { 142 | objPos(tip, (target.offset().top - this.outerHeight(tip)), 'auto', 'auto', target.offset().left, width) 143 | .removeClass('tip-override'); 144 | } else if (classes && classes.indexOf('tip-left') > -1) { 145 | objPos(tip, (target.offset().top + (this.outerHeight(target) / 2) - nubHeight*2.5), 'auto', 'auto', (target.offset().left - this.outerWidth(tip) - nubHeight), width) 146 | .removeClass('tip-override'); 147 | } else if (classes && classes.indexOf('tip-right') > -1) { 148 | objPos(tip, (target.offset().top + (this.outerHeight(target) / 2) - nubHeight*2.5), 'auto', 'auto', (target.offset().left + this.outerWidth(target) + nubHeight), width) 149 | .removeClass('tip-override'); 150 | } 151 | } 152 | 153 | tip.css('visibility', 'visible').hide(); 154 | }, 155 | 156 | inheritable_classes : function (target) { 157 | var inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'noradius'].concat(this.settings.additionalInheritableClasses), 158 | classes = target.attr('class'), 159 | filtered = classes ? $.map(classes.split(' '), function (el, i) { 160 | if ($.inArray(el, inheritables) !== -1) { 161 | return el; 162 | } 163 | }).join(' ') : ''; 164 | 165 | return $.trim(filtered); 166 | }, 167 | 168 | show : function ($target) { 169 | var $tip = this.getTip($target); 170 | 171 | this.reposition($target, $tip, $target.attr('class')); 172 | $tip.fadeIn(150); 173 | }, 174 | 175 | hide : function ($target) { 176 | var $tip = this.getTip($target); 177 | 178 | $tip.fadeOut(150); 179 | }, 180 | 181 | // deprecate reload 182 | reload : function () { 183 | var $self = $(this); 184 | 185 | return ($self.data('fndtn-tooltips')) ? $self.foundationTooltips('destroy').foundationTooltips('init') : $self.foundationTooltips('init'); 186 | }, 187 | 188 | off : function () { 189 | $(this.scope).off('.fndtn.tooltip'); 190 | $(this.settings.tooltipClass).each(function (i) { 191 | $('[data-tooltip]').get(i).attr('title', $(this).text()); 192 | }).remove(); 193 | } 194 | }; 195 | }(Foundation.zj, this, this.document)); 196 | -------------------------------------------------------------------------------- /js/foundation/foundation.topbar.js: -------------------------------------------------------------------------------- 1 | /*jslint unparam: true, browser: true, indent: 2 */ 2 | 3 | ;(function ($, window, document, undefined) { 4 | 'use strict'; 5 | 6 | Foundation.libs.topbar = { 7 | name : 'topbar', 8 | 9 | version : '4.0.0', 10 | 11 | settings : { 12 | index : 0, 13 | stickyClass : 'sticky', 14 | init : false 15 | }, 16 | 17 | init : function (scope, method, options) { 18 | this.scope = scope || this.scope; 19 | 20 | if (typeof method === 'object') { 21 | $.extend(true, this.settings, method); 22 | } 23 | 24 | if (typeof method != 'string') { 25 | this.settings.$w = $(window); 26 | this.settings.$topbar = $('nav.top-bar'); 27 | this.settings.$section = this.settings.$topbar.find('section'); 28 | this.settings.$titlebar = this.settings.$topbar.children('ul').first(); 29 | 30 | var breakpoint = $("
      ").appendTo("body"); 31 | this.settings.breakPoint = breakpoint.width(); 32 | breakpoint.remove(); 33 | 34 | if (!this.settings.init) { 35 | this.events(); 36 | this.assemble(); 37 | } 38 | 39 | if (!this.settings.height) this.largestUL(); 40 | 41 | if (this.settings.$topbar.parent().hasClass('fixed')) { 42 | $('body').css('padding-top', this.outerHeight(this.settings.$topbar)); 43 | } 44 | 45 | return this.settings.init; 46 | } else { 47 | // fire method 48 | return this[method].call(this, options); 49 | } 50 | }, 51 | 52 | events : function () { 53 | $(this.scope) 54 | .on('click.fndtn.topbar', '.top-bar .toggle-topbar', function (e) { 55 | e.preventDefault(); 56 | 57 | if (this.breakpoint()) { 58 | this.settings.$topbar.toggleClass('expanded'); 59 | this.settings.$topbar.css('min-height', ''); 60 | } 61 | 62 | if (!this.settings.$topbar.hasClass('expanded')) { 63 | this.settings.$section.css({left: '0%'}); 64 | this.settings.$section.find('>.name').css({left: '100%'}); 65 | this.settings.$section.find('li.moved').removeClass('moved'); 66 | this.settings.index = 0; 67 | } 68 | }.bind(this)) 69 | 70 | .on('click.fndtn.topbar', '.top-bar .has-dropdown>a', function (e) { 71 | var self = Foundation.libs.topbar; 72 | 73 | if (Modernizr.touch || self.breakpoint()) 74 | e.preventDefault(); 75 | 76 | if (self.breakpoint()) { 77 | var $this = $(this), 78 | $selectedLi = $this.closest('li'); 79 | 80 | self.settings.index += 1; 81 | $selectedLi.addClass('moved'); 82 | self.settings.$section.css({left: -(100 * self.settings.index) + '%'}); 83 | self.settings.$section.find('>.name').css({left: 100 * self.settings.index + '%'}); 84 | 85 | $this.siblings('ul') 86 | .height(self.settings.height + self.outerHeight(self.settings.$titlebar, true)); 87 | self.settings.$topbar 88 | .css('min-height', self.settings.height + self.outerHeight(self.settings.$titlebar, true) * 2) 89 | } 90 | }); 91 | 92 | $(window).on('resize.fndtn.topbar', function () { 93 | if (!this.breakpoint()) { 94 | this.settings.$topbar.css('min-height', ''); 95 | } 96 | }.bind(this)); 97 | 98 | // Go up a level on Click 99 | $(this.scope).on('click.fndtn', '.top-bar .has-dropdown .back', function (e) { 100 | e.preventDefault(); 101 | 102 | var $this = $(this), 103 | self = Foundation.libs.topbar, 104 | $movedLi = $this.closest('li.moved'), 105 | $previousLevelUl = $movedLi.parent(); 106 | 107 | self.settings.index -= 1; 108 | self.settings.$section.css({left: -(100 * self.settings.index) + '%'}); 109 | self.settings.$section.find('>.name').css({'left': 100 * self.settings.index + '%'}); 110 | 111 | if (self.settings.index === 0) { 112 | self.settings.$topbar.css('min-height', 0); 113 | } 114 | 115 | setTimeout(function () { 116 | $movedLi.removeClass('moved'); 117 | }, 300); 118 | }); 119 | }, 120 | 121 | breakpoint : function () { 122 | return this.settings.$w.width() <= this.settings.breakPoint || $('html').hasClass('lt-ie9'); 123 | }, 124 | 125 | assemble : function () { 126 | // Pull element out of the DOM for manipulation 127 | this.settings.$section.detach(); 128 | 129 | this.settings.$section.find('.has-dropdown>a').each(function () { 130 | var $link = $(this), 131 | $dropdown = $link.siblings('.dropdown'), 132 | $titleLi = $('
    2. « Back
    3. '); 133 | // Copy link to subnav 134 | $dropdown.prepend($titleLi); 135 | }); 136 | 137 | // Put element back in the DOM 138 | this.settings.$section.appendTo(this.settings.$topbar); 139 | 140 | // check for sticky 141 | this.sticky(); 142 | }, 143 | 144 | largestUL : function () { 145 | var uls = this.settings.$topbar.find('section ul ul'), 146 | largest = uls.first(), 147 | total = 0, 148 | self = this; 149 | 150 | uls.each(function () { 151 | if ($(this).children('li').length > largest.children('li').length) { 152 | largest = $(this); 153 | } 154 | }); 155 | 156 | largest.children('li').each(function () { total += self.outerHeight($(this), true); }); 157 | 158 | this.settings.height = total; 159 | }, 160 | 161 | sticky : function () { 162 | var klass = '.' + this.stickyClass; 163 | if ($(klass).length > 0) { 164 | var distance = $(klass).length ? $(klass).offset().top: 0, 165 | $window = $(window); 166 | var offst = this.outerHeight($('nav.top-bar'))+20; 167 | 168 | $window.scroll(function() { 169 | if ($window.scrollTop() >= (distance)) { 170 | $(klass).addClass("fixed"); 171 | $('body').css('padding-top',offst); 172 | } 173 | 174 | else if ($window.scrollTop() < distance) { 175 | $(klass).removeClass("fixed"); 176 | $('body').css('padding-top','0'); 177 | } 178 | }); 179 | } 180 | }, 181 | 182 | off : function () { 183 | $(this.scope).off('.fndtn.topbar'); 184 | $(window).off('.fndtn.topbar'); 185 | } 186 | }; 187 | }(Foundation.zj, this, this.document)); 188 | -------------------------------------------------------------------------------- /js/html5.js: -------------------------------------------------------------------------------- 1 | /*! HTML5 Shiv v3.6 stable | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed */ 2 | (function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); 3 | a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; 4 | c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^<|^(?:a|b|button|code|div|fieldset|form|h1|h2|h3|h4|h5|h6|i|iframe|img|input|label|li|link|ol|option|p|param|q|script|select|span|strong|style|table|tbody|td|textarea|tfoot|th|thead|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a"); 5 | var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header mark meter nav output progress section summary time video",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a, 6 | b){a||(a=f);if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d -1, 3 | is_opera = navigator.userAgent.toLowerCase().indexOf( 'opera' ) > -1, 4 | is_ie = navigator.userAgent.toLowerCase().indexOf( 'msie' ) > -1; 5 | 6 | if ( ( is_webkit || is_opera || is_ie ) && 'undefined' !== typeof( document.getElementById ) ) { 7 | var eventMethod = ( window.addEventListener ) ? 'addEventListener' : 'attachEvent'; 8 | window[ eventMethod ]( 'hashchange', function() { 9 | var element = document.getElementById( location.hash.substring( 1 ) ); 10 | 11 | if ( element ) { 12 | if ( ! /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) 13 | element.tabIndex = -1; 14 | 15 | element.focus(); 16 | } 17 | }, false ); 18 | } 19 | })(); 20 | -------------------------------------------------------------------------------- /js/vendor/custom.modernizr.js: -------------------------------------------------------------------------------- 1 | /* Modernizr 2.6.2 (Custom Build) | MIT & BSD 2 | * Build: http://modernizr.com/download/#-inlinesvg-svg-svgclippaths-touch-shiv-mq-cssclasses-teststyles-prefixes-ie8compat-load 3 | */ 4 | ;window.Modernizr=function(a,b,c){function y(a){j.cssText=a}function z(a,b){return y(m.join(a+";")+(b||""))}function A(a,b){return typeof a===b}function B(a,b){return!!~(""+a).indexOf(b)}function C(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:A(f,"function")?f.bind(d||b):f}return!1}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n={svg:"http://www.w3.org/2000/svg"},o={},p={},q={},r=[],s=r.slice,t,u=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["­",'"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},v=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return u("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},w={}.hasOwnProperty,x;!A(w,"undefined")&&!A(w.call,"undefined")?x=function(a,b){return w.call(a,b)}:x=function(a,b){return b in a&&A(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=s.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(s.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(s.call(arguments)))};return e}),o.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:u(["@media (",m.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},o.svg=function(){return!!b.createElementNS&&!!b.createElementNS(n.svg,"svg").createSVGRect},o.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="",(a.firstChild&&a.firstChild.namespaceURI)==n.svg},o.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(l.call(b.createElementNS(n.svg,"clipPath")))};for(var D in o)x(o,D)&&(t=D.toLowerCase(),e[t]=o[D](),r.push((e[t]?"":"no-")+t));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)x(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},y(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=m,e.mq=v,e.testStyles=u,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+r.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f str_replace( $big, '%#%', get_pagenum_link($big) ), 12 | 'current' => max( 1, get_query_var('paged') ), 13 | 'total' => $wp_query->max_num_pages, 14 | 'mid_size' => 5, 15 | 'prev_next' => True, 16 | 'prev_text' => __('«'), 17 | 'next_text' => __('»'), 18 | 'type' => 'list' 19 | ) ); 20 | 21 | // Display the pagination if more than one page is found 22 | if ( $paginate_links ) { 23 | echo '
      '; 24 | echo $paginate_links; 25 | echo '
      '; 26 | } 27 | } 28 | 29 | /** 30 | * A fallback when no navigation is selected by default, otherwise it throws some nasty errors in your face. 31 | * From required+ Foundation http://themes.required.ch 32 | */ 33 | function reverie_menu_fallback() { 34 | echo '
      '; 35 | // Translators 1: Link to Menus, 2: Link to Customize 36 | printf( __( 'Please assign a menu to the primary menu location under %1$s or %2$s the design.', 'reverie' ), 37 | sprintf( __( 'Menus', 'reverie' ), 38 | get_admin_url( get_current_blog_id(), 'nav-menus.php' ) 39 | ), 40 | sprintf( __( 'Customize', 'reverie' ), 41 | get_admin_url( get_current_blog_id(), 'customize.php' ) 42 | ) 43 | ); 44 | echo '
      '; 45 | } 46 | 47 | // Add Foundation 'active' class for the current menu item 48 | function reverie_active_nav_class( $classes, $item ) { 49 | if ( $item->current == 1 || $item->current_item_ancestor == true ) { 50 | $classes[] = 'active'; 51 | } 52 | return $classes; 53 | } 54 | add_filter( 'nav_menu_css_class', 'reverie_active_nav_class', 10, 2 ); 55 | 56 | /** 57 | * Use the active class of ZURB Foundation on wp_list_pages output. 58 | * From required+ Foundation http://themes.required.ch 59 | */ 60 | function reverie_active_list_pages_class( $input ) { 61 | 62 | $pattern = '/current_page_item/'; 63 | $replace = 'current_page_item active'; 64 | 65 | $output = preg_replace( $pattern, $replace, $input ); 66 | 67 | return $output; 68 | } 69 | add_filter( 'wp_list_pages', 'reverie_active_list_pages_class', 10, 2 ); 70 | 71 | /** 72 | * class required_walker 73 | * Custom output to enable the the ZURB Navigation style. 74 | * Courtesy of Kriesi.at. http://www.kriesi.at/archives/improve-your-wordpress-navigation-menu-output 75 | * From required+ Foundation http://themes.required.ch 76 | */ 77 | class reverie_walker extends Walker_Nav_Menu { 78 | 79 | /** 80 | * Specify the item type to allow different walkers 81 | * @var array 82 | */ 83 | var $nav_bar = ''; 84 | 85 | function __construct( $nav_args = '' ) { 86 | 87 | $defaults = array( 88 | 'item_type' => 'li', 89 | 'in_top_bar' => false, 90 | ); 91 | $this->nav_bar = apply_filters( 'req_nav_args', wp_parse_args( $nav_args, $defaults ) ); 92 | } 93 | 94 | function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) { 95 | 96 | $id_field = $this->db_fields['id']; 97 | if ( is_object( $args[0] ) ) { 98 | $args[0]->has_children = ! empty( $children_elements[$element->$id_field] ); 99 | } 100 | return parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output ); 101 | } 102 | 103 | function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) { 104 | 105 | global $wp_query; 106 | $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; 107 | 108 | $class_names = $value = ''; 109 | 110 | $classes = empty( $item->classes ) ? array() : (array) $item->classes; 111 | $classes[] = 'menu-item-' . $item->ID; 112 | 113 | // Check for flyout 114 | $flyout_toggle = ''; 115 | if ( $args->has_children && $this->nav_bar['item_type'] == 'li' ) { 116 | 117 | if ( $depth == 0 && $this->nav_bar['in_top_bar'] == false ) { 118 | 119 | $classes[] = 'has-flyout'; 120 | $flyout_toggle = ''; 121 | 122 | } else if ( $this->nav_bar['in_top_bar'] == true ) { 123 | 124 | $classes[] = 'has-dropdown'; 125 | $flyout_toggle = ''; 126 | } 127 | 128 | } 129 | 130 | $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) ); 131 | $class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : ''; 132 | 133 | if ( $depth > 0 ) { 134 | $output .= $indent . '
    4. ' : '' ) . '<' . $this->nav_bar['item_type'] . ' id="menu-item-'. $item->ID . '"' . $value . $class_names .'>'; 137 | } 138 | 139 | $attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : ''; 140 | $attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : ''; 141 | $attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : ''; 142 | $attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : ''; 143 | 144 | $item_output = $args->before; 145 | $item_output .= ''; 146 | $item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after; 147 | $item_output .= ''; 148 | $item_output .= $flyout_toggle; // Add possible flyout toggle 149 | $item_output .= $args->after; 150 | 151 | $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); 152 | } 153 | 154 | function end_el( &$output, $item, $depth = 0, $args = array() ) { 155 | 156 | if ( $depth > 0 ) { 157 | $output .= "\n"; 158 | } else { 159 | $output .= "nav_bar['item_type'] . ">\n"; 160 | } 161 | } 162 | 163 | function start_lvl( &$output, $depth = 0, $args = array() ) { 164 | 165 | if ( $depth == 0 && $this->nav_bar['item_type'] == 'li' ) { 166 | $indent = str_repeat("\t", 1); 167 | $output .= $this->nav_bar['in_top_bar'] == true ? "\n$indent
        \n" : "\n$indent
          \n"; 168 | } else { 169 | $indent = str_repeat("\t", $depth); 170 | $output .= $this->nav_bar['in_top_bar'] == true ? "\n$indent
            \n" : "\n$indent
              \n"; 171 | } 172 | } 173 | } 174 | ?> -------------------------------------------------------------------------------- /no-results.php: -------------------------------------------------------------------------------- 1 | 10 | 11 |
              12 |
              13 |

              14 |
              15 | 16 |
              17 | 18 | 19 |

              Get started here.', 'classticket' ), esc_url( admin_url( 'post-new.php' ) ) ); ?>

              20 | 21 | 22 | 23 |

              24 | 25 | 26 | 27 | 28 |

              29 | 30 | 31 | 32 |
              33 |
              34 | -------------------------------------------------------------------------------- /page.php: -------------------------------------------------------------------------------- 1 | 14 | 15 |
              16 |
              17 | 18 | 19 | 20 | 21 | 22 | 27 | 28 | 29 | 30 |
              31 |
              32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /print.css: -------------------------------------------------------------------------------- 1 | /* Welcome to Compass. Use this file to define print styles. 2 | * Import this file using the following HTML or equivalent: 3 | * */ 4 | -------------------------------------------------------------------------------- /robots.txt: -------------------------------------------------------------------------------- 1 | # www.robotstxt.org/ 2 | # www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449 3 | 4 | User-agent: * -------------------------------------------------------------------------------- /rtl.css: -------------------------------------------------------------------------------- 1 | /* 2 | Theme Name: ClassTicket 3 | 4 | Adding support for language written in a Right To Left (RTL) direction is easy - 5 | it's just a matter of overwriting all the horizontal positioning attributes 6 | of your CSS stylesheet in a separate stylesheet file named rtl.css. 7 | 8 | http://codex.wordpress.org/Right_to_Left_Language_Support 9 | 10 | */ 11 | 12 | /* 13 | body { 14 | direction: rtl; 15 | unicode-bidi: embed; 16 | } 17 | */ -------------------------------------------------------------------------------- /sass/_core.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | Theme Name: ClassTicket 3 | Theme URI: http://underscores.me/ 4 | Author: Underscores.me 5 | Author URI: http://underscores.me/ 6 | Description: Description 7 | Version: 1.0 8 | License: GNU General Public License 9 | License URI: license.txt 10 | Tags: 11 | 12 | This theme, like WordPress, is licensed under the GPL. 13 | Use it to make something cool, have fun, and share what you've learned with others. 14 | 15 | _s is based on Underscores http://underscores.me/, (C) 2012-2013 Automattic, Inc. 16 | 17 | Resetting and rebuilding styles have been helped along thanks to the fine work of 18 | Eric Meyer http://meyerweb.com/eric/tools/css/reset/index.html 19 | along with Nicolas Gallagher and Jonathan Neal http://necolas.github.com/normalize.css/ 20 | and Blueprint http://www.blueprintcss.org/ 21 | */ 22 | 23 | 24 | /* =Reset 25 | -------------------------------------------------------------- */ 26 | 27 | html, body, div, span, applet, object, iframe, 28 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 29 | a, abbr, acronym, address, big, cite, code, 30 | del, dfn, em, font, ins, kbd, q, s, samp, 31 | small, strike, strong, sub, sup, tt, var, 32 | dl, dt, dd, ol, ul, li, 33 | fieldset, form, label, legend, 34 | table, caption, tbody, tfoot, thead, tr, th, td { 35 | border: 0; 36 | font-family: inherit; 37 | font-size: 100%; 38 | font-style: inherit; 39 | font-weight: inherit; 40 | margin: 0; 41 | outline: 0; 42 | padding: 0; 43 | vertical-align: baseline; 44 | } 45 | html { 46 | font-size: 62.5%; /* Corrects text resizing oddly in IE6/7 when body font-size is set using em units http://clagnut.com/blog/348/#c790 */ 47 | overflow-y: scroll; /* Keeps page centred in all browsers regardless of content height */ 48 | -webkit-text-size-adjust: 100%; /* Prevents iOS text size adjust after orientation change, without disabling user zoom */ 49 | -ms-text-size-adjust: 100%; /* www.456bereastreet.com/archive/201012/controlling_text_size_in_safari_for_ios_without_disabling_user_zoom/ */ 50 | } 51 | body { 52 | background: #fff; 53 | } 54 | article, 55 | aside, 56 | details, 57 | figcaption, 58 | figure, 59 | footer, 60 | header, 61 | nav, 62 | section { 63 | display: block; 64 | } 65 | ol, ul { 66 | list-style: none; 67 | } 68 | table { /* tables still need 'cellspacing="0"' in the markup */ 69 | border-collapse: separate; 70 | border-spacing: 0; 71 | } 72 | caption, th, td { 73 | font-weight: normal; 74 | text-align: left; 75 | } 76 | blockquote:before, blockquote:after, 77 | q:before, q:after { 78 | content: ""; 79 | } 80 | blockquote, q { 81 | quotes: "" ""; 82 | } 83 | a:focus { 84 | outline: thin dotted; 85 | } 86 | a:hover, 87 | a:active { /* Improves readability when focused and also mouse hovered in all browsers people.opera.com/patrickl/experiments/keyboard/test */ 88 | outline: 0; 89 | } 90 | a img { 91 | border: 0; 92 | } 93 | 94 | 95 | /* =Global 96 | ----------------------------------------------- */ 97 | 98 | body, 99 | button, 100 | input, 101 | select, 102 | textarea { 103 | color: #404040; 104 | font-family: sans-serif; 105 | font-size: 16px; 106 | font-size: 1.6rem; 107 | line-height: 1.5; 108 | } 109 | 110 | /* Headings */ 111 | h1,h2,h3,h4,h5,h6 { 112 | } 113 | hr { 114 | background-color: #ccc; 115 | border: 0; 116 | height: 1px; 117 | margin-bottom: 1.5em; 118 | } 119 | 120 | /* Text elements */ 121 | p { 122 | margin-bottom: 1.5em; 123 | } 124 | ul, ol { 125 | margin: 0 0 1.5em 3em; 126 | } 127 | ul { 128 | list-style: disc; 129 | } 130 | ol { 131 | list-style: decimal; 132 | } 133 | li > ul, 134 | li > ol { 135 | margin-bottom: 0; 136 | margin-left: 1.5em; 137 | } 138 | dt { 139 | font-weight: bold; 140 | } 141 | dd { 142 | margin: 0 1.5em 1.5em; 143 | } 144 | b, strong { 145 | font-weight: bold; 146 | } 147 | dfn, cite, em, i { 148 | font-style: italic; 149 | } 150 | blockquote { 151 | margin: 0 1.5em; 152 | } 153 | address { 154 | margin: 0 0 1.5em; 155 | } 156 | pre { 157 | background: #eee; 158 | font-family: "Courier 10 Pitch", Courier, monospace; 159 | font-size: 15px; 160 | font-size: 1.5rem; 161 | line-height: 1.6; 162 | margin-bottom: 1.6em; 163 | padding: 1.6em; 164 | overflow: auto; 165 | max-width: 100%; 166 | } 167 | code, kbd, tt, var { 168 | font: 15px Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; 169 | } 170 | abbr, acronym { 171 | border-bottom: 1px dotted #666; 172 | cursor: help; 173 | } 174 | mark, ins { 175 | background: #fff9c0; 176 | text-decoration: none; 177 | } 178 | sup, 179 | sub { 180 | font-size: 75%; 181 | height: 0; 182 | line-height: 0; 183 | position: relative; 184 | vertical-align: baseline; 185 | } 186 | sup { 187 | bottom: 1ex; 188 | } 189 | sub { 190 | top: .5ex; 191 | } 192 | small { 193 | font-size: 75%; 194 | } 195 | big { 196 | font-size: 125%; 197 | } 198 | figure { 199 | margin: 0; 200 | } 201 | table { 202 | margin: 0 0 1.5em; 203 | width: 100%; 204 | } 205 | th { 206 | font-weight: bold; 207 | } 208 | img { 209 | height: auto; /* Make sure images are scaled correctly. */ 210 | max-width: 100%; /* Adhere to container width. */ 211 | } 212 | button, 213 | input, 214 | select, 215 | textarea { 216 | font-size: 100%; /* Corrects font size not being inherited in all browsers */ 217 | margin: 0; /* Addresses margins set differently in IE6/7, F3/4, S5, Chrome */ 218 | vertical-align: baseline; /* Improves appearance and consistency in all browsers */ 219 | *vertical-align: middle; /* Improves appearance and consistency in all browsers */ 220 | } 221 | button, 222 | input { 223 | line-height: normal; /* Addresses FF3/4 setting line-height using !important in the UA stylesheet */ 224 | } 225 | button, 226 | html input[type="button"], 227 | input[type="reset"], 228 | input[type="submit"] { 229 | border: 1px solid #ccc; 230 | border-color: #ccc #ccc #bbb #ccc; 231 | border-radius: 3px; 232 | background: #e6e6e6; 233 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.5), inset 0 15px 17px rgba(255, 255, 255, 0.5), inset 0 -5px 12px rgba(0, 0, 0, 0.05); 234 | color: rgba(0, 0, 0, .8); 235 | cursor: pointer; /* Improves usability and consistency of cursor style between image-type 'input' and others */ 236 | -webkit-appearance: button; /* Corrects inability to style clickable 'input' types in iOS */ 237 | font-size: 12px; 238 | font-size: 1.2rem; 239 | line-height: 1; 240 | padding: .6em 1em .4em; 241 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); 242 | } 243 | button:hover, 244 | html input[type="button"]:hover, 245 | input[type="reset"]:hover, 246 | input[type="submit"]:hover { 247 | border-color: #ccc #bbb #aaa #bbb; 248 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8), inset 0 15px 17px rgba(255, 255, 255, 0.8), inset 0 -5px 12px rgba(0, 0, 0, 0.02); 249 | } 250 | button:focus, 251 | html input[type="button"]:focus, 252 | input[type="reset"]:focus, 253 | input[type="submit"]:focus, 254 | button:active, 255 | html input[type="button"]:active, 256 | input[type="reset"]:active, 257 | input[type="submit"]:active { 258 | border-color: #aaa #bbb #bbb #bbb; 259 | box-shadow: inset 0 -1px 0 rgba(255, 255, 255, 0.5), inset 0 2px 5px rgba(0, 0, 0, 0.15); 260 | } 261 | input[type="checkbox"], 262 | input[type="radio"] { 263 | box-sizing: border-box; /* Addresses box sizing set to content-box in IE8/9 */ 264 | padding: 0; /* Addresses excess padding in IE8/9 */ 265 | } 266 | input[type="search"] { 267 | -webkit-appearance: textfield; /* Addresses appearance set to searchfield in S5, Chrome */ 268 | -webkit-box-sizing: content-box; /* Addresses box sizing set to border-box in S5, Chrome (include -moz to future-proof) */ 269 | -moz-box-sizing: content-box; 270 | box-sizing: content-box; 271 | } 272 | input[type="search"]::-webkit-search-decoration { /* Corrects inner padding displayed oddly in S5, Chrome on OSX */ 273 | -webkit-appearance: none; 274 | } 275 | button::-moz-focus-inner, 276 | input::-moz-focus-inner { /* Corrects inner padding and border displayed oddly in FF3/4 www.sitepen.com/blog/2008/05/14/the-devils-in-the-details-fixing-dojos-toolbar-buttons/ */ 277 | border: 0; 278 | padding: 0; 279 | } 280 | input[type="text"], 281 | input[type="email"], 282 | input[type="password"], 283 | input[type="search"], 284 | textarea { 285 | color: #666; 286 | border: 1px solid #ccc; 287 | border-radius: 3px; 288 | } 289 | input[type="text"]:focus, 290 | input[type="email"]:focus, 291 | input[type="password"]:focus, 292 | input[type="search"]:focus, 293 | textarea:focus { 294 | color: #111; 295 | } 296 | input[type="text"], 297 | input[type="email"], 298 | input[type="password"], 299 | input[type="search"] { 300 | padding: 3px; 301 | } 302 | textarea { 303 | overflow: auto; /* Removes default vertical scrollbar in IE6/7/8/9 */ 304 | padding-left: 3px; 305 | vertical-align: top; /* Improves readability and alignment in all browsers */ 306 | width: 98%; 307 | } 308 | 309 | /* Links */ 310 | a { 311 | color: royalblue; 312 | } 313 | a:visited { 314 | color: purple; 315 | } 316 | a:hover, 317 | a:focus, 318 | a:active { 319 | color: midnightblue; 320 | } 321 | 322 | /* Alignment */ 323 | .alignleft { 324 | display: inline; 325 | float: left; 326 | margin-right: 1.5em; 327 | } 328 | .alignright { 329 | display: inline; 330 | float: right; 331 | margin-left: 1.5em; 332 | } 333 | .aligncenter { 334 | clear: both; 335 | display: block; 336 | margin: 0 auto; 337 | } 338 | 339 | /* Text meant only for screen readers */ 340 | .screen-reader-text { 341 | clip: rect(1px, 1px, 1px, 1px); 342 | position: absolute !important; 343 | } 344 | 345 | .screen-reader-text:hover, 346 | .screen-reader-text:active, 347 | .screen-reader-text:focus { 348 | background-color: #f1f1f1; 349 | border-radius: 3px; 350 | box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); 351 | clip: auto !important; 352 | color: #21759b; 353 | display: block; 354 | font-size: 14px; 355 | font-weight: bold; 356 | height: auto; 357 | left: 5px; 358 | line-height: normal; 359 | padding: 15px 23px 14px; 360 | text-decoration: none; 361 | top: 5px; 362 | width: auto; 363 | z-index: 100000; /* Above WP toolbar */ 364 | } 365 | 366 | /* Clearing */ 367 | .clear:before, 368 | .clear:after, 369 | [class*="content"]:before, 370 | [class*="content"]:after, 371 | [class*="site"]:before, 372 | [class*="site"]:after { 373 | content: ''; 374 | display: table; 375 | } 376 | 377 | .clear:after, 378 | [class*="content"]:after, 379 | [class*="site"]:after { 380 | } 381 | 382 | 383 | /* =Menu 384 | ----------------------------------------------- */ 385 | 386 | .navigation-main { 387 | display: block; 388 | float: left; 389 | width: 100%; 390 | } 391 | .navigation-main ul { 392 | list-style: none; 393 | margin: 0; 394 | padding-left: 0; 395 | } 396 | .navigation-main li { 397 | float: left; 398 | position: relative; 399 | } 400 | .navigation-main a { 401 | display: block; 402 | text-decoration: none; 403 | } 404 | .navigation-main ul ul { 405 | box-shadow: 0 3px 3px rgba(0, 0, 0, 0.2); 406 | display: none; 407 | float: left; 408 | position: absolute; 409 | top: 1.5em; 410 | left: 0; 411 | z-index: 99999; 412 | } 413 | .navigation-main ul ul ul { 414 | left: 100%; 415 | top: 0; 416 | } 417 | .navigation-main ul ul a { 418 | width: 200px; 419 | } 420 | .navigation-main ul ul li { 421 | } 422 | .navigation-main li:hover > a { 423 | } 424 | .navigation-main ul ul :hover > a { 425 | } 426 | .navigation-main ul ul a:hover { 427 | } 428 | .navigation-main ul li:hover > ul { 429 | display: block; 430 | } 431 | .navigation-main li.current_page_item a, 432 | .navigation-main li.current-menu-item a { 433 | } 434 | 435 | /* Small menu */ 436 | .menu-toggle { 437 | display: none; 438 | cursor: pointer; 439 | } 440 | 441 | .main-small-navigation ul { 442 | display: none; 443 | } 444 | 445 | @media screen and (max-width: 600px) { 446 | .menu-toggle, 447 | .main-small-navigation ul.nav-menu.toggled-on { 448 | display: block; 449 | } 450 | 451 | .navigation-main ul { 452 | display: none; 453 | } 454 | } 455 | 456 | /* =Content 457 | ----------------------------------------------- */ 458 | 459 | .sticky { 460 | } 461 | .hentry { 462 | margin: 0 0 1.5em; 463 | } 464 | .byline { 465 | display: none; 466 | } 467 | .single .byline, 468 | .group-blog .byline { 469 | display: inline; 470 | } 471 | .entry-content, 472 | .entry-summary { 473 | margin: 1.5em 0 0; 474 | } 475 | .page-links { 476 | clear: both; 477 | margin: 0 0 1.5em; 478 | } 479 | 480 | 481 | /* =Asides 482 | ----------------------------------------------- */ 483 | 484 | .blog .format-aside .entry-title, 485 | .archive .format-aside .entry-title { 486 | display: none; 487 | } 488 | 489 | 490 | /* =Media 491 | ----------------------------------------------- */ 492 | 493 | .entry-content img.wp-smiley, 494 | .comment-content img.wp-smiley { 495 | border: none; 496 | margin-bottom: 0; 497 | margin-top: 0; 498 | padding: 0; 499 | } 500 | .wp-caption { 501 | border: 1px solid #ccc; 502 | margin-bottom: 1.5em; 503 | max-width: 100%; 504 | } 505 | .wp-caption img[class*="wp-image-"] { 506 | display: block; 507 | margin: 1.2% auto 0; 508 | max-width: 98%; 509 | } 510 | .wp-caption-text { 511 | text-align: center; 512 | } 513 | .wp-caption .wp-caption-text { 514 | margin: 0.8075em 0; 515 | } 516 | .site-content .gallery { 517 | margin-bottom: 1.5em; 518 | } 519 | .gallery-caption { 520 | } 521 | .site-content .gallery a img { 522 | border: none; 523 | height: auto; 524 | max-width: 90%; 525 | } 526 | .site-content .gallery dd { 527 | margin: 0; 528 | } 529 | .site-content .gallery-columns-4 .gallery-item { 530 | } 531 | .site-content .gallery-columns-4 .gallery-item img { 532 | } 533 | 534 | /* Make sure embeds and iframes fit their containers */ 535 | embed, 536 | iframe, 537 | object { 538 | max-width: 100%; 539 | } 540 | 541 | 542 | /* =Navigation 543 | ----------------------------------------------- */ 544 | 545 | .site-content [class*="navigation"] { 546 | margin: 0 0 1.5em; 547 | overflow: hidden; 548 | } 549 | [class*="navigation"] .nav-previous { 550 | float: left; 551 | width: 50%; 552 | } 553 | [class*="navigation"] .nav-next { 554 | float: right; 555 | text-align: right; 556 | width: 50%; 557 | } 558 | 559 | /* =Comments 560 | ----------------------------------------------- */ 561 | 562 | .comment-content a { 563 | word-wrap: break-word; 564 | } 565 | .bypostauthor { 566 | } 567 | 568 | /* =Widgets 569 | ----------------------------------------------- */ 570 | 571 | .widget { 572 | margin: 0 0 1.5em; 573 | } 574 | 575 | /* Make sure select elements fit in widgets */ 576 | .widget select { 577 | max-width: 100%; 578 | } 579 | 580 | /* Search widget */ 581 | .widget_search .submit { 582 | display: none; 583 | } 584 | 585 | /* =Infinite Scroll 586 | ----------------------------------------------- */ 587 | 588 | /* Globally hidden elements when Infinite Scroll is supported and in use. */ 589 | .infinite-scroll .navigation-paging, /* Older / Newer Posts Navigation (always hidden) */ 590 | .infinite-scroll.neverending .site-footer { /* Theme Footer (when set to scrolling) */ 591 | display: none; 592 | } 593 | 594 | /* When Infinite Scroll has reached its end we need to re-display elements that were hidden (via .neverending) before */ 595 | .infinity-end.neverending .site-footer { 596 | display: block; 597 | } 598 | 599 | -------------------------------------------------------------------------------- /sass/_header.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/sass/_header.scss -------------------------------------------------------------------------------- /sass/_ie.scss: -------------------------------------------------------------------------------- 1 | /* Welcome to Compass. Use this file to write IE specific override styles. 2 | * Import this file using the following HTML or equivalent: 3 | * */ 6 | -------------------------------------------------------------------------------- /sass/_print.scss: -------------------------------------------------------------------------------- 1 | /* Welcome to Compass. Use this file to define print styles. 2 | * Import this file using the following HTML or equivalent: 3 | * */ 4 | -------------------------------------------------------------------------------- /sass/_screen.scss: -------------------------------------------------------------------------------- 1 | /* Welcome to Compass. 2 | * In this file you should write your main styles. (or centralize your imports) 3 | * Import this file using the following HTML or equivalent: 4 | * */ 5 | 6 | @import "compass/reset"; 7 | -------------------------------------------------------------------------------- /sass/_settings.scss: -------------------------------------------------------------------------------- 1 | // Settings file to override Foundation variables 2 | 3 | // You can find the variables for each component at the bottom of their 4 | // doc page. We tried to name them to where they'd make sense just by reading them. 5 | // Go to http://foundation.zurb.com/docs/ to find what you need. 6 | 7 | -------------------------------------------------------------------------------- /sass/style.scss: -------------------------------------------------------------------------------- 1 | @import "core"; 2 | @import "ie"; 3 | @import "print"; 4 | @import "screen"; 5 | @import "header"; 6 | 7 | @import "variables"; 8 | 9 | @import "settings"; 10 | 11 | // Comment out this import if you are customizing you imports below 12 | @import "foundation"; 13 | 14 | // Import specific parts of Foundation by commenting the import "foundation" 15 | // and uncommenting what you want below. You must uncomment the following if customizing 16 | 17 | // @import 18 | // "foundation/components/grid", 19 | // "foundation/components/visibility", 20 | // "foundation/components/block-grid", 21 | // "foundation/components/type", 22 | // "foundation/components/buttons", 23 | // "foundation/components/forms", 24 | // "foundation/components/custom-forms", 25 | // "foundation/components/button-groups", 26 | // "foundation/components/dropdown-buttons", 27 | // "foundation/components/split-buttons", 28 | // "foundation/components/flex-video", 29 | // "foundation/components/section", 30 | // "foundation/components/top-bar", 31 | // "foundation/components/orbit", 32 | // "foundation/components/reveal", 33 | // "foundation/components/joyride", 34 | // "foundation/components/clearing", 35 | // "foundation/components/alert-boxes", 36 | // "foundation/components/breadcrumbs", 37 | // "foundation/components/keystrokes", 38 | // "foundation/components/labels", 39 | // "foundation/components/inline-lists", 40 | // "foundation/components/pagination", 41 | // "foundation/components/panels", 42 | // "foundation/components/pricing-tables", 43 | // "foundation/components/progress-bars", 44 | // "foundation/components/side-nav", 45 | // "foundation/components/sub-nav", 46 | // "foundation/components/switch", 47 | // "foundation/components/magellan", 48 | // "foundation/components/tables", 49 | // "foundation/components/thumbs", 50 | // "foundation/components/tooltips", 51 | // "foundation/components/dropdown"; 52 | 53 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rememberlenny/underscore-foundation/c679b041f577971a8acacfa2f5b39cc0730bcb3c/screenshot.png -------------------------------------------------------------------------------- /search.php: -------------------------------------------------------------------------------- 1 | 9 | 10 |
              11 |
              12 | 13 | 14 | 15 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
              35 |
              36 | 37 | 38 | -------------------------------------------------------------------------------- /searchform.php: -------------------------------------------------------------------------------- 1 | 8 | 13 | -------------------------------------------------------------------------------- /sidebar.php: -------------------------------------------------------------------------------- 1 | 8 | 34 | -------------------------------------------------------------------------------- /single.php: -------------------------------------------------------------------------------- 1 | 9 | 10 |
              11 |
              12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 24 | 25 | 26 | 27 |
              28 |
              29 | 30 | 31 | --------------------------------------------------------------------------------