Merge pull request #44 from ascribe/feature/testimonials

Testimonials functionality
This commit is contained in:
Matthias Kretschmann 2016-03-08 11:07:33 +01:00
commit 94712bf4de
13 changed files with 324 additions and 6 deletions

View File

@ -30,6 +30,7 @@
@import 'ascribe/_feature-circles.less';
@import 'ascribe/_team.less';
@import 'ascribe/_blog.less';
@import 'ascribe/_testimonials.less';
@import '_page-api.less';

View File

@ -0,0 +1,98 @@
.testimonials {
background: @greyBg;
margin-bottom: 0;
.row { background: none; }
.grid { margin-bottom: 0; }
.grid__col {
display: flex;
flex-wrap: wrap;
}
}
.testimonial {
display: flex;
flex-wrap: wrap;
background: #fff;
}
.testimonial__quote,
.testimonial__caption {
flex: 0 0 100%;
}
.testimonial__quote {
// blockquote reset
margin: 0;
position: relative;
border: none;
color: @text-color;
padding: 0;
font-style: normal;
// styling
//&:extend(.bold);
padding: (@spacer / 2);
align-self: flex-start;
// quote characters
// &:before {
// content: "“";
// font-size: 250%;
// color: @greyHr;
// line-height: 0;
// margin-left: -1em;
// }
}
.testimonial__caption {
align-self: flex-end;
display: flex;
align-items: center;
border-top: 2px solid lighten(@greySocial, 10%);
padding-top: (@spacer / 2);
position: relative;
background: @greyBg;
// speech triangle
&:before {
content: "";
position: absolute;
width: 0;
height: 0;
border-style: solid;
left: 4em;
top: 0;
border-width: .9em .9em 0 0;
border-color: transparent;
border-top-color: lighten(@greySocial, 10%);
}
}
.testimonial__avatar {
width: 4em;
height: 4em;
display: inline-block;
margin-right: (@spacer / 2);
border-radius: 50%;
border: 2px solid lighten(@greySocial, 20%);
}
.testimonial__cite {
&:extend(.small);
font-style: normal;
flex: 1;
color: @greySocial;
}
.testimonial__name {
font-weight: @font-weight-bold;
}
.testimonial__org {
display: block;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -104,6 +104,9 @@ class Subtemplate {
case 'events':
$result .= $this->eventPage($subtemplateTitle);
break;
case 'testimonials':
$result .= $this->testimonials($subtemplateTitle);
break;
}
}
}
@ -1174,4 +1177,51 @@ class Subtemplate {
return $result;
}
//
// Subtemplate: Testimonials
//
public function testimonials($subtemplateTitle) {
$testimonials = get_sub_field('testimonials');
$testimonialMarkup = '';
if ( $testimonials ) {
foreach ($testimonials as $testimonial) {
$id = $testimonial->ID;
$quote = get_field('quote', $id);
$name = get_field('name', $id);
$company = get_field('company', $id);
$link = get_field('link', $id);
$photo_object = get_field('photo', $id);
$photo_size = 'thumbnail';
$photo_url = $photo_object['sizes'][$photo_size];
$testimonialMarkup .= "<div class='grid__col'>
<figure class='testimonial'>
<blockquote class='testimonial__quote'>{$quote}</blockquote>
<figcaption class='testimonial__caption'>
<img class='testimonial__avatar' src='{$photo_url}'>
<cite class='testimonial__cite'>
<span class='testimonial__name'>{$name}</span>
<span class='testimonial__org'><a href='{$link}'>{$company}</a></span>
</cite>
</figcaption>
</figure>
</div>";
}
}
$result = "<section class='subtemplate testimonials'>
<div class='row'>
<h1 class='subtemplate__title'>{$subtemplateTitle}</h1>
<article class='grid grid--full grid-medium--fit grid--gutters'>
{$testimonialMarkup}
</article>
</div>
</section>";
return $result;
}
}

View File

@ -24,7 +24,12 @@ define( 'WPTHEME_PATH', get_template_directory() . '/' );
define( 'WPTHEME_INC', WPTHEME_PATH . 'includes/' );
// Include compartmentalized functions
require_once WPTHEME_INC . 'functions/core.php';
require_once WPTHEME_INC . 'core.php';
require_once WPTHEME_INC . 'cpt-team.php';
require_once WPTHEME_INC . 'cpt-career.php';
require_once WPTHEME_INC . 'cpt-presscoverage.php';
require_once WPTHEME_INC . 'cpt-event.php';
require_once WPTHEME_INC . 'cpt-testimonial.php';
// Run the setup functions
TenUp\ascribe\Core\setup();

