├── style-guide ├── home.html ├── secondary.html ├── tertiary.html └── general-elements.html ├── .gitignore ├── css └── public │ ├── 99-site-footer.css │ ├── 00-banner.css │ ├── 06-banner-single.css │ ├── 02-banner-featured.css │ ├── 03-block-featured.css │ ├── 07-single-post.css │ ├── 01-header.css │ └── 04-block-tabs.css ├── theme-functions ├── theme.php └── posts.php ├── parts ├── after-main.php ├── before-main.php ├── single-layout-post.php ├── banners │ ├── banner-home.php │ └── banner-single.php ├── archive-layout.php └── blocks │ ├── featured.php │ └── tabs.php ├── widgets ├── displays │ └── figure.php ├── give │ └── post-give.php └── post-images.php ├── README.md ├── .editorconfig ├── js └── public │ └── 01-cmv-advance.js ├── style.css ├── home.php ├── composer.json ├── includes ├── theme-functions.php ├── theme-metaboxes.php ├── theme-widgets.php ├── theme-scripts.php ├── theme-customizer.php ├── theme-feeds.php ├── post-meta-give.php └── theme-sidebars.php ├── package.json ├── functions.php ├── .travis.yml ├── single-post.php ├── metaboxes └── post-images │ └── post-image-metabox.php ├── phpcs.ruleset.xml ├── classes └── class-cmv-metabox.php ├── Gruntfile.js ├── articles ├── post-search.php └── single-post.php ├── .stylelintrc └── LICENSE /style-guide/home.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /style-guide/secondary.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /style-guide/tertiary.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /style-guide/general-elements.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | vendor 4 | composer.lock 5 | style.css.map 6 | -------------------------------------------------------------------------------- /css/public/99-site-footer.css: -------------------------------------------------------------------------------- 1 | #site-footer { 2 | margin-left: 198px; 3 | padding-left: 2rem; 4 | border-top: 2px solid #555; 5 | } -------------------------------------------------------------------------------- /theme-functions/theme.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 | 6 | -------------------------------------------------------------------------------- /parts/before-main.php: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |
6 | -------------------------------------------------------------------------------- /widgets/displays/figure.php: -------------------------------------------------------------------------------- 1 |
2 | <?php echo esc_attr( $img_alt ); ?> 3 |
4 |
5 | -------------------------------------------------------------------------------- /parts/single-layout-post.php: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 |
14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # College of Veterinary Medicine - Advance Theme 2 | 3 | [![Build Status](https://travis-ci.org/washingtonstateuniversity/cvm.wsu.edu-advance.svg?branch=master)](https://travis-ci.org/washingtonstateuniversity/cvm.wsu.edu-advance) 4 | 5 | A child of the WSU Spine Parent Theme for the College of Veterinary Medicine's *Advance* publication. 6 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # top-most EditorConfig file 2 | root = true 3 | 4 | # Unix-style newlines with a newline ending every file 5 | [*] 6 | end_of_line = lf 7 | insert_final_newline = true 8 | 9 | [*.{js,php,css,md,xml,html}] 10 | indent_style = tab 11 | intent_size = 4 12 | 13 | [{package.json,.travis.yml}] 14 | indent_style = space 15 | indent_size = 2 16 | -------------------------------------------------------------------------------- /css/public/00-banner.css: -------------------------------------------------------------------------------- 1 | /* 2 | Theme Name: College of Veterinary Medicine - Advance 3 | Theme URI: https://cvm.wsu.edu/advance/ 4 | Description: A WSU Spine child theme to power CVM's Advance publication. 5 | Author: WSU University Communications 6 | Author URI: https://web.wsu.edu 7 | Template: spine 8 | Version: 0.0.4 9 | */ 10 | -------------------------------------------------------------------------------- /js/public/01-cmv-advance.js: -------------------------------------------------------------------------------- 1 | var cmv_advance = { 2 | 3 | init: function() { 4 | 5 | cmv_advance.tabs.init(); 6 | 7 | }, 8 | 9 | tabs: { 10 | 11 | init: function() { 12 | 13 | cmv_advance.tabs.make_tabs(); 14 | 15 | }, 16 | 17 | make_tabs: function() { 18 | 19 | jQuery('.cmv-tabs').tabs(); 20 | 21 | } 22 | } 23 | } 24 | 25 | cmv_advance.init(); 26 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | /* 2 | Theme Name: College of Veterinary Medicine - Advance 3 | Theme URI: https://cvm.wsu.edu/advance/ 4 | Description: A WSU Spine child theme to power CVM's Advance publication. 5 | Author: WSU University Communications 6 | Author URI: https://web.wsu.edu 7 | Template: spine 8 | Version: 0.0.18 9 | */ 10 | /*# sourceMappingURL=style.css.map */ 11 | -------------------------------------------------------------------------------- /home.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | include_functions(); 11 | 12 | } // End __construct 13 | 14 | 15 | private function include_functions() { 16 | 17 | require_once get_stylesheet_directory() . '/theme-functions/theme.php'; 18 | 19 | require_once get_stylesheet_directory() . '/theme-functions/posts.php'; 20 | 21 | } // End include_functions 22 | 23 | } // End Theme_Functions 24 | 25 | $cmv_theme_functions = new Theme_Functions(); 26 | -------------------------------------------------------------------------------- /includes/theme-metaboxes.php: -------------------------------------------------------------------------------- 1 | add_metaboxes(); 9 | 10 | } // End __construct 11 | 12 | 13 | private function add_metaboxes() { 14 | 15 | include_once get_stylesheet_directory() . '/classes/class-cmv-metabox.php'; 16 | 17 | include_once get_stylesheet_directory() . '/metaboxes/post-images/post-image-metabox.php'; 18 | 19 | } // End add_metaboxes 20 | 21 | 22 | } // End Theme_Metaboxes 23 | 24 | $cmv_theme_metaboxes = new Theme_Metaboxes(); 25 | -------------------------------------------------------------------------------- /includes/theme-widgets.php: -------------------------------------------------------------------------------- 1 |
8 | 14 | 17 |
18 |
19 | -------------------------------------------------------------------------------- /css/public/02-banner-featured.css: -------------------------------------------------------------------------------- 1 | #home-banner { 2 | min-height: 600px; 3 | background-color: #999; 4 | margin-bottom: 70px; 5 | background-position: center; 6 | background-size: cover; 7 | } 8 | 9 | #home-banner .banner-title-wrapper { 10 | display: flex; 11 | min-height: 600px; 12 | align-items: center; 13 | justify-content: center; 14 | } 15 | 16 | #home-banner .banner-title { 17 | text-align: center; 18 | color: #fff; 19 | } 20 | 21 | #home-banner .banner-title-inner { 22 | text-align: center; 23 | color: #fff; 24 | } 25 | 26 | #home-banner h1.banner-title { 27 | font-size: 100px; 28 | font-weight: normal; 29 | } 30 | 31 | #home-banner .banner-subtitle { 32 | font-size: 22px; 33 | } 34 | 35 | #home-banner .banner-article-title { 36 | background-color: rgba(0,0,0,0.3); 37 | } 38 | 39 | #home-banner .banner-article-title a { 40 | color: #fff; 41 | display: block; 42 | padding: 18px 0 18px 2rem; 43 | } -------------------------------------------------------------------------------- /parts/archive-layout.php: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |

Search

5 |
6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | 27 | 28 | 29 | 30 | 31 | 32 |

Sorry, no results were found for your search.

