@ -1,10 +0,0 @@
|
||||
<?php |
||||
|
||||
namespace Aldine; |
||||
|
||||
use Sober\Controller\Controller; |
||||
|
||||
class About extends Controller |
||||
{ |
||||
|
||||
} |
@ -0,0 +1,111 @@
|
||||
<?php |
||||
|
||||
namespace Aldine; |
||||
|
||||
use Sober\Controller\Controller; |
||||
|
||||
class PageCatalog extends Controller |
||||
{ |
||||
public function licenses() |
||||
{ |
||||
$licenses = (new \Pressbooks\Licensing())->getSupportedTypes(); |
||||
foreach ($licenses as $key => $value) { |
||||
$licenses[$key] = preg_replace("/\([^)]+\)/", '', $value['desc']); |
||||
} |
||||
return $licenses; |
||||
} |
||||
|
||||
public function subjectGroups() |
||||
{ |
||||
return [ |
||||
'business-finance' => [ |
||||
'title' => __('Business and Finance', 'aldine'), |
||||
'subjects' => [ |
||||
'accounting' => 'Accounting', |
||||
'finance' => 'Finance', |
||||
'information-systems' => 'Information Systems', |
||||
'management' => 'Management', |
||||
'marketing' => 'Marketing', |
||||
'economics' => 'Economics', |
||||
], |
||||
], |
||||
'engineering-technology' => [ |
||||
'title' => __('Engineering & Technology', 'aldine'), |
||||
'subjects' => [ |
||||
'architecture' => 'Architecture', |
||||
'bioengineering' => 'Bioengineering', |
||||
'chemical' => 'Chemical', |
||||
'civil' => 'Civil', |
||||
'electrical' => 'Electrical', |
||||
'mechanical' => 'Mechanical', |
||||
'mining-and-materials' => 'Mining and Materials', |
||||
'urban-planning' => 'Urban Planning', |
||||
'computer-science' => 'Computer Science', |
||||
], |
||||
], |
||||
'health-sciences' => [ |
||||
'title' => __('Health Sciences', 'aldine'), |
||||
'subjects' => [ |
||||
'nursing' => 'Nursing', |
||||
'dentistry' => 'Dentistry', |
||||
'medicine' => 'Medicine', |
||||
], |
||||
], |
||||
'humanities-arts' => [ |
||||
'title' => __('Humanities & Arts', 'aldine'), |
||||
'subjects' => [ |
||||
'archaeology' => 'Archaeology', |
||||
'art' => 'Art', |
||||
'classics' => 'Classics', |
||||
'literature' => 'Literature', |
||||
'history' => 'History', |
||||
'media' => 'Media', |
||||
'music' => 'Music', |
||||
'philosophy' => 'Philosophy', |
||||
'religion' => 'Religion', |
||||
'language' => 'Language', |
||||
], |
||||
], |
||||
'reference' => [ |
||||
'title' => __('Reference', 'aldine'), |
||||
'subjects' => [ |
||||
'student-guides' => 'Student Guides', |
||||
'teaching-guides' => 'Teaching Guides', |
||||
], |
||||
], |
||||
'science' => [ |
||||
'title' => __('Sciences', 'aldine'), |
||||
'subjects' => [ |
||||
'biology' => 'Biology', |
||||
'chemistry' => 'Chemistry', |
||||
'environent-and-earth-sciences' => 'Environment and Earth Sciences', |
||||
'geography' => 'Geography', |
||||
'mathematics' => 'Mathematics', |
||||
'physics' => 'Physics', |
||||
], |
||||
], |
||||
'social-sciences' => [ |
||||
'title' => __('Social Sciences', 'aldine'), |
||||
'subjects' => [ |
||||
'anthropology' => 'Anthropology', |
||||
'gender-studies' => 'Gender Studies', |
||||
'linguistics' => 'Linguistics', |
||||
'museums-libraries-and-information-sciences' => 'Museums, Libraries, and Information Sciences', |
||||
'political-science' => 'Political Science', |
||||
'psychology' => 'Psychology', |
||||
'social-work' => 'Social Work', |
||||
'sociology' => 'Sociology', |
||||
], |
||||
], |
||||
]; |
||||
} |
||||
|
||||
public function catalogData() |
||||
{ |
||||
$page = (get_query_var('paged')) ? get_query_var('paged') : 1; |
||||
$orderby = (get_query_var('orderby')) ? get_query_var('orderby') : 'title'; |
||||
$subject = (get_query_var('subject')) ? get_query_var('subject') : ''; |
||||
$license = (get_query_var('license')) ? get_query_var('license') : ''; |
||||
return App::catalogData($page, 9, $orderby, $license, $subject); |
||||
} |
||||
} |
After Width: | Height: | Size: 530 KiB |
After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 178 KiB After Width: | Height: | Size: 176 KiB |
Before Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 11 KiB |
@ -1,5 +0,0 @@
|
||||
export default { |
||||
init() { |
||||
// JavaScript to be fired on the about us page
|
||||
}, |
||||
}; |
@ -0,0 +1,101 @@
|
||||
const jQueryBridget = require('jquery-bridget'); |
||||
const Isotope = require('isotope-layout'); |
||||
|
||||
export default { |
||||
init() { |
||||
// JavaScript to be fired on the catalog page
|
||||
jQueryBridget('isotope', Isotope, $); |
||||
let $grid = $('.books'); |
||||
$grid.isotope({ |
||||
itemSelector: '.book', |
||||
getSortData: { |
||||
title: '.title a', |
||||
subject: '[data-subject]', |
||||
latest: '[data-date-published]', |
||||
}, |
||||
sortAscending: { |
||||
title: true, |
||||
subject: true, |
||||
latest: false, |
||||
}, |
||||
}); |
||||
$('.filters > a').click((e) => { |
||||
e.preventDefault(); |
||||
$('.filters').toggleClass('is-active'); |
||||
$('.filter-groups > div').removeClass('is-active'); |
||||
}) |
||||
$('.filter-groups .subjects > a').click((e) => { |
||||
e.preventDefault(); |
||||
let id = $(e.currentTarget).attr('href'); |
||||
$(`.filter-groups .subjects:not(${id})`).removeClass('is-active'); |
||||
$(`.filter-groups ${id}`).toggleClass('is-active'); |
||||
}) |
||||
$('.licenses > a').click((e) => { |
||||
e.preventDefault(); |
||||
let id = $(e.currentTarget).attr('href'); |
||||
$(id).toggleClass('is-active'); |
||||
}) |
||||
$('.subjects .filter-list a').click((e) => { |
||||
e.preventDefault(); |
||||
if ($(e.currentTarget).hasClass('is-active')) { |
||||
$('.subjects .filter-list a').removeClass('is-active'); |
||||
$('.subjects').removeClass('has-active-child'); |
||||
} else { |
||||
$('.subjects .filter-list a').removeClass('is-active'); |
||||
$(e.currentTarget).addClass('is-active'); |
||||
$('.subjects').removeClass('has-active-child'); |
||||
$(e.currentTarget).parent().parent().parent('.subjects').addClass('has-active-child'); |
||||
} |
||||
let subjectValue = $('.subjects .filter-list a.is-active').attr('data-filter'); |
||||
let licenseValue = $('.licenses .filter-list a.is-active').attr('data-filter'); |
||||
if(typeof licenseValue === "undefined") { |
||||
licenseValue = ''; |
||||
} else { |
||||
licenseValue = `[data-license="${licenseValue}"]`; |
||||
} |
||||
if(typeof subjectValue === "undefined") { |
||||
subjectValue = ''; |
||||
} else { |
||||
subjectValue = `[data-subject="${subjectValue}"]`; |
||||
} |
||||
$grid.isotope({ filter: `${subjectValue}${licenseValue}` }); |
||||
}); |
||||
$('.licenses .filter-list a').click((e) => { |
||||
e.preventDefault(); |
||||
if ($(e.currentTarget).hasClass('is-active')) { |
||||
$('.licenses .filter-list a').removeClass('is-active'); |
||||
$('.licenses').removeClass('has-active-child'); |
||||
} else { |
||||
$('.licenses .filter-list a').removeClass('is-active'); |
||||
$(e.currentTarget).addClass('is-active'); |
||||
$('.licenses').addClass('has-active-child'); |
||||
} |
||||
let subjectValue = $('.subjects .filter-list a.is-active').attr('data-filter'); |
||||
let licenseValue = $('.licenses .filter-list a.is-active').attr('data-filter'); |
||||
if(typeof licenseValue === "undefined") { |
||||
licenseValue = ''; |
||||
} else { |
||||
licenseValue = `[data-license="${licenseValue}"]`; |
||||
} |
||||
if(typeof subjectValue === "undefined") { |
||||
subjectValue = ''; |
||||
} else { |
||||
subjectValue = `[data-subject="${subjectValue}"]`; |
||||
} |
||||
$grid.isotope({ filter: `${subjectValue}${licenseValue}` }); |
||||
}); |
||||
$('.sort > a').click((e) => { |
||||
e.preventDefault(); |
||||
$('.sort').toggleClass('is-active'); |
||||
}) |
||||
$('.sorts a').click((e) => { |
||||
e.preventDefault(); |
||||
let sortBy = $(e.currentTarget).attr('data-sort'); |
||||
$('.sorts a').removeClass('is-active'); |
||||
$(e.currentTarget).addClass('is-active'); |
||||
$grid.isotope({sortBy: sortBy}); |
||||
}); |
||||
}, |
||||
finalize() { |
||||
}, |
||||
}; |
@ -1,4 +0,0 @@
|
||||
// `sage preset` installed this file automatically. |
||||
// Running `sage preset` again could result in automatic deletion of this file. |
||||
// Because of this, we do not recommend editing this file. |
||||
@import "~tachyons-sass/tachyons"; |
@ -1,3 +1,7 @@
|
||||
@function em($pixels, $context: $base-font-size) { |
||||
@return #{$pixels / $context}em; |
||||
@function rem($pixels, $context: $base-font-size) { |
||||
@return #{$pixels / $context}rem; |
||||
} |
||||
|
||||
@function percent($target, $context) { |
||||
@return ($target / $context) * 100%; |
||||
} |
||||
|
@ -1,226 +1,2 @@
|
||||
.home { |
||||
.block, |
||||
.latest-books { |
||||
height: 445px; |
||||
background-color: $white; |
||||
text-align: center; |
||||
|
||||
h3 { |
||||
font-size: em(30); |
||||
font-weight: 600; |
||||
letter-spacing: 2px; |
||||
line-height: (36/30); |
||||
margin: 0; |
||||
|
||||
&::before { |
||||
content: ""; |
||||
display: block; |
||||
margin: 0 auto 1em; |
||||
width: 46px; |
||||
height: 5px; |
||||
background-color: var(--brand-secondary, $brand-secondary); |
||||
} |
||||
} |
||||
|
||||
p { |
||||
font-size: em(16); |
||||
line-height: (32/16); |
||||
} |
||||
} |
||||
|
||||
.block { |
||||
display: flex; |
||||
flex-direction: column; |
||||
justify-content: center; |
||||
align-items: center; |
||||
} |
||||
|
||||
.blocks.blocks-2 { |
||||
.widget_text:nth-child(2) { |
||||
border: solid 2px var(--brand-primary, $brand-primary); |
||||
box-shadow: unset; |
||||
} |
||||
} |
||||
|
||||
.blocks.blocks-4 { |
||||
.widget_text:nth-child(2) { |
||||
color: $white; |
||||
background: var(--brand-secondary, $brand-secondary); |
||||
|
||||
h3::before { |
||||
background-color: $white; |
||||
} |
||||
|
||||
.button { |
||||
border-color: $white; |
||||
background: transparent; |
||||
|
||||
&:hover, |
||||
&:focus { |
||||
color: var(--brand-secondary, $brand-secondary); |
||||
background: $white; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.widget_text:nth-child(3) { |
||||
border: solid 2px var(--brand-primary, $brand-primary); |
||||
box-shadow: unset; |
||||
} |
||||
} |
||||
|
||||
.latest-books { |
||||
box-shadow: unset; |
||||
height: auto; |
||||
padding-bottom: 0 0 50px; |
||||
|
||||
h3 { |
||||
margin-top: 70px; |
||||
} |
||||
|
||||
.book, |
||||
.slick-slide { |
||||
width: 100vw; |
||||
height: 386px; |
||||
margin: 45px 0 0; |
||||
padding: 0 29.5px; |
||||
border: solid 2px; |
||||
|
||||
a { |
||||
font-family: $font-family-sans-serif; |
||||
color: $white; |
||||
text-decoration: none; |
||||
} |
||||
|
||||
.subject { |
||||
height: 91px; |
||||
margin-top: 24px; |
||||
font-size: em(24); |
||||
} |
||||
|
||||
.title { |
||||
height: 329px - 115px; |
||||
font-size: em(30); |
||||
font-weight: 500; |
||||
} |
||||
|
||||
.read-more { |
||||
font-size: em(18); |
||||
} |
||||
} |
||||
|
||||
.navigation { |
||||
a { |
||||
&.slick-disabled { |
||||
opacity: 0; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
@media (min-width: $medium) { |
||||
.home { |
||||
.wrap { |
||||
margin-top: -366px; |
||||
} |
||||
|
||||
.block { |
||||
width: 775px; |
||||
margin-bottom: 119px; |
||||
padding: 0 90px; |
||||
box-shadow: -3px 5px 4px 2px rgba(135, 135, 135, 0.09); |
||||
|
||||
&:last-child { |
||||
margin-bottom: 4.0625rem; |
||||
} |
||||
|
||||
h3 { |
||||
font-size: em(48); |
||||
line-height: (56/48); |
||||
|
||||
&::before { |
||||
width: 74px; |
||||
} |
||||
} |
||||
|
||||
p { |
||||
font-size: em(18); |
||||
line-height: (32/18); |
||||
} |
||||
} |
||||
|
||||
.latest-books { |
||||
width: 100%; |
||||
|
||||
.books { |
||||
flex-direction: row; |
||||
justify-content: space-between; |
||||
} |
||||
|
||||
.book, |
||||
.slick-slide { |
||||
width: 300px; |
||||
margin-right: 30px; |
||||
|
||||
&:last-child { |
||||
margin-right: 0; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
@media (min-width: $large) { |
||||
.home { |
||||
.block { |
||||
width: 1115px; |
||||
height: 494px; |
||||
} |
||||
|
||||
.latest-books { |
||||
width: 1200px; |
||||
margin-bottom: 0; |
||||
|
||||
.book, |
||||
.slick-slide { |
||||
width: 367px; |
||||
margin-right: 50px; |
||||
|
||||
&:last-child { |
||||
margin-right: 0; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
@media (min-width: $extra-large) { |
||||
.home { |
||||
.block { |
||||
width: 1115px; |
||||
box-shadow: -3px 5px 4px 2px rgba(135, 135, 135, 0.09); |
||||
} |
||||
|
||||
.blocks.blocks-4 { |
||||
display: flex; |
||||
flex-flow: row wrap; |
||||
width: 1615px; |
||||
|
||||
.widget_text { |
||||
width: 1115px; |
||||
margin-right: auto; |
||||
margin-left: auto; |
||||
} |
||||
|
||||
.widget_text:nth-child(1), |
||||
.widget_text:nth-child(2) { |
||||
width: 775px; |
||||
} |
||||
|
||||
.widget_text:nth-child(1) { |
||||
margin-right: 65px; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
@import 'pages/front-page'; |
||||
@import 'pages/catalog'; |
||||
|
@ -0,0 +1,514 @@
|
||||
.catalog { |
||||
.banner .container { |
||||
height: rem(381); |
||||
} |
||||
|
||||
.banner .primary-navigation { |
||||
height: rem(381); |
||||
} |
||||
|
||||
.page-header { |
||||
display: flex; |
||||
flex-direction: column; |
||||
justify-content: center; |
||||
height: rem(381); |
||||
margin-top: rem(-381); |
||||
|
||||
h1 { |
||||
color: var(--primary, $brand-primary); |
||||
margin-bottom: 2rem; |
||||
font-size: rem(36); |
||||
line-height: 0.55556; |
||||
letter-spacing: 0.1125rem; |
||||
} |
||||
} |
||||
|
||||
.network-catalog { |
||||
width: 100%; |
||||
padding-bottom: rem(152); |
||||
} |
||||
|
||||
.controls { |
||||
width: 100%; |
||||
} |
||||
|
||||
.filters, |
||||
.search, |
||||
.sort { |
||||
width: 100%; |
||||
border-top: solid 2px var(--accent, $brand-accent); |
||||
background: $white; |
||||
|
||||
a { |
||||
display: flex; |
||||
flex-direction: row; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
width: 100%; |
||||
padding: rem(16) rem(19); |
||||
font-size: rem(16); |
||||
font-weight: 600; |
||||
font-family: $font-family-sans-serif; |
||||
letter-spacing: rem(0.67); |
||||
color: $black; |
||||
|
||||
&:hover, |
||||
&:focus { |
||||
background: #fafdff; |
||||
color: var(--primary, $brand-primary); |
||||
} |
||||
} |
||||
|
||||
.has-active-child > a { |
||||
color: var(--primary, $brand-primary); |
||||
} |
||||
|
||||
ul { |
||||
margin: 0; |
||||
padding: 0; |
||||
list-style: none; |
||||
|
||||
li { |
||||
font-size: rem(16); |
||||
font-family: $font-family-sans-serif; |
||||
letter-spacing: rem(0.67); |
||||
|
||||
a { |
||||
display: flex; |
||||
flex-direction: row; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
font-weight: normal; |
||||
cursor: pointer; |
||||
|
||||
.close { |
||||
display: inline-block; |
||||
float: right; |
||||
margin-top: rem(-2); |
||||
font-size: rem(20); |
||||
opacity: 0; |
||||
transition: opacity 0.5s; |
||||
} |
||||
} |
||||
|
||||
a.is-active { |
||||
font-weight: 600; |
||||
color: var(--primary, $brand-primary); |
||||
|
||||
.close { |
||||
opacity: 1; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.arrow { |
||||
path { |
||||
fill: var(--primary, $brand-primary); |
||||
} |
||||
} |
||||
|
||||
.is-active > a .arrow { |
||||
transform: rotate(180deg); |
||||
} |
||||
|
||||
.filters { |
||||
.filter-groups { |
||||
display: none; |
||||
border-top: solid 2px var(--accent, $brand-accent); |
||||
|
||||
h3 { |
||||
margin: 0; |
||||
border-top: solid 1px $light-gray; |
||||
} |
||||
|
||||
h3:first-of-type { |
||||
border-top: none; |
||||
} |
||||
} |
||||
|
||||
.licenses { |
||||
display: none; |
||||
} |
||||
|
||||
.filter-list { |
||||
display: none; |
||||
} |
||||
|
||||
&.is-active { |
||||
.filter-groups, |
||||
.licenses { |
||||
display: block; |
||||
} |
||||
} |
||||
|
||||
.is-active ul { |
||||
display: block; |
||||
} |
||||
} |
||||
|
||||
.search { |
||||
display: none; |
||||
} |
||||
|
||||
.sort { |
||||
border-bottom: solid 2px var(--accent, $brand-accent); |
||||
|
||||
.sorts { |
||||
display: none; |
||||
border-top: solid 2px var(--accent, $brand-accent); |
||||
} |
||||
|
||||
&.is-active { |
||||
.sorts { |
||||
display: block; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.books { |
||||
align-self: flex-start; |
||||
width: percent(358, 360); |
||||
margin: rem(32) 0 0 percent(10.5, 360); |
||||
padding: 0; |
||||
} |
||||
|
||||
.book { |
||||
display: flex; |
||||
flex-direction: column; |
||||
justify-content: flex-end; |
||||
width: percent(165, 358); |
||||
margin: 0 percent(9, 358) rem(8) 0; |
||||
height: rem(230); |
||||
float: left; |
||||
padding: 1.5rem rem(8) rem(26); |
||||
border: solid 2px var(--accent, $brand-accent); |
||||
background: var(--accent, $brand-accent); |
||||
|
||||
p { |
||||
margin: 0; |
||||
} |
||||
|
||||
a { |
||||
font-family: $font-family-sans-serif; |
||||
color: var(--accent-fg, $white); |
||||
text-decoration: none; |
||||
} |
||||
|
||||
.subject { |
||||
height: rem(44); |
||||
font-size: rem(14); |
||||
} |
||||
|
||||
.title { |
||||
height: rem(118); |
||||
font-size: rem(16); |
||||
font-weight: 600; |
||||
line-height: (20/16); |
||||
} |
||||
|
||||
.read-more { |
||||
font-size: rem(14); |
||||
} |
||||
} |
||||
|
||||
.catalog-navigation { |
||||
display: flex; |
||||
flex-direction: row; |
||||
justify-content: center; |
||||
width: 100%; |
||||
margin-top: rem(83); |
||||
align-items: baseline; |
||||
font-family: $font-family-sans-serif; |
||||
|
||||
a { |
||||
color: $black; |
||||
|
||||
&:hover, |
||||
&:focus { |
||||
color: var(--primary, $brand-primary); |
||||
} |
||||
} |
||||
|
||||
.previous, |
||||
.next { |
||||
display: block; |
||||
margin: 0 rem(26); |
||||
font-family: $font-family-sans-serif; |
||||
font-size: rem(16); |
||||
|
||||
svg { |
||||
width: rem(16.2); |
||||
height: rem(12.5); |
||||
margin: 0 rem(6); |
||||
|
||||
path { |
||||
fill: var(--primary, $brand-primary); |
||||
} |
||||
} |
||||
} |
||||
|
||||
.pages { |
||||
display: inline-block; |
||||
border-bottom: solid 2px #ececec; |
||||
|
||||
a, |
||||
span { |
||||
display: inline-block; |
||||
width: rem(41); |
||||
padding: rem(8) 0; |
||||
font-size: rem(24); |
||||
text-align: center; |
||||
} |
||||
|
||||
.current { |
||||
border-bottom: solid rem(6) var(--primary, $brand-primary); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
@media (min-width: 768px) { |
||||
.catalog { |
||||
.controls { |
||||
width: percent(706, 768); |
||||
height: rem(52); |
||||
margin: rem(60) percent(29, 768) rem(20) percent(33, 768); |
||||
|
||||
.filters, |
||||
.search, |
||||
.sort { |
||||
position: relative; |
||||
border-top: 0; |
||||
border-bottom: solid 2px var(--accent, $brand-accent); |
||||
z-index: 99; |
||||
} |
||||
|
||||
.filters { |
||||
float: left; |
||||
width: rem(360); |
||||
|
||||
.filter-groups { |
||||
border-right: solid 1px #ececec; |
||||
border-left: solid 1px #ececec; |
||||
} |
||||
} |
||||
|
||||
.sort { |
||||
float: right; |
||||
width: rem(160); |
||||
|
||||
.sorts { |
||||
border-right: solid 1px #ececec; |
||||
border-bottom: solid 1px #ececec; |
||||
border-left: solid 1px #ececec; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.books { |
||||
align-self: flex-start; |
||||
width: percent(735, 768); |
||||
margin-bottom: rem(15); |
||||
margin-left: percent(24, 768); |
||||
} |
||||
|
||||
.book { |
||||
width: percent(230, 735); |
||||
height: rem(260); |
||||
margin: 0 percent(15, 735) 2rem 0; |
||||
padding: 0 rem(14) rem(21.35); |
||||
|
||||
.subject { |
||||
height: rem(45.85); |
||||
font-size: rem(18); |
||||
} |
||||
|
||||
.title { |
||||
height: rem(147.65); |
||||
font-size: rem(22); |
||||
font-weight: 600; |
||||
line-height: (40/30); |
||||
} |
||||
|
||||
.read-more { |
||||
font-size: rem(16); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
@media (min-width: $medium) { |
||||
.catalog { |
||||
.page-header { |
||||
h1 { |
||||
font-size: rem(72); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
@media #{$breakpoint-large} { |
||||
.catalog { |
||||
.banner { |
||||
.container { |
||||
height: rem(450); |
||||
} |
||||
|
||||
.primary-navigation { |
||||
height: 40px; |
||||
} |
||||
|
||||
.brand { |
||||
text-align: center; |
||||
|
||||
img { |
||||
max-height: rem(60); |
||||
} |
||||
} |
||||
} |
||||
|
||||
.page-header { |
||||
height: rem(360); |
||||
margin-top: rem(-360); |
||||
} |
||||
} |
||||
} |
||||
|
||||
@media (min-width: $extra-large) { |
||||
.catalog { |
||||
.main { |
||||
width: rem(1535); |
||||
margin: 0 auto; |
||||
} |
||||
|
||||
.network-catalog { |
||||
margin-top: rem(205); |
||||
} |
||||
|
||||
.controls { |
||||
width: 100%; |
||||
margin: 0 0 rem(64); |
||||
|
||||
.filters { |
||||
width: rem(286); |
||||
border-bottom: 0; |
||||
|
||||
> a { |
||||
border-bottom: solid 3px var(--accent, $brand-accent); |
||||
|
||||
&:hover, |
||||
&:focus { |
||||
color: $black; |
||||
background: $white; |
||||
cursor: default; |
||||
} |
||||
|
||||
.arrow { |
||||
display: none; |
||||
} |
||||
} |
||||
|
||||
.filter-groups { |
||||
display: block; |
||||
border-right: 0; |
||||
border-top: 0; |
||||
border-left: 0; |
||||
|
||||
.subjects { |
||||
border-bottom: solid 1px #ececec; |
||||
} |
||||
} |
||||
|
||||
.licenses { |
||||
display: block; |
||||
margin-top: rem(60); |
||||
|
||||
> a { |
||||
background: var(--primary, $brand-primary); |
||||
color: var(--primary-fg, $white); |
||||
|
||||
.arrow { |
||||
path { |
||||
fill: var(--primary-fg, $white); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
ul li { |
||||
a { |
||||
padding-top: 0; |
||||
padding-bottom: 0; |
||||
line-height: 2; |
||||
} |
||||
|
||||
&:last-child a { |
||||
padding-bottom: 1rem; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.sort { |
||||
.sorts { |
||||
border-top: solid 3px var(--accent, $brand-accent); |
||||
border-right: 0; |
||||
border-left: 0; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.books { |
||||
width: percent(1221.5, 1535); |
||||
margin: 0 0 0 percent(316, 1535); |
||||
} |
||||
|
||||
.book { |
||||
width: percent(367, 1221.5); |
||||
height: rem(386); |
||||
margin: 0 0 2rem percent(39.5, 1221.5); |
||||
padding: 1.5rem 1.85rem 2.1875rem; |
||||
|
||||
.subject { |
||||
height: 4.625rem; |
||||
font-size: rem(24); |
||||
} |
||||
|
||||
.title { |
||||
height: 13rem; |
||||
font-size: rem(30); |
||||
font-weight: 500; |
||||
line-height: (40/30); |
||||
} |
||||
|
||||
.read-more { |
||||
font-size: rem(18); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.catalog.no-js { |
||||
.filters { |
||||
.arrow { |
||||
display: none; |
||||
} |
||||
|
||||
.filter-groups, |
||||
.licenses, |
||||
.filter-list { |
||||
display: block; |
||||
} |
||||
} |
||||
|
||||
.sort { |
||||
.arrow { |
||||
display: none; |
||||
} |
||||
|
||||
.sorts { |
||||
display: block; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,404 @@
|
||||
.home { |
||||
.block { |
||||
flex-direction: column; |
||||
justify-content: center; |
||||
align-items: center; |
||||
padding: 0 0.78125rem; |
||||
display: flex; |
||||
height: rem(445); |
||||
background-color: $white; |
||||
margin-left: auto; |
||||
margin-right: auto; |
||||
text-align: center; |
||||
|
||||
p { |
||||
font-size: rem(18); |
||||
line-height: (32/16); |
||||
} |
||||
} |
||||
|
||||
.blocks.blocks-2, |
||||
.blocks.blocks-3 { |
||||
.widget_text:nth-child(2) { |
||||
margin-right: 0.5rem; |
||||
margin-left: 0.5rem; |
||||
border: solid 2px var(--primary, $brand-primary); |
||||
box-shadow: unset; |
||||
} |
||||
} |
||||
|
||||
.blocks.blocks-4 { |
||||
.widget_text:nth-child(2) { |
||||
color: var(--accent-fg, $white); |
||||
background: var(--accent, $brand-accent); |
||||
|
||||
h3 { |
||||
color: var(--accent-fg, $white); |
||||
|
||||
&::before { |
||||
background: var(--accent-fg, $white); |
||||
} |
||||
} |
||||
|
||||
.button { |
||||
color: var(--accent-fg, $white); |
||||
border-color: var(--accent-fg, $white); |
||||
background: transparent; |
||||
|
||||
&:hover, |
||||
&:focus { |
||||
color: var(--accent, $brand-accent); |
||||
background: var(--accent-fg, $white); |
||||
} |
||||
} |
||||
} |
||||
|
||||
.widget_text:nth-child(3) { |
||||
margin-top: 2rem; |
||||
margin-right: 0.5rem; |
||||
margin-left: 0.5rem; |
||||
border: solid 2px var(--primary, $brand-primary); |
||||
box-shadow: unset; |
||||
} |
||||
} |
||||
|
||||
.blocks.blocks-2 .widget_text:nth-child(2), |
||||
.blocks.blocks-3 .widget_text:nth-child(2), |
||||
.blocks.blocks-4 .widget_text:nth-child(3) { |
||||
background: transparent; |
||||
margin-bottom: rem(400); |
||||
|
||||
&::after { |
||||
z-index: -1; |
||||
content: ""; |
||||
display: block; |
||||
width: 100vw; |
||||
height: rem(444); |
||||
background-image: url('../images/banner.jpg'); |
||||
background-position: center; |
||||
background-size: cover; |
||||
position: absolute; |
||||
top: rem(1410); |
||||
left: 0; |
||||
} |
||||
} |
||||
|
||||
.blocks.blocks-4 .widget_text:nth-child(3) { |
||||
&::after { |
||||
top: rem(1880); |
||||
} |
||||
} |
||||
|
||||
.block, |
||||
.latest-books { |
||||
h3 { |
||||
font-size: rem(30); |
||||
font-weight: 600; |
||||
color: var(--primary, $brand-primary); |
||||
letter-spacing: 2px; |
||||
line-height: (36/30); |
||||
margin: 0; |
||||
|
||||
&::before { |
||||
content: ""; |
||||
display: block; |
||||
margin: 0 auto 1em; |
||||
width: 46px; |
||||
height: 5px; |
||||
background: var(--accent, $brand-accent); |
||||
} |
||||
} |
||||
} |
||||
|
||||
.latest-books { |
||||
height: auto; |
||||
padding: 0 0 rem(154); |
||||
|
||||
h3 { |
||||
text-align: center; |
||||
text-transform: uppercase; |
||||
margin-top: 4.375rem; |
||||
margin-bottom: 2.8125rem; |
||||
} |
||||
|
||||
.track { |
||||
display: flex; |
||||
flex-flow: row wrap; |
||||
justify-content: center; |
||||
align-items: center; |
||||
max-width: 22.9375rem; |
||||
margin-left: auto; |
||||
margin-right: auto; |
||||
margin-bottom: 2rem; |
||||
padding: 0 0.46875rem; |
||||
position: relative; |
||||
} |
||||
|
||||
.books { |
||||
display: flex; |
||||
flex-direction: column; |
||||
justify-content: center; |
||||
align-items: center; |
||||
order: 0; |
||||
padding: 0; |
||||
width: 100%; |
||||
margin-bottom: rem(34); |
||||
} |
||||
|
||||
.book { |
||||
display: flex; |
||||
flex-direction: column; |
||||
justify-content: flex-end; |
||||
width: 100%; |
||||
max-width: 22.9375rem; |
||||
height: 24.125rem; |
||||
margin: 0 0 2rem; |
||||
padding: 1.5rem 1.85rem 2.1875rem; |
||||
border: solid 2px var(--accent, $brand-accent); |
||||
background: var(--accent, $brand-accent); |
||||
|
||||
a { |
||||
margin: 0; |
||||
font-family: $font-family-sans-serif; |
||||
color: var(--accent-fg, $white); |
||||
text-decoration: none; |
||||
text-align: center; |
||||
} |
||||
|
||||
.subject { |
||||
height: 4.625rem; |
||||
margin: 0; |
||||
font-size: rem(24); |
||||
text-align: center; |
||||
} |
||||
|
||||
.title { |
||||
height: 13rem; |
||||
margin: 0; |
||||
font-size: rem(30); |
||||
font-weight: 500; |
||||
line-height: (40/30); |
||||
text-align: left; |
||||
} |
||||
|
||||
.read-more { |
||||
margin: 0; |
||||
font-size: rem(18); |
||||
text-align: left; |
||||
} |
||||
|
||||
&:last-child { |
||||
margin-bottom: 0; |
||||
} |
||||
} |
||||
|
||||
.previous, |
||||
.next { |
||||
display: block; |
||||
width: auto; |
||||
height: auto; |
||||
|
||||
svg { |
||||
path { |
||||
fill: var(--primary, $brand-primary); |
||||
} |
||||
} |
||||
} |
||||
|
||||
.previous { |
||||
order: 1; |
||||
margin-right: auto; |
||||
} |
||||
|
||||
.next { |
||||
order: 2; |
||||
margin-left: auto; |
||||
} |
||||
|
||||
.catalog-link { |
||||
text-align: center; |
||||
} |
||||
} |
||||
} |
||||
|
||||
@media (min-width: $medium) { |
||||
.home { |
||||
.wrap { |
||||
margin-top: rem(-366); |
||||
} |
||||
|
||||
.block { |
||||
width: rem(775); |
||||
height: rem(494); |
||||
margin-bottom: rem(119); |
||||
padding: 0 90px; |
||||
box-shadow: -3px 5px 4px 2px rgba(135, 135, 135, 0.09); |
||||
|
||||
&:last-child { |
||||
margin-bottom: 4.0625rem; |
||||
} |
||||
|
||||
h3 { |
||||
font-size: rem(48); |
||||
line-height: (56/48); |
||||
|
||||
&::before { |
||||
width: 74px; |
||||
} |
||||
} |
||||
|
||||
p { |
||||
font-size: rem(18); |
||||
line-height: (32/18); |
||||
} |
||||
} |
||||
|
||||
.blocks.blocks-2 .widget_text:nth-child(2), |
||||
.blocks.blocks-3 .widget_text:nth-child(2), |
||||
.blocks.blocks-4 .widget_text:nth-child(3) { |
||||
margin-left: auto; |
||||
margin-right: auto; |
||||
} |
||||
|
||||
.blocks.blocks-2 .widget_text:nth-child(2), |
||||
.blocks.blocks-3 .widget_text:nth-child(2), |
||||
.blocks.blocks-4 .widget_text:nth-child(3) { |
||||
margin-bottom: rem(119); |
||||
|
||||
&::after { |
||||
height: rem(600); |
||||
top: rem(1547); |
||||
} |
||||
} |
||||
|
||||
.blocks.blocks-4 .widget_text:nth-child(3) { |
||||
&::after { |
||||
top: rem(2177); |
||||
} |
||||
} |
||||
|
||||
.latest-books { |
||||
width: 100%; |
||||
margin-left: auto; |
||||
margin-right: auto; |
||||
|
||||
h3 { |
||||
margin-bottom: 4.375rem; |
||||
} |
||||
|
||||
.track { |
||||
display: flex; |
||||
flex-flow: row nowrap; |
||||
width: 100%; |
||||
max-width: 100%; |
||||
margin: 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
.next, |
||||
.previous { |
||||
position: absolute; |
||||
top: rem(165.5); |
||||
|
||||
svg { |
||||
width: 2.4375rem; |
||||
height: 1.875rem; |
||||
} |
||||
} |
||||
|
||||
.next { |
||||
margin-right: 0.9375rem; |
||||
right: 0; |
||||
} |
||||
|
||||
.previous { |
||||
order: 0; |
||||
margin-left: 0.9375rem; |
||||
left: 0; |
||||
} |
||||
|
||||
.books { |
||||
width: auto; |
||||
min-width: 50rem; |
||||
flex-direction: row; |
||||
order: 1; |
||||
justify-content: space-between; |
||||
margin-bottom: 2rem; |
||||
} |
||||
|
||||
.book { |
||||
width: 30%; |
||||
max-width: 19.54rem; |
||||
|
||||
&:last-child { |
||||
margin-bottom: 2rem; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
@media (min-width: $large) { |
||||
.home { |
||||
.block { |
||||
width: rem(1115); |
||||
} |
||||
|
||||
.latest-books { |
||||
width: 100%; |
||||
margin-bottom: 0; |
||||
|
||||
.track { |
||||
width: 100%; |
||||
margin: 0 auto; |
||||
max-width: 87rem; |
||||
} |
||||
|
||||
.books { |
||||
width: 100%; |
||||
max-width: 75rem; |
||||
} |
||||
|
||||
.book { |
||||
min-width: 19.54rem; |
||||
max-width: 22.9375rem; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
@media (min-width: $extra-large) { |
||||
.home { |
||||
.block { |
||||
width: 1115px; |
||||
box-shadow: -3px 5px 4px 2px rgba(135, 135, 135, 0.09); |
||||
} |
||||
|
||||
.blocks.blocks-4 { |
||||
display: flex; |
||||
flex-flow: row wrap; |
||||
width: 1615px; |
||||
|
||||
.widget_text { |
||||
width: 1115px; |
||||
margin-right: auto; |
||||
margin-left: auto; |
||||
} |
||||
|
||||
.widget_text:nth-child(1), |
||||
.widget_text:nth-child(2) { |
||||
width: 775px; |
||||
} |
||||
|
||||
.widget_text:nth-child(1) { |
||||
margin-right: 65px; |
||||
} |
||||
} |
||||
|
||||
.blocks.blocks-4 .widget_text:nth-child(3) { |
||||
&::after { |
||||
top: rem(1596); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,67 @@
|
||||
{{-- |
||||
Template Name: Catalog |
||||
--}} |
||||
|
||||
@extends('layouts.app') |
||||
|
||||
@section('content') |
||||
@include('partials.page-header') |
||||
<section class="network-catalog"> |
||||
<div class="controls"> |
||||
<div class="search"> |
||||
<h2><a href="#search">{{ __('Search by titles or keyword', 'aldine') }} <svg class="arrow" width="13" height="8" viewBox="0 0 13 8" xmlns="http://www.w3.org/2000/svg"><path d="M6.255 8L0 0h12.51z" fill="#b01109" fill-rule="evenodd"/></svg></a></h2> |
||||
</div> |
||||
<div class="filters"> |
||||
<a href="#filter">{{ __('Filter by', 'aldine') }} <svg class="arrow" width="13" height="8" viewBox="0 0 13 8" xmlns="http://www.w3.org/2000/svg"><path d="M6.255 8L0 0h12.51z" fill="#b01109" fill-rule="evenodd"/></svg></a> |
||||
<div id="filter" class="filter-groups"> |
||||
@foreach($subject_groups as $key => $val) |
||||
<div class="{{ $key }} subjects" id="{{ $key }}"> |
||||
<a href="#{{ $key }}">{{ $val['title'] }} <svg class="arrow" width="13" height="8" viewBox="0 0 13 8" xmlns="http://www.w3.org/2000/svg"><path d="M6.255 8L0 0h12.51z" fill="#b01109" fill-rule="evenodd"/></svg></a> |
||||
<ul class="filter-list"> |
||||
@foreach($val['subjects'] as $k => $v) |
||||
<li><a data-filter="{{ $k }}">{{ $v }}<span class="close">×</span></a></li> |
||||
@endforeach |
||||
</ul> |
||||
</div> |
||||
@endforeach |
||||
</div> |
||||
<div class="licenses" id="licenses"> |
||||
<a href="#licenses">{{ __('Licenses', 'aldine' ) }}<svg class="arrow" width="13" height="8" viewBox="0 0 13 8" xmlns="http://www.w3.org/2000/svg"><path d="M6.255 8L0 0h12.51z" fill="#b01109" fill-rule="evenodd"/></svg></a> |
||||
<ul class="filter-list"> |
||||
@foreach($licenses as $key => $value) |
||||
<li><a data-filter="{{ $key }}">{{ $value }}<span class="close">×</span></a></li> |
||||
@endforeach |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
<div class="sort"> |
||||
<a href="#sort">{{ __('Sort by', 'aldine') }} <svg class="arrow" width="13" height="8" viewBox="0 0 13 8" xmlns="http://www.w3.org/2000/svg"><path d="M6.255 8L0 0h12.51z" fill="#b01109" fill-rule="evenodd"/></svg></a> |
||||
<ul id="sort" class="sorts"> |
||||
<li><a data-sort="title" href="{{ "/catalog/page/$current_page/?orderby=title" }}">{{ __('Title', 'aldine') }}</a></li> |
||||
<li><a data-sort="subject" href="{{ "/catalog/page/$current_page/?orderby=subject" }}">{{ __('Subject', 'aldine') }}</a></li> |
||||
<li><a data-sort="latest" href="{{ "/catalog/page/$current_page/?orderby=latest" }}">{{ __('Latest', 'aldine') }}</a></li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
<div class="books"> |
||||
@foreach($catalog_data['books'] as $book) |
||||
@include('partials.book', ['book' => $book]) |
||||
@endforeach |
||||
</div> |
||||
@if($catalog_data['pages'] > 1) |
||||
<nav class="catalog-navigation"> |
||||
@if($previous_page)<a class="previous" data-page="{{ $previous_page }}" href="{{ network_home_url("/catalog/page/$previous_page/") }}">@php(include get_theme_file_path() . '/dist/' . Aldine\asset_dir('images/left-arrow.svg')) {{ __('Previous', 'aldine') }}</a>@endif |
||||
<div class="pages"> |
||||
@for($i = 1; $i <= $catalog_data['pages']; $i++) |
||||
@if($i === $current_page) |
||||
<span class="current">{{ $i }}</span> |
||||
@else |
||||
<a href="{{ network_home_url("/catalog/page/$i/") }}">{{ $i }}</a> |
||||
@endif |
||||
@endfor |
||||
</div> |
||||
@if($next_page <= $catalog_data['pages'])<a class="next" data-page="{{ $next_page }}" href="{{ network_home_url("/catalog/page/$next_page/") }}">{{ __('Next', 'aldine') }} @php(include get_theme_file_path() . '/dist/' . Aldine\asset_dir('images/right-arrow.svg'))</a>@endif |
||||
</nav> |
||||
@endif |
||||
</section> |
||||
@endsection |
@ -0,0 +1,17 @@
|
||||
<div class="book" |
||||
data-date-published="{{ str_replace('-', '', @$book['metadata']['datePublished']) }}" |
||||
data-license="{{ (new \Pressbooks\Licensing())->getLicenseFromUrl($book['metadata']['license']['url']) }}" |
||||
data-subject="{{ sanitize_title(@$book['metadata']['keywords']) }}" |
||||
> |
||||
@if(isset($book['metadata']['keywords'])) |
||||
<p class="subject"> |
||||
<a href="{{ network_home_url('/catalog/#') . $book['metadata']['keywords'] }}">{{ $book['metadata']['keywords'] }}</a> |
||||
</p> |
||||
@endif |
||||
<p class="title"> |
||||
<a href="{{ $book['link'] }}">{{ $book['metadata']['name'] }}</a> |
||||
</p> |
||||
<p class="read-more"> |
||||
<a href="{{ $book['link'] }}">{{ __('About this book →', 'aldine') }}</a> |
||||
</p> |
||||
</div> |
@ -1,11 +1,22 @@
|
||||
<section class="contact flex flex-column justify-center items-center w-100" id="contact"> |
||||
<h3 class="tc ttu">{{ $contact_form_title }}</h3> |
||||
<form action="<?php the_permalink(); ?>" method="post">
|
||||
<form action="{{ network_home_url('/#contact') }}" method="post"> |
||||
@if($contact_form_response) |
||||
<p class="tl mb4 w-100 {{ $contact_form_response['status'] }}">{{ $contact_form_response['message'] }}</p> |
||||
@endif |
||||
<input type="hidden" name="submitted" value="1"> |
||||
<p class="flex flex-row items-center"><label class="clip" for="name">{{ __('Your name*', 'aldine' ) }}</label><input class="input-reset" type="text" placeholder="{{ __('Your name*', 'aldine' ) }}" name="name" value="{{ @esc_attr($_POST['name']) }}"></p> |
||||
<p class="flex flex-row items-center"><label class="clip" for="email">{{ __('Your email*', 'aldine' ) }}</label><input class="input-reset" type="email" placeholder="{{ __('Your email*', 'aldine' ) }}" name="email" value="{{ @esc_attr($_POST['email']) }}"></p> |
||||
<p class="flex flex-row items-center"><label class="clip" for="institution">{{ __('Your institution*', 'aldine' ) }}</label><input class="input-reset" type="text" placeholder="{{ __('Your institution*', 'aldine' ) }}" name="institution" value="{{ @esc_attr($_POST['institution']) }}"></p> |
||||
<p class="flex flex-row items-center"><label class="clip" for="content">{{ __('Your message here', 'aldine' ) }}</label><textarea class="input-reset" type="text" placeholder="{{ __('Your message here', 'aldine' ) }}" name="content">{{ @esc_textarea($_POST['content']) }}</textarea></p> |
||||
<p class="tc"><input class="button-reset button button-small button-secondary button-outline input-reset pointer" type="submit" value="{{ __('Send', 'aldine' ) }}" /></p> |
||||
<p class="flex flex-row items-center @if(@$contact_form_response['field'] === 'visitor_name'){{ 'error' }}@endif"> |
||||
<label class="clip" for="visitor_name">{{ __('Your name*', 'aldine' ) }}</label> |
||||
<input class="input-reset" type="text" placeholder="{{ __('Your name*', 'aldine' ) }}" name="visitor_name" value="@if($contact_form_response['status'] === 'error'){{ @esc_attr($_POST['visitor_name']) }}@endif"></p> |
||||
<p class="flex flex-row items-center @if(@$contact_form_response['field'] === 'visitor_email'){{ 'error' }}@endif"> |
||||
<label class="clip" for="visitor_email">{{ __('Your email*', 'aldine' ) }}</label> |
||||
<input class="input-reset" type="email" placeholder="{{ __('Your email*', 'aldine' ) }}" name="visitor_email" value="@if($contact_form_response['status'] === 'error'){{ @esc_attr($_POST['visitor_email']) }}@endif"></p> |
||||
<p class="flex flex-row items-center @if(@$contact_form_response['field'] === 'visitor_institution'){{ 'error' }}@endif"> |
||||
<label class="clip" for="visitor_institution">{{ __('Your institution*', 'aldine' ) }}</label> |
||||
<input class="input-reset" type="text" placeholder="{{ __('Your institution*', 'aldine' ) }}" name="visitor_institution" value="@if($contact_form_response['status'] === 'error'){{ @esc_attr($_POST['visitor_institution']) }}@endif"></p> |
||||
<p class="flex flex-row items-center @if(@$contact_form_response['field'] === 'message'){{ 'error' }}@endif"> |
||||
<label class="clip" for="message">{{ __('Your message here', 'aldine' ) }}</label> |
||||
<textarea class="input-reset" type="text" placeholder="{{ __('Your message here', 'aldine' ) }}" name="message">@if($contact_form_response['status'] === 'error'){{ @esc_textarea($_POST['message']) }}@endif</textarea></p> |
||||
<p class="tc"><input class="button-reset button button--small button--outline input-reset pointer" type="submit" value="{{ __('Send', 'aldine' ) }}" /></p> |
||||
</form> |
||||
</section> |
||||
|
@ -1,7 +1,7 @@
|
||||
<div class="block flex flex-column items-center justify-center p-0 w-100"> |
||||
<div class="inside tc"> |
||||
<h3 class="tc ttu primary">{{ $title }}</h3> |
||||
<h3 class="tc ttu">{{ $title }}</h3> |
||||
{{ $slot }} |
||||
<a class="button button-primary" href="{{ $button_url }}">{{ $button_title }}</a> |
||||
<a class="button" href="{{ $button_url }}">{{ $button_title }}</a> |
||||
</div> |
||||
</div> |
||||
|
@ -1,27 +0,0 @@
|
||||
<div class="block latest-books w-100"> |
||||
<div class="inside"> |
||||
<h3 class="tc ttu">{{ $latest_books_title }}</h3> |
||||
<div class="books flex flex-column justify-center flex-row-m justify-between-m" data-total-pages="{{ $total_pages }}" data-next-page="2"> |
||||
@foreach(FrontPage::latestBooks( $current_page, 3 ) as $book) |
||||
<div class="book w-100 bg-secondary b--secondary"> |
||||
<p class="subject tc ma0"> |
||||
<a href="">Fiction</a> |
||||
</p> |
||||
<p class="title tc ma0"> |
||||
<a href="{{ $book['link'] }}">{{ $book['metadata']['name'] }}</a> |
||||
</p> |
||||
<p class="read-more tl ma0"> |
||||
<a href="{{ $book['link'] }}">{{ __('About this book →', 'aldine') }}</a> |
||||
</p> |
||||
</div> |
||||
@endforeach |
||||
</div> |
||||
<nav class="navigation flex flex-row justify-between mt2 tr" data-total="{{ $total_pages }}"> |
||||
<a class="secondary previous f1 @if(!$previous_page) slick-disabled @endif" data-page="{{ $previous_page }}" href="{{ network_home_url("/page/$previous_page/") }}">←</a> |
||||
<a class="secondary next f1" data-page="{{ $next_page }}" href="{{ network_home_url("/page/$next_page/") }}">→</a> |
||||
</nav> |
||||
<div class="catalog-link tc"> |
||||
<a class="button button-primary button-outline button-wide" href="{{ network_home_url('/catalog/') }}">{{ __('View Complete Catalog', 'aldine') }}</a> |
||||
</div> |
||||
</div> |
||||
</div> |
@ -0,0 +1,73 @@
|
||||
let mix = require('laravel-mix'); |
||||
|
||||
/* |
||||
|-------------------------------------------------------------------------- |
||||
| Mix Asset Management |
||||
|-------------------------------------------------------------------------- |
||||
| |
||||
| Mix provides a clean, fluent API for defining some Webpack build steps |
||||
| for your Laravel application. By default, we are compiling the Sass |
||||
| file for your application, as well as bundling up your JS files. |
||||
| |
||||
*/ |
||||
|
||||
const app = 'app'; |
||||
const resources = 'resources'; |
||||
const assets = `${resources}/assets`; |
||||
const dist = 'dist'; |
||||
|
||||
mix.setPublicPath(dist); |
||||
mix.setResourceRoot('../'); |
||||
|
||||
// BrowserSync
|
||||
mix.browserSync({ |
||||
host: 'localhost', |
||||
proxy: 'http://pressbooks.dev', |
||||
port: 3000, |
||||
files: [ |
||||
`${app}/**/*.php`, |
||||
`${resources}/**/*.php`, |
||||
`${dist}/**/*.css`, |
||||
`${dist}/**/*.js`, |
||||
], |
||||
}); |
||||
|
||||
// Sass
|
||||
mix.sass(`${assets}/styles/main.scss`, `${dist}/styles/main.css`); |
||||
|
||||
// Javascript
|
||||
mix.autoload({ |
||||
jquery: ['$', 'window.jQuery', 'jQuery'], |
||||
}); |
||||
|
||||
mix.js(`${assets}/scripts/main.js`, `${dist}/scripts`) |
||||
.js(`${assets}/scripts/customizer.js`, `${dist}/scripts`); |
||||
|
||||
// Assets
|
||||
mix.copy(`${assets}/fonts`, `${dist}/fonts`, false) |
||||
.copy(`${assets}/images`, `${dist}/images`, false); |
||||
|
||||
// Options
|
||||
mix.options({ |
||||
processCssUrls: false, |
||||
}); |
||||
|
||||
// Source maps when not in production.
|
||||
if (!mix.inProduction()) { |
||||
mix.sourceMaps(); |
||||
} |
||||
|
||||
// Hash and version files in production.
|
||||
if (mix.inProduction()) { |
||||
mix.version(); |
||||
} |
||||
|
||||
// Add Isotope support.
|
||||
mix.webpackConfig({ |
||||
resolve: { |
||||
alias: { |
||||
'masonry': 'masonry-layout', |
||||
'isotope': 'isotope-layout', |
||||
}, |
||||
}, |
||||
}); |