diff --git a/wp-content/themes/currentorg/css/current-ltw-projects.css b/wp-content/themes/currentorg/css/current-ltw-projects.css index 74bb7f7..96f3ff6 100644 --- a/wp-content/themes/currentorg/css/current-ltw-projects.css +++ b/wp-content/themes/currentorg/css/current-ltw-projects.css @@ -20,7 +20,7 @@ .current-ltw-shortcode .projects-list { grid-area: list; } - .current-ltw-shortcode .projects-single-holder { + .current-ltw-shortcode .projects-single-layout { grid-area: single; } } @@ -39,8 +39,22 @@ .projects-list-item + .projects-list-item { margin-top: 0.75rem; } -.projects-single-holder { +.projects-single-layout { border: 1px solid #343434; padding: 0.75rem; } +.projects-single-layout .projects-single-holder .entry-content iframe, +.projects-single-layout .projects-single-holder .entry-content img { + max-width: 100%; +} +.projects-single-layout .projects-single-holder .entry-content .project-tags { + margin-left: 0; +} +.projects-single-layout .projects-single-holder .entry-content label { + font-weight: bold; + display: inline; +} +.projects-single-layout .projects-single-holder .entry-content .project-specific-link { + display: block; +} /*# sourceMappingURL=css/current-ltw-projects.css.map */ \ No newline at end of file diff --git a/wp-content/themes/currentorg/css/current-ltw-projects.css.map b/wp-content/themes/currentorg/css/current-ltw-projects.css.map index 598e77c..b925236 100644 --- a/wp-content/themes/currentorg/css/current-ltw-projects.css.map +++ b/wp-content/themes/currentorg/css/current-ltw-projects.css.map @@ -1 +1 @@ -{"version":3,"sources":["less/current-ltw-projects.less"],"names":[],"mappings":";;;AAKA;EACC,gBAAA;;AAEA;EACC,QAA4B;IAA5B;MACC,aAAA;MACA,8BAAA;MACA,qBACC,gBACA,aAFD;MAIA,gBAAA;MACA,WAAA;;;EATF,sBAWC;IACC,iBAAA;;EAZF,sBAcC;IACC,eAAA;;EAfF,sBAiBC;IACC,iBAAA;;;AAKH;EACC,iBAAA;EACA,gCAAA;;AAED;EACC,yBAAA;EACA,gBAAA;;AAED;EACC,yBAAA;EACA,gBAAA;;AACA,mBAAE;EACD,mBAAA;;AAGF;EACC,yBAAA;EACA,gBAAA","sourcesContent":["@import \"vars.less\";\n\n// this sets common values for a lot of padding and margins in this file\n@common-whitespace: 1.5rem;\n\n.current-ltw-shortcode {\n\tmargin: @common-whitespace 0;\n\n\t@supports( display: grid ) {\n\t\t@media ( min-width: 771px ) {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-columns: 5fr 7fr;\n\t\t\tgrid-template-areas:\n\t\t\t\t\"search search\"\n\t\t\t\t\"list single\"\n\t\t\t;\n\t\t\tgrid-gap: @common-whitespace;\n\t\t\tgap: @common-whitespace;\n\t\t}\n\t\t.projects-search-form {\n\t\t\tgrid-area: search;\n\t\t}\n\t\t.projects-list {\n\t\t\tgrid-area: list;\n\t\t}\n\t\t.projects-single-holder {\n\t\t\tgrid-area: single;\n\t\t}\n\t}\n}\n\n.projects-search-form {\n\tpadding: @common-whitespace 0;\n\tborder-bottom: 1px solid @grey-d;\n}\n.projects-list {\n\tborder: 1px solid @grey-d;\n\tpadding: @common-whitespace * 0.5;\n}\n.projects-list-item {\n\tborder: 1px solid @grey-d;\n\tpadding: @common-whitespace * 0.5;\n\t& + .projects-list-item {\n\t\tmargin-top: @common-whitespace * 0.5;\n\t}\n}\n.projects-single-holder {\n\tborder: 1px solid @grey-d;\n\tpadding: @common-whitespace * 0.5;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["less/current-ltw-projects.less"],"names":[],"mappings":";;;AAKA;EACC,gBAAA;;AAEA;EACC,QAA4B;IAA5B;MACC,aAAA;MACA,8BAAA;MACA,qBACC,gBACA,aAFD;MAIA,gBAAA;MACA,WAAA;;;EATF,sBAWC;IACC,iBAAA;;EAZF,sBAcC;IACC,eAAA;;EAfF,sBAiBC;IACC,iBAAA;;;AAKH;EACC,iBAAA;EACA,gCAAA;;AAED;EACC,yBAAA;EACA,gBAAA;;AAED;EACC,yBAAA;EACA,gBAAA;;AACA,mBAAE;EACD,mBAAA;;AAGF;EACC,yBAAA;EACA,gBAAA;;AAFD,uBAGC,wBACC,eACC;AALH,uBAGC,wBACC,eAEC;EACC,eAAA;;AAPJ,uBAGC,wBACC,eAKC;EACC,cAAA;;AAVJ,uBAGC,wBACC,eAQC;EACC,iBAAA;EACA,eAAA;;AAdJ,uBAGC,wBACC,eAYC;EACC,cAAA","sourcesContent":["@import \"vars.less\";\n\n// this sets common values for a lot of padding and margins in this file\n@common-whitespace: 1.5rem;\n\n.current-ltw-shortcode {\n\tmargin: @common-whitespace 0;\n\n\t@supports( display: grid ) {\n\t\t@media ( min-width: 771px ) {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-columns: 5fr 7fr;\n\t\t\tgrid-template-areas:\n\t\t\t\t\"search search\"\n\t\t\t\t\"list single\"\n\t\t\t;\n\t\t\tgrid-gap: @common-whitespace;\n\t\t\tgap: @common-whitespace;\n\t\t}\n\t\t.projects-search-form {\n\t\t\tgrid-area: search;\n\t\t}\n\t\t.projects-list {\n\t\t\tgrid-area: list;\n\t\t}\n\t\t.projects-single-layout {\n\t\t\tgrid-area: single;\n\t\t}\n\t}\n}\n\n.projects-search-form {\n\tpadding: @common-whitespace 0;\n\tborder-bottom: 1px solid @grey-d;\n}\n.projects-list {\n\tborder: 1px solid @grey-d;\n\tpadding: @common-whitespace * 0.5;\n}\n.projects-list-item {\n\tborder: 1px solid @grey-d;\n\tpadding: @common-whitespace * 0.5;\n\t& + .projects-list-item {\n\t\tmargin-top: @common-whitespace * 0.5;\n\t}\n}\n.projects-single-layout {\n\tborder: 1px solid @grey-d;\n\tpadding: @common-whitespace * 0.5;\n\t.projects-single-holder {\n\t\t.entry-content {\n\t\t\tiframe,\n\t\t\timg {\n\t\t\t\tmax-width: 100%;\n\t\t\t}\n\t\t\t.project-tags {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t\tlabel {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tdisplay: inline;\n\t\t\t}\n\t\t\t.project-specific-link {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t}\n\t}\n}\n"]} \ No newline at end of file diff --git a/wp-content/themes/currentorg/css/current-ltw-projects.min.css b/wp-content/themes/currentorg/css/current-ltw-projects.min.css index 5ceefa4..9b1bfa1 100644 --- a/wp-content/themes/currentorg/css/current-ltw-projects.min.css +++ b/wp-content/themes/currentorg/css/current-ltw-projects.min.css @@ -1 +1 @@ -.current-ltw-shortcode{margin:1.5rem 0}@supports (display:grid){@media (min-width:771px){.current-ltw-shortcode{display:grid;grid-template-columns:5fr 7fr;grid-template-areas:"search search" "list single";grid-gap:1.5rem;gap:1.5rem}}.current-ltw-shortcode .projects-search-form{grid-area:search}.current-ltw-shortcode .projects-list{grid-area:list}.current-ltw-shortcode .projects-single-holder{grid-area:single}}.projects-search-form{padding:1.5rem 0;border-bottom:1px solid #343434}.projects-list{border:1px solid #343434;padding:.75rem}.projects-list-item{border:1px solid #343434;padding:.75rem}.projects-list-item+.projects-list-item{margin-top:.75rem}.projects-single-holder{border:1px solid #343434;padding:.75rem} \ No newline at end of file +.current-ltw-shortcode{margin:1.5rem 0}@supports (display:grid){@media (min-width:771px){.current-ltw-shortcode{display:grid;grid-template-columns:5fr 7fr;grid-template-areas:"search search" "list single";grid-gap:1.5rem;gap:1.5rem}}.current-ltw-shortcode .projects-search-form{grid-area:search}.current-ltw-shortcode .projects-list{grid-area:list}.current-ltw-shortcode .projects-single-layout{grid-area:single}}.projects-search-form{padding:1.5rem 0;border-bottom:1px solid #343434}.projects-list{border:1px solid #343434;padding:.75rem}.projects-list-item{border:1px solid #343434;padding:.75rem}.projects-list-item+.projects-list-item{margin-top:.75rem}.projects-single-layout{border:1px solid #343434;padding:.75rem}.projects-single-layout .projects-single-holder .entry-content iframe,.projects-single-layout .projects-single-holder .entry-content img{max-width:100%}.projects-single-layout .projects-single-holder .entry-content .project-tags{margin-left:0}.projects-single-layout .projects-single-holder .entry-content label{font-weight:700;display:inline}.projects-single-layout .projects-single-holder .entry-content .project-specific-link{display:block} \ No newline at end of file diff --git a/wp-content/themes/currentorg/functions.php b/wp-content/themes/currentorg/functions.php index a3268bf..a5d22c6 100644 --- a/wp-content/themes/currentorg/functions.php +++ b/wp-content/themes/currentorg/functions.php @@ -409,4 +409,4 @@ function largo_excerpt( $the_post = null, $sentence_count = 5, $use_more = null, return $output; } -} +} \ No newline at end of file diff --git a/wp-content/themes/currentorg/inc/shortcode-current-ltw-projects.php b/wp-content/themes/currentorg/inc/shortcode-current-ltw-projects.php index 1826ec4..a1a5dc4 100644 --- a/wp-content/themes/currentorg/inc/shortcode-current-ltw-projects.php +++ b/wp-content/themes/currentorg/inc/shortcode-current-ltw-projects.php @@ -86,13 +86,58 @@ function current_ltw_projects_assets() { wp_register_script( 'current-ltw-script', get_stylesheet_directory_uri() . '/js/current-ltw-projects.js', - array(), + array( 'jquery' ), filemtime( get_stylesheet_directory() . '/js/current-ltw-projects.js' ), true ); + wp_localize_script( + 'current-ltw-script', + 'ajax_object', + array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) + ); } add_action( 'wp_enqueue_scripts', 'current_ltw_projects_assets' ); +/** + * Load a single project when it is selected from the project list + */ +function current_ltw_projects_load_single_project_callback() { + + // make sure post id is set and actually a valid post + if( isset( $_GET['post_id'] ) && get_post_status( $_GET['post_id'] ) ) { + + $post_id = $_GET["post_id"]; + + // set up basic args for our query to grab the post + $single_project_args = array( + 'post_type' => 'projects', + 'p' => abs( intval( $post_id ) ) + ); + + $single_project_query = new WP_Query( $single_project_args ); + + if( $single_project_query->have_posts() ){ + + while ( $single_project_query->have_posts() ) : $single_project_query->the_post(); + + // show singular project with the project single template partial + get_template_part( 'partials/projects', 'single-held' ); + + endwhile; + + } + + } else { + + echo '

The project could not be found.

'; + + } + + wp_die(); + +} +add_action( 'wp_ajax_load_more_post', 'current_ltw_projects_load_single_project_callback' ); +add_action( 'wp_ajax_nopriv_load_more_post', 'current_ltw_projects_load_single_project_callback' ); /** * Filter queries for the projects post type */ diff --git a/wp-content/themes/currentorg/js/current-ltw-projects.js b/wp-content/themes/currentorg/js/current-ltw-projects.js index 8b13789..3d07d6a 100644 --- a/wp-content/themes/currentorg/js/current-ltw-projects.js +++ b/wp-content/themes/currentorg/js/current-ltw-projects.js @@ -1 +1,54 @@ +var $ = jQuery; +$(document).ready(function(){ + current_ltw_projects_load_param_project_if_exists(); + + $( ".projects-list article .entry-title a" ).click(function(e){ + e.preventDefault(); + var post_id = $(this).data("post-id"); + current_ltw_projects_load_single_project(post_id); + }); + +}); + +/** + * Function to load the single project partial for whatever project + * is provided. + * + * @param int post_id The id of the project we want to load + */ +function current_ltw_projects_load_single_project( post_id ) { + + // give a reassuring "loading" notice + $(".projects-single-holder").html("Loading project..."); + + // actually load the single project + $(".projects-single-holder").load(ajax_object.ajax_url+"?action=load_more_post&post_id="+post_id); + + // return and let's be happy + return; + +} + +/** + * Fires on page load to check if a post_id query param is set + * If it is set, attemps to load the specified project by the ID given + */ +function current_ltw_projects_load_param_project_if_exists() { + + // find all current query params + var get_url_params = new URLSearchParams(window.location.search); + + // if the post id query param exists, let's use it + if(get_url_params.get('project_id') || Number.isInteger(get_url_params.get('project_id'))) { + + var post_id = get_url_params.get('project_id'); + + // actually try and load the project + current_ltw_projects_load_single_project( post_id ); + + return; + + } + +} \ No newline at end of file diff --git a/wp-content/themes/currentorg/less/current-ltw-projects.less b/wp-content/themes/currentorg/less/current-ltw-projects.less index bd37ac3..88f9799 100644 --- a/wp-content/themes/currentorg/less/current-ltw-projects.less +++ b/wp-content/themes/currentorg/less/current-ltw-projects.less @@ -23,7 +23,7 @@ .projects-list { grid-area: list; } - .projects-single-holder { + .projects-single-layout { grid-area: single; } } @@ -44,7 +44,25 @@ margin-top: @common-whitespace * 0.5; } } -.projects-single-holder { +.projects-single-layout { border: 1px solid @grey-d; padding: @common-whitespace * 0.5; + .projects-single-holder { + .entry-content { + iframe, + img { + max-width: 100%; + } + .project-tags { + margin-left: 0; + } + label { + font-weight: bold; + display: inline; + } + .project-specific-link { + display: block; + } + } + } } diff --git a/wp-content/themes/currentorg/partials/content-projects-list-item.php b/wp-content/themes/currentorg/partials/content-projects-list-item.php index 16fb237..7fcfc4f 100644 --- a/wp-content/themes/currentorg/partials/content-projects-list-item.php +++ b/wp-content/themes/currentorg/partials/content-projects-list-item.php @@ -31,6 +31,7 @@
> '; if ( largo_has_categories_or_tags() ) { @@ -43,7 +44,7 @@ ?>

- +

$post->ID, + 'hero_class' => largo_hero_class( $post->ID, FALSE ), + + // only used to determine the existence of a youtube_url + 'values' => get_post_custom( $post->ID ), + + // this should be filtered in the event of a term-specific archive + 'featured' => false, + + // $show_thumbnail does not control whether or not the thumbnail is displayed; + // it controls whether or not the thumbnail is displayed normally. + 'show_thumbnail' => TRUE, + 'show_excerpt' => TRUE, +); + +$args = apply_filters( 'largo_content_partial_arguments', $args, get_queried_object() ); + +extract( $args ); + +$entry_classes = 'entry-content'; + +$show_top_tag = largo_has_categories_or_tags(); + +$custom = get_post_custom(); + +if ( $featured ) { + $entry_classes .= ' span10 with-hero'; + $show_thumbnail = FALSE; +} +if( ! empty ( $custom['project-video'][0] ) ) { + $show_youtube = TRUE; + $show_thumbnail = FALSE; +} + +?> + +
+

+ '; + + // we may need to redo these links as search query params instead + $status = get_the_terms( get_the_ID(), 'project-status' ); + $categories = get_the_terms( get_the_ID(), 'project-category' ); + // @todo this throws errors when no terms are found for this type of post + if ( is_array( $status ) && is_array( $categories ) ) { + $terms = array_merge( $status, $categories ); + } else if ( is_array( $status ) ) { + $terms = $status; + } else if ( is_array( $categories ) ) { + $terms = $categories; + } else { + $terms = array(); + } + + if ( ! empty( $terms ) ) { + echo ''; + } + + // thumbnail or video + if ( $show_thumbnail ) { + echo ''; + } else if( $show_youtube && wp_oembed_get( $custom['project-video'][0] ) ) { + echo wp_oembed_get( $custom['project-video'][0] ); + } + + // organization + if ( ! empty( $custom['project-organization'][0] ) ) { + printf( + '
+ %2$s
', + __( 'Organization', 'current-ltw-projects' ), + esc_html( $custom['project-organization'][0] ) + ); + } + + // year submitted + printf( + '
+ %2$s
', + __( 'Year Submitted', 'current-ltw-projects' ), + get_the_date( 'Y' ) + ); + + // type of org + $org_types = get_the_terms( get_the_ID(), 'project-org-type' ); + if ( ! empty( $org_types ) ) { + $delimiter = ', '; + $org_types_count = count( $org_types ); + $org_type_index = 0; + _e( '
', 'current-ltw-projects' ); + foreach ( $org_types as $org_type ) { + $org_type_index++; + printf( + '%4$s', + esc_attr( $org_type->taxonomy ), + esc_attr( $org_type->slug ), + // @todo: make this be a link that triggers the search filter for this term + get_term_link( $org_type ), + esc_html( $org_type->name ) + ); + if( $org_type_index != $org_types_count ){ + echo '' . $delimiter . ''; + } + } + echo '
'; + } + + // contact name and email + if ( ! empty( $custom['project-contact-name'][0] ) || ! empty( $custom['project-contact-email'] ) ) { + printf( + '', + __( 'Contact', 'current-ltw-projects' ), + ); + } + + if ( ! empty( $custom['project-contact-name'][0] ) ) { + printf( + '%1$s
', + esc_html( $custom['project-contact-name'][0] ) + ); + } + + if ( ! empty( $custom['project-contact-email'][0] ) ) { + printf( + '%1$s', + esc_html( $custom['project-contact-email'][0] ) + ); + } + + // tell your story / main content + the_content(); + + // project revenue + if ( ! empty( $custom['project-revenue'][0] ) ) { + printf( + '

%1$s

', + esc_html( $custom['project-revenue'][0] ) + ); + } + + // specific impact + if ( ! empty( $custom['project-impact'][0] ) ) { + printf( + '

%1$s

', + esc_html( $custom['project-impact'][0] ) + ); + } + + // primary url + if ( ! empty( $custom['project-link'][0] ) ) { + printf( + ' + %2$s', + __( 'Project Specific Link', 'current-ltw-projects' ), + esc_html( $custom['project-link'][0] ) + ); + } + + ?> + +
\ No newline at end of file diff --git a/wp-content/themes/currentorg/partials/projects-single-holder.php b/wp-content/themes/currentorg/partials/projects-single-holder.php index d212c15..c864f09 100644 --- a/wp-content/themes/currentorg/partials/projects-single-holder.php +++ b/wp-content/themes/currentorg/partials/projects-single-holder.php @@ -1,3 +1,6 @@ -
-

Single project goes here.

+
+ +
+ +