33 | 34 | 35 |
36 | 37 |
38 | 39 | 40 | 41 |
42 | 43 |
44 | -------------------------------------------------------------------------------- /functions.php: -------------------------------------------------------------------------------- 1 | setup_theme(); 10 | 11 | } // end __construct 12 | 13 | 14 | private function setup_theme() { 15 | 16 | require_once __DIR__ . '/includes/theme-functions.php'; 17 | 18 | require_once __DIR__ . '/includes/post-meta-give.php'; 19 | 20 | require_once __DIR__ . '/includes/theme-scripts.php'; 21 | 22 | require_once __DIR__ . '/includes/theme-sidebars.php'; 23 | 24 | require_once __DIR__ . '/includes/theme-widgets.php'; 25 | 26 | require_once __DIR__ . '/includes/theme-metaboxes.php'; 27 | 28 | require_once __DIR__ . '/includes/theme-customizer.php'; 29 | 30 | require_once __DIR__ . '/includes/theme-feeds.php'; 31 | 32 | } // End setup_theme 33 | 34 | } // End CVM_WSU_EDU_Advance 35 | 36 | $cvm_wsu_edu_advance = new CVM_WSU_EDU_Advance(); 37 | -------------------------------------------------------------------------------- /css/public/03-block-featured.css: -------------------------------------------------------------------------------- 1 | #featured-block { 2 | margin: 0 22px 60px; 3 | } 4 | 5 | #featured-block h2 { 6 | padding: 0 22px; 7 | } 8 | 9 | #featured-block .featured-set-wrapper { 10 | display: flex; 11 | flex-wrap: wrap; 12 | } 13 | #featured-block article { 14 | flex-basis: 33.33%; 15 | padding: 22px; 16 | box-sizing: border-box; 17 | position: relative; 18 | } 19 | 20 | #featured-block figure { 21 | padding-bottom: 50%; 22 | background-color: #999; 23 | margin-bottom: 6px; 24 | display: block; 25 | background-position: center; 26 | background-size: 100% auto; 27 | } 28 | 29 | #featured-block figure img { 30 | display: none; 31 | } 32 | 33 | #featured-block article p { 34 | font-size: 11px; 35 | line-height: 14px; 36 | } 37 | 38 | #featured-block article a.article-link { 39 | display: block; 40 | position: absolute; 41 | top: 0; 42 | bottom: 0; 43 | left: 0; 44 | right: 0; 45 | font-size: 0; 46 | } 47 | #featured-block article a.article-link:hover { 48 | background-color: rgba(0,0,0,0.1); 49 | } -------------------------------------------------------------------------------- /parts/blocks/featured.php: -------------------------------------------------------------------------------- 1 | 6 | 21 |
22 | -------------------------------------------------------------------------------- /parts/banners/banner-single.php: -------------------------------------------------------------------------------- 1 | 13 | 23 | -------------------------------------------------------------------------------- /css/public/07-single-post.css: -------------------------------------------------------------------------------- 1 | .single-post .gutter .column:not(.gutterless), .guttered { 2 | padding-left: 0; 3 | padding-right: 0; 4 | padding-top: 0; 5 | } 6 | 7 | .single-post .article-content, 8 | .single-post .article-footer { 9 | padding: 1rem 2rem; 10 | } 11 | .single-post .article-header hgroup.source { 12 | display: block; 13 | padding: 0 2rem; 14 | } 15 | .single-post .article-header hgroup h1.article-title { 16 | display: block; 17 | padding: 2rem; 18 | color: #fff; 19 | background-color: rgba(0,0,0,0.7); 20 | } 21 | 22 | article.post .article-extra { 23 | display: inline-block; 24 | vertical-align: top; 25 | width: 33%; 26 | padding-left: 1rem; 27 | box-sizing: border-box; 28 | } 29 | article.post .article-body { 30 | display: inline-block; 31 | vertical-align: top; 32 | width: 67%; 33 | padding-right: 1rem; 34 | box-sizing: border-box; 35 | } 36 | 37 | article.post .article-title-banner.has-featured-image { 38 | 39 | padding-top: 400px; 40 | 41 | } -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: php 3 | 4 | # Cache some data across builds for performance. 5 | cache: 6 | apt: true 7 | directories: 8 | - node_modules 9 | - vendor 10 | - $HOME/.composer/cache 11 | 12 | notifications: 13 | email: 14 | on_success: never 15 | on_failure: change 16 | slack: 17 | on_pull_requests: true 18 | on_success: change 19 | on_failure: always 20 | on_start: never 21 | on_cancel: always 22 | rooms: 23 | - wsu-ucomm:n2TLZRJd84rMOMbkKthSEMgS 24 | 25 | branches: 26 | only: 27 | - master 28 | 29 | matrix: 30 | include: 31 | - php: 7.1 32 | env: WP_TRAVISCI=grunt 33 | 34 | before_script: 35 | - export PATH="$HOME/.composer/vendor/bin:$PATH" 36 | - mysql --version 37 | - phpenv config-rm xdebug.ini 38 | - phpenv versions 39 | - php --version 40 | - composer install 41 | - nvm install stable 42 | - npm install -g grunt-cli 43 | - npm install 44 | - npm --version 45 | - node --version 46 | 47 | script: 48 | - grunt --version 49 | - grunt default 50 | -------------------------------------------------------------------------------- /css/public/01-header.css: -------------------------------------------------------------------------------- 1 | .main-header { 2 | height: auto; 3 | width: 100%; 4 | box-sizing: border-box; 5 | -ms-touch-action: manipulation; 6 | touch-action: manipulation; 7 | position: relative; 8 | z-index: 10; 9 | } 10 | 11 | .main-header .header-group { 12 | position: relative; 13 | background-color: #a60f2d; 14 | bottom: auto; 15 | left: 0; 16 | top: 0; 17 | right: 0; 18 | max-width: none; 19 | display: flex; 20 | flex-direction: row-reverse; 21 | justify-content: flex-end; 22 | width: auto; 23 | padding: 14px 0 14px 2rem; 24 | box-sizing: border-box; 25 | } 26 | 27 | .main-header sup, 28 | .main-header sub { 29 | font-size: 14px; 30 | text-transform: uppercase; 31 | letter-spacing: 1px; 32 | position: relative; 33 | } 34 | 35 | .main-header sup { 36 | padding-left: 12px; 37 | } 38 | 39 | .main-header sub { 40 | padding-right: 12px; 41 | } 42 | 43 | .main-header sub:after { 44 | content:""; 45 | display: block; 46 | position: absolute; 47 | right: 0; 48 | top: 2px; 49 | bottom: 2px; 50 | width: 1px; 51 | background-color: #fff; 52 | } 53 | 54 | .main-header sup a, 55 | .main-header sub a { 56 | text-decoration: none; 57 | font-weight: bold; 58 | } -------------------------------------------------------------------------------- /parts/blocks/tabs.php: -------------------------------------------------------------------------------- 1 | 8 |
9 | 14 | 15 | 16 | 17 |
18 |
19 | -------------------------------------------------------------------------------- /includes/theme-scripts.php: -------------------------------------------------------------------------------- 1 | 12 | 13 |
14 | 15 | 30 | 31 | 41 | 42 | 43 | 44 |
45 | 46 | nonce_action, $this->nonce_name ); 26 | 27 | $html .= ob_get_clean(); 28 | 29 | $images = get_post_meta( $post_id, '_additional_images', true ); 30 | 31 | $html .= '

