Merge pull request #581 from sharelatex/jel-add-cms

Add CMS
This commit is contained in:
Jessica Lawshe 2018-06-08 07:18:03 -05:00 committed by GitHub
commit ba5b3bb06a
7 changed files with 221 additions and 11 deletions

View file

@ -12,17 +12,24 @@ html(itemscope, itemtype='http://schema.org/Product')
-if (typeof(gaExperiments) != "undefined") -if (typeof(gaExperiments) != "undefined")
|!{gaExperiments} |!{gaExperiments}
//- Title
-if (typeof(title) == "undefined") -if (typeof(title) == "undefined")
title= settings.appName + ', '+ translate("online_latex_editor") title= settings.appName + ', '+ translate("online_latex_editor")
meta(name="twitter:title", content=settings.appName + ', '+ translate("online_latex_editor"))
meta(name="og:title", content=settings.appName + ', '+ translate("online_latex_editor"))
-else -else
title= translate(title) + ' - ' + settings.appName + ', ' + translate("online_latex_editor") title= translate(title) + ' - ' + settings.appName + ', ' + translate("online_latex_editor")
//- to do - not translate?
meta(name="twitter:title", content=translate(title))
meta(name="og:title", content=translate(title))
//- Icons
link(rel="icon", href="/" + settings.brandPrefix + "favicon.ico") link(rel="icon", href="/" + settings.brandPrefix + "favicon.ico")
link(rel="icon", sizes="192x192", href="/" + settings.brandPrefix + "touch-icon-192x192.png") link(rel="icon", sizes="192x192", href="/" + settings.brandPrefix + "touch-icon-192x192.png")
link(rel="apple-touch-icon-precomposed", href="/" + settings.brandPrefix + "apple-touch-icon-precomposed.png") link(rel="apple-touch-icon-precomposed", href="/" + settings.brandPrefix + "apple-touch-icon-precomposed.png")
link(rel="mask-icon", href="/" + settings.brandPrefix + "mask-favicon.svg", color=settings.brandPrefix === 'ol-' ? "#4f9c45" : "#a93529") link(rel="mask-icon", href="/" + settings.brandPrefix + "mask-favicon.svg", color=settings.brandPrefix === 'ol-' ? "#4f9c45" : "#a93529")
//- Stylesheet
link(rel='stylesheet', href=buildCssPath("/" + settings.brandPrefix + "style.css", {hashedPath:true})) link(rel='stylesheet', href=buildCssPath("/" + settings.brandPrefix + "style.css", {hashedPath:true}))
block _headLinks block _headLinks
@ -35,13 +42,45 @@ html(itemscope, itemtype='http://schema.org/Product')
meta(itemprop="name", content=settings.appName + ", the Online LaTeX Editor") meta(itemprop="name", content=settings.appName + ", the Online LaTeX Editor")
//- Description
-if (typeof(meta) == "undefined") -if (typeof(meta) == "undefined")
meta(itemprop="description", name="description", content=translate("site_description")) meta(itemprop="description", name="description", content=translate("site_description"))
-else -else
meta(itemprop="description", name="description" , content=meta) meta(itemprop="description", name="description" , content=meta)
-if (typeof(metaImage) == "undefined")
meta(itemprop="image", name="image", content="/" + settings.brandPrefix + "favicon.ico") meta(itemprop="image", name="image", content="/" + settings.brandPrefix + "favicon.ico")
-else
meta(itemprop="image", name="image", content=metaImage.fields.file.url)
//- Meta Tags: Twitter
-if (typeof(settings.social.twitter.handle) != "undefined")
meta(name="twitter:site", content=settings.social.twitter.handle)
meta(name="twitter:card", content=metaTwitterCard ? metaTwitterCard : 'summary')
-if (typeof(metaTwitterDescription) != "undefined")
meta(itemprop="twitter:description", content=metaTwitterDescription)
-if (typeof(metaTwitterImage) != "undefined")
meta(itemprop="image", name="image", content=metaTwitterImage.fields.file.url)
-else if (typeof(metaImage) != "undefined")
meta(itemprop="image", name="image", content=metaImage.fields.file.url)
//- Meta Tags: Open Graph
-if (typeof(settings.social.facebook.appId) != "undefined")
meta(name="fb:app_id", content=settings.social.facebook.appId)
-if (typeof(metaOpenGraphDescription) != "undefined")
meta(itemprop="og:description", content=metaOpenGraphDescription)
-if (typeof(metaOpenGraphImage) != "undefined")
meta(itemprop="image", name="image", content=metaOpenGraphImage.fields.file.url)
-else if (typeof(metaImage) != "undefined")
meta(itemprop="image", name="image", content=metaImage.fields.file.url)
-if (typeof(metaOgType) != "undefined")
meta(name="og:type", metaOgType)
-else
meta(name="og:type", content="website")
//- Scripts
//- Google Analytics
- if (typeof(gaToken) != "undefined") - if (typeof(gaToken) != "undefined")
script(type='text/javascript'). script(type='text/javascript').
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
@ -152,4 +191,3 @@ html(itemscope, itemtype='http://schema.org/Product')
include sentry include sentry