31
includes/cpt-career.php Normal file
View File

@ -0,0 +1,31 @@
<?php
function ascribe_register_cpt_career() {
$labels = array(
"name" => "Careers",
"singular_name" => "Career",
);
$args = array(
"labels" => $labels,
"description" => "",
"public" => true,
"show_ui" => true,
"show_in_rest" => false,
"has_archive" => false,
"show_in_menu" => true,
"exclude_from_search" => false,
"capability_type" => "post",
"map_meta_cap" => true,
"hierarchical" => false,
"rewrite" => array( "slug" => "career", "with_front" => true ),
"query_var" => true,
"menu_icon" => 'dashicons-businessman'
);
register_post_type( "career", $args );
}
add_action( 'init', 'ascribe_register_cpt_career' );
?>

31
includes/cpt-event.php Normal file
View File

@ -0,0 +1,31 @@
<?php
function ascribe_register_cpt_event() {
$labels = array(
"name" => "Events",
"singular_name" => "Event",
);
$args = array(
"labels" => $labels,
"description" => "",
"public" => true,
"show_ui" => true,
"show_in_rest" => false,
"has_archive" => false,
"show_in_menu" => true,
"exclude_from_search" => false,
"capability_type" => "post",
"map_meta_cap" => true,
"hierarchical" => false,
"rewrite" => array( "slug" => "event", "with_front" => true ),
"query_var" => true,
"supports" => array( "title" ),
"menu_icon" => 'dashicons-calendar-alt'
);
register_post_type( "event", $args );
}
add_action( 'init', 'ascribe_register_cpt_event' );
?>

View File

@ -0,0 +1,31 @@
<?php
function ascribe_register_cpt_press() {
$labels = array(
"name" => "Press Coverage",
"singular_name" => "Press Coverage",
);
$args = array(
"labels" => $labels,
"description" => "",
"public" => true,
"show_ui" => true,
"show_in_rest" => false,
"has_archive" => false,
"show_in_menu" => true,
"exclude_from_search" => false,
"capability_type" => "post",
"map_meta_cap" => true,
"hierarchical" => false,
"rewrite" => array( "slug" => "presscoverage", "with_front" => true ),
"query_var" => true,
"menu_icon" => 'dashicons-media-document'
);
register_post_type( "presscoverage", $args );
}
add_action( 'init', 'ascribe_register_cpt_press' );
?>

30
includes/cpt-team.php Normal file
View File

@ -0,0 +1,30 @@
<?php
function ascribe_register_cpt_team() {
$labels = array(
"name" => "Team Members",
"singular_name" => "Team Member",
);
$args = array(
"labels" => $labels,
"description" => "",
"public" => true,
"show_ui" => true,
"show_in_rest" => false,
"has_archive" => false,
"show_in_menu" => true,
"exclude_from_search" => false,
"capability_type" => "post",
"map_meta_cap" => true,
"hierarchical" => false,
"rewrite" => array( "slug" => "team", "with_front" => true ),
"query_var" => true,
"menu_icon" => 'dashicons-nametag'
);
register_post_type( "team", $args );
}
add_action( 'init', 'ascribe_register_cpt_team' );
?>

View File

@ -0,0 +1,44 @@
<?php
add_action( 'init', 'ascribe_register_cpt_testimonial' );
function ascribe_register_cpt_testimonial() {
$labels = array(
"name" => "Testimonials",
"singular_name" => "Testimonial",
"menu_name" => "Testimonials",
"all_items" => "All Testimonials",
"add_new" => "Add New",
"add_new_item" => "Add New Testimonial",
"edit" => "Edit",
"edit_item" => "Edit Testimonial",
"new_item" => "New Testimonial",
"view" => "View",
"view_item" => "View Testimonial",
"search_items" => "Search Testimonial",
"not_found" => "No Testimonials found",
"not_found_in_trash" => "No Testimonials found in Trash",
"parent" => "Parent Testimonial",
);
$args = array(
"labels" => $labels,
"description" => "",
"public" => true,
"show_ui" => true,
"show_in_rest" => false,
"has_archive" => false,
"show_in_menu" => true,
"exclude_from_search" => true,
"capability_type" => "post",
"map_meta_cap" => true,
"hierarchical" => false,
"rewrite" => false,
"query_var" => true,
"menu_icon" => 'dashicons-format-quote'
);
register_post_type( "testimonial", $args );
}
?>

View File

@ -1,3 +0,0 @@
# Includes
All theme classes, objects, and libraries should be hidden away in this `/includes` directory.