diff --git a/wp-content/themes/hybrid/404.php b/wp-content/themes/hybrid/404.php new file mode 100644 index 0000000000000000000000000000000000000000..a550b3e6755282b40ceeedc143611763b621759b --- /dev/null +++ b/wp-content/themes/hybrid/404.php @@ -0,0 +1,55 @@ +<?php +/** + * 404 Template + * + * The 404 template is used when a reader visits an invalid URL on your site. By default, + * the template will display a generic message. However, if the '404 Template' widget area + * is active, its widgets will be displayed instead. This allows users to customize their error + * pages in any way they want. + * + * For more information on how WordPress handles 404 errors: + * @link http://codex.wordpress.org/Creating_an_Error_404_Page + * + * @package Hybrid + * @subpackage Template + */ + +@header( 'HTTP/1.1 404 Not found', true, 404 ); + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( is_active_sidebar( 'utility-404' ) ) : ?> + + <div id="utility-404" class="sidebar utility"> + <?php dynamic_sidebar( 'utility-404' ); ?> + </div><!-- #utility-404 .utility --> + + <?php else: ?> + + <div id="post-0" class="<?php hybrid_entry_class(); ?>"> + + <h1 class="error-404-title entry-title"><?php _e( 'Not Found', 'hybrid' ); ?></h1> + + <div class="entry-content"> + + <p> + <?php printf( __( 'You tried going to %1$s, and it doesn\'t exist. All is not lost! You can search for what you\'re looking for.', 'hybrid' ), '<code>' . site_url( esc_url( $_SERVER['REQUEST_URI'] ) ) . '</code>' ); ?> + </p> + + <?php get_search_form(); ?> + + </div><!-- .entry-content --> + + </div><!-- .hentry --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/archive.php b/wp-content/themes/hybrid/archive.php new file mode 100644 index 0000000000000000000000000000000000000000..a2a50feff7ab75f87924d755e77c94a97c0c8d65 --- /dev/null +++ b/wp-content/themes/hybrid/archive.php @@ -0,0 +1,61 @@ +<?php +/** + * Archive Template + * + * The archive template is basically a placeholder for archives that don't have a template file. + * Ideally, all archives would be handled by a more appropriate template according to the current + * page context. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <div class="archive-info"> + + <h1 class="archive-title"><?php _e( 'Archives', 'hybrid' ); ?></h1> + + <div class="archive-description"> + <p> + <?php _e( 'You are browsing the site archives.', 'hybrid' ); ?> + </p> + </div><!-- .archive-description --> + + </div><!-- .archive-info --> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php get_the_image( array( 'custom_key' => array( 'Thumbnail' ), 'size' => 'thumbnail' ) ); ?> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-summary"> + <?php the_excerpt(); ?> + </div><!-- .entry-summary --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/attachment-application.php b/wp-content/themes/hybrid/attachment-application.php new file mode 100644 index 0000000000000000000000000000000000000000..5ef099ed83569d73da581a507b6c1ab94557cac1 --- /dev/null +++ b/wp-content/themes/hybrid/attachment-application.php @@ -0,0 +1,61 @@ +<?php +/** + * Application Attachment Template + * + * This application attachment template is used when a reader is viewing a single application + * attachment. Applications are uploads (i.e., attachments) that have a mime type of 'application'. + * @link http://themehybrid.com/themes/hybrid/attachments + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <?php hybrid_attachment(); ?> + + <?php the_content( sprintf( __( 'Continue reading %1$s', 'hybrid' ), the_title( ' "', '"', false ) ) ); ?> + + <p class="download"> + <a href="<?php echo wp_get_attachment_url(); ?>" title="<?php the_title_attribute(); ?>" rel="enclosure" type="<?php echo get_post_mime_type(); ?>"><?php printf( __( 'Download "%1$s"', 'hybrid' ), the_title( '<span class="fn">', '</span>', false) ); ?></a> + </p><!-- .download --> + + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/attachment-audio.php b/wp-content/themes/hybrid/attachment-audio.php new file mode 100644 index 0000000000000000000000000000000000000000..c07138a2d52e13700538171d88b4af74937e6557 --- /dev/null +++ b/wp-content/themes/hybrid/attachment-audio.php @@ -0,0 +1,63 @@ +<?php +/** + * Audio Attachment Template + * + * This audio attachment template is used when a reader is viewing a single audio attachment. + * Audio attachments are uploads that have a mime type of 'audio'. + * @link http://themehybrid.com/themes/hybrid/attachments/audio + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class( 'haudio' ); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <?php hybrid_attachment(); ?> + + <div class="description"> + <?php the_content( sprintf( __( 'Continue reading %1$s', 'hybrid' ), the_title( ' "', '"', false ) ) ); ?> + </div><!-- .description --> + + <p class="download"> + <a href="<?php echo wp_get_attachment_url(); ?>" title="<?php the_title_attribute(); ?>" rel="enclosure" type="<?php echo get_post_mime_type(); ?>"><?php printf( __( 'Download "%1$s"', 'hybrid' ), the_title( '<span class="fn">', '</span>', false) ); ?></a> + </p><!-- .download --> + + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .haudio .post --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/attachment-image.php b/wp-content/themes/hybrid/attachment-image.php new file mode 100644 index 0000000000000000000000000000000000000000..effde2c9e04784dd5e5c1e39bdbd25d0d146750f --- /dev/null +++ b/wp-content/themes/hybrid/attachment-image.php @@ -0,0 +1,66 @@ +<?php +/** + * Image Attachment Template + * + * The image attachment template is used when a user is viewing an image attachment page. It + * displays a full-sized view of the current image attachment with the attachment description + * and thumbnail links to the previous and next images. + * @link http://themehybrid.com/themes/hybrid/attachments/image + * @link http://codex.wordpress.org/Using_Image_and_File_Attachments + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class( 'hmedia' ); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <p class="attachment-image"> + <img class="aligncenter" src="<?php echo wp_get_attachment_url(); ?>" alt="<?php the_title_attribute(); ?>" title="<?php the_title_attribute(); ?>" /> + </p><!-- .attachment-image --> + + <?php the_content( sprintf( __( 'Continue reading %1$s', 'hybrid' ), the_title( ' "', '"', false ) ) ); ?> + + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + + </div><!-- .entry-content --> + + <p class="navigation-attachment"> + <span class="alignleft"><?php previous_image_link(); ?></span> + <span class="alignright"><?php next_image_link(); ?></span> + </p><!-- .navigation-attachment --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/attachment-text.php b/wp-content/themes/hybrid/attachment-text.php new file mode 100644 index 0000000000000000000000000000000000000000..85db1112daff09c1b08669da4bd4724598f95362 --- /dev/null +++ b/wp-content/themes/hybrid/attachment-text.php @@ -0,0 +1,61 @@ +<?php +/** + * Text Attachment Template + * + * This text attachment template is used when a reader is viewing a single text attachment. + * Texts are uploads (i.e., attachments) that have a mime type of 'text'. + * @link http://themehybrid.com/themes/hybrid/attachments/text + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <?php hybrid_attachment(); ?> + + <?php the_content( sprintf( __( 'Continue reading %1$s', 'hybrid' ), the_title( ' "', '"', false ) ) ); ?> + + <p class="download"> + <a href="<?php echo wp_get_attachment_url(); ?>" title="<?php the_title_attribute(); ?>" rel="enclosure" type="<?php echo get_post_mime_type(); ?>"><?php printf( __( 'Download "%1$s"', 'hybrid' ), the_title( '<span class="fn">', '</span>', false) ); ?></a> + </p><!-- .download --> + + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/attachment-video.php b/wp-content/themes/hybrid/attachment-video.php new file mode 100644 index 0000000000000000000000000000000000000000..beff7d7c02e5e6b52c3260cbdafaa714c94ec260 --- /dev/null +++ b/wp-content/themes/hybrid/attachment-video.php @@ -0,0 +1,61 @@ +<?php +/** + * Video Attachment Template + * + * This video attachment template is used when a reader is viewing a single video attachment. + * Videos are uploads (i.e., attachments) that have a mime type of 'video'. + * @link http://themehybrid.com/themes/hybrid/attachments/video + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class( 'hmedia' ); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <?php hybrid_attachment(); ?> + + <?php the_content( sprintf( __( 'Continue reading %1$s', 'hybrid' ), the_title( ' "', '"', false ) ) ); ?> + + <p class="download"> + <a href="<?php echo wp_get_attachment_url(); ?>" title="<?php the_title_attribute(); ?>" rel="enclosure" type="<?php echo get_post_mime_type(); ?>"><?php printf( __( 'Download "%1$s"', 'hybrid' ), the_title( '<span class="fn">', '</span>', false) ); ?></a> + </p><!-- .download --> + + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hmedia --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/attachment.php b/wp-content/themes/hybrid/attachment.php new file mode 100644 index 0000000000000000000000000000000000000000..9a8f6f2a41e8f6f073e9eae247bd9d8084ba6800 --- /dev/null +++ b/wp-content/themes/hybrid/attachment.php @@ -0,0 +1,63 @@ +<?php +/** + * Attachment Template + * + * The attachment template is a general template that displays attachments if no other + * attachment-type template is found. Also see application.php, audio.php, image.php, + * text.php, and video.php. + * @link http://themehybrid.com/themes/hybrid/attachments + * @link http://codex.wordpress.org/Using_Image_and_File_Attachments + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <?php hybrid_attachment(); ?> + + <?php the_content( sprintf( __( 'Continue reading %1$s', 'hybrid' ), the_title( ' "', '"', false ) ) ); ?> + + <p class="download"> + <a href="<?php echo wp_get_attachment_url(); ?>" title="<?php the_title_attribute(); ?>" rel="enclosure" type="<?php echo get_post_mime_type(); ?>"><?php printf( __( 'Download "%1$s"', 'hybrid' ), the_title( '<span class="fn">', '</span>', false) ); ?></a> + </p><!-- .download --> + + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/comment.php b/wp-content/themes/hybrid/comment.php new file mode 100644 index 0000000000000000000000000000000000000000..931a887bc2f29a6b6632bf792f1719f2fa1d8796 --- /dev/null +++ b/wp-content/themes/hybrid/comment.php @@ -0,0 +1,30 @@ +<?php +/** + * Comment Template + * + * The comment template displays an individual comment. This can be overwritten by templates specific + * to the comment type (comment.php, comment-{$comment_type}.php, comment-pingback.php, + * comment-trackback.php) in a child theme. + * + * @package Hybrid + * @subpackage Template + */ + + global $post, $comment; +?> + + <li id="comment-<?php comment_ID(); ?>" class="<?php hybrid_comment_class(); ?>"> + + <?php hybrid_before_comment(); // Before comment hook ?> + + <div class="comment-text"> + <?php if ( '0' == $comment->comment_approved ) : ?> + <p class="alert moderation"><?php _e( 'Your comment is awaiting moderation.', 'hybrid' ); ?></p> + <?php endif; ?> + + <?php comment_text( $comment->comment_ID ); ?> + </div><!-- .comment-text --> + + <?php hybrid_after_comment(); // After comment hook ?> + + <?php /* No closing </li> is needed. WordPress will know where to add it. */ ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/comments.php b/wp-content/themes/hybrid/comments.php new file mode 100644 index 0000000000000000000000000000000000000000..f95a177df3d2dfe6347668e005b1f28f6411bbe6 --- /dev/null +++ b/wp-content/themes/hybrid/comments.php @@ -0,0 +1,71 @@ +<?php +/** + * Comments Template + * + * Lists comments and calls the comment form. Individual comments have their own + * templates. The hierarchy for these templates is $comment_type.php, comment.php. + * + * @package Hybrid + * @subpackage Template + */ + if ( 'comments.php' == basename( $_SERVER['SCRIPT_FILENAME'] ) ) + die( __( 'Please do not load this page directly. Thanks!', 'hybrid' ) ); + + if ( !post_type_supports( get_post_type(), 'comments' ) || ( !have_comments() && !comments_open() && !pings_open() ) ) + return; + + if ( post_password_required() ) : ?> + + <h3 class="comments-header"><?php _e( 'Password Protected', 'hybrid' ); ?></h3> + + <p class="alert password-protected"> + <?php _e( 'Enter the password to view comments.', 'hybrid' ); ?> + </p><!-- .alert .password-protected --> + + <?php endif; ?> + +<div id="comments-template"> + + <?php if ( have_comments() ) : ?> + + <div id="comments"> + + <h3 id="comments-number" class="comments-header"><?php comments_number( sprintf( __( 'No responses to %1$s', 'hybrid' ), the_title( '“', '”', false ) ), sprintf( __( 'One response to %1$s', 'hybrid' ), the_title( '“', '”', false ) ), sprintf( __( '%1$s responses to %2$s', 'hybrid' ), '%', the_title( '“', '”', false ) ) ); ?></h3> + + <?php hybrid_before_comment_list(); // Before comment list hook ?> + + <ol class="comment-list"> + <?php wp_list_comments( hybrid_list_comments_args() ); ?> + </ol><!-- .comment-list --> + + <?php hybrid_after_comment_list(); // After comment list hook ?> + + <?php if ( get_option( 'page_comments' ) ) : ?> + <div class="comment-navigation paged-navigation"> + <?php paginate_comments_links(); ?> + </div><!-- .comment-navigation --> + <?php endif; ?> + + </div><!-- #comments --> + + <?php else : ?> + + <?php if ( pings_open() && !comments_open() ) : ?> + + <p class="comments-closed pings-open"> + <?php printf( __( 'Comments are closed, but <a href="%1$s" title="Trackback URL for this post">trackbacks</a> and pingbacks are open.', 'hybrid' ), trackback_url( '0' ) ); ?> + </p><!-- .comments-closed .pings-open --> + + <?php elseif ( !comments_open() ) : ?> + + <p class="comments-closed"> + <?php _e( 'Comments are closed.', 'hybrid' ); ?> + </p><!-- .comments-closed --> + + <?php endif; ?> + + <?php endif; ?> + + <?php comment_form(); // Load the comment form. ?> + +</div><!-- #comments-template --> \ No newline at end of file diff --git a/wp-content/themes/hybrid/date.php b/wp-content/themes/hybrid/date.php new file mode 100644 index 0000000000000000000000000000000000000000..a82bb00e2aa1097bcceadafe1fddc08af8ea9b80 --- /dev/null +++ b/wp-content/themes/hybrid/date.php @@ -0,0 +1,60 @@ +<?php +/** + * Date Template + * + * The date template is used when a date-/time-based archive is shown. This file is more + * or a less a placeholder. It will only show archives if not handled by day.php, month.php, + * week.php, or year.php. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <div class="archive-info date-info"> + <h1 class="archive-title date-title"><?php the_time( __( 'F jS, Y', 'hybrid' ) ); ?></h1> + + <div class="archive-description date-description"> + <p> + <?php printf( __( 'You are browsing the archive for %1$s.', 'hybrid' ), get_the_time( __( 'F jS, Y', 'hybrid' ) ) ); ?> + </p> + </div><!-- .archive-description .date-description --> + + </div><!-- .archive-info .date-info --> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php get_the_image( array( 'custom_key' => array( 'Thumbnail' ), 'size' => 'thumbnail' ) ); ?> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-summary"> + <?php the_excerpt(); ?> + </div><!-- .entry-summary --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/day.php b/wp-content/themes/hybrid/day.php new file mode 100644 index 0000000000000000000000000000000000000000..775286d57d6d199d1c452e6608849b8d5faa32e5 --- /dev/null +++ b/wp-content/themes/hybrid/day.php @@ -0,0 +1,59 @@ +<?php +/** + * Day Template + * + * This template is used when a daily archive is shown. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <div class="archive-info date-info day-info"> + + <h1 class="archive-title date-title day-title"><?php the_time( __( 'F jS, Y', 'hybrid' ) ); ?></h1> + + <div class="archive-description date-description day-description"> + <p> + <?php printf( __( 'You are browsing the archive for %1$s.', 'hybrid' ), get_the_time( __( 'F jS, Y', 'hybrid' ) ) ); ?> + </p> + </div><!-- .archive-description --> + + </div><!-- .archive-info --> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php get_the_image( array( 'custom_key' => array( 'Thumbnail' ), 'size' => 'thumbnail' ) ); ?> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-summary"> + <?php the_excerpt(); ?> + </div><!-- .entry-summary --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/footer.php b/wp-content/themes/hybrid/footer.php new file mode 100644 index 0000000000000000000000000000000000000000..b705e800350bd3f66bd213a6a323a935adc3dfe6 --- /dev/null +++ b/wp-content/themes/hybrid/footer.php @@ -0,0 +1,38 @@ +<?php +/** + * Footer Template + * + * The footer template is generally used on every page of your site. Nearly all other + * templates call it somewhere near the bottom of the file. It is used mostly as a closing + * wrapper, which is opened with the header.php file. It also executes key functions needed + * by the theme, child themes, and plugins. + * + * @package Hybrid + * @subpackage Template + */ +?> + <?php hybrid_after_container(); // After container hook ?> + + </div><!-- #container --> + + <div id="footer-container"> + + <?php hybrid_before_footer(); // Before footer hook ?> + + <div id="footer"> + + <?php hybrid_footer(); // Hybrid footer hook ?> + + </div><!-- #footer --> + + <?php hybrid_after_footer(); // After footer hook ?> + + </div><!-- #footer-container --> + +</div><!-- #body-container --> + +<?php wp_footer(); // WordPress footer hook ?> +<?php hybrid_after_html(); // After HTML hook ?> + +</body> +</html> \ No newline at end of file diff --git a/wp-content/themes/hybrid/functions.php b/wp-content/themes/hybrid/functions.php new file mode 100644 index 0000000000000000000000000000000000000000..e7ea4b4d79731d0b31cee81689f5d3b45ce011de --- /dev/null +++ b/wp-content/themes/hybrid/functions.php @@ -0,0 +1,18 @@ +<?php +/** + * Rather than lumping all theme functions into a single file, this functions file is used for + * initializing the theme framework, which activates files in the order that it needs. Users + * should create a child theme and make changes to its functions.php file (not this one). + * + * @package Hybrid + * @subpackage Functions + */ + +/* Load the Hybrid class. */ +require_once( TEMPLATEPATH . '/library/classes/hybrid.php' ); + +/* Initialize the Hybrid framework. */ +$hybrid = new Hybrid(); +$hybrid->init(); + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/header.php b/wp-content/themes/hybrid/header.php new file mode 100644 index 0000000000000000000000000000000000000000..995a23e729c4f30cc68efe1742d7fcc276b186b6 --- /dev/null +++ b/wp-content/themes/hybrid/header.php @@ -0,0 +1,48 @@ +<?php +/** + * Header Template + * + * The header template is generally used on every page of your site. Nearly all other + * templates call it somewhere near the top of the file. It is used mostly as an opening + * wrapper, which is closed with the footer.php file. It also executes key functions needed + * by the theme, child themes, and plugins. + * + * @package Hybrid + * @subpackage Template + */ + +hybrid_doctype(); ?> +<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes( 'xhtml' ); ?>> +<head profile="<?php hybrid_profile_uri(); ?>"> +<title><?php hybrid_document_title(); ?></title> + +<link rel="stylesheet" href="<?php echo get_stylesheet_uri(); ?>" type="text/css" media="screen" /> + +<?php hybrid_head(); // Hybrid head hook ?> +<?php wp_head(); // WP head hook ?> + +</head> + +<body class="<?php hybrid_body_class(); ?>"> + +<?php hybrid_before_html(); // Before HTML hook ?> + +<div id="body-container"> + + <?php hybrid_before_header(); // Before header hook ?> + + <div id="header-container"> + + <div id="header"> + + <?php hybrid_header(); // Header hook ?> + + </div><!-- #header --> + + </div><!-- #header-container --> + + <?php hybrid_after_header(); // After header hook ?> + + <div id="container"> + + <?php hybrid_before_container(); // Before container hook ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/home.php b/wp-content/themes/hybrid/home.php new file mode 100644 index 0000000000000000000000000000000000000000..b6491c08340109ace8a54792ea9439f53c831d3b --- /dev/null +++ b/wp-content/themes/hybrid/home.php @@ -0,0 +1,46 @@ +<?php +/** + * Home Template + * + * This template is loaded when on the home/blog page. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + <?php the_content( sprintf( __( 'Continue reading %1$s', 'hybrid' ), the_title( ' "', '"', false ) ) ); ?> + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/hour.php b/wp-content/themes/hybrid/hour.php new file mode 100644 index 0000000000000000000000000000000000000000..7363cd21102af6816e67240b5ef6abd863d7048c --- /dev/null +++ b/wp-content/themes/hybrid/hour.php @@ -0,0 +1,58 @@ +<?php +/** + * Hour Template + * + * This template is used when a hourly archive is shown. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <div class="archive-info date-info time-info"> + <h1 class="archive-title date-title time-title"><?php the_time( __( 'g a', 'hybrid' ) ); ?></h1> + + <div class="archive-description date-description time-description"> + <p> + <?php printf( __( 'You are browsing the archive for %1$s.', 'hybrid' ), get_the_time( __( 'g a', 'hybrid' ) ) ); ?> + </p> + </div><!-- .archive-description --> + + </div><!-- .archive-info --> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php get_the_image( array( 'custom_key' => array( 'Thumbnail' ), 'size' => 'thumbnail' ) ); ?> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-summary"> + <?php the_excerpt(); ?> + </div><!-- .entry-summary --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/index.php b/wp-content/themes/hybrid/index.php new file mode 100644 index 0000000000000000000000000000000000000000..fe3a524e07e4a7428728ff3f1c34d3c36fb565f0 --- /dev/null +++ b/wp-content/themes/hybrid/index.php @@ -0,0 +1,14 @@ +<?php +/** + * Index Template + * + * This template should not be shown. It is a placeholder. + * Specific templates for each type of content are available. + * @link http://themehybrid.com/themes/hybrid/template-hierarchy + * + * @package Hybrid + * @subpackage Template + */ + +/* Simplicity is bliss. */ +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/languages/hybrid-en_EN.mo b/wp-content/themes/hybrid/languages/hybrid-en_EN.mo new file mode 100644 index 0000000000000000000000000000000000000000..047cd33a95c6de82f68cf5b8fe62ecd3e86ccca6 Binary files /dev/null and b/wp-content/themes/hybrid/languages/hybrid-en_EN.mo differ diff --git a/wp-content/themes/hybrid/languages/hybrid-en_EN.po b/wp-content/themes/hybrid/languages/hybrid-en_EN.po new file mode 100644 index 0000000000000000000000000000000000000000..27aa8711c70071ef66c6e43454c26f1f83864722 --- /dev/null +++ b/wp-content/themes/hybrid/languages/hybrid-en_EN.po @@ -0,0 +1,1134 @@ +msgid "" +msgstr "" +"Project-Id-Version: Hybrid Theme Framework\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-06-22 21:29-0600\n" +"PO-Revision-Date: \n" +"Last-Translator: Justin Tadlock <justin@justintadlock.com>\n" +"Language-Team: <justin@justintadlock.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: English\n" +"X-Poedit-Country: UNITED STATES\n" +"X-Poedit-KeywordsList: _e;__;esc_attr_e;esc_attr__;esc_html_e;esc_html__\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-SearchPath-0: .\n" + +#: 404.php:35 +msgid "Not Found" +msgstr "" + +#: 404.php:40 +#, php-format +msgid "You tried going to %1$s, and it doesn't exist. All is not lost! You can search for what you're looking for." +msgstr "" + +#: archive.php:21 +msgid "Archives" +msgstr "" + +#: archive.php:25 +msgid "You are browsing the site archives." +msgstr "" + +#: archive.php:52 +#: attachment-application.php:52 +#: attachment-audio.php:54 +#: attachment-image.php:57 +#: attachment-text.php:52 +#: attachment-video.php:52 +#: attachment.php:54 +#: date.php:51 +#: day.php:50 +#: home.php:37 +msgid "Apologies, but no results were found." +msgstr "" + +#: attachment-application.php:29 +#: attachment-audio.php:30 +#: attachment-image.php:33 +#: attachment-text.php:29 +#: attachment-video.php:29 +#: attachment.php:31 +#: home.php:24 +#, php-format +msgid "Continue reading %1$s" +msgstr "" + +#: attachment-application.php:32 +#: attachment-audio.php:34 +#: attachment-text.php:32 +#: attachment-video.php:32 +#: attachment.php:34 +#, php-format +msgid "Download "%1$s"" +msgstr "" + +#: attachment-application.php:35 +#: attachment-audio.php:37 +#: attachment-image.php:35 +#: attachment-text.php:35 +#: attachment-video.php:35 +#: attachment.php:37 +#: home.php:25 +msgid "Pages:" +msgstr "" + +#: comment.php:22 +msgid "Your comment is awaiting moderation." +msgstr "" + +#: comments.php:12 +msgid "Please do not load this page directly. Thanks!" +msgstr "" + +#: comments.php:19 +msgid "Password Protected" +msgstr "" + +#: comments.php:22 +msgid "Enter the password to view comments." +msgstr "" + +#: comments.php:33 +#, php-format +msgid "No responses to %1$s" +msgstr "" + +#: comments.php:33 +#, php-format +msgid "One response to %1$s" +msgstr "" + +#: comments.php:33 +#, php-format +msgid "%1$s responses to %2$s" +msgstr "" + +#: comments.php:56 +#, php-format +msgid "Comments are closed, but <a href=\"%1$s\" title=\"Trackback URL for this post\">trackbacks</a> and pingbacks are open." +msgstr "" + +#: comments.php:62 +msgid "Comments are closed." +msgstr "" + +#: date.php:20 +#: date.php:24 +#: day.php:19 +#: day.php:23 +msgid "F jS, Y" +msgstr "" + +#: date.php:24 +#: day.php:23 +#, php-format +msgid "You are browsing the archive for %1$s." +msgstr "" + +#: hour.php:18 +#: hour.php:22 +msgid "g a" +msgstr "" + +#: minute.php:18 +#: minute.php:23 +msgid "g:i a" +msgstr "" + +#: minute.php:18 +#, php-format +msgid "Minute %1$s" +msgstr "" + +#: minute.php:18 +#: minute.php:25 +msgid "i" +msgstr "" + +#: minute.php:25 +#, php-format +msgid "You are browsing the archive for minute %1$s." +msgstr "" + +#: navigation-links.php:17 +msgid "« Return to entry" +msgstr "" + +#: navigation-links.php:23 +#: navigation-links.php:29 +msgid "« Previous" +msgstr "" + +#: navigation-links.php:24 +#: navigation-links.php:29 +msgid "Next »" +msgstr "" + +#: page-archives.php:43 +msgid "Archives by category" +msgstr "" + +#: page-archives.php:46 +#: page-categories.php:30 +msgid "RSS" +msgstr "" + +#: page-archives.php:49 +msgid "Archives by month" +msgstr "" + +#: page-biography.php:42 +msgid "Nickname:" +msgstr "" + +#: page-biography.php:46 +msgid "Website:" +msgstr "" + +#: page-biography.php:50 +msgid "AIM:" +msgstr "" + +#: page-biography.php:50 +#: page-biography.php:54 +#: page-biography.php:58 +#, php-format +msgid "IM with %1$s" +msgstr "" + +#: page-biography.php:54 +msgid "Jabber:" +msgstr "" + +#: page-biography.php:58 +msgid "Yahoo:" +msgstr "" + +#: page-logged-in.php:51 +#, php-format +msgid "You must be <a href=\"%1$s\" title=\"Log in\">logged in</a> to view the content of this page." +msgstr "" + +#: page-logged-in.php:53 +#, php-format +msgid "If you're not currently a member, please take a moment to <a href=\"%1$s\" title=\"Register\">register</a>." +msgstr "" + +#: page-sitemap.php:29 +msgid "Feeds" +msgstr "" + +#: page-sitemap.php:32 +msgid "RDF/RSS 1.0 feed" +msgstr "" + +#: page-sitemap.php:32 +msgid "<acronym title=\"Resource Description Framework\">RDF</acronym> <acronym title=\"Really Simple Syndication\">RSS</acronym> 1.0 feed" +msgstr "" + +#: page-sitemap.php:33 +msgid "RSS 0.92 feed" +msgstr "" + +#: page-sitemap.php:33 +msgid "<acronym title=\"Really Simple Syndication\">RSS</acronym> 0.92 feed" +msgstr "" + +#: page-sitemap.php:34 +msgid "RSS 2.0 feed" +msgstr "" + +#: page-sitemap.php:34 +msgid "<acronym title=\"Really Simple Syndication\">RSS</acronym> 2.0 feed" +msgstr "" + +#: page-sitemap.php:35 +msgid "Atom feed" +msgstr "" + +#: page-sitemap.php:36 +msgid "Comments RSS 2.0 feed" +msgstr "" + +#: page-sitemap.php:36 +msgid "Comments <acronym title=\"Really Simple Syndication\">RSS</acronym> 2.0 feed" +msgstr "" + +#: page-sitemap.php:39 +msgid "Pages" +msgstr "" + +#: page-sitemap.php:45 +msgid "Category Archives" +msgstr "" + +#: page-sitemap.php:51 +msgid "Author Archives" +msgstr "" + +#: page-sitemap.php:57 +msgid "Yearly Archives" +msgstr "" + +#: page-sitemap.php:63 +msgid "Monthly Archives" +msgstr "" + +#: page-sitemap.php:69 +msgid "Weekly Archives" +msgstr "" + +#: page-sitemap.php:75 +msgid "Daily Archives" +msgstr "" + +#: page-sitemap.php:81 +msgid "Tag Archives" +msgstr "" + +#: page-sitemap.php:87 +msgid "Blog Posts" +msgstr "" + +#: page-widgets.php:25 +msgid "Edit" +msgstr "" + +#: search.php:23 +#, php-format +msgid "You are browsing the search results for "%1$s"" +msgstr "" + +#: searchform.php:18 +msgid "Search this site..." +msgstr "" + +#: searchform.php:19 +msgid "Search" +msgstr "" + +#: week.php:19 +#, php-format +msgid "Week %1$s of %2$s" +msgstr "" + +#: week.php:19 +#: week.php:23 +msgid "W" +msgstr "" + +#: week.php:19 +#: week.php:23 +#: year.php:18 +#: year.php:22 +msgid "Y" +msgstr "" + +#: week.php:23 +#, php-format +msgid "You are browsing the archive for week %1$s of %2$s." +msgstr "" + +#: library/admin/meta-box.php:33 +#: library/admin/settings-page.php:35 +#, php-format +msgid "%1$s Settings" +msgstr "" + +#: library/admin/meta-box.php:55 +#: library/classes/widget-archives.php:129 +#: library/classes/widget-authors.php:134 +#: library/classes/widget-bookmarks.php:150 +msgid "Title:" +msgstr "" + +#: library/admin/meta-box.php:56 +#: library/admin/settings-page.php:209 +msgid "Description:" +msgstr "" + +#: library/admin/meta-box.php:57 +msgid "Keywords:" +msgstr "" + +#: library/admin/meta-box.php:62 +msgid "Series:" +msgstr "" + +#: library/admin/meta-box.php:65 +msgid "Thumbnail:" +msgstr "" + +#: library/admin/meta-box.php:75 +#: library/admin/meta-box.php:147 +msgid "Template:" +msgstr "" + +#: library/admin/meta-box.php:81 +msgid "Layout:" +msgstr "" + +#: library/admin/settings-page.php:35 +#: library/admin/settings-page.php:305 +#, php-format +msgid "%1$s Theme Settings" +msgstr "" + +#: library/admin/settings-page.php:67 +#: library/admin/settings-page.php:72 +msgid "Copyright © [the-year] [site-link]." +msgstr "" + +#: library/admin/settings-page.php:67 +msgid "Powered by [wp-link] and [theme-link]." +msgstr "" + +#: library/admin/settings-page.php:72 +msgid "Powered by [wp-link], [theme-link], and [child-link]." +msgstr "" + +#: library/admin/settings-page.php:162 +#: library/admin/settings-page.php:167 +#, php-format +msgid "About %1$s" +msgstr "" + +#: library/admin/settings-page.php:171 +msgid "General settings" +msgstr "" + +#: library/admin/settings-page.php:174 +msgid "Footer settings" +msgstr "" + +#: library/admin/settings-page.php:201 +msgid "Theme:" +msgstr "" + +#: library/admin/settings-page.php:205 +msgid "Author:" +msgstr "" + +#: library/admin/settings-page.php:227 +msgid "Stylesheets:" +msgstr "" + +#: library/admin/settings-page.php:230 +msgid "Select this to have the theme automatically include a print stylesheet." +msgstr "" + +#: library/admin/settings-page.php:234 +msgid "JavaScript:" +msgstr "" + +#: library/admin/settings-page.php:237 +msgid "Include the drop-down menu JavaScript." +msgstr "" + +#: library/admin/settings-page.php:241 +msgid "Menus:" +msgstr "" + +#: library/admin/settings-page.php:244 +msgid "Use the WordPress 3.0+ menu system? Child themes built prior to <em>Hybrid</em> 0.8 may need to be updated to use this." +msgstr "" + +#: library/admin/settings-page.php:248 +msgid "Feeds:" +msgstr "" + +#: library/admin/settings-page.php:251 +msgid "If you have an alternate feed address, such as one from <a href=\"http://feedburner.com\" title=\"Feedburner\">Feedburner</a>, you can enter it here to have the theme redirect your feed links." +msgstr "" + +#: library/admin/settings-page.php:253 +msgid "Direct category, tag, search, and author feeds to your alternate feed address?" +msgstr "" + +#: library/admin/settings-page.php:257 +msgid "Search Engine Optimization" +msgstr "" + +#: library/admin/settings-page.php:257 +msgid "SEO:" +msgstr "" + +#: library/admin/settings-page.php:260 +msgid "Are you using an <acronym title=\"Search Engine Optimization\">SEO</acronym> plugin? Select this to disable the theme's meta and indexing features." +msgstr "" + +#: library/admin/settings-page.php:278 +msgid "Footer Insert:" +msgstr "" + +#: library/admin/settings-page.php:280 +msgid "You can add custom <acronym title=\"Hypertext Markup Language\">HTML</acronym> and/or shortcodes, which will be automatically inserted into your theme." +msgstr "" + +#: library/admin/settings-page.php:282 +msgid "Shortcodes:" +msgstr "" + +#: library/admin/settings-page.php:307 +msgid "Settings saved." +msgstr "" + +#: library/admin/settings-page.php:324 +msgid "Update Settings" +msgstr "" + +#: library/classes/widget-archives.php:30 +msgid "An advanced widget that gives you total control over the output of your archives." +msgstr "" + +#: library/classes/widget-archives.php:62 +msgid "Select Year" +msgstr "" + +#: library/classes/widget-archives.php:64 +msgid "Select Month" +msgstr "" + +#: library/classes/widget-archives.php:66 +msgid "Select Week" +msgstr "" + +#: library/classes/widget-archives.php:68 +msgid "Select Day" +msgstr "" + +#: library/classes/widget-archives.php:70 +msgid "Select Post" +msgstr "" + +#: library/classes/widget-archives.php:122 +msgid "Alphabetical" +msgstr "" + +#: library/classes/widget-archives.php:122 +msgid "Daily" +msgstr "" + +#: library/classes/widget-archives.php:122 +msgid "Monthly" +msgstr "" + +#: library/classes/widget-archives.php:122 +msgid "Post By Post" +msgstr "" + +#: library/classes/widget-archives.php:122 +msgid "Weekly" +msgstr "" + +#: library/classes/widget-archives.php:122 +msgid "Yearly" +msgstr "" + +#: library/classes/widget-archives.php:123 +msgid "Custom" +msgstr "" + +#: library/classes/widget-archives.php:123 +msgid "HTML" +msgstr "" + +#: library/classes/widget-archives.php:123 +msgid "Option" +msgstr "" + +#: library/classes/widget-archives.php:165 +#: library/classes/widget-authors.php:162 +msgid "Show post count?" +msgstr "" + +#: library/classes/widget-authors.php:30 +msgid "An advanced widget that gives you total control over the output of your author lists." +msgstr "" + +#: library/classes/widget-authors.php:32 +#: library/classes/widget-authors.php:122 +msgid "Authors" +msgstr "" + +#: library/classes/widget-authors.php:148 +msgid "List" +msgstr "" + +#: library/classes/widget-authors.php:148 +msgid "None" +msgstr "" + +#: library/classes/widget-authors.php:158 +msgid "<acronym title=\"Hypertext Markup Language\">HTML</acronym>?" +msgstr "" + +#: library/classes/widget-authors.php:166 +msgid "Exclude admin?" +msgstr "" + +#: library/classes/widget-authors.php:170 +msgid "Show full name?" +msgstr "" + +#: library/classes/widget-authors.php:174 +msgid "Hide empty?" +msgstr "" + +#: library/classes/widget-bookmarks.php:30 +msgid "An advanced widget that gives you total control over the output of your bookmarks (links)." +msgstr "" + +#: library/classes/widget-bookmarks.php:32 +#: library/classes/widget-bookmarks.php:124 +msgid "Bookmarks" +msgstr "" + +#: library/classes/widget-bookmarks.php:141 +#: library/classes/widget-bookmarks.php:143 +msgid "Ascending" +msgstr "" + +#: library/classes/widget-bookmarks.php:141 +#: library/classes/widget-bookmarks.php:143 +msgid "Descending" +msgstr "" + +#: library/classes/widget-bookmarks.php:142 +msgid "Count" +msgstr "" + +#: library/classes/widget-bookmarks.php:142 +#: library/classes/widget-bookmarks.php:144 +msgid "ID" +msgstr "" + +#: library/classes/widget-bookmarks.php:142 +#: library/classes/widget-bookmarks.php:144 +msgid "Name" +msgstr "" + +#: library/classes/widget-bookmarks.php:142 +msgid "Slug" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Description" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Length" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Notes" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Owner" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Random" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Rating" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Rel" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Target" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Updated" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "URL" +msgstr "" + +#: library/classes/widget-bookmarks.php:252 +msgid "Categorize?" +msgstr "" + +#: library/classes/widget-bookmarks.php:256 +msgid "Show description?" +msgstr "" + +#: library/classes/widget-bookmarks.php:260 +msgid "Hide invisible?" +msgstr "" + +#: library/classes/widget-bookmarks.php:264 +msgid "Show rating?" +msgstr "" + +#: library/classes/widget-bookmarks.php:268 +msgid "Show updated?" +msgstr "" + +#: library/classes/widget-bookmarks.php:272 +msgid "Show images?" +msgstr "" + +#: library/classes/widget-bookmarks.php:276 +msgid "Show name?" +msgstr "" + +#: library/classes/widget-bookmarks.php:280 +msgid "Show private?" +msgstr "" + +#: library/classes/widget-calendar.php:30 +msgid "An advanced widget that gives you total control over the output of your calendar." +msgstr "" + +#: library/classes/widget-calendar.php:32 +#: library/classes/widget-calendar.php:79 +msgid "Calendar" +msgstr "" + +#: library/classes/widget-calendar.php:91 +msgid "One-letter abbreviation?" +msgstr "" + +#: library/classes/widget-categories.php:30 +msgid "An advanced widget that gives you total control over the output of your category links." +msgstr "" + +#: library/classes/widget-categories.php:32 +#: library/classes/widget-categories.php:126 +msgid "Categories" +msgstr "" + +#: library/classes/widget-categories.php:143 +msgid "Term Group" +msgstr "" + +#: library/classes/widget-categories.php:144 +msgid "Atom" +msgstr "" + +#: library/classes/widget-categories.php:144 +msgid "RDF" +msgstr "" + +#: library/classes/widget-categories.php:144 +msgid "RSS 2.0" +msgstr "" + +#: library/classes/widget-categories.php:249 +#: library/classes/widget-pages.php:230 +msgid "Hierarchical?" +msgstr "" + +#: library/classes/widget-categories.php:253 +msgid "Use description?" +msgstr "" + +#: library/classes/widget-categories.php:257 +msgid "Show last update?" +msgstr "" + +#: library/classes/widget-categories.php:261 +msgid "Show count?" +msgstr "" + +#: library/classes/widget-nav-menu.php:29 +msgid "An advanced widget that gives you total control over the output of your menus." +msgstr "" + +#: library/classes/widget-nav-menu.php:31 +msgid "Navigation Menu" +msgstr "" + +#: library/classes/widget-nav-menu.php:97 +msgid "Navigation" +msgstr "" + +#: library/classes/widget-pages.php:30 +msgid "An advanced widget that gives you total control over the output of your page links." +msgstr "" + +#: library/classes/widget-pages.php:118 +msgid "Author" +msgstr "" + +#: library/classes/widget-pages.php:118 +msgid "Date" +msgstr "" + +#: library/classes/widget-pages.php:118 +msgid "Menu Order" +msgstr "" + +#: library/classes/widget-pages.php:118 +#: library/classes/widget-pages.php:119 +msgid "Modified" +msgstr "" + +#: library/classes/widget-pages.php:118 +msgid "Title" +msgstr "" + +#: library/classes/widget-pages.php:119 +msgid "Created" +msgstr "" + +#: library/classes/widget-search.php:30 +msgid "An advanced widget that gives you total control over the output of your search form." +msgstr "" + +#: library/classes/widget-search.php:110 +msgid "Search Label:" +msgstr "" + +#: library/classes/widget-search.php:114 +msgid "Search Text:" +msgstr "" + +#: library/classes/widget-search.php:121 +msgid "Search Submit:" +msgstr "" + +#: library/classes/widget-search.php:126 +msgid "Use theme's <code>searchform.php</code>?" +msgstr "" + +#: library/classes/widget-tags.php:30 +msgid "An advanced widget that gives you total control over the output of your tags." +msgstr "" + +#: library/classes/widget-tags.php:32 +#: library/classes/widget-tags.php:130 +msgid "Tags" +msgstr "" + +#: library/classes/widget-tags.php:146 +msgid "View" +msgstr "" + +#: library/classes/widget-tags.php:147 +msgid "Flat" +msgstr "" + +#: library/classes/widget-tags.php:263 +msgid "Pad counts?" +msgstr "" + +#: library/extensions/breadcrumb-trail - Copy.php:50 +msgid "Create an Account" +msgstr "" + +#: library/extensions/breadcrumb-trail - Copy.php:52 +msgid "Activate your Account" +msgstr "" + +#: library/extensions/breadcrumb-trail - Copy.php:56 +#: Copy.php:59 +msgid "Create a Group" +msgstr "" + +#: library/extensions/breadcrumb-trail - Copy.php:63 +msgid "Create a Blog" +msgstr "" + +#: library/extensions/breadcrumb-trail.php:40 +msgid "Browse:" +msgstr "" + +#: library/extensions/breadcrumb-trail.php:43 +msgid "Home" +msgstr "" + +#: library/extensions/breadcrumb-trail.php:197 +msgid "m" +msgstr "" + +#: library/extensions/breadcrumb-trail.php:197 +#: library/extensions/breadcrumb-trail.php:208 +msgid "F" +msgstr "" + +#: library/extensions/breadcrumb-trail.php:198 +msgid "j" +msgstr "" + +#: library/extensions/breadcrumb-trail.php:203 +#, php-format +msgid "Week %1$s" +msgstr "" + +#: library/extensions/breadcrumb-trail.php:219 +#: library/functions/context.php:369 +#, php-format +msgid "Search results for "%1$s"" +msgstr "" + +#: library/extensions/breadcrumb-trail.php:223 +#: library/functions/context.php:372 +msgid "404 Not Found" +msgstr "" + +#: library/extensions/custom-field-series.php:64 +msgid "Articles in this series" +msgstr "" + +#: library/functions/comments.php:147 +msgid "*" +msgstr "" + +#: library/functions/comments.php:151 +msgid "Email" +msgstr "" + +#: library/functions/comments.php:152 +msgid "Website" +msgstr "" + +#: library/functions/comments.php:157 +msgid "Comment" +msgstr "" + +#: library/functions/comments.php:158 +#, php-format +msgid "You must be <a href=\"%1$s\" title=\"Log in\">logged in</a> to post a comment." +msgstr "" + +#: library/functions/comments.php:159 +#, php-format +msgid "Logged in as <a href=\"%1$s\" title=\"%2$s\">%2$s</a>." +msgstr "" + +#: library/functions/comments.php:159 +msgid "Log out of this account" +msgstr "" + +#: library/functions/comments.php:159 +msgid "Log out »" +msgstr "" + +#: library/functions/comments.php:164 +msgid "Leave a Reply" +msgstr "" + +#: library/functions/comments.php:165 +#, php-format +msgid "Leave a Reply to %s" +msgstr "" + +#: library/functions/comments.php:166 +msgid "Click here to cancel reply." +msgstr "" + +#: library/functions/comments.php:167 +msgid "Submit" +msgstr "" + +#: library/functions/context.php:346 +#: library/functions/context.php:352 +#: library/functions/context.php:355 +#: library/functions/context.php:361 +#: library/functions/context.php:364 +#, php-format +msgid "Archive for %1$s" +msgstr "" + +#: library/functions/context.php:349 +#, php-format +msgid "Archive for minute %1$s" +msgstr "" + +#: library/functions/context.php:358 +#, php-format +msgid "Archive for week %1$s of %2$s" +msgstr "" + +#: library/functions/context.php:376 +#, php-format +msgid "%1$s Page %2$s" +msgstr "" + +#: library/functions/hooks-filters.php:96 +msgid "F Y" +msgstr "" + +#: library/functions/hooks-filters.php:100 +#, php-format +msgid "Copyright (c) %1$s" +msgstr "" + +#: library/functions/hooks-filters.php:113 +msgid "l, F jS, Y, g:i a" +msgstr "" + +#: library/functions/hooks-filters.php:273 +msgid "<span class=\"byline-prep byline-prep-author\">By</span> [entry-author] <span class=\"byline-prep byline-prep-published\">on</span> [entry-published] [entry-edit-link before=\"| \"]" +msgstr "" + +#: library/functions/hooks-filters.php:293 +msgid "Posted in" +msgstr "" + +#: library/functions/hooks-filters.php:293 +msgid "Tagged" +msgstr "" + +#: library/functions/menus.php:31 +msgid "Primary Menu" +msgstr "" + +#: library/functions/shortcodes.php:77 +msgid "Powered by WordPress, state-of-the-art semantic personal publishing platform" +msgstr "" + +#: library/functions/shortcodes.php:77 +msgid "WordPress" +msgstr "" + +#: library/functions/shortcodes.php:113 +msgid "Log out" +msgstr "" + +#: library/functions/shortcodes.php:115 +msgid "Log into this account" +msgstr "" + +#: library/functions/shortcodes.php:115 +msgid "Log in" +msgstr "" + +#: library/functions/shortcodes.php:128 +#, php-format +msgid "This page loaded in %1$s seconds with %2$s database queries." +msgstr "" + +#: library/functions/shortcodes.php:179 +#: library/functions/shortcodes.php:368 +#, php-format +msgid "Edit %1$s" +msgstr "" + +#: library/functions/shortcodes.php:206 +msgid "Leave a response" +msgstr "" + +#: library/functions/shortcodes.php:206 +msgid "1 Response" +msgstr "" + +#: library/functions/shortcodes.php:206 +#, php-format +msgid "%1$s Responses" +msgstr "" + +#: library/functions/shortcodes.php:213 +#: library/functions/shortcodes.php:215 +#: library/functions/shortcodes.php:217 +#, php-format +msgid "Comment on %1$s" +msgstr "" + +#: library/functions/shortcodes.php:289 +msgid "Shortlink" +msgstr "" + +#: library/functions/shortcodes.php:309 +#, php-format +msgid "%1$s at %2$s" +msgstr "" + +#: library/functions/shortcodes.php:348 +#, php-format +msgid "Permalink to comment %1$s" +msgstr "" + +#: library/functions/shortcodes.php:348 +msgid "Permalink" +msgstr "" + +#: library/functions/shortcodes.php:386 +msgid "Reply" +msgstr "" + +#: library/functions/shortcodes.php:387 +msgid "Log in to reply." +msgstr "" + +#: library/functions/widgets.php:52 +msgid "Primary" +msgstr "" + +#: library/functions/widgets.php:52 +msgid "The main (primary) widget area, most often used as a sidebar." +msgstr "" + +#: library/functions/widgets.php:53 +msgid "Secondary" +msgstr "" + +#: library/functions/widgets.php:53 +msgid "The second most important widget area, most often used as a secondary sidebar" +msgstr "" + +#: library/functions/widgets.php:54 +msgid "Subsidiary" +msgstr "" + +#: library/functions/widgets.php:54 +msgid "A widget area loaded in the footer of the site." +msgstr "" + +#: library/functions/widgets.php:57 +msgid "Utility: Before Content" +msgstr "" + +#: library/functions/widgets.php:57 +msgid "Loaded before the page's main content area." +msgstr "" + +#: library/functions/widgets.php:58 +msgid "Utility: After Content" +msgstr "" + +#: library/functions/widgets.php:58 +msgid "Loaded after the page's main content area." +msgstr "" + +#: library/functions/widgets.php:59 +msgid "Utility: After Singular" +msgstr "" + +#: library/functions/widgets.php:59 +msgid "Loaded on singular post (page, attachment, etc.) views before the comments area." +msgstr "" + +#: library/functions/widgets.php:63 +msgid "Widgets Template" +msgstr "" + +#: library/functions/widgets.php:63 +msgid "Used as the content of the Widgets page template." +msgstr "" + +#: library/functions/widgets.php:65 +msgid "404 Template" +msgstr "" + +#: library/functions/widgets.php:65 +msgid "Replaces the default 404 error page content." +msgstr "" + +#: library/legacy/deprecated.php:552 +#, php-format +msgid "<code>%1$s</code> — This function has been removed or replaced by another function." +msgstr "" + diff --git a/wp-content/themes/hybrid/languages/hybrid.pot b/wp-content/themes/hybrid/languages/hybrid.pot new file mode 100644 index 0000000000000000000000000000000000000000..27aa8711c70071ef66c6e43454c26f1f83864722 --- /dev/null +++ b/wp-content/themes/hybrid/languages/hybrid.pot @@ -0,0 +1,1134 @@ +msgid "" +msgstr "" +"Project-Id-Version: Hybrid Theme Framework\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-06-22 21:29-0600\n" +"PO-Revision-Date: \n" +"Last-Translator: Justin Tadlock <justin@justintadlock.com>\n" +"Language-Team: <justin@justintadlock.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: English\n" +"X-Poedit-Country: UNITED STATES\n" +"X-Poedit-KeywordsList: _e;__;esc_attr_e;esc_attr__;esc_html_e;esc_html__\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-SearchPath-0: .\n" + +#: 404.php:35 +msgid "Not Found" +msgstr "" + +#: 404.php:40 +#, php-format +msgid "You tried going to %1$s, and it doesn't exist. All is not lost! You can search for what you're looking for." +msgstr "" + +#: archive.php:21 +msgid "Archives" +msgstr "" + +#: archive.php:25 +msgid "You are browsing the site archives." +msgstr "" + +#: archive.php:52 +#: attachment-application.php:52 +#: attachment-audio.php:54 +#: attachment-image.php:57 +#: attachment-text.php:52 +#: attachment-video.php:52 +#: attachment.php:54 +#: date.php:51 +#: day.php:50 +#: home.php:37 +msgid "Apologies, but no results were found." +msgstr "" + +#: attachment-application.php:29 +#: attachment-audio.php:30 +#: attachment-image.php:33 +#: attachment-text.php:29 +#: attachment-video.php:29 +#: attachment.php:31 +#: home.php:24 +#, php-format +msgid "Continue reading %1$s" +msgstr "" + +#: attachment-application.php:32 +#: attachment-audio.php:34 +#: attachment-text.php:32 +#: attachment-video.php:32 +#: attachment.php:34 +#, php-format +msgid "Download "%1$s"" +msgstr "" + +#: attachment-application.php:35 +#: attachment-audio.php:37 +#: attachment-image.php:35 +#: attachment-text.php:35 +#: attachment-video.php:35 +#: attachment.php:37 +#: home.php:25 +msgid "Pages:" +msgstr "" + +#: comment.php:22 +msgid "Your comment is awaiting moderation." +msgstr "" + +#: comments.php:12 +msgid "Please do not load this page directly. Thanks!" +msgstr "" + +#: comments.php:19 +msgid "Password Protected" +msgstr "" + +#: comments.php:22 +msgid "Enter the password to view comments." +msgstr "" + +#: comments.php:33 +#, php-format +msgid "No responses to %1$s" +msgstr "" + +#: comments.php:33 +#, php-format +msgid "One response to %1$s" +msgstr "" + +#: comments.php:33 +#, php-format +msgid "%1$s responses to %2$s" +msgstr "" + +#: comments.php:56 +#, php-format +msgid "Comments are closed, but <a href=\"%1$s\" title=\"Trackback URL for this post\">trackbacks</a> and pingbacks are open." +msgstr "" + +#: comments.php:62 +msgid "Comments are closed." +msgstr "" + +#: date.php:20 +#: date.php:24 +#: day.php:19 +#: day.php:23 +msgid "F jS, Y" +msgstr "" + +#: date.php:24 +#: day.php:23 +#, php-format +msgid "You are browsing the archive for %1$s." +msgstr "" + +#: hour.php:18 +#: hour.php:22 +msgid "g a" +msgstr "" + +#: minute.php:18 +#: minute.php:23 +msgid "g:i a" +msgstr "" + +#: minute.php:18 +#, php-format +msgid "Minute %1$s" +msgstr "" + +#: minute.php:18 +#: minute.php:25 +msgid "i" +msgstr "" + +#: minute.php:25 +#, php-format +msgid "You are browsing the archive for minute %1$s." +msgstr "" + +#: navigation-links.php:17 +msgid "« Return to entry" +msgstr "" + +#: navigation-links.php:23 +#: navigation-links.php:29 +msgid "« Previous" +msgstr "" + +#: navigation-links.php:24 +#: navigation-links.php:29 +msgid "Next »" +msgstr "" + +#: page-archives.php:43 +msgid "Archives by category" +msgstr "" + +#: page-archives.php:46 +#: page-categories.php:30 +msgid "RSS" +msgstr "" + +#: page-archives.php:49 +msgid "Archives by month" +msgstr "" + +#: page-biography.php:42 +msgid "Nickname:" +msgstr "" + +#: page-biography.php:46 +msgid "Website:" +msgstr "" + +#: page-biography.php:50 +msgid "AIM:" +msgstr "" + +#: page-biography.php:50 +#: page-biography.php:54 +#: page-biography.php:58 +#, php-format +msgid "IM with %1$s" +msgstr "" + +#: page-biography.php:54 +msgid "Jabber:" +msgstr "" + +#: page-biography.php:58 +msgid "Yahoo:" +msgstr "" + +#: page-logged-in.php:51 +#, php-format +msgid "You must be <a href=\"%1$s\" title=\"Log in\">logged in</a> to view the content of this page." +msgstr "" + +#: page-logged-in.php:53 +#, php-format +msgid "If you're not currently a member, please take a moment to <a href=\"%1$s\" title=\"Register\">register</a>." +msgstr "" + +#: page-sitemap.php:29 +msgid "Feeds" +msgstr "" + +#: page-sitemap.php:32 +msgid "RDF/RSS 1.0 feed" +msgstr "" + +#: page-sitemap.php:32 +msgid "<acronym title=\"Resource Description Framework\">RDF</acronym> <acronym title=\"Really Simple Syndication\">RSS</acronym> 1.0 feed" +msgstr "" + +#: page-sitemap.php:33 +msgid "RSS 0.92 feed" +msgstr "" + +#: page-sitemap.php:33 +msgid "<acronym title=\"Really Simple Syndication\">RSS</acronym> 0.92 feed" +msgstr "" + +#: page-sitemap.php:34 +msgid "RSS 2.0 feed" +msgstr "" + +#: page-sitemap.php:34 +msgid "<acronym title=\"Really Simple Syndication\">RSS</acronym> 2.0 feed" +msgstr "" + +#: page-sitemap.php:35 +msgid "Atom feed" +msgstr "" + +#: page-sitemap.php:36 +msgid "Comments RSS 2.0 feed" +msgstr "" + +#: page-sitemap.php:36 +msgid "Comments <acronym title=\"Really Simple Syndication\">RSS</acronym> 2.0 feed" +msgstr "" + +#: page-sitemap.php:39 +msgid "Pages" +msgstr "" + +#: page-sitemap.php:45 +msgid "Category Archives" +msgstr "" + +#: page-sitemap.php:51 +msgid "Author Archives" +msgstr "" + +#: page-sitemap.php:57 +msgid "Yearly Archives" +msgstr "" + +#: page-sitemap.php:63 +msgid "Monthly Archives" +msgstr "" + +#: page-sitemap.php:69 +msgid "Weekly Archives" +msgstr "" + +#: page-sitemap.php:75 +msgid "Daily Archives" +msgstr "" + +#: page-sitemap.php:81 +msgid "Tag Archives" +msgstr "" + +#: page-sitemap.php:87 +msgid "Blog Posts" +msgstr "" + +#: page-widgets.php:25 +msgid "Edit" +msgstr "" + +#: search.php:23 +#, php-format +msgid "You are browsing the search results for "%1$s"" +msgstr "" + +#: searchform.php:18 +msgid "Search this site..." +msgstr "" + +#: searchform.php:19 +msgid "Search" +msgstr "" + +#: week.php:19 +#, php-format +msgid "Week %1$s of %2$s" +msgstr "" + +#: week.php:19 +#: week.php:23 +msgid "W" +msgstr "" + +#: week.php:19 +#: week.php:23 +#: year.php:18 +#: year.php:22 +msgid "Y" +msgstr "" + +#: week.php:23 +#, php-format +msgid "You are browsing the archive for week %1$s of %2$s." +msgstr "" + +#: library/admin/meta-box.php:33 +#: library/admin/settings-page.php:35 +#, php-format +msgid "%1$s Settings" +msgstr "" + +#: library/admin/meta-box.php:55 +#: library/classes/widget-archives.php:129 +#: library/classes/widget-authors.php:134 +#: library/classes/widget-bookmarks.php:150 +msgid "Title:" +msgstr "" + +#: library/admin/meta-box.php:56 +#: library/admin/settings-page.php:209 +msgid "Description:" +msgstr "" + +#: library/admin/meta-box.php:57 +msgid "Keywords:" +msgstr "" + +#: library/admin/meta-box.php:62 +msgid "Series:" +msgstr "" + +#: library/admin/meta-box.php:65 +msgid "Thumbnail:" +msgstr "" + +#: library/admin/meta-box.php:75 +#: library/admin/meta-box.php:147 +msgid "Template:" +msgstr "" + +#: library/admin/meta-box.php:81 +msgid "Layout:" +msgstr "" + +#: library/admin/settings-page.php:35 +#: library/admin/settings-page.php:305 +#, php-format +msgid "%1$s Theme Settings" +msgstr "" + +#: library/admin/settings-page.php:67 +#: library/admin/settings-page.php:72 +msgid "Copyright © [the-year] [site-link]." +msgstr "" + +#: library/admin/settings-page.php:67 +msgid "Powered by [wp-link] and [theme-link]." +msgstr "" + +#: library/admin/settings-page.php:72 +msgid "Powered by [wp-link], [theme-link], and [child-link]." +msgstr "" + +#: library/admin/settings-page.php:162 +#: library/admin/settings-page.php:167 +#, php-format +msgid "About %1$s" +msgstr "" + +#: library/admin/settings-page.php:171 +msgid "General settings" +msgstr "" + +#: library/admin/settings-page.php:174 +msgid "Footer settings" +msgstr "" + +#: library/admin/settings-page.php:201 +msgid "Theme:" +msgstr "" + +#: library/admin/settings-page.php:205 +msgid "Author:" +msgstr "" + +#: library/admin/settings-page.php:227 +msgid "Stylesheets:" +msgstr "" + +#: library/admin/settings-page.php:230 +msgid "Select this to have the theme automatically include a print stylesheet." +msgstr "" + +#: library/admin/settings-page.php:234 +msgid "JavaScript:" +msgstr "" + +#: library/admin/settings-page.php:237 +msgid "Include the drop-down menu JavaScript." +msgstr "" + +#: library/admin/settings-page.php:241 +msgid "Menus:" +msgstr "" + +#: library/admin/settings-page.php:244 +msgid "Use the WordPress 3.0+ menu system? Child themes built prior to <em>Hybrid</em> 0.8 may need to be updated to use this." +msgstr "" + +#: library/admin/settings-page.php:248 +msgid "Feeds:" +msgstr "" + +#: library/admin/settings-page.php:251 +msgid "If you have an alternate feed address, such as one from <a href=\"http://feedburner.com\" title=\"Feedburner\">Feedburner</a>, you can enter it here to have the theme redirect your feed links." +msgstr "" + +#: library/admin/settings-page.php:253 +msgid "Direct category, tag, search, and author feeds to your alternate feed address?" +msgstr "" + +#: library/admin/settings-page.php:257 +msgid "Search Engine Optimization" +msgstr "" + +#: library/admin/settings-page.php:257 +msgid "SEO:" +msgstr "" + +#: library/admin/settings-page.php:260 +msgid "Are you using an <acronym title=\"Search Engine Optimization\">SEO</acronym> plugin? Select this to disable the theme's meta and indexing features." +msgstr "" + +#: library/admin/settings-page.php:278 +msgid "Footer Insert:" +msgstr "" + +#: library/admin/settings-page.php:280 +msgid "You can add custom <acronym title=\"Hypertext Markup Language\">HTML</acronym> and/or shortcodes, which will be automatically inserted into your theme." +msgstr "" + +#: library/admin/settings-page.php:282 +msgid "Shortcodes:" +msgstr "" + +#: library/admin/settings-page.php:307 +msgid "Settings saved." +msgstr "" + +#: library/admin/settings-page.php:324 +msgid "Update Settings" +msgstr "" + +#: library/classes/widget-archives.php:30 +msgid "An advanced widget that gives you total control over the output of your archives." +msgstr "" + +#: library/classes/widget-archives.php:62 +msgid "Select Year" +msgstr "" + +#: library/classes/widget-archives.php:64 +msgid "Select Month" +msgstr "" + +#: library/classes/widget-archives.php:66 +msgid "Select Week" +msgstr "" + +#: library/classes/widget-archives.php:68 +msgid "Select Day" +msgstr "" + +#: library/classes/widget-archives.php:70 +msgid "Select Post" +msgstr "" + +#: library/classes/widget-archives.php:122 +msgid "Alphabetical" +msgstr "" + +#: library/classes/widget-archives.php:122 +msgid "Daily" +msgstr "" + +#: library/classes/widget-archives.php:122 +msgid "Monthly" +msgstr "" + +#: library/classes/widget-archives.php:122 +msgid "Post By Post" +msgstr "" + +#: library/classes/widget-archives.php:122 +msgid "Weekly" +msgstr "" + +#: library/classes/widget-archives.php:122 +msgid "Yearly" +msgstr "" + +#: library/classes/widget-archives.php:123 +msgid "Custom" +msgstr "" + +#: library/classes/widget-archives.php:123 +msgid "HTML" +msgstr "" + +#: library/classes/widget-archives.php:123 +msgid "Option" +msgstr "" + +#: library/classes/widget-archives.php:165 +#: library/classes/widget-authors.php:162 +msgid "Show post count?" +msgstr "" + +#: library/classes/widget-authors.php:30 +msgid "An advanced widget that gives you total control over the output of your author lists." +msgstr "" + +#: library/classes/widget-authors.php:32 +#: library/classes/widget-authors.php:122 +msgid "Authors" +msgstr "" + +#: library/classes/widget-authors.php:148 +msgid "List" +msgstr "" + +#: library/classes/widget-authors.php:148 +msgid "None" +msgstr "" + +#: library/classes/widget-authors.php:158 +msgid "<acronym title=\"Hypertext Markup Language\">HTML</acronym>?" +msgstr "" + +#: library/classes/widget-authors.php:166 +msgid "Exclude admin?" +msgstr "" + +#: library/classes/widget-authors.php:170 +msgid "Show full name?" +msgstr "" + +#: library/classes/widget-authors.php:174 +msgid "Hide empty?" +msgstr "" + +#: library/classes/widget-bookmarks.php:30 +msgid "An advanced widget that gives you total control over the output of your bookmarks (links)." +msgstr "" + +#: library/classes/widget-bookmarks.php:32 +#: library/classes/widget-bookmarks.php:124 +msgid "Bookmarks" +msgstr "" + +#: library/classes/widget-bookmarks.php:141 +#: library/classes/widget-bookmarks.php:143 +msgid "Ascending" +msgstr "" + +#: library/classes/widget-bookmarks.php:141 +#: library/classes/widget-bookmarks.php:143 +msgid "Descending" +msgstr "" + +#: library/classes/widget-bookmarks.php:142 +msgid "Count" +msgstr "" + +#: library/classes/widget-bookmarks.php:142 +#: library/classes/widget-bookmarks.php:144 +msgid "ID" +msgstr "" + +#: library/classes/widget-bookmarks.php:142 +#: library/classes/widget-bookmarks.php:144 +msgid "Name" +msgstr "" + +#: library/classes/widget-bookmarks.php:142 +msgid "Slug" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Description" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Length" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Notes" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Owner" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Random" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Rating" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Rel" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Target" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "Updated" +msgstr "" + +#: library/classes/widget-bookmarks.php:144 +msgid "URL" +msgstr "" + +#: library/classes/widget-bookmarks.php:252 +msgid "Categorize?" +msgstr "" + +#: library/classes/widget-bookmarks.php:256 +msgid "Show description?" +msgstr "" + +#: library/classes/widget-bookmarks.php:260 +msgid "Hide invisible?" +msgstr "" + +#: library/classes/widget-bookmarks.php:264 +msgid "Show rating?" +msgstr "" + +#: library/classes/widget-bookmarks.php:268 +msgid "Show updated?" +msgstr "" + +#: library/classes/widget-bookmarks.php:272 +msgid "Show images?" +msgstr "" + +#: library/classes/widget-bookmarks.php:276 +msgid "Show name?" +msgstr "" + +#: library/classes/widget-bookmarks.php:280 +msgid "Show private?" +msgstr "" + +#: library/classes/widget-calendar.php:30 +msgid "An advanced widget that gives you total control over the output of your calendar." +msgstr "" + +#: library/classes/widget-calendar.php:32 +#: library/classes/widget-calendar.php:79 +msgid "Calendar" +msgstr "" + +#: library/classes/widget-calendar.php:91 +msgid "One-letter abbreviation?" +msgstr "" + +#: library/classes/widget-categories.php:30 +msgid "An advanced widget that gives you total control over the output of your category links." +msgstr "" + +#: library/classes/widget-categories.php:32 +#: library/classes/widget-categories.php:126 +msgid "Categories" +msgstr "" + +#: library/classes/widget-categories.php:143 +msgid "Term Group" +msgstr "" + +#: library/classes/widget-categories.php:144 +msgid "Atom" +msgstr "" + +#: library/classes/widget-categories.php:144 +msgid "RDF" +msgstr "" + +#: library/classes/widget-categories.php:144 +msgid "RSS 2.0" +msgstr "" + +#: library/classes/widget-categories.php:249 +#: library/classes/widget-pages.php:230 +msgid "Hierarchical?" +msgstr "" + +#: library/classes/widget-categories.php:253 +msgid "Use description?" +msgstr "" + +#: library/classes/widget-categories.php:257 +msgid "Show last update?" +msgstr "" + +#: library/classes/widget-categories.php:261 +msgid "Show count?" +msgstr "" + +#: library/classes/widget-nav-menu.php:29 +msgid "An advanced widget that gives you total control over the output of your menus." +msgstr "" + +#: library/classes/widget-nav-menu.php:31 +msgid "Navigation Menu" +msgstr "" + +#: library/classes/widget-nav-menu.php:97 +msgid "Navigation" +msgstr "" + +#: library/classes/widget-pages.php:30 +msgid "An advanced widget that gives you total control over the output of your page links." +msgstr "" + +#: library/classes/widget-pages.php:118 +msgid "Author" +msgstr "" + +#: library/classes/widget-pages.php:118 +msgid "Date" +msgstr "" + +#: library/classes/widget-pages.php:118 +msgid "Menu Order" +msgstr "" + +#: library/classes/widget-pages.php:118 +#: library/classes/widget-pages.php:119 +msgid "Modified" +msgstr "" + +#: library/classes/widget-pages.php:118 +msgid "Title" +msgstr "" + +#: library/classes/widget-pages.php:119 +msgid "Created" +msgstr "" + +#: library/classes/widget-search.php:30 +msgid "An advanced widget that gives you total control over the output of your search form." +msgstr "" + +#: library/classes/widget-search.php:110 +msgid "Search Label:" +msgstr "" + +#: library/classes/widget-search.php:114 +msgid "Search Text:" +msgstr "" + +#: library/classes/widget-search.php:121 +msgid "Search Submit:" +msgstr "" + +#: library/classes/widget-search.php:126 +msgid "Use theme's <code>searchform.php</code>?" +msgstr "" + +#: library/classes/widget-tags.php:30 +msgid "An advanced widget that gives you total control over the output of your tags." +msgstr "" + +#: library/classes/widget-tags.php:32 +#: library/classes/widget-tags.php:130 +msgid "Tags" +msgstr "" + +#: library/classes/widget-tags.php:146 +msgid "View" +msgstr "" + +#: library/classes/widget-tags.php:147 +msgid "Flat" +msgstr "" + +#: library/classes/widget-tags.php:263 +msgid "Pad counts?" +msgstr "" + +#: library/extensions/breadcrumb-trail - Copy.php:50 +msgid "Create an Account" +msgstr "" + +#: library/extensions/breadcrumb-trail - Copy.php:52 +msgid "Activate your Account" +msgstr "" + +#: library/extensions/breadcrumb-trail - Copy.php:56 +#: Copy.php:59 +msgid "Create a Group" +msgstr "" + +#: library/extensions/breadcrumb-trail - Copy.php:63 +msgid "Create a Blog" +msgstr "" + +#: library/extensions/breadcrumb-trail.php:40 +msgid "Browse:" +msgstr "" + +#: library/extensions/breadcrumb-trail.php:43 +msgid "Home" +msgstr "" + +#: library/extensions/breadcrumb-trail.php:197 +msgid "m" +msgstr "" + +#: library/extensions/breadcrumb-trail.php:197 +#: library/extensions/breadcrumb-trail.php:208 +msgid "F" +msgstr "" + +#: library/extensions/breadcrumb-trail.php:198 +msgid "j" +msgstr "" + +#: library/extensions/breadcrumb-trail.php:203 +#, php-format +msgid "Week %1$s" +msgstr "" + +#: library/extensions/breadcrumb-trail.php:219 +#: library/functions/context.php:369 +#, php-format +msgid "Search results for "%1$s"" +msgstr "" + +#: library/extensions/breadcrumb-trail.php:223 +#: library/functions/context.php:372 +msgid "404 Not Found" +msgstr "" + +#: library/extensions/custom-field-series.php:64 +msgid "Articles in this series" +msgstr "" + +#: library/functions/comments.php:147 +msgid "*" +msgstr "" + +#: library/functions/comments.php:151 +msgid "Email" +msgstr "" + +#: library/functions/comments.php:152 +msgid "Website" +msgstr "" + +#: library/functions/comments.php:157 +msgid "Comment" +msgstr "" + +#: library/functions/comments.php:158 +#, php-format +msgid "You must be <a href=\"%1$s\" title=\"Log in\">logged in</a> to post a comment." +msgstr "" + +#: library/functions/comments.php:159 +#, php-format +msgid "Logged in as <a href=\"%1$s\" title=\"%2$s\">%2$s</a>." +msgstr "" + +#: library/functions/comments.php:159 +msgid "Log out of this account" +msgstr "" + +#: library/functions/comments.php:159 +msgid "Log out »" +msgstr "" + +#: library/functions/comments.php:164 +msgid "Leave a Reply" +msgstr "" + +#: library/functions/comments.php:165 +#, php-format +msgid "Leave a Reply to %s" +msgstr "" + +#: library/functions/comments.php:166 +msgid "Click here to cancel reply." +msgstr "" + +#: library/functions/comments.php:167 +msgid "Submit" +msgstr "" + +#: library/functions/context.php:346 +#: library/functions/context.php:352 +#: library/functions/context.php:355 +#: library/functions/context.php:361 +#: library/functions/context.php:364 +#, php-format +msgid "Archive for %1$s" +msgstr "" + +#: library/functions/context.php:349 +#, php-format +msgid "Archive for minute %1$s" +msgstr "" + +#: library/functions/context.php:358 +#, php-format +msgid "Archive for week %1$s of %2$s" +msgstr "" + +#: library/functions/context.php:376 +#, php-format +msgid "%1$s Page %2$s" +msgstr "" + +#: library/functions/hooks-filters.php:96 +msgid "F Y" +msgstr "" + +#: library/functions/hooks-filters.php:100 +#, php-format +msgid "Copyright (c) %1$s" +msgstr "" + +#: library/functions/hooks-filters.php:113 +msgid "l, F jS, Y, g:i a" +msgstr "" + +#: library/functions/hooks-filters.php:273 +msgid "<span class=\"byline-prep byline-prep-author\">By</span> [entry-author] <span class=\"byline-prep byline-prep-published\">on</span> [entry-published] [entry-edit-link before=\"| \"]" +msgstr "" + +#: library/functions/hooks-filters.php:293 +msgid "Posted in" +msgstr "" + +#: library/functions/hooks-filters.php:293 +msgid "Tagged" +msgstr "" + +#: library/functions/menus.php:31 +msgid "Primary Menu" +msgstr "" + +#: library/functions/shortcodes.php:77 +msgid "Powered by WordPress, state-of-the-art semantic personal publishing platform" +msgstr "" + +#: library/functions/shortcodes.php:77 +msgid "WordPress" +msgstr "" + +#: library/functions/shortcodes.php:113 +msgid "Log out" +msgstr "" + +#: library/functions/shortcodes.php:115 +msgid "Log into this account" +msgstr "" + +#: library/functions/shortcodes.php:115 +msgid "Log in" +msgstr "" + +#: library/functions/shortcodes.php:128 +#, php-format +msgid "This page loaded in %1$s seconds with %2$s database queries." +msgstr "" + +#: library/functions/shortcodes.php:179 +#: library/functions/shortcodes.php:368 +#, php-format +msgid "Edit %1$s" +msgstr "" + +#: library/functions/shortcodes.php:206 +msgid "Leave a response" +msgstr "" + +#: library/functions/shortcodes.php:206 +msgid "1 Response" +msgstr "" + +#: library/functions/shortcodes.php:206 +#, php-format +msgid "%1$s Responses" +msgstr "" + +#: library/functions/shortcodes.php:213 +#: library/functions/shortcodes.php:215 +#: library/functions/shortcodes.php:217 +#, php-format +msgid "Comment on %1$s" +msgstr "" + +#: library/functions/shortcodes.php:289 +msgid "Shortlink" +msgstr "" + +#: library/functions/shortcodes.php:309 +#, php-format +msgid "%1$s at %2$s" +msgstr "" + +#: library/functions/shortcodes.php:348 +#, php-format +msgid "Permalink to comment %1$s" +msgstr "" + +#: library/functions/shortcodes.php:348 +msgid "Permalink" +msgstr "" + +#: library/functions/shortcodes.php:386 +msgid "Reply" +msgstr "" + +#: library/functions/shortcodes.php:387 +msgid "Log in to reply." +msgstr "" + +#: library/functions/widgets.php:52 +msgid "Primary" +msgstr "" + +#: library/functions/widgets.php:52 +msgid "The main (primary) widget area, most often used as a sidebar." +msgstr "" + +#: library/functions/widgets.php:53 +msgid "Secondary" +msgstr "" + +#: library/functions/widgets.php:53 +msgid "The second most important widget area, most often used as a secondary sidebar" +msgstr "" + +#: library/functions/widgets.php:54 +msgid "Subsidiary" +msgstr "" + +#: library/functions/widgets.php:54 +msgid "A widget area loaded in the footer of the site." +msgstr "" + +#: library/functions/widgets.php:57 +msgid "Utility: Before Content" +msgstr "" + +#: library/functions/widgets.php:57 +msgid "Loaded before the page's main content area." +msgstr "" + +#: library/functions/widgets.php:58 +msgid "Utility: After Content" +msgstr "" + +#: library/functions/widgets.php:58 +msgid "Loaded after the page's main content area." +msgstr "" + +#: library/functions/widgets.php:59 +msgid "Utility: After Singular" +msgstr "" + +#: library/functions/widgets.php:59 +msgid "Loaded on singular post (page, attachment, etc.) views before the comments area." +msgstr "" + +#: library/functions/widgets.php:63 +msgid "Widgets Template" +msgstr "" + +#: library/functions/widgets.php:63 +msgid "Used as the content of the Widgets page template." +msgstr "" + +#: library/functions/widgets.php:65 +msgid "404 Template" +msgstr "" + +#: library/functions/widgets.php:65 +msgid "Replaces the default 404 error page content." +msgstr "" + +#: library/legacy/deprecated.php:552 +#, php-format +msgid "<code>%1$s</code> — This function has been removed or replaced by another function." +msgstr "" + diff --git a/wp-content/themes/hybrid/library/admin/admin.php b/wp-content/themes/hybrid/library/admin/admin.php new file mode 100644 index 0000000000000000000000000000000000000000..c22c6cc8dfbe4a812206e23fb2d518da5b098f52 --- /dev/null +++ b/wp-content/themes/hybrid/library/admin/admin.php @@ -0,0 +1,80 @@ +<?php +/** + * The theme administration functions are initialized and set up mainly from this file. It is used to + * launch the theme settings page and allow child themes and plugins to access theme-specific + * features. See meta-box.php for the post meta box functions. + * + * @package Hybrid + * @subpackage Admin + */ + +/* Initialize the theme admin functionality. */ +add_action( 'init', 'hybrid_admin_init' ); + +/** + * Initializes the theme administration functions. Makes sure we have a theme settings + * page and a meta box on the edit post/page screen. + * + * @since 0.7 + */ +function hybrid_admin_init() { + $prefix = hybrid_get_prefix(); + + /* Initialize the theme settings page. */ + add_action( 'admin_menu', 'hybrid_settings_page_init' ); + + /* Save settings page meta boxes. */ + add_action( "{$prefix}_update_settings_page", 'hybrid_save_theme_settings' ); + + /* Add a new meta box to the post editor. */ + add_action( 'admin_menu', 'hybrid_create_post_meta_box' ); + + /* Saves the post meta box data. */ + add_action( 'save_post', 'hybrid_save_post_meta_box' ); + + /* Load the admin stylesheet for the widgets screen. */ + add_action( 'load-widgets.php', 'hybrid_settings_page_enqueue_style' ); +} + +/** + * Function for getting an array of available custom templates with a specific header. Ideally, + * this function would be used to grab custom singular post (any post type) templates. + * + * @since 0.7 + * @param array $args Arguments to check the templates against. + * @return array $post_templates The array of templates. + */ +function hybrid_get_post_templates( $args = array() ) { + + $args = wp_parse_args( $args, array( 'label' => array( 'Post Template' ) ) ); + + $themes = get_themes(); + $theme = get_current_theme(); + $templates = $themes[$theme]['Template Files']; + $post_templates = array(); + + if ( is_array( $templates ) ) { + $base = array( trailingslashit( get_template_directory() ), trailingslashit( get_stylesheet_directory() ) ); + + foreach ( $templates as $template ) { + $basename = str_replace( $base, '', $template ); + + $template_data = implode( '', file( $template ) ); + + $name = ''; + foreach ( $args['label'] as $label ) { + if ( preg_match( "|{$label}:(.*)$|mi", $template_data, $name ) ) { + $name = _cleanup_header_comment( $name[1] ); + break; + } + } + + if ( !empty( $name ) ) + $post_templates[trim( $name )] = $basename; + } + } + + return $post_templates; +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/admin/meta-box.php b/wp-content/themes/hybrid/library/admin/meta-box.php new file mode 100644 index 0000000000000000000000000000000000000000..3009c79b6695ef262d4df66e073a5b6300aabb2b --- /dev/null +++ b/wp-content/themes/hybrid/library/admin/meta-box.php @@ -0,0 +1,240 @@ +<?php +/** + * Creates the theme post meta box functionality, which can be extended, changed, or + * removed through child themes or plugins. The goal is to make it easier for the average end + * user to update post metadata without having to understand how custom fields work. + * + * @package Hybrid + * @subpackage Admin + */ + +/** + * Creates a meta box on the post (page, other post types) editing screen for allowing + * the easy input of commonly-used post metadata. The function uses the get_post_types() + * function for grabbing a list of available post types and adding a new meta box for + * each post type. + * + * @since 0.7 + * @uses get_post_types() Gets an array of post type objects. + * @uses add_meta_box() Adds a meta box to the post editing screen. + */ +function hybrid_create_post_meta_box() { + + /* Get theme information. */ + $prefix = hybrid_get_prefix(); + $domain = hybrid_get_textdomain(); + $theme_data = get_theme_data( TEMPLATEPATH . '/style.css' ); + + /* Gets available post types. */ + $post_types = get_post_types( array( 'public' => true, 'exclude_from_search' => false ), 'objects' ); + + /* For each available post type, create a meta box on its edit page. */ + foreach ( $post_types as $type ) + add_meta_box( "{$prefix}-{$type->name}-meta-box", sprintf( __( '%1$s Settings', $domain ), $type->labels->singular_name ), 'hybrid_post_meta_box', $type->name, 'normal', 'high' ); +} + +/** + * Creates the settings for the post meta box depending on some things in how the theme is + * set up. + * + * @since 0.7 + * @param string $type The post_type of the current post in the post editor. + */ +function hybrid_post_meta_box_args( $type = '' ) { + + /* Get theme information. */ + $prefix = hybrid_get_prefix(); + $domain = hybrid_get_textdomain(); + + /* If no post type is given, default to 'post'. */ + if ( empty( $type ) ) + $type = 'post'; + + /* If the disable SEO plugin setting is not selected, allow the input of custom meta. */ + if ( !hybrid_get_setting( 'seo_plugin' ) ) { + $meta['title'] = array( 'name' => 'Title', 'title' => __( 'Title:', $domain ), 'type' => 'text' ); + $meta['description'] = array( 'name' => 'Description', 'title' => __( 'Description:', $domain ), 'type' => 'textarea' ); + $meta['keywords'] = array( 'name' => 'Keywords', 'title' => __( 'Keywords:', $domain ), 'type' => 'text' ); + } + + /* Integrates with the custom field series extension. */ + if ( function_exists( 'custom_field_series' ) ) + $meta['series'] = array( 'name' => 'Series', 'title' => __( 'Series:', $domain ), 'type' => 'text' ); + + /* Input box for a custom thumbnail. */ + $meta['thumbnail'] = array( 'name' => 'Thumbnail', 'title' => __( 'Thumbnail:', $domain ), 'type' => 'text' ); + + /* If there are any custom post templates, allow the user to select one. */ + if ( 'page' != $type && 'attachment' != $type ) { + $post_type_object = get_post_type_object( $type ); + + if ( $post_type_object->singular_label || $post_type_object->name ) { + $templates = hybrid_get_post_templates( array( 'label' => array( "{$post_type_object->labels->singular_name} Template", "{$post_type_object->name} Template" ) ) ); + + if ( 0 != count( $templates ) ) + $meta['template'] = array( 'name' => "_wp_{$type}_template", 'title' => __( 'Template:', $domain ), 'type' => 'select', 'options' => $templates, 'use_key_and_value' => true ); + } + } + + /* Add post layouts option if current theme supports them. */ + if ( current_theme_supports( 'post-layouts' ) ) + $meta['post_layout'] = array( 'name' => 'Layout', 'title' => __( 'Layout:', $domain ), 'type' => 'select', 'options' => array( '1c', '2c-l', '2c-r', '3c-l', '3c-r', '3c-c' ) ); + + /* $prefix_$type_meta_boxes filter is deprecated. Use $prefix_$type_meta_box_args instead. */ + $meta = apply_filters( "{$prefix}_{$type}_meta_boxes", $meta ); + + return apply_filters( "{$prefix}_{$type}_meta_box_args", $meta ); +} + +/** + * Displays the post meta box on the edit post page. The function gets the various metadata elements + * from the hybrid_post_meta_box_args() function. It then loops through each item in the array and + * displays a form element based on the type of setting it should be. + * + * @since 0.7 + * @parameter object $object Post object that holds all the post information. + * @parameter array $box The particular meta box being shown and its information. + */ +function hybrid_post_meta_box( $object, $box ) { + + $prefix = hybrid_get_prefix(); + + $meta_box_options = hybrid_post_meta_box_args( $object->post_type ); ?> + + <input type="hidden" name="<?php echo "{$prefix}_{$object->post_type}_meta_box_nonce"; ?>" value="<?php echo wp_create_nonce( basename( __FILE__ ) ); ?>" /> + + <table class="form-table"> + + <?php foreach ( $meta_box_options as $option ) { + if ( function_exists( "hybrid_post_meta_box_{$option['type']}" ) ) + call_user_func( "hybrid_post_meta_box_{$option['type']}", $option, get_post_meta( $object->ID, $option['name'], true ) ); + } ?> + + </table><!-- .form-table --><?php +} + +/** + * Outputs a text input box with the given arguments for use with the post meta box. + * + * @since 0.7 + * @param array $args + * @param string|bool $value Custom field value. + */ +function hybrid_post_meta_box_text( $args = array(), $value = false ) { + $name = preg_replace( "/[^A-Za-z_-]/", '-', $args['name'] ); ?> + <tr> + <th style="width:10%;"><label for="<?php echo $name; ?>"><?php echo $args['title']; ?></label></th> + <td><input type="text" name="<?php echo $name; ?>" id="<?php echo $name; ?>" value="<?php echo wp_specialchars( $value, 1 ); ?>" size="30" tabindex="30" style="width: 97%;" /></td> + </tr> + <?php +} + +/** + * Outputs a select box with the given arguments for use with the post meta box. + * + * @since 0.7 + * @param array $args + * @param string|bool $value Custom field value. + */ +function hybrid_post_meta_box_select( $args = array(), $value = false ) { + $name = preg_replace( "/[^A-Za-z_-]/", '-', $args['name'] ); ?> + <tr> + <th style="width:10%;"><label for="<?php echo $name; ?>"><?php echo $args['title']; ?></label></th> + <td> + <select name="<?php echo $name; ?>" id="<?php echo $name; ?>"> + <option value=""></option> + <?php foreach ( $args['options'] as $option => $val ) : ?> + <option <?php if ( htmlentities( $value, ENT_QUOTES ) == $val ) echo ' selected="selected"'; ?> value="<?php echo $val; ?>"><?php if ( $args['use_key_and_value'] ) echo $option; else echo $val; ?></option> + <?php endforeach; ?> + </select> + </td> + </tr> + <?php +} + +/** + * Outputs a textarea with the given arguments for use with the post meta box. + * + * @since 0.7 + * @param array $args + * @param string|bool $value Custom field value. + */ +function hybrid_post_meta_box_textarea( $args = array(), $value = false ) { + $name = preg_replace( "/[^A-Za-z_-]/", '-', $args['name'] ); ?> + <tr> + <th style="width:10%;"><label for="<?php echo $name; ?>"><?php echo $args['title']; ?></label></th> + <td><textarea name="<?php echo $name; ?>" id="<?php echo $name; ?>" cols="60" rows="4" tabindex="30" style="width: 97%;"><?php echo wp_specialchars( $value, 1 ); ?></textarea></td> + </tr> + <?php +} + +/** + * Outputs radio inputs with the given arguments for use with the post meta box. + * + * @since 0.8 + * @param array $args + * @param string|bool $value Custom field value. + */ +function hybrid_post_meta_box_radio( $args = array(), $value = false ) { + $name = preg_replace( "/[^A-Za-z_-]/", '-', $args['name'] ); ?> + <tr> + <th style="width:10%;"><label for="<?php echo $name; ?>"><?php echo $args['title']; ?></label></th> + <td> + <?php foreach ( $args['options'] as $option => $val ) { ?> + <input <?php if ( htmlentities( $value, ENT_QUOTES ) == $val ) echo ' checked="checked"'; ?>type="radio" name="<?php echo $name; ?>" value="<?php echo $val; ?>" /> <?php echo $val; ?> + <?php } ?> + </td> + </tr> + <?php +} + +/** + * The function for saving the theme's post meta box settings. It loops through each of the meta + * box arguments for that particular post type and adds, updates, or deletes the metadata. + * + * @since 0.7 + * @param int $post_id + */ +function hybrid_save_post_meta_box( $post_id ) { + global $post; + + $prefix = hybrid_get_prefix(); + + /* Verify the nonce before preceding. */ + if ( !wp_verify_nonce( $_POST["{$prefix}_{$_POST['post_type']}_meta_box_nonce"], basename( __FILE__ ) ) ) + return $post_id; + + /* Get the post type object. */ + $post_type = get_post_type_object( $_POST['post_type'] ); + + /* Check if the current user has permission to edit the post. */ + if ( !current_user_can( $post_type->cap->edit_post, $post_id ) ) + return $post_id; + + /* Get the post meta box arguments. */ + $metadata = hybrid_post_meta_box_args( $_POST['post_type'] ); + + /* Loop through all of post meta box arguments. */ + foreach ( $metadata as $meta ) { + + /* Get the meta value of the custom field key. */ + $meta_value = get_post_meta( $post_id, $meta['name'], true ); + + /* Get the meta value the user input. */ + $new_meta_value = stripslashes( $_POST[ preg_replace( "/[^A-Za-z_-]/", '-', $meta['name'] ) ] ); + + /* If a new meta value was added and there was no previous value, add it. */ + if ( $new_meta_value && '' == $meta_value ) + add_post_meta( $post_id, $meta['name'], $new_meta_value, true ); + + /* If the new meta value does not match the old value, update it. */ + elseif ( $new_meta_value && $new_meta_value != $meta_value ) + update_post_meta( $post_id, $meta['name'], $new_meta_value ); + + /* If there is no new meta value but an old value exists, delete it. */ + elseif ( '' == $new_meta_value && $meta_value ) + delete_post_meta( $post_id, $meta['name'], $meta_value ); + } +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/admin/settings-page.php b/wp-content/themes/hybrid/library/admin/settings-page.php new file mode 100644 index 0000000000000000000000000000000000000000..ce1ddffe8473cd9370fbd87c9c50dcf556293abd --- /dev/null +++ b/wp-content/themes/hybrid/library/admin/settings-page.php @@ -0,0 +1,377 @@ +<?php +/** + * Handles the display and functionality of the theme settings page. This provides the needed hooks and + * meta box calls for developers to create any number of theme settings needed. + * + * Provides the ability for developers to add custom meta boxes to the theme settings page by using the + * add_meta_box() function. Developers should hook their meta box registration function to 'admin_menu' + * and register the meta box for 'appearance_page-theme-settings'. If data needs to be saved, devs can + * use the '$prefix_update_settings_page' action hook to save their data. + * + * @package Hybrid + * @subpackage Admin + */ + +/** + * Initializes all the theme settings page functions. This function is used to create the theme + * settings page, then use that as a launchpad for specific actions that need to be tied to the + * settings page. + * + * Users or developers can set a custom capability (default is 'edit_themes') for access to the + * settings page using the "$prefix_settings_capability" filter hook. + * + * @since 0.7 + * @global string $hybrid The global theme object. + */ +function hybrid_settings_page_init() { + global $hybrid; + + /* Get theme information. */ + $theme_data = get_theme_data( TEMPLATEPATH . '/style.css' ); + $prefix = hybrid_get_prefix(); + $domain = hybrid_get_textdomain(); + + /* Create the theme settings page. */ + $hybrid->settings_page = add_theme_page( sprintf( __( '%1$s Theme Settings', $domain ), $theme_data['Name'] ), sprintf( __( '%1$s Settings', $domain ), $theme_data['Name'] ), apply_filters( "{$prefix}_settings_capability", 'edit_theme_options' ), 'theme-settings', 'hybrid_settings_page' ); + + /* Register the default theme settings meta boxes. */ + add_action( "load-{$hybrid->settings_page}", 'hybrid_create_settings_meta_boxes' ); + + /* Make sure the settings are saved. */ + add_action( "load-{$hybrid->settings_page}", 'hybrid_load_settings_page' ); + + /* Load the JavaScript and stylehsheets needed for the theme settings. */ + add_action( "load-{$hybrid->settings_page}", 'hybrid_settings_page_enqueue_script' ); + add_action( "load-{$hybrid->settings_page}", 'hybrid_settings_page_enqueue_style' ); + add_action( "admin_head-{$hybrid->settings_page}", 'hybrid_settings_page_load_scripts' ); +} + +/** + * This function creates all of the default theme settings and adds them to a single array. By saving + * them in one array, the function only creates one setting in the {$wpdb->prefix}_options table. + * + * @since 0.4 + * @return array All options for theme settings. + */ +function hybrid_theme_settings() { + $domain = hybrid_get_textdomain(); + + /* Add the default data to the theme settings array. */ + $settings = array( + 'feed_url' => false, + 'feeds_redirect' => false, + 'print_style' => false, + 'superfish_js' => true, + 'seo_plugin' => false, + 'use_menus' => true, + 'footer_insert' => '<p class="copyright">' . __( 'Copyright © [the-year] [site-link].', $domain ) . '</p>' . "\n\n" . '<p class="credit">' . __( 'Powered by [wp-link] and [theme-link].', $domain ) . '</p>', + ); + + /* If there is a child theme active, add the [child-link] shortcode to the $footer_insert. */ + if ( STYLESHEETPATH !== TEMPLATEPATH ) + $settings['footer_insert'] = '<p class="copyright">' . __( 'Copyright © [the-year] [site-link].', $domain ) . '</p>' . "\n\n" . '<p class="credit">' . __( 'Powered by [wp-link], [theme-link], and [child-link].', $domain ) . '</p>'; + + return apply_filters( hybrid_get_prefix() . '_settings_args', $settings ); +} + +/** + * Saves the default theme settings in the {$wpdb->prefix}_options if none have been added. The + * settings are given a unique name depending on the theme directory. They are always saved as + * {$prefix}_theme_settings in the database. It also fires the {$prefix}_update_settings_page + * hook for saving custom settings. + * + * @since 0.7 + */ +function hybrid_load_settings_page() { + $prefix = hybrid_get_prefix(); + + /* Get theme settings from the database. */ + $settings = get_option( "{$prefix}_theme_settings" ); + + /* If no settings are available, add the default settings to the database. */ + if ( empty( $settings ) ) { + $settings = hybrid_theme_settings(); + add_option( "{$prefix}_theme_settings", $settings, '', 'yes' ); + + /* Redirect the page so that the settings are reflected on the settings page. */ + wp_redirect( admin_url( 'themes.php?page=theme-settings' ) ); + exit; + } + + /* If the form has been submitted, check the referer and execute available actions. */ + elseif ( 'Y' == $_POST["{$prefix}-settings-submit"] ) { + + /* Make sure the form is valid. */ + check_admin_referer( "{$prefix}-settings-page" ); + + /* Available hook for saving settings. */ + do_action( "{$prefix}_update_settings_page" ); + + /* Redirect the page so that the new settings are reflected on the settings page. */ + wp_redirect( admin_url( 'themes.php?page=theme-settings&updated=true' ) ); + exit; + } +} + +/** + * Updates the default theme settings if the settings page has been updated. It validates the values + * added through the default theme settings page meta boxes. Only settings returned by the + * hybrid_theme_settings() function will be saved. Child themes and plugins should save their settings + * separately. + * + * @since 0.7 + */ +function hybrid_save_theme_settings() { + $prefix = hybrid_get_prefix(); + + /* Get the current theme settings. */ + $settings = get_option( "{$prefix}_theme_settings" ); + + /* Loop through each of the default settings and match them with the posted settings. */ + foreach ( hybrid_theme_settings() as $key => $value ) + $settings[$key] = $_POST[$key]; + + /* Make sure users without the 'unfiltered_html' capability can't add HTML to the footer insert. */ + if ( $settings['footer_insert'] && !current_user_can( 'unfiltered_html' ) ) + $settings['footer_insert'] = stripslashes( wp_filter_post_kses( $settings['footer_insert'] ) ); + + /* Escape the entered feed URL. */ + if ( $settings['feed_url'] ) + $settings['feed_url'] = esc_url( $settings['feed_url'] ); + + /* Update the theme settings. */ + $updated = update_option( "{$prefix}_theme_settings", $settings ); +} + +/** + * Creates the default meta boxes for the theme settings page. Child theme and plugin developers + * should use add_meta_box() to create additional meta boxes. + * + * @since 0.7 + * @global string $hybrid The global theme object. + */ +function hybrid_create_settings_meta_boxes() { + global $hybrid; + + /* Get theme information. */ + $prefix = hybrid_get_prefix(); + $domain = hybrid_get_textdomain(); + $theme_data = get_theme_data( TEMPLATEPATH . '/style.css' ); + + /* Adds the About box for the parent theme. */ + add_meta_box( "{$prefix}-about-theme-meta-box", sprintf( __( 'About %1$s', $domain ), $theme_data['Title'] ), 'hybrid_about_theme_meta_box', $hybrid->settings_page, 'normal', 'high' ); + + /* If the user is using a child theme, add an About box for it. */ + if ( TEMPLATEPATH != STYLESHEETPATH ) { + $child_data = get_theme_data( STYLESHEETPATH . '/style.css' ); + add_meta_box( "{$prefix}-about-child-meta-box", sprintf( __( 'About %1$s', $domain ), $child_data['Title'] ), 'hybrid_about_theme_meta_box', $hybrid->settings_page, 'normal', 'high' ); + } + + /* Creates a meta box for the general theme settings. */ + add_meta_box( "{$prefix}-general-settings-meta-box", __( 'General settings', $domain ), 'hybrid_general_settings_meta_box', $hybrid->settings_page, 'normal', 'high' ); + + /* Creates a meta box for the footer settings. */ + add_meta_box( "{$prefix}-footer-settings-meta-box", __( 'Footer settings', $domain ), 'hybrid_footer_settings_meta_box', $hybrid->settings_page, 'normal', 'high' ); +} + +/** + * Creates an information meta box with no settings about the theme. The meta box will display + * information about both the parent theme and child theme. If a child theme is active, this function + * will be called a second time. + * + * @since 0.7 + * @param $object Variable passed through the do_meta_boxes() call. + * @param array $box Specific information about the meta box being loaded. + */ +function hybrid_about_theme_meta_box( $object, $box ) { + + /* Get theme information. */ + $prefix = hybrid_get_prefix(); + $domain = hybrid_get_textdomain(); + + /* Grab theme information based on the meta box being shown (parent or child theme). */ + if ( "{$prefix}-about-theme-meta-box" == $box['id'] ) + $theme_data = get_theme_data( TEMPLATEPATH . '/style.css' ); + + elseif ( "{$prefix}-about-child-meta-box" == $box['id'] ) + $theme_data = get_theme_data( STYLESHEETPATH . '/style.css' ); ?> + + <table class="form-table"> + <tr> + <th><?php _e( 'Theme:', $domain ); ?></th> + <td><a href="<?php echo $theme_data['URI']; ?>" title="<?php echo $theme_data['Title']; ?>"><?php echo $theme_data['Title']; ?> <?php echo $theme_data['Version']; ?></a></td> + </tr> + <tr> + <th><?php _e( 'Author:', $domain ); ?></th> + <td><?php echo $theme_data['Author']; ?></td> + </tr> + <tr> + <th><?php _e( 'Description:', $domain ); ?></th> + <td><?php echo $theme_data['Description']; ?></td> + </tr> + </table><!-- .form-table --><?php +} + +/** + * Adds a general settings suite suitable for the average theme, which includes a print stylesheet, + * drop-downs JavaScript option, and the ability to change the feed URL. + * + * @since 0.7 + */ +function hybrid_general_settings_meta_box() { + $domain = hybrid_get_textdomain(); ?> + + <table class="form-table"> + + <tr> + <th><label for="print_style"><?php _e( 'Stylesheets:', $domain ); ?></label></th> + <td> + <input id="print_style" name="print_style" type="checkbox" <?php if ( hybrid_get_setting( 'print_style' ) ) echo 'checked="checked"'; ?> value="true" /> + <label for="print_style"><?php _e( 'Select this to have the theme automatically include a print stylesheet.', $domain ); ?></label> + </td> + </tr> + <tr> + <th><label for="superfish_js"><?php _e( 'JavaScript:', $domain ); ?></label></th> + <td> + <input id="superfish_js" name="superfish_js" type="checkbox" <?php if ( hybrid_get_setting( 'superfish_js' ) ) echo 'checked="checked"'; ?> value="true" /> + <label for="superfish_js"><?php _e( 'Include the drop-down menu JavaScript.', $domain ); ?></label> + </td> + </tr> + <tr> + <th><label for="use_menus"><?php _e( 'Menus:', $domain ); ?></label></th> + <td> + <input id="use_menus" name="use_menus" type="checkbox" <?php if ( hybrid_get_setting( 'use_menus' ) ) echo 'checked="checked"'; ?> value="true" /> + <label for="use_menus"><?php _e( 'Use the WordPress 3.0+ menu system? Child themes built prior to <em>Hybrid</em> 0.8 may need to be updated to use this.', $domain ); ?></label> + </td> + </tr> + <tr> + <th><label for="feed_url"><?php _e( 'Feeds:', $domain ); ?></label></th> + <td> + <input id="feed_url" name="feed_url" type="text" value="<?php echo hybrid_get_setting( 'feed_url' ); ?>" size="30" /><br /> + <?php _e( 'If you have an alternate feed address, such as one from <a href="http://feedburner.com" title="Feedburner">Feedburner</a>, you can enter it here to have the theme redirect your feed links.', $domain ); ?><br /><br /> + <input id="feeds_redirect" name="feeds_redirect" type="checkbox" <?php if ( hybrid_get_setting( 'feeds_redirect' ) ) echo 'checked="checked"'; ?> value="true" /> + <label for="feeds_redirect"><?php _e( 'Direct category, tag, search, and author feeds to your alternate feed address?', $domain ); ?></label> + </td> + </tr> + <tr> + <th><label for="seo_plugin"><acronym title="<?php _e( 'Search Engine Optimization', $domain ); ?>"><?php _e( 'SEO:', $domain ); ?></acronym></label></th> + <td> + <input id="seo_plugin" name="seo_plugin" type="checkbox" <?php if ( hybrid_get_setting( 'seo_plugin' ) ) echo 'checked="checked"'; ?> value="true" /> + <label for="seo_plugin"><?php _e( 'Are you using an <acronym title="Search Engine Optimization">SEO</acronym> plugin? Select this to disable the theme\'s meta and indexing features.', $domain ); ?></label> + </td> + </tr> + + </table><!-- .form-table --><?php +} + +/** + * Creates a settings box that allows users to customize their footer. A basic textarea is given that + * allows HTML and shortcodes to be input. + * + * @since 0.7 + */ +function hybrid_footer_settings_meta_box() { + $domain = hybrid_get_textdomain(); ?> + + <table class="form-table"> + <tr> + <th><label for="footer_insert"><?php _e( 'Footer Insert:', $domain ); ?></label></th> + <td> + <?php _e( 'You can add custom <acronym title="Hypertext Markup Language">HTML</acronym> and/or shortcodes, which will be automatically inserted into your theme.', $domain ); ?><br /> + <textarea id="footer_insert" name="footer_insert" cols="60" rows="5" style="width: 98%;"><?php echo wp_specialchars( stripslashes( hybrid_get_setting( 'footer_insert' ) ), 1, 0, 1 ); ?></textarea><br /> + <?php _e( 'Shortcodes:', $domain ); ?> <code>[the-year]</code>, <code>[site-link]</code>, <code>[wp-link]</code>, <code>[theme-link]</code>, <code>[child-link]</code>, <code>[loginout-link]</code>, <code>[query-counter]</code>. + </td> + </tr> + </table><!-- .form-table --><?php +} + +/** + * Displays the theme settings page and calls do_meta_boxes() to allow additional settings + * meta boxes to be added to the page. + * + * @since 0.7 + * @global string $hybrid The global theme object. + */ +function hybrid_settings_page() { + global $hybrid; + + /* Get the theme information. */ + $prefix = hybrid_get_prefix(); + $domain = hybrid_get_textdomain(); + $theme_data = get_theme_data( TEMPLATEPATH . '/style.css' ); ?> + + <div class="wrap"> + + <h2><?php printf( __( '%1$s Theme Settings', $domain ), $theme_data['Name'] ); ?></h2> + + <?php if ( 'true' == esc_attr( $_GET['updated'] ) ) echo '<p class="updated fade below-h2" style="padding: 5px 10px;"><strong>' . __( 'Settings saved.', $domain ) . '</strong></p>'; ?> + + <div id="poststuff"> + + <form method="post" action="<?php admin_url( 'themes.php?page=theme-settings' ); ?>"> + + <?php wp_nonce_field( "{$prefix}-settings-page" ); ?> + <?php wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?> + <?php wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?> + + <div class="metabox-holder"> + <div class="post-box-container column-1 normal"><?php do_meta_boxes( $hybrid->settings_page, 'normal', $theme_data ); ?></div> + <div class="post-box-container column-2 advanced"><?php do_meta_boxes( $hybrid->settings_page, 'advanced', $theme_data ); ?></div> + <div class="post-box-container column-3 side"><?php do_meta_boxes( $hybrid->settings_page, 'side', $theme_data ); ?></div> + </div> + + <p class="submit" style="clear: both;"> + <input type="submit" name="Submit" class="button-primary" value="<?php _e( 'Update Settings', $domain ); ?>" /> + <input type="hidden" name="<?php echo "{$prefix}-settings-submit"; ?>" value="Y" /> + <!-- deprecated --><input type="hidden" name="<?php echo "hybrid_submit_hidden"; ?>" value="Y" /> + </p><!-- .submit --> + + <?php do_action( "{$prefix}_child_settings" ); // Hook for child settings (deprecated). ?> + + </form> + + </div><!-- #poststuff --> + + </div><!-- .wrap --><?php +} + +/** + * Loads the JavaScript files required for managing the meta boxes on the theme settings + * page, which allows users to arrange the boxes to their liking. + * + * @since 0.7 + */ +function hybrid_settings_page_enqueue_script() { + wp_enqueue_script( 'common' ); + wp_enqueue_script( 'wp-lists' ); + wp_enqueue_script( 'postbox' ); +} + +/** + * Loads the admin.css stylesheet for the theme settings page. + * + * @since 0.7 + */ +function hybrid_settings_page_enqueue_style() { + wp_enqueue_style( hybrid_get_prefix() . '-admin', THEME_CSS . '/admin.css', false, 0.7, 'screen' ); +} + +/** + * Loads the JavaScript required for toggling the meta boxes on the theme settings page. + * + * @since 0.7 + * @global string $hybrid The global theme object. + */ +function hybrid_settings_page_load_scripts() { + global $hybrid; ?> + <script type="text/javascript"> + //<![CDATA[ + jQuery(document).ready( function($) { + $('.if-js-closed').removeClass('if-js-closed').addClass('closed'); + postboxes.add_postbox_toggles( '<?php echo $hybrid->settings_page; ?>' ); + }); + //]]> + </script><?php +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/classes/hybrid.php b/wp-content/themes/hybrid/library/classes/hybrid.php new file mode 100644 index 0000000000000000000000000000000000000000..aaf27b79c60a2ef30a4f747335c3f9bae95e1b29 --- /dev/null +++ b/wp-content/themes/hybrid/library/classes/hybrid.php @@ -0,0 +1,253 @@ +<?php +/** + * The Hybrid class launches the framework. It's the organizational structure behind the + * entire theme. This class should be initialized before anything else in the theme is called. + * + * @package Hybrid + * @subpackage Classes + */ + +class Hybrid { + + /** + * Theme prefix (mostly used for hooks). + * + * @since 0.7 + * @var string + */ + var $prefix; + + /** + * Initializes the theme framework, loads the required files, and calls the + * functions needed to run the theme. + * + * @since 0.7 + */ + function init() { + + /* Define theme constants. */ + $this->constants(); + + /* Load theme functions. */ + $this->functions(); + + /* Load theme extensions. */ + $this->extensions(); + + /* Load legacy files and functions. */ + $this->legacy(); + + /* Load admin files. */ + $this->admin(); + + /* Theme prefix for creating things such as filter hooks (i.e., "$prefix_hook_name"). */ + $this->prefix = hybrid_get_prefix(); + + /* Load theme textdomain. */ + $domain = hybrid_get_textdomain(); + $locale = get_locale(); + load_textdomain( $domain, locate_template( array( "languages/{$domain}-{$locale}.mo", "{$domain}-{$locale}.mo" ) ) ); + + /* Initialize the theme's default actions. */ + $this->actions(); + + /* Initialize the theme's default filters. */ + $this->filters(); + + /* Theme init hook. */ + do_action( "{$this->prefix}_init" ); + } + + /** + * Defines the constant paths for use within the theme. + * + * @since 0.7 + */ + function constants() { + define( 'THEME_DIR', get_template_directory() ); + define( 'THEME_URI', get_template_directory_uri() ); + define( 'CHILD_THEME_DIR', get_stylesheet_directory() ); + define( 'CHILD_THEME_URI', get_stylesheet_directory_uri() ); + + define( 'THEME_LIBRARY', THEME_DIR . '/library' ); + define( 'THEME_ADMIN', THEME_LIBRARY . '/admin' ); + define( 'THEME_CLASSES', THEME_LIBRARY . '/classes' ); + define( 'THEME_EXTENSIONS', THEME_LIBRARY . '/extensions' ); + define( 'THEME_FUNCTIONS', THEME_LIBRARY . '/functions' ); + define( 'THEME_LEGACY', THEME_LIBRARY . '/legacy' ); + define( 'THEME_IMAGES', THEME_URI . '/library/images' ); + define( 'THEME_CSS', THEME_URI . '/library/css' ); + define( 'THEME_JS', THEME_URI . '/library/js' ); + } + + /** + * Loads the core theme functions. + * + * @since 0.7 + */ + function functions() { + require_once( THEME_FUNCTIONS . '/core.php' ); + require_once( THEME_FUNCTIONS . '/hooks-actions.php' ); + require_once( THEME_FUNCTIONS . '/hooks-filters.php' ); + require_once( THEME_FUNCTIONS . '/comments.php' ); + require_once( THEME_FUNCTIONS . '/context.php' ); + require_once( THEME_FUNCTIONS . '/media.php' ); + require_once( THEME_FUNCTIONS . '/shortcodes.php' ); + require_once( THEME_FUNCTIONS . '/template.php' ); + require_once( THEME_FUNCTIONS . '/widgets.php' ); + + /* Menus compatibility. */ + if ( hybrid_get_setting( 'use_menus' ) ) + require_once( THEME_FUNCTIONS . '/menus.php' ); + } + + /** + * Load extensions (external projects). + * + * @since 0.7 + */ + function extensions() { + require_once( THEME_EXTENSIONS . '/breadcrumb-trail.php' ); + require_once( THEME_EXTENSIONS . '/custom-field-series.php' ); + require_once( THEME_EXTENSIONS . '/get-the-image.php' ); + require_once( THEME_EXTENSIONS . '/get-the-object.php' ); + } + + /** + * Load legacy functions for backwards compatibility. + * + * @since 0.7 + */ + function legacy() { + require_once( THEME_LEGACY . '/deprecated.php' ); + } + + /** + * Load admin files. + * + * @since 0.7 + */ + function admin() { + if ( is_admin() ) { + require_once( THEME_ADMIN . '/admin.php' ); + require_once( THEME_ADMIN . '/meta-box.php' ); + require_once( THEME_ADMIN . '/settings-page.php' ); + } + } + + /** + * Adds the default theme actions. + * + * @since 0.7 + */ + function actions() { + + /* Remove WP and plugin functions. */ + remove_action( 'wp_head', 'wp_generator' ); + add_action( 'wp_print_styles', 'hybrid_disable_styles' ); + + /* Head actions. */ + $actions[] = 'hybrid_meta_content_type'; + $actions[] = 'wp_generator'; + $actions[] = 'hybrid_meta_template'; + if ( !hybrid_get_setting( 'seo_plugin' ) ) { + $actions[] = 'hybrid_meta_robots'; + $actions[] = 'hybrid_meta_author'; + $actions[] = 'hybrid_meta_copyright'; + $actions[] = 'hybrid_meta_revised'; + $actions[] = 'hybrid_meta_description'; + $actions[] = 'hybrid_meta_keywords'; + } + $actions[] = 'hybrid_head_pingback'; + $actions[] = 'hybrid_favicon'; + + foreach ( $actions as $action ) + add_action( "{$this->prefix}_head", $action ); + + /* WP print scripts and styles. */ + add_action( 'template_redirect', 'hybrid_enqueue_style' ); + add_action( 'template_redirect', 'hybrid_enqueue_script' ); + + /* Header. */ + add_action( "{$this->prefix}_header", 'hybrid_site_title' ); + add_action( "{$this->prefix}_header", 'hybrid_site_description' ); + + /* Load the correct menu. */ + if ( hybrid_get_setting( 'use_menus' ) ) + add_action( "{$this->prefix}_after_header", 'hybrid_get_primary_menu' ); + else + add_action( "{$this->prefix}_after_header", 'hybrid_page_nav' ); + + /* After container. */ + add_action( "{$this->prefix}_after_container", 'hybrid_get_primary' ); + add_action( "{$this->prefix}_after_container", 'hybrid_get_secondary' ); + + /* Before content. */ + add_action( "{$this->prefix}_before_content", 'hybrid_breadcrumb' ); + add_action( "{$this->prefix}_before_content", 'hybrid_get_utility_before_content' ); + + /* Entry actions. */ + add_action( "{$this->prefix}_before_entry", 'hybrid_entry_title' ); + add_action( "{$this->prefix}_before_entry", 'hybrid_byline' ); + add_action( "{$this->prefix}_after_entry", 'hybrid_entry_meta' ); + + /* After singular views. */ + add_action( "{$this->prefix}_after_singular", 'hybrid_get_utility_after_singular' ); + add_action( "{$this->prefix}_after_singular", 'custom_field_series' ); + + /* After content. */ + add_action( "{$this->prefix}_after_content", 'hybrid_get_utility_after_content' ); + add_action( "{$this->prefix}_after_content", 'hybrid_navigation_links' ); + + /* Before footer. */ + add_action( "{$this->prefix}_before_footer", 'hybrid_get_subsidiary' ); + + /* Hybrid footer. */ + add_action( "{$this->prefix}_footer", 'hybrid_footer_insert' ); + + /* Comments */ + add_action( "{$this->prefix}_before_comment", 'hybrid_avatar' ); + add_action( "{$this->prefix}_before_comment", 'hybrid_comment_meta' ); + } + + /** + * Adds the default theme filters. + * + * @since 0.7 + */ + function filters() { + /* Remove WP and plugin functions. */ + remove_filter( 'pre_user_description', 'wp_filter_kses' ); + remove_filter( 'pre_term_description', 'wp_filter_kses' ); + remove_filter( 'term_description', 'wp_kses_data' ); + + /* Add same filters to user description as term descriptions. */ + add_filter( 'get_the_author_description', 'wptexturize' ); + add_filter( 'get_the_author_description', 'convert_chars' ); + add_filter( 'get_the_author_description', 'wpautop' ); + add_filter( 'get_the_author_description', 'shortcode_unautop' ); + + /* Make text widgets, term descriptions, and user descriptions shortcode aware. */ + add_filter( 'widget_text', 'do_shortcode' ); + add_filter( 'term_description', 'do_shortcode' ); + add_filter( 'get_the_author_description', 'do_shortcode' ); + + /* Template filters. */ + add_filter( 'date_template', 'hybrid_date_template' ); + add_filter( 'author_template', 'hybrid_user_template' ); + add_filter( 'tag_template', 'hybrid_taxonomy_template' ); + add_filter( 'category_template', 'hybrid_taxonomy_template' ); + add_filter( 'single_template', 'hybrid_singular_template' ); + add_filter( 'page_template', 'hybrid_singular_template' ); + add_filter( 'attachment_template', 'hybrid_singular_template' ); + + /* Feed links. */ + add_filter( 'feed_link', 'hybrid_feed_link', 1, 2 ); + add_filter( 'category_feed_link', 'hybrid_other_feed_link' ); + add_filter( 'author_feed_link', 'hybrid_other_feed_link' ); + add_filter( 'tag_feed_link', 'hybrid_other_feed_link' ); + add_filter( 'search_feed_link', 'hybrid_other_feed_link' ); + } +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/classes/widget-archives.php b/wp-content/themes/hybrid/library/classes/widget-archives.php new file mode 100644 index 0000000000000000000000000000000000000000..6545d23584b5d55ec7d8b94b1e1874b478edd2ca --- /dev/null +++ b/wp-content/themes/hybrid/library/classes/widget-archives.php @@ -0,0 +1,173 @@ +<?php +/** + * Archives Widget Class + * + * The Archives widget replaces the default WordPress Archives widget. This version gives total + * control over the output to the user by allowing the input of all the arguments typically seen + * in the wp_get_archives() function. + * + * @since 0.6 + * @link http://codex.wordpress.org/Template_Tags/wp_get_archives + * @link http://themehybrid.com/themes/hybrid/widgets + * + * @package Hybrid + * @subpackage Classes + */ + +class Hybrid_Widget_Archives extends WP_Widget { + + var $prefix; + var $textdomain; + + /** + * Set up the widget's unique name, ID, class, description, and other options. + * @since 0.6 + */ + function Hybrid_Widget_Archives() { + $this->prefix = hybrid_get_prefix(); + $this->textdomain = hybrid_get_textdomain(); + + $widget_ops = array( 'classname' => 'archives', 'description' => __( 'An advanced widget that gives you total control over the output of your archives.', $this->textdomain ) ); + $control_ops = array( 'width' => 525, 'height' => 350, 'id_base' => "{$this->prefix}-archives" ); + $this->WP_Widget( "{$this->prefix}-archives", __( 'Archives', $this->textdomain ), $widget_ops, $control_ops ); + } + + /** + * Outputs the widget based on the arguments input through the widget controls. + * @since 0.6 + */ + function widget( $args, $instance ) { + extract( $args ); + + $args = array(); + + $args['type'] = $instance['type']; + $args['format'] = $instance['format']; + $args['before'] = $instance['before']; + $args['after'] = $instance['after']; + $args['show_post_count'] = isset( $instance['show_post_count'] ) ? $instance['show_post_count'] : false; + $args['limit'] = !empty( $instance['limit'] ) ? intval( $instance['limit'] ) : ''; + $args['echo'] = false; + + echo $before_widget; + + if ( $instance['title'] ) + echo $before_title . apply_filters( 'widget_title', $instance['title'] ) . $after_title; + + $archives = str_replace( array( "\r", "\n", "\t" ), '', wp_get_archives( $args ) ); + + if ( 'option' == $args['format'] ) { + + if ( 'yearly' == $args['type'] ) + $option_title = __( 'Select Year', $this->textdomain ); + elseif ( 'monthly' == $args['type'] ) + $option_title = __( 'Select Month', $this->textdomain ); + elseif ( 'weekly' == $args['type'] ) + $option_title = __( 'Select Week', $this->textdomain ); + elseif ( 'daily' == $args['type'] ) + $option_title = __( 'Select Day', $this->textdomain ); + elseif ( 'postbypost' == $args['type'] || 'alpha' == $args['type'] ) + $option_title = __( 'Select Post', $this->textdomain ); + + echo '<select name="archive-dropdown" onchange=\'document.location.href=this.options[this.selectedIndex].value;\'>'; + echo '<option value="">' . esc_attr( $option_title ) . '</option>'; + echo $archives; + echo '</select>'; + } + elseif ( 'html' == $args['format'] ) { + echo '<ul class="xoxo archives">' . $archives . '</ul><!-- .xoxo .archives -->'; + } + else { + echo $archives; + } + + echo $after_widget; + } + + /** + * Updates the widget control options for the particular instance of the widget. + * @since 0.6 + */ + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + + $instance = $new_instance; + + $instance['title'] = strip_tags( $new_instance['title'] ); + $instance['before'] = strip_tags( $new_instance['before'] ); + $instance['after'] = strip_tags( $new_instance['after'] ); + $instance['limit'] = strip_tags( $new_instance['limit'] ); + $instance['show_post_count'] = ( isset( $new_instance['show_post_count'] ) ? 1 : 0 ); + + return $instance; + } + + /** + * Displays the widget control options in the Widgets admin screen. + * @since 0.6 + */ + function form( $instance ) { + + //Defaults + $defaults = array( + 'title' => __( 'Archives', $this->textdomain ), + 'limit' => '', + 'type' => 'monthly', + 'format' => 'html', + 'before' => '', + 'after' => '' + ); + $instance = wp_parse_args( (array) $instance, $defaults ); + + $type = array( 'alpha' => __( 'Alphabetical', $this->textdomain ), 'daily' => __( 'Daily', $this->textdomain ), 'monthly' => __( 'Monthly', $this->textdomain ),'postbypost' => __( 'Post By Post', $this->textdomain ), 'weekly' => __( 'Weekly', $this->textdomain ), 'yearly' => __( 'Yearly', $this->textdomain ) ); + $format = array( 'custom' => __( 'Custom', $this->textdomain ), 'html' => __( 'HTML', $this->textdomain ), 'option' => __( 'Option', $this->textdomain ) ); + + ?> + + <div class="hybrid-widget-controls columns-2"> + <p> + <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', $this->textdomain ); ?></label> + <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'limit' ); ?>"><code>limit</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'limit' ); ?>" name="<?php echo $this->get_field_name( 'limit' ); ?>" value="<?php echo $instance['limit']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'type' ); ?>"><code>type</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'type' ); ?>" name="<?php echo $this->get_field_name( 'type' ); ?>"> + <?php foreach ( $type as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['type'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'format' ); ?>"><code>format</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'format' ); ?>" name="<?php echo $this->get_field_name( 'format' ); ?>"> + <?php foreach ( $format as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['format'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + </div> + + <div class="hybrid-widget-controls columns-2 column-last"> + <p> + <label for="<?php echo $this->get_field_id( 'before' ); ?>"><code>before</code></label> + <input type="text" class="widefat code" id="<?php echo $this->get_field_id( 'before' ); ?>" name="<?php echo $this->get_field_name( 'before' ); ?>" value="<?php echo $instance['before']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'after' ); ?>"><code>after</code></label> + <input type="text" class="widefat code" id="<?php echo $this->get_field_id( 'after' ); ?>" name="<?php echo $this->get_field_name( 'after' ); ?>" value="<?php echo $instance['after']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'show_post_count' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['show_post_count'], true ); ?> id="<?php echo $this->get_field_id( 'show_post_count' ); ?>" name="<?php echo $this->get_field_name( 'show_post_count' ); ?>" /> <?php _e( 'Show post count?', $this->textdomain ); ?> <code>show_post_count</code></label> + </p> + </div> + <div style="clear:both;"> </div> + <?php + } +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/classes/widget-authors.php b/wp-content/themes/hybrid/library/classes/widget-authors.php new file mode 100644 index 0000000000000000000000000000000000000000..5abd5b660522521176fde7919960c6ff657c90dd --- /dev/null +++ b/wp-content/themes/hybrid/library/classes/widget-authors.php @@ -0,0 +1,182 @@ +<?php +/** + * Authors Widget Class + * + * The authors widget was created to give users the ability to list the authors of their blog because + * there was no equivalent WordPress widget that offered the functionality. This widget allows full + * control over its output by giving access to the parameters of wp_list_authors(). + * + * @since 0.6 + * @link http://codex.wordpress.org/Template_Tags/wp_list_authors + * @link http://themehybrid.com/themes/hybrid/widgets + * + * @package Hybrid + * @subpackage Classes + */ + +class Hybrid_Widget_Authors extends WP_Widget { + + var $prefix; + var $textdomain; + + /** + * Set up the widget's unique name, ID, class, description, and other options. + * @since 0.6 + */ + function Hybrid_Widget_Authors() { + $this->prefix = hybrid_get_prefix(); + $this->textdomain = hybrid_get_textdomain(); + + $widget_ops = array( 'classname' => 'authors', 'description' => __( 'An advanced widget that gives you total control over the output of your author lists.',$this->textdomain ) ); + $control_ops = array( 'width' => 525, 'height' => 350, 'id_base' => "{$this->prefix}-authors" ); + $this->WP_Widget( "{$this->prefix}-authors", __( 'Authors', $this->textdomain ), $widget_ops, $control_ops ); + + add_action( 'delete_user', array( &$this, 'delete_transient' ) ); + add_action( 'user_register', array( &$this, 'delete_transient' ) ); + add_action( 'profile_update', array( &$this, 'delete_transient' ) ); + add_action( 'save_post', array( &$this, 'delete_transient' ) ); + add_action( 'deleted_post', array( &$this, 'delete_transient' ) ); + } + + /** + * Outputs the widget based on the arguments input through the widget controls. + * @since 0.6 + */ + function widget( $args, $instance ) { + + /* If a transient has been saved with the widget information, use it. */ + $transient = get_transient( "{$this->prefix}_widget_{$args['widget_id']}" ); + if ( $transient ) { + echo $transient; + return; + } + + extract( $args, EXTR_SKIP ); + + $args = array(); + + $args['style'] = $instance['style']; + $args['feed'] = $instance['feed']; + $args['feed_image'] = $instance['feed_image']; + $args['optioncount'] = isset( $instance['optioncount'] ) ? $instance['optioncount'] : false; + $args['exclude_admin'] = isset( $instance['exclude_admin'] ) ? $instance['exclude_admin'] : false; + $args['show_fullname'] = isset( $instance['show_fullname'] ) ? $instance['show_fullname'] : false; + $args['hide_empty'] = isset( $instance['hide_empty'] ) ? $instance['hide_empty'] : false; + $args['html'] = isset( $instance['html'] ) ? $instance['html'] : false; + $args['echo'] = false; + + $authors_widget = $before_widget; + + if ( $instance['title'] ) + $authors_widget .= $before_title . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $after_title; + + $authors = str_replace( array( "\r", "\n", "\t" ), '', wp_list_authors( $args ) ); + + if ( 'list' == $args['style'] && $args['html'] ) + $authors = '<ul class="xoxo authors">' . $authors . '</ul><!-- .xoxo .authors -->'; + + $authors_widget .= $authors; + + $authors_widget .= $after_widget; + + set_transient( "{$this->prefix}_widget_{$widget_id}", $authors_widget, hybrid_get_transient_expiration() ); + echo $authors_widget; + } + + /** + * Updates the widget control options for the particular instance of the widget. + * @since 0.6 + */ + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + + $instance = $new_instance; + + $instance['title'] = strip_tags( $new_instance['title'] ); + $instance['feed'] = strip_tags( $new_instance['feed'] ); + $instance['feed_image'] = strip_tags( $new_instance['feed_image'] ); + + $instance['html'] = ( isset( $new_instance['html'] ) ? 1 : 0 ); + $instance['optioncount'] = ( isset( $new_instance['optioncount'] ) ? 1 : 0 ); + $instance['exclude_admin'] = ( isset( $new_instance['exclude_admin'] ) ? 1 : 0 ); + $instance['show_fullname'] = ( isset( $new_instance['show_fullname'] ) ? 1 : 0 ); + $instance['hide_empty'] = ( isset( $new_instance['hide_empty'] ) ? 1 : 0 ); + + $this->delete_transient(); + + return $instance; + } + + function delete_transient() { + delete_transient( "{$this->prefix}_widget_{$this->id}" ); + } + + /** + * Displays the widget control options in the Widgets admin screen. + * @since 0.6 + */ + function form( $instance ) { + + //Defaults + $defaults = array( + 'title' => __( 'Authors', $this->textdomain ), + 'optioncount' => false, + 'exclude_admin' => false, + 'show_fullname' => true, + 'hide_empty' => true, + 'style' => 'list', + 'html' => true + ); + $instance = wp_parse_args( (array) $instance, $defaults ); ?> + + <div class="hybrid-widget-controls columns-2"> + <p> + <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', $this->textdomain ); ?></label> + <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'feed' ); ?>"><code>feed</code></label> + <input type="text" class="widefat code" id="<?php echo $this->get_field_id( 'feed' ); ?>" name="<?php echo $this->get_field_name( 'feed' ); ?>" value="<?php echo $instance['feed']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'feed_image' ); ?>"><code>feed_image</code></label> + <input type="text" class="widefat code" id="<?php echo $this->get_field_id( 'feed_image' ); ?>" name="<?php echo $this->get_field_name( 'feed_image' ); ?>" value="<?php echo $instance['feed_image']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'style' ); ?>"><code>style</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'style' ); ?>" name="<?php echo $this->get_field_name( 'style' ); ?>"> + <?php foreach ( array( 'list' => __( 'List', $this->textdomain), 'none' => __( 'None', $this->textdomain ) ) as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['style'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + </div> + + <div class="hybrid-widget-controls columns-2 column-last"> + <p> + <label for="<?php echo $this->get_field_id( 'html' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['html'], true ); ?> id="<?php echo $this->get_field_id( 'html' ); ?>" name="<?php echo $this->get_field_name( 'html' ); ?>" /> <?php _e( '<acronym title="Hypertext Markup Language">HTML</acronym>?', $this->textdomain ); ?> <code>html</code></label> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'optioncount' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['optioncount'], true ); ?> id="<?php echo $this->get_field_id( 'optioncount' ); ?>" name="<?php echo $this->get_field_name( 'optioncount' ); ?>" /> <?php _e( 'Show post count?', $this->textdomain ); ?> <code>optioncount</code></label> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'exclude_admin' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['exclude_admin'], true ); ?> id="<?php echo $this->get_field_id( 'exclude_admin' ); ?>" name="<?php echo $this->get_field_name( 'exclude_admin' ); ?>" /> <?php _e( 'Exclude admin?', $this->textdomain ); ?> <code>exclude_admin</code></label> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'show_fullname' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['show_fullname'], true ); ?> id="<?php echo $this->get_field_id( 'show_fullname' ); ?>" name="<?php echo $this->get_field_name( 'show_fullname' ); ?>" /> <?php _e( 'Show full name?', $this->textdomain ); ?> <code>show_fullname</code></label> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'hide_empty' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['hide_empty'], true ); ?> id="<?php echo $this->get_field_id( 'hide_empty' ); ?>" name="<?php echo $this->get_field_name( 'hide_empty' ); ?>" /> <?php _e( 'Hide empty?', $this->textdomain ); ?> <code>hide_empty</code></label> + </p> + </div> + <div style="clear:both;"> </div> + <?php + } +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/classes/widget-bookmarks.php b/wp-content/themes/hybrid/library/classes/widget-bookmarks.php new file mode 100644 index 0000000000000000000000000000000000000000..9bcd92562f1e0fc20f4e288362856997eb5cd8a2 --- /dev/null +++ b/wp-content/themes/hybrid/library/classes/widget-bookmarks.php @@ -0,0 +1,289 @@ +<?php +/** + * Bookmarks Widget Class + * + * The Bookmarks widget replaces the default WordPress Links widget. This version gives total + * control over the output to the user by allowing the input of all the arguments typically seen + * in the wp_list_bookmarks() function. + * + * @since 0.6 + * @link http://codex.wordpress.org/Template_Tags/wp_list_bookmarks + * @link http://themehybrid.com/themes/hybrid/widgets + * + * @package Hybrid + * @subpackage Classes + */ + +class Hybrid_Widget_Bookmarks extends WP_Widget { + + var $prefix; + var $textdomain; + + /** + * Set up the widget's unique name, ID, class, description, and other options. + * @since 0.6 + */ + function Hybrid_Widget_Bookmarks() { + $this->prefix = hybrid_get_prefix(); + $this->textdomain = hybrid_get_textdomain(); + + $widget_ops = array( 'classname' => 'bookmarks', 'description' => __( 'An advanced widget that gives you total control over the output of your bookmarks (links).', $this->textdomain ) ); + $control_ops = array( 'width' => 800, 'height' => 350, 'id_base' => "{$this->prefix}-bookmarks" ); + $this->WP_Widget( "{$this->prefix}-bookmarks", __( 'Bookmarks', $this->textdomain ), $widget_ops, $control_ops ); + } + + /** + * Outputs the widget based on the arguments input through the widget controls. + * @since 0.6 + */ + function widget( $args, $instance ) { + extract( $args ); + + $args = array(); + + $args['title_li'] = apply_filters( 'widget_title', $instance['title_li'], $instance, $this->id_base ); + $args['category'] = ( is_array( $instance['category'] ) ? join( ', ', $instance['category'] ) : $instance['category'] ); + $args['exclude_category'] = ( is_array( $instance['exclude_category'] ) ? join( ', ', $instance['exclude_category'] ) : $instance['exclude_category'] ); + $args['category_order'] = $instance['category_order']; + $args['category_orderby'] = $instance['category_orderby']; + $args['include'] = ( is_array( $instance['include'] ) ? join( ', ', $instance['include'] ) : $instance['include'] ); + $args['exclude'] = ( is_array( $instance['exclude'] ) ? join( ', ', $instance['exclude'] ) : $instance['exclude'] ); + $args['order'] = $instance['order']; + $args['orderby'] = $instance['orderby']; + $args['limit'] = ( ( $instance['limit'] ) ? intval( $instance['limit'] ) : -1 ); + $args['between'] = $instance['between']; + $args['link_before'] = $instance['link_before']; + $args['link_after'] = $instance['link_after']; + $args['search'] = $instance['search']; + $args['categorize'] = isset( $instance['categorize'] ) ? $instance['categorize'] : false; + $args['show_description'] = isset( $instance['show_description'] ) ? $instance['show_description'] : false; + $args['hide_invisible'] = isset( $instance['hide_invisible'] ) ? $instance['hide_invisible'] : false; + $args['show_rating'] = isset( $instance['show_rating'] ) ? $instance['show_rating'] : false; + $args['show_updated'] = isset( $instance['show_updated'] ) ? $instance['show_updated'] : false; + $args['show_images'] = isset( $instance['show_images'] ) ? $instance['show_images'] : false; + $args['show_name'] = isset( $instance['show_name'] ) ? $instance['show_name'] : false; + $args['show_private'] = isset( $instance['show_private'] ) ? $instance['show_private'] : false; + + if ( $args['categorize'] ) + $before_widget = preg_replace( '/id="[^"]*"/','id="%id"', $before_widget ); + if ( $instance['class'] ) + $before_widget = str_replace( 'class="', 'class="' . esc_attr( $instance['class'] ) . ' ', $before_widget ); + + $args['title_before'] = $before_title; + $args['title_after'] = $after_title; + $args['category_before'] = $before_widget; + $args['category_after'] = $after_widget; + $args['category_name'] = false; + $args['echo'] = false; + + echo str_replace( array( "\r", "\n", "\t" ), '', wp_list_bookmarks( $args ) ); + } + + /** + * Updates the widget control options for the particular instance of the widget. + * @since 0.6 + */ + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + + /* Set the instance to the new instance. */ + $instance = $new_instance; + + $instance['title_li'] = strip_tags( $new_instance['title_li'] ); + $instance['limit'] = strip_tags( $new_instance['limit'] ); + $instance['class'] = strip_tags( $new_instance['class'] ); + $instance['search'] = strip_tags( $new_instance['search'] ); + $instance['category_order'] = $new_instance['category_order']; + $instance['category_orderby'] = $new_instance['category_orderby']; + $instance['orderby'] = $new_instance['orderby']; + $instance['order'] = $new_instance['order']; + $instance['between'] = $new_instance['between']; + $instance['link_before'] = $new_instance['link_before']; + $instance['link_after'] = $new_instance['link_after']; + + $instance['categorize'] = ( isset( $new_instance['categorize'] ) ? 1 : 0 ); + $instance['hide_invisible'] = ( isset( $new_instance['hide_invisible'] ) ? 1 : 0 ); + $instance['show_private'] = ( isset( $new_instance['show_private'] ) ? 1 : 0 ); + $instance['show_rating'] = ( isset( $new_instance['show_rating'] ) ? 1 : 0 ); + $instance['show_updated'] = ( isset( $new_instance['show_updated'] ) ? 1 : 0 ); + $instance['show_images'] = ( isset( $new_instance['show_images'] ) ? 1 : 0 ); + $instance['show_name'] = ( isset( $new_instance['show_name'] ) ? 1 : 0 ); + $instance['show_description'] = ( isset( $new_instance['show_description'] ) ? 1 : 0 ); + + return $instance; + } + + /** + * Displays the widget control options in the Widgets admin screen. + * @since 0.6 + */ + function form( $instance ) { + + //Defaults + $defaults = array( + 'title_li' => __( 'Bookmarks', $this->textdomain ), + 'categorize' => true, + 'hide_invisible' => true, + 'show_description' => false, + 'show_image' => false, + 'show_rating' => false, + 'show_updated' => false, + 'show_private' => false, + 'show_name' => false, + 'class' => 'linkcat', + 'link_before' => '<span>', + 'link_after' => '</span>' + ); + $instance = wp_parse_args( (array) $instance, $defaults ); + + $terms = get_categories( array( 'type' => 'link' ) ); + $bookmarks = get_bookmarks( array( 'hide_invisible' => false ) ); + $category_order = array( 'ASC' => __( 'Ascending', $this->textdomain ), 'DESC' => __( 'Descending', $this->textdomain ) ); + $category_orderby = array( 'count' => __( 'Count', $this->textdomain ), 'ID' => __( 'ID', $this->textdomain ), 'name' => __( 'Name', $this->textdomain ), 'slug' => __( 'Slug', $this->textdomain ) ); + $order = array( 'ASC' => __( 'Ascending', $this->textdomain ), 'DESC' => __( 'Descending', $this->textdomain ) ); + $orderby = array( 'id' => __( 'ID', $this->textdomain ), 'description' => __( 'Description', $this->textdomain ), 'length' => __( 'Length', $this->textdomain ), 'name' => __( 'Name', $this->textdomain ), 'notes' => __( 'Notes', $this->textdomain ), 'owner' => __( 'Owner', $this->textdomain ), 'rand' => __( 'Random', $this->textdomain ), 'rating' => __( 'Rating', $this->textdomain ), 'rel' => __( 'Rel', $this->textdomain ), 'rss' => __( 'RSS', $this->textdomain ), 'target' => __( 'Target', $this->textdomain ), 'updated' => __( 'Updated', $this->textdomain ), 'url' => __( 'URL', $this->textdomain ) ); + + ?> + + <div class="hybrid-widget-controls columns-3"> + <p> + <label for="<?php echo $this->get_field_id( 'title_li' ); ?>"><?php _e( 'Title:', $this->textdomain ); ?></label> + <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'title_li' ); ?>" name="<?php echo $this->get_field_name( 'title_li' ); ?>" value="<?php echo $instance['title_li']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'category_order' ); ?>"><code>category_order</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'category_order' ); ?>" name="<?php echo $this->get_field_name( 'category_order' ); ?>"> + <?php foreach ( $category_order as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['category_order'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'category_orderby' ); ?>"><code>category_orderby</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'category_orderby' ); ?>" name="<?php echo $this->get_field_name( 'category_orderby' ); ?>"> + <?php foreach ( $category_orderby as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['category_orderby'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'category' ); ?>"><code>category</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'category' ); ?>" name="<?php echo $this->get_field_name( 'category' ); ?>[]" size="4" multiple="multiple"> + <?php foreach ( $terms as $term ) { ?> + <option value="<?php echo $term->term_id; ?>" <?php echo ( in_array( $term->term_id, (array) $instance['category'] ) ? 'selected="selected"' : '' ); ?>><?php echo $term->name; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'exclude_category' ); ?>"><code>exclude_category</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'exclude_category' ); ?>" name="<?php echo $this->get_field_name( 'exclude_category' ); ?>[]" size="4" multiple="multiple"> + <?php foreach ( $terms as $term ) { ?> + <option value="<?php echo $term->term_id; ?>" <?php echo ( in_array( $term->term_id, (array) $instance['exclude_category'] ) ? 'selected="selected"' : '' ); ?>><?php echo $term->name; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'class' ); ?>"><code>class</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'class' ); ?>" name="<?php echo $this->get_field_name( 'class' ); ?>" value="<?php echo $instance['class']; ?>" /> + </p> + + </div> + + <div class="hybrid-widget-controls columns-3"> + + <p> + <label for="<?php echo $this->get_field_id( 'limit' ); ?>"><code>limit</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'limit' ); ?>" name="<?php echo $this->get_field_name( 'limit' ); ?>" value="<?php echo $instance['limit']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'order' ); ?>"><code>order</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'order' ); ?>" name="<?php echo $this->get_field_name( 'order' ); ?>"> + <?php foreach ( $order as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['order'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'orderby' ); ?>"><code>orderby</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'orderby' ); ?>" name="<?php echo $this->get_field_name( 'orderby' ); ?>"> + <?php foreach ( $orderby as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['orderby'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'include' ); ?>"><code>include</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'include' ); ?>" name="<?php echo $this->get_field_name( 'include' ); ?>[]" size="4" multiple="multiple"> + <?php foreach ( $bookmarks as $bookmark ) { ?> + <option value="<?php echo $bookmark->link_id; ?>" <?php echo ( in_array( $bookmark->link_id, (array) $instance['include'] ) ? 'selected="selected"' : '' ); ?>><?php echo $bookmark->link_name; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'exclude' ); ?>"><code>exclude</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'exclude' ); ?>" name="<?php echo $this->get_field_name( 'exclude' ); ?>[]" size="4" multiple="multiple"> + <?php foreach ( $bookmarks as $bookmark ) { ?> + <option value="<?php echo $bookmark->link_id; ?>" <?php echo ( in_array( $bookmark->link_id, (array) $instance['exclude'] ) ? 'selected="selected"' : '' ); ?>><?php echo $bookmark->link_name; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'search' ); ?>"><code>search</code></label> + <input type="text" class="widefat code" id="<?php echo $this->get_field_id( 'search' ); ?>" name="<?php echo $this->get_field_name( 'search' ); ?>" value="<?php echo $instance['search']; ?>" /> + </p> + + </div> + + <div class="hybrid-widget-controls columns-3 column-last"> + <p> + <label for="<?php echo $this->get_field_id( 'between' ); ?>"><code>between</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'between' ); ?>" name="<?php echo $this->get_field_name( 'between' ); ?>" value="<?php echo $instance['between']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'link_before' ); ?>"><code>link_before</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'link_before' ); ?>" name="<?php echo $this->get_field_name( 'link_before' ); ?>" value="<?php echo $instance['link_before']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'link_after' ); ?>"><code>link_after</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'link_after' ); ?>" name="<?php echo $this->get_field_name( 'link_after' ); ?>" value="<?php echo $instance['link_after']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'categorize' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['categorize'], true ); ?> id="<?php echo $this->get_field_id( 'categorize' ); ?>" name="<?php echo $this->get_field_name( 'categorize' ); ?>" /> <?php _e( 'Categorize?', $this->textdomain ); ?> <code>categorize</code></label> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'show_description' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['show_description'], true ); ?> id="<?php echo $this->get_field_id( 'show_description' ); ?>" name="<?php echo $this->get_field_name( 'show_description' ); ?>" /> <?php _e( 'Show description?', $this->textdomain ); ?> <code>show_description</code></label> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'hide_invisible' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['hide_invisible'], true ); ?> id="<?php echo $this->get_field_id( 'hide_invisible' ); ?>" name="<?php echo $this->get_field_name( 'hide_invisible' ); ?>" /> <?php _e( 'Hide invisible?', $this->textdomain ); ?> <code>hide_invisible</code></label> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'show_rating' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['show_rating'], true ); ?> id="<?php echo $this->get_field_id( 'show_rating' ); ?>" name="<?php echo $this->get_field_name( 'show_rating' ); ?>" /> <?php _e( 'Show rating?', $this->textdomain ); ?> <code>show_rating</code></label> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'show_updated' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['show_updated'], true ); ?> id="<?php echo $this->get_field_id( 'show_updated' ); ?>" name="<?php echo $this->get_field_name( 'show_updated' ); ?>" /> <?php _e( 'Show updated?', $this->textdomain ); ?> <code>show_updated</code></label> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'show_images' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['show_images'], true ); ?> id="<?php echo $this->get_field_id( 'show_images' ); ?>" name="<?php echo $this->get_field_name( 'show_images' ); ?>" /> <?php _e( 'Show images?', $this->textdomain ); ?> <code>show_images</code></label> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'show_name' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['show_name'], true ); ?> id="<?php echo $this->get_field_id( 'show_name' ); ?>" name="<?php echo $this->get_field_name( 'show_name' ); ?>" /> <?php _e( 'Show name?', $this->textdomain ); ?> <code>show_name</code></label> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'show_private' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['show_private'], true ); ?> id="<?php echo $this->get_field_id( 'show_private' ); ?>" name="<?php echo $this->get_field_name( 'show_private' ); ?>" /> <?php _e( 'Show private?', $this->textdomain ); ?> <code>show_private</code></label> + </p> + + </div> + <div style="clear:both;"> </div> + <?php + } +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/classes/widget-calendar.php b/wp-content/themes/hybrid/library/classes/widget-calendar.php new file mode 100644 index 0000000000000000000000000000000000000000..fab5f932e7bd91e842f9c083d0141fcff7c31e24 --- /dev/null +++ b/wp-content/themes/hybrid/library/classes/widget-calendar.php @@ -0,0 +1,98 @@ +<?php +/** + * Calendar Widget Class + * + * The calendar widget was created to give users the ability to show a post calendar for their blog + * using all the available options given in the get_calendar() function. It replaces the default WordPress + * calendar widget. + * + * @since 0.6 + * @link http://codex.wordpress.org/Function_Reference/get_calendar + * @link http://themehybrid.com/themes/hybrid/widgets + * + * @package Hybrid + * @subpackage Classes + */ + +class Hybrid_Widget_Calendar extends WP_Widget { + + var $prefix; + var $textdomain; + + /** + * Set up the widget's unique name, ID, class, description, and other options. + * @since 0.6 + */ + function Hybrid_Widget_Calendar() { + $this->prefix = hybrid_get_prefix(); + $this->textdomain = hybrid_get_textdomain(); + + $widget_ops = array( 'classname' => 'calendar', 'description' => __( 'An advanced widget that gives you total control over the output of your calendar.', $this->textdomain ) ); + $control_ops = array( 'width' => 200, 'height' => 350, 'id_base' => "{$this->prefix}-calendar" ); + $this->WP_Widget( "{$this->prefix}-calendar", __( 'Calendar', $this->textdomain ), $widget_ops, $control_ops ); + } + + /** + * Outputs the widget based on the arguments input through the widget controls. + * @since 0.6 + */ + function widget( $args, $instance ) { + extract( $args ); + + $initial = isset( $instance['initial'] ) ? $instance['initial'] : false; + + echo $before_widget; + + if ( $instance['title'] ) + echo $before_title . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $after_title; + + echo '<div class="calendar-wrap">'; + get_calendar( $initial ); + echo '</div><!-- .calendar-wrap -->'; + + echo $after_widget; + } + + /** + * Updates the widget control options for the particular instance of the widget. + * @since 0.6 + */ + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + + $instance = $new_instance; + + $instance['title'] = strip_tags( $new_instance['title'] ); + $instance['initial'] = ( isset( $new_instance['initial'] ) ? 1 : 0 ); + + return $instance; + } + + /** + * Displays the widget control options in the Widgets admin screen. + * @since 0.6 + */ + function form( $instance ) { + + //Defaults + $defaults = array( + 'title' => __( 'Calendar', $this->textdomain ), + 'initial' => false + ); + $instance = wp_parse_args( (array) $instance, $defaults ); ?> + + <div class="hybrid-widget-controls columns-1"> + <p> + <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', $this->textdomain ); ?></label> + <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" /> + </p> + <p> + <input class="checkbox" type="checkbox" <?php checked( $instance['initial'], true ); ?> id="<?php echo $this->get_field_id( 'initial' ); ?>" name="<?php echo $this->get_field_name( 'initial' ); ?>" /> + <label for="<?php echo $this->get_field_id( 'initial' ); ?>"><?php _e( 'One-letter abbreviation?', $this->textdomain ); ?> <code>initial</code></label> + </p> + </div> + <?php + } +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/classes/widget-categories.php b/wp-content/themes/hybrid/library/classes/widget-categories.php new file mode 100644 index 0000000000000000000000000000000000000000..dafacc04a581b2c196872f0b5396a1dbb31b6523 --- /dev/null +++ b/wp-content/themes/hybrid/library/classes/widget-categories.php @@ -0,0 +1,273 @@ +<?php +/** + * Categories Widget Class + * + * The Categories widget replaces the default WordPress Categories widget. This version gives total + * control over the output to the user by allowing the input of all the arguments typically seen + * in the wp_list_categories() function. + * + * @since 0.6 + * @link http://codex.wordpress.org/Template_Tags/wp_list_categories + * @link http://themehybrid.com/themes/hybrid/widgets + * + * @package Hybrid + * @subpackage Classes + */ + +class Hybrid_Widget_Categories extends WP_Widget { + + var $prefix; + var $textdomain; + + /** + * Set up the widget's unique name, ID, class, description, and other options. + * @since 0.6 + */ + function Hybrid_Widget_Categories() { + $this->prefix = hybrid_get_prefix(); + $this->textdomain = hybrid_get_textdomain(); + + $widget_ops = array( 'classname' => 'categories', 'description' => __( 'An advanced widget that gives you total control over the output of your category links.', $this->textdomain ) ); + $control_ops = array( 'width' => 800, 'height' => 350, 'id_base' => "{$this->prefix}-categories" ); + $this->WP_Widget( "{$this->prefix}-categories", __( 'Categories', $this->textdomain ), $widget_ops, $control_ops ); + } + + /** + * Outputs the widget based on the arguments input through the widget controls. + * @since 0.6 + */ + function widget( $args, $instance ) { + extract( $args ); + + $args = array(); + + $args['taxonomy'] = $instance['taxonomy']; + $args['style'] = $instance['style']; + $args['orderby'] = $instance['orderby']; + $args['order'] = $instance['order']; + $args['include'] = ( is_array( $instance['include'] ) ? join( ', ', $instance['include'] ) : $instance['include'] ); + $args['exclude'] = ( is_array( $instance['exclude'] ) ? join( ', ', $instance['exclude'] ) : $instance['exclude'] ); + $args['exclude_tree'] = $instance['exclude_tree']; + $args['depth'] = intval( $instance['depth'] ); + $args['number'] = intval( $instance['number'] ); + $args['child_of'] = intval( $instance['child_of'] ); + $args['current_category'] = intval( $instance['current_category'] ); + $args['feed'] = $instance['feed']; + $args['feed_type'] = $instance['feed_type']; + $args['feed_image'] = esc_url( $instance['feed_image'] ); + $args['search'] = $instance['search']; + $args['hierarchical'] = isset( $instance['hierarchical'] ) ? $instance['hierarchical'] : false; + $args['use_desc_for_title'] = isset( $instance['use_desc_for_title'] ) ? $instance['use_desc_for_title'] : false; + $args['show_last_update'] = isset( $instance['show_last_update'] ) ? $instance['show_last_updated'] : false; + $args['show_count'] = isset( $instance['show_count'] ) ? $instance['show_count'] : false; + $args['hide_empty'] = isset( $instance['hide_empty'] ) ? $instance['hide_empty'] : false; + $args['title_li'] = false; + $args['echo'] = false; + + echo $before_widget; + + if ( $instance['title'] ) + echo $before_title . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $after_title; + + $categories = str_replace( array( "\r", "\n", "\t" ), '', wp_list_categories( $args ) ); + + if ( 'list' == $args['style'] ) + $categories = '<ul class="xoxo categories">' . $categories . '</ul><!-- .xoxo .categories -->'; + + echo $categories; + + echo $after_widget; + } + + /** + * Updates the widget control options for the particular instance of the widget. + * @since 0.6 + */ + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + + /* Set the instance to the new instance. */ + $instance = $new_instance; + + /* If new taxonomy is chosen, reset includes and excludes. */ + if ( $instance['taxonomy'] !== $old_instance['taxonomy'] && '' !== $old_instance['taxonomy'] ) { + $instance['include'] = array(); + $instance['exclude'] = array(); + } + + $instance['title'] = strip_tags( $new_instance['title'] ); + $instance['taxonomy'] = $new_instance['taxonomy']; + $instance['exclude_tree'] = strip_tags( $new_instance['exclude_tree'] ); + $instance['depth'] = strip_tags( $new_instance['depth'] ); + $instance['number'] = strip_tags( $new_instance['number'] ); + $instance['child_of'] = strip_tags( $new_instance['child_of'] ); + $instance['current_category'] = strip_tags( $new_instance['current_category'] ); + $instance['feed'] = strip_tags( $new_instance['feed'] ); + $instance['feed_image'] = strip_tags( $new_instance['feed_image'] ); + $instance['search'] = strip_tags( $new_instance['search'] ); + + $instance['hierarchical'] = ( isset( $new_instance['hierarchical'] ) ? 1 : 0 ); + $instance['use_desc_for_title'] = ( isset( $new_instance['use_desc_for_title'] ) ? 1 : 0 ); + $instance['show_last_update'] = ( isset( $new_instance['show_last_update'] ) ? 1 : 0 ); + $instance['show_count'] = ( isset( $new_instance['show_count'] ) ? 1 : 0 ); + $instance['hide_empty'] = ( isset( $new_instance['hide_empty'] ) ? 1 : 0 ); + + return $instance; + } + + /** + * Displays the widget control options in the Widgets admin screen. + * @since 0.6 + */ + function form( $instance ) { + + // Defaults + $defaults = array( + 'title' => __( 'Categories', $this->textdomain ), + 'taxonomy' => 'category', + 'style' => 'list', + 'include' => array(), + 'exclude' => array(), + 'hierarchical' => true, + 'hide_empty' => true, + 'order' => 'ASC', + 'orderby' => 'name' + ); + $instance = wp_parse_args( (array) $instance, $defaults ); + + /* <select> element options. */ + $taxonomies = get_taxonomies( array( 'show_tagcloud' => true ), 'objects' ); + $terms = get_terms( $instance['taxonomy'] ); + $style = array( 'list' => __( 'List', $this->textdomain ), 'none' => __( 'None', $this->textdomain ) ); + $order = array( 'ASC' => __( 'Ascending', $this->textdomain ), 'DESC' => __( 'Descending', $this->textdomain ) ); + $orderby = array( 'count' => __( 'Count', $this->textdomain ), 'ID' => __( 'ID', $this->textdomain ), 'name' => __( 'Name', $this->textdomain ), 'slug' => __( 'Slug', $this->textdomain ), 'term_group' => __( 'Term Group', $this->textdomain ) ); + $feed_type = array( '' => '', 'atom' => __( 'Atom', $this->textdomain ), 'rdf' => __( 'RDF', $this->textdomain ), 'rss' => __( 'RSS', $this->textdomain ), 'rss2' => __( 'RSS 2.0', $this->textdomain ) ); + + ?> + + <div class="hybrid-widget-controls columns-3"> + <p> + <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', $this->textdomain ); ?></label> + <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'taxonomy' ); ?>"><code>taxonomy</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'taxonomy' ); ?>" name="<?php echo $this->get_field_name( 'taxonomy' ); ?>"> + <?php foreach ( $taxonomies as $taxonomy ) { ?> + <option value="<?php echo $taxonomy->name; ?>" <?php selected( $instance['taxonomy'], $taxonomy->name ); ?>><?php echo $taxonomy->labels->singular_name; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'style' ); ?>"><code>style</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'style' ); ?>" name="<?php echo $this->get_field_name( 'style' ); ?>"> + <?php foreach ( $style as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['style'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'order' ); ?>"><code>order</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'order' ); ?>" name="<?php echo $this->get_field_name( 'order' ); ?>"> + <?php foreach ( $order as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['order'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'orderby' ); ?>"><code>orderby</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'orderby' ); ?>" name="<?php echo $this->get_field_name( 'orderby' ); ?>"> + <?php foreach ( $orderby as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['orderby'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'depth' ); ?>"><code>depth</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'depth' ); ?>" name="<?php echo $this->get_field_name( 'depth' ); ?>" value="<?php echo $instance['depth']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'number' ); ?>"><code>number</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'number' ); ?>" name="<?php echo $this->get_field_name( 'number' ); ?>" value="<?php echo $instance['number']; ?>" /> + </p> + </div> + + <div class="hybrid-widget-controls columns-3"> + <p> + <label for="<?php echo $this->get_field_id( 'include' ); ?>"><code>include</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'include' ); ?>" name="<?php echo $this->get_field_name( 'include' ); ?>[]" size="4" multiple="multiple"> + <?php foreach ( $terms as $term ) { ?> + <option value="<?php echo $term->term_id; ?>" <?php echo ( in_array( $term->term_id, (array) $instance['include'] ) ? 'selected="selected"' : '' ); ?>><?php echo $term->name; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'exclude' ); ?>"><code>exclude</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'exclude' ); ?>" name="<?php echo $this->get_field_name( 'exclude' ); ?>[]" size="4" multiple="multiple"> + <?php foreach ( $terms as $term ) { ?> + <option value="<?php echo $term->term_id; ?>" <?php echo ( in_array( $term->term_id, (array) $instance['exclude'] ) ? 'selected="selected"' : '' ); ?>><?php echo $term->name; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'exclude_tree' ); ?>"><code>exclude_tree</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'exclude_tree' ); ?>" name="<?php echo $this->get_field_name( 'exclude_tree' ); ?>" value="<?php echo $instance['exclude_tree']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'child_of' ); ?>"><code>child_of</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'child_of' ); ?>" name="<?php echo $this->get_field_name( 'child_of' ); ?>" value="<?php echo $instance['child_of']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'current_category' ); ?>"><code>current_category</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'current_category' ); ?>" name="<?php echo $this->get_field_name( 'current_category' ); ?>" value="<?php echo $instance['current_category']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'search' ); ?>"><code>search</code></label> + <input type="text" class="widefat code" id="<?php echo $this->get_field_id( 'search' ); ?>" name="<?php echo $this->get_field_name( 'search' ); ?>" value="<?php echo $instance['search']; ?>" /> + </p> + </div> + + <div class="hybrid-widget-controls columns-3 column-last"> + <p> + <label for="<?php echo $this->get_field_id( 'feed' ); ?>"><code>feed</code></label> + <input type="text" class="widefat code" id="<?php echo $this->get_field_id( 'feed' ); ?>" name="<?php echo $this->get_field_name( 'feed' ); ?>" value="<?php echo $instance['feed']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'feed_type' ); ?>"><code>feed_type</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'feed_type' ); ?>" name="<?php echo $this->get_field_name( 'feed_type' ); ?>"> + <?php foreach ( $feed_type as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['feed_type'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'feed_image' ); ?>"><code>feed_image</code></label> + <input type="text" class="widefat code" id="<?php echo $this->get_field_id( 'feed_image' ); ?>" name="<?php echo $this->get_field_name( 'feed_image' ); ?>" value="<?php echo $instance['feed_image']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'hierarchical' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['hierarchical'], true ); ?> id="<?php echo $this->get_field_id( 'hierarchical' ); ?>" name="<?php echo $this->get_field_name( 'hierarchical' ); ?>" /> <?php _e( 'Hierarchical?', $this->textdomain ); ?> <code>hierarchical</code></label> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'use_desc_for_title' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['use_desc_for_title'], true ); ?> id="<?php echo $this->get_field_id( 'use_desc_for_title' ); ?>" name="<?php echo $this->get_field_name( 'use_desc_for_title' ); ?>" /> <?php _e( 'Use description?', $this->textdomain ); ?> <code>use_desc_for_title</code></label> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'show_last_update' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['show_last_update'], true ); ?> id="<?php echo $this->get_field_id( 'show_last_update' ); ?>" name="<?php echo $this->get_field_name( 'show_last_update' ); ?>" /> <?php _e( 'Show last update?', $this->textdomain ); ?> <code>show_last_update</code></label> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'show_count' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['show_count'], true ); ?> id="<?php echo $this->get_field_id( 'show_count' ); ?>" name="<?php echo $this->get_field_name( 'show_count' ); ?>" /> <?php _e( 'Show count?', $this->textdomain ); ?> <code>show_count</code></label> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'hide_empty' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['hide_empty'], true ); ?> id="<?php echo $this->get_field_id( 'hide_empty' ); ?>" name="<?php echo $this->get_field_name( 'hide_empty' ); ?>" /> <?php _e( 'Hide empty?', $this->textdomain ); ?> <code>hide_empty</code></label> + </p> + </div> + <div style="clear:both;"> </div> + <?php + } +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/classes/widget-nav-menu.php b/wp-content/themes/hybrid/library/classes/widget-nav-menu.php new file mode 100644 index 0000000000000000000000000000000000000000..6782e0b8741fd20c158c7fc96085160112a60ef6 --- /dev/null +++ b/wp-content/themes/hybrid/library/classes/widget-nav-menu.php @@ -0,0 +1,186 @@ +<?php +/** + * Nav Menu Widget Class + * + * The nav menu widget was created to give users the ability to show nav menus created from the + * Menus screen, by the theme, or by plugins using the wp_nav_menu() function. It replaces the default + * WordPress navigation menu class. + * + * @since 0.8 + * @link http://themehybrid.com/themes/hybrid/widgets + * + * @package Hybrid + * @subpackage Classes + */ + +class Hybrid_Widget_Nav_Menu extends WP_Widget { + + var $prefix; + var $textdomain; + + /** + * Set up the widget's unique name, ID, class, description, and other options. + * @since 0.6 + */ + function Hybrid_Widget_Nav_Menu() { + $this->prefix = hybrid_get_prefix(); + $this->textdomain = hybrid_get_textdomain(); + + $widget_ops = array( 'classname' => 'nav-menu', 'description' => __( 'An advanced widget that gives you total control over the output of your menus.', $this->textdomain ) ); + $control_ops = array( 'width' => 525, 'height' => 350, 'id_base' => "{$this->prefix}-nav-menu" ); + $this->WP_Widget( "{$this->prefix}-nav-menu", __( 'Navigation Menu', $this->textdomain ), $widget_ops, $control_ops ); + } + + /** + * Outputs the widget based on the arguments input through the widget controls. + * @since 0.6 + */ + function widget( $args, $instance ) { + extract( $args ); + + $args = array(); + + $args['menu'] = $instance['menu']; + $args['container'] = $instance['container']; + $args['container_id'] = $instance['container_id']; + $args['container_class'] = $instance['container_class']; + $args['menu_id'] = $instance['menu_id']; + $args['menu_class'] = $instance['menu_class']; + $args['link_before'] = $instance['link_before']; + $args['link_after'] = $instance['link_after']; + $args['before'] = $instance['before']; + $args['after'] = $instance['after']; + $args['depth'] = intval( $instance['depth'] ); + $args['fallback_cb'] = $instance['fallback_cb']; + $args['walker'] = $instance['walker']; + $args['echo'] = false; + + echo $before_widget; + + if ( $instance['title'] ) + echo $before_title . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $after_title; + + echo str_replace( array( "\r", "\n", "\t" ), '', wp_nav_menu( $args ) ); + + echo $after_widget; + } + + /** + * Updates the widget control options for the particular instance of the widget. + * @since 0.6 + */ + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + + $instance = $new_instance; + + $instance['title'] = strip_tags( $new_instance['title'] ); + $instance['depth'] = strip_tags( $new_instance['depth'] ); + $instance['container_id'] = strip_tags( $new_instance['container_id'] ); + $instance['container_class'] = strip_tags( $new_instance['container_class'] ); + $instance['menu_id'] = strip_tags( $new_instance['menu_id'] ); + $instance['menu_class'] = strip_tags( $new_instance['menu_class'] ); + $instance['fallback_cb'] = strip_tags( $new_instance['fallback_cb'] ); + $instance['walker'] = strip_tags( $new_instance['walker'] ); + + return $instance; + } + + /** + * Displays the widget control options in the Widgets admin screen. + * @since 0.6 + */ + function form( $instance ) { + + //Defaults + $defaults = array( + 'title' => __( 'Navigation', $this->textdomain ), + 'format' => 'div', + 'menu_class' => 'nav-menu', + 'depth' => 0, + 'before' => '', + 'after' => '', + 'link_before' => '', + 'link_after' => '', + 'fallback_cb' => 'wp_page_menu' + ); + $instance = wp_parse_args( (array) $instance, $defaults ); + + $container = apply_filters( 'wp_nav_menu_container_allowedtags', array( 'div', 'nav' ) ); + ?> + + <div class="hybrid-widget-controls columns-2"> + <p> + <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', $this->textdomain ); ?></label> + <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'menu' ); ?>"><code>menu</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'menu' ); ?>" name="<?php echo $this->get_field_name( 'menu' ); ?>"> + <?php foreach ( wp_get_nav_menus() as $menu ) { ?> + <option value="<?php echo $menu->term_id; ?>" <?php selected( $instance['menu'], $menu->term_id ); ?>><?php echo $menu->name; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'container' ); ?>"><code>container</code></label> + <select class="smallfat" id="<?php echo $this->get_field_id( 'container' ); ?>" name="<?php echo $this->get_field_name( 'container' ); ?>"> + <?php foreach ( $container as $option ) { ?> + <option value="<?php echo $option; ?>" <?php selected( $instance['container'], $option ); ?>><?php echo $option; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'container_id' ); ?>"><code>container_id</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'container_id' ); ?>" name="<?php echo $this->get_field_name( 'container_id' ); ?>" value="<?php echo $instance['container_id']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'container_class' ); ?>"><code>container_class</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'container_class' ); ?>" name="<?php echo $this->get_field_name( 'container_class' ); ?>" value="<?php echo $instance['container_class']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'menu_id' ); ?>"><code>menu_id</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'menu_id' ); ?>" name="<?php echo $this->get_field_name( 'menu_id' ); ?>" value="<?php echo $instance['menu_id']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'menu_class' ); ?>"><code>menu_class</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'menu_class' ); ?>" name="<?php echo $this->get_field_name( 'menu_class' ); ?>" value="<?php echo $instance['menu_class']; ?>" /> + </p> + </div> + + <div class="hybrid-widget-controls columns-2 column-last"> + <p> + <label for="<?php echo $this->get_field_id( 'depth' ); ?>"><code>depth</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'depth' ); ?>" name="<?php echo $this->get_field_name( 'depth' ); ?>" value="<?php echo $instance['depth']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'before' ); ?>"><code>before</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'before' ); ?>" name="<?php echo $this->get_field_name( 'before' ); ?>" value="<?php echo $instance['before']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'after' ); ?>"><code>after</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'after' ); ?>" name="<?php echo $this->get_field_name( 'after' ); ?>" value="<?php echo $instance['after']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'link_before' ); ?>"><code>link_before</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'link_before' ); ?>" name="<?php echo $this->get_field_name( 'link_before' ); ?>" value="<?php echo $instance['link_before']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'link_after' ); ?>"><code>link_after</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'link_after' ); ?>" name="<?php echo $this->get_field_name( 'link_after' ); ?>" value="<?php echo $instance['link_after']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'fallback_cb' ); ?>"><code>fallback_cb</code></label> + <input type="text" class="widefat code" id="<?php echo $this->get_field_id( 'fallback_cb' ); ?>" name="<?php echo $this->get_field_name( 'fallback_cb' ); ?>" value="<?php echo $instance['fallback_cb']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'walker' ); ?>"><code>walker</code></label> + <input type="text" class="widefat code" id="<?php echo $this->get_field_id( 'walker' ); ?>" name="<?php echo $this->get_field_name( 'walker' ); ?>" value="<?php echo $instance['walker']; ?>" /> + </p> + </div> + <div style="clear:both;"> </div> + <?php + } +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/classes/widget-pages.php b/wp-content/themes/hybrid/library/classes/widget-pages.php new file mode 100644 index 0000000000000000000000000000000000000000..0d8fd5dd7dc3d794e6f1e0b48063fa31c925ffdf --- /dev/null +++ b/wp-content/themes/hybrid/library/classes/widget-pages.php @@ -0,0 +1,238 @@ +<?php +/** + * Pages Widget + * + * Replaces the default WordPress Pages widget. + * @link http://themehybrid.com/themes/hybrid/widgets + * + * In 0.6, converted functions to a class that extends WP 2.8's widget class. + * + * @package Hybrid + * @subpackage Widgets + */ + +/** + * Output of the Pages widget. + * Arguments are parameters of the wp_list_pages() function. + * @link http://codex.wordpress.org/Template_Tags/wp_list_pages + * + * @since 0.6 + */ +class Hybrid_Widget_Pages extends WP_Widget { + + var $prefix; + var $textdomain; + + function Hybrid_Widget_Pages() { + $this->prefix = hybrid_get_prefix(); + $this->textdomain = hybrid_get_textdomain(); + + $widget_ops = array( 'classname' => 'pages', 'description' => __( 'An advanced widget that gives you total control over the output of your page links.', $this->textdomain) ); + $control_ops = array( 'width' => 800, 'height' => 350, 'id_base' => "{$this->prefix}-pages" ); + $this->WP_Widget( "{$this->prefix}-pages", __( 'Pages', $this->textdomain), $widget_ops, $control_ops ); + } + + function widget( $args, $instance ) { + extract( $args ); + + $args = array(); + + $args['sort_column'] = $instance['sort_column']; + $args['sort_order'] = $instance['sort_order']; + $args['depth'] = intval( $instance['depth'] ); + $args['child_of'] = intval( $instance['child_of'] ); + $args['meta_key'] = $instance['meta_key']; + $args['meta_value'] = $instance['meta_value']; + $args['authors'] = ( is_array( $instance['authors'] ) ? join( ', ', $instance['authors'] ) : $instance['authors'] ); + $args['include'] = ( is_array( $instance['include'] ) ? join( ', ', $instance['include'] ) : $instance['include'] ); + $args['exclude'] = ( is_array( $instance['exclude'] ) ? join( ', ', $instance['exclude'] ) : $instance['exclude'] ); + $args['exclude_tree'] = $instance['exclude_tree']; + $args['link_before'] = $instance['link_before']; + $args['link_after'] = $instance['link_after']; + $args['date_format'] = $instance['date_format']; + $args['show_date'] = $instance['show_date']; + $args['number'] = intval( $instance['number'] ); + $args['offset'] = intval( $instance['offset'] ); + $args['hierarchical'] = isset( $instance['hierarchical'] ) ? $instance['hierarchical'] : false; + $args['title_li'] = false; + $args['echo'] = false; + + /* Open the output of the widget. */ + echo $before_widget; + + /* If there is a title given, add it along with the $before_title and $after_title variables. */ + if ( $instance['title'] ) + echo $before_title . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $after_title; + + /* Output the page list. */ + echo '<ul class="xoxo pages">' . str_replace( array( "\r", "\n", "\t" ), '', wp_list_pages( $args ) ) . '</ul>'; + + /* Close the output of the widget. */ + echo $after_widget; + } + + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + + /* Set the instance to the new instance. */ + $instance = $new_instance; + + $instance['title'] = strip_tags( $new_instance['title'] ); + $instance['depth'] = strip_tags( $new_instance['depth'] ); + $instance['child_of'] = strip_tags( $new_instance['child_of'] ); + $instance['meta_key'] = strip_tags( $new_instance['meta_key'] ); + $instance['meta_value'] = strip_tags( $new_instance['meta_value'] ); + $instance['exclude_tree'] = strip_tags( $new_instance['exclude_tree'] ); + $instance['date_format'] = strip_tags( $new_instance['date_format'] ); + $instance['number'] = strip_tags( $new_instance['number'] ); + $instance['offset'] = strip_tags( $new_instance['offset'] ); + $instance['sort_column'] = $new_instance['sort_column']; + $instance['sort_order'] = $new_instance['sort_order']; + $instance['show_date'] = $new_instance['show_date']; + $instance['link_before'] = $new_instance['link_before']; + $instance['link_after'] = $new_instance['link_after']; + + $instance['hierarchical'] = ( isset( $new_instance['hierarchical'] ) ? 1 : 0 ); + + return $instance; + } + + function form( $instance ) { + + //Defaults + $defaults = array( + 'title' => __( 'Pages', $this->textdomain), + 'hierarchical' => true, + 'sort_column' => 'post_title', + 'sort_order' => 'ASC', + 'date_format' => get_option( 'date_format' ) + ); + $instance = wp_parse_args( (array) $instance, $defaults ); + + $posts = get_posts( array( 'post_type' => 'page', 'post_status' => 'any', 'post_mime_type' => '', 'orderby' => 'title', 'order' => 'ASC', 'numberposts' => -1 ) ); + $authors = array(); + foreach ( $posts as $post ) + $authors[$post->post_author] = get_the_author_meta( 'display_name', $post->post_author ); + + $sort_order = array( 'ASC' => __( 'Ascending', $this->textdomain ), 'DESC' => __( 'Descending', $this->textdomain ) ); + $sort_column = array( 'post_author' => __( 'Author', $this->textdomain ), 'post_date' => __( 'Date', $this->textdomain ), 'ID' => __( 'ID', $this->textdomain ), 'menu_order' => __( 'Menu Order', $this->textdomain ), 'post_modified' => __( 'Modified', $this->textdomain ), 'post_name' => __( 'Slug', $this->textdomain ), 'post_title' => __( 'Title', $this->textdomain ) ); + $show_date = array( '' => '', 'created' => __( 'Created', $this->textdomain ), 'modified' => __( 'Modified', $this->textdomain ) ); + $meta_key = array_merge( array( '' ), (array) get_meta_keys() ); + ?> + + <div class="hybrid-widget-controls columns-3"> + <p> + <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', $this->textdomain ); ?></label> + <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'sort_order' ); ?>"><code>sort_order</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'sort_order' ); ?>" name="<?php echo $this->get_field_name( 'sort_order' ); ?>"> + <?php foreach ( $sort_order as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['sort_order'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'sort_column' ); ?>"><code>sort_column</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'sort_column' ); ?>" name="<?php echo $this->get_field_name( 'sort_column' ); ?>"> + <?php foreach ( $sort_column as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['sort_column'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'depth' ); ?>"><code>depth</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'depth' ); ?>" name="<?php echo $this->get_field_name( 'depth' ); ?>" value="<?php echo $instance['depth']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'number' ); ?>"><code>number</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'number' ); ?>" name="<?php echo $this->get_field_name( 'number' ); ?>" value="<?php echo $instance['number']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'offset' ); ?>"><code>offset</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'offset' ); ?>" name="<?php echo $this->get_field_name( 'offset' ); ?>" value="<?php echo $instance['offset']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'child_of' ); ?>"><code>child_of</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'child_of' ); ?>" name="<?php echo $this->get_field_name( 'child_of' ); ?>" value="<?php echo $instance['child_of']; ?>" /> + </p> + </div> + + <div class="hybrid-widget-controls columns-3"> + + <p> + <label for="<?php echo $this->get_field_id( 'include' ); ?>"><code>include</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'include' ); ?>" name="<?php echo $this->get_field_name( 'include' ); ?>[]" size="4" multiple="multiple"> + <?php foreach ( $posts as $post ) { ?> + <option value="<?php echo $post->ID; ?>" <?php echo ( in_array( $post->ID, (array) $instance['include'] ) ? 'selected="selected"' : '' ); ?>><?php echo esc_attr( $post->post_title ); ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'exclude' ); ?>"><code>exclude</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'exclude' ); ?>" name="<?php echo $this->get_field_name( 'exclude' ); ?>[]" size="4" multiple="multiple"> + <?php foreach ( $posts as $post ) { ?> + <option value="<?php echo $post->ID; ?>" <?php echo ( in_array( $post->ID, (array) $instance['exclude'] ) ? 'selected="selected"' : '' ); ?>><?php echo esc_attr( $post->post_title ); ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'exclude_tree' ); ?>"><code>exclude_tree</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'exclude_tree' ); ?>" name="<?php echo $this->get_field_name( 'exclude_tree' ); ?>" value="<?php echo $instance['exclude_tree']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'meta_key' ); ?>"><code>meta_key</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'meta_key' ); ?>" name="<?php echo $this->get_field_name( 'meta_key' ); ?>"> + <?php foreach ( $meta_key as $meta ) { ?> + <option value="<?php echo $meta; ?>" <?php selected( $instance['meta_key'], $meta ); ?>><?php echo $meta; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'meta_value' ); ?>"><code>meta_value</code></label> + <input type="text" class="widefat code" id="<?php echo $this->get_field_id( 'meta_value' ); ?>" name="<?php echo $this->get_field_name( 'meta_value' ); ?>" value="<?php echo $instance['meta_value']; ?>" /> + </p> + </div> + + <div class="hybrid-widget-controls columns-3 column-last"> + + <p> + <label for="<?php echo $this->get_field_id( 'authors' ); ?>"><code>authors</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'authors' ); ?>" name="<?php echo $this->get_field_name( 'authors' ); ?>[]" size="4" multiple="multiple"> + <?php foreach ( $authors as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php echo ( in_array( $option_value, (array) $instance['authors'] ) ? 'selected="selected"' : '' ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'link_before' ); ?>"><code>link_before</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'link_before' ); ?>" name="<?php echo $this->get_field_name( 'link_before' ); ?>" value="<?php echo $instance['link_before']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'link_after' ); ?>"><code>link_after</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'link_after' ); ?>" name="<?php echo $this->get_field_name( 'link_after' ); ?>" value="<?php echo $instance['link_after']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'show_date' ); ?>"><code>show_date</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'show_date' ); ?>" name="<?php echo $this->get_field_name( 'show_date' ); ?>"> + <?php foreach ( $show_date as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['show_date'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'date_format' ); ?>"><code>date_format</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'date_format' ); ?>" name="<?php echo $this->get_field_name( 'date_format' ); ?>" value="<?php echo $instance['date_format']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'hierarchical' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['hierarchical'], true ); ?> id="<?php echo $this->get_field_id( 'hierarchical' ); ?>" name="<?php echo $this->get_field_name( 'hierarchical' ); ?>" /> <?php _e( 'Hierarchical?', $this->textdomain); ?> <code>hierarchical</code></label> + </p> + </div> + <div style="clear:both;"> </div> + <?php + } +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/classes/widget-search.php b/wp-content/themes/hybrid/library/classes/widget-search.php new file mode 100644 index 0000000000000000000000000000000000000000..16a6d470a44a7111305e0cec6a8f4c970b881563 --- /dev/null +++ b/wp-content/themes/hybrid/library/classes/widget-search.php @@ -0,0 +1,134 @@ +<?php +/** + * Search Widget Class + * + * The Search widget replaces the default WordPress Search widget. This version gives total + * control over the output to the user by allowing the input of various arguments that typically + * represent a search form. It also gives the user the option of using the theme's search form + * through the use of the get_search_form() function. + * + * @since 0.6 + * @link http://themehybrid.com/themes/hybrid/widgets + * + * @package Hybrid + * @subpackage Classes + */ + +class Hybrid_Widget_Search extends WP_Widget { + + var $prefix; + var $textdomain; + + /** + * Set up the widget's unique name, ID, class, description, and other options. + * @since 0.6 + */ + function Hybrid_Widget_Search() { + $this->prefix = hybrid_get_prefix(); + $this->textdomain = hybrid_get_textdomain(); + + $widget_ops = array( 'classname' => 'search', 'description' => __( 'An advanced widget that gives you total control over the output of your search form.', $this->textdomain ) ); + $control_ops = array( 'width' => 525, 'height' => 350, 'id_base' => "{$this->prefix}-search" ); + $this->WP_Widget( "{$this->prefix}-search", __( 'Search', $this->textdomain ), $widget_ops, $control_ops ); + } + + /** + * Outputs the widget based on the arguments input through the widget controls. + * @since 0.6 + */ + function widget( $args, $instance ) { + extract( $args ); + + $theme_search = isset( $instance['theme_search'] ) ? $instance['theme_search'] : false; + + echo $before_widget; + + /* If there is a title given, add it along with the $before_title and $after_title variables. */ + if ( $instance['title'] ) + echo $before_title . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $after_title; + + if ( $theme_search ) + get_search_form(); + + else { + global $search_form_num; + + $search_num = ( ( $search_form_num ) ? "-{$search_form_num}" : '' ); + $search_text = ( ( is_search() ) ? esc_attr( get_search_query() ) : esc_attr( $instance['search_text'] ) ); + + $search = '<form method="get" class="search-form" id="search-form' . $search_num . '" action="' . home_url() . '/"><div>'; + + if ( $instance['search_label'] ) + $search .= '<label for="search-text' . $search_num . '">' . $instance['search_label'] . '</label>'; + + $search .= '<input class="search-text" type="text" name="s" id="search-text' . $search_num . '" value="' . esc_attr( $search_text ) . '" onfocus="if(this.value==this.defaultValue)this.value=\'\';" onblur="if(this.value==\'\')this.value=this.defaultValue;" />'; + + if ( $instance['search_submit'] ) + $search .= '<input class="search-submit button" name="submit" type="submit" id="search-submit' . $search_num . '" value="' . esc_attr( $instance['search_submit'] ) . '" />'; + + $search .= '</div></form><!-- .search-form -->'; + + echo $search; + + $search_form_num++; + } + + echo $after_widget; + } + + /** + * Updates the widget control options for the particular instance of the widget. + * @since 0.6 + */ + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + $instance['title'] = strip_tags( $new_instance['title'] ); + $instance['search_label'] = strip_tags( $new_instance['search_label'] ); + $instance['search_text'] = strip_tags( $new_instance['search_text'] ); + $instance['search_submit'] = strip_tags( $new_instance['search_submit'] ); + $instance['theme_search'] = ( isset( $new_instance['theme_search'] ) ? 1 : 0 ); + + return $instance; + } + + /** + * Displays the widget control options in the Widgets admin screen. + * @since 0.6 + */ + function form( $instance ) { + + //Defaults + $defaults = array( 'title' => __( 'Search', $this->textdomain ), 'theme_search' => false ); + $instance = wp_parse_args( (array) $instance, $defaults ); ?> + + <div class="hybrid-widget-controls columns-2"> + <p> + <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', $this->textdomain ); ?></label> + <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'search_label' ); ?>"><?php _e( 'Search Label:', $this->textdomain ); ?></label> + <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'search_label' ); ?>" name="<?php echo $this->get_field_name( 'search_label' ); ?>" value="<?php echo $instance['search_label']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'search_text' ); ?>"><?php _e( 'Search Text:', $this->textdomain ); ?></label> + <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'search_text' ); ?>" name="<?php echo $this->get_field_name( 'search_text' ); ?>" value="<?php echo $instance['search_text']; ?>" /> + </p> + </div> + + <div class="hybrid-widget-controls columns-2 column-last"> + <p> + <label for="<?php echo $this->get_field_id( 'search_submit' ); ?>"><?php _e( 'Search Submit:', $this->textdomain ); ?></label> + <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'search_submit' ); ?>" name="<?php echo $this->get_field_name( 'search_submit' ); ?>" value="<?php echo $instance['search_submit']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'theme_search' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['theme_search'], true ); ?> id="<?php echo $this->get_field_id( 'theme_search' ); ?>" name="<?php echo $this->get_field_name( 'theme_search' ); ?>" /> <?php _e( 'Use theme\'s <code>searchform.php</code>?', $this->textdomain ); ?></label> + </p> + </div> + <div style="clear:both;"> </div> + <?php + } +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/classes/widget-tags.php b/wp-content/themes/hybrid/library/classes/widget-tags.php new file mode 100644 index 0000000000000000000000000000000000000000..9bfdfa52ba511546d921194c29d294f92d4f1276 --- /dev/null +++ b/wp-content/themes/hybrid/library/classes/widget-tags.php @@ -0,0 +1,275 @@ +<?php +/** + * Tags Widget Class + * + * The Tags widget replaces the default WordPress Tag Cloud widget. This version gives total + * control over the output to the user by allowing the input of all the arguments typically seen + * in the wp_tag_cloud() function. + * + * @since 0.6 + * @link http://codex.wordpress.org/Template_Tags/wp_tag_cloud + * @link http://themehybrid.com/themes/hybrid/widgets + * + * @package Hybrid + * @subpackage Widgets + */ + +class Hybrid_Widget_Tags extends WP_Widget { + + var $prefix; + var $textdomain; + + /** + * Set up the widget's unique name, ID, class, description, and other options. + * @since 0.6 + */ + function Hybrid_Widget_Tags() { + $this->prefix = hybrid_get_prefix(); + $this->textdomain = hybrid_get_textdomain(); + + $widget_ops = array( 'classname' => 'tags', 'description' => __( 'An advanced widget that gives you total control over the output of your tags.',$this->textdomain ) ); + $control_ops = array( 'width' => 800, 'height' => 350, 'id_base' => "{$this->prefix}-tags" ); + $this->WP_Widget( "{$this->prefix}-tags", __( 'Tags', $this->textdomain ), $widget_ops, $control_ops ); + } + + /** + * Outputs the widget based on the arguments input through the widget controls. + * @since 0.6 + */ + function widget( $args, $instance ) { + extract( $args ); + + $args = array(); + + $args['taxonomy'] = $instance['taxonomy']; + $args['largest'] = ( ( $instance['largest'] ) ? absint( $instance['largest'] ) : 22 ); + $args['smallest'] = ( ( $instance['smallest'] ) ? absint( $instance['smallest'] ) : 8 ); + $args['number'] = intval( $instance['number'] ); + $args['child_of'] = intval( $instance['child_of'] ); + $args['parent'] = ( $instance['parent'] ) ? intval( $instance['parent'] ) : ''; + $args['separator'] = ( $instance['separator'] ) ? $instance['separator'] : "\n"; + $args['pad_counts'] = isset( $instance['pad_counts'] ) ? $instance['pad_counts'] : false; + $args['hide_empty'] = isset( $instance['hide_empty'] ) ? $instance['hide_empty'] : false; + $args['unit'] = $instance['unit']; + $args['format'] = $instance['format']; + $args['include'] = $instance['include']; + $args['exclude'] = $instance['exclude']; + $args['order'] = $instance['order']; + $args['orderby'] = $instance['orderby']; + $args['link'] = $instance['link']; + $args['search'] = $instance['search']; + $args['name__like'] = $instance['name__like']; + $args['echo'] = false; + + /* Open the output of the widget. */ + echo $before_widget; + + /* If there is a title given, add it along with the $before_title and $after_title variables. */ + if ( $instance['title'] ) + echo $before_title . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $after_title; + + /* Get the tag cloud. */ + $tags = str_replace( array( "\r", "\n", "\t" ), ' ', wp_tag_cloud( $args ) ); + + /* If $format should be flat, wrap it in the <p> element. */ + if ( 'flat' == $instance['format'] ) + $tags = '<p class="' . $instance['taxonomy'] . '-cloud term-cloud">' . $tags . '</p>'; + + /* Output the tag cloud. */ + echo $tags; + + /* Close the output of the widget. */ + echo $after_widget; + } + + /** + * Updates the widget control options for the particular instance of the widget. + * @since 0.6 + */ + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + + /* Set the instance to the new instance. */ + $instance = $new_instance; + + /* If new taxonomy is chosen, reset includes and excludes. */ + if ( $instance['taxonomy'] !== $old_instance['taxonomy'] ) { + $instance['include'] = array(); + $instance['exclude'] = array(); + } + + $instance['title'] = strip_tags( $new_instance['title'] ); + $instance['smallest'] = strip_tags( $new_instance['smallest'] ); + $instance['largest'] = strip_tags( $new_instance['largest'] ); + $instance['number'] = strip_tags( $new_instance['number'] ); + $instance['separator'] = strip_tags( $new_instance['separator'] ); + $instance['name__like'] = strip_tags( $new_instance['name__like'] ); + $instance['search'] = strip_tags( $new_instance['search'] ); + $instance['child_of'] = strip_tags( $new_instance['child_of'] ); + $instance['parent'] = strip_tags( $new_instance['parent'] ); + $instance['unit'] = $new_instance['unit']; + $instance['format'] = $new_instance['format']; + $instance['orderby'] = $new_instance['orderby']; + $instance['order'] = $new_instance['order']; + $instance['taxonomy'] = $new_instance['taxonomy']; + $instance['link'] = $new_instance['link']; + $instance['pad_counts'] = ( isset( $new_instance['pad_counts'] ) ? 1 : 0 ); + $instance['hide_empty'] = ( isset( $new_instance['hide_empty'] ) ? 1 : 0 ); + + return $instance; + } + + /** + * Displays the widget control options in the Widgets admin screen. + * @since 0.6 + */ + function form( $instance ) { + + /* Set up some defaults for the widget. */ + $defaults = array( + 'title' => __( 'Tags', $this->textdomain ), + 'order' => 'ASC', + 'orderby' => 'name', + 'format' => 'flat', + 'unit' => 'pt', 'smallest' => 8, + 'largest' => 22, + 'link' => 'view', + 'number' => 45, + 'taxonomy' => 'post_tag', + 'hide_empty' => 1 + ); + $instance = wp_parse_args( (array) $instance, $defaults ); + + /* <select> element options. */ + $taxonomies = get_taxonomies( array( 'show_tagcloud' => true ), 'objects' ); + $terms = get_terms( $instance['taxonomy'] ); + $link = array( 'view' => __( 'View', $this->textdomain ), 'edit' => __( 'Edit', $this->textdomain ) ); + $format = array( 'flat' => __( 'Flat', $this->textdomain ), 'list' => __( 'List', $this->textdomain ) ); + $order = array( 'ASC' => __( 'Ascending', $this->textdomain ), 'DESC' => __( 'Descending', $this->textdomain ), 'RAND' => __( 'Random', $this->textdomain ) ); + $orderby = array( 'count' => __( 'Count', $this->textdomain ), 'name' => __( 'Name', $this->textdomain ) ); + $unit = array( 'pt' => 'pt', 'px' => 'px', 'em' => 'em', '%' => '%' ); + + ?> + + <div class="hybrid-widget-controls columns-3"> + <p> + <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', $this->textdomain ); ?></label> + <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'taxonomy' ); ?>"><code>taxonomy</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'taxonomy' ); ?>" name="<?php echo $this->get_field_name( 'taxonomy' ); ?>"> + <?php foreach ( $taxonomies as $taxonomy ) { ?> + <option value="<?php echo $taxonomy->name; ?>" <?php selected( $instance['taxonomy'], $taxonomy->name ); ?>><?php echo $taxonomy->labels->singular_name; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'link' ); ?>"><code>link</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'link' ); ?>" name="<?php echo $this->get_field_name( 'link' ); ?>"> + <?php foreach ( $link as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['link'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'format' ); ?>"><code>format</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'format' ); ?>" name="<?php echo $this->get_field_name( 'format' ); ?>"> + <?php foreach ( $format as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['format'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'order' ); ?>"><code>order</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'order' ); ?>" name="<?php echo $this->get_field_name( 'order' ); ?>"> + <?php foreach ( $order as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['order'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'orderby' ); ?>"><code>orderby</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'orderby' ); ?>" name="<?php echo $this->get_field_name( 'orderby' ); ?>"> + <?php foreach ( $orderby as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['orderby'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + </div> + + <div class="hybrid-widget-controls columns-3"> + <p> + <label for="<?php echo $this->get_field_id( 'include' ); ?>"><code>include</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'include' ); ?>" name="<?php echo $this->get_field_name( 'include' ); ?>[]" size="4" multiple="multiple"> + <?php foreach ( $terms as $term ) { ?> + <option value="<?php echo $term->term_id; ?>" <?php echo ( in_array( $term->term_id, (array) $instance['include'] ) ? 'selected="selected"' : '' ); ?>><?php echo $term->name; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'exclude' ); ?>"><code>exclude</code></label> + <select class="widefat" id="<?php echo $this->get_field_id( 'exclude' ); ?>" name="<?php echo $this->get_field_name( 'exclude' ); ?>[]" size="4" multiple="multiple"> + <?php foreach ( $terms as $term ) { ?> + <option value="<?php echo $term->term_id; ?>" <?php echo ( in_array( $term->term_id, (array) $instance['exclude'] ) ? 'selected="selected"' : '' ); ?>><?php echo $term->name; ?></option> + <?php } ?> + </select> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'number' ); ?>"><code>number</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'number' ); ?>" name="<?php echo $this->get_field_name( 'number' ); ?>" value="<?php echo $instance['number']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'largest' ); ?>"><code>largest</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'largest' ); ?>" name="<?php echo $this->get_field_name( 'largest' ); ?>" value="<?php echo $instance['largest']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'smallest' ); ?>"><code>smallest</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'smallest' ); ?>" name="<?php echo $this->get_field_name( 'smallest' ); ?>" value="<?php echo $instance['smallest']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'unit' ); ?>"><code>unit</code></label> + <select class="smallfat" id="<?php echo $this->get_field_id( 'unit' ); ?>" name="<?php echo $this->get_field_name( 'unit' ); ?>"> + <?php foreach ( $unit as $option_value => $option_label ) { ?> + <option value="<?php echo $option_value; ?>" <?php selected( $instance['unit'], $option_value ); ?>><?php echo $option_label; ?></option> + <?php } ?> + </select> + </p> + </div> + + <div class="hybrid-widget-controls columns-3 column-last"> + <p> + <label for="<?php echo $this->get_field_id( 'separator' ); ?>"><code>separator</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'separator' ); ?>" name="<?php echo $this->get_field_name( 'separator' ); ?>" value="<?php echo $instance['separator']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'child_of' ); ?>"><code>child_of</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'child_of' ); ?>" name="<?php echo $this->get_field_name( 'child_of' ); ?>" value="<?php echo $instance['child_of']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'parent' ); ?>"><code>parent</code></label> + <input type="text" class="smallfat code" id="<?php echo $this->get_field_id( 'parent' ); ?>" name="<?php echo $this->get_field_name( 'parent' ); ?>" value="<?php echo $instance['parent']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'search' ); ?>"><code>search</code></label> + <input type="text" class="widefat code" id="<?php echo $this->get_field_id( 'search' ); ?>" name="<?php echo $this->get_field_name( 'search' ); ?>" value="<?php echo $instance['search']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'name__like' ); ?>"><code>name__like</code></label> + <input type="text" class="widefat code" id="<?php echo $this->get_field_id( 'name__like' ); ?>" name="<?php echo $this->get_field_name( 'name__like' ); ?>" value="<?php echo $instance['name__like']; ?>" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'pad_counts' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['pad_counts'], true ); ?> id="<?php echo $this->get_field_id( 'pad_counts' ); ?>" name="<?php echo $this->get_field_name( 'pad_counts' ); ?>" /> <?php _e( 'Pad counts?', $this->textdomain ); ?> <code>pad_counts</code></label> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'hide_empty' ); ?>"> + <input class="checkbox" type="checkbox" <?php checked( $instance['hide_empty'], true ); ?> id="<?php echo $this->get_field_id( 'hide_empty' ); ?>" name="<?php echo $this->get_field_name( 'hide_empty' ); ?>" /> <?php _e( 'Hide empty?', $this->textdomain ); ?> <code>hide_empty</code></label> + </p> + </div> + <div style="clear:both;"> </div> + <?php + } +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/18px.css b/wp-content/themes/hybrid/library/css/18px.css new file mode 100644 index 0000000000000000000000000000000000000000..610ad4cda59582ecf3b8b99ef74cfb11ec1b0925 --- /dev/null +++ b/wp-content/themes/hybrid/library/css/18px.css @@ -0,0 +1 @@ +html,body,div,span,object,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;background:transparent;border:none;text-decoration:none}b,i,hr,u,center,menu,layer,s,strike,font,xmp{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;font-weight:normal;font-style:normal;background:transparent;border:none;text-decoration:none}font{color:#333}center{text-align:left}body{line-height:21px;font-family:Georgia,Times,"Times New Roman",serif;color:#333;background:#fff}h1,h2,h3,h4,h5,h6{font-style:normal;font-weight:normal;margin:0 0 18px 0}h1{font-size:1.8em}h2{font-size:1.7em}h3{font-size:1.55em;}h4{font-size:1.4em}h5{font-size:1.25em}h6{font-size:1.1em}p{margin:0 0 18px 0}ol,ul{list-style:none}ul{list-style:disc;margin:0 0 18px 2.5em}ol{list-style-type:decimal;margin:0 0 18px 3em}ol ol{list-style:upper-roman}ol ol ol{list-style:lower-roman}ol ol ol ol{list-style:upper-alpha}ol ol ol ol ol{list-style:lower-alpha}ul ul,ol ol,ul ol,ol ul{margin-bottom:0}dl{margin:0 0 18px 3px}dl dt{font-weight:bold;margin:12px 0 0 0}dl dd{margin:6px 0 0 1.5em}strong{font-weight:bold}strong strong{font-weight:normal}em,cite{font-style:italic}em em,cite cite{font-style:normal}abbr{cursor:help}acronym{text-transform:uppercase;border-bottom:1px dashed #666;cursor:help}big{font-size:120%}small,sup,sub{font-size:80%}sup{vertical-align:baseline;position:relative;bottom:0.3em}sub{vertical-align:baseline;position:relative;top:0.3em}address{font-style:italic;margin:0 0 18px 0}li address,dd address{margin:0}blockquote{margin:0 2.5em;font-style:normal}blockquote em,blockquote cite{font-style:italic}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}a{cursor:pointer}a img{border:none}pre{overflow:auto;font:.9em Monaco,monospace,Courier,"Courier New";line-height:18px;margin-bottom:18px;padding:9px}code{font:.9em Monaco,monospace,Courier,"Courier New"}pre code{font-size:1em}ins,dfn{font-style:italic;text-decoration:none;border-bottom:1px solid #666}del{text-decoration:line-through}object{margin-bottom:18px}input,textarea{font-size:1em;font-family:Georgia,Times,"Times New Roman",serif;padding:3px}:focus{outline:none}form label{cursor:pointer}option{padding:1px 3px}table{border-collapse:collapse;border-spacing:0;margin-bottom:18px}th,td{text-align:left}hr{margin-bottom:18px}img.wp-smiley{max-height:12px;margin:0;padding:0;border:none}.gallery{display:block;text-align:center;margin-bottom:18px !important}.alignleft,.left{float:left;margin-right:15px}.alignright,.right{float:right;margin-left:15px}.aligncenter,.center{display:block;margin:0 auto 18px auto}.alignnone,.block{clear:both;margin:0 0 18px 0}.clear{clear:both}img.alignleft,img.alignright{display:inline}blockquote.alignleft,blockquote .alignright{width:33%} \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/20px.css b/wp-content/themes/hybrid/library/css/20px.css new file mode 100644 index 0000000000000000000000000000000000000000..4390205587cfe870252d10a2e8d9e9d86e556214 --- /dev/null +++ b/wp-content/themes/hybrid/library/css/20px.css @@ -0,0 +1 @@ +html,body,div,span,object,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;background:transparent;border:none;text-decoration:none}b,i,hr,u,center,menu,layer,s,strike,font,xmp{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;font-weight:normal;font-style:normal;background:transparent;border:none;text-decoration:none}font{color:#333}center{text-align:left}body{line-height:20px;font-family:Georgia,Times,"Times New Roman",serif;color:#333;background:#fff}h1,h2,h3,h4,h5,h6{font-style:normal;font-weight:normal;margin:0 0 20px 0}h1{font-size:1.8em}h2{font-size:1.7em}h3{font-size:1.55em;}h4{font-size:1.4em}h5{font-size:1.25em}h6{font-size:1.1em}p{margin:0 0 20px 0}ol,ul{list-style:none}ul{list-style:disc;margin:0 0 20px 2.5em}ol{list-style-type:decimal;margin:0 0 20px 3em}ol ol{list-style:upper-roman}ol ol ol{list-style:lower-roman}ol ol ol ol{list-style:upper-alpha}ol ol ol ol ol{list-style:lower-alpha}ul ul,ol ol,ul ol,ol ul{margin-bottom:0}dl{margin:0 0 20px 5px}dl dt{font-weight:bold;margin:10px 0 0 0}dl dd{margin:5px 0 0 1.5em}strong{font-weight:bold}strong strong{font-weight:normal}em,cite{font-style:italic}em em,cite cite{font-style:normal}abbr{cursor:help}acronym{text-transform:uppercase;border-bottom:1px dashed #666;cursor:help}big{font-size:120%}small,sup,sub{font-size:80%}sup{vertical-align:baseline;position:relative;bottom:0.3em}sub{vertical-align:baseline;position:relative;top:0.3em}address{font-style:italic;margin:0 0 20px 0}li address,dd address{margin:0}blockquote{margin:0 25px;font-style:normal}blockquote em,blockquote cite{font-style:italic}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}a{cursor:pointer}a img{border:none}pre{overflow:auto;font:.9em Monaco,monospace,Courier,"Courier New";line-height:20px;margin-bottom:20px;padding:10px}code{font:.9em Monaco,monospace,Courier,"Courier New"}pre code{font-size:1em}ins,dfn{font-style:italic;text-decoration:none;border-bottom:1px solid #666}del{text-decoration:line-through}object{margin-bottom:20px}input,textarea{font-size:1em;font-family:Georgia,Times,"Times New Roman",serif;padding:4px}:focus{outline:none}form label{cursor:pointer}option{padding:1px 2px}table{border-collapse:collapse;border-spacing:0;margin-bottom:20px}th,td{text-align:left}hr{margin-bottom:20px}img.wp-smiley{max-height:12px;margin:0;padding:0;border:none}.gallery{display:block;text-align:center;margin-bottom:20px !important}.alignleft,.left{float:left;margin-right:15px}.alignright,.right{float:right;margin-left:15px}.aligncenter,.center{display:block;margin:0 auto 20px auto}.alignnone,.block{clear:both;margin:0 0 20px 0}.clear{clear:both}img.alignleft,img.alignright{display:inline}blockquote.alignleft,blockquote .alignright{width:33%} \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/21px.css b/wp-content/themes/hybrid/library/css/21px.css new file mode 100644 index 0000000000000000000000000000000000000000..4082bf0cf6952e3c537c41c59e10464743d46a4f --- /dev/null +++ b/wp-content/themes/hybrid/library/css/21px.css @@ -0,0 +1 @@ +html,body,div,span,object,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;background:transparent;border:none;text-decoration:none}b,i,hr,u,center,menu,layer,s,strike,font,xmp{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;font-weight:normal;font-style:normal;background:transparent;border:none;text-decoration:none}font{color:#333}center{text-align:left}body{line-height:24px;font-family:Georgia,Times,"Times New Roman",serif;color:#333;background:#fff}h1,h2,h3,h4,h5,h6{font-style:normal;font-weight:normal;margin:0 0 21px 0}h1{font-size:1.8em}h2{font-size:1.7em}h3{font-size:1.55em;}h4{font-size:1.4em}h5{font-size:1.25em}h6{font-size:1.1em}p{margin:0 0 21px 0}ol,ul{list-style:none}ul{list-style:disc;margin:0 0 21px 2.5em}ol{list-style-type:decimal;margin:0 0 21px 3em}ol ol{list-style:upper-roman}ol ol ol{list-style:lower-roman}ol ol ol ol{list-style:upper-alpha}ol ol ol ol ol{list-style:lower-alpha}ul ul,ol ol,ul ol,ol ul{margin-bottom:0}dl{margin:0 0 18px 3px}dl dt{font-weight:bold;margin:12px 0 0 0}dl dd{margin:6px 0 0 1.5em}strong{font-weight:bold}strong strong{font-weight:normal}em,cite{font-style:italic}em em,cite cite{font-style:normal}abbr{cursor:help}acronym{text-transform:uppercase;border-bottom:1px dashed #666;cursor:help}big{font-size:120%}small,sup,sub{font-size:80%}sup{vertical-align:baseline;position:relative;bottom:0.3em}sub{vertical-align:baseline;position:relative;top:0.3em}address{font-style:italic;margin:0 0 21px 0}li address,dd address{margin:0}blockquote{margin:0 2.5em;font-style:normal}blockquote em,blockquote cite{font-style:italic}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}a{cursor:pointer}a img{border:none}pre{overflow:auto;font:.9em Monaco,monospace,Courier,"Courier New";line-height:21px;margin-bottom:21px;padding:9px}code{font:.9em Monaco,monospace,Courier,"Courier New"}pre code{font-size:1em}ins,dfn{font-style:italic;text-decoration:none;border-bottom:1px solid #666}del{text-decoration:line-through}object{margin-bottom:21px}input,textarea{font-size:1em;font-family:Georgia,Times,"Times New Roman",serif;padding:3px}:focus{outline:none}form label{cursor:pointer}option{padding:1px 3px}table{border-collapse:collapse;border-spacing:0;margin-bottom:21px}th,td{text-align:left}hr{margin-bottom:21px}img.wp-smiley{max-height:12px;margin:0;padding:0;border:none}.gallery{display:block;text-align:center;margin-bottom:21px !important}.alignleft,.left{float:left;margin-right:15px}.alignright,.right{float:right;margin-left:15px}.aligncenter,.center{display:block;margin:0 auto 21px auto}.alignnone,.block{clear:both;margin:0 0 21px 0}.clear{clear:both}img.alignleft,img.alignright{display:inline}blockquote.alignleft,blockquote .alignright{width:33%} \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/22px.css b/wp-content/themes/hybrid/library/css/22px.css new file mode 100644 index 0000000000000000000000000000000000000000..396f362d24ab6816ab28b56047da19b0312e6594 --- /dev/null +++ b/wp-content/themes/hybrid/library/css/22px.css @@ -0,0 +1 @@ +html,body,div,span,object,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;background:transparent;border:none;text-decoration:none}b,i,hr,u,center,menu,layer,s,strike,font,xmp{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;font-weight:normal;font-style:normal;background:transparent;border:none;text-decoration:none}font{color:#333}center{text-align:left}body{line-height:22px;font-family:Georgia,Times,"Times New Roman",serif;color:#333;background:#fff}h1,h2,h3,h4,h5,h6{font-style:normal;font-weight:normal;margin:0 0 22px 0}h1{font-size:1.8em}h2{font-size:1.7em}h3{font-size:1.55em;}h4{font-size:1.4em}h5{font-size:1.25em}h6{font-size:1.1em}p{margin:0 0 22px 0}ol,ul{list-style:none}ul{list-style:disc;margin:0 0 22px 2.5em}ol{list-style-type:decimal;margin:0 0 22px 3em}ol ol{list-style:upper-roman}ol ol ol{list-style:lower-roman}ol ol ol ol{list-style:upper-alpha}ol ol ol ol ol{list-style:lower-alpha}ul ul,ol ol,ul ol,ol ul{margin-bottom:0}dl{margin:0 0 22px 5px}dl dt{font-weight:bold;margin:10px 0 0 0}dl dd{margin:5px 0 0 1.5em}strong{font-weight:bold}strong strong{font-weight:normal}em,cite{font-style:italic}em em,cite cite{font-style:normal}abbr{cursor:help}acronym{text-transform:uppercase;border-bottom:1px dashed #666;cursor:help}big{font-size:120%}small,sup,sub{font-size:80%}sup{vertical-align:baseline;position:relative;bottom:0.3em}sub{vertical-align:baseline;position:relative;top:0.3em}address{font-style:italic;margin:0 0 22px 0}li address,dd address{margin:0}blockquote{margin:0 22px;font-style:normal}blockquote em,blockquote cite{font-style:italic}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}a{cursor:pointer}a img{border:none}pre{overflow:auto;font:.9em Monaco,monospace,Courier,"Courier New";line-height:22px;margin-bottom:22px;padding:10px}code{font:.9em Monaco,monospace,Courier,"Courier New"}pre code{font-size:1em}ins,dfn{font-style:italic;text-decoration:none;border-bottom:1px solid #666}del{text-decoration:line-through}object{margin-bottom:22px}input,textarea{font-size:1em;font-family:Georgia,Times,"Times New Roman",serif;padding:3px}:focus{outline:none}form label{cursor:pointer}option{padding:1px 2px}table{border-collapse:collapse;border-spacing:0;margin-bottom:22px}th,td{text-align:left}hr{margin-bottom:22px}img.wp-smiley{max-height:12px;margin:0;padding:0;border:none}.gallery{display:block;text-align:center;margin-bottom:22px !important}.alignleft,.left{float:left;margin-right:15px}.alignright,.right{float:right;margin-left:15px}.aligncenter,.center{display:block;margin:0 auto 22px auto}.alignnone,.block{clear:both;margin:0 0 22px 0}.clear{clear:both}img.alignleft,img.alignright{display:inline}blockquote.alignleft,blockquote .alignright{width:33%} \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/24px.css b/wp-content/themes/hybrid/library/css/24px.css new file mode 100644 index 0000000000000000000000000000000000000000..ede5585f350a03f6a8867a9ea14b7e6b9b2b3738 --- /dev/null +++ b/wp-content/themes/hybrid/library/css/24px.css @@ -0,0 +1 @@ +html,body,div,span,object,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;background:transparent;border:none;text-decoration:none}b,i,hr,u,center,menu,layer,s,strike,font,xmp{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;font-weight:normal;font-style:normal;background:transparent;border:none;text-decoration:none}font{color:#333}center{text-align:left}body{line-height:24px;font-family:Georgia,Times,"Times New Roman",serif;color:#333;background:#fff}h1,h2,h3,h4,h5,h6{font-style:normal;font-weight:normal;margin:0 0 24px 0}h1{font-size:1.8em}h2{font-size:1.7em}h3{font-size:1.55em}h4{font-size:1.4em}h5{font-size:1.25em}h6{font-size:1.1em}p{margin:0 0 24px 0}ol,ul{list-style:none}ul{list-style:disc;margin:0 0 24px 2.5em}ol{list-style-type:decimal;margin:0 0 24px 3em}ol ol{list-style:upper-roman}ol ol ol{list-style:lower-roman}ol ol ol ol{list-style:upper-alpha}ol ol ol ol ol{list-style:lower-alpha}ul ul,ol ol,ul ol,ol ul{margin-bottom:0}dl{margin:0 0 24px 6px}dl dt{font-weight:bold;margin:12px 0 0 0}dl dd{margin:6px 0 0 1.5em}strong{font-weight:bold}strong strong{font-weight:normal}em,cite{font-style:italic}em em,cite cite{font-style:normal}abbr{cursor:help}acronym{text-transform:uppercase;border-bottom:1px dashed #666;cursor:help}big{font-size:120%}small,sup,sub{font-size:80%}sup{vertical-align:baseline;position:relative;bottom:0.3em}sub{vertical-align:baseline;position:relative;top:0.3em}address{font-style:italic;margin:0 0 24px 0}li address,dd address{margin:0}blockquote{margin:0 24px;font-style:normal}blockquote em,blockquote cite{font-style:italic}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}a{cursor:pointer}a img{border:none}pre{overflow:auto;font:.9em Monaco,monospace,Courier,"Courier New";line-height:24px;margin-bottom:24px;padding:12px}code{font:.9em Monaco,monospace,Courier,"Courier New"}pre code{font-size:1em}ins,dfn{font-style:italic;text-decoration:none;border-bottom:1px solid #666}del{text-decoration:line-through}object{margin-bottom:24px}input,textarea{font-size:1em;font-family:Georgia,Times,"Times New Roman",serif;padding:3px}:focus{outline:none}form label{cursor:pointer}option{padding:1px 2px}table{border-collapse:collapse;border-spacing:0;margin-bottom:24px}th,td{text-align:left}hr{margin-bottom:24px}img.wp-smiley{max-height:12px;margin:0;padding:0;border:none}.gallery{display:block;text-align:center;margin-bottom:24px !important}.alignleft,.left{float:left;margin-right:18px}.alignright,.right{float:right;margin-left:18px}.aligncenter,.center{display:block;margin:0 auto 24px auto}.alignnone,.block{clear:both;margin:0 0 24px 0}.clear{clear:both}img.alignleft,img.alignright{display:inline}blockquote.alignleft,blockquote .alignright{width:33%} \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/25px.css b/wp-content/themes/hybrid/library/css/25px.css new file mode 100644 index 0000000000000000000000000000000000000000..5adfb4e67fb5d22db0c34b3e82d63b79ed86d697 --- /dev/null +++ b/wp-content/themes/hybrid/library/css/25px.css @@ -0,0 +1 @@ +html,body,div,span,object,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;background:transparent;border:none;text-decoration:none}b,i,hr,u,center,menu,layer,s,strike,font,xmp{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;font-weight:normal;font-style:normal;background:transparent;border:none;text-decoration:none}font{color:#333}center{text-align:left}body{line-height:25px;font-family:Georgia,Times,"Times New Roman",serif;color:#333;background:#fff}h1,h2,h3,h4,h5,h6{font-style:normal;font-weight:normal;margin:0 0 25px 0}h1{font-size:1.8em}h2{font-size:1.7em}h3{font-size:1.55em;}h4{font-size:1.4em}h5{font-size:1.25em}h6{font-size:1.1em}p{margin:0 0 25px 0}ol,ul{list-style:none}ul{list-style:disc;margin:0 0 25px 2.5em}ol{list-style-type:decimal;margin:0 0 25px 3em}ol ol{list-style:upper-roman}ol ol ol{list-style:lower-roman}ol ol ol ol{list-style:upper-alpha}ol ol ol ol ol{list-style:lower-alpha}ul ul,ol ol,ul ol,ol ul{margin-bottom:0}dl{margin:0 0 25px 5px}dl dt{font-weight:bold;margin:10px 0 0 0}dl dd{margin:5px 0 0 1.5em}strong{font-weight:bold}strong strong{font-weight:normal}em,cite{font-style:italic}em em,cite cite{font-style:normal}abbr{cursor:help}acronym{text-transform:uppercase;border-bottom:1px dashed #666;cursor:help}big{font-size:120%}small,sup,sub{font-size:80%}sup{vertical-align:baseline;position:relative;bottom:0.3em}sub{vertical-align:baseline;position:relative;top:0.3em}address{font-style:italic;margin:0 0 25px 0}li address,dd address{margin:0}blockquote{margin:0 25px;font-style:normal}blockquote em,blockquote cite{font-style:italic}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}a{cursor:pointer}a img{border:none}pre{overflow:auto;font:.9em Monaco,monospace,Courier,"Courier New";line-height:25px;margin-bottom:25px;padding:10px}code{font:.9em Monaco,monospace,Courier,"Courier New"}pre code{font-size:1em}ins,dfn{font-style:italic;text-decoration:none;border-bottom:1px solid #666}del{text-decoration:line-through}object{margin-bottom:25px}input,textarea{font-size:1em;font-family:Georgia,Times,"Times New Roman",serif;padding:3px}:focus{outline:none}form label{cursor:pointer}option{padding:1px 2px}table{border-collapse:collapse;border-spacing:0;margin-bottom:25px}th,td{text-align:left}hr{margin-bottom:25px}img.wp-smiley{max-height:12px;margin:0;padding:0;border:none}.gallery{display:block;text-align:center;margin-bottom:25px !important}.alignleft,.left{float:left;margin-right:20px}.alignright,.right{float:right;margin-left:20px}.aligncenter,.center{display:block;margin:0 auto 25px auto}.alignnone,.block{clear:both;margin:0 0 25px 0}.clear{clear:both}img.alignleft,img.alignright{display:inline}blockquote.alignleft,blockquote .alignright{width:33%} \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/2c-l-fixed.css b/wp-content/themes/hybrid/library/css/2c-l-fixed.css new file mode 100644 index 0000000000000000000000000000000000000000..16c506237d6d24f3e9bdf6c8b03328d37eb3fe47 --- /dev/null +++ b/wp-content/themes/hybrid/library/css/2c-l-fixed.css @@ -0,0 +1,63 @@ +/** + * Two columns with content floated left. + * Fixed width of 960px. + * + * @since 0.6 + * @package Hybrid + * @subpackage CSS + */ + +#body-container { + overflow: hidden; + width: 960px; + margin: 0 auto; + } + +#container { + overflow: hidden; + float: left; + width: 960px; + } + +.content { + overflow: hidden; + float: left; + width: 620px; + } +.no-widgets .content, .no-default-widgets .content { + width: 960px; + } + +#primary { + position: relative; + float: right; + width: 300px; + } + +#secondary { + position: relative; + clear: right; + float: right; + width: 300px; + } + +#subsidiary { + overflow: hidden; + } + +#subsidiary .widget { + overflow: hidden; + float: left; + width: 300px; + margin: 0 20px 0 0; + } + +#footer-container { + clear: both; + overflow: hidden; + } + +#footer { + clear: both; + overflow: hidden; + } \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/2c-r-fixed.css b/wp-content/themes/hybrid/library/css/2c-r-fixed.css new file mode 100644 index 0000000000000000000000000000000000000000..06a011cda5afb78bbac0998114520fe086ed409d --- /dev/null +++ b/wp-content/themes/hybrid/library/css/2c-r-fixed.css @@ -0,0 +1,61 @@ +/** + * Two columns with content floated right. + * Fixed width of 960px. + * + * @since 0.6 + * @package Hybrid + * @subpackage CSS + */ + +#body-container { + overflow: hidden; + width: 960px; + margin: 0 auto; + } + +#container { + overflow: hidden; + float: left; + width: 960px; + } + +.content { + overflow: hidden; + float: right; + width: 620px; + } +.no-widgets .content, .no-default-widgets .content { + width: 960px; + } + +#primary { + float: left; + width: 300px; + } + +#secondary { + clear: left; + float: left; + width: 300px; + } + +#subsidiary { + overflow: hidden; + } + +#subsidiary .widget { + overflow: hidden; + float: left; + width: 300px; + margin: 0 20px 0 0; + } + +#footer-container { + clear: both; + overflow: hidden; + } + +#footer { + clear: both; + overflow: hidden; + } \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/3c-c-fixed.css b/wp-content/themes/hybrid/library/css/3c-c-fixed.css new file mode 100644 index 0000000000000000000000000000000000000000..f6f52b1190feeaeb122b91bd38d5d908fc0fb12b --- /dev/null +++ b/wp-content/themes/hybrid/library/css/3c-c-fixed.css @@ -0,0 +1,78 @@ +/** + * Holy Grail Stylesheet. + * Creates the Holy Grail (fixed width) of three-column layouts. + * Primary / Content / Secondary + * Fixed width of 960px. + * + * @link http://www.alistapart.com/articles/holygrail + * @author Matthew Levine + * + * @since 0.6 + * @package Hybrid + * @subpackage CSS + */ + +body { + min-width: 600px; /* 2x LC width + RC width */ + } +#body-container { + overflow: hidden; + width: 960px; + margin: 0 auto; + } +#container { + clear: both; + overflow: hidden; + padding-left: 240px; /* LC width */ + padding-right: 240px; /* RC width */ + } +.no-widgets #container, .no-default-widgets #container { + width: 960px; + padding-left: 0; + padding-right: 0; + } +.content, #primary, #secondary { + position: relative; + float: left; + } +.content { + width: 100%; + } +.no-widgets .content, .no-default-widgets .content { + width: 960px; + } +#primary { + width: 220px; /* LC width */ + right: 240px; /* LC width */ + margin-left: -100%; + } +#secondary { + width: 220px; /* RC width */ + margin-right: -240px; /* RC width */ + margin-left: 20px; + } + +/*** IE6 Fix ***/ +* html #secondary { + left: 240px; /* RC width */ + } + +#subsidiary { + overflow: hidden; + } + +#subsidiary .widget { + overflow: hidden; + float: left; + width: 300px; + margin: 0 20px 0 0; + } + +#footer-container { + clear: both; + overflow: hidden; + } + +#footer { + clear: both; + } \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/3c-l-fixed.css b/wp-content/themes/hybrid/library/css/3c-l-fixed.css new file mode 100644 index 0000000000000000000000000000000000000000..594bc31aec1ed57ef6ee6367fe38bf9edcfc5484 --- /dev/null +++ b/wp-content/themes/hybrid/library/css/3c-l-fixed.css @@ -0,0 +1,63 @@ +/** + * Three columns with content floated left. + * Fixed width of 960px. + * Content / Secondary / Primary + * + * @since 0.6 + * @package Hybrid + * @subpackage CSS + */ + +#body-container { + overflow: hidden; + width: 960px; + margin: 0 auto; + } + +#container { + overflow: hidden; + float: left; + width: 960px; + } + +.content { + overflow: hidden; + float: left; + width: 520px; + } +.no-widgets .content, .no-default-widgets .content { + width: 960px; + } + +#primary { + overflow: hidden; + float: right; + width: 190px; + } + +#secondary { + overflow: hidden; + float: right; + width: 190px; + margin-right: 20px; + } + +#subsidiary { + overflow: hidden; + } + +#subsidiary .widget { + overflow: hidden; + float: left; + width: 300px; + margin: 0 20px 0 0; + } + +#footer-container { + clear: both; + overflow: hidden; + } + +#footer { + clear: both; + } \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/3c-r-fixed.css b/wp-content/themes/hybrid/library/css/3c-r-fixed.css new file mode 100644 index 0000000000000000000000000000000000000000..6f02993f9bc2b45c78f092278ca061a3ac614a91 --- /dev/null +++ b/wp-content/themes/hybrid/library/css/3c-r-fixed.css @@ -0,0 +1,63 @@ +/** + * Three columns with content floated right. + * Fixed width of 960px. + * Content / Primary / Secondary + * + * @since 0.6 + * @package Hybrid + * @subpackage CSS + */ + +#body-container { + overflow: hidden; + width: 960px; + margin: 0 auto; + } + +#container { + overflow: hidden; + float: left; + width: 960px; + } + +.content { + overflow: hidden; + float: right; + width: 520px; + } +.no-widgets .content, .no-default-widgets .content { + width: 960px; + } + +#primary { + overflow: hidden; + float: left; + width: 190px; + } + +#secondary { + overflow: hidden; + float: left; + width: 190px; + margin-left: 20px; + } + +#subsidiary { + overflow: hidden; + } + +#subsidiary .widget { + overflow: hidden; + float: left; + width: 300px; + margin: 0 20px 0 0; + } + +#footer-container { + clear: both; + overflow: hidden; + } + +#footer { + clear: both; + } \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/admin.css b/wp-content/themes/hybrid/library/css/admin.css new file mode 100644 index 0000000000000000000000000000000000000000..9c917a470955b4af9ede5600830ab91c5225cf72 --- /dev/null +++ b/wp-content/themes/hybrid/library/css/admin.css @@ -0,0 +1,57 @@ +/* Theme settings page. */ +.form-table th { + width: 20%; + font-weight: bold; + } +.metabox-holder .column-1 { + width: 100%; + } +.metabox-holder .column-2 { + float: left; + width: 49%; + } +.metabox-holder .column-3 { + float: right; + width: 49%; + } + +/* Widgets page. */ +.columns-1 { + } +.columns-2 { + overflow: hidden; + float: left; + width: 48%; + } +.columns-3 { + overflow: hidden; + float: left; + width: 31%; + margin-right: 3.5%; + } +.column-last { + float: right; + margin-right: 0; + } + +.hybrid-widget-controls label { + font-size: 11px; + } +.columns-2 input.widefat, .columns-2 select.widefat { + width: 99%; + } +.columns-3 select.widefat { + width: 98.5%; + } +.hybrid-widget-controls select[multiple="multiple"] { + width: 100%; + height: 5.0em !important; + } +input.smallfat { + float: right; + width: 66px; + } +select.smallfat { + float: right; + min-width: 66px; + } \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/drop-downs.css b/wp-content/themes/hybrid/library/css/drop-downs.css new file mode 100644 index 0000000000000000000000000000000000000000..f1f8e37abe236a330ea4e00418bcb556d7f75c4d --- /dev/null +++ b/wp-content/themes/hybrid/library/css/drop-downs.css @@ -0,0 +1,61 @@ +/** + * Dropdowns Stylesheet + * Sets up some default dropdown menu styles + * Style rules for both the page and category menus + * + * @since 0.5 + * @package Hybrid + * @subpackage CSS + */ + +/* @deprecated 0.8 Default page menu styles */ +#page-nav ul{margin:0;padding:0;list-style:none}#page-nav ul{line-height:1.0}#page-nav .menu ul{position:absolute;top:-999em;width:10em}#page-nav ul ul li{width:100%}#page-nav li:hover{visibility:inherit}#page-nav li{float:left;position:relative}#page-nav a{display:block;position:relative}#page-nav li:hover ul,li.sfHover ul{left:0;top:2em;z-index:99}#page-nav li:hover li ul,li.sfHover li ul{top:-999em}#page-nav li li:hover ul,li li.sfHover ul{left:10em;top:0}#page-nav li li:hover li ul,li li.sfHover li ul{top:-999em}#page-nav li li li:hover ul,li li li.sfHover ul{left:10em;top:0} + +/* @deprecated 0.8 Default category menu styles */ +#cat-nav ul{margin:0;padding:0;list-style:none}#cat-nav ul{line-height:1.0}#cat-nav .menu ul{position:absolute;top:-999em;width:10em}#cat-nav ul ul li{width:100%}#cat-nav li:hover{visibility:inherit}#cat-nav li{float:left;position:relative}#cat-nav a{display:block;position:relative}#cat-nav li:hover ul,li.sfHover ul{left:0;top:2em;z-index:99}#cat-nav li:hover li ul,li.sfHover li ul{top:-999em}#cat-nav li li:hover ul,li li.sfHover ul{left:10em;top:0}#cat-nav li li:hover li ul,li li.sfHover li ul{top:-999em}#cat-nav li li li:hover ul,li li li.sfHover ul{left:10em;top:0} + +/* Drop-down styles. */ +div.menu ul { + margin: 0; + padding: 0; + list-style: none; + line-height: 1.0; + } +div.menu ul ul { + position: absolute; + top: -999em; + width: 10em; + } +div.menu ul ul li { + width: 100%; + } +div.menu li:hover { + visibility: inherit; + } +div.menu li { + float: left; + position: relative; + } +div.menu a { + display: block; + position: relative; + } +div.menu li:hover ul, li.sfHover ul { + left: 0; + top: 2em; + z-index: 99; + } +div.menu li:hover li ul, li.sfHover li ul { + top: -999em; + } +div.menu li li:hover ul, li li.sfHover ul { + left: 10em; + top: 0; + } +div.menu li li:hover li ul, li li.sfHover li ul { + top: -999em; + } +div.menu li li li:hover ul, li li li.sfHover ul { + left: 10em; + top: 0; + } \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/holy-grail-fluid.css b/wp-content/themes/hybrid/library/css/holy-grail-fluid.css new file mode 100644 index 0000000000000000000000000000000000000000..895f932f7a9a87c8e1ad108dc8a37ca16fe5ec5c --- /dev/null +++ b/wp-content/themes/hybrid/library/css/holy-grail-fluid.css @@ -0,0 +1 @@ +body{min-width:600px}#container{overflow:hidden;padding-left:200px; padding-right:200px}.content,#primary,#secondary{position:relative;float:left;padding-bottom:20010px; margin-bottom:-20000px}.content{width:100%}#primary{width:200px; right:200px; margin-left:-100%}#secondary{width:200px; margin-right:-200px}#footer{clear:both}* html #secondary{left:200px} \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/plugins.css b/wp-content/themes/hybrid/library/css/plugins.css new file mode 100644 index 0000000000000000000000000000000000000000..7bf442956ae276978ab2e11c94f20c6b67017772 --- /dev/null +++ b/wp-content/themes/hybrid/library/css/plugins.css @@ -0,0 +1 @@ +.wp-pagenavi .pages{margin:2px 3px 2px 0;font-style:italic}.wp-pagenavi .current{margin:2px;padding:1px 6px;font-weight:bold}.wp-pagenavi .extend{margin:2px}.wp-pagenavi a{margin:0 2px;padding:1px 6px;font-style:italic;border:1px solid #ccc}.WP-EmailIcon{padding:0;margin:0;border:none}.comment_license{font-style:italic}img#wpstats{overflow:hidden !important;width:0 !important;height:0 !important;padding:0 !important;margin:0 !important}.contact-form{margin-bottom:21px}.contact-form legend{display:none}.contact-form .form-input input{display:block;margin-bottom:6px;padding:3px 6px;width:300px}.contact-form label{font-size:.9em}.contact-form textarea{width:97%;margin-bottom:6px;padding:6px}.contact-form .form-option{margin-bottom:6px}.contact-form .button{width:100px;margin-right:9px;padding:6px 9px}.contact-form .button:hover{cursor:pointer} \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/print.css b/wp-content/themes/hybrid/library/css/print.css new file mode 100644 index 0000000000000000000000000000000000000000..9cf8c7f36b0c0c02e1c7fb19f259acb2c07d7747 --- /dev/null +++ b/wp-content/themes/hybrid/library/css/print.css @@ -0,0 +1 @@ +@import url('18px.css');body{font:11pt Cambria,Georgia,Times,'Times New Roman',serif}#body-container{margin:0 auto;padding:0}a,a:visited {color:#3C738C;text-decoration:none}h1,h2,h3,h4,h5,h6{font-family:Georgia,Times,"Times New Roman",serif;color:#444}.post ul{margin-left:27px}blockquote{overflow:hidden;font-style:italic;color:#444;margin:0 0 18px 0;padding:18px 18px 0 18px;border:1px solid #999;background:#ddd}blockquote em{font-style:normal}blockquote.pullquote{width:210px;margin-top:6px;margin-bottom:3px;padding:6px 9px;font-size:18px;text-align:center;color:#333;background:transparent;border-top:3px double #ccc;border-bottom:3px double #ccc}.pullquote p{margin:0}code{padding:0 3px;background:#eee}pre{overflow:auto;padding:9px;background:#eee;border:1px solid #ddd}pre code{padding:0;background:transparent}table{width:100%;background:#5F97B1;border:1px solid #eee}caption{font-size:.8em;font-style:italic;text-align:right;color:#666}td{padding:.3em;border:1px solid #35667c}tr{color:#fff;background:#3e7690}tr.alt,tr.even{background:#437f9b}th{padding:.3em;color:#fff;background:#274958;border:1px solid #35667c}td a,th a{font-weight:bold;color:#eee}.drop-cap{float:left;line-height:33px;margin-right:3px;font-size:42px;font-family:"Warnock Pro","Goudy Old Style",Palatino,"Book Antiqua",Cambria,Georgia,serif;color:#666}.note{padding:6px 9px;background:#eee;border:1px solid #ccc}.warning,.alert{padding:6px 9px;background:#fffbbc;border:1px solid #E6DB55}.error{padding:6px 9px;background:#ffebe8;border:1px solid #C00}.download{padding:6px 9px;background:#EDF2F4;border:1px solid #adbabf}.left,.alignleft{float:left;margin:0 18px 0 0}.right,.alignright{float:right;margin:0 0 0 18px}.center,.aligncenter{display:block;margin:0 auto 18px auto}.block,.alignnone{display:block;margin:0 0 18px 0}.clear{clear:both}span.pullquote{float:none;margin:0}img,a img{padding:5px}.post img{max-width:99%}img.wp-smiley{max-height:12px;margin:0;padding:0;border:none}.wp-caption{padding:6px 1px 0 1px;background:#eee;border:1px solid #ddd;text-align:center}.wp-caption .wp-caption-text{margin:0;padding:0 5px;text-align:right;font-size:.8em;color:#666}.wp-caption img{margin:0 auto;padding:0;border:1px solid #666}.gallery{display:block;text-align:center;margin-bottom:18px !important}.gallery img{border:1px solid #3c738c}.avatar{float:left;width:100px;height:100px;margin-right:18px;background:#3c738c;border:1px solid #999}.thumbnail{float:left;width:100px;height:100px;margin-right:18px;background:#3c738c}#container{margin:0;padding:0}#content{margin:0 auto;padding:0}a:link,a:visited{border-bottom:#999}.entry-title{margin:0 0 5px 0;padding:0}.byline{font-size:10pt;font-style:italic;padding-bottom:10px}.byline .separator{display:none}.entry-meta{font-size:10pt;font-style:italic;color:#333}#footer{padding-top:9px;font-size:9pt;color:#666;border-top:1px solid #eee}.edit{display:none}#footer .credit{display:none}.wp-pagenavi,.navigation-links{display:none}.breadcrumb{display:none}#header{display:none}#navigation{display:none}#primary{display:none}#secondary{display:none}#tertiary{display:none}#subsidiary{display:none}.utility{display:none}.widget{display:none}#comments-template{display:none}.query-count{display:none} \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/readme.css b/wp-content/themes/hybrid/library/css/readme.css new file mode 100644 index 0000000000000000000000000000000000000000..3b9ea5afe240dd6ae53d776fed72b9ab3caa3c11 --- /dev/null +++ b/wp-content/themes/hybrid/library/css/readme.css @@ -0,0 +1,71 @@ +/** + * Readme Stylesheet + * Style rules for the readme.html file + * + * @since 0.3 + * @package Hybrid + * @subpackage CSS + */ + +body { + width: 750px; + margin: 36px auto 60px auto; + font: 16px/25px Georgia, Times, 'Times New Roman', serif; + } +/* Links */ +a:link, a:visited { + color: #2f6eb9; + text-decoration: none; + } +a:hover, a:active { + text-decoration: underline; + } +/* Headers */ +h1, h2, h3, h4, h5, h6 { + margin: 40px 0 30px 0; + color: #000; + font-weight: bold; + font-family: Arial, sans-serif; + } +h1 { + margin-top: 80px; + font-size: 2.2em; + } +code { + padding: 0 3px; + background: #eee; + } +pre code { + padding: 0; + } +pre { + padding: 9px; + background: #eee; + border: 1px solid #ccc; + } +ul { + list-style: square; + } +p.first { + font-size: 21px; + } +p.second { + font-size: 15px; + } +ul.space li { + margin-bottom: 10px; + } +.section { + overflow: hidden; + } + +.columns-2 { + float: left; + width: 350px; + margin: 0 0 21px 25px; + } +.columns-3 { + float: left; + width: 230px; + margin: 0 0 21px 20px; + } \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/reset.css b/wp-content/themes/hybrid/library/css/reset.css new file mode 100644 index 0000000000000000000000000000000000000000..c187cdc0856213e361833b135bdf87d6578329b2 --- /dev/null +++ b/wp-content/themes/hybrid/library/css/reset.css @@ -0,0 +1 @@ +html,body,div,span,object,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;background:transparent;border:none;text-decoration:none}b,i,hr,u,center,menu,layer,s,strike,font,xmp{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;font-weight:normal;font-style:normal;background:transparent;border:none;text-decoration:none}font{color:#333}center{text-align:left} \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/css/screen.css b/wp-content/themes/hybrid/library/css/screen.css new file mode 100644 index 0000000000000000000000000000000000000000..c6d3bfeafaf629f9315ff553c5c36e746d27944c --- /dev/null +++ b/wp-content/themes/hybrid/library/css/screen.css @@ -0,0 +1,609 @@ +/** + * Screen Stylesheet + * Default style for the Hybrid theme + * + * @since 0.3 + * @package Hybrid + * @subpackage CSS + */ + +/* Body */ +body { + font: normal normal normal 15px/21px Georgia, Times, "Times New Roman", serif; + color: #000; + } + +/* Body container */ +#body-container { + margin: 90px auto 21px auto; + } + +/* Links */ +a { + color: #21759b; + text-decoration: none; + } +a:visited { + color: #551a8b; + } +a:hover, a:active { + color: #d54e21; + text-decoration: underline; + } + +/* Headers */ +h2, h3, h4, h5, h6 { + font-family: Georgia, Times, "Times New Roman", serif; + color: #000; + font-weight: bold; + } +h2 { + font-size: 21px; + } +h3 { + font-size: 19px; + } +h4 { + font-size: 17px; + } +h5 { + font-size: 15px; + } +h6 { + font-size: 13px; + } + +/* Lists */ +ul { + list-style: square; + } + +/* Blockquotes */ +blockquote { + font-style: italic; + color: #555; + } +blockquote blockquote { + color: #777; + } +blockquote em { + font-style: normal; + } + +/* Code */ +pre { + padding: 9px; + background: #f9f9f9; + border: 1px solid #ccc; + } +code { + padding: 0 3px; + background: #eee; + } +pre code { + background: transparent; + } + +/* Tables */ +table { + width: 100%; + border-collapse: separate; + border-top: 1px solid #ccc; + border-left: 1px solid #ccc; + } +caption { + font-size: .9em; + font-style: italic; + text-align: right; + } +td, th { + padding: 3px 6px; + border-bottom: 1px solid #ccc; + border-right: 1px solid #ccc; + } +th { + background: #eee; + } + +/* Drop caps */ +.drop-cap { + float: left; + margin: 3px 3px 0 0; + font: normal normal normal 47px/35px "Warnock Pro", "Goudy Old Style", Palatino,"Book Antiqua", Georgia, serif; + color: #333; + } + +/* Notes */ +.note { + padding: 6px 9px; + background: #eee; + border: 1px solid #ccc; + } + +/* Warnings/Alerts */ +.warning, .alert { + padding: 6px 9px; + background: #fffbbc; + border: 1px solid #E6DB55; + } + +/* Errors */ +.error { + padding: 6px 9px; + background: #ffebe8; + border: 1px solid #C00; + } + +/* Downloads */ +.download { + padding: 6px 9px; + background: #e7f7d3; + border: 1px solid #6c3; + } + +/* Breadcrumb */ +.breadcrumb { + margin: 0 0 30px 0; + font-size: .9em; + font-style: italic; + color: #666; + } +.breadcrumb a { + color: #111; + text-decoration: none; + } +.breadcrumb a:hover { + color: #d54e21; + text-decoration: underline; + } + +/* Images */ +.post img { + max-width: 568px; + padding: 5px; + border: 1px solid #ccc; + } + +.thumbnail { + float: left; + width: 100px; + height: 100px; + margin: 5px 15px 0 0; + } + +/* Captions [caption] */ +.wp-caption { + max-width: 576px; + margin-top: 6px; + padding: 6px 1px 0 1px; + border: 1px solid #ccc; + text-align: center; + } +.wp-caption .wp-caption-text { + margin: 0; + padding: 0 5px; + text-align: right; + font-size: .9em; + font-style: italic; + color: #666; + } +.wp-caption img { + max-width: 564px; + margin: 0 auto; + padding: 0; + border: 1px solid #666; + } + +/* Gallery [gallery] */ +.gallery img { + border: 1px solid #ccc; + } + +/* Avatars */ +.avatar { + float: left; + width: 100px; + height: 100px; + margin: 5px 15px 0 0; + padding: 5px; + border: 1px solid #ccc; + } + +/* Header */ +#header { + margin: 0 0 40px 0; + } + +/* Blog title */ +#site-title { + font: italic normal normal 35px/35px Georgia, Times, "Times New Roman", serif; + margin: 0 0 10px 0; + } +#site-title a { + color: #000; + } + +/* Blog description */ +#site-description { + font: normal normal normal 16px/20px Georgia, Times, "Times New Roman", serif; + margin: 0; + color: #666; + } + +/* Navigation */ +#primary-menu, #navigation { + overflow: visible; + height: 34px; + margin: 0 0 60px 0; + z-index: 100; + } +#primary-menu li, #page-nav li { + margin-right: 15px; + } +#primary-menu li li, #page-nav li li { + margin-right: 0; + } +#primary-menu li a, #page-nav li a { + padding: 8px 15px 8px 15px; + color: #111; + background: #fff; + border: 1px solid #ccc; + } + +/* Drop-downs style */ +#primary-menu li:hover ul, #primary-menu li.sfHover ul, #page-nav li:hover ul, #page-nav li.sfHover ul { + top: 32px; + } +#primary-menu li li a, #page-nav li li a { + border-top: none; + margin-right: 0; + } +#primary-menu li ul, #page-nav li ul { + background: #fff; + border-top: 1px solid #ccc; + } +#primary-menu li li:hover ul, #primary-menu li li.sfHover ul, #primary-menu li li li:hover ul, #primary-menu li li li.sfHover ul, +#page-nav li li:hover ul, #page-nav li li.sfHover ul , #page-nav li li li:hover ul, #page-nav li li li.sfHover ul { + top: -1px; + } +#primary-menu li li li, #page-nav li li li { + margin-left: -1px; + } + +/* Container (wraps content, primary, and secondary) */ +#container { + margin-bottom: 21px; + } + +/* Main content */ +.content { + margin: 0 0 21px 0; + } +.no-widgets .content, .page-template-no-widgets .content { + width: 960px; + } + +/* Posts */ +.post { + overflow: hidden; + margin: 0 0 40px 0; + } +.single .post, .attachment .post, .page .post { + margin: 0; + } + +/* Archive information */ +.author-info, .search-info { + overflow: hidden; + margin: 0 0 40px 0; + } + +/* Entry title */ +.entry-title { + font-size: 24px; + margin: 0 0 12px 0; + font-weight: normal; + font-style: italic; + } +.archive .entry-title, .search .entry-title { + font-size: 21px; + margin: 0; + } +.page-title, .attachment-title { + margin: 0 0 21px 0; + } +.entry-title a { + color: #000; + } + +/* Byline */ +.byline { + margin: 0 0 30px 0; + font-style: italic; + color: #666; + } +.archive .byline, .search .byline { + margin: 0; + } +.byline .byline-prep { + text-transform: lowercase; + } + +/* Entry content */ +.entry-content { + overflow: hidden; + margin: 0 0 10px 0; + } + +/* Entry metadata */ +.entry-meta { + clear: both; + font-style: italic; + color: #666; + } + +/* Page links (multiple-paged posts) */ +p.page-links a { + margin: 0 3px; + padding: 3px 9px 3px 9px; + border: 1px solid #ccc; + } + +/* Navigation links */ +.navigation-links { + margin-bottom: 21px; + font-style: italic; + } +.navigation-links .previous { + float: left; + max-width: 50%; + } +.navigation-links .next { + float: right; + max-width: 50%; + text-align: right; + } +.navigation-attachment { + overflow: hidden; + } + +/* WP Pagenavi plugin */ +.wp-pagenavi { + margin-bottom: 21px; + } +.wp-pagenavi .pages, .wp-pagenavi .current, .wp-pagenavi .extend, .wp-pagenavi a { + margin-right: 6px; + padding: 3px 9px 3px 9px; + border: 1px solid #ccc; + } + +/* Widgets */ +.widget { + overflow: hidden; + margin: 0 0 15px 0; + color: #464646; + } +.widget a { + color: #464646; + text-decoration: underline; + } +.widget a:hover { + color: #d54e21; + text-decoration: none; + } + +/* Widget titles */ +.widget-title { + font-size: 18px; + font-weight: normal; + font-style: italic; + color: #111; + } + +/* Utility widget areas */ +#utility-before-content, #utility-after-content, #utility-after-page, #utility-after-single { + margin: 0 0 21px 0; + padding: 20px 20px 0 20px; + border: 1px solid #ccc; + } + +/* Comments template */ +#comments-template { + clear: both; + } + +/* Comment headers */ +.comments-header { + font-size: 1.2em; + } + +/* Comments are closed */ +.comments-closed { + font-style: italic; + } + +/* Comment list */ +#comments-template ol { + list-style: none; + margin: 0 0 21px 0; + } +#comments li, #comments li li li, #comments li li li li li { + overflow: hidden; + margin: 0 0 15px 0; + padding: 15px 15px 0 15px; + background: #fff; + border: 1px solid #ccc; + } +#comments li li, #comments li li li li { + background: #f9f9f9; + } + +/* Avatar */ +#comments-template .avatar { + width: 40px; + height: 40px; + float: left; + margin-right: 15px; + padding: 0; + border: 1px solid #666; + } + +/* Comment metadata */ +.comment-meta { + margin: 10px 0 21px 0; + font-size: 13px; + color: #666; + } +.comment-author { + font-size: 15px; + color: #000; + } +.comment-reply-link, .permalink, .comment-edit-link { + font-style: italic; + color: #666; + } + +/* Comment text */ +.comment-text { + clear: left; + margin: 0 15px; + } + +/* Form */ +.text-input { + display: block; + padding: 3px 6px; + width: 97%; + } +#comments-template label { + font-size: .9em; + } + +/* Respond textarea */ +textarea { + width: 98%; + } + +/* Submit and rest buttons */ +.button, .submit, .reset { + width: 100px; + margin-right: 15px; + padding: 7px 15px 8px 15px; + background: #fff; + border: 1px solid #ccc; + } +.button:hover, .submit:hover, .reset:hover { + cursor: pointer; + background: #f9f9f9; + } + +/* Footer container */ +#footer-container { + clear: both; + margin: 0 0 21px 0; + } + +/* Subsidiary */ +#subsidiary { + margin: 0 0 21px 0; + } + +/* Footer */ +#footer { + font-style: italic; + color: #444; + } +#footer .copyright { + display: inline; + float: left; + margin-right: 9px; + } + +/* Post Layouts */ +.layout-1c .content { + width: 960px; + } +.layout-1c #primary { + clear: left; + float: left; + width: 470px; + } +.layout-1c #secondary { + clear: none; + float: right; + width: 470px; + } +.layout-2c-r .content { + float: right; + width: 620px; + } +.layout-2c-r #primary { + float: left; + width: 300px; + } +.layout-2c-r #secondary { + clear: left; + float: left; + width: 300px; + } +.layout-2c-l .content { + float: left; + width: 620px; + } +.layout-2c-l #primary { + float: right; + width: 300px; + } +.layout-2c-l #secondary { + clear: right; + float: right; + width: 300px; + } +.layout-3c-r .content { + float: right !important; + width: 520px !important; + } +.layout-3c-r #primary { + float: left !important; + width: 190px !important; + } +.layout-3c-r #secondary { + clear: none; + float: left !important; + width: 190px !important; + margin-left: 20px; + } +.layout-3c-l .content { + float: left; + width: 520px; + } +.layout-3c-l #primary { + float: right; + width: 190px; + } +.layout-3c-l #secondary { + clear: none; + float: right; + width: 190px; + margin-right: 20px; + } +.layout-3c-c #container { + padding-left: 240px; + padding-right: 240px; + } +.layout-3c-c .content { + width: 480px; + float: left; + } +.layout-3c-c #primary { + float: left; + width: 220px; + position: relative; + right: 720px; + } +.layout-3c-c #secondary { + float: left; + width: 220px; + position: relative; + margin-left: -220px; + } \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/extensions/breadcrumb-trail.php b/wp-content/themes/hybrid/library/extensions/breadcrumb-trail.php new file mode 100644 index 0000000000000000000000000000000000000000..15bd87e9a20666168cbd34f44db77f3005cff85f --- /dev/null +++ b/wp-content/themes/hybrid/library/extensions/breadcrumb-trail.php @@ -0,0 +1,326 @@ +<?php +/** + * A script for showing a breadcrumb trail for any type of page. It tries to anticipate any + * type of structure and display the best possible trail that matches your site's permalinks. + * While not perfect, it attempts to fill in the gaps left by many other breadcrumb scripts. + * + * @copyright 2008 - 2010 + * @version 0.3 + * @author Justin Tadlock + * @link http://justintadlock.com/archives/2009/04/05/breadcrumb-trail-wordpress-plugin + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * @package BreadcrumbTrail + */ + +/** + * Shows a breadcrumb for all types of pages. Themes and plugins can filter $args or + * input directly. Allow filtering of only the $args using get_the_breadcrumb_args. + * + * @since 0.1 + * @param array $args Mixed arguments for the menu. + * @return string Output of the breadcrumb menu. + */ +function breadcrumb_trail( $args = array() ) { + global $wp_query, $wp_rewrite; + + /* Get the textdomain. */ + $textdomain = hybrid_get_textdomain(); + + /* Create an empty array for the trail. */ + $trail = array(); + + /* Set up the default arguments for the breadcrumb. */ + $defaults = array( + 'separator' => '/', + 'before' => '<span class="breadcrumb-title">' . __( 'Browse:', $textdomain ) . '</span>', + 'after' => false, + 'front_page' => true, + 'show_home' => __( 'Home', $textdomain ), + 'single_tax' => false, // @deprecated 0.3 Use singular_{$post_type}_taxonomy. + 'echo' => true + ); + + /* Allow singular post views to have a taxonomy's terms prefixing the trail. */ + if ( is_singular() ) + $defaults["singular_{$wp_query->post->post_type}_taxonomy"] = false; + + /* Apply filters to the arguments. */ + $args = apply_filters( 'breadcrumb_trail_args', $args ); + + /* Parse the arguments and extract them for easy variable naming. */ + extract( wp_parse_args( $args, $defaults ) ); + + /* For backwards compatibility, set $single_tax if it's explicitly given. */ + if ( $single_tax ) + $args['singular_post_taxonomy'] = $single_tax; + + /* Format the separator. */ + if ( $separator ) + $separator = '<span class="sep">' . $separator . '</span>'; + + /* If $show_home is set and we're not on the front page of the site, link to the home page. */ + if ( !is_front_page() && $show_home ) + $trail[] = '<a href="' . home_url() . '" title="' . get_bloginfo( 'name' ) . '" rel="home" class="trail-begin">' . $show_home . '</a>'; + + /* If viewing the front page of the site. */ + if ( is_front_page() ) { + if ( !$front_page ) + $trail = false; + elseif ( $show_home ) + $trail['trail_end'] = "{$show_home}"; + } + + /* If viewing the "home"/posts page. */ + elseif ( is_home() ) { + $home_page = get_page( $wp_query->get_queried_object_id() ); + $trail = array_merge( $trail, breadcrumb_trail_get_parents( $home_page->post_parent, '' ) ); + $trail['trail_end'] = get_the_title( $home_page->ID ); + } + + /* If viewing a singular post (page, attachment, etc.). */ + elseif ( is_singular() ) { + + /* Get singular post variables needed. */ + $post_id = absint( $wp_query->post->ID ); + $post_type = $wp_query->post->post_type; + $parent = $wp_query->post->post_parent; + + /* If a custom post type, check if there are any pages in its hierarchy based on the slug. */ + if ( 'page' !== $post_type ) { + + $post_type_object = get_post_type_object( $post_type ); + + /* If $front has been set, add it to the $path. */ + if ( 'post' == $post_type || 'attachment' == $post_type || ( $post_type_object->rewrite['with_front'] && $wp_rewrite->front ) ) + $path = trailingslashit( $wp_rewrite->front ); + + /* If there's a slug, add it to the $path. */ + if ( !empty( $post_type_object->rewrite['slug'] ) ) + $path .= $post_type_object->rewrite['slug']; + + /* If there's a path, check for parents. */ + if ( !empty( $path ) ) + $trail = array_merge( $trail, breadcrumb_trail_get_parents( '', $path ) ); + } + + /* If the post type is hierarchical or is an attachment, get its parents. */ + if ( is_post_type_hierarchical( $post_type ) || is_attachment() ) + $trail = array_merge( $trail, breadcrumb_trail_get_parents( $parent, '' ) ); + + /* Display terms for specific post type taxonomy if requested. */ + if ( $args["singular_{$post_type}_taxonomy"] && $terms = get_the_term_list( $post_id, $args["singular_{$post_type}_taxonomy"], '', ', ', '' ) ) + $trail[] = $terms; + + /* End with the post title. */ + $trail['trail_end'] = get_the_title(); + } + + /* If we're viewing any type of archive. */ + elseif ( is_archive() ) { + + /* If viewing a taxonomy term archive. */ + if ( is_tax() || is_category() || is_tag() ) { + + /* Get some taxonomy and term variables. */ + $term = $wp_query->get_queried_object(); + $taxonomy = get_taxonomy( $term->taxonomy ); + + /* Get the path to the term archive. Use this to determine if a page is present with it. */ + if ( is_category() ) + $path = get_option( 'category_base' ); + elseif ( is_tag() ) + $path = get_option( 'tag_base' ); + else { + if ( $taxonomy->rewrite['with_front'] && $wp_rewrite->front ) + $path = trailingslashit( $wp_rewrite->front ); + $path .= $taxonomy->rewrite['slug']; + } + + /* Get parent pages by path if they exist. */ + if ( $path ) + $trail = array_merge( $trail, breadcrumb_trail_get_parents( '', $path ) ); + + /* If the taxonomy is hierarchical, list its parent terms. */ + if ( is_taxonomy_hierarchical( $term->taxonomy ) && $term->parent ) + $trail = array_merge( $trail, breadcrumb_trail_get_term_parents( $term->parent, $term->taxonomy ) ); + + /* Add the term name to the trail end. */ + $trail['trail_end'] = $term->name; + } + + /* If viewing an author archive. */ + elseif ( is_author() ) { + + /* If $front has been set, add it to $path. */ + if ( !empty( $wp_rewrite->front ) ) + $path .= trailingslashit( $wp_rewrite->front ); + + /* If an $author_base exists, add it to $path. */ + if ( !empty( $wp_rewrite->author_base ) ) + $path .= $wp_rewrite->author_base; + + /* If $path exists, check for parent pages. */ + if ( !empty( $path ) ) + $trail = array_merge( $trail, breadcrumb_trail_get_parents( '', $path ) ); + + /* Add the author's display name to the trail end. */ + $trail['trail_end'] = get_the_author_meta( 'display_name', get_query_var( 'author' ) ); + } + + /* If viewing a time-based archive. */ + elseif ( is_time() ) { + + if ( get_query_var( 'minute' ) && get_query_var( 'hour' ) ) + $trail['trail_end'] = get_the_time( __( 'g:i a', $textdomain ) ); + + elseif ( get_query_var( 'minute' ) ) + $trail['trail_end'] = sprintf( __( 'Minute %1$s', $textdomain ), get_the_time( __( 'i', $textdomain ) ) ); + + elseif ( get_query_var( 'hour' ) ) + $trail['trail_end'] = get_the_time( __( 'g a', $textdomain ) ); + } + + /* If viewing a date-based archive. */ + elseif ( is_date() ) { + + /* If $front has been set, check for parent pages. */ + if ( $wp_rewrite->front ) + $trail = array_merge( $trail, breadcrumb_trail_get_parents( '', $wp_rewrite->front ) ); + + if ( is_day() ) { + $trail[] = '<a href="' . get_year_link( get_the_time( __( 'Y', $textdomain ) ) ) . '" title="' . get_the_time( __( 'Y', $textdomain ) ) . '">' . get_the_time( __( 'Y', $textdomain ) ) . '</a>'; + $trail[] = '<a href="' . get_month_link( get_the_time( __( 'Y', $textdomain ) ), get_the_time( __( 'm', $textdomain ) ) ) . '" title="' . get_the_time( __( 'F', $textdomain ) ) . '">' . get_the_time( __( 'F', $textdomain ) ) . '</a>'; + $trail['trail_end'] = get_the_time( __( 'j', $textdomain ) ); + } + + elseif ( get_query_var( 'w' ) ) { + $trail[] = '<a href="' . get_year_link( get_the_time( __( 'Y', $textdomain ) ) ) . '" title="' . get_the_time( __( 'Y', $textdomain ) ) . '">' . get_the_time( __( 'Y', $textdomain ) ) . '</a>'; + $trail['trail_end'] = sprintf( __( 'Week %1$s', 'hybrid' ), get_the_time( __( 'W', $textdomain ) ) ); + } + + elseif ( is_month() ) { + $trail[] = '<a href="' . get_year_link( get_the_time( __( 'Y', $textdomain ) ) ) . '" title="' . get_the_time( __( 'Y', $textdomain ) ) . '">' . get_the_time( __( 'Y', $textdomain ) ) . '</a>'; + $trail['trail_end'] = get_the_time( __( 'F', $textdomain ) ); + } + + elseif ( is_year() ) { + $trail['trail_end'] = get_the_time( __( 'Y', $textdomain ) ); + } + } + } + + /* If viewing search results. */ + elseif ( is_search() ) + $trail['trail_end'] = sprintf( __( 'Search results for "%1$s"', $textdomain ), esc_attr( get_search_query() ) ); + + /* If viewing a 404 error page. */ + elseif ( is_404() ) + $trail['trail_end'] = __( '404 Not Found', $textdomain ); + + /* Connect the breadcrumb trail if there are items in the trail. */ + if ( is_array( $trail ) ) { + $breadcrumb = '<div class="breadcrumb breadcrumbs"><div class="breadcrumb-trail">'; + $breadcrumb .= " {$before} "; + $breadcrumb .= join( " {$separator} ", $trail ); + $breadcrumb .= " {$after} "; + $breadcrumb .= '</div></div>'; + } + + $breadcrumb = apply_filters( 'breadcrumb_trail', $breadcrumb ); + + /* Output the breadcrumb. */ + if ( $echo ) + echo $breadcrumb; + else + return $breadcrumb; +} + +/** + * Gets parent pages of any post type or taxonomy by the ID or Path. The goal of this + * function is to create a clear path back to home given what would normally be a "ghost" + * directory. If any page matches the given path, it'll be added. But, it's also just a way + * to check for a hierarchy with hierarchical post types. + * + * @since 0.3 + * @param int $post_id ID of the post whose parents we want. + * @param string $path Path of a potential parent page. + * @return array $trail Array of parent page links. + */ +function breadcrumb_trail_get_parents( $post_id = '', $path = '' ) { + + $trail = array(); + + if ( empty( $post_id ) && empty( $path ) ) + return $trail; + + if ( empty( $post_id ) ) { + $parent_page = get_page_by_path( $path ); + $post_id = $parent_page->ID; + } + + if ( $post_id == 0 ) { + $path = trim( $path, '/' ); + preg_match_all( "/\/.*?\z/", $path, $matches ); + + if ( isset( $matches ) ) { + $matches = array_reverse( $matches ); + + foreach ( $matches as $match ) { + + $path = str_replace( $match[0], '', $path ); + $parent_page = get_page_by_path( trim( $path, '/' ) ); + + if ( $parent_page->ID > 0 ) { + $post_id = $parent_page->ID; + break; + } + } + } + } + + while ( $post_id ) { + $page = get_page( $post_id ); + $parents[] = '<a href="' . get_permalink( $post_id ) . '" title="' . esc_attr( get_the_title( $post_id ) ) . '">' . get_the_title( $post_id ) . '</a>'; + $post_id = $page->post_parent; + } + + if ( $parents ) + $trail = array_reverse( $parents ); + + return $trail; +} + +/** + * Searches for term parents of hierarchical taxonomies. This function is similar to + * the WordPress function get_category_parents() but handles any type of taxonomy. + * + * @since 0.3 + * @param int $parent_id The ID of the first parent. + * @param object|string $taxonomy The taxonomy of the term whose parents we want. + * @return array $trail Array of links to parent terms. + */ +function breadcrumb_trail_get_term_parents( $parent_id = '', $taxonomy = '' ) { + $trail = array(); + $parents = array(); + + if ( empty( $parent_id ) || empty( $taxonomy ) ) + return $trail; + + while ( $parent_id ) { + $parent = get_term( $parent_id, $taxonomy ); + $parents[] = '<a href="' . get_term_link( $parent, $taxonomy ) . '" title="' . esc_attr( $parent->name ) . '">' . $parent->name . '</a>'; + $parent_id = $parent->parent; + } + + if ( $parents ) + $trail = array_reverse( $parents ); + + return $trail; +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/extensions/custom-field-series.php b/wp-content/themes/hybrid/library/extensions/custom-field-series.php new file mode 100644 index 0000000000000000000000000000000000000000..4ddc746fbbf5b227ef484d711ea9c29b3bfaefaa --- /dev/null +++ b/wp-content/themes/hybrid/library/extensions/custom-field-series.php @@ -0,0 +1,89 @@ +<?php +/** + * Functions for displaying a series of posts linked together + * by a custom field called 'Series'. Each post is listed that + * belong to the same series of posts. + * + * @copyright 2007 - 2010 + * @version 0.2.1 + * @author Justin Tadlock + * @link http://justintadlock.com/archives/2007/11/01/wordpress-custom-fields-listing-a-series-of-posts + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * @package CustomFieldSeries + */ + +/** + * Grabs series by custom field. Checks for other articles in the series. + * Series identified custom field key 'Series' and unique value. + * + * @todo Fix the multiple hyphens in the series class. + * @todo Allow filtering of title. + * + * @since 0.1 + * @param array $args Array of arguments. + */ +function custom_field_series( $args = array() ) { + global $post; + + $textdomain = hybrid_get_textdomain(); + + $series_meta = get_metadata( 'post', $post->ID, 'Series', true ); + + if ( $series_meta ) { + + $defaults = array( + 'order' => 'DESC', + 'orderby' => 'ID', + 'include' => '', + 'exclude' => '', + 'post_type' => 'any', + 'numberposts' => -1, + 'meta_key' => 'Series', + 'meta_value' => $series_meta, + 'echo' => true + ); + + $args = apply_filters( 'custom_field_series_args', $args ); + + $args = wp_parse_args( $args, $defaults ); + + $series_posts = get_posts( $args ); + + if ( $series_posts ) { + + $class = str_replace( array( '_', ' ', ' ' ) , '-', $series_meta ); + $class = preg_replace('/[^A-Za-z0-9-]/', '', $class ); + $class = strtolower( $class ); + + $series = '<div class="series series-' . $class . '">'; + $series .= '<h4 class="series-title">' . __( 'Articles in this series', $textdomain) . '</h4>'; + $series .= '<ul>'; + + foreach ( $series_posts as $serial ) { + + if ( $serial->ID == $post->ID ) + $series .= '<li class="current-post">' . $serial->post_title . '</li>'; + + else + $series .= '<li><a href="' . get_permalink( $serial->ID ) . '" title="' . esc_attr( $serial->post_title ) . '">' . $serial->post_title . '</a></li>'; + } + + $series .= '</ul></div>'; + } + } + + $series = apply_filters( 'custom_field_series', $series ); + + if ( $args['echo'] && $series ) + echo $series; + + elseif ( $series ) + return $series; +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/extensions/get-the-image.php b/wp-content/themes/hybrid/library/extensions/get-the-image.php new file mode 100644 index 0000000000000000000000000000000000000000..d5568cbc650d32feca1046ea494f6a87eb85e750 --- /dev/null +++ b/wp-content/themes/hybrid/library/extensions/get-the-image.php @@ -0,0 +1,355 @@ +<?php +/** + * Get the Image was created to solve a problem in the WordPress community about how to handle + * post-specific images. It was created to be a highly-intuitive image script that loads images that are + * related to specific posts in some way. It creates an image-based representation of a WordPress + * post (or any post type). + * + * @copyright 2008 - 2010 + * @version 0.5 + * @author Justin Tadlock + * @link http://justintadlock.com/archives/2008/05/27/get-the-image-wordpress-plugin + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * @package GetTheImage + */ + +/* Adds theme support for post images. */ +add_theme_support( 'post-thumbnails' ); + +/* Delete the cache when a post or post metadata is updated. */ +add_action( 'save_post', 'get_the_image_delete_cache' ); +add_action( 'deleted_post_meta', 'get_the_image_delete_cache' ); +add_action( 'updated_post_meta', 'get_the_image_delete_cache' ); +add_action( 'added_post_meta', 'get_the_image_delete_cache' ); + +/** + * This is a highly intuitive function that gets images. It first calls for custom field keys. If no + * custom field key is set, check for the_post_thumbnail(). If no post image, check for images + * attached to post. Check for image order if looking for attached images. Scan the post for + * images if $image_scan = true. Check for default image if $default_image = true. If an image + * is found, call display_the_image() to format it. + * + * @since 0.1 + * @global $post The current post's DB object. + * @param array $args Parameters for what image to get. + * @return string|array The HTML for the image. | Image attributes in an array. + */ +function get_the_image( $args = array() ) { + global $post; + + /* Set the default arguments. */ + $defaults = array( + 'custom_key' => array( 'Thumbnail', 'thumbnail' ), + 'post_id' => $post->ID, + 'attachment' => true, + 'the_post_thumbnail' => true, // WP 2.9+ image function + 'default_size' => false, // Deprecated 0.5 in favor of $size + 'size' => 'thumbnail', + 'default_image' => false, + 'order_of_image' => 1, + 'link_to_post' => true, + 'image_class' => false, + 'image_scan' => false, + 'width' => false, + 'height' => false, + 'format' => 'img', + 'echo' => true + ); + + /* Allow plugins/themes to filter the arguments. */ + $args = apply_filters( 'get_the_image_args', $args ); + + /* Merge the input arguments and the defaults. */ + $args = wp_parse_args( $args, $defaults ); + + /* If $default_size is given, overwrite $size. */ + if ( !empty( $args['default_size'] ) ) + $args['size'] = $args['default_size']; + + /* If $format is set to 'array', don't link to the post. */ + if ( 'array' == $args['format'] ) + $args['link_to_post'] = false; + + /* Extract the array to allow easy use of variables. */ + extract( $args ); + + /* Check for a cached image. */ + $cache = wp_cache_get( 'get_the_image' ); + + if ( !is_array( $cache ) ) + $cache = array(); + + /* If there is no cached image, let's see if one exists. */ + if ( !isset( $cache[$post_id][$size] ) ) { + + /* If a custom field key (array) is defined, check for images by custom field. */ + if ( $custom_key ) + $image = image_by_custom_field( $args ); + + /* If no image found and $the_post_thumbnail is set to true, check for a post image (WP feature). */ + if ( !$image && $the_post_thumbnail ) + $image = image_by_the_post_thumbnail( $args ); + + /* If no image found and $attachment is set to true, check for an image by attachment. */ + if ( !$image && $attachment ) + $image = image_by_attachment( $args ); + + /* If no image found and $image_scan is set to true, scan the post for images. */ + if ( !$image && $image_scan ) + $image = image_by_scan( $args ); + + /* If no image found and a $default_image is set, get the default image. */ + if ( !$image && $default_image ) + $image = image_by_default( $args ); + + /* If an image is returned, run it through the display function. */ + if ( $image ) + $image = display_the_image( $args, $image ); + + $cache[$post_id][$size] = $image; + wp_cache_set( 'get_the_image', $cache ); + } + else { + $image = $cache[$post_id][$size]; + } + + /* Allow plugins/theme to override the final output. */ + $image = apply_filters( 'get_the_image', $image ); + + /* Display the image if $echo is set to true and the $format isn't an array. Else, return the image. */ + if ( 'array' == $format ) { + $atts = wp_kses_hair( $image, array( 'http' ) ); + + foreach ( $atts as $att ) + $out[$att['name']] = $att['value']; + + $out['url'] = $out['src']; // @deprecated 0.5 Use 'src' instead of 'url'. + return $out; + } + elseif ( $echo ) + echo $image; + else + return $image; +} + +/* Internal Functions */ + +/** + * Calls images by custom field key. Script loops through multiple custom field keys. + * If that particular key is found, $image is set and the loop breaks. If an image is + * found, it is returned. + * + * @since 0.3 + * @param array $args + * @return array|bool + */ +function image_by_custom_field( $args = array() ) { + + /* If $custom_key is a string, we want to split it by spaces into an array. */ + if ( !is_array( $args['custom_key'] ) ) + $args['custom_key'] = preg_split( '#\s+#', $args['custom_key'] ); + + /* If $custom_key is set, loop through each custom field key, searching for values. */ + if ( isset( $args['custom_key'] ) ) { + foreach ( $args['custom_key'] as $custom ) { + $image = get_metadata( 'post', $args['post_id'], $custom, true ); + if ( $image ) + break; + } + } + + /* If a custom key value has been given for one of the keys, return the image URL. */ + if ( $image ) + return array( 'url' => $image ); + + return false; +} + +/** + * Checks for images using a custom version of the WordPress 2.9+ get_the_post_thumbnail() + * function. If an image is found, return it and the $post_thumbnail_id. The WordPress function's + * other filters are later added in the display_the_image() function. + * + * @since 0.4 + * @param array $args + * @return array|bool + */ +function image_by_the_post_thumbnail( $args = array() ) { + + /* Check for a post image ID (set by WP as a custom field). */ + $post_thumbnail_id = get_post_thumbnail_id( $args['post_id'] ); + + /* If no post image ID is found, return false. */ + if ( empty( $post_thumbnail_id ) ) + return false; + + /* Apply filters on post_thumbnail_size because this is a default WP filter used with its image feature. */ + $size = apply_filters( 'post_thumbnail_size', $args['size'] ); + + /* Get the attachment image source. This should return an array. */ + $image = wp_get_attachment_image_src( $post_thumbnail_id, $size ); + + /* Get the attachment excerpt to use as alt text. */ + $alt = trim( strip_tags( get_post_field( 'post_excerpt', $post_thumbnail_id ) ) ); + + /* Return both the image URL and the post thumbnail ID. */ + return array( 'url' => $image[0], 'post_thumbnail_id' => $post_thumbnail_id, 'alt' => $alt ); +} + +/** + * Check for attachment images. Uses get_children() to check if the post has images + * attached. If image attachments are found, loop through each. The loop only breaks + * once $order_of_image is reached. + * + * @since 0.3 + * @param array $args + * @return array|bool + */ +function image_by_attachment( $args = array() ) { + + /* Get attachments for the inputted $post_id. */ + $attachments = get_children( array( 'post_parent' => $args['post_id'], 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) ); + + /* If no attachments are found, check if the post itself is an attachment and grab its image. */ + if ( empty( $attachments ) && $args['size'] ) { + if ( 'attachment' == get_post_type( $args['post_id'] ) ) { + $image = wp_get_attachment_image_src( $args['post_id'], $args['size'] ); + $alt = trim( strip_tags( get_post_field( 'post_excerpt', $args['post_id'] ) ) ); + } + } + + /* If no attachments or image is found, return false. */ + if ( empty( $attachments ) && empty( $image ) ) + return false; + + /* Loop through each attachment. Once the $order_of_image (default is '1') is reached, break the loop. */ + foreach ( $attachments as $id => $attachment ) { + if ( ++$i == $args['order_of_image'] ) { + $image = wp_get_attachment_image_src( $id, $args['size'] ); + $alt = trim( strip_tags( get_post_field( 'post_excerpt', $id ) ) ); + break; + } + } + + /* Return the image URL. */ + return array( 'url' => $image[0], 'alt' => $alt ); +} + +/** + * Scans the post for images within the content. Not called by default with get_the_image(). + * Shouldn't use if using large images within posts, better to use the other options. + * + * @since 0.3 + * @global $post The current post's DB object. + * @param array $args + * @return array|bool + */ +function image_by_scan( $args = array() ) { + + /* Search the post's content for the <img /> tag and get its URL. */ + preg_match_all( '|<img.*?src=[\'"](.*?)[\'"].*?>|i', get_post_field( 'post_content', $args['post_id'] ), $matches ); + + /* If there is a match for the image, return its URL. */ + if ( isset( $matches ) && $matches[1][0] ) + return array( 'url' => $matches[1][0] ); + + return false; +} + +/** + * Used for setting a default image. The function simply returns the image URL it was + * given in an array. Not used with get_the_image() by default. + * + * @since 0.3 + * @param array $args + * @return array + */ +function image_by_default( $args = array() ) { + return array( 'url' => $args['default_image'] ); +} + +/** + * Formats an image with appropriate alt text and class. Adds a link to the post if argument + * is set. Should only be called if there is an image to display, but will handle it if not. + * + * @since 0.1 + * @param array $args + * @param array $image Array of image info ($image, $classes, $alt, $caption). + * @return string $image Formatted image (w/link to post if the option is set). + */ +function display_the_image( $args = array(), $image = false ) { + + /* If there is no image URL, return false. */ + if ( empty( $image['url'] ) ) + return false; + + /* Extract the arguments for easy-to-use variables. */ + extract( $args ); + + /* If there is alt text, set it. Otherwise, default to the post title. */ + $image_alt = ( ( $image['alt'] ) ? $image['alt'] : apply_filters( 'the_title', get_post_field( 'post_title', $post_id ) ) ); + + /* If there is a width or height, set them as HMTL-ready attributes. */ + $width = ( ( $width ) ? ' width="' . esc_attr( $width ) . '"' : '' ); + $height = ( ( $height ) ? ' height="' . esc_attr( $height ) . '"' : '' ); + + /* Loop through the custom field keys and add them as classes. */ + if ( is_array( $custom_key ) ) { + foreach ( $custom_key as $key ) + $classes[] = str_replace( ' ', '-', strtolower( $key ) ); + } + + /* Add the $size and any user-added $image_class to the class. */ + $classes[] = $size; + $classes[] = $image_class; + + /* Join all the classes into a single string and make sure there are no duplicates. */ + $class = join( ' ', array_unique( $classes ) ); + + /* If there is a $post_thumbnail_id, apply the WP filters normally associated with get_the_post_thumbnail(). */ + if ( $image['post_thumbnail_id'] ) + do_action( 'begin_fetch_post_thumbnail_html', $post_id, $image['post_thumbnail_id'], $size ); + + /* Add the image attributes to the <img /> element. */ + $html = '<img src="' . $image['url'] . '" alt="' . esc_attr( strip_tags( $image_alt ) ) . '" class="' . esc_attr( $class ) . '"' . $width . $height . ' />'; + + /* If $link_to_post is set to true, link the image to its post. */ + if ( $link_to_post ) + $html = '<a href="' . get_permalink( $post_id ) . '" title="' . esc_attr( apply_filters( 'the_title', get_post_field( 'post_title', $post_id ) ) ) . '">' . $html . '</a>'; + + /* If there is a $post_thumbnail_id, apply the WP filters normally associated with get_the_post_thumbnail(). */ + if ( $image['post_thumbnail_id'] ) + do_action( 'end_fetch_post_thumbnail_html', $post_id, $image['post_thumbnail_id'], $size ); + + /* If there is a $post_thumbnail_id, apply the WP filters normally associated with get_the_post_thumbnail(). */ + if ( $image['post_thumbnail_id'] ) + $html = apply_filters( 'post_thumbnail_html', $html, $post_id, $image['post_thumbnail_id'], $size, '' ); + + return $html; +} + +/** + * Deletes the image cache for users that are using a persistent-caching plugin. + * + * @since 0.5 + */ +function get_the_image_delete_cache() { + wp_cache_delete( 'get_the_image' ); +} + +/** + * Get the image with a link to the post. Use get_the_image() instead. + * + * @since 0.1 + * @deprecated 0.3 + */ +function get_the_image_link( $deprecated = '', $deprecated_2 = '', $deprecated_3 = '' ) { + get_the_image(); +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/extensions/get-the-object.php b/wp-content/themes/hybrid/library/extensions/get-the-object.php new file mode 100644 index 0000000000000000000000000000000000000000..ae65fabbfb602da6ca22bb2b98b2a5a6309b1f32 --- /dev/null +++ b/wp-content/themes/hybrid/library/extensions/get-the-object.php @@ -0,0 +1,267 @@ +<?php +/** + * Set of functions to gather objects by custom field. + * Output in XHTML-compliant <object> element. + * + * @copyright 2008 - 2010 + * @version 0.1 + * @author Justin Tadlock + * @link http://justintadlock.com + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * @package GetTheObject + */ + +/** + * Catchall function for getting objects. + * + * @since 0.1 + * @param array $args + * @return string + */ +function get_the_object( $args = array() ) { + global $post; + + $defaults = array( + 'post_id' => $post->ID, + 'custom_key' => array( 'Object', 'Video' ), + 'attachment' => true, + 'default_object' => false, + 'object_scan' => false, + 'src' => false, + 'file' => false, + 'mime_type' => false, + 'class' => 'player', + 'width' => '300', + 'height' => '250', + 'echo' => true + ); + + $args = apply_filters( 'get_the_object_args', $args ); + + $args = wp_parse_args( $args, $defaults ); + extract( $args ); + + if ( $src ) + $object = object_by_file( $args ); + + if ( !$object && $custom_key ) + $object = object_by_custom_field( $args ); + + if ( !$object && $attachment ) + $object = object_by_attachment( $args ); + + if ( !$object && $object_scan ) + $object = object_by_scan( $args ); + + if ( !$object && $default_object ) + $object = object_by_default( $args ); + + if ( $object ) + $object = display_the_object( $args, $object ); + + $object = apply_filters( 'get_the_object', $object ); + + if ( $echo ) + echo $object; + else + return $object; +} + +/** + * Attempt to get a video by custom field + * + * @since 0.1 + * @global $post The current post's DB object. + * @param array $args + * @return string + */ +function object_by_custom_field( $args = array() ) { + + /* If $custom_key is a string, we want to split it by spaces into an array. */ + if ( !is_array( $args['custom_key'] ) ) + $args['custom_key'] = preg_split( '#\s+#', $args['custom_key'] ); + + /* If $custom_key is set, loop through each custom field key, searching for values. */ + if ( isset( $args['custom_key'] ) ) { + foreach ( $args['custom_key'] as $custom ) { + $image = get_metadata( 'post', $args['post_id'], $custom, true ); + if ( $image ) + break; + } + } + + /* If a custom key value has been given for one of the keys, return the URL. */ + if ( $url ) + return array( 'url' => $url ); + + return false; +} + +/** + * Used for generating an object element based on URL. + * + * @since 0.1 + * @param array $args + * @return array + */ +function object_by_file( $args = array() ) { + + if ( $args['src'] ) + return array( 'url' => $args['src'] ); + + return false; +} + +/** + * Check for attachment objects + * If attachments are found, loop through each + * The loop only breaks once $order_of_image is reached + * + * @since 0.1 + * @global $post The current post's DB object. + * @param array $args + * @return array|bool + */ +function object_by_attachment( $args = array() ) { + extract( $args ); + + /* Get attachments. */ + $attachments = get_children( array( 'post_parent' => $post_id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) ); + + if ( empty( $attachments ) ) + return false; + + foreach ( $attachments as $id => $attachment ) { + if ( !wp_attachment_is_image( $id ) ) { + $url = wp_get_attachment_url( $id ); + break; + } + } + + if ( $url ) + return array( 'url' => $url, 'mime_type' => $type ); + + return false; +} + +/** + * Scans the post for objects within the content. + * Not called by default with get_the_object() + * + * @since 0.1 + * @global $post The current post's DB object. + * @param array $args + * @return array|bool + */ +function object_by_scan( $args = array() ) { + + $content = get_post_field( 'post_content', $args['post_id'] ); + + preg_match_all( '|<object.*?data=[\'"](.*?)[\'"].*?>|i', $content, $url ); + + if ( isset( $url ) ) { + $out = array( 'url' => $url[1][0] ); + + preg_match_all( '|<object.*?type=[\'"](.*?)[\'"].*?>|i', $content, $type ); + + if ( isset( $type ) ) + $out['mime_type'] = $type[1][0]; + + return $out; + } + + return false; +} + +/** + * Used for setting a default object. + * Not used with get_the_object() by default. + * + * @since 0.1 + * @param array $args + * @return array|bool + */ +function object_by_default( $args = array() ) { + + if ( $args['default_object'] ) + return array( 'url' => $args['default_object'] ); + + return false; +} + +/** + * Function for displaying a video + * + * @since 0.1 + * @param array $args + * @param array $video_arr + * @return string + */ +function display_the_object( $args, $object ) { + + extract( $args ); + + if ( $object['mime_type'] ) + $mime_type = $object['mime_type']; + if ( !$mime_type ) + $mime_type = get_the_object_mime_type( $object['url'] ); + if ( !$mime_type ) + $mime_type = 'application/x-shockwave-flash'; + + if ( $object['url'] ) { + $player = '<object type="' . $mime_type . '" data="' . $object['url'] . '" class="' . $class . '" width="' . $width . '" height="' . $height . '">'; + $player .= '<param name="movie" value="' . $object['url'] . '" />'; + $player .= '<param name="allowfullscreen" value="true" />'; + $player .= '<param name="wmode" value="transparent" />'; + $player .= '<param name="autoplay" value="false" />'; + $player .= '</object>'; + } + + return $player; +} + +/** + * Uses the video file extension to determine the mime type + * Needs to support more extensions + * + * @since 0.1 + * @param string $video + * @return string + */ +function get_the_object_mime_type( $file ) { + + if ( preg_match( '/\.flv$/', $file ) ) + $mime_type = 'application/x-shockwave-flash'; + + elseif ( preg_match( '/\.mov$/', $file ) ) + $mime_type = 'video/quicktime'; + + elseif ( preg_match( '/\.asf$/', $file ) || preg_match( '/\.wmv$/', $file ) ) + $mime_type = 'video/x-ms-wmv'; + + elseif ( preg_match( '/\.mpg$/', $file ) || preg_match( '/\.mpeg$/', $file ) ) + $mime_type = 'audio/mpeg'; + + elseif ( preg_match( '/\.wma$/', $file ) ) + $mime_type = 'audio/wma'; + + return $mime_type; +} + +/** + * Catchall function for getting objects. + * + * @since 0.1 + * @param array $args + * @return string + */ +function get_the_video( $args = array() ) { + get_the_object( $args ); +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/functions/comments.php b/wp-content/themes/hybrid/library/functions/comments.php new file mode 100644 index 0000000000000000000000000000000000000000..e377abf64e704460c37fbc6a51aae53d3e19687d --- /dev/null +++ b/wp-content/themes/hybrid/library/functions/comments.php @@ -0,0 +1,173 @@ +<?php +/** + * Functions for handling how comments are displayed and used on the site. This allows more + * precise control over their display and makes more filter and action hooks available to developers + * to use in their customizations. + * + * @package Hybrid + * @subpackage Functions + */ + +/** + * Filter the comment form defaults. + * @since 0.8 + */ +add_filter( 'comment_form_defaults', 'hybrid_comment_form_args' ); + +/** + * Arguments for the wp_list_comments_function() used in comments.php. Users can set up a + * custom comments callback function by changing $callback to the custom function. Note that + * $style should remain 'ol' since this is hardcoded into the theme and is the semantically correct + * element to use for listing comments. + * + * @since 0.7 + * @return array $args Arguments for listing comments. + */ +function hybrid_list_comments_args() { + $args = array( 'style' => 'ol', 'type' => 'all', 'avatar_size' => 80, 'callback' => 'hybrid_comments_callback', 'end-callback' => 'hybrid_comments_end_callback' ); + return apply_atomic( 'list_comments_args', $args ); +} + +/** + * Uses the $comment_type to determine which comment template should be used. Once the + * template is located, it is loaded for use. Child themes can create custom templates based off + * the $comment_type. The comment template hierarchy is comment-$comment_type.php, + * comment.php. + * + * The templates are saved in $hybrid->templates[comment_template], so each comment template + * is only located once if it is needed. Following comments will use the saved template. + * + * @since 0.2.3 + * @param $comment The comment variable + * @param $args Array of arguments passed from wp_list_comments() + * @param $depth What level the particular comment is + */ +function hybrid_comments_callback( $comment, $args, $depth ) { + $GLOBALS['comment'] = $comment; + $GLOBALS['comment_depth'] = $depth; + + $comment_type = get_comment_type( $comment->comment_ID ); + + $cache = wp_cache_get( 'comment_template' ); + + if ( !is_array( $cache ) ) + $cache = array(); + + if ( !isset( $cache[$comment_type] ) ) { + $template = locate_template( array( "comment-{$comment_type}.php", 'comment.php' ) ); + + $cache[$comment_type] = $template; + wp_cache_set( 'comment_template', $cache ); + } + + require( $cache[$comment_type] ); +} + +/** + * Ends the display of individual comments. Uses the callback parameter for wp_list_comments(). + * Needs to be used in conjunction with hybrid_comments_callback(). Not needed but used just in + * case something is changed. + * + * @since 0.2.3 + */ +function hybrid_comments_end_callback() { + echo '</li><!-- .comment -->'; +} + +/** + * Displays the avatar for the comment author and wraps it in the comment author's URL if it is + * available. Adds a call to THEME_IMAGES . "/{$comment_type}.png" for the default avatars for + * trackbacks and pingbacks. + * + * @since 0.2 + * @global $comment The current comment's DB object. + * @global $hybrid The global Hybrid object. + */ +function hybrid_avatar() { + global $comment, $hybrid; + + if ( !get_option( 'show_avatars' ) ) + return false; + + /* Get/set some comment variables. */ + $comment_type = get_comment_type( $comment->comment_ID ); + $author = esc_html( get_comment_author( $comment->comment_ID ) ); + $url = esc_url( get_comment_author_url( $comment->comment_ID ) ); + + if ( 'pingback' == $comment_type || 'trackback' == $comment_type ) + $default_avatar = THEME_IMAGES . "/{$comment_type}.png"; + + $default_avatar = apply_filters( "{$hybrid->prefix}_{$comment_type}_avatar", $default_avatar ); + + $comment_list_args = hybrid_list_comments_args(); + $size = ( ( $comment_list_args['avatar_size'] ) ? $comment_list_args['avatar_size'] : 80 ); + + $avatar = get_avatar( get_comment_author_email( $comment->comment_ID ), absint( $size ), $default_avatar, $author ); + + /* If URL input, wrap avatar in hyperlink. */ + if ( $url ) + $avatar = '<a href="' . $url . '" rel="external nofollow" title="' . $author . '">' . $avatar . '</a>'; + + echo apply_filters( "{$hybrid->prefix}_avatar", $avatar ); +} + +/** + * Function for displaying a comment's metadata. + * + * @since 0.7 + * @param string $metadata Custom metadata to use. + * @global $comment The global comment object. + * @global $post The global post object. + */ +function hybrid_comment_meta( $metadata = '' ) { + global $comment, $post; + + if ( !$metadata ) + $metadata = '[comment-author] [comment-published] [comment-permalink before="| "] [comment-edit-link before="| "] [comment-reply-link before="| "]'; + + $metadata = '<div class="comment-meta comment-meta-data">' . $metadata . '</div>'; + + echo do_shortcode( apply_filters( hybrid_get_prefix() . '_comment_meta', $metadata ) ); +} + +/** + * Filters the WordPress comment_form() function that was added in WordPress 3.0. This allows + * the theme to preserve some backwards compatibility with its old comment form. It also allows + * users to build custom comment forms by filtering 'comment_form_defaults' in their child theme. + * + * @since 0.8 + * @param array $args The default comment form arguments. + * @return array $args The filtered comment form arguments. + */ +function hybrid_comment_form_args( $args ) { + global $user_identity; + + $domain = hybrid_get_textdomain(); + $commenter = wp_get_current_commenter(); + $req = ( ( get_option( 'require_name_email' ) ) ? ' <span class="required">' . __( '*', $domain ) . '</span> ' : '' ); + + $fields = array( + 'author' => '<p class="form-author"><label for="author">' . __( 'Name', $domain ) . $req . '</label> <input type="text" class="text-input" name="author" id="author" value="' . esc_attr( $commenter['comment_author'] ) . '" size="40" tabindex="1" /></p>', + 'email' => '<p class="form-email"><label for="email">' . __( 'Email', $domain ) . $req . '</label> <input type="text" class="text-input" name="email" id="email" value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="40" tabindex="2" /></p>', + 'url' => '<p class="form-url"><label for="url">' . __( 'Website', $domain ) . '</label><input type="text" class="text-input" name="url" id="url" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="40" tabindex="3" /></p>' + ); + + $args = array( + 'fields' => apply_filters( 'comment_form_default_fields', $fields ), + 'comment_field' => '<p class="form-textarea"><label for="comment">' . __( 'Comment', $domain ) . '</label><textarea name="comment" id="comment" cols="60" rows="10" tabindex="4"></textarea></p>', + 'must_log_in' => '<p class="alert">' . sprintf( __( 'You must be <a href="%1$s" title="Log in">logged in</a> to post a comment.', $domain ), wp_login_url( get_permalink() ) ) . '</p><!-- .alert -->', + 'logged_in_as' => '<p class="log-in-out">' . sprintf( __( 'Logged in as <a href="%1$s" title="%2$s">%2$s</a>.', $domain ), admin_url( 'profile.php' ), $user_identity ) . ' <a href="' . wp_logout_url( get_permalink() ) . '" title="' . __( 'Log out of this account', $domain ) . '">' . __( 'Log out »', $domain ) . '</a></p><!-- .log-in-out -->', + 'comment_notes_before' => '', + 'comment_notes_after' => '', + 'id_form' => 'commentform', + 'id_submit' => 'submit', + 'title_reply' => __( 'Leave a Reply', $domain ), + 'title_reply_to' => __( 'Leave a Reply to %s', $domain ), + 'cancel_reply_link' => __( 'Click here to cancel reply.', $domain ), + 'label_submit' => __( 'Submit', $domain ), + ); + + return $args; +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/functions/context.php b/wp-content/themes/hybrid/library/functions/context.php new file mode 100644 index 0000000000000000000000000000000000000000..b58f5893a78b6072b4da6d0e6cc35dd1353599b5 --- /dev/null +++ b/wp-content/themes/hybrid/library/functions/context.php @@ -0,0 +1,384 @@ +<?php +/** + * Functions for making various theme elements context-aware. This controls things such as the + * <body> and entry CSS classes as well as contextual hooks. By using a context, developers and + * users can create page-specific code. + * + * Many of the ideas behind context-aware functions originated with the great Sandbox theme. + * @link http://www.plaintxt.org/themes/sandbox + * + * @package Hybrid + * @subpackage Functions + */ + +/** + * Hybrid's main contextual function. This allows code to be used more than once without running + * hundreds of conditional checks within the theme. It returns an array of contexts based on what + * page a visitor is currently viewing on the site. This function is useful for making dynamic/contextual + * classes, action and filter hooks, and handling the templating system. + * + * Note that time and date can be tricky because any of the conditionals may be true on time-/date- + * based archives depending on several factors. For example, one could load an archive for a specific + * second during a specific minute within a specific hour on a specific day and so on. + * + * @since 0.7 + * @global $wp_query The current page's query object. + * @global $hybrid The global Hybrid object. + * @return array $hybrid->context Several contexts based on the current page. + */ +function hybrid_get_context() { + global $wp_query, $hybrid; + + /* If $hybrid->context has been set, don't run through the conditionals again. Just return the variable. */ + if ( is_array( $hybrid->context ) ) + return $hybrid->context; + + $hybrid->context = array(); + + /* Front page of the site. */ + if ( is_front_page() ) + $hybrid->context[] = 'home'; + + /* Blog page. */ + if ( is_home() ) { + $hybrid->context[] = 'blog'; + } + + /* Singular views. */ + elseif ( is_singular() ) { + $hybrid->context[] = 'singular'; + $hybrid->context[] = "singular-{$wp_query->post->post_type}"; + $hybrid->context[] = "singular-{$wp_query->post->post_type}-{$wp_query->post->ID}"; + } + + /* Archive views. */ + elseif ( is_archive() ) { + $hybrid->context[] = 'archive'; + + /* Taxonomy archives. */ + if ( is_tax() || is_category() || is_tag() ) { + $term = $wp_query->get_queried_object(); + $hybrid->context[] = 'taxonomy'; + $hybrid->context[] = $term->taxonomy; + $hybrid->context[] = "{$term->taxonomy}-" . sanitize_html_class( $term->slug, $term->term_id ); + } + + /* User/author archives. */ + elseif ( is_author() ) { + $hybrid->context[] = 'user'; + $hybrid->context[] = 'user-' . sanitize_html_class( get_the_author_meta( 'user_nicename', get_query_var( 'author' ) ), $wp_query->get_queried_object_id() ); + } + + /* Time/Date archives. */ + else { + if ( is_date() ) { + $hybrid->context[] = 'date'; + if ( is_year() ) + $hybrid->context[] = 'year'; + if ( is_month() ) + $hybrid->context[] = 'month'; + if ( get_query_var( 'w' ) ) + $hybrid->context[] = 'week'; + if ( is_day() ) + $hybrid->context[] = 'day'; + } + if ( is_time() ) { + $hybrid->context[] = 'time'; + if ( get_query_var( 'hour' ) ) + $hybrid->context[] = 'hour'; + if ( get_query_var( 'minute' ) ) + $hybrid->context[] = 'minute'; + } + } + } + + /* Search results. */ + elseif ( is_search() ) { + $hybrid->context[] = 'search'; + } + + /* Error 404 pages. */ + elseif ( is_404() ) { + $hybrid->context[] = 'error-404'; + } + + return $hybrid->context; +} + +/** + * Creates a set of classes for each site entry upon display. Each entry is given the class of + * 'hentry'. Posts are given category, tag, and author classes. Alternate post classes of odd, + * even, and alt are added. + * + * @since 0.5 + * @global $post The current post's DB object. + * @param string|array $class Additional classes for more control. + * @return string $class + */ +function hybrid_entry_class( $class = '' ) { + global $post; + static $post_alt; + + /* Add hentry for microformats compliance and the post type. */ + $classes = array( 'hentry', $post->post_type, $post->post_status ); + + /* Post alt class. */ + $classes[] = 'post-' . ++$post_alt; + $classes[] = ( $post_alt % 2 ) ? 'odd' : 'even alt'; + + /* Author class. */ + $classes[] = 'author-' . sanitize_html_class( get_the_author_meta( 'user_nicename' ), get_the_author_meta( 'ID' ) ); + + /* Sticky class (only on home/blog page). */ + if ( is_home() && is_sticky() ) + $classes[] = 'sticky'; + + /* Password-protected posts. */ + if ( post_password_required() ) + $classes[] = 'protected'; + + /* Add category and post tag terms as classes. */ + if ( 'post' == $post->post_type ) { + + foreach ( array( 'category', 'post_tag' ) as $tax ) { + + foreach ( (array)get_the_terms( $post->ID, $tax ) as $term ) { + if ( !empty( $term->slug ) ) + $classes[] = $tax . '-' . sanitize_html_class( $term->slug, $term->term_id ); + } + } + } + + /* User-created classes. */ + if ( !empty( $class ) ) { + if ( !is_array( $class ) ) + $class = preg_split( '#\s+#', $class ); + $classes = array_merge( $classes, $class ); + } + + /* Join all the classes into one string and echo them. */ + $class = join( ' ', $classes ); + + echo apply_atomic( 'entry_class', $class ); +} + +/** + * Sets a class for each comment. Sets alt, odd/even, and author/user classes. Adds author, user, + * and reader classes. Needs more work because WP, by default, assigns even/odd backwards + * (Odd should come first, even second). + * + * @since 0.2 + * @global $wpdb WordPress DB access object. + * @global $comment The current comment's DB object. + */ +function hybrid_comment_class() { + global $post, $comment, $hybrid; + + /* Gets default WP comment classes. */ + $classes = get_comment_class(); + + /* Get the comment type. */ + $classes[] = get_comment_type(); + + /* User classes to match user role and user. */ + if ( $comment->user_id > 0 ) { + + /* Create new user object. */ + $user = new WP_User( $comment->user_id ); + + /* Set a class with the user's role. */ + if ( is_array( $user->roles ) ) { + foreach ( $user->roles as $role ) + $classes[] = "role-{$role}"; + } + + /* Set a class with the user's name. */ + $classes[] = 'user-' . sanitize_html_class( $user->user_nicename, $user->user_id ); + } + + /* If not a registered user */ + else { + $classes[] = 'reader'; + } + + /* Comment by the entry/post author. */ + if ( $post = get_post( $post_id ) ) { + if ( $comment->user_id === $post->post_author ) + $classes[] = 'entry-author'; + } + + /* Join all the classes into one string and echo them. */ + $class = join( ' ', $classes ); + + echo apply_filters( "{$hybrid->prefix}_comment_class", $class ); +} + +/** + * Provides classes for the <body> element depending on page context. + * + * @since 0.1 + * @uses $wp_query + * @param string|array $class Additional classes for more control. + * @return string + */ +function hybrid_body_class( $class = '' ) { + global $wp_query, $is_lynx, $is_gecko, $is_IE, $is_opera, $is_NS4, $is_safari, $is_chrome; + + /* Text direction (which direction does the text flow). */ + $classes = array( 'wordpress', get_bloginfo( 'text_direction' ), get_locale() ); + + /* Layout class. */ + if ( ( current_theme_supports( 'post-layouts' ) || 'hybrid' == get_stylesheet() ) && is_singular() ) { + $layout = get_post_meta( $wp_query->post->ID, 'Layout', true ); + if ( !empty( $layout ) ) + $classes[] = 'layout-' . strip_tags( esc_attr( $layout ) ); + } + + /* Date classes. */ + $time = time() + ( get_option( 'gmt_offset' ) * 3600 ); + $classes[] = strtolower( gmdate( '\yY \mm \dd \hH l', $time ) ); + + /* Is the current user logged in. */ + $classes[] = ( is_user_logged_in() ) ? 'logged-in' : 'not-logged-in'; + + /* Merge base contextual classes with $classes. */ + $classes = array_merge( $classes, hybrid_get_context() ); + + /* Singular post (post_type) classes. */ + if ( is_singular() ) { + + /* Checks for custom template. */ + $template = str_replace( array ( "{$wp_query->post->post_type}-", "{$wp_query->post->post_type}-template-", '.php' ), '', get_post_meta( $wp_query->post->ID, "_wp_{$wp_query->post->post_type}_template", true ) ); + if ( $template ) { + //$template = str_replace( ), '', $template ); + $classes[] = "{$wp_query->post->post_type}-template-{$template}"; + } + + /* Attachment mime types. */ + if ( is_attachment() ) { + foreach ( explode( '/', get_post_mime_type() ) as $type ) + $classes[] = "attachment-{$type}"; + } + + /* Deprecated classes. */ + elseif ( is_page() ) + $classes[] = "page-{$wp_query->post->ID}"; // Use singular-page-ID + elseif ( is_singular( 'post' ) ) + $classes[] = "single-{$wp_query->post->ID}"; // Use singular-post-ID + } + + /* Paged views. */ + if ( ( ( $page = $wp_query->get( 'paged' ) ) || ( $page = $wp_query->get( 'page' ) ) ) && $page > 1 ) { + $page = intval( $page ); + $classes[] = 'paged paged-' . $page; + } + + /* Browser detection. */ + $browsers = array( 'gecko' => $is_gecko, 'opera' => $is_opera, 'lynx' => $is_lynx, 'ns4' => $is_NS4, 'safari' => $is_safari, 'chrome' => $is_chrome, 'msie' => $is_IE ); + foreach ( $browsers as $key => $value ) { + if ( $value ) { + $classes[] = $key; + break; + } + } + + /* Hybrid theme widgets detection. */ + foreach ( array( 'primary', 'secondary', 'subsidiary' ) as $sidebar ) + $classes[] = ( is_active_sidebar( $sidebar ) ) ? "{$sidebar}-active" : "{$sidebar}-inactive"; + + if ( in_array( 'primary-inactive', $classes ) && in_array( 'secondary-inactive', $classes ) && in_array( 'subsidiary-inactive', $classes ) ) + $classes[] = 'no-widgets'; + + /* Input class. */ + if ( !empty( $class ) ) { + if ( !is_array( $class ) ) + $class = preg_split( '#\s+#', $class ); + $classes = array_merge( $classes, $class ); + } + + /* Join all the classes into one string. */ + $class = join( ' ', $classes ); + + /* Print the body class. */ + echo apply_atomic( 'body_class', $class ); +} + +/** + * Function for handling what the browser/search engine title should be. Tries to handle every + * situation to make for the best SEO. + * + * @since 0.1 + * @global $wp_query + */ +function hybrid_document_title() { + global $wp_query; + + $domain = hybrid_get_textdomain(); + + $separator = ':'; + + if ( is_front_page() && is_home() ) + $doctitle = get_bloginfo( 'name' ) . $separator . ' ' . get_bloginfo( 'description' ); + + elseif ( is_home() || is_singular() ) { + $id = $wp_query->get_queried_object_id(); + + $doctitle = get_post_meta( $id, 'Title', true ); + + if ( !$doctitle && is_front_page() ) + $doctitle = get_bloginfo( 'name' ) . $separator . ' ' . get_bloginfo( 'description' ); + elseif ( !$doctitle ) + $doctitle = get_post_field( 'post_title', $id ); + } + + elseif ( is_archive() ) { + + if ( is_category() || is_tag() || is_tax() ) { + $term = $wp_query->get_queried_object(); + $doctitle = $term->name; + } + + elseif ( is_author() ) + $doctitle = get_the_author_meta( 'display_name', get_query_var( 'author' ) ); + + elseif ( is_date () ) { + if ( get_query_var( 'minute' ) && get_query_var( 'hour' ) ) + $doctitle = sprintf( __( 'Archive for %1$s', $domain ), get_the_time( __( 'g:i a', $domain ) ) ); + + elseif ( get_query_var( 'minute' ) ) + $doctitle = sprintf( __( 'Archive for minute %1$s', $domain ), get_the_time( __( 'i', $domain ) ) ); + + elseif ( get_query_var( 'hour' ) ) + $doctitle = sprintf( __( 'Archive for %1$s', $domain ), get_the_time( __( 'g a', $domain ) ) ); + + elseif ( is_day() ) + $doctitle = sprintf( __( 'Archive for %1$s', $domain ), get_the_time( __( 'F jS, Y', $domain ) ) ); + + elseif ( get_query_var( 'w' ) ) + $doctitle = sprintf( __( 'Archive for week %1$s of %2$s', $domain ), get_the_time( __( 'W', $domain ) ), get_the_time( __( 'Y', $domain ) ) ); + + elseif ( is_month() ) + $doctitle = sprintf( __( 'Archive for %1$s', $domain ), single_month_title( ' ', false) ); + + elseif ( is_year() ) + $doctitle = sprintf( __( 'Archive for %1$s', $domain ), get_the_time( __( 'Y', $domain ) ) ); + } + } + + elseif ( is_search() ) + $doctitle = sprintf( __( 'Search results for "%1$s"', $domain ), esc_attr( get_search_query() ) ); + + elseif ( is_404() ) + $doctitle = __( '404 Not Found', $domain ); + + /* If paged. */ + if ( ( ( $page = $wp_query->get( 'paged' ) ) || ( $page = $wp_query->get( 'page' ) ) ) && $page > 1 ) + $doctitle = sprintf( __( '%1$s Page %2$s', $domain ), $doctitle . $separator, $page ); + + /* Apply the wp_title filters so we're compatible with plugins. */ + $doctitle = apply_filters( 'wp_title', $doctitle, $separator, '' ); + + echo apply_atomic( 'document_title', esc_attr( $doctitle ) ); +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/functions/core.php b/wp-content/themes/hybrid/library/functions/core.php new file mode 100644 index 0000000000000000000000000000000000000000..26bee29e4f4074b0c21185fd986c5fa619b41fd4 --- /dev/null +++ b/wp-content/themes/hybrid/library/functions/core.php @@ -0,0 +1,178 @@ +<?php +/** + * The core functions file for the Hybrid framework. Functions defined here are generally + * used across the entire framework to make various tasks faster. This file should be loaded + * prior to any other files because its functions are needed to run the framework. + * + * @package Hybrid + * @subpackage Functions + */ + +/** + * Defines the theme prefix. This allows developers to infinitely change the theme. In theory, + * one could use the Hybrid core to create their own theme or filter 'hybrid_prefix' with a + * plugin to make it easier to use hooks across multiple themes without having to figure out + * each theme's hooks (assuming other themes used the same system). + * + * @since 0.7 + * @uses get_template() Defines the theme prefix, which is generally 'hybrid'. + * @global object $hybrid The global Hybrid object. + * @return string $hybrid->prefix The prefix of the theme. + */ +function hybrid_get_prefix() { + global $hybrid; + + /* If the global prefix isn't set, define it. Plugin/theme authors may also define a custom prefix. */ + if ( empty( $hybrid->prefix ) ) + $hybrid->prefix = apply_filters( 'hybrid_prefix', get_template() ); + + return $hybrid->prefix; +} + +/** + * Defines the theme textdomain. This allows the framework to recognize the proper textdomain + * of the theme. Theme developers building from the framework should use their template name + * (i.e., directory name) as their textdomain within template files. + * + * @since 0.7 + * @uses get_template() Defines the theme textdomain, which is generally 'hybrid'. + * @global object $hybrid The global Hybrid object. + * @return string $hybrid->textdomain The textdomain of the theme. + */ +function hybrid_get_textdomain() { + global $hybrid; + + /* If the global textdomain isn't set, define it. Plugin/theme authors may also define a custom textdomain. */ + if ( empty( $hybrid->textdomain ) ) + $hybrid->textdomain = apply_filters( hybrid_get_prefix() . '_textdomain', get_template() ); + + return $hybrid->textdomain; +} + +/** + * Adds contextual action hooks to the theme. This allows users to easily add context-based content + * without having to know how to use WordPress conditional tags. The theme handles the logic. + * + * An example of a basic hook would be 'hybrid_header'. The do_atomic() function extends that to + * give extra hooks such as 'hybrid_singular_header', 'hybrid_singular-post_header', and + * 'hybrid_singular-post-ID_header'. + * + * Major props to Ptah Dunbar for the do_atomic() function. + * @link http://ptahdunbar.com/wordpress/smarter-hooks-context-sensitive-hooks + * + * @since 0.7 + * @uses hybrid_get_prefix() Gets the theme prefix. + * @uses hybrid_get_context() Gets the context of the current page. + * @param string $tag Usually the location of the hook but defines what the base hook is. + */ +function do_atomic( $tag = '' ) { + if ( !$tag ) + return false; + + /* Get the theme prefix. */ + $pre = hybrid_get_prefix(); + + /* Do actions on the basic hook. */ + do_action( "{$pre}_{$tag}" ); + + /* Loop through context array and fire actions on a contextual scale. */ + foreach ( (array)hybrid_get_context() as $context ) + do_action( "{$pre}_{$context}_{$tag}" ); +} + +/** + * Adds contextual filter hooks to the theme. This allows users to easily filter context-based content + * without having to know how to use WordPress conditional tags. The theme handles the logic. + * + * An example of a basic hook would be 'hybrid_entry_meta'. The apply_atomic() function extends + * that to give extra hooks such as 'hybrid_singular_entry_meta', 'hybrid_singular-post_entry_meta', + * and 'hybrid_singular-post-ID_entry_meta'. + * + * @since 0.7 + * @uses hybrid_get_prefix() Gets the theme prefix. + * @uses hybrid_get_context() Gets the context of the current page. + * @param string $tag Usually the location of the hook but defines what the base hook is. + * @param mixed $value The value to be filtered. + * @return mixed $value The value after it has been filtered. + */ +function apply_atomic( $tag = '', $value = '' ) { + if ( !$tag ) + return false; + + /* Get theme prefix. */ + $pre = hybrid_get_prefix(); + + /* Apply filters on the basic hook. */ + $value = apply_filters( "{$pre}_{$tag}", $value ); + + /* Loop through context array and apply filters on a contextual scale. */ + foreach ( (array)hybrid_get_context() as $context ) + $value = apply_filters( "{$pre}_{$context}_{$tag}", $value ); + + /* Return the final value once all filters have been applied. */ + return $value; +} + +/** + * Wraps the output of apply_atomic() in a call to do_shortcode(). This allows developers to use + * context-aware functionality alongside shortcodes. Rather than adding a lot of code to the + * function itself, developers can create individual functions to handle shortcodes. + * + * @since 0.7 + * @param string $tag Usually the location of the hook but defines what the base hook is. + * @param mixed $value The value to be filtered. + * @return mixed $value The value after it has been filtered. + */ +function apply_atomic_shortcode( $tag = '', $value = '' ) { + return do_shortcode( apply_atomic( $tag, $value ) ); +} + +/** + * Loads the Hybrid theme settings once and allows the input of the specific field the user would + * like to show. Hybrid theme settings are added with 'autoload' set to 'yes', so the settings are + * only loaded once on each page load. + * + * @since 0.7 + * @uses get_option() Gets an option from the database. + * @uses hybrid_get_prefix() Gets the prefix of the theme. + * @global object $hybrid The global Hybrid object. + * @global array $hybrid_settings Deprecated. Developers should use hybrid_get_setting(). + * @param string $option The specific theme setting the user wants. + * @return string|int|array $settings[$option] Specific setting asked for. + */ +function hybrid_get_setting( $option = '' ) { + global $hybrid, $hybrid_settings; + + if ( !$option ) + return false; + + if ( !is_array( $hybrid->settings ) ) + $hybrid->settings = $hybrid_settings = get_option( hybrid_get_prefix() . '_theme_settings' ); + + return $hybrid->settings[$option]; +} + +/** + * The theme can save multiple things in a transient to help speed up page load times. We're + * setting a default of 12 hours or 43,200 seconds (60 * 60 * 12). + * + * @since 0.8 + * @return int Transient expiration time in seconds. + */ +function hybrid_get_transient_expiration() { + return apply_filters( hybrid_get_prefix() . '_transient_expiration', 43200 ); +} + +/** + * Function for formatting a hook name if needed. It automatically adds the theme's prefix to + * the hook, and it will add a context (or any variable) if it's given. + * + * @since 0.7 + * @param string $tag The basic name of the hook (e.g., 'before_header'). + * @param string $context A specific context/value to be added to the hook. + */ +function hybrid_format_hook( $tag, $context = '' ) { + return hybrid_get_prefix() . ( ( !empty( $context ) ) ? "_{$context}" : "" ). "_{$tag}"; +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/functions/hooks-actions.php b/wp-content/themes/hybrid/library/functions/hooks-actions.php new file mode 100644 index 0000000000000000000000000000000000000000..58c39591e738824884d4205956f2f1932510e4ac --- /dev/null +++ b/wp-content/themes/hybrid/library/functions/hooks-actions.php @@ -0,0 +1,248 @@ +<?php +/** + * Defines many of the action hooks avialable throughout the theme. Rather than apply the action + * hook directly in template files, most have accompanying functions that serve as wrappers, which + * allows for changes in the future. + * + * Most action hooks will use the do_atomic() function, which creates contextual action hooks. + * + * Action hooks should be defined and named by the order called (generated) relative to a theme element. + * Most 'before' action hooks appear just inside of the opening XHTML element it's named after. + * Most 'after' action hooks appear just inside of the closing XHTML element it's named after. + * @link http://themehybrid.com/themes/hybrid/hooks/actions + * + * @package Hybrid + * @subpackage Functions + */ + +/** + * Before HTML. Loaded just after <body> but before any content is displayed. + * @since 0.3.2 + */ +function hybrid_before_html() { + do_atomic( 'before_html' ); +} + +/** + * After HTML. + * Loaded just before </body> and after all content. + * @since 0.3.2 + */ +function hybrid_after_html() { + do_atomic( 'after_html' ); +} + +/** + * Added to the header before wp_head(). + * @since 0.1 + */ +function hybrid_head() { + do_atomic( 'head' ); +} + +/** + * Before the header. + * @since 0.1 + */ +function hybrid_before_header() { + do_atomic( 'before_header' ); +} + +/** + * Header. + * @since 0.1 + */ +function hybrid_header() { + do_atomic( 'header' ); +} + +/** + * After the header. + * @since 0.1 + */ +function hybrid_after_header() { + do_atomic( 'after_header' ); +} + +/** + * Before primary menu. + * @since 0.8 + */ +function hybrid_before_primary_menu() { + do_atomic( 'before_primary_menu' ); +} + +/** + * After primary menu. + * @since 0.8 + */ +function hybrid_after_primary_menu() { + do_atomic( 'after_primary_menu' ); +} + +/** + * Before the container. + * @since 0.1 + */ +function hybrid_before_container() { + do_atomic( 'before_container' ); +} + +/** + * Before the content. + * @since 0.1 + */ +function hybrid_before_content() { + do_atomic( 'before_content' ); +} + +/** + * After the content. + * @since 0.1 + */ +function hybrid_after_content() { + do_atomic( 'after_content' ); +} + +/** + * Before each entry. + * @since 0.5 + */ +function hybrid_before_entry() { + do_atomic( 'before_entry' ); +} + +/** + * After each entry. + * @since 0.5 + */ +function hybrid_after_entry() { + do_atomic( 'after_entry' ); +} + +/** + * After singular views but before the comments template. + * @since 0.7 + */ +function hybrid_after_singular() { + if ( is_singular( 'post' ) && !is_attachment() ) + do_action( 'hybrid_after_single' ); // Deprecated + elseif ( is_page() ) + do_action( 'hybrid_after_page' ); // Deprecated + + do_atomic( 'after_singular' ); +} + +/** + * Before the primary widget area content. Only called if Primary is active. + * @since 0.1 + */ +function hybrid_before_primary() { + do_atomic( 'before_primary' ); +} + +/** + * After the primary widget area content. Only called if Primary is active. + * @since 0.1 + */ +function hybrid_after_primary() { + do_atomic( 'after_primary' ); +} + +/** + * Before the secondary widget area. Only called if Secondary is active. + * @since 0.2 + */ +function hybrid_before_secondary() { + do_atomic( 'before_secondary' ); +} + +/** + * After the secondary widget area. Only called if Secondary is active. + * @since 0.2 + */ +function hybrid_after_secondary() { + do_atomic( 'after_secondary' ); +} + +/** + * Before the subsidiary widget area. Only called if Subsidiary is active. + * @since 0.3.1 + */ +function hybrid_before_subsidiary() { + do_atomic( 'before_subsidiary' ); +} + +/** + * After the subsidiary widget area. Only called if Subsidiary is active. + * @since 0.3.1 + */ +function hybrid_after_subsidiary() { + do_atomic( 'after_subsidiary' ); +} + +/** + * After the container area. + * @since 0.1 + */ +function hybrid_after_container() { + do_atomic( 'after_container' ); +} + +/** + * Before the footer. + * @since 0.1 + */ +function hybrid_before_footer() { + do_atomic( 'before_footer' ); +} + +/** + * The footer. + * @since 0.1 + */ +function hybrid_footer() { + do_atomic( 'footer' ); +} + +/** + * After the footer. + * @since 0.1 + */ +function hybrid_after_footer() { + do_atomic( 'after_footer' ); +} + +/** + * Fires before each comment's information. + * @since 0.5 + */ +function hybrid_before_comment() { + do_atomic( 'before_comment' ); +} + +/** + * Fires after each comment's information. + * @since 0.5 + */ +function hybrid_after_comment() { + do_atomic( 'after_comment' ); +} + +/** + * Fires before the comment list. + * @since 0.6 + */ +function hybrid_before_comment_list() { + do_atomic( 'before_comment_list' ); +} + +/** + * Fires after the comment list. + * @since 0.6 + */ +function hybrid_after_comment_list() { + do_atomic( 'after_comment_list' ); +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/functions/hooks-filters.php b/wp-content/themes/hybrid/library/functions/hooks-filters.php new file mode 100644 index 0000000000000000000000000000000000000000..aded61c5a208d427417b1ee7536ab0c5352b53e9 --- /dev/null +++ b/wp-content/themes/hybrid/library/functions/hooks-filters.php @@ -0,0 +1,366 @@ +<?php +/** + * Filterable content available throughout the theme. This file has many of the theme's + * filter hooks, but filter hooks are not limited to this one file. + * + * Most filter hooks will use the apply_atomic() function, which creates contextual filter hooks. + * + * @link http://codex.wordpress.org/Function_Reference/add_filter + * @link http://themehybrid.com/themes/hybrid/hooks/filters + * + * @package Hybrid + * @subpackage Functions + */ + +/** + * Adds the correct DOCTYPE to the theme. Defaults to XHTML 1.0 Strict. + * Child themes can overwrite this with the hybrid_doctype filter. + * + * @since 0.4 + */ +function hybrid_doctype() { + if ( !preg_match( "/MSIE 6.0/", esc_attr( $_SERVER['HTTP_USER_AGENT'] ) ) ) + $doctype = '<' . '?xml version="1.0" encoding="' . get_bloginfo( 'charset' ) . '"?>' . "\n"; + + $doctype .= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' . "\n"; + echo apply_atomic( 'doctype', $doctype ); +} + +/** + * Shows the content type in the header. Gets the site's defined HTML type + * and charset. Can be overwritten with the hybrid_meta_content_type filter. + * + * @since 0.4 + */ +function hybrid_meta_content_type() { + $content_type = '<meta http-equiv="Content-Type" content="' . get_bloginfo( 'html_type' ) . '; charset=' . get_bloginfo( 'charset' ) . '" />' . "\n"; + echo apply_atomic( 'meta_content_type', $content_type ); +} + +/** + * Generates the relevant template info. Adds template meta with theme version. + * Uses the theme name and version from style.css. In 0.6, added the hybrid_meta_template + * filter hook. + * + * @since 0.4 + */ +function hybrid_meta_template() { + $data = get_theme_data( TEMPLATEPATH . '/style.css' ); + $template = '<meta name="template" content="' . esc_attr( "{$data['Title']} {$data['Version']}" ) . '" />' . "\n"; + echo apply_atomic( 'meta_template', $template ); +} + +/** + * Sets the default meta robots setting. If private, don't send meta info to the + * header. Runs the hybrid_meta_robots filter hook at the end. + * + * @since 0.2.3 + */ +function hybrid_meta_robots() { + if ( !get_option( 'blog_public' ) ) + return; + + $robots = '<meta name="robots" content="index,follow" />' . "\n"; + echo apply_atomic( 'meta_robots', $robots ); +} + +/** + * Generates the meta author. On single posts and pages, use the author's name. + * On the home page, use all authors. The hybrid_meta_author filter added in 0.6. + * + * @since 0.3.3 + */ +function hybrid_meta_author() { + global $wp_query; + + if ( is_singular() ) + $author = get_the_author_meta( 'display_name', $wp_query->post->post_author ); + + if ( $author ) + $author = '<meta name="author" content="' . esc_attr( $author ) . '" />' . "\n"; + + echo apply_atomic( 'meta_author', $author ); +} + +/** + * Add the meta tag for copyright information to the header. Single + * posts and pages should display the date written. All other pages will + * show the current year. The hybrid_meta_copyright filter added in 0.6. + * + * @since 0.4 + */ +function hybrid_meta_copyright() { + $domain = hybrid_get_textdomain(); + + if ( is_singular() ) + $date = get_the_time( __( 'F Y', $domain ) ); + else + $date = date( __( 'Y', $domain ) ); + + $copyright = '<meta name="copyright" content="' . sprintf( esc_attr__( 'Copyright (c) %1$s', $domain ), $date ) . '" />' . "\n"; + echo apply_atomic( 'meta_copyright', $copyright ); +} + +/** + * Add the revised meta tag on single posts and pages. This shows the + * last time the post/page was modified. The hybrid_meta_revised filter + * added in 0.6. + * + * @since 0.4 + */ +function hybrid_meta_revised() { + if ( is_singular() ) + $revised = '<meta name="revised" content="' . get_the_modified_time( esc_attr__( 'l, F jS, Y, g:i a', hybrid_get_textdomain() ) ) . '" />' . "\n"; + echo apply_atomic( 'meta_revised', $revised ); +} + +/** + * Generates the meta description. Checks theme settings for indexing, title, + * and meta settings. Customize this with the hybrid_meta_description filter. + * + * @since 0.2.3 + */ +function hybrid_meta_description() { + global $wp_query; + + if ( is_home() ) { + $description = get_bloginfo( 'description' ); + } + + elseif ( is_singular() ) { + $description = get_metadata( 'post', $wp_query->post->ID, 'Description', true ); + + if ( empty( $description ) && is_front_page() ) + $description = get_bloginfo( 'description' ); + + elseif ( empty( $description ) ) + $description = get_post_field( 'post_excerpt', $wp_query->post->ID ); + } + + elseif ( is_archive() ) { + + if ( is_author() ) + $description = get_the_author_meta( 'description', get_query_var( 'author' ) ); + + elseif ( is_category() || is_tag() || is_tax() ) + $description = term_description( '', get_query_var( 'taxonomy' ) ); + } + + /* Format the meta description. */ + if ( !empty( $description ) ) + $description = '<meta name="description" content="' . str_replace( array( "\r", "\n", "\t" ), '', esc_attr( strip_tags( $description ) ) ) . '" />' . "\n"; + + echo apply_atomic( 'meta_description', $description ); +} + +/** + * Generates meta keywords/tags for the site. Checks theme settings. + * Checks indexing settings. Customize with the hybrid_meta_keywords filter. + * + * @since 0.2.3 + */ +function hybrid_meta_keywords() { + global $wp_query; + + /* If on a single post, check for custom field key Keywords and taxonomies. */ + if ( is_singular() && !is_preview() ) { + $keywords = get_post_meta( $wp_query->post->ID, 'Keywords', true ); + + if ( empty( $keywords ) ) { + $taxonomies = get_object_taxonomies( $wp_query->post->post_type ); + + if ( is_array( $taxonomies ) ) { + foreach ( $taxonomies as $tax ) { + if ( $terms = get_the_term_list( $wp_query->post->ID, $tax, '', ', ', '' ) ) + $keywords[] = $terms; + } + } + + if ( !empty( $keywords ) ) + $keywords = join( ', ', $keywords ); + } + } + + /* If we have keywords, join them together into one string and format for output. */ + if ( !empty( $keywords ) ) + $keywords = '<meta name="keywords" content="' . esc_attr( strip_tags( $keywords ) ) . '" />' . "\n"; + + echo apply_atomic( 'meta_keywords', $keywords ); +} + +/** + * Checks for a user-uploaded favicon in the child theme's /images folder. If it + * exists, display the <link> element for it. + * + * @since 0.4 + */ +function hybrid_favicon() { + if ( file_exists( CHILD_THEME_DIR . '/images/favicon.ico' ) ) + $favicon = '<link rel="shortcut icon" type="image/x-icon" href="' . CHILD_THEME_URI . '/images/favicon.ico" />' . "\n"; + echo apply_atomic( 'favicon', $favicon ); +} + +/** + * Displays the pinkback URL. + * + * @since 0.4 + */ +function hybrid_head_pingback() { + $pingback = '<link rel="pingback" href="' . get_bloginfo( 'pingback_url' ) . '" />' . "\n"; + echo apply_atomic( 'head_pingback', $pingback ); +} + +/** + * Dynamic element to wrap the site title in. If it is the home or front page, wrap + * it in an <h1> element. One other pages, wrap it in a <div> element. This may change + * once the theme moves from XHTML to HTML 5 because HTML 5 allows for + * multiple <h1> elements in a single document. + * + * @since 0.1 + */ +function hybrid_site_title() { + $tag = ( is_home() || is_front_page() ) ? 'h1' : 'div'; + + if ( $title = get_bloginfo( 'name' ) ) + $title = '<' . $tag . ' id="site-title"><a href="' . home_url() . '" title="' . $title . '" rel="home"><span>' . $title . '</span></a></' . $tag . '>'; + + echo apply_atomic( 'site_title', $title ); +} + +/** + * Dynamic element to wrap the site description in. If it is the home or front page, + * wrap it in an <h2> element. One other pages, wrap it in a <div> element. This may + * change once the theme moves from XHTML to HTML 5 because HTML 5 has the + * <hgroup> element. + * + * @since 0.1 + */ +function hybrid_site_description() { + $tag = ( is_home() || is_front_page() ) ? 'h2' : 'div'; + + if ( $desc = get_bloginfo( 'description' ) ) + $desc = "\n\t\t\t" . '<' . $tag . ' id="site-description"><span>' . $desc . '</span></' . $tag . '>' . "\n"; + + echo apply_atomic( 'site_description', $desc ); +} + +/** + * Displays the default entry title. Wraps the title in the appropriate header tag. + * Use the hybrid_entry_title filter to customize. + * + * @since 0.5 + */ +function hybrid_entry_title( $title = '' ) { + if ( !$title ) + $title = hybrid_entry_title_shortcode(); + + echo apply_atomic_shortcode( 'entry_title', $title ); +} + +/** + * Default entry byline for posts. Shows the author, date, and edit link. Use the + * hybrid_byline filter to customize. + * + * @since 0.5 + */ +function hybrid_byline( $byline = '' ) { + global $post; + + if ( $byline ) + $byline = '<p class="byline">' . $byline . '</p>'; + + elseif ( 'post' == $post->post_type && 'link_category' !== get_query_var( 'taxonomy' ) ) + $byline = '<p class="byline">' . __( '<span class="byline-prep byline-prep-author">By</span> [entry-author] <span class="byline-prep byline-prep-published">on</span> [entry-published] [entry-edit-link before="| "]', hybrid_get_textdomain() ) . '</p>'; + + echo apply_atomic_shortcode( 'byline', $byline ); +} + +/** + * Displays the default entry metadata. Shows the category, tag, and comments + * link. Use the hybrid_entry_meta filter to customize. + * + * @since 0.5 + */ +function hybrid_entry_meta( $metadata = '' ) { + global $post; + + $domain = hybrid_get_textdomain(); + + if ( $metadata ) + $metadata = '<p class="entry-meta">' . $metadata . '</p>'; + + elseif ( 'post' == $post->post_type ) + $metadata = '<p class="entry-meta">[entry-terms taxonomy="category" before="' . __( 'Posted in', $domain ) . ' "] [entry-terms taxonomy="post_tag" before="| ' . __( 'Tagged', $domain ) . ' "] [entry-comments-link before="| "]</p>'; + + elseif ( is_page() && current_user_can( 'edit_pages' ) ) + $metadata = '<p class="entry-meta">[entry-edit-link]</p>'; + + echo apply_atomic_shortcode( 'entry_meta', $metadata, $post->ID ); +} + +/** + * Displays the page's profile URI. + * @link http://microformats.org/wiki/profile-uris + * + * @since 0.6 + */ +function hybrid_profile_uri() { + echo apply_atomic( 'profile_uri', 'http://gmpg.org/xfn/11' ); +} + +/** + * Filters main feed links for the site. This changes the feed links to the user's + * alternate feed URL. This change only happens if the user chooses it from the + * theme settings. + * + * @since 0.4 + * @param string $output + * @param string $feed + * @return string $output + */ +function hybrid_feed_link( $output, $feed ) { + + $url = esc_url( hybrid_get_setting( 'feed_url' ) ); + + if ( $url ) { + $outputarray = array( 'rss' => $url, 'rss2' => $url, 'atom' => $url, 'rdf' => $url, 'comments_rss2' => '' ); + $outputarray[$feed] = $url; + $output = $outputarray[$feed]; + } + + return $output; +} + +/** + * Filters the category, author, and tag feed links. This changes all of these feed + * links to the user's alternate feed URL. This change only happens if the user chooses + * it from the theme settings. + * + * @since 0.4 + * @param string $link + * @return string $link + */ +function hybrid_other_feed_link( $link ) { + + if ( hybrid_get_setting( 'feeds_redirect' ) && $url = hybrid_get_setting( 'feed_url' ) ) + $link = esc_url( $url ); + + return $link; +} + +/** + * Displays the breadcrumb trail. Calls the get_the_breadcrumb() function. + * Use the get_the_breadcrumb_args filter hook. The hybrid_breadcrumb_args + * filter is deprecated. + * + * @deprecated 0.5 Theme still needs this function. + * @todo Find an elegant way to transition to breadcrumb_trail() + * in child themes and filter breadcrumb_trail_args instead. + * + * @since 0.1 + */ +function hybrid_breadcrumb() { + breadcrumb_trail( array( 'front_page' => false, 'singular_post_taxonomy' => 'category' ) ); +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/functions/media.php b/wp-content/themes/hybrid/library/functions/media.php new file mode 100644 index 0000000000000000000000000000000000000000..8cd70e82a8386e7b4632a6396f1b41ac14932862 --- /dev/null +++ b/wp-content/themes/hybrid/library/functions/media.php @@ -0,0 +1,187 @@ +<?php +/** + * Functions file for loading scripts and styles. It also handles attachment files by + * displaying appropriate HTML element. Other media is handled through the theme + * extensions: get-the-image.php, get-the-object.php. + * + * @package Hybrid + * @subpackage Functions + */ + +/** + * Function to load CSS at an appropriate time. Adds print.css if user chooses to use it. + * Users should load their own CSS using wp_enqueue_style() in their child theme's + * functions.php file. + * + * @since 0.1 + * @link http://codex.wordpress.org/Function_Reference/wp_enqueue_style + */ +function hybrid_enqueue_style() { + global $wp_query; + + /* If is admin, don't load styles. */ + if ( is_admin() ) + return; + + /* Get the theme prefix. */ + $prefix = hybrid_get_prefix(); + + /* Load the print stylesheet. */ + if ( hybrid_get_setting( 'print_style' ) ) + wp_enqueue_style( "{$prefix}-print", esc_url( apply_atomic( 'print_style', THEME_CSS . '/print.css' ) ), false, 0.7, 'print' ); +} + +/** + * Function to load JavaScript at appropriate time. Loads comment reply script only if + * users choose to use nested comments. Users should load custom JavaScript with + * wp_enqueue_script() in their child theme's functions.php file. + * + * If selected, the drop-downs.js file will be loaded, which is a bundled version of the + * Superfish jQuery plugin. + * + * @since 0.1 + * @link http://codex.wordpress.org/Function_Reference/wp_enqueue_script + * @link http://users.tpg.com.au/j_birch/plugins/superfish + */ +function hybrid_enqueue_script() { + + /* Don't load any scripts in the admin. */ + if ( is_admin() ) + return; + + /* Comment reply. */ + if ( is_singular() && get_option( 'thread_comments' ) && comments_open() ) + wp_enqueue_script( 'comment-reply' ); + + /* Superfish drop-down menus. */ + if ( hybrid_get_setting( 'superfish_js' ) ) + wp_enqueue_script( 'drop-downs', esc_url( apply_atomic( 'drop_downs_script', THEME_JS . '/drop-downs.js' ) ), array( 'jquery' ), 1.4, true ); +} + +/** + * Disables stylesheets for particular plugins to allow the theme to easily write its own + * styles for the plugins' features. + * + * @since 0.7 + * @link http://wordpress.org/extend/plugins/wp-pagenavi + */ +function hybrid_disable_styles() { + /* Deregister the WP PageNavi plugin style. */ + wp_deregister_style( 'wp-pagenavi' ); +} + +/** + * Loads the correct function for handling attachments. Checks the attachment mime + * type to call correct function. Image attachments are not loaded with this function. + * The functionality for them resides in image.php. + * + * Ideally, all attachments would be appropriately handled within their templates. However, + * this could lead to messy template files. For now, we'll use separate functions for handling + * attachment content. The biggest issue here is with handling different video types. + * + * @since 0.5 + * @uses get_post_mime_type() Gets the mime type of the attachment. + * @uses wp_get_attachment_url() Gets the URL of the attachment file. + */ +function hybrid_attachment() { + $file = wp_get_attachment_url(); + $mime = get_post_mime_type(); + $mime_type = explode( '/', $mime ); + + /* Loop through each mime type. If a function exists for it, call it. Allow users to filter the display. */ + foreach ( $mime_type as $type ) { + if ( function_exists( "hybrid_{$type}_attachment" ) ) + $attachment = call_user_func( "hybrid_{$type}_attachment", $mime, $file ); + + $attachment = apply_atomic( "{$type}_attachment", $attachment ); + } + + echo apply_atomic( 'attachment', $attachment ); +} + +/** + * Handles application attachments on their attachment pages. + * Uses the <object> tag to embed media on those pages. + * + * @todo Run a battery of tests on many different applications. + * @todo Figure out what to do with FLV files outside of the current functionality. + * + * @since 0.3 + * @param string $mime attachment mime type + * @param string $file attachment file URL + * @return string + */ +function hybrid_application_attachment( $mime = '', $file = '' ) { + $application = '<object class="text" type="' . $mime . '" data="' . $file . '" width="400">'; + $application .= '<param name="src" value="' . $file . '" />'; + $application .= '</object>'; + + return $application; +} + +/** + * Handles text attachments on their attachment pages. + * Uses the <object> element to embed media in the pages. + * + * @since 0.3 + * @param string $mime attachment mime type + * @param string $file attachment file URL + * @return string + */ +function hybrid_text_attachment( $mime = '', $file = '' ) { + $text = '<object class="text" type="' . $mime . '" data="' . $file . '" width="400">'; + $text .= '<param name="src" value="' . $file . '" />'; + $text .= '</object>'; + + return $text; +} + +/** + * Handles audio attachments on their attachment pages. + * Puts audio/mpeg and audio/wma files into an <object> element. + * + * @todo Test out and support more audio types. + * + * @since 0.2.2 + * @param string $mime attachment mime type + * @param string $file attachment file URL + * @return string + */ +function hybrid_audio_attachment( $mime = '', $file = '' ) { + $audio = '<object type="' . $mime . '" class="player audio" data="' . $file . '" width="400" height="50">'; + $audio .= '<param name="src" value="' . $file . '" />'; + $audio .= '<param name="autostart" value="false" />'; + $audio .= '<param name="controller" value="true" />'; + $audio .= '</object>'; + + return $audio; +} + +/** + * Handles video attachments on attachment pages. + * Add other video types to the <object> element. + * + * In 0.6, FLV files were moved to using hybrid_application_attachment. + * + * @todo Test out and support more video types. + * + * @since 0.2.2 + * @param string $mime attachment mime type + * @param string $file attachment file URL + * @return string + */ +function hybrid_video_attachment( $mime = false, $file = false ) { + if ( $mime == 'video/asf' ) + $mime = 'video/x-ms-wmv'; + + $video = '<object type="' . $mime . '" class="player video" data="' . $file . '" width="400" height="320">'; + $video .= '<param name="src" value="' . $file . '" />'; + $video .= '<param name="autoplay" value="false" />'; + $video .= '<param name="allowfullscreen" value="true" />'; + $video .= '<param name="controller" value="true" />'; + $video .= '</object>'; + + return $video; +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/functions/menus.php b/wp-content/themes/hybrid/library/functions/menus.php new file mode 100644 index 0000000000000000000000000000000000000000..f98b7d49aee0cbb78c2114f1e246088a6e040924 --- /dev/null +++ b/wp-content/themes/hybrid/library/functions/menus.php @@ -0,0 +1,45 @@ +<?php +/** + * Functions for dealing with menus and menu items within the theme. WP menu items must be + * unregistered. Hybrid menu items must be registered in their place. All menus are loaded + * and registered with WP. + * + * @package Hybrid + * @subpackage Functions + */ + +/** + * Add theme support for menus. + * @since 0.8 + */ +add_theme_support( 'menus' ); + +/** + * Register menus. + * @since 0.8 + */ +add_action( 'init', 'hybrid_register_menus' ); + +/** + * Registers the theme's menus. + * + * @since 0.8 + * @uses is_nav_menu() Checks if a menu exists. + * @uses locate_template() Checks for template in child and parent theme. + */ +function hybrid_register_menus() { + register_nav_menu( 'primary-menu', __( 'Primary Menu', hybrid_get_textdomain() ) ); +} + +/** + * Loads the 'Primary Menu' template file. Users can overwrite menu-primary.php in their child + * theme folder. + * + * @since 0.8 + * @uses locate_template() Checks for template in child and parent theme. + */ +function hybrid_get_primary_menu() { + locate_template( array( 'menu-primary.php', 'menu.php' ), true ); +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/functions/shortcodes.php b/wp-content/themes/hybrid/library/functions/shortcodes.php new file mode 100644 index 0000000000000000000000000000000000000000..d179a95446d81cefa2c77e0e01c72782b4fc8a97 --- /dev/null +++ b/wp-content/themes/hybrid/library/functions/shortcodes.php @@ -0,0 +1,398 @@ +<?php +/** + * Shortcodes bundled for use with the theme. These shortcodes can be used in any shortcode-ready + * area, which includes posts, pages, and various Hybrid theme areas. + * + * @package Hybrid + * @subpackage Functions + */ + +/** + * Register shortcodes. + * @since 0.8 + */ +add_action( 'init', 'hybrid_add_shortcodes' ); + +/** + * Creates new shortcodes for use in any shortcode-ready area. + * + * @since 0.8 + * @uses add_shortcode() to create new shortcodes. + * @link http://codex.wordpress.org/Shortcode_API + */ +function hybrid_add_shortcodes() { + + /* Add theme-specific shortcodes. */ + add_shortcode( 'the-year', 'hybrid_the_year_shortcode' ); + add_shortcode( 'site-link', 'hybrid_site_link_shortcode' ); + add_shortcode( 'wp-link', 'hybrid_wp_link_shortcode' ); + add_shortcode( 'theme-link', 'hybrid_theme_link_shortcode' ); + add_shortcode( 'child-link', 'hybrid_child_link_shortcode' ); + add_shortcode( 'loginout-link', 'hybrid_loginout_link_shortcode' ); + add_shortcode( 'query-counter', 'hybrid_query_counter_shortcode' ); + add_shortcode( 'nav-menu', 'hybrid_nav_menu_shortcode' ); + + /* Add entry-specific shortcodes. */ + add_shortcode( 'entry-title', 'hybrid_entry_title_shortcode' ); + add_shortcode( 'entry-author', 'hybrid_entry_author_shortcode' ); + add_shortcode( 'entry-terms', 'hybrid_entry_terms_shortcode' ); + add_shortcode( 'entry-comments-link', 'hybrid_entry_comments_link_shortcode' ); + add_shortcode( 'entry-published', 'hybrid_entry_published_shortcode' ); + add_shortcode( 'entry-edit-link', 'hybrid_entry_edit_link_shortcode' ); + add_shortcode( 'entry-shortlink', 'hybrid_entry_shortlink_shortcode' ); + + /* Add comment-specific shortcodes. */ + add_shortcode( 'comment-published', 'hybrid_comment_published_shortcode' ); + add_shortcode( 'comment-author', 'hybrid_comment_author_shortcode' ); + add_shortcode( 'comment-edit-link', 'hybrid_comment_edit_link_shortcode' ); + add_shortcode( 'comment-reply-link', 'hybrid_comment_reply_link_shortcode' ); + add_shortcode( 'comment-permalink', 'hybrid_comment_permalink_shortcode' ); +} + +/** + * Shortcode to display the current year. + * + * @since 0.6 + * @uses date() Gets the current year. + */ +function hybrid_the_year_shortcode() { + return date( __( 'Y', hybrid_get_textdomain() ) ); +} + +/** + * Shortcode to display a link back to the site. + * + * @since 0.6 + * @uses get_bloginfo() Gets information about the install. + */ +function hybrid_site_link_shortcode() { + return '<a class="site-link" href="' . home_url() . '" title="' . get_bloginfo( 'name' ) . '" rel="home"><span>' . get_bloginfo( 'name' ) . '</span></a>'; +} + +/** + * Shortcode to display a link to WordPress.org. + * @since 0.6 + */ +function hybrid_wp_link_shortcode() { + return '<a class="wp-link" href="http://wordpress.org" title="' . __( 'Powered by WordPress, state-of-the-art semantic personal publishing platform', hybrid_get_textdomain() ) . '"><span>' . __( 'WordPress', hybrid_get_textdomain() ) . '</span></a>'; +} + +/** + * Shortcode to display a link to the Hybrid theme page. + * + * @since 0.6 + * @uses get_theme_data() Gets theme (parent theme) information. + */ +function hybrid_theme_link_shortcode() { + $data = get_theme_data( TEMPLATEPATH . '/style.css' ); + return '<a class="theme-link" href="' . esc_url( $data['URI'] ) . '" title="' . esc_attr( $data['Name'] ) . '"><span>' . esc_attr( $data['Name'] ) . '</span></a>'; +} + +/** + * Shortcode to display a link to the child theme's page. + * + * @since 0.6 + * @uses get_theme_data() Gets theme (child theme) information. + */ +function hybrid_child_link_shortcode() { + $data = get_theme_data( STYLESHEETPATH . '/style.css' ); + return '<a class="child-link" href="' . esc_url( $data['URI'] ) . '" title="' . esc_attr( $data['Name'] ) . '"><span>' . esc_attr( $data['Name'] ) . '</span></a>'; +} + +/** + * Shortcode to display a login link or logout link. + * + * @since 0.6 + * @uses is_user_logged_in() Checks if the current user is logged into the site. + * @uses wp_logout_url() Creates a logout URL. + * @uses wp_login_url() Creates a login URL. + */ +function hybrid_loginout_link_shortcode() { + $domain = hybrid_get_textdomain(); + if ( is_user_logged_in() ) + $out = '<a class="logout-link" href="' . wp_logout_url( esc_url( $_SERVER['HTTP_REFERER'] ) ) . '" title="' . __( 'Log out of this account', $domain ) . '">' . __( 'Log out', $domain ) . '</a>'; + else + $out = '<a class="login-link" href="' . wp_login_url( esc_url( $_SERVER['HTTP_REFERER'] ) ) . '" title="' . __( 'Log into this account', $domain ) . '">' . __( 'Log in', $domain ) . '</a>'; + + return $out; +} + +/** + * Displays query count and load time if the current user can edit themes. + * + * @since 0.6 + * @uses current_user_can() Checks if the current user can edit themes. + */ +function hybrid_query_counter_shortcode() { + if ( current_user_can( 'edit_themes' ) ) + $out = sprintf( __( 'This page loaded in %1$s seconds with %2$s database queries.', hybrid_get_textdomain() ), timer_stop( 0, 3 ), get_num_queries() ); + return $out; +} + +/** + * Displays a nav menu that has been created from the Menus screen in the admin. + * + * @since 0.8 + * @uses wp_nav_menu() Displays the nav menu. + */ +function hybrid_nav_menu_shortcode( $attr ) { + + $attr = shortcode_atts( + array( + 'menu' => '', + 'container' => 'div', + 'container_id' => '', + 'container_class' => 'nav-menu', + 'menu_id' => '', + 'menu_class' => '', + 'link_before' => '', + 'link_after' => '', + 'before' => '', + 'after' => '', + 'fallback_cb' => 'wp_page_menu', + 'walker' => '' + ), + $attr + ); + $attr['echo'] = false; + + return wp_nav_menu( $attr ); +} + +/** + * Displays the edit link for an individual post. + * + * @since 0.7 + * @param array $attr + */ +function hybrid_entry_edit_link_shortcode( $attr ) { + global $post; + + $domain = hybrid_get_textdomain(); + $post_type = get_post_type_object( $post->post_type ); + + if ( !current_user_can( "edit_{$post_type->capability_type}", $post->ID ) ) + return ''; + + $attr = shortcode_atts( array( 'before' => '', 'after' => '' ), $attr ); + + return $attr['before'] . '<span class="edit"><a class="post-edit-link" href="' . get_edit_post_link( $post->ID ) . '" title="' . sprintf( __( 'Edit %1$s', $domain ), $post->post_type ) . '">' . __( 'Edit', $domain ) . '</a></span>' . $attr['after']; +} + +/** + * Displays the published date of an individual post. + * + * @since 0.7 + * @param array $attr + */ +function hybrid_entry_published_shortcode( $attr ) { + $domain = hybrid_get_textdomain(); + $attr = shortcode_atts( array( 'before' => '', 'after' => '', 'format' => get_option( 'date_format' ) ), $attr ); + + $published = '<abbr class="published" title="' . sprintf( get_the_time( __( 'l, F jS, Y, g:i a', $domain ) ) ) . '">' . sprintf( get_the_time( $attr['format'] ) ) . '</abbr>'; + return $attr['before'] . $published . $attr['after']; +} + +/** + * Displays a post's number of comments wrapped in a link to the comments area. + * + * @since 0.7 + * @param array $attr + */ +function hybrid_entry_comments_link_shortcode( $attr ) { + + $domain = hybrid_get_textdomain(); + $number = get_comments_number(); + $attr = shortcode_atts( array( 'zero' => __( 'Leave a response', $domain ), 'one' => __( '1 Response', $domain ), 'more' => __( '%1$s Responses', $domain ), 'css_class' => 'comments-link', 'none' => '', 'before' => '', 'after' => '' ), $attr ); + + if ( 0 == $number && !comments_open() && !pings_open() ) { + if ( $attr['none'] ) + $comments_link = '<span class="' . esc_attr( $attr['css_class'] ) . '">' . $attr['none'] . '</span>'; + } + elseif ( $number == 0 ) + $comments_link = '<a class="' . esc_attr( $attr['css_class'] ) . '" href="' . get_permalink() . '#respond" title="' . sprintf( __( 'Comment on %1$s', $domain ), the_title_attribute( 'echo=0' ) ) . '">' . $attr['zero'] . '</a>'; + elseif ( $number == 1 ) + $comments_link = '<a class="' . esc_attr( $attr['css_class'] ) . '" href="' . get_comments_link() . '" title="' . sprintf( __( 'Comment on %1$s', $domain ), the_title_attribute( 'echo=0' ) ) . '">' . $attr['one'] . '</a>'; + elseif ( $number > 1 ) + $comments_link = '<a class="' . esc_attr( $attr['css_class'] ) . '" href="' . get_comments_link() . '" title="' . sprintf( __( 'Comment on %1$s', $domain ), the_title_attribute( 'echo=0' ) ) . '">' . sprintf( $attr['more'], $number ) . '</a>'; + + if ( $comments_link ) + $comments_link = $attr['before'] . $comments_link . $attr['after']; + + return $comments_link; +} + +/** + * Displays an individual post's author with a link to his or her archive. + * + * @since 0.7 + * @param array $attr + */ +function hybrid_entry_author_shortcode( $attr ) { + $attr = shortcode_atts( array( 'before' => '', 'after' => '' ), $attr ); + $author = '<span class="author vcard"><a class="url fn n" href="' . get_author_posts_url( get_the_author_meta( 'ID' ) ) . '" title="' . get_the_author_meta( 'display_name' ) . '">' . get_the_author_meta( 'display_name' ) . '</a></span>'; + return $attr['before'] . $author . $attr['after']; +} + +/** + * Displays a list of terms for a specific taxonomy. + * + * @since 0.7 + * @param array $attr + */ +function hybrid_entry_terms_shortcode( $attr ) { + global $post; + + $attr = shortcode_atts( array( 'id' => $post->ID, 'taxonomy' => 'post_tag', 'separator' => ', ', 'before' => '', 'after' => '' ), $attr ); + + $attr['before'] = '<span class="' . $attr['taxonomy'] . '">' . $attr['before']; + $attr['after'] .= '</span>'; + + return get_the_term_list( $attr['id'], $attr['taxonomy'], $attr['before'], $attr['separator'], $attr['after'] ); +} + +/** + * Displays a post's title with a link to the post. + * + * @since 0.7 + */ +function hybrid_entry_title_shortcode() { + global $post; + + if ( is_front_page() && !is_home() ) + $title = the_title( '<h2 class="' . $post->post_type . '-title entry-title"><a href="' . get_permalink() . '" title="' . the_title_attribute( 'echo=0' ) . '" rel="bookmark">', '</a></h2>', false ); + + elseif ( is_singular() ) + $title = the_title( '<h1 class="' . $post->post_type . '-title entry-title"><a href="' . get_permalink() . '" title="' . the_title_attribute( 'echo=0' ) . '" rel="bookmark">', '</a></h1>', false ); + + elseif ( 'link_category' == get_query_var( 'taxonomy' ) ) + $title = false; + + else + $title = the_title( '<h2 class="entry-title"><a href="' . get_permalink() . '" title="' . the_title_attribute( 'echo=0' ) . '" rel="bookmark">', '</a></h2>', false ); + + return $title; +} + +/** + * Displays the shortlinke of an individual entry. + * + * @since 0.8 + */ +function hybrid_entry_shortlink_shortcode( $attr ) { + global $post; + + $domain = hybrid_get_textdomain(); + + $attr = shortcode_atts( + array( + 'text' => __( 'Shortlink', $domain ), + 'title' => the_title_attribute( array( 'echo' => false ) ), + 'before' => '', + 'after' => '' + ), + $attr + ); + + $shortlink = wp_get_shortlink( $post->ID ); + + return "{$attr['before']}<a class='shortlink' href='{$shortlink}' title='{$attr['title']}' rel='shortlink'>{$attr['text']}</a>{$attr['after']}"; +} + +/** + * Displays the published date and time of an individual comment. + * + * @since 0.7 + */ +function hybrid_comment_published_shortcode() { + $domain = hybrid_get_textdomain(); + $link = '<span class="published">' . sprintf( __( '%1$s at %2$s', $domain ), '<abbr class="comment-date" title="' . get_comment_date( __( 'l, F jS, Y, g:i a', $domain ) ) . '">' . get_comment_date() . '</abbr>', '<abbr class="comment-time" title="' . get_comment_date( __( 'l, F jS, Y, g:i a', $domain ) ) . '">' . get_comment_time() . '</abbr>' ) . '</span>'; + return $link; +} + +/** + * Displays the comment author of an individual comment. + * + * @since 0.8 + * @global $comment The current comment's DB object. + * @return string + */ +function hybrid_comment_author_shortcode( $attr ) { + global $comment; + + $attr = shortcode_atts( array( 'before' => '', 'after' => '' ), $attr ); + + $author = esc_html( get_comment_author( $comment->comment_ID ) ); + $url = esc_url( get_comment_author_url( $comment->comment_ID ) ); + + /* Display link and cite if URL is set. Also, properly cites trackbacks/pingbacks. */ + if ( $url ) + $output = '<cite class="fn" title="' . $url . '"><a href="' . $url . '" title="' . $author . '" class="url" rel="external nofollow">' . $author . '</a></cite>'; + else + $output = '<cite class="fn">' . $author . '</cite>'; + + $output = '<div class="comment-author vcard">' . $attr['before'] . apply_filters( 'get_comment_author_link', $output ) . $attr['after'] . '</div><!-- .comment-author .vcard -->'; + + /* @deprecated 0.8. Create a custom shortcode instead of filtering hybrid_comment_author. */ + return apply_filters( "{$hybrid->prefix}_comment_author", $output ); +} + +/** + * Displays the permalink to an individual comment. + * + * @since 0.7 + */ +function hybrid_comment_permalink_shortcode( $attr ) { + $attr = shortcode_atts( array( 'before' => '', 'after' => '' ), $attr ); + $domain = hybrid_get_textdomain(); + $link = '<a class="permalink" href="' . get_comment_link( $comment->comment_ID ) . '" title="' . sprintf( __( 'Permalink to comment %1$s', $domain ), $comment->comment_ID ) . '">' . __( 'Permalink', $domain ) . '</a>'; + return $attr['before'] . $link . $attr['after']; +} + +/** + * Displays a comment's edit link to users that have the capability to edit the comment. + * + * @since 0.7 + */ +function hybrid_comment_edit_link_shortcode( $attr ) { + global $comment; + + $edit_link = get_edit_comment_link( $comment->comment_ID ); + + if ( !$edit_link ) + return ''; + + $attr = shortcode_atts( array( 'before' => '', 'after' => '' ), $attr ); + $domain = hybrid_get_textdomain(); + + $link = '<a class="comment-edit-link" href="' . $edit_link . '" title="' . sprintf( __( 'Edit %1$s', $domain ), $comment->comment_type ) . '"><span class="edit">' . __( 'Edit', $domain ) . '</span></a>'; + $link = apply_filters( 'edit_comment_link', $link, $comment->comment_ID ); + + return $attr['before'] . $link . $attr['after']; +} + +/** + * Displays a reply link for the 'comment' comment_type if threaded comments are enabled. + * + * @since 0.7 + */ +function hybrid_comment_reply_link_shortcode( $attr ) { + $domain = hybrid_get_textdomain(); + + if ( !get_option( 'thread_comments' ) || 'comment' !== get_comment_type() ) + return ''; + + $defaults = array( + 'reply_text' => __( 'Reply', $domain ), + 'login_text' => __( 'Log in to reply.', $domain ), + 'depth' => $GLOBALS['comment_depth'], + 'max_depth' => get_option( 'thread_comments_depth' ), + 'before' => '', + 'after' => '' + ); + $attr = shortcode_atts( $defaults, $attr ); + + return get_comment_reply_link( $attr ); +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/functions/template.php b/wp-content/themes/hybrid/library/functions/template.php new file mode 100644 index 0000000000000000000000000000000000000000..23bc5ea3f9f9f47fce544e109643e8e34cbdf551 --- /dev/null +++ b/wp-content/themes/hybrid/library/functions/template.php @@ -0,0 +1,228 @@ +<?php +/** + * Functions for loading the correct template in the Hybrid system. Many of the default + * WordPress templates are overridden to allow for a better template hierarchy, which + * allows for more customizations and better structure. + * + * Other functions in this file are for template-specific outputs, such as the page menu. + * + * @package Hybrid + * @subpackage Functions + */ + +/** + * Add extra support for post types. + * @since 0.8 + */ +add_action( 'init', 'hybrid_add_post_type_support' ); + +/** + * Add theme support for feed links. + * @since 0.8 + */ +add_action( 'init', 'hybrid_add_theme_support' ); + +/** + * This function is for adding extra support for features not default to the core post types. + * Excerpts are added to the 'page' post type. Comments and trackbacks are added for the + * 'attachment' post type. Technically, these are already used for attachments in core, but + * they're not registered. + * + * @since 0.8 + */ +function hybrid_add_post_type_support() { + add_post_type_support( 'page', array( 'excerpts' ) ); + add_post_type_support( 'attachment', array( 'comments', 'trackbacks' ) ); +} + +/** + * This function is for adding extra support for theme features to the theme. + * + * @since 0.8 + */ +function hybrid_add_theme_support() { + add_theme_support( 'automatic-feed-links' ); + + if ( 'hybrid' == get_stylesheet() ) + add_theme_support( 'post-layouts' ); +} + +/** + * Looks for a template based on the hybrid_get_context() function. If the $template parameter + * is a directory, it will look for files within that directory. Otherwise, $template becomes the + * template name prefix. The function looks for templates based on the context of the current page + * being viewed by the user. + * + * @since 0.8 + * @param string $template The slug of the template whose context we're searching for. + * @return string $template The full path of the located template. + */ +function get_atomic_template( $template ) { + + $templates = array(); + + $theme_dir = THEME_DIR . '/' . $template; + $child_dir = CHILD_THEME_DIR . '/' . $template; + + if ( is_dir( $child_dir ) || is_dir( $theme_dir ) ) { + $dir = true; + $templates[] = "{$template}/index.php"; + } + else { + $dir = false; + $templates[] = "{$template}.php"; + } + + foreach ( hybrid_get_context() as $context ) + $templates[] = ( ( $dir ) ? "{$template}/{$context}.php" : "{$template}-{$context}.php" ); + + return locate_template( array_reverse( $templates ), true ); +} + +/** + * Overrides WP's default template for date-based archives. Better abstraction of + * templates than is_date() allows by checking for the year, month, week, day, hour, + * and minute. + * + * @since 0.6 + * @uses locate_template() Checks for template in child and parent theme. + * @param string $template + * @return string $template Full path to file. + */ +function hybrid_date_template( $template ) { + $templates = array(); + + if ( is_time() ) { + if ( get_query_var( 'minute' ) ) + $templates[] = 'minute.php'; + elseif ( get_query_var( 'hour' ) ) + $templates[] = 'hour.php'; + $templates[] = 'time.php'; + } + elseif ( is_day() ) + $templates[] = 'day.php'; + elseif ( get_query_var( 'w' ) ) + $templates[] = 'week.php'; + elseif ( is_month() ) + $templates[] = 'month.php'; + elseif ( is_year() ) + $templates[] = 'year.php'; + + $templates[] = 'date.php'; + $templates[] = 'archive.php'; + + return locate_template( $templates ); +} + +/** + * Overrides WP's default template for author-based archives. Better abstraction + * of templates than is_author() allows by allowing themes to specify templates for + * a specific author. The hierarchy is author-$author.php, author.php. + * + * @since 0.7 + * @uses locate_template() Checks for template in child and parent theme. + * @param string $template + * @return string Full path to file. + */ +function hybrid_user_template( $template ) { + $templates = array(); + $name = get_the_author_meta( 'user_nicename', get_query_var( 'author' ) ); + $user = new WP_User( absint( get_query_var( 'author' ) ) ); + + $templates = array( "user-{$name}.php", "author-{$name}.php" ); + + if ( is_array( $user->roles ) ) { + foreach ( $user->roles as $role ) + $templates[] = "user-role-{$role}.php"; + } + $templates[] = 'user.php'; + $templates[] = 'author.php'; + $templates[] = 'archive.php'; + + return locate_template( $templates ); +} + +/** + * Overrides WP's default template for category- and tag-based archives. This allows + * better organization of taxonomy template files by making categories and post tags + * work the same way as other taxonomies. The hierarchy is taxonomy-$taxonomy-$term.php, + * taxonomy-$taxonomy.php, taxonomy.php, archive.php. + * + * @since 0.7 + * @uses locate_template() Checks for template in child and parent theme. + * @param string $template + * @return string Full path to file. + */ +function hybrid_taxonomy_template( $template ) { + global $wp_query; + $term = $wp_query->get_queried_object(); + return locate_template( array( "taxonomy-{$term->taxonomy}-{$term->slug}.php", "taxonomy-{$term->taxonomy}.php", 'taxonomy.php', 'archive.php' ) ); +} + +/** + * Overrides the default single (singular post) template. Post templates can be + * loaded using a custom post template, by slug, or by ID. + * + * Attachment templates are handled slightly differently. Rather than look for the slug + * or ID, templates can be loaded by attachment-$mime[0]_$mime[1].php, + * attachment-$mime[1].php, or attachment-$mime[0].php. + * + * @since 0.7 + * @param string $template The default WordPress post template. + * @return string $template The theme post template after all templates have been checked for. + */ +function hybrid_singular_template( $template ) { + global $wp_query; + + $templates = array(); + + /* Check for a custom post template by custom field key '_wp_post_template'. */ + $custom = get_post_meta( $wp_query->post->ID, "_wp_{$wp_query->post->post_type}_template", true ); + if ( $custom ) + $templates[] = $custom; + + if ( is_attachment() ) { + /* Split the mime_type into two distinct parts. */ + $type = explode( '/', get_post_mime_type() ); + + $templates[] = "attachment-{$type[0]}_{$type[1]}.php"; + $templates[] = "attachment-{$type[1]}.php"; + $templates[] = "attachment-{$type[0]}.php"; + } + else { + $templates[] = "{$wp_query->post->post_type}-{$wp_query->post->post_name}.php"; + $templates[] = "{$wp_query->post->post_type}-{$wp_query->post->ID}.php"; + } + + $templates[] = "{$wp_query->post->post_type}.php"; + $templates[] = "singular.php"; + + return locate_template( $templates ); +} + +/** + * Loads the navigation-links.php template file for use on archives, single posts, + * and attachments. Developers can overwrite this individual template within + * their custom child themes. + * + * @since 0.2 + * @uses get_template_part() Checks for template in child and parent theme. + */ +function hybrid_navigation_links() { + get_template_part( 'navigation-links' ); +} + +/** + * Displays the footer insert from the theme settings page. Users can also use + * shortcodes in their footer area, which will be displayed with this function. + * + * @since 0.2.1 + * @uses do_shortcode() Allows users to add shortcodes to their footer. + * @uses stripslashes() Strips any slashes added from the admin form. + * @uses hybrid_get_setting() Grabs the 'footer_insert' theme setting. + */ +function hybrid_footer_insert() { + echo do_shortcode( stripslashes( hybrid_get_setting( 'footer_insert' ) ) ); +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/functions/widgets.php b/wp-content/themes/hybrid/library/functions/widgets.php new file mode 100644 index 0000000000000000000000000000000000000000..f162d9fc9d60d4f2da832bc9de3e2692461b8741 --- /dev/null +++ b/wp-content/themes/hybrid/library/functions/widgets.php @@ -0,0 +1,203 @@ +<?php +/** + * Functions for dealing with widgets and sidebars within the theme. WP widgets must be + * unregistered. Hybrid widgets must be registered in their place. All sidebars are loaded + * and registered with WP. + * + * @package Hybrid + * @subpackage Functions + */ + +/** + * Add theme support for widgets. + * @since 0.8 + */ +add_theme_support( 'widgets' ); + +/** + * Register widget areas + * @since 0.7 + */ +add_action( 'init', 'hybrid_register_sidebars' ); + +/** + * Unregister WP widgets + * @since 0.3.2 + */ +add_action( 'widgets_init', 'hybrid_unregister_widgets' ); + +/** + * Register Hybrid Widgets + * @since 0.6 + */ +add_action( 'widgets_init', 'hybrid_register_widgets' ); + +/** + * Disables widget areas + * @since 0.5 + */ +add_filter( 'sidebars_widgets', 'remove_sidebars' ); + +/** + * Registers each widget area for the theme. This includes all of the asides + * and the utility widget areas throughout the theme. + * + * @since 0.7 + * @uses register_sidebar() Registers a widget area. + */ +function hybrid_register_sidebars() { + $domain = hybrid_get_textdomain(); + + /* Register aside widget areas. */ + register_sidebar( array( 'name' => __( 'Primary', $domain ), 'id' => 'primary', 'description' => __( 'The main (primary) widget area, most often used as a sidebar.', $domain ), 'before_widget' => '<div id="%1$s" class="widget %2$s widget-%2$s"><div class="widget-inside">', 'after_widget' => '</div></div>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>' ) ); + register_sidebar( array( 'name' => __( 'Secondary', $domain ), 'id' => 'secondary', 'description' => __( 'The second most important widget area, most often used as a secondary sidebar', $domain ), 'before_widget' => '<div id="%1$s" class="widget %2$s widget-%2$s"><div class="widget-inside">', 'after_widget' => '</div></div>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>' ) ); + register_sidebar( array( 'name' => __( 'Subsidiary', $domain ), 'id' => 'subsidiary', 'description' => __( 'A widget area loaded in the footer of the site.', $domain ), 'before_widget' => '<div id="%1$s" class="widget %2$s widget-%2$s"><div class="widget-inside">', 'after_widget' => '</div></div>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>' ) ); + + /* Register utility widget areas. */ + register_sidebar( array( 'name' => __( 'Utility: Before Content', $domain ), 'id' => 'utility-before-content', 'description' => __( 'Loaded before the page\'s main content area.', $domain ), 'before_widget' => '<div id="%1$s" class="widget %2$s widget-%2$s"><div class="widget-inside">', 'after_widget' => '</div></div>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>' ) ); + register_sidebar( array( 'name' => __( 'Utility: After Content', $domain ), 'id' => 'utility-after-content', 'description' => __( 'Loaded after the page\'s main content area.', $domain ), 'before_widget' => '<div id="%1$s" class="widget %2$s widget-%2$s"><div class="widget-inside">', 'after_widget' => '</div></div>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>' ) ); + register_sidebar( array( 'name' => __( 'Utility: After Singular', $domain ), 'id' => 'utility-after-singular', 'description' => __( 'Loaded on singular post (page, attachment, etc.) views before the comments area.', $domain ), 'before_widget' => '<div id="%1$s" class="widget %2$s widget-%2$s"><div class="widget-inside">', 'after_widget' => '</div></div>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>' ) ); + + /* Register template widget areas only if the templates are available. */ + if ( locate_template( array( 'page-widgets.php' ) ) ) + register_sidebar( array( 'name' => __( 'Widgets Template', $domain ), 'id' => 'utility-widgets-template', 'description' => __( 'Used as the content of the Widgets page template.', $domain ), 'before_widget' => '<div id="%1$s" class="widget %2$s widget-%2$s"><div class="widget-inside">', 'after_widget' => '</div></div>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>' ) ); + if ( locate_template( array( '404.php' ) ) ) + register_sidebar( array( 'name' => __( '404 Template', $domain ), 'id' => 'utility-404', 'description' => __( 'Replaces the default 404 error page content.', $domain ), 'before_widget' => '<div id="%1$s" class="widget %2$s widget-%2$s"><div class="widget-inside">', 'after_widget' => '</div></div>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>' ) ); +} + +/** + * Register Hybrid's extra widgets. Each widget is meant to replace or extend the + * current default WordPress widgets. + * + * @since 0.6 + * @uses register_widget() Registers individual widgets. + * @link http://codex.wordpress.org/WordPress_Widgets_Api + */ +function hybrid_register_widgets() { + + /* Load each widget file. */ + require_once( THEME_CLASSES . '/widget-archives.php' ); + require_once( THEME_CLASSES . '/widget-authors.php' ); + require_once( THEME_CLASSES . '/widget-bookmarks.php' ); + require_once( THEME_CLASSES . '/widget-calendar.php' ); + require_once( THEME_CLASSES . '/widget-categories.php' ); + require_once( THEME_CLASSES . '/widget-nav-menu.php' ); + require_once( THEME_CLASSES . '/widget-pages.php' ); + require_once( THEME_CLASSES . '/widget-search.php' ); + require_once( THEME_CLASSES . '/widget-tags.php' ); + + /* Register each widget. */ + register_widget( 'Hybrid_Widget_Archives' ); + register_widget( 'Hybrid_Widget_Authors' ); + register_widget( 'Hybrid_Widget_Bookmarks' ); + register_widget( 'Hybrid_Widget_Calendar' ); + register_widget( 'Hybrid_Widget_Categories' ); + register_widget( 'Hybrid_Widget_Nav_Menu' ); + register_widget( 'Hybrid_Widget_Pages' ); + register_widget( 'Hybrid_Widget_Search' ); + register_widget( 'Hybrid_Widget_Tags' ); +} + +/** + * Unregister default WordPress widgets we don't need. The theme adds its own + * versions of these widgets. + * + * @since 0.3.2 + * @uses unregister_widget() Removes individual widgets. + * @link http://codex.wordpress.org/WordPress_Widgets_Api + */ +function hybrid_unregister_widgets() { + unregister_widget( 'WP_Widget_Archives' ); + unregister_widget( 'WP_Widget_Calendar' ); + unregister_widget( 'WP_Widget_Categories' ); + unregister_widget( 'WP_Widget_Links' ); + unregister_widget( 'WP_Nav_Menu_Widget' ); + unregister_widget( 'WP_Widget_Pages' ); + unregister_widget( 'WP_Widget_Recent_Posts' ); + unregister_widget( 'WP_Widget_Search' ); + unregister_widget( 'WP_Widget_Tag_Cloud' ); +} + +/** + * Loads the Primary widget area. Users can overwrite 'sidebar-primary.php'. + * + * @since 0.2.2 + * @uses get_sidebar() Checks for the template in the child and parent theme. + */ +function hybrid_get_primary() { + get_sidebar( 'primary' ); +} + +/** + * Loads the Secondary widget area. Users can overwrite 'sidebar-secondary.php'. + * + * @since 0.2.2 + * @uses get_sidebar() Checks for the template in the child and parent theme. + */ +function hybrid_get_secondary() { + get_sidebar( 'secondary' ); +} + +/** + * Loads the Subsidiary widget area. Users can overwrite 'sidebar-subsidiary.php'. + * + * @since 0.3.1 + * @uses get_sidebar() Checks for the template in the child and parent theme. + */ +function hybrid_get_subsidiary() { + get_sidebar( 'subsidiary' ); +} + +/** + * Loads the Utility: Before Content widget area. Users can overwrite + * 'sidebar-before-content.php' in child themes. + * + * @since 0.4 + * @uses get_sidebar() Checks for the template in the child and parent theme. + */ +function hybrid_get_utility_before_content() { + get_sidebar( 'before-content' ); +} + +/** + * Loads the Utility: After Content widget area. Users can overwrite + * 'sidebar-after-content.php' in child themes. + * + * @since 0.4 + * @uses get_sidebar() Checks for the template in the child and parent theme. + */ +function hybrid_get_utility_after_content() { + get_sidebar( 'after-content' ); +} + +/** + * Loads the Utility: After Singular widget area. Users can overwrite + * 'sidebar-after-singular.php' in child themes. + * + * @since 0.7 + * @uses get_sidebar() Checks for the template in the child and parent theme. + */ +function hybrid_get_utility_after_singular() { + get_sidebar( 'after-singular' ); +} + +/** + * Removes all widget areas on the No Widgets page template. We're only going to run + * it on the No Widgets template. Users that need additional templates without widgets + * should create a simliar function in their child theme. + * + * @since 0.5 + * @uses sidebars_widgets Filter to remove all widget areas + */ +function remove_sidebars( $sidebars_widgets ) { + global $wp_query; + + if ( is_singular() ) { + $template = get_post_meta( $wp_query->post->ID, "_wp_{$wp_query->post->post_type}_template", true ); + if ( 'no-widgets.php' == $template || "{$wp_query->post->post_type}-no-widgets.php" == $template ) + $sidebars_widgets = array( false ); + } + return $sidebars_widgets; +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/images/pingback.png b/wp-content/themes/hybrid/library/images/pingback.png new file mode 100644 index 0000000000000000000000000000000000000000..71ab6f75224655d63fe34ee965d152bb90acbabc Binary files /dev/null and b/wp-content/themes/hybrid/library/images/pingback.png differ diff --git a/wp-content/themes/hybrid/library/images/trackback.png b/wp-content/themes/hybrid/library/images/trackback.png new file mode 100644 index 0000000000000000000000000000000000000000..71ab6f75224655d63fe34ee965d152bb90acbabc Binary files /dev/null and b/wp-content/themes/hybrid/library/images/trackback.png differ diff --git a/wp-content/themes/hybrid/library/js/drop-downs.js b/wp-content/themes/hybrid/library/js/drop-downs.js new file mode 100644 index 0000000000000000000000000000000000000000..ba10ba22865e26fc4c6dc2ebeae84dc9b5500b2f --- /dev/null +++ b/wp-content/themes/hybrid/library/js/drop-downs.js @@ -0,0 +1,77 @@ +/** + * Superfish v1.4.8 - jQuery menu widget + * Copyright (c) 2008 Joel Birch + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt + */ +;(function($){$.fn.superfish=function(op){var sf=$.fn.superfish,c=sf.c,$arrow=$(['<span class="',c.arrowClass,'"> »</span>'].join('')),over=function(){var $$=$(this),menu=getMenu($$);clearTimeout(menu.sfTimer);$$.showSuperfishUl().siblings().hideSuperfishUl()},out=function(){var $$=$(this),menu=getMenu($$),o=sf.op;clearTimeout(menu.sfTimer);menu.sfTimer=setTimeout(function(){o.retainPath=($.inArray($$[0],o.$path)>-1);$$.hideSuperfishUl();if(o.$path.length&&$$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path)}},o.delay)},getMenu=function($menu){var menu=$menu.parents(['ul.',c.menuClass,':first'].join(''))[0];sf.op=sf.o[menu.serial];return menu},addArrow=function($a){$a.addClass(c.anchorClass).append($arrow.clone())};return this.each(function(){var s=this.serial=sf.o.length;var o=$.extend({},sf.defaults,op);o.$path=$('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){$(this).addClass([o.hoverClass,c.bcClass].join(' ')).filter('li:has(ul)').removeClass(o.pathClass)});sf.o[s]=sf.op=o;$('li:has(ul)',this)[($.fn.hoverIntent&&!o.disableHI)?'hoverIntent':'hover'](over,out).each(function(){if(o.autoArrows)addArrow($('>a:first-child',this))}).not('.'+c.bcClass).hideSuperfishUl();var $a=$('a',this);$a.each(function(i){var $li=$a.eq(i).parents('li');$a.eq(i).focus(function(){over.call($li)}).blur(function(){out.call($li)})});o.onInit.call(this)}).each(function(){var menuClasses=[c.menuClass];if(sf.op.dropShadows&&!($.browser.msie&&$.browser.version<7))menuClasses.push(c.shadowClass);$(this).addClass(menuClasses.join(' '))})};var sf=$.fn.superfish;sf.o=[];sf.op={};sf.IE7fix=function(){var o=sf.op;if($.browser.msie&&$.browser.version>6&&o.dropShadows&&o.animation.opacity!=undefined)this.toggleClass(sf.c.shadowClass+'-off')};sf.c={bcClass:'sf-breadcrumb',menuClass:'sf-js-enabled',anchorClass:'sf-with-ul',arrowClass:'sf-sub-indicator',shadowClass:'sf-shadow'};sf.defaults={hoverClass:'sfHover',pathClass:'overideThisToUse',pathLevels:1,delay:800,animation:{opacity:'show'},speed:'normal',autoArrows:true,dropShadows:true,disableHI:false,onInit:function(){},onBeforeShow:function(){},onShow:function(){},onHide:function(){}};$.fn.extend({hideSuperfishUl:function(){var o=sf.op,not=(o.retainPath===true)?o.$path:'';o.retainPath=false;var $ul=$(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass).find('>ul').hide().css('visibility','hidden');o.onHide.call($ul);return this},showSuperfishUl:function(){var o=sf.op,sh=sf.c.shadowClass+'-off',$ul=this.addClass(o.hoverClass).find('>ul:hidden').css('visibility','visible');sf.IE7fix.call($ul);o.onBeforeShow.call($ul);$ul.animate(o.animation,o.speed,function(){sf.IE7fix.call($ul);o.onShow.call($ul)});return this}})})(jQuery); + +/** + * Supersubs v0.2b - jQuery plugin + * Copyright (c) 2008 Joel Birch + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * + * This plugin automatically adjusts submenu widths of suckerfish-style menus to that of + * their longest list item children. If you use this, please expect bugs and report them + * to the jQuery Google Group with the word 'Superfish' in the subject line. + * + */ +;(function($){$.fn.supersubs=function(options){var opts=$.extend({},$.fn.supersubs.defaults,options);return this.each(function(){var $$=$(this);var o=$.meta?$.extend({},opts,$$.data()):opts;var fontsize=$('<li id="menu-fontsize">—</li>').css({'padding':0,'position':'absolute','top':'-999em','width':'auto'}).appendTo($$).width();$('#menu-fontsize').remove();$ULs=$$.find('ul');$ULs.each(function(i){var $ul=$ULs.eq(i);var $LIs=$ul.children();var $As=$LIs.children('a');var liFloat=$LIs.css('white-space','nowrap').css('float');var emWidth=$ul.add($LIs).add($As).css({'float':'none','width':'auto'}).end().end()[0].clientWidth/fontsize;emWidth+=o.extraWidth;if(emWidth>o.maxWidth){emWidth=o.maxWidth}else if(emWidth<o.minWidth){emWidth=o.minWidth}emWidth+='em';$ul.css('width',emWidth);$LIs.css({'float':liFloat,'width':'100%','white-space':'normal'}).each(function(){var $childUl=$('>ul',this);var offsetDirection=$childUl.css('left')!==undefined?'left':'right';$childUl.css(offsetDirection,emWidth)})})})};$.fn.supersubs.defaults={minWidth:9,maxWidth:25,extraWidth:0}})(jQuery); + +/** + * Hybrid drop-downs. + * @author Justin Tadlock + * @license http://www.gnu.org/licenses/gpl.html + * @copyright 2008 - 2010 Justin Tadlock + */ +$j = jQuery.noConflict(); + +$j(document).ready( + function() { + + /* Drop-down controls. */ + $j('div.menu ul:first-child').supersubs( { + minWidth: 12, + maxWidth: 27, + extraWidth: 1 + } + ).superfish( { + delay: 100, + animation: { opacity: 'show', height: 'show' }, + dropShadows: false + } + ); + + /* @deprecated 0.8 Page and cat nav drop-downs. */ + $j('#page-nav ul.menu').supersubs( { + minWidth: 12, + maxWidth: 27, + extraWidth: 1 + } + ).superfish( { + delay: 100, + animation: { opacity: 'show', height: 'show' }, + dropShadows: false + } + ); + $j('#cat-nav ul.menu').supersubs( { + minWidth: 12, + maxWidth: 27, + extraWidth: 1 + } + ).superfish( { + delay: 100, + animation: { opacity: 'show', height: 'show' }, + dropShadows: false + } + ); + } +); \ No newline at end of file diff --git a/wp-content/themes/hybrid/library/legacy/deprecated.php b/wp-content/themes/hybrid/library/legacy/deprecated.php new file mode 100644 index 0000000000000000000000000000000000000000..ef56e7a42c8446cb8202272b1882f37441108eac --- /dev/null +++ b/wp-content/themes/hybrid/library/legacy/deprecated.php @@ -0,0 +1,555 @@ +<?php +/** + * Deprecated functions that should be avoided in favor of newer functions. Also handles + * removed functions to avoid errors. Users should not use these functions in their child + * themes. The functions below will all be removed at some point in a future release. If your + * child theme is using one of these, you should use the listed alternative or remove it from + * your child theme if necessary. + * + * @package Hybrid + * @subpackage Legacy + */ + +/** + * Old equivalent of hybrid_entry_class(). + * + * @since 0.2 + * @deprecated 0.5 Use hybrid_entry_class() instead. + */ +function hybrid_post_class( $deprecated = '' ) { + _deprecated_function( __FUNCTION__, '0.5', 'hybrid_entry_class()' ); + hybrid_entry_class( $deprecated ); +} + +/** + * Displays the category navigation menu and wraps it in a <div> element. + * + * @deprecated 0.6 Child themes should manually add a category menu using wp_list_categories(). + * @internal This function needs to stay for the long haul (post-1.0). + * + * @since 0.1 + */ +function hybrid_cat_nav() { + _deprecated_function( __FUNCTION__, '0.6', 'wp_list_categories()' ); + + echo "<div id='cat-navigation'>"; + + do_action( 'hybrid_before_cat_nav' ); + + echo apply_filters( 'hybrid_cat_nav', hybrid_category_menu( 'echo=0' ) ); + + do_action( 'hybrid_after_cat_nav' ); + + echo '</div>'; +} + +/** + * Menu listing for categories. Much like WP's wp_page_menu() functionality. + * + * @deprecated 0.6 Child themes should manually add a category menu using wp_list_categories(). + * @internal This function needs to stay for the long haul (post-1.0). + * + * @since 0.2.3 + * @uses wp_list_categories() Creates a list of the site's categories + * @link http://codex.wordpress.org/Template_Tags/wp_list_categories + * @param array $args + */ +function hybrid_category_menu( $args = array() ) { + _deprecated_function( __FUNCTION__, '0.6', 'wp_nav_menu()' ); + + $defaults = array( 'menu_class' => 'cat-nav', 'style' => 'list', 'hide_empty' => 1, 'use_desc_for_title' => 0, 'depth' => 4, 'hierarchical' => true, 'echo' => 1 ); + $args = apply_filters( 'hybrid_category_menu_args', $args ); + $args = wp_parse_args( $args, $defaults ); + extract( $args ); + + $args['title_li'] = false; + $args['echo'] = false; + + $menu = '<div id="' . $menu_class . '" class="' . $menu_class . '"><ul class="menu sf-menu">'; + + $menu .= str_replace( array( "\t", "\n", "\r" ), '', wp_list_categories( $args ) ); + + $menu .= '</ul></div>'; + + $menu = apply_filters( 'hybrid_category_menu', $menu ); + + if ( $echo ) + echo $menu; + else + return $menu; +} + +/** + * Loads the theme search form. + * + * @deprecated 0.6 Users should add get_search_form() whenever needed. + * @since 0.1 + */ +function hybrid_search_form() { + _deprecated_function( __FUNCTION__, '0.6', 'get_search_form()' ); + + $search = apply_filters( 'hybrid_search_form', false ); + + if ( empty( $search ) ) + get_search_form(); + else + echo $search; +} + +/** + * After single posts but before the comments template. + * @since 0.2 + * @deprecated 0.7 Use hybrid_after_singular(). + */ +function hybrid_after_single() { + _deprecated_function( __FUNCTION__, '0.7', 'hybrid_after_singular()' ); + hybrid_after_singular(); +} + +/** + * After page content but before the comments template. + * @since 0.2 + * @deprecated 0.7 Use hybrid_after_singular(). + */ +function hybrid_after_page() { + _deprecated_function( __FUNCTION__, '0.7', 'hybrid_after_singular()' ); + hybrid_after_singular(); +} + +/** + * Loads the Utility: After Single widget area. + * + * @since 0.4 + * @deprecated 0.7 Use hybrid_get_utility_after_singular(). + */ +function hybrid_get_utility_after_single() { + _deprecated_function( __FUNCTION__, '0.7', 'hybrid_get_utility_after_singular()' ); + hybrid_get_utility_after_singular(); +} + +/** + * Loads the Utility: After Page widget area. + * + * @since 0.4 + * @deprecated 0.7 Use hybrid_get_utility_after_singular(). + */ +function hybrid_get_utility_after_page() { + _deprecated_function( __FUNCTION__, '0.7', 'hybrid_get_utility_after_singular()' ); + hybrid_get_utility_after_singular(); +} + +/** + * Displays the page navigation menu. Also adds some extra classes and IDs for + * better CSS styling. To customize, filter wp_page_menu or wp_page_menu_args. + * + * @deprecated 0.8 Theme now supports the WordPress 3.0+ menu system. Since this + * function and its accompanying hooks have been such a huge part of the theme, this + * needs to stay for a while. Maybe remove around v.2.0. ;) + * + * @since 0.1 + * @uses wp_page_menu() Creates a menu of pages + * @link http://codex.wordpress.org/Template_Tags/wp_page_menu + */ +function hybrid_page_nav() { + _deprecated_function( __FUNCTION__, '0.8', 'hybrid_get_primary_menu()' ); + + /* Opening wrapper for the navigation area. */ + echo '<div id="navigation">' . "\n\t\t\t"; + + /* Before page nav hook. */ + do_atomic( 'before_page_nav' ); + + /* Arguments for wp_page_menu(). Users should filter 'wp_page_menu_args' to change. */ + $args = array( + 'show_home' => __( 'Home', hybrid_get_textdomain() ), + 'menu_class' => 'page-nav', + 'sort_column' => 'menu_order', + 'depth' => 4, + 'echo' => 0 + ); + + /* Strips formatting and spacing to make the code less messy on display. */ + $nav = str_replace( array( "\r", "\n", "\t" ), '', wp_page_menu( $args ) ); + + /* Adds the #page-nav ID to the wrapping element. */ + $nav = str_replace( '<div class="', '<div id="page-nav" class="', $nav ); + + /* Adds the .menu and .sf-menu classes for use with the drop-down JavaScript. */ + echo preg_replace( '/<ul>/', '<ul class="menu sf-menu">', $nav, 1 ); + + /* After page nav hook. */ + do_atomic( 'after_page_nav' ); + + /* Closes the navigation area wrapper. */ + echo "\n\t</div><!-- #navigation -->\n"; +} + +/** + * Check for widgets in widget-ready areas. + * + * @since 0.2 + * @deprecated 0.6.1 Use WP's is_active_sidebar() instead. + * @param string|int $index name|ID of widget area. + * @return bool + */ +function is_sidebar_active( $index = 1 ) { + _deprecated_function( __FUNCTION__, '0.6.1', 'is_active_sidebar()' ); + return is_active_sidebar( $index ); +} + +/** + * Loads the comment form. + * + * @since 0.7 + * @deprecated 0.8 Theme now uses the comment_form() WordPress 3.0+ function. + */ +function hybrid_get_comment_form() { + _deprecated_function( __FUNCTION__, '0.8', 'comment_form()' ); + comment_form(); +} + +/** + * Fires before the comment form. + * + * @since 0.6 + * @deprecated 0.8 Theme now uses the comment_form() WordPress 3.0+ function. + */ +function hybrid_before_comment_form() { + _deprecated_function( __FUNCTION__, '0.8' ); + do_atomic( 'before_comment_form' ); +} + +/** + * Fires after the comment form. + * + * @since 0.6 + * @deprecated 0.8 Theme now uses the comment_form() WordPress 3.0+ function. + */ +function hybrid_after_comment_form() { + _deprecated_function( __FUNCTION__, '0.8' ); + do_atomic( 'after_comment_form' ); +} +/** + * Displays an individual comment author. + * + * @since 0.2.2 + * @deprecated 0.8 Use hybrid_comment_author_shortcode() instead. + */ +function hybrid_comment_author() { + _deprecated_function( __FUNCTION__, '0.8', 'hybrid_comment_author_shortcode()' ); + return hybrid_comment_author_shortcode(); +} + +/* === Removed Functions === */ + +/* Functions removed in the 0.4 branch. */ + +function hybrid_theme_meta() { + hybrid_function_removed( 'hybrid_theme_meta' ); +} + +function hybrid_meta_other() { + hybrid_function_removed( 'hybrid_meta_other' ); +} + +function hybrid_load_SimplePie() { + hybrid_function_removed( 'hybrid_load_SimplePie' ); +} + +function hybrid_lifestream() { + hybrid_function_removed( 'hybrid_lifestream' ); +} + +function hybrid_admin_enqueue_style() { + hybrid_function_removed( 'hybrid_admin_enqueue_style' ); +} + +function hybrid_page_id() { + hybrid_function_removed( 'hybrid_page_id' ); +} + +function hybrid_page_class() { + hybrid_function_removed( 'hybrid_page_class' ); +} + +/* Functions removed in the 0.5 branch. */ + +function hybrid_all_tags() { + hybrid_function_removed( 'hybrid_all_tags' ); +} + +function hybrid_get_users() { + hybrid_function_removed( 'hybrid_get_users' ); +} + +function hybrid_footnote() { + hybrid_function_removed( 'hybrid_footnote' ); +} + +function hybrid_related_posts() { + hybrid_function_removed( 'hybrid_related_posts' ); +} + +function hybrid_insert() { + hybrid_function_removed( 'hybrid_insert' ); +} + +/* Functions removed in the 0.6 branch. */ + +function hybrid_get_authors() { + hybrid_function_removed( 'hybrid_get_authors' ); +} + +function hybrid_credit() { + hybrid_function_removed( 'hybrid_credit' ); +} + +function hybrid_query_counter() { + hybrid_function_removed( 'hybrid_query_counter' ); +} + +function hybrid_copyright() { + hybrid_function_removed( 'hybrid_copyright' ); +} + +function hybrid_series() { + hybrid_function_removed( 'hybrid_series' ); +} + +/* Functions removed in the 0.7 branch. */ + +function hybrid_all_cats() { + hybrid_function_removed( 'hybrid_all_cats' ); +} + +function hybrid_all_cat_slugs() { + hybrid_function_removed( 'hybrid_all_cat_slugs' ); +} + +function hybrid_all_tag_slugs() { + hybrid_function_removed( 'hybrid_all_tag_slugs' ); +} + +function hybrid_mime_type_icon() { + hybrid_function_removed( 'hybrid_mime_type_icon' ); +} + +function hybrid_attachment_icon() { + hybrid_function_removed( 'hybrid_attachment_icon' ); +} + +function hybrid_widow() { + hybrid_function_removed( 'hybrid_widow' ); +} + +function hybrid_dash() { + hybrid_function_removed( 'hybrid_dash' ); +} + +function hybrid_text_filter() { + hybrid_function_removed( 'hybrid_text_filter' ); +} + +function hybrid_allowed_tags() { + hybrid_function_removed( 'hybrid_allowed_tags' ); +} + +function hybrid_typography() { + hybrid_function_removed( 'hybrid_typography' ); +} + +function hybrid_before_cat_nav() { + hybrid_function_removed( 'hybrid_before_cat_nav' ); +} + +function hybrid_after_cat_nav() { + hybrid_function_removed( 'hybrid_after_cat_nav' ); +} + +function hybrid_first_paragraph() { + hybrid_function_removed( 'hybrid_first_paragraph' ); +} + +function hybrid_category_term_link() { + hybrid_function_removed( 'hybrid_category_term_link' ); +} + +function hybrid_post_tag_term_link() { + hybrid_function_removed( 'hybrid_post_tag_term_link' ); +} + +function hybrid_search_highlight() { + hybrid_function_removed( 'hybrid_search_highlight' ); +} + +function hybrid_primary_inserts() { + hybrid_function_removed( 'hybrid_primary_inserts' ); +} + +function hybrid_secondary_inserts() { + hybrid_function_removed( 'hybrid_secondary_inserts' ); +} + +function hybrid_subsidiary_inserts() { + hybrid_function_removed( 'hybrid_subsidiary_inserts' ); +} + +function hybrid_utility_inserts() { + hybrid_function_removed( 'hybrid_utility_inserts' ); +} + +function hybrid_widget_init() { + hybrid_function_removed( 'hybrid_widget_init' ); +} + +function hybrid_primary_var() { + hybrid_function_removed( 'hybrid_primary_var' ); +} + +function hybrid_secondary_var() { + hybrid_function_removed( 'hybrid_secondary_var' ); +} + +function hybrid_subsidiary_var() { + hybrid_function_removed( 'hybrid_subsidiary_var' ); +} + +function hybrid_legacy_comments() { + hybrid_function_removed( 'hybrid_legacy_comments' ); +} + +function hybrid_head_feeds() { + hybrid_function_removed( 'hybrid_head_feeds' ); +} + +function hybrid_legacy_functions() { + hybrid_function_removed( 'hybrid_legacy_functions' ); +} + +function hybrid_capability_check() { + hybrid_function_removed( 'hybrid_capability_check' ); +} + +function hybrid_template_in_use() { + hybrid_function_removed( 'hybrid_template_in_use' ); +} + +function hybrid_get_utility_404() { + hybrid_function_removed( 'hybrid_get_utility_404' ); +} + +function hybrid_before_comments() { + hybrid_function_removed( 'hybrid_before_comments' ); +} + +function hybrid_meta_abstract() { + hybrid_function_removed( 'hybrid_meta_abstract' ); +} + +function hybrid_child_settings() { + hybrid_function_removed( 'hybrid_child_settings' ); +} + +function hybrid_post_meta_boxes() { + hybrid_function_removed( 'hybrid_post_meta_boxes' ); +} + +function hybrid_page_meta_boxes() { + hybrid_function_removed( 'hybrid_page_meta_boxes' ); +} + +function post_meta_boxes() { + hybrid_function_removed( 'post_meta_boxes' ); +} + +function page_meta_boxes() { + hybrid_function_removed( 'page_meta_boxes' ); +} + +function hybrid_create_meta_box() { + hybrid_function_removed( 'hybrid_create_meta_box' ); +} + +function hybrid_save_meta_data() { + hybrid_function_removed( 'hybrid_save_meta_data' ); +} + +function get_meta_text_input() { + hybrid_function_removed( 'get_meta_text_input' ); +} + +function get_meta_select() { + hybrid_function_removed( 'get_meta_select' ); +} + +function get_meta_textarea() { + hybrid_function_removed( 'get_meta_textarea' ); +} + +function hybrid_error() { + hybrid_function_removed( 'hybrid_error' ); +} + +function hybrid_head_canonical() { + hybrid_function_removed( 'hybrid_head_canonical' ); +} + +function hybrid_disable_pagenavi_style() { + hybrid_function_removed( 'hybrid_disable_pagenavi_style' ); +} + +function hybrid_comments_feed() { + hybrid_function_removed( 'hybrid_comments_feed' ); +} + +function hybrid_before_page_nav() { + hybrid_function_removed( 'hybrid_before_page_nav' ); +} + +function hybrid_after_page_nav() { + hybrid_function_removed( 'hybrid_after_page_nav' ); +} + +function hybrid_comment_published_link_shortcode() { + hybrid_function_removed( 'hybrid_comment_published_link_shortcode' ); +} + +/* Functions removed in the 0.8 branch. */ + +function hybrid_content_wrapper() { + hybrid_function_removed( 'hybrid_content_wrapper' ); +} + +function hybrid_handle_attachment() { + hybrid_function_removed( 'hybrid_handle_attachment' ); +} + +function hybrid_widget_class() { + hybrid_function_removed( 'hybrid_widget_class' ); +} + +function hybrid_before_ping_list() { + hybrid_function_removed( 'hybrid_before_ping_list' ); +} + +function hybrid_after_ping_list() { + hybrid_function_removed( 'hybrid_after_ping_list' ); +} + +function hybrid_pings_callback() { + hybrid_function_removed( 'hybrid_pings_callback' ); +} + +function hybrid_pings_end_callback() { + hybrid_function_removed( 'hybrid_pings_end_callback' ); +} + +/** + * Message to display for removed functions. + * @since 0.5 + */ +function hybrid_function_removed( $func = '' ) { + die( sprintf( __( '<code>%1$s</code> — This function has been removed or replaced by another function.', hybrid_get_textdomain() ), $func ) ); +} + +?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/license.txt b/wp-content/themes/hybrid/license.txt new file mode 100644 index 0000000000000000000000000000000000000000..63e41a44cffe44662260b7b902e4b065b201b515 --- /dev/null +++ b/wp-content/themes/hybrid/license.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. \ No newline at end of file diff --git a/wp-content/themes/hybrid/menu-primary.php b/wp-content/themes/hybrid/menu-primary.php new file mode 100644 index 0000000000000000000000000000000000000000..e974de23f438939df3d2fb306906440bad589f19 --- /dev/null +++ b/wp-content/themes/hybrid/menu-primary.php @@ -0,0 +1,24 @@ +<?php +/** + * Primary Menu Template + * + * Displays the Primary Menu if it has active menu items. + * @link http://themehybrid.com/themes/hybrid/menus + * + * @package Hybrid + * @subpackage Template + */ + +if ( has_nav_menu( 'primary-menu' ) ) : ?> + + <div id="primary-menu" class="menu-container"> + + <?php hybrid_before_primary_menu(); // Before primary menu hook ?> + + <?php wp_nav_menu( array( 'theme_location' => 'primary-menu', 'container_class' => 'menu', 'menu_class' => '', 'fallback_cb' => '' ) ); ?> + + <?php hybrid_after_primary_menu(); // After primary menu hook ?> + + </div><!-- #primary-menu .menu-container --> + +<?php endif; ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/minute.php b/wp-content/themes/hybrid/minute.php new file mode 100644 index 0000000000000000000000000000000000000000..820fbf6939d7f4e857ed6f02da29d4e5a5e2f896 --- /dev/null +++ b/wp-content/themes/hybrid/minute.php @@ -0,0 +1,62 @@ +<?php +/** + * Minute Template + * + * This template is used when a minutely archive is shown. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <div class="archive-info date-info time-info"> + <h1 class="archive-title date-title time-title"><?php echo ( get_query_var( 'hour' ) ) ? get_the_time( __( 'g:i a', 'hybrid' ) ) : sprintf( __( 'Minute %1$s', 'hybrid' ), get_the_time( __( 'i', 'hybrid' ) ) ); ?></h1> + + <div class="archive-description date-description time-description"> + <p> + <?php if ( get_query_var( 'hour' ) ) : ?> + <?php printf( __( 'You are browsing the archive for %1$s.', 'hybrid' ), get_the_time( __( 'g:i a', 'hybrid' ) ) ); ?> + <?php else : ?> + <?php printf( __( 'You are browsing the archive for minute %1$s.', 'hybrid' ), get_the_time( __( 'i', 'hybrid' ) ) ); ?> + <?php endif; ?> + </p> + </div><!-- .archive-description --> + + </div><!-- .archive-info --> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php get_the_image( array( 'custom_key' => array( 'Thumbnail' ), 'size' => 'thumbnail' ) ); ?> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-summary"> + <?php the_excerpt(); ?> + </div><!-- .entry-summary --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/month.php b/wp-content/themes/hybrid/month.php new file mode 100644 index 0000000000000000000000000000000000000000..56cb5e7b69949a0eb00df9cd7a98ff38a6616c9b --- /dev/null +++ b/wp-content/themes/hybrid/month.php @@ -0,0 +1,59 @@ +<?php +/** + * Month Template + * + * This template is used when a monthly archive is shown. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <div class="archive-info date-info month-info"> + + <h1 class="archive-title date-title month-title"><?php single_month_title( ' ', true ); ?></h1> + + <div class="archive-description date-description month-description"> + <p> + <?php printf( __( 'You are browsing the archive for %1$s.', 'hybrid' ), single_month_title( ' ', false ) ); ?> + </p> + </div><!-- .archive-description --> + + </div><!-- .archive-info --> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php get_the_image( array( 'custom_key' => array( 'Thumbnail' ), 'size' => 'thumbnail' ) ); ?> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-summary"> + <?php the_excerpt(); ?> + </div><!-- .entry-summary --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/navigation-links.php b/wp-content/themes/hybrid/navigation-links.php new file mode 100644 index 0000000000000000000000000000000000000000..f507a0c5e37566eb760c4f83b1548cf72e10849a --- /dev/null +++ b/wp-content/themes/hybrid/navigation-links.php @@ -0,0 +1,35 @@ +<?php +/** + * Navigation Links Template + * + * This template is used to show your your next/previous post links on singular pages and + * the next/previous posts links on the home/posts page and archive pages. It also integrates + * with the WP PageNavi plugin if activated. + * + * @package Hybrid + * @subpackage Template + */ +?> + + <?php if ( is_attachment() ) : ?> + + <div class="navigation-links"> + <?php previous_post_link( '%link', '<span class="previous">' . __( '« Return to entry', 'hybrid' ) . '</span>' ); ?> + </div> + + <?php elseif ( is_singular( 'post' ) ) : ?> + + <div class="navigation-links"> + <?php previous_post_link( '%link', '<span class="previous">' . __( '« Previous', 'hybrid' ) . '</span>' ); ?> + <?php next_post_link( '%link', '<span class="next">' . __( 'Next »', 'hybrid' ) . '</span>' ); ?> + </div><!-- .navigation-links --> + + <?php elseif ( !is_singular() && function_exists( 'wp_pagenavi' ) ) : wp_pagenavi(); ?> + + <?php elseif ( !is_singular() && $nav = get_posts_nav_link( array( 'sep' => '', 'prelabel' => '<span class="previous">' . __( '« Previous', 'hybrid' ) . '</span>', 'nxtlabel' => '<span class="next">' . __( 'Next »', 'hybrid' ) . '</span>' ) ) ) : ?> + + <div class="navigation-links"> + <?php echo $nav; ?> + </div><!-- .navigation-links --> + + <?php endif; ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/page-archives.php b/wp-content/themes/hybrid/page-archives.php new file mode 100644 index 0000000000000000000000000000000000000000..f9fd2cc5024bd10944b8a4b6f89e1580f8a41eab --- /dev/null +++ b/wp-content/themes/hybrid/page-archives.php @@ -0,0 +1,83 @@ +<?php +/** + * Template Name: Archives + * + * This will list your categories and monthly archives by default. + * @link http://themehybrid.com/themes/hybrid/page-templates/archives + * + * Alternately, you can activate an archives plugin. + * @link http://justinblanton.com/projects/smartarchives + * @link http://wordpress.org/extend/plugins/clean-archives-reloaded + * @link http://www.geekwithlaptop.com/projects/clean-archives + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <?php the_content(); ?> + + <?php if ( function_exists( 'clean_my_archives' ) ) : echo clean_my_archives(); ?> + + <?php elseif ( function_exists( 'smartArchives' ) ) : smartArchives( 'both', '' ); ?> + + <?php elseif ( function_exists( 'wp_smart_archives' ) ) : wp_smart_archives(); ?> + + <?php elseif ( function_exists( 'srg_clean_archives' ) ) : srg_clean_archives(); ?> + + <?php else : ?> + + <h2><?php _e( 'Archives by category', 'hybrid' ); ?></h2> + + <ul class="xoxo category-archives"> + <?php wp_list_categories( array( 'feed' => __( 'RSS', 'hybrid' ), 'show_count' => true, 'use_desc_for_title' => false, 'title_li' => false ) ); ?> + </ul><!-- .xoxo .category-archives --> + + <h2><?php _e( 'Archives by month', 'hybrid' ); ?></h2> + + <ul class="xoxo monthly-archives"> + <?php wp_get_archives( array( 'show_post_count' => true, 'type' => 'monthly' ) ); ?> + </ul><!-- .xoxo .monthly-archives --> + + <?php endif; ?> + + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/page-authors.php b/wp-content/themes/hybrid/page-authors.php new file mode 100644 index 0000000000000000000000000000000000000000..cfafba6bd69b177a5c5254c19fe8b333d16ce885 --- /dev/null +++ b/wp-content/themes/hybrid/page-authors.php @@ -0,0 +1,79 @@ +<?php +/** + * Template Name: Authors + * + * The Authors page template is for listing the authors of your site. It shows each author's + * biographical information and avatar while linking the author's archive page. + * @link http://themehybrid.com/themes/hybrid/page-templates/authors + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <?php the_content(); ?> + + <?php foreach ( get_users_of_blog() as $author ) : ?> + + <?php $user = new WP_User( $author->ID ); ?> + + <?php if ( $user->has_cap( 'publish_posts' ) || $user->has_cap( 'edit_posts' ) || $user->has_cap( 'publish_pages' ) || $user->has_cap( 'edit_pages' ) ) : ?> + + <div id="hcard-<?php echo str_replace( ' ', '-', get_the_author_meta( 'user_nicename', $author->ID ) ); ?>" class="author-profile vcard clear"> + + <a href="<?php echo get_author_posts_url( $author->ID ); ?>" title="<?php the_author_meta( 'display_name', $author->ID ); ?>"> + <?php echo get_avatar( get_the_author_meta( 'user_email', $author->ID ), '100', '', get_the_author_meta( 'display_name', $author->ID ) ); ?> + </a> + <h2 class="author-name fn n"> + <a href="<?php echo get_author_posts_url( $author->ID ); ?>" title="<?php the_author_meta( 'display_name', $author->ID ); ?>"><?php the_author_meta( 'display_name', $author->ID ); ?></a> + </h2> + <p class="author-bio"> + <?php the_author_meta( 'description', $author->ID ); ?> + </p><!-- .author-bio --> + + </div><!-- .author-profile .vcard --> + + <?php endif; ?> + + <?php endforeach; ?> + + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/page-biography.php b/wp-content/themes/hybrid/page-biography.php new file mode 100644 index 0000000000000000000000000000000000000000..192ee2e828716373cc539fad51746ab708b8557e --- /dev/null +++ b/wp-content/themes/hybrid/page-biography.php @@ -0,0 +1,94 @@ +<?php +/** + * Template Name: Biography + * + * A page template for listing the page author's avatar, biographical info, and other links set in their profile. + * Should make it easy to create an about page or biography for single-author blogs. + * @link http://themehybrid.com/themes/hybrid/page-templates/biography + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <?php if ( $page != $wp_query->get( 'page' ) ) : ?> + + <div id="hcard-<?php the_author_meta( 'user_nicename' ); ?>" class="author-profile vcard"> + + <a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ) ); ?>" title="<?php the_author_meta( 'display_name' ); ?>"> + <?php echo get_avatar( get_the_author_meta( 'user_email' ), '100', '', get_the_author_meta( 'display_name' ) ); ?> + </a> + + <p class="author-bio"> + <?php the_author_meta( 'description' ); ?> + </p><!-- .author-bio --> + + <ul class="xoxo clear"> + + <?php if ( get_the_author_meta( 'nickname' ) ) : ?> + <li><strong><?php _e( 'Nickname:', 'hybrid' ); ?></strong> <span class="nickname"><?php the_author_meta( 'nickname' ); ?></span></li> + <?php endif; ?> + + <?php if ( get_the_author_meta( 'user_url' ) ) : ?> + <li><strong><?php _e( 'Website:', 'hybrid' ); ?></strong> <a class="url" href="<?php the_author_meta( 'user_url' ); ?>" title="<?php the_author_meta( 'user_url' ); ?>"><?php the_author_meta( 'user_url' ); ?></a></li> + <?php endif; ?> + + <?php if ( get_the_author_meta( 'aim' ) ) : ?> + <li><strong><?php _e( 'AIM:', 'hybrid' ); ?></strong> <a class="url" href="aim:goim?screenname=<?php the_author_meta( 'aim' ); ?>" title="<?php printf( __( 'IM with %1$s', 'hybrid' ), get_the_author_meta( 'aim' ) ); ?>"><?php the_author_meta( 'aim' ); ?></a></li> + <?php endif; ?> + + <?php if ( get_the_author_meta( 'jabber' ) ) : ?> + <li><strong><?php _e( 'Jabber:', 'hybrid' ); ?></strong> <a class="url" href="xmpp:<?php the_author_meta( 'jabber' ); ?>@jabberservice.com" title="<?php printf( __( 'IM with %1$s', 'hybrid' ), get_the_author_meta( 'jabber' ) ); ?>"><?php the_author_meta( 'jabber' ); ?></a></li> + <?php endif; ?> + + <?php if ( get_the_author_meta( 'yim' ) ) : ?> + <li><strong><?php _e( 'Yahoo:', 'hybrid' ); ?></strong> <a class="url" href="ymsgr:sendIM?<?php the_author_meta( 'yim' ); ?>" title="<?php printf( __( 'IM with %1$s', 'hybrid' ), get_the_author_meta( 'yim' ) ); ?>"><?php the_author_meta( 'yim' ); ?></a></li> + <?php endif; ?> + + </ul><!-- .xoxo --> + + </div><!-- .author-profile .vcard --> + + <?php endif; ?> + + <?php the_content(); ?> + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/page-blog.php b/wp-content/themes/hybrid/page-blog.php new file mode 100644 index 0000000000000000000000000000000000000000..8ef91e2416fb876e2a7c9dae76de176e21eeb8ad --- /dev/null +++ b/wp-content/themes/hybrid/page-blog.php @@ -0,0 +1,56 @@ +<?php +/** + * Template Name: Blog + * + * If you want to set up an alternate blog page, just use this template for your page. + * This template shows your latest posts. + * @link http://themehybrid.com/themes/hybrid/page-templates/blog + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php + $wp_query = new WP_Query(); + $wp_query->query( array( 'posts_per_page' => get_option( 'posts_per_page' ), 'paged' => $paged ) ); + $more = 0; + ?> + + <?php if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + <?php the_content( sprintf( __( 'Continue reading %1$s', 'hybrid' ), the_title( ' "', '"', false ) ) ); ?> + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php endwhile; ?> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/page-bookmarks.php b/wp-content/themes/hybrid/page-bookmarks.php new file mode 100644 index 0000000000000000000000000000000000000000..a459f917a24e54f74f8d29d73bfd3e1cb00537fb --- /dev/null +++ b/wp-content/themes/hybrid/page-bookmarks.php @@ -0,0 +1,69 @@ +<?php +/** + * Template Name: Bookmarks + * + * The bookmarks template is a page template that displays a list of all your bookmarks/links + * by link category below the main content of the page. + * @link http://themehybrid.com/themes/hybrid/page-templates/bookmarks + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <?php the_content(); ?> + + <?php $args = array( + 'title_li' => false, + 'title_before' => '<h2>', + 'title_after' => '</h2>', + 'category_before' => false, + 'category_after' => false, + 'categorize' => true, + 'show_description' => true, + 'between' => '<br />', + 'show_images' => false, + 'show_rating' => false, + ); ?> + <?php wp_list_bookmarks( $args ); ?> + + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/page-categories.php b/wp-content/themes/hybrid/page-categories.php new file mode 100644 index 0000000000000000000000000000000000000000..48153a69fb09e319fb0a380a2890a85a76b284d5 --- /dev/null +++ b/wp-content/themes/hybrid/page-categories.php @@ -0,0 +1,59 @@ +<?php +/** + * Template Name: Categories + * + * The categories template is a page template that lists your categories along with a link + * to the each category's RSS feed and post count. + * @link http://themehybrid.com/themes/hybrid/page-templates/categories + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <?php the_content(); ?> + + <ul class="xoxo category-archives"> + <?php wp_list_categories( array( 'feed' => __( 'RSS', 'hybrid' ), 'show_count' => true, 'use_desc_for_title' => false, 'title_li' => false ) ); ?> + </ul><!-- .xoxo .category-archives --> + + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/page-daily.php b/wp-content/themes/hybrid/page-daily.php new file mode 100644 index 0000000000000000000000000000000000000000..d04bfd52511083690ac1813bec723a14bfaa1979 --- /dev/null +++ b/wp-content/themes/hybrid/page-daily.php @@ -0,0 +1,58 @@ +<?php +/** + * Template Name: Daily + * + * The Daily page template is used to show a list of your post archives by day. Each day a + * post has been made is listed along with the number of posts for that particular day. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <?php the_content(); ?> + + <ul class="xoxo daily-archives"> + <?php wp_get_archives( array( 'type' => 'daily', 'show_post_count' => true ) ); ?> + </ul><!-- .xoxo .daily-archives --> + + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/page-logged-in.php b/wp-content/themes/hybrid/page-logged-in.php new file mode 100644 index 0000000000000000000000000000000000000000..f86e7cd8bea140d0b107024a72c73503fecc2ae8 --- /dev/null +++ b/wp-content/themes/hybrid/page-logged-in.php @@ -0,0 +1,76 @@ +<?php +/** + * Template Name: Logged In + * + * The Logged In template is a page template that allows only logged-in users to view the content + * of the page and its comments. If the user isn't logged in, a message to log in with a link to the + * WordPress login page will be displayed. If the site has open registration, a link to register will + * also be displayed. + * @link http://themehybrid.com/themes/hybrid/page-templates/logged-in + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() && is_user_logged_in() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + <?php the_content(); ?> + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php elseif ( have_posts() && !is_user_logged_in() ) : // If user is not logged in ?> + + <div id="post-0" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <p class="alert"> + <?php printf( __( 'You must be <a href="%1$s" title="Log in">logged in</a> to view the content of this page.', 'hybrid' ), wp_login_url( get_permalink() ) ); ?> + + <?php if ( get_option( 'users_can_register' ) ) printf( __( 'If you\'re not currently a member, please take a moment to <a href="%1$s" title="Register">register</a>.', 'hybrid' ), site_url( 'wp-login.php?action=register', 'login' ) ); ?> + </p><!-- .alert --> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- #post-0 .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/page-monthly.php b/wp-content/themes/hybrid/page-monthly.php new file mode 100644 index 0000000000000000000000000000000000000000..c15c0c14c5de2bbee9266bb6c32bf417b1dc46df --- /dev/null +++ b/wp-content/themes/hybrid/page-monthly.php @@ -0,0 +1,58 @@ +<?php +/** + * Template Name: Monthly + ** + * The Monthly page template is used to show a list of your post archives by month. For each month a + * post has been made, the month is listed along with the number of posts for that particular month. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <?php the_content(); ?> + + <ul class="xoxo monthly-archives"> + <?php wp_get_archives( array( 'type' => 'monthly', 'show_post_count' => true ) ); ?> + </ul><!-- .xoxo .monthly-archives --> + + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/page-no-widgets.php b/wp-content/themes/hybrid/page-no-widgets.php new file mode 100644 index 0000000000000000000000000000000000000000..0b95044948c387edc6062d5ca201267c67ed46ad --- /dev/null +++ b/wp-content/themes/hybrid/page-no-widgets.php @@ -0,0 +1,51 @@ +<?php +/** + * Template Name: No Widgets + * + * A template to use on pages that disables widgets in all widget areas. + * @link http://themehybrid.com/themes/hybrid/page-templates/no-widgets + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + <?php the_content(); ?> + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/page-post_tag-cloud.php b/wp-content/themes/hybrid/page-post_tag-cloud.php new file mode 100644 index 0000000000000000000000000000000000000000..35e69de7d0128abbf022eb6329083d76b8aa5ed5 --- /dev/null +++ b/wp-content/themes/hybrid/page-post_tag-cloud.php @@ -0,0 +1,59 @@ +<?php +/** + * Template Name: Post Tag Cloud + * + * The Tags template is a page template that displays a tag cloud of your post_tag (taxonomy) + * terms, linking to each term's archive. + * @link http://themehybrid.com/themes/hybrid/page-templates/tags + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <?php the_content(); ?> + + <p class="post_tag-cloud tag-cloud"> + <?php wp_tag_cloud( array( 'number' => 0 ) ); ?> + </p><!-- .post_tag-cloud .tag-cloud --> + + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/page-sitemap.php b/wp-content/themes/hybrid/page-sitemap.php new file mode 100644 index 0000000000000000000000000000000000000000..aa340bc49d508cff73290c173ef2da04ed3842ea --- /dev/null +++ b/wp-content/themes/hybrid/page-sitemap.php @@ -0,0 +1,119 @@ +<?php +/** + * Template Name: Sitemap + * + * The Sitemap template is a page template that creates and HTML-based sitemap of your + * site, listing nearly every page of your site. It lists your feeds, pages, archives, and posts. + * @link http://themehybrid.com/themes/hybrid/page-templates/sitemap + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <?php the_content(); ?> + + <h2><?php _e( 'Feeds', 'hybrid' ); ?></h2> + + <ul class="xoxo feeds"> + <li><a href="<?php bloginfo( 'rdf_url' ); ?>" title="<?php esc_attr_e( 'RDF/RSS 1.0 feed', 'hybrid' ); ?>"><?php _e( '<acronym title="Resource Description Framework">RDF</acronym> <acronym title="Really Simple Syndication">RSS</acronym> 1.0 feed', 'hybrid' ); ?></a></li> + <li><a href="<?php bloginfo( 'rss_url' ); ?>" title="<?php esc_attr_e( 'RSS 0.92 feed', 'hybrid' ); ?>"><?php _e( '<acronym title="Really Simple Syndication">RSS</acronym> 0.92 feed', 'hybrid' ); ?></a></li> + <li><a href="<?php bloginfo( 'rss2_url' ); ?>" title="<?php esc_attr_e( 'RSS 2.0 feed', 'hybrid' ); ?>"><?php _e( '<acronym title="Really Simple Syndication">RSS</acronym> 2.0 feed', 'hybrid' ); ?></a></li> + <li><a href="<?php bloginfo( 'atom_url' ); ?>" title="<?php esc_attr_e( 'Atom feed', 'hybrid' ); ?>"><?php _e( 'Atom feed', 'hybrid' ); ?></a></li> + <li><a href="<?php bloginfo( 'comments_rss2_url' ); ?>" title="<?php esc_attr_e( 'Comments RSS 2.0 feed', 'hybrid' ); ?>"><?php _e( 'Comments <acronym title="Really Simple Syndication">RSS</acronym> 2.0 feed', 'hybrid' ); ?></a></li> + </ul><!-- .xoxo .feeds --> + + <h2><?php _e( 'Pages', 'hybrid' ); ?></h2> + + <ul class="xoxo pages"> + <?php wp_list_pages( array( 'title_li' => false ) ); ?> + </ul><!-- .xoxo .pages --> + + <h2><?php _e( 'Category Archives', 'hybrid' ); ?></h2> + + <ul class="xoxo category-archives"> + <?php wp_list_categories( array( 'feed' => __( 'RSS', 'hybrid' ), 'show_count' => true, 'use_desc_for_title' => false, 'title_li' => false ) ); ?> + </ul><!-- .xoxo .category-archives --> + + <h2><?php _e( 'Author Archives', 'hybrid' ); ?></h2> + + <ul class="xoxo author-archives"> + <?php wp_list_authors( array( 'exclude_admin' => false, 'show_fullname' => true, 'feed' => __( 'RSS', 'hybrid' ), 'optioncount' => true, 'title_li' => false ) ); ?> + </ul><!-- .xoxo .author-archives --> + + <h2><?php _e( 'Yearly Archives', 'hybrid' ); ?></h2> + + <ul class="xoxo yearly-archives"> + <?php wp_get_archives( array( 'type' => 'yearly', 'show_post_count' => true ) ); ?> + </ul><!-- .xoxo .yearly-archives --> + + <h2><?php _e( 'Monthly Archives', 'hybrid' ); ?></h2> + + <ul class="xoxo monthly-archives"> + <?php wp_get_archives( array( 'type' => 'monthly', 'show_post_count' => true ) ); ?> + </ul><!-- .xoxo .monthly-archives --> + + <h2><?php _e( 'Weekly Archives', 'hybrid' ); ?></h2> + + <ul class="xoxo weekly-archives"> + <?php wp_get_archives( array( 'type' => 'weekly', 'show_post_count' => true ) ); ?> + </ul><!-- .xoxo .weekly-archives --> + + <h2><?php _e( 'Daily Archives', 'hybrid' ); ?></h2> + + <ul class="xoxo daily-archives"> + <?php wp_get_archives( array( 'type' => 'daily', 'show_post_count' => true ) ); ?> + </ul><!-- .xoxo .daily-archives --> + + <h2><?php _e( 'Tag Archives', 'hybrid' ); ?></h2> + + <p class="tag-cloud"> + <?php wp_tag_cloud( array( 'number' => 0 ) ); ?> + </p><!-- .tag-cloud --> + + <h2><?php _e( 'Blog Posts', 'hybrid' ); ?></h2> + + <ul class="xoxo post-archives"> + <?php wp_get_archives( array( 'type' => 'postbypost' ) ); ?> + </ul><!-- .xoxo .post-archives --> + + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/page-weekly.php b/wp-content/themes/hybrid/page-weekly.php new file mode 100644 index 0000000000000000000000000000000000000000..4f9127db4737246199256a07e57ee24481853866 --- /dev/null +++ b/wp-content/themes/hybrid/page-weekly.php @@ -0,0 +1,58 @@ +<?php +/** + * Template Name: Weekly + * + * The Weekly page template is used to show a list of your post archives by week. For each week + * a post has been made, the week is listed along with the number of posts for that particular week. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <?php the_content(); ?> + + <ul class="xoxo weekly-archives"> + <?php wp_get_archives( array( 'type' => 'weekly', 'show_post_count' => true ) ); ?> + </ul><!-- .xoxo .weekly-archives --> + + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/page-widgets.php b/wp-content/themes/hybrid/page-widgets.php new file mode 100644 index 0000000000000000000000000000000000000000..a5623b5d1ecfbb07e54a102bc436e85d68479b3c --- /dev/null +++ b/wp-content/themes/hybrid/page-widgets.php @@ -0,0 +1,45 @@ +<?php +/** + * Template Name: Widgets + * + * The Widgets template is a page template that is completely widgetized. It houses the + * 'Widgets Template' widget area. Customizations to this page should be done through widgets. + * @link http://themehybrid.com/themes/hybrid/page-templates/widgets + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php dynamic_sidebar( 'utility-widgets-template' ); ?> + + <?php wp_reset_query(); ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <?php edit_post_link( __( 'Edit', 'hybrid' ), '<p class="entry-meta"><span class="edit">', '</span></p>' ); ?> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/page-yearly.php b/wp-content/themes/hybrid/page-yearly.php new file mode 100644 index 0000000000000000000000000000000000000000..529097b5a4e7b79d3da73a4f474eb2bc8a5793d3 --- /dev/null +++ b/wp-content/themes/hybrid/page-yearly.php @@ -0,0 +1,58 @@ +<?php +/** + * Template Name: Yearly + * + * The Yearly page template is used to show a list of your post archives by year. For each year a + * post has been made, the year is listed along with the number of posts for that particular year. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <?php the_content(); ?> + + <ul class="xoxo yearly-archives"> + <?php wp_get_archives( array( 'type' => 'yearly', 'show_post_count' => true ) ); ?> + </ul><!-- .xoxo .yearly-archives --> + + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/page.php b/wp-content/themes/hybrid/page.php new file mode 100644 index 0000000000000000000000000000000000000000..a9f982d1dc8bb9c27804bbbd5ea6fdb725b16e1c --- /dev/null +++ b/wp-content/themes/hybrid/page.php @@ -0,0 +1,52 @@ +<?php +/** + * Page Template + * + * This template is the default page template. It is used to display content when someone is viewing a + * singular view of a page ('page' post_type) unless another page template overrules this one. + * @link http://codex.wordpress.org/Pages + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + <?php the_content(); ?> + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/post-no-widgets.php b/wp-content/themes/hybrid/post-no-widgets.php new file mode 100644 index 0000000000000000000000000000000000000000..3347d8e6a026076c4ff6157a2ec17b644627662b --- /dev/null +++ b/wp-content/themes/hybrid/post-no-widgets.php @@ -0,0 +1,50 @@ +<?php +/** + * Post Template: No Widgets + * + * A post template to use when wanting to disable all widget areas for an individual post. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + <?php the_content(); ?> + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else : ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/post.php b/wp-content/themes/hybrid/post.php new file mode 100644 index 0000000000000000000000000000000000000000..efe6228e7c1033da055b7fb462af7ac9d7c7dbc8 --- /dev/null +++ b/wp-content/themes/hybrid/post.php @@ -0,0 +1,51 @@ +<?php +/** + * Single Post Template + * + * This template is the default post template. It is used to display content when someone is viewing a + * singular view of a post ('post' post_type) unless another template overrules this one. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + <?php the_content(); ?> + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else : ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/readme.html b/wp-content/themes/hybrid/readme.html new file mode 100644 index 0000000000000000000000000000000000000000..e12dd69b4265963279478eba8bf26b1f266a57b9 --- /dev/null +++ b/wp-content/themes/hybrid/readme.html @@ -0,0 +1,146 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> +<title>A guide to the Hybrid theme framework</title> + +<link rel="stylesheet" href="library/css/25px.css" type="text/css" media="screen" /> +<link rel="stylesheet" href="library/css/readme.css" type="text/css" media="screen" /> + +</head> +<body> + +<h1>A guide to the Hybrid theme</h1> + +<p class="first"><em>Hybrid</em> is a user-friendly, search-engine optimized <em>theme framework</em>, featuring 15 custom page templates and 8 widget-ready areas, allowing you to create any type of site you want.</p> + +<p class="second">What this means is that the possibilities are endless. It is about rethinking how WordPress themes <em>should</em> work. It looks simple on the outside, but you can do nearly anything with enough creativity. Everyone from first-time WordPress users to advanced developers and designers can take advantage of this theme framework.</p> + +<h2>What is Hybrid?</h2> + +<p>I've been dabbling in the art of creating WordPress themes since 2005 and website design a couple of years longer than that. In that time, I've come to realize that the reuse of code is a cornerstone of good development practice. Why code the same things over and over when I can build off the same codebase, continually making it better?</p> + +<p><em>Hybrid</em> is a parent theme that focuses on code reuse and upgradability. What this means is that all of the core functionality is housed within a single theme. And, anytime one wants to make a modification, it should be done within a child theme. By doing this, the <em>Hybrid</em> parent theme can be upgraded (just like WordPress) without any loss of customizations.</p> + +<h2>Features</h2> + +<p>The theme has everything you need to get started building your site. Here's a list of some of the features:</p> + +<ul> + <li>Makes use of standard WordPress functions so that plugins will integrate easily.</li> + <li>Dynamic global, post, and comment <acronym title="Cascading Style Sheets">CSS</acronym> classes.</li> + <li>Fully localized, so you can run <em>Hybrid</em> in any language.</li> + <li>Uses the built-in WordPress menu system. No need to hack your navigation into place.</li> + <li>Context-aware action and filter hooks, so you don't have to learn WordPress conditional tags.</li> + <li>Some of the most-used filter hooks are shortcode-ready and have accompanying shortcodes.</li> + <li>Theme settings page that allows you to add custom meta boxes and settings.</li> + <li>A redefined template hierarchy that makes larger sites easier to design for.</li> + <li>Ability to create custom templates for any post type in multiple ways.</li> + <li>Comes loaded with 15 custom page templates and an extra post template.</li> + <li>Easily add post-specific settings and not make users learn how to use custom fields.</li> + <li>Highly-configurable widgets that give you full control over their display.</li> + <li>Has the <a href="http://wordpress.org/extend/plugins/get-the-image" title="Get the Image WordPress plugin">Get the Image</a> plugin built in.</li> + <li>Has the <a href="http://wordpress.org/extend/plugins/breadcrumb-trail" title="Breadcrumb Trail WordPress plugin">Breadcrumb Trail</a> plugin built-in.</li> + <li>Comes loaded with eight default widget areas.</li> + <li>Widget areas are content-aware, meaning that they only appear if they contain active widgets.</li> + <li>Widgetized 404 template, which allows you to create a custom 404 error page.</li> + <li>And much, much more!</li> +</ul> + +<p>Remember, those are just <em>some</em> of the features. <em>Hybrid</em> is a foundation that should make it easy to launch nearly any WordPress-powered site.</p> + +<h2>Child Themes</h2> + +<p>When I call <em>Hybrid</em> a theme framework, I mean it. It is <em><strong>meant</strong></em> to be used as a base theme to build from. What this allows us to do is extend it through child themes.</p> + +<p>Yes, you can create your own theme. Even if you're a total <em>noob</em> to WordPress!</p> + +<p>Just create a new theme folder in your <code>/wp-content/themes</code> directory. Call it something like <em>My Hybrid</em> or some other much cooler name. So, you'd have a directory like <code>/wp-content/themes/my-hybrid</code>. Then, create a <code>style.css</code> file within your theme folder. At the top, add this information:</p> + +<pre><code>/** + * Theme Name: My Hybrid + * Theme URI: http://link-to-your-site.com + * Description: Describe what your theme should be like. + * Version: 0.1 + * Author: Your Name + * Author URI: http://link-to-your-site.com + * Tags: Add, Whatever, Tags, You, Want + * Template: hybrid + */</code></pre> + +<p>Now, you have your own theme! Of course, you might want to style it.</p> + +<p>Here are a few stylesheets that will help you get started. Just add this to your new <code>style.css</code> file.</p> + +<pre><code>/* Get base 21px CSS */ +@import url('../hybrid/library/css/21px.css'); + +/* Get a layout CSS */ +@import url('../hybrid/library/css/2c-l-fixed.css'); + +/* Get the plugins CSS */ +@import url('../hybrid/library/css/plugins.css'); + +/* Get the drop-downs CSS */ +@import url('../hybrid/library/css/drop-downs.css'); + +/* Get default Hybrid CSS */ +@import url('../hybrid/library/css/screen.css');</code></pre> + +<p>The <code>21px.css</code> resets all browser defaults, gives you <code>21px</code> margins, and sets up some nice typography for you to start with. The <code>2c-l-fixed.css</code> sets up a two-column layout with the content on the left. The <code>plugins.css</code> sets some default styling for supported plugins. The <code>drop-downs.css</code> gives you some base styling for drop-down menus. The <code>screen.css</code> is the default theme <acronym title="Cascading Style Sheets">CSS</acronym> that you can overwrite.</p> + +<h2>Theme Support</h2> + +<p>The most authoritative source for finding out how to use the theme or do some nifty stuff is the <a href="http://themehybrid.com/themes/hybrid" title="Hybrid theme page">theme documentation</a>. I'll constantly update it with tutorials and frequently asked questions.</p> + +<p>We also have a vibrant community at the <a href="http://themehybrid.com/support" title="Theme Hybrid support forums">Theme Hybrid Support Forums</a> where you can get help with <em>Hybrid</em>-related issues.</p> + +<div class="section"> + <h2>Frameworks & Other Code</h2> + + <p>Hybrid owes a lot of thanks to several <acronym title="Cascading Style Sheets">CSS</acronym> frameworks and code other people have worked hard at putting together. The default styles and extra stylesheets take ideas and code from many different frameworks and stylesheets.</p> + + <ul class="columns-2"> + <li><a href="http://960.gs" title="960 Grid System">960 Grid System</a> (License: <a href="http://www.gnu.org/licenses/gpl.html" title="GNU GPL">GPL</a> & <a href="http://www.opensource.org/licenses/mit-license.php" title="MIT License">MIT</a>)</li> + <li><a href="http://www.blueprintcss.org/" title="Blueprint CSS: Google Code">Blueprint</a> (License: <a href="http://www.opensource.org/licenses/mit-license.php" title="MIT License">MIT</a>)</li> + <li><a href="http://devkick.com/lab/tripoli" title="Tripoli: A CSS standard for HTML rendering">Tripoli</a> (License: <a href="http://www.gnu.org/licenses/gpl.html" title="GNU GPL">GPL</a>)</li> + </ul> + + <ul class="columns-2"> + <li><a href="http://users.tpg.com.au/j_birch/plugins/superfish" title="Superfish: Suckerfish on 'roids">Superfish</a> (License: <a href="http://www.gnu.org/licenses/gpl.html" title="GNU GPL">GPL</a> & <a href="http://www.opensource.org/licenses/mit-license.php" title="MIT License">MIT</a>)</li> + <li><a href="http://users.tpg.com.au/j_birch/plugins/superfish" title="Supersubs">Supersubs</a> (License: <a href="http://www.gnu.org/licenses/gpl.html" title="GNU GPL">GPL</a> & <a href="http://www.opensource.org/licenses/mit-license.php" title="MIT License">MIT</a>)</li> + </ul> +</div> + +<div class="section"> + <h2>Credit</h2> + + <p>I don't know if I can come close to naming all the people that should be credited, but I'll list some of the main folks.</p> + + <ul class="columns-2"> + <li><a href="http://themeshaper.com" title="Theme Shaper">Ian Stewart</a></li> + <li><a href="http://prologuetheme.org" title="Prologue Theme">Prologue</a></li> + <li><a href="http://www.plaintxt.org/themes/sandbox" title="The Sandbox theme">Sandbox</a></li> + <li><a href="http://tarskitheme.com" title="Tarski: An elegant, flexible WordPress theme">Tarski</a></li> + <li><a href="http://wpframework.com" title="WP Framework">WP Framework</a></li> + </ul> + + <ul class="columns-2"> + <li><a href="http://microformats.org" title="Microformats">Microformats</a></li> + <li><a href="http://microid.org" title="MicroID">MicroID</a></li> + <li><a href="http://ottodestruct.com/blog/2008/09/29/wordpress-27-comments-enhancements" title="WordPress 2.7 comments enhancements">Otto's WP 2.7 comments enhancements</a></li> + <li><a href="http://www.nathanrice.net/blog/wordpress-seo-the-ultimate-guide-to-wordpress-theme-search-engine-optimization" title="The ultimate guide to WordPress theme search engine optimization">Nathan Rice's SEO for WordPress guide</a></li> + <li><a href="http://wordpress.org" title="WordPress: A state-of-the-art publishing platform">WordPress</a>, of course!</li> + </ul> +</div> + +<h2>Copyright & License</h2> + +<p><em>Hybrid</em> is licensed under the <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" title="GNU GPL">GNU General Public License</a>, version 2 (<acronym title="GNU General Public License">GPL</acronym>).</p> + +<p>This theme is copyrighted to <a href="http://justintadlock.com" title="Justin Tadlock">Justin Tadlock</a> and <a href="http://themehybrid.com" title="Theme Hybrid">Theme Hybrid</a>.</p> + +<p>2008 – 2010 © Justin Tadlock. All rights reserved.</p> + +</body> +</html> \ No newline at end of file diff --git a/wp-content/themes/hybrid/screenshot.png b/wp-content/themes/hybrid/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..05b05f497b8590b8e275b81d5257fae50fbdfad1 Binary files /dev/null and b/wp-content/themes/hybrid/screenshot.png differ diff --git a/wp-content/themes/hybrid/search.php b/wp-content/themes/hybrid/search.php new file mode 100644 index 0000000000000000000000000000000000000000..ddd9bb4829370ad358bf97889f152153c714bfa8 --- /dev/null +++ b/wp-content/themes/hybrid/search.php @@ -0,0 +1,60 @@ +<?php +/** + * Search Template + * + * The search template is loaded when a visitor uses the search form to search for something + * on the site. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <div class="search-info"> + + <h1 class="search-title"><?php echo esc_attr( get_search_query() ); ?></h1> + + <div class="search-description"> + <p><?php printf( __( 'You are browsing the search results for "%1$s"', 'hybrid' ), esc_attr( get_search_query() ) ); ?></p> + </div><!-- .search-description --> + + </div><!-- .search-info --> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php get_the_image( array( 'custom_key' => array( 'Thumbnail' ), 'size' => 'thumbnail' ) ); ?> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-summary"> + <?php the_excerpt(); ?> + </div><!-- .entry-summary --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php get_search_form(); ?> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/searchform.php b/wp-content/themes/hybrid/searchform.php new file mode 100644 index 0000000000000000000000000000000000000000..825d5c24e0946f487475a3a6f5ca846e206cbc80 --- /dev/null +++ b/wp-content/themes/hybrid/searchform.php @@ -0,0 +1,23 @@ +<?php +/** + * Search Form Template + * + * The search form template displays the search form. + * + * @package Hybrid + * @subpackage Template + */ + + global $search_num; + ++$search_num; +?> + <div id="search<?php if ( $search_num ) echo '-' . $search_num; ?>" class="search"> + + <form method="get" class="search-form" id="search-form<?php if ( $search_num ) echo '-' . $search_num; ?>" action="<?php echo home_url(); ?>/"> + <div> + <input class="search-text" type="text" name="s" id="search-text<?php if ( $search_num) echo '-' . $search_num; ?>" tabindex="7" value="<?php if ( is_search() ) echo esc_attr( get_search_query() ); else esc_attr_e( 'Search this site...', 'hybrid' ); ?>" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" /> + <input class="search-submit button" name="submit" type="submit" id="search-submit<?php if ( $search_num ) echo '-' . $search_num; ?>" tabindex="8" value="<?php esc_attr_e( 'Search', 'hybrid' ); ?>" /> + </div> + </form><!-- .search-form --> + + </div><!-- .search --> \ No newline at end of file diff --git a/wp-content/themes/hybrid/sidebar-after-content.php b/wp-content/themes/hybrid/sidebar-after-content.php new file mode 100644 index 0000000000000000000000000000000000000000..f5a41e6b6d12e86e62c304bf2b101503b89ff733 --- /dev/null +++ b/wp-content/themes/hybrid/sidebar-after-content.php @@ -0,0 +1,21 @@ +<?php +/** + * After Content Sidebar Template + * + * The After Content sidebar template houses the HTML used for the 'Utility: After Content' + * sidebar. It will first check if the sidebar is active before displaying anything. + * @link http://themehybrid.com/themes/hybrid/widget-areas + * + * @package Hybrid + * @subpackage Template + */ + + if ( is_active_sidebar( 'utility-after-content' ) ) : ?> + + <div id="utility-after-content" class="sidebar utility"> + + <?php dynamic_sidebar( 'utility-after-content' ); ?> + + </div><!-- #utility-after-content .utility --> + + <?php endif; ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/sidebar-after-singular.php b/wp-content/themes/hybrid/sidebar-after-singular.php new file mode 100644 index 0000000000000000000000000000000000000000..d811f9d4b3606f1ca77e18e7d9c720e4a2e22a28 --- /dev/null +++ b/wp-content/themes/hybrid/sidebar-after-singular.php @@ -0,0 +1,21 @@ +<?php +/** + * After Singular Sidebar Template + * + * The After Singular sidebar template houses the HTML used for the 'Utility: After Singular' + * sidebar. It will first check if the sidebar is active before displaying anything. + * @link http://themehybrid.com/themes/hybrid/widget-areas + * + * @package Hybrid + * @subpackage Template + */ + + if ( is_active_sidebar( 'utility-after-singular' ) ) : ?> + + <div id="utility-after-singular" class="sidebar utility"> + + <?php dynamic_sidebar( 'utility-after-singular' ); ?> + + </div><!-- #utility-after-singular .utility --> + + <?php endif; ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/sidebar-before-content.php b/wp-content/themes/hybrid/sidebar-before-content.php new file mode 100644 index 0000000000000000000000000000000000000000..78d02c73b860526d02edcf58b4db952c9b48a2a9 --- /dev/null +++ b/wp-content/themes/hybrid/sidebar-before-content.php @@ -0,0 +1,21 @@ +<?php +/** + * Before Content Sidebar Template + * + * The Before Content sidebar template houses the HTML used for the 'Utility: Before Content' + * sidebar. It will first check if the sidebar is active before displaying anything. + * @link http://themehybrid.com/themes/hybrid/widget-areas + * + * @package Hybrid + * @subpackage Template + */ + + if ( is_active_sidebar( 'utility-before-content' ) ) : ?> + + <div id="utility-before-content" class="sidebar utility"> + + <?php dynamic_sidebar( 'utility-before-content' ); ?> + + </div><!-- #utility-before-content .utility --> + + <?php endif; ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/sidebar-primary.php b/wp-content/themes/hybrid/sidebar-primary.php new file mode 100644 index 0000000000000000000000000000000000000000..0edd1acdeb6fa2fb6a5a04ca09f2d9d8f6aed1c7 --- /dev/null +++ b/wp-content/themes/hybrid/sidebar-primary.php @@ -0,0 +1,25 @@ +<?php +/** + * Primary Sidebar Template + * + * The Primary sidebar template houses the HTML used for the 'Primary' sidebar. + * It will first check if the sidebar is active before displaying anything. + * @link http://themehybrid.com/themes/hybrid/widget-areas + * + * @package Hybrid + * @subpackage Template + */ + +if ( is_active_sidebar( 'primary' ) ) : ?> + + <div id="primary" class="sidebar aside"> + + <?php hybrid_before_primary(); // Before Primary hook ?> + + <?php dynamic_sidebar( 'primary' ); ?> + + <?php hybrid_after_primary(); // After Primary hook ?> + + </div><!-- #primary .aside --> + +<?php endif; ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/sidebar-secondary.php b/wp-content/themes/hybrid/sidebar-secondary.php new file mode 100644 index 0000000000000000000000000000000000000000..fc39e4aa58df580c2fda33c84f3da67cf57f52d8 --- /dev/null +++ b/wp-content/themes/hybrid/sidebar-secondary.php @@ -0,0 +1,25 @@ +<?php +/** + * Secondary Sidebar Template + * + * The Secondary sidebar template houses the HTML used for the 'Secondary' sidebar. + * It will first check if the sidebar is active before displaying anything. + * @link http://themehybrid.com/themes/hybrid/widget-areas + * + * @package Hybrid + * @subpackage Template + */ + +if ( is_active_sidebar( 'secondary' ) ) : ?> + + <div id="secondary" class="sidebar aside"> + + <?php hybrid_before_secondary(); // Before Secondary hook ?> + + <?php dynamic_sidebar( 'secondary' ); ?> + + <?php hybrid_after_secondary(); // After Secondary hook ?> + + </div><!-- #secondary .aside --> + +<?php endif; ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/sidebar-subsidiary.php b/wp-content/themes/hybrid/sidebar-subsidiary.php new file mode 100644 index 0000000000000000000000000000000000000000..8cb2ec82dbf1e4b4988a4ad0043d968b39c43a95 --- /dev/null +++ b/wp-content/themes/hybrid/sidebar-subsidiary.php @@ -0,0 +1,25 @@ +<?php +/** + * Subsidiary Sidebar Template + * + * The Subsidiary sidebar template houses the HTML used for the 'Subsidiary' sidebar. + * It will first check if the sidebar is active before displaying anything. + * @link http://themehybrid.com/themes/hybrid/widget-areas + * + * @package Hybrid + * @subpackage Template + */ + +if ( is_active_sidebar( 'subsidiary' ) ) : ?> + + <div id="subsidiary" class="sidebar aside"> + + <?php hybrid_before_subsidiary(); // Before Subsidiary hook ?> + + <?php dynamic_sidebar( 'subsidiary' ); ?> + + <?php hybrid_after_subsidiary(); // After Subsidiary hook ?> + + </div><!-- #subsidiary .aside --> + +<?php endif; ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/singular.php b/wp-content/themes/hybrid/singular.php new file mode 100644 index 0000000000000000000000000000000000000000..1e2c07a98206fdfff503988161027b388f5f7d56 --- /dev/null +++ b/wp-content/themes/hybrid/singular.php @@ -0,0 +1,54 @@ +<?php +/** + * Singular Template + * + * WordPress currently supports custom post types displayed on the singular post level. This template + * is a catchall template for the singular views of these posts. It should only be used as a backup or if + * your custom post type doesn't require a custom structure. The template hierarchy for singular views + * of post types is like so: $post_type-$template.php, $post_type-$slug.php, $post_type-$id.php, + * $post_type.php, and singular.php. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + <?php the_content(); ?> + <?php wp_link_pages( array( 'before' => '<p class="page-links pages">' . __( 'Pages:', 'hybrid' ), 'after' => '</p>' ) ); ?> + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_singular(); // After singular hook ?> + + <?php comments_template( '/comments.php', true ); ?> + + <?php endwhile; ?> + + <?php else : ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/style.css b/wp-content/themes/hybrid/style.css new file mode 100644 index 0000000000000000000000000000000000000000..196d11a71ffb4ba6cfc5a247ea9ee731398ac27c --- /dev/null +++ b/wp-content/themes/hybrid/style.css @@ -0,0 +1,45 @@ +/** + * Theme Name: Hybrid + * Theme URI: http://themehybrid.com/themes/hybrid + * Description: A user-friendly, search-engine optimized theme framework, featuring 15 custom page templates and multiple widget-ready areas, allowing you to create any type of site you want. + * Version: 0.8 + * Author: Justin Tadlock + * Author URI: http://justintadlock.com + * Tags: theme-options, threaded-comments, sticky-post, microformats, translation-ready, rtl-language-support, one-column, two-columns, three-columns, fixed-width + * Status: publish + * + * Copyright (c) 2008 - 2010 Justin Tadlock. All rights reserved. + * http://justintadlock.com + * + * Hybrid is released under the GNU General Public License, version 2 (GPL). + * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + */ + +/* Get base CSS */ +@import url('library/css/21px.css'); + +/* Get layout CSS */ +@import url('library/css/2c-l-fixed.css'); + +/* Get plugins CSS */ +@import url('library/css/plugins.css'); + +/* Get drop-downs CSS */ +@import url('library/css/drop-downs.css'); + +/* Get default CSS */ +@import url('library/css/screen.css'); + +/* Make sure theme clears WP.org theme repository checklist */ +.alignright {} +.alignleft {} +.alignnone {} +.aligncenter {} +.avatar {} +.wp-caption {} +.gallery {} +.wp-smiley {} \ No newline at end of file diff --git a/wp-content/themes/hybrid/taxonomy-category.php b/wp-content/themes/hybrid/taxonomy-category.php new file mode 100644 index 0000000000000000000000000000000000000000..1dfbb4f869d1d7c02b845e7276f4d1c9e9b5bde9 --- /dev/null +++ b/wp-content/themes/hybrid/taxonomy-category.php @@ -0,0 +1,59 @@ +<?php +/** + * Category Taxonomy Template + * + * This template is loaded when viewing a category archive and replaces the default + * category.php template. It can also be overwritten for individual categories using + * taxonomy-category-$term.php. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <div class="archive-info category-info"> + + <h1 class="archive-title category-title"><?php single_cat_title(); ?></h1> + + <div class="archive-description category-description"> + <?php echo category_description(); ?> + </div><!-- .archive-description --> + + </div><!-- .archive-info --> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php get_the_image( array( 'custom_key' => array( 'Thumbnail' ), 'size' => 'thumbnail' ) ); ?> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-summary"> + <?php the_excerpt(); ?> + </div><!-- .entry-summary --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/taxonomy-link_category.php b/wp-content/themes/hybrid/taxonomy-link_category.php new file mode 100644 index 0000000000000000000000000000000000000000..7885a0dc0f4280ce1a90220a04620eb5f26d1e81 --- /dev/null +++ b/wp-content/themes/hybrid/taxonomy-link_category.php @@ -0,0 +1,61 @@ +<?php +/** + * Link Category Taxonomy Template + * + * This template is used when a link category is shown. Individual link categories can also have + * their own templates using taxonomy-link_category-$term.php. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <div class="archive-info taxonomy-info"> + + <h1 class="archive-title taxonomy-title"><?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); echo $term->name; ?></h1> + + <div class="archive-description taxonomy-description"> + <?php echo term_description( '', get_query_var( 'taxonomy' ) ); ?> + </div><!-- .archive-description --> + + </div><!-- .archive-info --> + + <div class="<?php hybrid_entry_class(); ?>"> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-content"> + + <?php $args = array( + 'title_li' => false, + 'title_before' => false, + 'title_after' => false, + 'category_name' => $term->name, + 'category_before' => false, + 'category_after' => false, + 'categorize' => false, + 'show_description' => true, + 'between' => '<br />', + 'show_images' => false, + 'show_rating' => false, + ); ?> + <ul class="xoxo bookmarks"> + <?php wp_list_bookmarks( $args ); ?> + </ul><!-- .xoxo .bookmarks --> + + </div><!-- .entry-content --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/taxonomy-post_tag.php b/wp-content/themes/hybrid/taxonomy-post_tag.php new file mode 100644 index 0000000000000000000000000000000000000000..a8b0ee0ff24dc070bdc5fa1cd53fd6e8d3d97b91 --- /dev/null +++ b/wp-content/themes/hybrid/taxonomy-post_tag.php @@ -0,0 +1,58 @@ +<?php +/** + * Post Tag Taxonomy Template + * + * This template is loaded when viewing a post tag archive and replaces the default tag.php template. + * It can also be overwritten for individual post tags using taxonomy-post_tag-$term.php. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <div class="archive-info post_tag-info tag-info"> + + <h1 class="archive-title post_tag-title tag-title"><?php single_tag_title(); ?></h1> + + <div class="archive-description post_tag-description tag-description"> + <?php echo tag_description(); ?> + </div><!-- .post_tag-description --> + + </div><!-- .post_tag-info --> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php get_the_image( array( 'custom_key' => array( 'Thumbnail' ), 'size' => 'thumbnail' ) ); ?> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-summary"> + <?php the_excerpt(); ?> + </div><!-- .entry-summary --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/taxonomy.php b/wp-content/themes/hybrid/taxonomy.php new file mode 100644 index 0000000000000000000000000000000000000000..7d0af659fda139a0e829d3ce08ca66b870f9d4c8 --- /dev/null +++ b/wp-content/themes/hybrid/taxonomy.php @@ -0,0 +1,60 @@ +<?php +/** + * Taxonomy Template + * + * The taxonomy template is the default template used when a taxonomy archive is shown. Ideally, + * all taxonomies would have their own template (taxonomy-$tax_name.php). The theme has included + * templates for the default WordPress taxonomies: taxonomy-post_tag.php, taxonomy-category.php, + * and taxonomy-link_category.php. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <div class="archive-info taxonomy-info"> + + <h1 class="archive-title taxonomy-title"><?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); echo $term->name; ?></h1> + + <div class="archive-description taxonomy-description"> + <?php echo term_description( '', get_query_var( 'taxonomy' ) ); ?> + </div><!-- .archive-description --> + + </div><!-- .archive-info --> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php get_the_image( array( 'custom_key' => array( 'Thumbnail' ), 'size' => 'thumbnail' ) ); ?> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-summary"> + <?php the_excerpt(); ?> + </div><!-- .entry-summary --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/time.php b/wp-content/themes/hybrid/time.php new file mode 100644 index 0000000000000000000000000000000000000000..7b64566a87d6e0727bccd00cee22869a0dcb4ab5 --- /dev/null +++ b/wp-content/themes/hybrid/time.php @@ -0,0 +1,59 @@ +<?php +/** + * Time Template + * + * This template is used when a time-based archive is shown. This file is more or + * less a placeholder. It will only show archives if not handled by hour.php or minute.php. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <div class="archive-info time-info"> + <h1 class="archive-title date-title time-title"><?php the_time(); ?></h1> + + <div class="archive-description date-description time-description"> + <p> + <?php printf( __( 'You are browsing the archive for %1$s.', 'hybrid' ), get_the_time() ); ?> + </p> + </div><!-- .date-description .time-description --> + + </div><!-- .archive-info .time-info --> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php get_the_image( array( 'custom_key' => array( 'Thumbnail' ), 'size' => 'thumbnail' ) ); ?> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-summary"> + <?php the_excerpt(); ?> + </div><!-- .entry-summary --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/user.php b/wp-content/themes/hybrid/user.php new file mode 100644 index 0000000000000000000000000000000000000000..11cda9a68ecdb799d133a63a4833e6739196da11 --- /dev/null +++ b/wp-content/themes/hybrid/user.php @@ -0,0 +1,59 @@ +<?php +/** + * User/Author Template + * + * The user template is used when a reader is viewing an user's archive page. The template + * displays the user's biographical information, avatar, and latests posts in excerpt format. + * @link http://codex.wordpress.org/Author_Templates + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <?php $id = get_query_var( 'author' ); ?> + + <div id="hcard-<?php the_author_meta( 'user_nicename', $id ); ?>" class="archive-info user-info user-profile author-info author-profile vcard"> + + <h1 class="archive-title user-title author-title fn n"><?php the_author_meta( 'display_name', $id ); ?></h1> + + <div class="archive-description user-description author-description"> + <?php echo get_avatar( get_the_author_meta( 'user_email', $id ), '100', '', get_the_author_meta( 'display_name', $id ) ); ?> + + <div class="user-bio author-bio"> + <?php the_author_meta( 'description', $id ); ?> + </div><!-- .user-bio .author-bio --> + </div><!-- .archive-description --> + + </div><!-- .archive-info --> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php get_the_image( array( 'custom_key' => array( 'Thumbnail' ), 'size' => 'thumbnail' ) ); ?> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-summary"> + <?php the_excerpt(); ?> + </div><!-- .entry-summary --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php endwhile; ?> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/week.php b/wp-content/themes/hybrid/week.php new file mode 100644 index 0000000000000000000000000000000000000000..629e93f6e2924232504135e7f4f5c9d734979745 --- /dev/null +++ b/wp-content/themes/hybrid/week.php @@ -0,0 +1,59 @@ +<?php +/** + * Week Template + * + * This template is used when a weekly archive is shown. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <div class="archive-info date-info week-info"> + + <h1 class="archive-title date-title week-title"><?php printf( __( 'Week %1$s of %2$s', 'hybrid' ), get_the_time( __( 'W', 'hybrid' ) ), get_the_time( __( 'Y', 'hybrid' ) ) ); ?></h1> + + <div class="archive-description date-description week-description"> + <p> + <?php printf( __( 'You are browsing the archive for week %1$s of %2$s.', 'hybrid' ), get_the_time( __( 'W', 'hybrid' ) ), get_the_time( __( 'Y', 'hybrid' ) ) ); ?> + </p> + </div><!-- .date-description .week-description --> + + </div><!-- .date-info .week-info --> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php get_the_image( array( 'custom_key' => array( 'Thumbnail' ), 'size' => 'thumbnail' ) ); ?> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-summary"> + <?php the_excerpt(); ?> + </div><!-- .entry-summary --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/themes/hybrid/year.php b/wp-content/themes/hybrid/year.php new file mode 100644 index 0000000000000000000000000000000000000000..d46b3e9480da0cc13b8bc197e9723384d5916ce6 --- /dev/null +++ b/wp-content/themes/hybrid/year.php @@ -0,0 +1,58 @@ +<?php +/** + * Year Template + * + * This template is used when a yearly archive is shown. + * + * @package Hybrid + * @subpackage Template + */ + +get_header(); ?> + + <div id="content" class="hfeed content"> + + <?php hybrid_before_content(); // Before content hook ?> + + <div class="archive-info date-info year-info"> + <h1 class="archive-title date-title year-title"><?php the_time( __( 'Y', 'hybrid' ) ); ?></h1> + + <div class="archive-description date-description year-description"> + <p> + <?php printf( __( 'You are browsing the archive for %1$s.', 'hybrid' ), get_the_time( __( 'Y', 'hybrid' ) ) ); ?> + </p> + </div><!-- .date-description .year-description --> + + </div><!-- .date-info .year-info --> + + <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> + + <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>"> + + <?php get_the_image( array( 'custom_key' => array( 'Thumbnail' ), 'size' => 'thumbnail' ) ); ?> + + <?php hybrid_before_entry(); // Before entry hook ?> + + <div class="entry-summary"> + <?php the_excerpt(); ?> + </div><!-- .entry-summary --> + + <?php hybrid_after_entry(); // After entry hook ?> + + </div><!-- .hentry --> + + <?php endwhile; ?> + + <?php else: ?> + + <p class="no-data"> + <?php _e( 'Apologies, but no results were found.', 'hybrid' ); ?> + </p><!-- .no-data --> + + <?php endif; ?> + + <?php hybrid_after_content(); // After content hook ?> + + </div><!-- .content .hfeed --> + +<?php get_footer(); ?> \ No newline at end of file