View file

@ -36,6 +36,7 @@
"bufferedstream": "1.6.0", "bufferedstream": "1.6.0",
"codemirror": "^5.33.0", "codemirror": "^5.33.0",
"connect-redis": "^3.1.0", "connect-redis": "^3.1.0",
"contentful": "^6.1.1",
"cookie": "^0.2.3", "cookie": "^0.2.3",
"cookie-parser": "1.3.5", "cookie-parser": "1.3.5",
"csurf": "^1.8.3", "csurf": "^1.8.3",

View file

@ -0,0 +1,33 @@
/*
v2
About Page
*/
.team {
list-style: none;
padding: 0;
.team-member {
display: block;
float: left;
margin-bottom: @margin-lg;
width: 100%;
h3 {
margin: 0;
}
.team-pic {
float: left;
margin-right: @margin-sm;
}
.team-info {
overflow: hidden;
}
.team-connect {
list-style: none;
margin-top: @margin-sm;
padding: 0;
li {
display: inline-block;
margin: 0 @margin-md 0 0;
}
}
}
}

View file

@ -0,0 +1,41 @@
/*
v2
Blog Pages
*/
.blog {
img {
max-width: 100%;
}
.blog-list {
list-style: none;
margin: 0;
padding: 0;
li {
margin: 0 0 @margin-lg 0;
}
.card-header {
margin-bottom: @margin-sm;
padding: 0;
}
p {
margin-top: 12.5px;
}
}
.tags {
margin-top: @margin-md;
.tags-list {
list-style: none;
padding: 0;
}
li {
display: inline-block;
margin: 0;
padding: 0 @margin-sm 0 0;
}
a {
font-size: small;
}
}
}

View file

@ -0,0 +1,88 @@
/*
v2
CMS Generated Pages,
including About and Blog
*/
.cms-page {
.contact-btn-description {
margin-right: @margin-sm;
}
.tab-content {
float: left;
width: 100%;
}
/*
When on preview mode
*/
.cms-preview {
background-color: @blue;
color: black;
font-weight: bold;
height: @navbar-padding-vertical;
left: 0;
line-height: @navbar-padding-vertical;
opacity: 0.8;
position: fixed;
text-align: center;
top: 0;
width: 100%;
z-index: 1;
&:after {
content: 'Preview';
width: 100%;
top: 0;
left: 0;
}
}
/*
All content from CMS is in .row-spaced.
Margin below is to fix extra whitespace for first rows
*/
.container > .row:nth-child(2) {
//- first child is page header, don't correct margin
margin-top: 0;
}
.tab-pane {
.row:first-child {
margin-top: 0;
}
}
/*
quotes
*/
blockquote {
/*
type.less sets <p> inline, so that quotation mark is inline
but sometimes we have multiple <p>,
so hide quotation mark from type.less and add one here
*/
&:before {
/* hide quotation from type.less */
display: none;
}
p {
display: block;
}
p:first-child {
/* below copied from type.less */
&:before {
content: open-quote;
font-size: @blockquote-font-size * 3;
color: @blockquote-border-color;
margin-right: 0.25em;
vertical-align: -0.4em;
line-height: 0.1em;
}
}
}
.quote-full-width {
img {
margin-right: @margin-sm;
margin-bottom: @margin-sm;
}
}
}

View file

@ -62,6 +62,10 @@
// //
//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start). //## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
@margin-sm: 10px;
@margin-md: 20px;
@margin-lg: 30px;
@padding-base-vertical: 5px; @padding-base-vertical: 5px;
@padding-base-horizontal: 16px; @padding-base-horizontal: 16px;

View file

@ -6,3 +6,8 @@
@import "app/ol-style-guide.less"; @import "app/ol-style-guide.less";
@import "_style_includes.less"; @import "_style_includes.less";
@import "_ol_style_includes.less"; @import "_ol_style_includes.less";
// Pages
@import "app/about.less";
@import "app/blog-posts.less";
@import "app/cms-page.less";