'; 32 | 33 | return $html; 34 | 35 | } // End add_additional_images 36 | 37 | 38 | protected function get_sanitize_settings( $post_id, $post, $update ) { 39 | 40 | $settings = array(); 41 | 42 | // phpcs:ignore 43 | if ( isset( $_REQUEST['_additional_images'] ) ) { 44 | 45 | // phpcs:ignore 46 | $settings['_additional_images'] = sanitize_text_field( $_REQUEST['_additional_images'] ); 47 | 48 | } // End if 49 | 50 | return $settings; 51 | 52 | } // End get_sanitize_settings 53 | 54 | } // End Theme_Functions 55 | 56 | $cmv_post_image_metabox = new Post_Image_Metabox(); 57 | -------------------------------------------------------------------------------- /phpcs.ruleset.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | . 18 | 19 | Sniffs for PHP coding standards used by WSUWP Themes 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /includes/theme-customizer.php: -------------------------------------------------------------------------------- 1 | add_setting( 18 | 'home_tab_1', 19 | array( 20 | 'default' => 'Tab 1', 21 | 'transport' => 'refresh', 22 | ) 23 | ); 24 | 25 | $wp_customize->add_setting( 26 | 'home_tab_2', 27 | array( 28 | 'default' => 'Tab 2', 29 | 'transport' => 'refresh', 30 | ) 31 | ); 32 | 33 | $wp_customize->add_setting( 34 | 'home_tab_3', 35 | array( 36 | 'default' => 'Tab 3', 37 | 'transport' => 'refresh', 38 | ) 39 | ); 40 | 41 | $wp_customize->add_control( 42 | 'home_tab_1_control', 43 | array( 44 | 'label' => 'Tab 1 Label', 45 | 'section' => 'static_front_page', 46 | 'settings' => 'home_tab_1', 47 | ) 48 | ); 49 | 50 | $wp_customize->add_control( 51 | 'home_tab_2_control', 52 | array( 53 | 'label' => 'Tab 2 Label', 54 | 'section' => 'static_front_page', 55 | 'settings' => 'home_tab_2', 56 | ) 57 | ); 58 | 59 | $wp_customize->add_control( 60 | 'home_tab_3_control', 61 | array( 62 | 'label' => 'Tab 3 Label', 63 | 'section' => 'static_front_page', 64 | 'settings' => 'home_tab_3', 65 | ) 66 | ); 67 | 68 | } // End add_dev_scripts 69 | 70 | } // End Theme_Functions 71 | 72 | $cmv_theme_customizer = new Theme_Customizer(); 73 | -------------------------------------------------------------------------------- /widgets/give/post-give.php: -------------------------------------------------------------------------------- 1 | 'post_give_widget', 11 | 'description' => 'Post Give Button', 12 | ); 13 | parent::__construct( 'post_give_widget', 'Post Give Link', $widget_ops ); 14 | } 15 | 16 | /** 17 | * Outputs the content of the widget 18 | * 19 | * @param array $args 20 | * @param array $instance 21 | */ 22 | public function widget( $args, $instance ) { 23 | 24 | if ( is_singular() ) { 25 | 26 | $post_id = get_the_ID(); 27 | 28 | $post_give_link = get_post_meta( $post_id, '_wsuwp_cvm_advance_post_give_url', true ); 29 | 30 | $post_give_label = get_post_meta( $post_id, '_wsuwp_cvm_advance_post_give_label', true ); 31 | 32 | if ( ! empty( $post_give_link ) ) { 33 | 34 | echo wp_kses_post( $args['before_widget'] ); 35 | 36 | echo '' . esc_html( $post_give_label ) . ''; 37 | 38 | echo wp_kses_post( $args['after_widget'] ); 39 | 40 | } // End if 41 | } // End if 42 | 43 | } 44 | 45 | /** 46 | * Outputs the options form on admin 47 | * 48 | * @param array $instance The widget options 49 | */ 50 | public function form( $instance ) { 51 | // outputs the options form on admin 52 | } 53 | 54 | /** 55 | * Processing widget options on save 56 | * 57 | * @param array $new_instance The new options 58 | * @param array $old_instance The previous options 59 | * 60 | * @return array 61 | */ 62 | public function update( $new_instance, $old_instance ) { 63 | // processes widget options to be saved 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /classes/class-cmv-metabox.php: -------------------------------------------------------------------------------- 1 | add_actions(); 14 | 15 | } // End __construct 16 | 17 | 18 | private function add_actions() { 19 | 20 | if ( method_exists( $this, 'register_metabox' ) ) { 21 | 22 | add_action( 'add_meta_boxes', array( $this, 'register_metabox' ) ); 23 | 24 | } // end if 25 | 26 | foreach ( $this->post_types as $post_type ) { 27 | 28 | add_action( 'save_post_' . $post_type, array( $this, 'save_post' ), 10, 3 ); 29 | 30 | } // End foreach 31 | 32 | } // End add_actions 33 | 34 | 35 | public function save_post( $post_id, $post, $update ) { 36 | 37 | if ( in_array( $post->post_type, $this->post_types, true ) && method_exists( $this, 'get_sanitize_settings' ) ) { 38 | 39 | if ( ! $update ) { 40 | 41 | return; 42 | 43 | } // End if 44 | 45 | // If this is an autosave, our form has not been submitted, so we don't want to do anything. 46 | if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { 47 | 48 | return false; 49 | 50 | } // end if 51 | 52 | if ( ! isset( $_POST[ $this->nonce_name ] ) || ! wp_verify_nonce( $_POST[ $this->nonce_name ], $this->nonce_action ) ) { 53 | 54 | return false; 55 | 56 | } // End if 57 | 58 | // Check the user's permissions. 59 | if ( 'page' === $post->post_type ) { 60 | 61 | if ( ! current_user_can( 'edit_page', $post_id ) ) { 62 | 63 | return false; 64 | 65 | } // end if 66 | } else { 67 | 68 | if ( ! current_user_can( 'edit_post', $post_id ) ) { 69 | 70 | return false; 71 | 72 | } // end if 73 | } // end if 74 | 75 | $settings = $this->get_sanitize_settings( $post_id, $post, $update ); 76 | 77 | foreach ( $settings as $key => $data ) { 78 | 79 | update_post_meta( $post_id, $key, $data ); 80 | 81 | } // End foreach 82 | } // End if 83 | 84 | } // End save_post 85 | 86 | 87 | } // End CMV_Metabox 88 | -------------------------------------------------------------------------------- /widgets/post-images.php: -------------------------------------------------------------------------------- 1 | 'post_images_widget', 11 | 'description' => 'List of Post Images', 12 | ); 13 | parent::__construct( 'post_images_widget', 'Post Images', $widget_ops ); 14 | } 15 | 16 | /** 17 | * Outputs the content of the widget 18 | * 19 | * @param array $args 20 | * @param array $instance 21 | */ 22 | public function widget( $args, $instance ) { 23 | 24 | if ( is_singular() ) { 25 | 26 | $post_id = get_the_ID(); 27 | 28 | $post_images_ids_string = get_post_meta( $post_id, '_additional_images', true ); 29 | 30 | if ( ! empty( $post_images_ids_string ) ) { 31 | 32 | $post_images_ids = explode( ',', $post_images_ids_string ); 33 | 34 | echo wp_kses_post( $args['before_widget'] ); 35 | 36 | if ( ! empty( $instance['title'] ) ) { 37 | 38 | echo wp_kses_post( $args['before_title'] ) . esc_html( apply_filters( 'widget_title', $instance['title'] ) ) . wp_kses_post( $args['after_title'] ); 39 | 40 | } // End if 41 | 42 | foreach ( $post_images_ids as $post_image_id ) { 43 | 44 | $image_array = cmv_get_post_image_array_by_id( $post_image_id ); 45 | 46 | $img_src = $image_array['src']; 47 | $img_alt = $image_array['alt']; 48 | $img_caption = $image_array['caption']; 49 | 50 | include __DIR__ . '/displays/figure.php'; 51 | 52 | } // End foreach 53 | 54 | echo wp_kses_post( $args['after_widget'] ); 55 | 56 | } // End if 57 | } // End if 58 | 59 | } 60 | 61 | /** 62 | * Outputs the options form on admin 63 | * 64 | * @param array $instance The widget options 65 | */ 66 | public function form( $instance ) { 67 | // outputs the options form on admin 68 | } 69 | 70 | /** 71 | * Processing widget options on save 72 | * 73 | * @param array $new_instance The new options 74 | * @param array $old_instance The previous options 75 | * 76 | * @return array 77 | */ 78 | public function update( $new_instance, $old_instance ) { 79 | // processes widget options to be saved 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /theme-functions/posts.php: -------------------------------------------------------------------------------- 1 | 'publish', 9 | 'posts_per_page' => $count, 10 | 'offset' => $offset, 11 | 'post_type' => 'post', 12 | 'category_name' => 'featured', 13 | ); 14 | 15 | $the_query = new WP_Query( $query_args ); 16 | 17 | if ( $the_query->have_posts() ) { 18 | 19 | while ( $the_query->have_posts() ) { 20 | 21 | $the_query->the_post(); 22 | 23 | $post_id = get_the_ID(); 24 | 25 | $image_array = cmv_get_post_image_array( $post_id, $img_size ); 26 | 27 | $feature = array( 28 | 'title' => get_the_title(), 29 | 'link' => get_the_permalink(), 30 | 'img_src' => ( ! empty( $image_array ) ) ? $image_array['src'] : '', 31 | 'img_alt' => ( ! empty( $image_array ) ) ? $image_array['alt'] : '', 32 | 'img_id' => ( ! empty( $image_array ) ) ? $image_array['id'] : '', 33 | 'excerpt' => $the_query->post->post_excerpt, 34 | ); 35 | 36 | ob_start(); 37 | 38 | the_content(); 39 | 40 | $feature['content'] = ob_get_clean(); 41 | 42 | $featured_posts[] = $feature; 43 | 44 | } // End While 45 | 46 | /* Restore original Post Data */ 47 | wp_reset_postdata(); 48 | 49 | } // End if 50 | 51 | return $featured_posts; 52 | 53 | } // End cmv_get_featured_posts 54 | 55 | 56 | function cmv_get_post_image_array( $post_id, $size = 'medium' ) { 57 | 58 | $image_array = array(); 59 | 60 | if ( $post_id && has_post_thumbnail( $post_id ) ) { 61 | 62 | $img_id = get_post_thumbnail_id( $post_id ); 63 | 64 | $image_array = cmv_get_post_image_array_by_id( $img_id, $size ); 65 | 66 | } // End if 67 | 68 | return $image_array; 69 | 70 | } // End cmv_get_post_image_array 71 | 72 | 73 | function cmv_get_post_image_array_by_id( $img_id, $size = 'medium' ) { 74 | 75 | $image_post = get_post( $img_id ); 76 | 77 | $image_title = $image_post->post_title; 78 | 79 | $image_caption = $image_post->post_excerpt; 80 | 81 | $img_post = wp_get_attachment_image_src( $img_id, $size, true ); 82 | 83 | $image_array = array( 84 | 'id' => $img_id, 85 | 'alt' => get_post_meta( $img_id, '_wp_attachment_image_alt', true ), 86 | 'src' => $img_post[0], 87 | 'title' => $image_title, 88 | 'caption' => $image_caption, 89 | ); 90 | 91 | return $image_array; 92 | 93 | } // End cmv_get_post_image_array 94 | -------------------------------------------------------------------------------- /includes/theme-feeds.php: -------------------------------------------------------------------------------- 1 | 22 |
23 | 53 |
54 | ID, '_wsuwp_cvm_advance_post_give_label', true ); 35 | $link_url = get_post_meta( $post->ID, '_wsuwp_cvm_advance_post_give_url', true ); 36 | 37 | wp_nonce_field( 'wsuwp_cvm_advance_post_give', 'wsuwp_cvm_advance_post_give_nonce' ); 38 | ?> 39 | 40 | 41 | 46 | 47 | 48 | 49 | 54 | post_status ) { 75 | return; 76 | } 77 | 78 | if ( isset( $_POST['_wsuwp_cvm_advance_post_give_label'] ) ) { 79 | update_post_meta( $post_id, '_wsuwp_cvm_advance_post_give_label', sanitize_text_field( $_POST['_wsuwp_cvm_advance_post_give_label'] ) ); 80 | } else { 81 | delete_post_meta( $post_id, '_wsuwp_cvm_advance_post_give_label' ); 82 | } 83 | 84 | if ( isset( $_POST['_wsuwp_cvm_advance_post_give_url'] ) ) { 85 | update_post_meta( $post_id, '_wsuwp_cvm_advance_post_give_url', esc_url_raw( $_POST['_wsuwp_cvm_advance_post_give_url'] ) ); 86 | } else { 87 | delete_post_meta( $post_id, '_wsuwp_cvm_advance_post_give_url' ); 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /Gruntfile.js: -------------------------------------------------------------------------------- 1 | module.exports = function( grunt ) { 2 | grunt.initConfig( { 3 | pkg: grunt.file.readJSON( "package.json" ), 4 | 5 | stylelint: { 6 | src: [ "css/*.css" ] 7 | }, 8 | 9 | concat: { 10 | options: { 11 | sourceMap: true 12 | }, 13 | dist: { 14 | src: "css/*.css", 15 | dest: "tmp-style.css" 16 | } 17 | }, 18 | 19 | postcss: { 20 | options: { 21 | map: true, 22 | diff: false, 23 | processors: [ 24 | require( "autoprefixer" )( { 25 | browsers: [ "> 1%", "ie 8-11", "Firefox ESR" ] 26 | } ) 27 | ] 28 | }, 29 | dist: { 30 | src: "tmp-style.css", 31 | dest: "style.css" 32 | } 33 | }, 34 | 35 | clean: { 36 | options: { 37 | force: true 38 | }, 39 | temp: [ "tmp-style.css", "tmp-style.css.map" ] 40 | }, 41 | 42 | jscs: { 43 | scripts: { 44 | src: [ "Gruntfile.js", "src/js/*.js" ], 45 | options: { 46 | preset: "jquery", 47 | requireCamelCaseOrUpperCaseIdentifiers: false, // We rely on name_name too much to change them all. 48 | maximumLineLength: 250, 49 | validateIndentation: "\t" 50 | } 51 | } 52 | }, 53 | 54 | jshint: { 55 | grunt_script: { 56 | src: [ "Gruntfile.js" ], 57 | options: { 58 | curly: true, 59 | eqeqeq: true, 60 | noarg: true, 61 | quotmark: "double", 62 | undef: true, 63 | unused: false, 64 | node: true // Define globals available when running in Node. 65 | } 66 | }, 67 | theme_scripts: { 68 | src: [ "src/js/*.js" ], 69 | options: { 70 | bitwise: true, 71 | curly: true, 72 | eqeqeq: true, 73 | forin: true, 74 | freeze: true, 75 | noarg: true, 76 | nonbsp: true, 77 | quotmark: "double", 78 | undef: true, 79 | unused: true, 80 | browser: true, // Define globals exposed by modern browsers. 81 | jquery: true // Define globals exposed by jQuery. 82 | } 83 | } 84 | }, 85 | 86 | phpcs: { 87 | plugin: { 88 | src: "./" 89 | }, 90 | options: { 91 | bin: "vendor/bin/phpcs --extensions=php --ignore=\"*/vendor/*,*/node_modules/*\"", 92 | standard: "phpcs.ruleset.xml" 93 | } 94 | }, 95 | 96 | watch: { 97 | styles: { 98 | files: [ "css/*.css", "js/*.js" ], 99 | tasks: [ "default" ], 100 | option: { 101 | livereload: 8000 102 | } 103 | } 104 | }, 105 | 106 | connect: { 107 | server: { 108 | options: { 109 | open: "http://localhost:8000/style-guide/home.html", 110 | port: 8000, 111 | hostname: "localhost" 112 | } 113 | } 114 | } 115 | 116 | } ); 117 | 118 | grunt.loadNpmTasks( "grunt-contrib-clean" ); 119 | grunt.loadNpmTasks( "grunt-contrib-concat" ); 120 | grunt.loadNpmTasks( "grunt-contrib-connect" ); 121 | grunt.loadNpmTasks( "grunt-contrib-jshint" ); 122 | grunt.loadNpmTasks( "grunt-contrib-watch" ); 123 | grunt.loadNpmTasks( "grunt-jscs" ); 124 | grunt.loadNpmTasks( "grunt-phpcs" ); 125 | grunt.loadNpmTasks( "grunt-postcss" ); 126 | grunt.loadNpmTasks( "grunt-stylelint" ); 127 | 128 | // Default task(s). 129 | grunt.registerTask( "default", [ "jscs", "jshint", "stylelint", "concat", "postcss", "clean", "phpcs" ] ); 130 | 131 | grunt.registerTask( "serve", [ "connect", "watch" ] ); 132 | }; 133 | -------------------------------------------------------------------------------- /css/public/04-block-tabs.css: -------------------------------------------------------------------------------- 1 | #block-tabs > ul { 2 | list-style: none; 3 | padding: 0; 4 | display: -webkit-box; 5 | display: -ms-flexbox; 6 | display: flex; 7 | } 8 | 9 | #block-tabs > ul li { 10 | font-size: .8rem; 11 | -webkit-box-flex: 1; 12 | -ms-flex: 1; 13 | flex: 1; 14 | display: -webkit-box; 15 | display: -ms-flexbox; 16 | display: flex; 17 | -webkit-box-orient: vertical; 18 | -webkit-box-direction: normal; 19 | -ms-flex-direction: column; 20 | flex-direction: column; 21 | -webkit-box-pack: center; 22 | -ms-flex-pack: center; 23 | justify-content: center; 24 | text-align: center; 25 | background: #ccc; 26 | margin-right: 2px; 27 | transition: background .3s ease; 28 | outline: none; 29 | } 30 | 31 | #block-tabs > ul li a { 32 | display: block; 33 | padding: 16px; 34 | } 35 | 36 | #block-tabs > ul li a:focus { 37 | outline: 0; 38 | } 39 | 40 | #block-tabs > ul li.ui-state-active { 41 | background: #eee; 42 | } 43 | 44 | #block-tabs .cmv-tab-panel { 45 | background-color: #eee; 46 | padding: 24px 40px 60px; 47 | } 48 | 49 | /*.block-tabs ul.tabs { 50 | margin: 0; 51 | padding: 0; 52 | list-style: none; 53 | } 54 | 55 | .block-tabs ul.tabs li { 56 | background: #ccc; 57 | color: #222; 58 | display: inline-block; 59 | padding: 10px 15px; 60 | cursor: pointer; 61 | } 62 | 63 | .block-tabs ul.tabs li.current { 64 | background: #ededed; 65 | color: #222; 66 | } 67 | 68 | .block-tabs .tab-content { 69 | display: none; 70 | background: #ededed; 71 | padding: 15px; 72 | } 73 | 74 | .block-tabs .tab-content.current { 75 | display: inherit; 76 | } 77 | 78 | .block-tabs #tabs > ul, 79 | .block-tabs #tabs2 > ul { 80 | list-style: none; 81 | padding: 0; 82 | display: -webkit-box; 83 | display: -ms-flexbox; 84 | display: flex; 85 | } 86 | 87 | .block-tabs #tabs > ul li, 88 | .block-tabs #tabs2 > ul li { 89 | font-size: .8rem; 90 | -webkit-box-flex: 1; 91 | -ms-flex: 1; 92 | flex: 1; 93 | display: -webkit-box; 94 | display: -ms-flexbox; 95 | display: flex; 96 | -webkit-box-orient: vertical; 97 | -webkit-box-direction: normal; 98 | -ms-flex-direction: column; 99 | flex-direction: column; 100 | -webkit-box-pack: center; 101 | -ms-flex-pack: center; 102 | justify-content: center; 103 | text-align: center; 104 | background: rgba(255, 255, 255, .75); 105 | margin-right: 2px; 106 | transition: background .3s ease; 107 | } 108 | 109 | .block-tabs #tabs > ul li:last-child, 110 | .block-tabs #tabs2 > ul li:last-child { 111 | margin-right: 0; 112 | } 113 | 114 | .block-tabs #tabs > ul > li > a, 115 | .block-tabs #tabs2 > ul > li > a { 116 | border-bottom: none; 117 | color: #000; 118 | font-weight: 400; 119 | min-height: 3rem; 120 | padding: .3rem 0 0; 121 | display: -webkit-box; 122 | display: -ms-flexbox; 123 | display: flex; 124 | -webkit-box-orient: vertical; 125 | -webkit-box-direction: normal; 126 | -ms-flex-direction: column; 127 | flex-direction: column; 128 | -webkit-box-pack: center; 129 | -ms-flex-pack: center; 130 | justify-content: center; 131 | } 132 | 133 | .block-tabs .ui-tabs-panel { 134 | background: #fff; 135 | padding: 2rem; 136 | } 137 | 138 | .block-tabs .ui-tabs-panel:after { 139 | content: ""; 140 | display: table; 141 | clear: both; 142 | } 143 | 144 | .block-tabs #tabs > ul li.ui-state-active, 145 | .block-tabs #tabs > ul li:hover, 146 | .block-tabs #tabs2 > ul li.ui-state-active, 147 | .block-tabs #tabs2 > ul li:hover { 148 | background: rgba(255, 255, 255, 1); 149 | }*/ -------------------------------------------------------------------------------- /includes/theme-sidebars.php: -------------------------------------------------------------------------------- 1 | __( 'Site Footer', 'spine' ), 18 | 'id' => 'site_footer', 19 | 'description' => '', 20 | 'class' => '', 21 | 'before_widget' => '', 23 | 'before_title' => '

', 24 | 'after_title' => '

', 25 | ), 26 | array( 27 | 'name' => __( 'Site Header Right', 'spine' ), 28 | 'id' => 'site_header_right', 29 | 'description' => '', 30 | 'class' => '', 31 | 'before_widget' => '
', 32 | 'after_widget' => '
', 33 | 'before_title' => '

', 34 | 'after_title' => '

', 35 | ), 36 | array( 37 | 'name' => __( 'Home Tab 1', 'spine' ), 38 | 'id' => 'home_tab_1', 39 | 'description' => '', 40 | 'class' => '', 41 | 'before_widget' => '
', 42 | 'after_widget' => '
', 43 | 'before_title' => '

', 44 | 'after_title' => '

', 45 | ), 46 | array( 47 | 'name' => __( 'Home Tab 2', 'spine' ), 48 | 'id' => 'home_tab_2', 49 | 'description' => '', 50 | 'class' => '', 51 | 'before_widget' => '
', 52 | 'after_widget' => '
', 53 | 'before_title' => '

', 54 | 'after_title' => '

', 55 | ), 56 | array( 57 | 'name' => __( 'Home Tab 3', 'spine' ), 58 | 'id' => 'home_tab_3', 59 | 'description' => '', 60 | 'class' => '', 61 | 'before_widget' => '
', 62 | 'after_widget' => '
', 63 | 'before_title' => '

', 64 | 'after_title' => '

', 65 | ), 66 | array( 67 | 'name' => __( 'Home After Baner', 'spine' ), 68 | 'id' => 'home_after_banner', 69 | 'description' => '', 70 | 'class' => '', 71 | 'before_widget' => '
', 72 | 'after_widget' => '
', 73 | 'before_title' => '

', 74 | 'after_title' => '

', 75 | ), 76 | array( 77 | 'name' => __( 'Home After Tabs', 'spine' ), 78 | 'id' => 'home_after_tabs', 79 | 'description' => '', 80 | 'class' => '', 81 | 'before_widget' => '
', 82 | 'after_widget' => '
', 83 | 'before_title' => '

', 84 | 'after_title' => '

', 85 | ), 86 | array( 87 | 'name' => __( 'Home After Features', 'spine' ), 88 | 'id' => 'home_after_features', 89 | 'description' => '', 90 | 'class' => '', 91 | 'before_widget' => '
', 92 | 'after_widget' => '
', 93 | 'before_title' => '

', 94 | 'after_title' => '

', 95 | ), 96 | ); 97 | 98 | foreach ( $sidebars as $sidebar ) { 99 | 100 | register_sidebar( $sidebar ); 101 | 102 | } // End foreach 103 | 104 | } // End add_sidebars 105 | 106 | } // End Site_Footer 107 | 108 | $cmv_theme_sidebars = new Theme_Sidebars(); 109 | -------------------------------------------------------------------------------- /articles/post-search.php: -------------------------------------------------------------------------------- 1 | 2 |
> 3 | 4 |
5 |
6 |

7 | 8 |

9 |
10 |
11 | 12 | 21 |
22 |
23 | 24 | 25 |
26 | 27 | '', 32 | ) 33 | ); 34 | ?> 35 |
36 | 37 | 98 | 99 |
100 | -------------------------------------------------------------------------------- /.stylelintrc: -------------------------------------------------------------------------------- 1 | "rules": { 2 | "at-rule-empty-line-before": [ "always", { 3 | except: ["blockless-after-blockless"], 4 | ignore: ["after-comment"], 5 | } ], 6 | "at-rule-name-case": "lower", 7 | "at-rule-name-space-after": "always-single-line", 8 | "at-rule-no-unknown": true, 9 | "at-rule-semicolon-newline-after": "always", 10 | "block-closing-brace-newline-after": "always", 11 | "block-closing-brace-newline-before": "always", 12 | "block-opening-brace-newline-after": "always", 13 | "block-opening-brace-space-before": "always", 14 | "color-hex-case": "lower", 15 | "color-hex-length": "short", 16 | "color-named": "never", 17 | "color-no-invalid-hex": true, 18 | "comment-empty-line-before": [ "always", { 19 | ignore: ["stylelint-commands"], 20 | } ], 21 | "declaration-bang-space-after": "never", 22 | "declaration-bang-space-before": "always", 23 | "declaration-block-no-duplicate-properties": [ true, { 24 | ignore: ["consecutive-duplicates"], 25 | } ], 26 | "declaration-block-no-shorthand-property-overrides": true, 27 | "declaration-block-semicolon-newline-after": "always", 28 | "declaration-block-semicolon-space-before": "never", 29 | "declaration-block-trailing-semicolon": "always", 30 | "declaration-colon-newline-after": "always-multi-line", 31 | "declaration-colon-space-after": "always-single-line", 32 | "declaration-colon-space-before": "never", 33 | "font-family-name-quotes": "always-where-recommended", 34 | "font-weight-notation": "numeric", 35 | "function-calc-no-unspaced-operator": true, 36 | "function-comma-space-after": "always", 37 | "function-comma-space-before": "never", 38 | "function-linear-gradient-no-nonstandard-direction": true, 39 | "function-max-empty-lines": 1, 40 | "function-name-case": "lower", 41 | "function-parentheses-space-inside": "never", 42 | "function-url-quotes": "never", 43 | "function-whitespace-after": "always", 44 | "indentation": "tab", 45 | "keyframe-declaration-no-important": true, 46 | "length-zero-no-unit": true, 47 | "max-empty-lines": 2, 48 | "max-line-length": [ 80, { 49 | "ignore": "non-comments", 50 | } ], 51 | "media-feature-colon-space-after": "always", 52 | "media-feature-colon-space-before": "never", 53 | "media-feature-range-operator-space-after": "always", 54 | "media-feature-range-operator-space-before": "always", 55 | "media-query-list-comma-newline-after": "always-multi-line", 56 | "media-query-list-comma-space-after": "always-single-line", 57 | "media-query-list-comma-space-before": "never", 58 | "no-eol-whitespace": true, 59 | "no-extra-semicolons": true, 60 | "no-invalid-double-slash-comments": true, 61 | "no-missing-end-of-source-newline": true, 62 | "number-leading-zero": "never", 63 | "number-no-trailing-zeros": true, 64 | "property-case": "lower", 65 | "property-no-unknown": true, 66 | "rule-empty-line-before": [ "always", { 67 | except: ["after-single-line-comment"] 68 | } ], 69 | "selector-attribute-brackets-space-inside": "never", 70 | "selector-attribute-operator-space-after": "never", 71 | "selector-attribute-operator-space-before": "never", 72 | "selector-attribute-quotes": "always", 73 | "selector-class-pattern": [ 74 | "^[a-z]+(-[a-z]+)*", 75 | { 76 | "message": "Selector should use lowercase and separate words with hyphens (selector-class-pattern)", 77 | }, 78 | ], 79 | "selector-id-pattern": [ 80 | "^[a-z]+(-[a-z]+)*", 81 | { 82 | "message": "Selector should use lowercase and separate words with hyphens (selector-id-pattern)", 83 | }, 84 | ], 85 | "selector-combinator-space-after": "always", 86 | "selector-combinator-space-before": "always", 87 | "selector-list-comma-newline-after": "always", 88 | "selector-list-comma-space-before": "never", 89 | "selector-max-empty-lines": 0, 90 | "selector-pseudo-class-case": "lower", 91 | "selector-pseudo-class-no-unknown": true, 92 | "selector-pseudo-class-parentheses-space-inside": "never", 93 | "selector-pseudo-element-case": "lower", 94 | "selector-pseudo-element-colon-notation": "single", 95 | "selector-pseudo-element-no-unknown": true, 96 | "selector-type-case": "lower", 97 | "selector-type-no-unknown": true, 98 | "shorthand-property-no-redundant-values": true, 99 | "string-no-newline": true, 100 | "string-quotes": "double", 101 | "unit-case": "lower", 102 | "unit-no-unknown": true, 103 | "value-keyword-case": "lower", 104 | "value-list-comma-newline-after": "always-multi-line", 105 | "value-list-comma-space-after": "always-single-line", 106 | "value-list-comma-space-before": "never", 107 | } 108 | -------------------------------------------------------------------------------- /articles/single-post.php: -------------------------------------------------------------------------------- 1 | 11 |
> 12 |
13 |
14 | 15 |

16 | 17 |
18 |
19 | 20 | 29 |
30 |
31 | 32 | 37 |
38 |
39 |
40 | 41 | '', 46 | ) 47 | ); 48 | ?> 49 |
50 |
51 | 138 | 139 |
140 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | College of Veterinary Medicine - Advance Theme 2 | 3 | Copyright 2018 by Washington State University 4 | 5 | This program is free software; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 18 | 19 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 20 | 21 | GNU GENERAL PUBLIC LICENSE 22 | Version 2, June 1991 23 | 24 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 25 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 26 | Everyone is permitted to copy and distribute verbatim copies 27 | of this license document, but changing it is not allowed. 28 | 29 | Preamble 30 | 31 | The licenses for most software are designed to take away your 32 | freedom to share and change it. By contrast, the GNU General Public 33 | License is intended to guarantee your freedom to share and change free 34 | software--to make sure the software is free for all its users. This 35 | General Public License applies to most of the Free Software 36 | Foundation's software and to any other program whose authors commit to 37 | using it. (Some other Free Software Foundation software is covered by 38 | the GNU Lesser General Public License instead.) You can apply it to 39 | your programs, too. 40 | 41 | When we speak of free software, we are referring to freedom, not 42 | price. Our General Public Licenses are designed to make sure that you 43 | have the freedom to distribute copies of free software (and charge for 44 | this service if you wish), that you receive source code or can get it 45 | if you want it, that you can change the software or use pieces of it 46 | in new free programs; and that you know you can do these things. 47 | 48 | To protect your rights, we need to make restrictions that forbid 49 | anyone to deny you these rights or to ask you to surrender the rights. 50 | These restrictions translate to certain responsibilities for you if you 51 | distribute copies of the software, or if you modify it. 52 | 53 | For example, if you distribute copies of such a program, whether 54 | gratis or for a fee, you must give the recipients all the rights that 55 | you have. You must make sure that they, too, receive or can get the 56 | source code. And you must show them these terms so they know their 57 | rights. 58 | 59 | We protect your rights with two steps: (1) copyright the software, and 60 | (2) offer you this license which gives you legal permission to copy, 61 | distribute and/or modify the software. 62 | 63 | Also, for each author's protection and ours, we want to make certain 64 | that everyone understands that there is no warranty for this free 65 | software. If the software is modified by someone else and passed on, we 66 | want its recipients to know that what they have is not the original, so 67 | that any problems introduced by others will not reflect on the original 68 | authors' reputations. 69 | 70 | Finally, any free program is threatened constantly by software 71 | patents. We wish to avoid the danger that redistributors of a free 72 | program will individually obtain patent licenses, in effect making the 73 | program proprietary. To prevent this, we have made it clear that any 74 | patent must be licensed for everyone's free use or not licensed at all. 75 | 76 | The precise terms and conditions for copying, distribution and 77 | modification follow. 78 | 79 | GNU GENERAL PUBLIC LICENSE 80 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 81 | 82 | 0. This License applies to any program or other work which contains 83 | a notice placed by the copyright holder saying it may be distributed 84 | under the terms of this General Public License. The "Program", below, 85 | refers to any such program or work, and a "work based on the Program" 86 | means either the Program or any derivative work under copyright law: 87 | that is to say, a work containing the Program or a portion of it, 88 | either verbatim or with modifications and/or translated into another 89 | language. (Hereinafter, translation is included without limitation in 90 | the term "modification".) Each licensee is addressed as "you". 91 | 92 | Activities other than copying, distribution and modification are not 93 | covered by this License; they are outside its scope. The act of 94 | running the Program is not restricted, and the output from the Program 95 | is covered only if its contents constitute a work based on the 96 | Program (independent of having been made by running the Program). 97 | Whether that is true depends on what the Program does. 98 | 99 | 1. You may copy and distribute verbatim copies of the Program's 100 | source code as you receive it, in any medium, provided that you 101 | conspicuously and appropriately publish on each copy an appropriate 102 | copyright notice and disclaimer of warranty; keep intact all the 103 | notices that refer to this License and to the absence of any warranty; 104 | and give any other recipients of the Program a copy of this License 105 | along with the Program. 106 | 107 | You may charge a fee for the physical act of transferring a copy, and 108 | you may at your option offer warranty protection in exchange for a fee. 109 | 110 | 2. You may modify your copy or copies of the Program or any portion 111 | of it, thus forming a work based on the Program, and copy and 112 | distribute such modifications or work under the terms of Section 1 113 | above, provided that you also meet all of these conditions: 114 | 115 | a) You must cause the modified files to carry prominent notices 116 | stating that you changed the files and the date of any change. 117 | 118 | b) You must cause any work that you distribute or publish, that in 119 | whole or in part contains or is derived from the Program or any 120 | part thereof, to be licensed as a whole at no charge to all third 121 | parties under the terms of this License. 122 | 123 | c) If the modified program normally reads commands interactively 124 | when run, you must cause it, when started running for such 125 | interactive use in the most ordinary way, to print or display an 126 | announcement including an appropriate copyright notice and a 127 | notice that there is no warranty (or else, saying that you provide 128 | a warranty) and that users may redistribute the program under 129 | these conditions, and telling the user how to view a copy of this 130 | License. (Exception: if the Program itself is interactive but 131 | does not normally print such an announcement, your work based on 132 | the Program is not required to print an announcement.) 133 | 134 | These requirements apply to the modified work as a whole. If 135 | identifiable sections of that work are not derived from the Program, 136 | and can be reasonably considered independent and separate works in 137 | themselves, then this License, and its terms, do not apply to those 138 | sections when you distribute them as separate works. But when you 139 | distribute the same sections as part of a whole which is a work based 140 | on the Program, the distribution of the whole must be on the terms of 141 | this License, whose permissions for other licensees extend to the 142 | entire whole, and thus to each and every part regardless of who wrote it. 143 | 144 | Thus, it is not the intent of this section to claim rights or contest 145 | your rights to work written entirely by you; rather, the intent is to 146 | exercise the right to control the distribution of derivative or 147 | collective works based on the Program. 148 | 149 | In addition, mere aggregation of another work not based on the Program 150 | with the Program (or with a work based on the Program) on a volume of 151 | a storage or distribution medium does not bring the other work under 152 | the scope of this License. 153 | 154 | 3. You may copy and distribute the Program (or a work based on it, 155 | under Section 2) in object code or executable form under the terms of 156 | Sections 1 and 2 above provided that you also do one of the following: 157 | 158 | a) Accompany it with the complete corresponding machine-readable 159 | source code, which must be distributed under the terms of Sections 160 | 1 and 2 above on a medium customarily used for software interchange; or, 161 | 162 | b) Accompany it with a written offer, valid for at least three 163 | years, to give any third party, for a charge no more than your 164 | cost of physically performing source distribution, a complete 165 | machine-readable copy of the corresponding source code, to be 166 | distributed under the terms of Sections 1 and 2 above on a medium 167 | customarily used for software interchange; or, 168 | 169 | c) Accompany it with the information you received as to the offer 170 | to distribute corresponding source code. (This alternative is 171 | allowed only for noncommercial distribution and only if you 172 | received the program in object code or executable form with such 173 | an offer, in accord with Subsection b above.) 174 | 175 | The source code for a work means the preferred form of the work for 176 | making modifications to it. For an executable work, complete source 177 | code means all the source code for all modules it contains, plus any 178 | associated interface definition files, plus the scripts used to 179 | control compilation and installation of the executable. However, as a 180 | special exception, the source code distributed need not include 181 | anything that is normally distributed (in either source or binary 182 | form) with the major components (compiler, kernel, and so on) of the 183 | operating system on which the executable runs, unless that component 184 | itself accompanies the executable. 185 | 186 | If distribution of executable or object code is made by offering 187 | access to copy from a designated place, then offering equivalent 188 | access to copy the source code from the same place counts as 189 | distribution of the source code, even though third parties are not 190 | compelled to copy the source along with the object code. 191 | 192 | 4. You may not copy, modify, sublicense, or distribute the Program 193 | except as expressly provided under this License. Any attempt 194 | otherwise to copy, modify, sublicense or distribute the Program is 195 | void, and will automatically terminate your rights under this License. 196 | However, parties who have received copies, or rights, from you under 197 | this License will not have their licenses terminated so long as such 198 | parties remain in full compliance. 199 | 200 | 5. You are not required to accept this License, since you have not 201 | signed it. However, nothing else grants you permission to modify or 202 | distribute the Program or its derivative works. These actions are 203 | prohibited by law if you do not accept this License. Therefore, by 204 | modifying or distributing the Program (or any work based on the 205 | Program), you indicate your acceptance of this License to do so, and 206 | all its terms and conditions for copying, distributing or modifying 207 | the Program or works based on it. 208 | 209 | 6. Each time you redistribute the Program (or any work based on the 210 | Program), the recipient automatically receives a license from the 211 | original licensor to copy, distribute or modify the Program subject to 212 | these terms and conditions. You may not impose any further 213 | restrictions on the recipients' exercise of the rights granted herein. 214 | You are not responsible for enforcing compliance by third parties to 215 | this License. 216 | 217 | 7. If, as a consequence of a court judgment or allegation of patent 218 | infringement or for any other reason (not limited to patent issues), 219 | conditions are imposed on you (whether by court order, agreement or 220 | otherwise) that contradict the conditions of this License, they do not 221 | excuse you from the conditions of this License. If you cannot 222 | distribute so as to satisfy simultaneously your obligations under this 223 | License and any other pertinent obligations, then as a consequence you 224 | may not distribute the Program at all. For example, if a patent 225 | license would not permit royalty-free redistribution of the Program by 226 | all those who receive copies directly or indirectly through you, then 227 | the only way you could satisfy both it and this License would be to 228 | refrain entirely from distribution of the Program. 229 | 230 | If any portion of this section is held invalid or unenforceable under 231 | any particular circumstance, the balance of the section is intended to 232 | apply and the section as a whole is intended to apply in other 233 | circumstances. 234 | 235 | It is not the purpose of this section to induce you to infringe any 236 | patents or other property right claims or to contest validity of any 237 | such claims; this section has the sole purpose of protecting the 238 | integrity of the free software distribution system, which is 239 | implemented by public license practices. Many people have made 240 | generous contributions to the wide range of software distributed 241 | through that system in reliance on consistent application of that 242 | system; it is up to the author/donor to decide if he or she is willing 243 | to distribute software through any other system and a licensee cannot 244 | impose that choice. 245 | 246 | This section is intended to make thoroughly clear what is believed to 247 | be a consequence of the rest of this License. 248 | 249 | 8. If the distribution and/or use of the Program is restricted in 250 | certain countries either by patents or by copyrighted interfaces, the 251 | original copyright holder who places the Program under this License 252 | may add an explicit geographical distribution limitation excluding 253 | those countries, so that distribution is permitted only in or among 254 | countries not thus excluded. In such case, this License incorporates 255 | the limitation as if written in the body of this License. 256 | 257 | 9. The Free Software Foundation may publish revised and/or new versions 258 | of the General Public License from time to time. Such new versions will 259 | be similar in spirit to the present version, but may differ in detail to 260 | address new problems or concerns. 261 | 262 | Each version is given a distinguishing version number. If the Program 263 | specifies a version number of this License which applies to it and "any 264 | later version", you have the option of following the terms and conditions 265 | either of that version or of any later version published by the Free 266 | Software Foundation. If the Program does not specify a version number of 267 | this License, you may choose any version ever published by the Free Software 268 | Foundation. 269 | 270 | 10. If you wish to incorporate parts of the Program into other free 271 | programs whose distribution conditions are different, write to the author 272 | to ask for permission. For software which is copyrighted by the Free 273 | Software Foundation, write to the Free Software Foundation; we sometimes 274 | make exceptions for this. Our decision will be guided by the two goals 275 | of preserving the free status of all derivatives of our free software and 276 | of promoting the sharing and reuse of software generally. 277 | 278 | NO WARRANTY 279 | 280 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 281 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 282 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 283 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 284 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 285 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 286 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 287 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 288 | REPAIR OR CORRECTION. 289 | 290 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 291 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 292 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 293 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 294 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 295 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 296 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 297 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 298 | POSSIBILITY OF SUCH DAMAGES. 299 | 300 | END OF TERMS AND CONDITIONS 301 | 302 | How to Apply These Terms to Your New Programs 303 | 304 | If you develop a new program, and you want it to be of the greatest 305 | possible use to the public, the best way to achieve this is to make it 306 | free software which everyone can redistribute and change under these terms. 307 | 308 | To do so, attach the following notices to the program. It is safest 309 | to attach them to the start of each source file to most effectively 310 | convey the exclusion of warranty; and each file should have at least 311 | the "copyright" line and a pointer to where the full notice is found. 312 | 313 | 314 | Copyright (C) 315 | 316 | This program is free software; you can redistribute it and/or modify 317 | it under the terms of the GNU General Public License as published by 318 | the Free Software Foundation; either version 2 of the License, or 319 | (at your option) any later version. 320 | 321 | This program is distributed in the hope that it will be useful, 322 | but WITHOUT ANY WARRANTY; without even the implied warranty of 323 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 324 | GNU General Public License for more details. 325 | 326 | You should have received a copy of the GNU General Public License along 327 | with this program; if not, write to the Free Software Foundation, Inc., 328 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 329 | 330 | Also add information on how to contact you by electronic and paper mail. 331 | 332 | If the program is interactive, make it output a short notice like this 333 | when it starts in an interactive mode: 334 | 335 | Gnomovision version 69, Copyright (C) year name of author 336 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 337 | This is free software, and you are welcome to redistribute it 338 | under certain conditions; type `show c' for details. 339 | 340 | The hypothetical commands `show w' and `show c' should show the appropriate 341 | parts of the General Public License. Of course, the commands you use may 342 | be called something other than `show w' and `show c'; they could even be 343 | mouse-clicks or menu items--whatever suits your program. 344 | 345 | You should also get your employer (if you work as a programmer) or your 346 | school, if any, to sign a "copyright disclaimer" for the program, if 347 | necessary. Here is a sample; alter the names: 348 | 349 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 350 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 351 | 352 | , 1 April 1989 353 | Ty Coon, President of Vice 354 | 355 | This General Public License does not permit incorporating your program into 356 | proprietary programs. If your program is a subroutine library, you may 357 | consider it more useful to permit linking proprietary applications with the 358 | library. If this is what you want to do, use the GNU Lesser General 359 | Public License instead of this License. 360 | 361 | WRITTEN OFFER 362 | 363 | The source code for any program binaries or compressed scripts that are 364 | included with College of Veterinary Medicine - Advance Theme can be freely 365 | obtained at the following URL: 366 | 367 | https://github.com/washingtonstateuniversity/cvm.wsu.edu-advance/ 368 | --------------------------------------------------------------------------------