addtheme
This commit is contained in:
parent
14139c7bc8
commit
03694c1aa6
6
.gitignore
vendored
6
.gitignore
vendored
@ -21,10 +21,12 @@ user/accounts/*
|
||||
!user/accounts/.*
|
||||
user/data/*
|
||||
!user/data/.*
|
||||
user/pages/*
|
||||
!user/pages/.*
|
||||
user/plugins/*
|
||||
!user/plugins/.*
|
||||
user/themes/*
|
||||
!user/themes/.*
|
||||
user/themes/quark/*
|
||||
!user/themes/quark/.*
|
||||
user/localhost/config/security.yaml
|
||||
user/config/security.yaml
|
||||
|
||||
|
2
user/themes/lecampus/.gitignore
vendored
Normal file
2
user/themes/lecampus/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
node_modules
|
||||
images/logo/*
|
128
user/themes/lecampus/CHANGELOG.md
Normal file
128
user/themes/lecampus/CHANGELOG.md
Normal file
@ -0,0 +1,128 @@
|
||||
# v1.2.6
|
||||
## 03/21/2019
|
||||
|
||||
1. [](#new)
|
||||
* Set Dependency of Grav 1.5.10+ which has support for new **Deferred Block** Twig extension
|
||||
* Implement assets rendering using **Deferred Block** Twig extension
|
||||
|
||||
# v1.2.5
|
||||
## 12/07/2018
|
||||
|
||||
1. [](#improved)
|
||||
* Updated [Spectre.css](https://picturepan2.github.io/spectre/) to latest `0.5.7` version
|
||||
1. [](#bugfix)
|
||||
* Fixed missing `</html>` close tag in bae template [#76](https://github.com/getgrav/grav-theme-quark/pull/)
|
||||
|
||||
# v1.2.4
|
||||
## 11/12/2018
|
||||
|
||||
1. [](#improved)
|
||||
* Updated [Spectre.css](https://picturepan2.github.io/spectre/) to latest `0.5.5` version
|
||||
* Added link support to modular `features` [#39](https://github.com/getgrav/grav-theme-quark/pull/39/)
|
||||
* Remove desktop menu when in mobile mode [#59](https://github.com/getgrav/grav-theme-quark/pull/59/)
|
||||
* Support modular `text` full-width if no image [#70](https://github.com/getgrav/grav-theme-quark/issues/70)
|
||||
* Shim for IE support of BrickLayer.js [#64](https://github.com/getgrav/grav-theme-quark/issues/64)
|
||||
1. [](#bugfix)
|
||||
* Fixed `continue_link:` showing up as toggled [#65](https://github.com/getgrav/grav-theme-quark/issues/65)
|
||||
* Fixed issue with modular pages not hidden in on-page menu with `visible: false` [#71](https://github.com/getgrav/grav-theme-quark/issues/71)
|
||||
|
||||
# v1.2.3
|
||||
## 11/05/2018
|
||||
|
||||
1. [](#improved)
|
||||
* Moved footer into standalone twig to allow for easier extensibility [#63](https://github.com/getgrav/grav-theme-quark/pull/63)
|
||||
1. [](#bugfix)
|
||||
* Fix variable name for prouction mode [#61](https://github.com/getgrav/grav-theme-quark/pull/61)
|
||||
* Fix layout size in features blueprint [#67](https://github.com/getgrav/grav-theme-quark/pull/67)
|
||||
* Fix active page logic in `nav` so there's no empty class attributes [#68](https://github.com/getgrav/grav-theme-quark/pull/68)
|
||||
* Fix for features blueprint because `class` didn't work [#69](https://github.com/getgrav/grav-theme-quark/pull/69)
|
||||
|
||||
# v1.2.2
|
||||
## 10/24/2018
|
||||
|
||||
1. [](#improved)
|
||||
* Changed nav macro to format supported by Twig 2.0
|
||||
* Updated `partials/form-messages.html.twig` to be more inline with latest Forms plugin
|
||||
1. [](#bugfix)
|
||||
* Make the theme to work with Twig auto-escaping turned on
|
||||
* Moved language strings under `THEME_QUARK`
|
||||
|
||||
# v1.2.1
|
||||
## 08/23/2018
|
||||
|
||||
1. [](#improved)
|
||||
* Added additional "mobile custom logo" support
|
||||
1. [](#bugfix)
|
||||
* Addressed some CSS issues by forcing logo height
|
||||
|
||||
# v1.2.0
|
||||
## 08/23/2018
|
||||
|
||||
1. [](#new)
|
||||
* Added new "custom logo" support [#3](https://github.com/getgrav/grav-theme-quark/issues/3)
|
||||
* Added option JSON feed syndication support in sidebar [#47](https://github.com/getgrav/grav-theme-quark/pull/47)
|
||||
* Added basic form field `array` styling
|
||||
|
||||
# v1.1.0
|
||||
## 07/25/2018
|
||||
|
||||
1. [](#new)
|
||||
* Responsive font sizing [#28](https://github.com/getgrav/grav-theme-quark/issues/28)
|
||||
1. [](#improved)
|
||||
* Updated [Spectre.css](https://picturepan2.github.io/spectre/) to latest `0.5.3` version
|
||||
* Make blog settings toggleable [#38](https://github.com/getgrav/grav-theme-quark/pull/38)
|
||||
1. [](#bugfix)
|
||||
* Proper fix for sticky footer in IE10 and IE11 [#21](https://github.com/getgrav/grav-theme-quark/issues/21)
|
||||
* Fix for lists wrapping weirdly due to `outside` attribute
|
||||
* Updated checkbox + radio to take into account `client_side_validation` form option
|
||||
* Fixes for fallback values [#37](https://github.com/getgrav/grav-theme-quark/pull/37)
|
||||
* Fix inheritance for images folder [#30](https://github.com/getgrav/grav-theme-quark/pull/30)
|
||||
* Added blueprint option for `continue_link` [#45](https://github.com/getgrav/grav-theme-quark/issues/45)
|
||||
* Added blueprint option for Feature `class` [#14](https://github.com/getgrav/grav-theme-quark/issues/14)
|
||||
* Fixed `Duplicate ID` issues with modular sections. Might break CSS on first load, need to refresh to pick up new CSS [#24](https://github.com/getgrav/grav-theme-quark/issues/24)
|
||||
* Fixed Text feature alignment issue [#4](https://github.com/getgrav/grav-theme-quark/issues/4)
|
||||
* Overlapping menu and mobile button [#7](https://github.com/getgrav/grav-theme-quark/issues/7)
|
||||
|
||||
# v1.0.3
|
||||
## 05/11/2018
|
||||
|
||||
1. [](#new)
|
||||
* Added new primary button mixin
|
||||
1. [](#improved)
|
||||
* Updated [Spectre.css](https://picturepan2.github.io/spectre/) to latest `0.5.1` version
|
||||
* Improved default login styling
|
||||
* Removed core Spectre.css override to make upgrading Spectre easier
|
||||
* Added screenshot to README.md
|
||||
* Override focus to prevent overzealous blue blurs
|
||||
1. [](#bugfix)
|
||||
* Fix for `highlight` plugin not changing background of code blocks
|
||||
* Removed extraneous `dump()` in Twig output
|
||||
|
||||
# v1.0.2
|
||||
## 02/19/2018
|
||||
|
||||
1. [](#new)
|
||||
* Added toggle options to enable Spectre.css _experimentals_ and _icons_ CSS files
|
||||
* Switched to a fork of LineAwesome icons compatible with FontAwesome 4.7.0
|
||||
1. [](#improved)
|
||||
* Font tweaks
|
||||
1. [](#bugfix)
|
||||
* Pagination fixes
|
||||
|
||||
# v1.0.1
|
||||
## 01/22/2018
|
||||
|
||||
1. [](#new)
|
||||
* Added blueprints for admin editing
|
||||
1. [](#improved)
|
||||
* Use default lang from `site.yaml`
|
||||
1. [](#bugfix)
|
||||
* Fixed Current path to address issues with extending Quark
|
||||
* Fixed parallax to start in same position as standard
|
||||
* Fixed modular image size
|
||||
|
||||
# v1.0.0
|
||||
## 12/28/2017
|
||||
|
||||
1. [](#new)
|
||||
* ChangeLog started...
|
21
user/themes/lecampus/LICENSE
Normal file
21
user/themes/lecampus/LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2018 Trilby Media
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
151
user/themes/lecampus/README.md
Normal file
151
user/themes/lecampus/README.md
Normal file
@ -0,0 +1,151 @@
|
||||
# Lecampus Theme
|
||||
|
||||

|
||||
|
||||
**Lecampus** is the new default theme for [Grav CMS](http://github.com/getgrav/grav). This theme is built with the [Spectre.css](https://picturepan2.github.io/spectre/) framework and provides a powerful base for developing your own themes. Quark uses functionality that is only available in Grav 1.4+, as such you cannot run Quark on earlier versions of Grav.
|
||||
|
||||
## Features
|
||||
|
||||
* Lightweight and minimal for optimal performance
|
||||
* Spectre CSS Framework
|
||||
* Fully responsive with full-page mobile navigation
|
||||
* SCSS based CSS source files for easy customization
|
||||
* Built-in support for on-page navigation
|
||||
* Multiple page template types
|
||||
* Fontawesome icon support
|
||||
|
||||
### Supported Page Templates
|
||||
|
||||
* Default view template `default.md`
|
||||
* Error view template `error.md`
|
||||
* Blog view template `blog.md`
|
||||
* Blog item view template `item.md`
|
||||
* Modular view templates: `modular.md`
|
||||
* Features Modular view template `features.md`
|
||||
* Hero Modular view template `hero.md`
|
||||
* Text Modular view template `text.md`
|
||||
|
||||
# Installation
|
||||
|
||||
Installing the Quark theme can be done in one of two ways. Our GPM (Grav Package Manager) installation method enables you to quickly and easily install the theme with a simple terminal command, while the manual method enables you to do so via a zip file.
|
||||
|
||||
The theme by itself is useful, but you may have an easier time getting up and running by installing a skeleton. The Quark theme can be found in both the [One-page](https://github.com/getgrav/grav-skeleton-onepage-site) and [Blog Site](https://github.com/getgrav/grav-skeleton-blog-site) which are self-contained repositories for a complete sites which include: sample content, configuration, theme, and plugins.
|
||||
|
||||
## GPM Installation (Preferred)
|
||||
|
||||
The simplest way to install this theme is via the [Grav Package Manager (GPM)](http://learn.getgrav.org/advanced/grav-gpm) through your system's Terminal (also called the command line). From the root of your Grav install type:
|
||||
|
||||
bin/gpm install quark
|
||||
|
||||
This will install the Quark theme into your `/user/themes` directory within Grav. Its files can be found under `/your/site/grav/user/themes/quark`.
|
||||
|
||||
## Manual Installation
|
||||
|
||||
To install this theme, just download the zip version of this repository and unzip it under `/your/site/grav/user/themes`. Then, rename the folder to `quark`. You can find these files either on [GitHub](https://github.com/getgrav/grav-theme-quark) or via [GetGrav.org](http://getgrav.org/downloads/themes).
|
||||
|
||||
You should now have all the theme files under
|
||||
|
||||
/your/site/grav/user/themes/quark
|
||||
|
||||
## Default Options
|
||||
|
||||
Quark comes with a few default options that can be set site-wide. These options are:
|
||||
|
||||
```yaml
|
||||
enabled: true # Enable the theme
|
||||
production-mode: true # In production mode, only minified CSS is used. When disabled, nested CSS with sourcemaps are enabled
|
||||
grid-size: grid-lg # The max-width of the theme, options include: `grid-xl`, `grid-lg`, and `grid-md`
|
||||
header-fixed: true # Cause the header to be fixed at the top of the browser
|
||||
header-animated: true # Allows the fixed header to resize to a smaller header when scrolled
|
||||
header-dark: false # Inverts the text/logo to work better on dark backgrounds
|
||||
header-transparent: false # Allows the fixed header to be transparent over the page
|
||||
sticky-footer: true # Causes the footer to be sticky at the bottom of the page
|
||||
blog-page: '/blog' # The route to the blog listing page, useful for a blog style layout with sidebar
|
||||
custom_logo: # A custom logo rather than the default (see below)
|
||||
custom_logo_mobile: # A custom logo to use for mobile navigation
|
||||
```
|
||||
|
||||
To make modifications, you can copy the `user/themes/quark/quark.yaml` file to `user/config/themes/` folder and modify, or you can use the admin plugin.
|
||||
|
||||
> NOTE: Do not modify the `user/themes/quark/quark.yaml` file directly or your changes will be lost with any updates
|
||||
|
||||
## Custom Logos
|
||||
|
||||
To add a custom logo, you should put the log into the `user/themes/quark/images/logo` folder. Standard image formats are support (`.png`,`.jpg`, `.gif`, `.svg`, etc.). Then reference the logo via the YAML like so:
|
||||
|
||||
```yaml
|
||||
custom_logo:
|
||||
- name: 'my-logo.png'
|
||||
custom_logo_mobile:
|
||||
- name: 'my-mobile-logo.png'
|
||||
```
|
||||
|
||||
Alternatively, you can you use the drag-n-drop "Custom Logo" field in the Quark theme options.
|
||||
|
||||
## Page Overrides
|
||||
|
||||
Quark has the ability to allow pages to override some of the default options by letting the user set `body_classes` for any page. The theme will merge the combination of the defaults with any `body_classes` set. For example:
|
||||
|
||||
```yaml
|
||||
body_classes: "header-dark header-transparent"
|
||||
```
|
||||
|
||||
On a particular page will ensure that page has those options enabled (assuming they are false by default).
|
||||
|
||||
## Hero Options
|
||||
|
||||
The hero template allows some options to be set in the page frontmatter. This is used by the modular `hero` as well as the blog and item templates to provide a more dynamic header.
|
||||
|
||||
```yaml
|
||||
hero_classes: text-light title-h1h2 parallax overlay-dark-gradient hero-large
|
||||
hero_image: road.jpg
|
||||
hero_align: center
|
||||
```
|
||||
|
||||
The `hero_classes` option allows a variety of hero classes to be set dynamically these include:
|
||||
|
||||
* `text-light` | `text-dark` - Controls if the text should be light or dark depending on the content
|
||||
* `title-h1h2` - Enforced a close matched h1/h2 title pairing
|
||||
* `parallax` - Enables a CSS-powered parallax effect
|
||||
* `overlay-dark-gradient` - Displays a transparent gradient which further darkens the underlying image
|
||||
* `overlay-light-gradient` - Displays a transparent gradient which further lightens the underlying image
|
||||
* `overlay-dark` - Displays a solid transparent overlay which further darkens the underlying image
|
||||
* `overlay-light` - Displays a solid transparent overlay which further darkens the underlying image
|
||||
* `hero-fullscreen` | `hero-large` | `hero-medium` | `hero-small` | `hero-tiny` - Size of the hero block
|
||||
|
||||
The `hero_image` should point to an image file in the current page folder.
|
||||
|
||||
## Features Modular Options
|
||||
|
||||
The features modular template provides the ability to set a class on the features, as well as an array of feature items. For example:
|
||||
|
||||
```yaml
|
||||
class: offset-box
|
||||
features:
|
||||
- header: Crazy Fast
|
||||
text: "Performance is not just an afterthought, we baked it in from the start!"
|
||||
icon: fighter-jet
|
||||
- header: Easy to build
|
||||
text: "Simple text files means Grav is trivial to install, and easy to maintain"
|
||||
icon: database
|
||||
- header: Awesome Technology
|
||||
text: "Grav employs best-in-class technologies such as Twig, Markdown & Yaml"
|
||||
icon: cubes
|
||||
- header: Super Flexible
|
||||
text: "From the ground up, with many plugin hooks, Grav is extremely extensible"
|
||||
icon: object-ungroup
|
||||
- header: Abundant Plugins
|
||||
text: "A vibrant developer community means over 200 themes available to download"
|
||||
icon: puzzle-piece
|
||||
- header: Free / Open Source
|
||||
text: "Grav is an open source project, so you can spend your money on other stuff"
|
||||
icon: money
|
||||
```
|
||||
|
||||
## Text Modular Options
|
||||
|
||||
The text box provides a single option to control if any image found in the page folder should be left or right aligned:
|
||||
|
||||
```yaml
|
||||
image_align: right
|
||||
```
|
BIN
user/themes/lecampus/assets/quark-screenshots.jpg
Normal file
BIN
user/themes/lecampus/assets/quark-screenshots.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 193 KiB |
174
user/themes/lecampus/blueprints.yaml
Normal file
174
user/themes/lecampus/blueprints.yaml
Normal file
@ -0,0 +1,174 @@
|
||||
name: lecampus
|
||||
version: 1.0
|
||||
description: Le campus Theme
|
||||
icon: microchip
|
||||
author:
|
||||
name: FiguresLibres
|
||||
email: kevin@figureslibres.io
|
||||
url: http://figureslibres.cc
|
||||
homepage: https://github.com/getgrav/grav-theme-quark
|
||||
demo: https://demo.getgrav.org/onepage-skeleton
|
||||
keywords: le_campus, figureslibres, theme, core, modern, fast, responsive, html5, css3
|
||||
bugs: https://github.com/getgrav/grav-theme-quark/issues
|
||||
license: MIT
|
||||
|
||||
dependencies:
|
||||
- { name: grav, version: '>=1.5.10' }
|
||||
|
||||
form:
|
||||
validation: loose
|
||||
|
||||
fields:
|
||||
production-mode:
|
||||
type: toggle
|
||||
label: Production mode
|
||||
help: When enabled, Quark will render with minified CSS
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
grid-size:
|
||||
type: select
|
||||
label: Grid size
|
||||
help: The maximum width of the theme
|
||||
size: small
|
||||
options:
|
||||
'': None (full width)
|
||||
grid-xl: Extra Large
|
||||
grid-lg: Large
|
||||
grid-md: Medium
|
||||
|
||||
header_section:
|
||||
type: section
|
||||
title: Header Defaults
|
||||
underline: true
|
||||
|
||||
custom_logo:
|
||||
type: file
|
||||
label: Custom Logo
|
||||
size: large
|
||||
destination: 'theme://images/logo'
|
||||
multiple: false
|
||||
markdown: true
|
||||
description: Will be used instead of default logo `theme://images/grav-logo.svg`
|
||||
accept:
|
||||
- image/*
|
||||
|
||||
custom_logo_mobile:
|
||||
type: file
|
||||
label: Mobile Custom Logo
|
||||
size: large
|
||||
destination: 'theme://images/logo'
|
||||
multiple: false
|
||||
accept:
|
||||
- image/*
|
||||
|
||||
header-fixed:
|
||||
type: toggle
|
||||
label: Fixed header
|
||||
help: When enabled, the header will be fixed at the top of the browser
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header-animated:
|
||||
type: toggle
|
||||
label: Animated
|
||||
help: When enabled, the header will animate to a smaller header when scrolling
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header-dark:
|
||||
type: toggle
|
||||
label: Dark Style
|
||||
help: When enabled, a dark-friendly style will be used
|
||||
highlight: 0
|
||||
default: 0
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header-transparent:
|
||||
type: toggle
|
||||
label: Transparent
|
||||
help: When enabled, a transparent style will be used
|
||||
highlight: 0
|
||||
default: 0
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
footer_section:
|
||||
type: section
|
||||
title: Footer Defaults
|
||||
underline: true
|
||||
|
||||
sticky-footer:
|
||||
type: toggle
|
||||
label: Sticky footer
|
||||
help: When enabled, the footer will be sticky at the bottom of the browser
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
blog_section:
|
||||
type: section
|
||||
title: Blog Defaults
|
||||
underline: true
|
||||
|
||||
blog-page:
|
||||
type: text
|
||||
label: Blog Page
|
||||
help: The route to the blog page when working with blog sidebar
|
||||
size: medium
|
||||
default: '/blog'
|
||||
|
||||
spectre_section:
|
||||
type: section
|
||||
title: Spectre.css Options
|
||||
underline: true
|
||||
|
||||
spectre.exp:
|
||||
type: toggle
|
||||
label: Experimentals CSS
|
||||
help: When enabled, the `spectre-exp.css` file will be included
|
||||
highlight: 0
|
||||
default: 0
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
spectre.icons:
|
||||
type: toggle
|
||||
label: Icons CSS
|
||||
help: When enabled, the `spectre-icons.css` file will be included
|
||||
highlight: 0
|
||||
default: 0
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
92
user/themes/lecampus/blueprints/blog.yaml
Normal file
92
user/themes/lecampus/blueprints/blog.yaml
Normal file
@ -0,0 +1,92 @@
|
||||
extends@: default
|
||||
child_type: item
|
||||
|
||||
rules:
|
||||
slug:
|
||||
pattern: "[a-z][a-z0-9_\-]+"
|
||||
min: 2
|
||||
max: 80
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
type: tabs
|
||||
active: 1
|
||||
|
||||
fields:
|
||||
advanced:
|
||||
fields:
|
||||
overrides:
|
||||
fields:
|
||||
header.child_type:
|
||||
default: item
|
||||
blog:
|
||||
type: tab
|
||||
title: Blog Config
|
||||
|
||||
fields:
|
||||
|
||||
content_title:
|
||||
type: spacer
|
||||
title: Content Definition
|
||||
|
||||
header.content.items:
|
||||
type: textarea
|
||||
yaml: true
|
||||
label: Items
|
||||
default: '@self.children'
|
||||
validate:
|
||||
type: yaml
|
||||
|
||||
header.content.limit:
|
||||
type: text
|
||||
label: Max Item Count
|
||||
default: 5
|
||||
validate:
|
||||
required: true
|
||||
type: int
|
||||
min: 1
|
||||
|
||||
header.content.order.by:
|
||||
type: select
|
||||
label: Order By
|
||||
default: date
|
||||
options:
|
||||
folder: Folder
|
||||
title: Title
|
||||
date: Date
|
||||
default: Default
|
||||
|
||||
header.content.order.dir:
|
||||
type: select
|
||||
label: Order
|
||||
default: desc
|
||||
options:
|
||||
asc: Ascending
|
||||
desc: Descending
|
||||
|
||||
header.content.pagination:
|
||||
type: toggle
|
||||
label: Pagination
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header.content.url_taxonomy_filters:
|
||||
type: toggle
|
||||
label: URL Taxonomy Filters
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
import@:
|
||||
type: partials/blog-bits
|
||||
context: blueprints://pages
|
92
user/themes/lecampus/blueprints/calendrier.yaml
Normal file
92
user/themes/lecampus/blueprints/calendrier.yaml
Normal file
@ -0,0 +1,92 @@
|
||||
extends@: default
|
||||
child_type: item
|
||||
|
||||
rules:
|
||||
slug:
|
||||
pattern: "[a-z][a-z0-9_\-]+"
|
||||
min: 2
|
||||
max: 80
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
type: tabs
|
||||
active: 1
|
||||
|
||||
fields:
|
||||
advanced:
|
||||
fields:
|
||||
overrides:
|
||||
fields:
|
||||
header.child_type:
|
||||
default: item
|
||||
blog:
|
||||
type: tab
|
||||
title: Blog Config
|
||||
|
||||
fields:
|
||||
|
||||
content_title:
|
||||
type: spacer
|
||||
title: Content Definition
|
||||
|
||||
header.content.items:
|
||||
type: textarea
|
||||
yaml: true
|
||||
label: Items
|
||||
default: '@self.children'
|
||||
validate:
|
||||
type: yaml
|
||||
|
||||
header.content.limit:
|
||||
type: text
|
||||
label: Max Item Count
|
||||
default: 5
|
||||
validate:
|
||||
required: true
|
||||
type: int
|
||||
min: 1
|
||||
|
||||
header.content.order.by:
|
||||
type: select
|
||||
label: Order By
|
||||
default: date
|
||||
options:
|
||||
folder: Folder
|
||||
title: Title
|
||||
date: Date
|
||||
default: Default
|
||||
|
||||
header.content.order.dir:
|
||||
type: select
|
||||
label: Order
|
||||
default: desc
|
||||
options:
|
||||
asc: Ascending
|
||||
desc: Descending
|
||||
|
||||
header.content.pagination:
|
||||
type: toggle
|
||||
label: Pagination
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header.content.url_taxonomy_filters:
|
||||
type: toggle
|
||||
label: URL Taxonomy Filters
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
import@:
|
||||
type: partials/blog-bits
|
||||
context: blueprints://pages
|
15
user/themes/lecampus/blueprints/default.yaml
Normal file
15
user/themes/lecampus/blueprints/default.yaml
Normal file
@ -0,0 +1,15 @@
|
||||
extends@: default
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
fields:
|
||||
advanced:
|
||||
fields:
|
||||
columns:
|
||||
fields:
|
||||
column1:
|
||||
fields:
|
||||
header.body_classes:
|
||||
markdown: true
|
||||
description: 'Available classes in Quark Theme (space separated):<br />`header-fixed`, `header-animated`, `header-dark`, `header-transparent`, `sticky-footer`'
|
151
user/themes/lecampus/blueprints/event.yaml
Normal file
151
user/themes/lecampus/blueprints/event.yaml
Normal file
@ -0,0 +1,151 @@
|
||||
extends@: default
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
|
||||
fields:
|
||||
content:
|
||||
fields:
|
||||
header.info:
|
||||
type: section
|
||||
title: Informations Complementaire
|
||||
|
||||
columns:
|
||||
type: columns
|
||||
fields:
|
||||
column1:
|
||||
type: column
|
||||
fields:
|
||||
header.date_begin:
|
||||
type: datetime
|
||||
label: Début de l'événement
|
||||
help: PLUGIN_ADMIN.DATE_HELP
|
||||
|
||||
header.public:
|
||||
type: selectize
|
||||
label: Type de publique
|
||||
help: indiquer le type de publique concerné par l'événement
|
||||
validate:
|
||||
type: commalist
|
||||
header.rs:
|
||||
type: array
|
||||
label: Resaux sociaux
|
||||
help:
|
||||
placeholder_key: PLUGIN_ADMIN.METADATA_KEY
|
||||
placeholder_value: PLUGIN_ADMIN.METADATA_VALUE
|
||||
|
||||
column2:
|
||||
type: column
|
||||
fields:
|
||||
header.date_end:
|
||||
type: datetime
|
||||
label: Fin de l'événement
|
||||
help: PLUGIN_ADMIN.DATE_HELP
|
||||
|
||||
blog:
|
||||
type: tab
|
||||
title: Blog Item
|
||||
|
||||
fields:
|
||||
|
||||
header_options:
|
||||
type: section
|
||||
title: Header Options
|
||||
underline: true
|
||||
|
||||
header.continue_link:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: DF Style Link
|
||||
help: Daring Fireball style title link
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header.header_image:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: Display Header Image
|
||||
help: Enabled displaying of a header image
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
|
||||
header.header_image_file:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Image File
|
||||
help: image filename that exists in the page folder. If not provided, will use the first image found.
|
||||
placeholder: For example: myimage.jpg
|
||||
|
||||
header.header_image_width:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Image Width
|
||||
size: small
|
||||
help: Header width in px
|
||||
placeholder: Default is 900
|
||||
validate:
|
||||
type: int
|
||||
min: 0
|
||||
max: 5000
|
||||
|
||||
header.header_image_height:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Image Height
|
||||
size: small
|
||||
help: Header height in px
|
||||
placeholder: Default is 300
|
||||
validate:
|
||||
type: int
|
||||
min: 0
|
||||
max: 5000
|
||||
|
||||
summary:
|
||||
type: section
|
||||
title: Summary
|
||||
underline: true
|
||||
|
||||
header.summary.enabled:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: Summary
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
|
||||
header.summary.format:
|
||||
type: select
|
||||
toggleable: true
|
||||
label: Format
|
||||
classes: fancy
|
||||
options:
|
||||
'short': 'Use the first occurence of delimter or size'
|
||||
'long': 'Summary delimiter will be ignored'
|
||||
|
||||
header.summary.size:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Size
|
||||
classes: large
|
||||
placeholder: 300
|
||||
validate:
|
||||
type: int
|
||||
min: 1
|
||||
|
||||
header.summary.delimiter:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Summary delimiter
|
||||
classes: large
|
||||
placeholder: ===
|
||||
|
||||
import@:
|
||||
type: partials/blog-bits
|
92
user/themes/lecampus/blueprints/footer.yaml
Normal file
92
user/themes/lecampus/blueprints/footer.yaml
Normal file
@ -0,0 +1,92 @@
|
||||
extends@: default
|
||||
child_type: item
|
||||
|
||||
rules:
|
||||
slug:
|
||||
pattern: "[a-z][a-z0-9_\-]+"
|
||||
min: 2
|
||||
max: 80
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
type: tabs
|
||||
active: 1
|
||||
|
||||
fields:
|
||||
advanced:
|
||||
fields:
|
||||
overrides:
|
||||
fields:
|
||||
header.child_type:
|
||||
default: item
|
||||
blog:
|
||||
type: tab
|
||||
title: Blog Config
|
||||
|
||||
fields:
|
||||
|
||||
content_title:
|
||||
type: spacer
|
||||
title: Content Definition
|
||||
|
||||
header.content.items:
|
||||
type: textarea
|
||||
yaml: true
|
||||
label: Items
|
||||
default: '@self.children'
|
||||
validate:
|
||||
type: yaml
|
||||
|
||||
header.content.limit:
|
||||
type: text
|
||||
label: Max Item Count
|
||||
default: 5
|
||||
validate:
|
||||
required: true
|
||||
type: int
|
||||
min: 1
|
||||
|
||||
header.content.order.by:
|
||||
type: select
|
||||
label: Order By
|
||||
default: date
|
||||
options:
|
||||
folder: Folder
|
||||
title: Title
|
||||
date: Date
|
||||
default: Default
|
||||
|
||||
header.content.order.dir:
|
||||
type: select
|
||||
label: Order
|
||||
default: desc
|
||||
options:
|
||||
asc: Ascending
|
||||
desc: Descending
|
||||
|
||||
header.content.pagination:
|
||||
type: toggle
|
||||
label: Pagination
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header.content.url_taxonomy_filters:
|
||||
type: toggle
|
||||
label: URL Taxonomy Filters
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
import@:
|
||||
type: partials/blog-bits
|
||||
context: blueprints://pages
|
114
user/themes/lecampus/blueprints/item.yaml
Normal file
114
user/themes/lecampus/blueprints/item.yaml
Normal file
@ -0,0 +1,114 @@
|
||||
extends@: default
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
|
||||
fields:
|
||||
|
||||
blog:
|
||||
type: tab
|
||||
title: Blog Item
|
||||
|
||||
fields:
|
||||
|
||||
header_options:
|
||||
type: section
|
||||
title: Header Options
|
||||
underline: true
|
||||
|
||||
header.continue_link:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: DF Style Link
|
||||
help: Daring Fireball style title link
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header.header_image:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: Display Header Image
|
||||
help: Enabled displaying of a header image
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
|
||||
header.header_image_file:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Image File
|
||||
help: image filename that exists in the page folder. If not provided, will use the first image found.
|
||||
placeholder: For example: myimage.jpg
|
||||
|
||||
header.header_image_width:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Image Width
|
||||
size: small
|
||||
help: Header width in px
|
||||
placeholder: Default is 900
|
||||
validate:
|
||||
type: int
|
||||
min: 0
|
||||
max: 5000
|
||||
|
||||
header.header_image_height:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Image Height
|
||||
size: small
|
||||
help: Header height in px
|
||||
placeholder: Default is 300
|
||||
validate:
|
||||
type: int
|
||||
min: 0
|
||||
max: 5000
|
||||
|
||||
summary:
|
||||
type: section
|
||||
title: Summary
|
||||
underline: true
|
||||
|
||||
header.summary.enabled:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: Summary
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
|
||||
header.summary.format:
|
||||
type: select
|
||||
toggleable: true
|
||||
label: Format
|
||||
classes: fancy
|
||||
options:
|
||||
'short': 'Use the first occurence of delimter or size'
|
||||
'long': 'Summary delimiter will be ignored'
|
||||
|
||||
header.summary.size:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Size
|
||||
classes: large
|
||||
placeholder: 300
|
||||
validate:
|
||||
type: int
|
||||
min: 1
|
||||
|
||||
header.summary.delimiter:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Summary delimiter
|
||||
classes: large
|
||||
placeholder: ===
|
||||
|
||||
import@:
|
||||
type: partials/blog-bits
|
38
user/themes/lecampus/blueprints/modular/features.yaml
Normal file
38
user/themes/lecampus/blueprints/modular/features.yaml
Normal file
@ -0,0 +1,38 @@
|
||||
title: Features
|
||||
'@extends': default
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
fields:
|
||||
features:
|
||||
type: tab
|
||||
title: Features
|
||||
fields:
|
||||
header.class:
|
||||
type: select
|
||||
label: Layout
|
||||
default: small
|
||||
size: medium
|
||||
options:
|
||||
small: Small = 4 / 3 / 2 columns
|
||||
standard: Standard = 3 / 2 / 1 columns
|
||||
|
||||
header.features:
|
||||
name: features
|
||||
type: list
|
||||
label: Features
|
||||
|
||||
fields:
|
||||
.icon:
|
||||
type: iconpicker
|
||||
label: Icon
|
||||
.header:
|
||||
type: text
|
||||
label: Header
|
||||
.text:
|
||||
type: text
|
||||
label: Text
|
||||
.url:
|
||||
type: text
|
||||
label: Link
|
23
user/themes/lecampus/blueprints/modular/hero.yaml
Normal file
23
user/themes/lecampus/blueprints/modular/hero.yaml
Normal file
@ -0,0 +1,23 @@
|
||||
title: Hero
|
||||
'@extends': default
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
fields:
|
||||
buttons:
|
||||
type: tab
|
||||
title: Hero
|
||||
fields:
|
||||
header.hero_classes:
|
||||
type: text
|
||||
label: Hero Classes
|
||||
markdown: true
|
||||
description: 'There are several Hero class options that can be listed here (space separated):<br />`text-light`, `text-dark`, `title-h1h2`, `parallax`, `overlay-dark-gradient`, `overlay-light-gradient`, `overlay-dark`, `overlay-light`, `hero-fullscreen`, `hero-large`, `hero-medium`, `hero-small`, `hero-tiny`<br />Please consult the [Quark documentation](https://github.com/getgrav/grav-theme-quark#hero-options) for more details.'
|
||||
header.hero_image:
|
||||
type: filepicker
|
||||
label: Hero Image
|
||||
preview_images: true
|
||||
description: 'If not specified, this defaults to the first image found in the page''s folder'
|
||||
|
||||
|
19
user/themes/lecampus/blueprints/modular/text.yaml
Normal file
19
user/themes/lecampus/blueprints/modular/text.yaml
Normal file
@ -0,0 +1,19 @@
|
||||
title: Text
|
||||
'@extends': default
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
fields:
|
||||
content:
|
||||
fields:
|
||||
header.media_order:
|
||||
label: Page Media (first one will be displayed next to your content)
|
||||
header.image_align:
|
||||
type: select
|
||||
label: Image position
|
||||
classes: fancy
|
||||
default: left
|
||||
options:
|
||||
'left': 'Left'
|
||||
'right': 'Right'
|
64
user/themes/lecampus/blueprints/partials/blog-bits.yaml
Normal file
64
user/themes/lecampus/blueprints/partials/blog-bits.yaml
Normal file
@ -0,0 +1,64 @@
|
||||
form:
|
||||
fields:
|
||||
|
||||
hero_title:
|
||||
type: spacer
|
||||
title: Hero Section
|
||||
|
||||
header.hero_classes:
|
||||
type: text
|
||||
label: Hero Classes
|
||||
markdown: true
|
||||
description: 'There are several Hero class options that can be listed here (space separated):<br />`text-light`, `text-dark`, `title-h1h2`, `parallax`, `overlay-dark-gradient`, `overlay-light-gradient`, `overlay-dark`, `overlay-light`, `hero-fullscreen`, `hero-large`, `hero-medium`, `hero-small`, `hero-tiny`<br />Please consult the [Quark documentation](https://github.com/getgrav/grav-theme-quark#hero-options) for more details.'
|
||||
|
||||
header.hero_image:
|
||||
type: filepicker
|
||||
label: Hero Image
|
||||
preview_images: true
|
||||
description: 'If not specified, this defaults to the first image found in the page''s folder'
|
||||
|
||||
toggles_title:
|
||||
type: spacer
|
||||
title: Configuration
|
||||
|
||||
header.blog_url:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Blog Route
|
||||
help: The route to the main blog page that contains the "Show ..." configuration
|
||||
default: '/blog'
|
||||
placeholder: '/blog'
|
||||
size: medium
|
||||
|
||||
header.show_sidebar:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: Show Sidebar
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header.show_breadcrumbs:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: Show Breadcrumbs
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header.show_pagination:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: Show Pagination
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
369
user/themes/lecampus/css-compiled/spectre-exp.css
Normal file
369
user/themes/lecampus/css-compiled/spectre-exp.css
Normal file
File diff suppressed because one or more lines are too long
1
user/themes/lecampus/css-compiled/spectre-exp.min.css
vendored
Normal file
1
user/themes/lecampus/css-compiled/spectre-exp.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
172
user/themes/lecampus/css-compiled/spectre-icons.css
Normal file
172
user/themes/lecampus/css-compiled/spectre-icons.css
Normal file
File diff suppressed because one or more lines are too long
1
user/themes/lecampus/css-compiled/spectre-icons.min.css
vendored
Normal file
1
user/themes/lecampus/css-compiled/spectre-icons.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1244
user/themes/lecampus/css-compiled/spectre.css
Normal file
1244
user/themes/lecampus/css-compiled/spectre.css
Normal file
File diff suppressed because one or more lines are too long
1
user/themes/lecampus/css-compiled/spectre.min.css
vendored
Normal file
1
user/themes/lecampus/css-compiled/spectre.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
388
user/themes/lecampus/css-compiled/theme.css
Normal file
388
user/themes/lecampus/css-compiled/theme.css
Normal file
File diff suppressed because one or more lines are too long
1
user/themes/lecampus/css-compiled/theme.min.css
vendored
Normal file
1
user/themes/lecampus/css-compiled/theme.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
49
user/themes/lecampus/css/bricklayer.css
Normal file
49
user/themes/lecampus/css/bricklayer.css
Normal file
@ -0,0 +1,49 @@
|
||||
.bricklayer {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-align: start;
|
||||
-webkit-align-items: flex-start;
|
||||
-ms-flex-align: start;
|
||||
align-items: flex-start;
|
||||
-webkit-box-pack: center;
|
||||
-webkit-justify-content: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
-webkit-flex-wrap: wrap;
|
||||
-ms-flex-wrap: wrap;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.bricklayer-column-sizer {
|
||||
width: 100%;
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 640px) {
|
||||
.bricklayer-column-sizer {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 980px) {
|
||||
.bricklayer-column-sizer {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
/*@media screen and (min-width: 1200px) {*/
|
||||
/*.bricklayer-column-sizer {*/
|
||||
/*width: 33.33333%;*/
|
||||
/*}*/
|
||||
/*}*/
|
||||
|
||||
.bricklayer-column {
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1;
|
||||
-ms-flex: 1;
|
||||
flex: 1;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
0
user/themes/lecampus/css/custom.css
Normal file
0
user/themes/lecampus/css/custom.css
Normal file
4
user/themes/lecampus/css/line-awesome.min.css
vendored
Normal file
4
user/themes/lecampus/css/line-awesome.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
user/themes/lecampus/fonts/line-awesome.eot
Normal file
BIN
user/themes/lecampus/fonts/line-awesome.eot
Normal file
Binary file not shown.
2954
user/themes/lecampus/fonts/line-awesome.svg
Normal file
2954
user/themes/lecampus/fonts/line-awesome.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 444 KiB |
BIN
user/themes/lecampus/fonts/line-awesome.ttf
Normal file
BIN
user/themes/lecampus/fonts/line-awesome.ttf
Normal file
Binary file not shown.
BIN
user/themes/lecampus/fonts/line-awesome.woff
Normal file
BIN
user/themes/lecampus/fonts/line-awesome.woff
Normal file
Binary file not shown.
BIN
user/themes/lecampus/fonts/line-awesome.woff2
Normal file
BIN
user/themes/lecampus/fonts/line-awesome.woff2
Normal file
Binary file not shown.
39
user/themes/lecampus/gulpfile.js
Normal file
39
user/themes/lecampus/gulpfile.js
Normal file
@ -0,0 +1,39 @@
|
||||
var gulp = require('gulp');
|
||||
var sass = require('gulp-sass');
|
||||
var cleancss = require('gulp-clean-css');
|
||||
var csscomb = require('gulp-csscomb');
|
||||
var rename = require('gulp-rename');
|
||||
var autoprefixer = require('gulp-autoprefixer');
|
||||
var sourcemaps = require('gulp-sourcemaps');
|
||||
|
||||
// configure the paths
|
||||
var watch_dir = './scss/**/*.scss';
|
||||
var src_dir = './scss/*.scss';
|
||||
var dest_dir = './css-compiled';
|
||||
|
||||
var paths = {
|
||||
source: src_dir
|
||||
};
|
||||
|
||||
gulp.task('watch', function() {
|
||||
gulp.watch(watch_dir, ['build']);
|
||||
});
|
||||
|
||||
gulp.task('build', function() {
|
||||
gulp.src(paths.source)
|
||||
.pipe(sourcemaps.init())
|
||||
.pipe(sass({outputStyle: 'compact', precision: 10})
|
||||
.on('error', sass.logError)
|
||||
)
|
||||
.pipe(sourcemaps.write())
|
||||
.pipe(autoprefixer())
|
||||
.pipe(gulp.dest(dest_dir))
|
||||
.pipe(csscomb())
|
||||
.pipe(cleancss())
|
||||
.pipe(rename({
|
||||
suffix: '.min'
|
||||
}))
|
||||
.pipe(gulp.dest(dest_dir));
|
||||
});
|
||||
|
||||
gulp.task('default', ['build']);
|
BIN
user/themes/lecampus/images/favicon.png
Normal file
BIN
user/themes/lecampus/images/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
1
user/themes/lecampus/images/grav-logo.svg
Normal file
1
user/themes/lecampus/images/grav-logo.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" viewBox="0 0 504 140" clip-rule="evenodd"><path d="M235.83 71.56h-7.98c-1.2 0-2.2 1-2.2 2.2V89.1l-.15.13c-4.7 3.96-10.64 6.14-16.72 6.14-14.36 0-26.04-11.68-26.04-26.04s11.68-26.04 26.04-26.04c5.58 0 10.92 1.76 15.44 5.1.87.66 2.1.57 2.86-.2l5.7-5.7c.44-.44.67-1.05.63-1.68-.02-.62-.32-1.2-.82-1.6-6.76-5.35-15.2-8.3-23.8-8.3-21.18 0-38.42 17.23-38.42 38.4 0 21.2 17.24 38.42 38.42 38.42 10.93 0 21.4-4.7 28.7-12.9.35-.4.55-.93.55-1.47v-19.6c0-1.22-.98-2.2-2.2-2.2M502.8 34.44c-.4-.6-1.1-.98-1.84-.98h-8.7c-.87 0-1.66.52-2 1.32l-24.5 56.84-24.9-56.85c-.36-.8-1.15-1.3-2.02-1.3h-8.72c-.74 0-1.44.36-1.84.98-.4.62-.48 1.4-.17 2.1l30.2 68.85c.34.8 1.13 1.32 2 1.32h11c.88 0 1.67-.53 2.02-1.33l29.66-68.87c.3-.68.22-1.47-.2-2.1"/><path d="M388.68 34.77c-.35-.8-1.14-1.32-2-1.32h-11c-.88 0-1.67.53-2.02 1.33L344 103.64c-.3.68-.22 1.47.18 2.08.4.62 1.1 1 1.84 1h8.7c.86 0 1.66-.53 2-1.33l24.5-56.86 24.9 56.86c.36.8 1.15 1.32 2.02 1.32h8.72c.74 0 1.44-.38 1.84-1 .4-.62.47-1.4.17-2.1l-30.2-68.85zM309.2 81.52l.47-.22c8.68-4.2 14.28-13.1 14.28-22.67 0-13.88-11.3-25.18-25.17-25.18H266.9c-1.2 0-2.2 1-2.2 2.2v68.86c0 1.23 1 2.22 2.2 2.22h8c1.2 0 2.2-1 2.2-2.2V45.8h21.68c7.05 0 12.8 5.75 12.8 12.8 0 5.9-4 11-9.73 12.42-1.04.26-2.07.4-3.07.4h-7.98c-.83 0-1.6.46-1.96 1.2-.38.73-.3 1.62.2 2.3l22.6 30.87c.42.58 1.08.92 1.78.92h9.9c.84 0 1.6-.47 1.97-1.2.37-.75.3-1.64-.2-2.3l-15.9-21.7zM107.2 80.97c-7.26-4.8-11.4-8.85-15.02-16.1-2.47 4.97-8.24 12.37-17.96 18.2-4.86 15.1-27.96 44-35.43 39.9-2.22-1.2-2.64-2.8-2.15-4.45.54-4.13 9.08-13.62 9.08-13.62s.18 2 2.92 6.18c-3.6-11.2 5.96-25.03 8.5-29.73 3.98-1.27 4.27-6.4 4.27-6.4.26-7.9-3.28-13.63-6.7-17.05 2.46 3 3.25 7.54 3.37 11.7v.02c0 .47 0 .93 0 1.4-.12 3.43-1.16 8.18-3.38 8.18v.03c-2.28-.1-5.1.4-7.63 1.18l-5.6 1.34s2.98-.13 4.6 1.25c-1.8 2.9-5.78 6.53-10.22 8.58-6.45 3-8.3-2.96-5.03-6.84.8-.94 1.62-1.74 2.38-2.4-.5-.5-.8-1.2-.88-2.06 0 0 0 0 0-.02-.46-1.97-.2-4.54 2.6-8.62.54-.86 1.2-1.75 2-2.65.02-.04.04-.07.07-.1.03-.04.07-.08.1-.12.02-.02.04-.04.06-.06.2-.23.42-.45.64-.67 3.34-3.4 8.6-6.96 16.9-10.15C64.4 43.68 67.94 41 67.94 41c1.07-1.1 2.94-2.45 3.63-2.8-5.05-8.77-6.07-21.15-4.75-24.5-.1.2-.2.38-.3.57.5-1.14.83-1.5 1.34-2.1 1.38-1.64 6.06-2.5 7.74.96.9 1.84 1.06 4.23 1.03 6.02-3.7-.2-7.06 4.04-7.06 4.04s3.07-1.46 6.88-1.5c0 0 1 .9 2.28 2.56-1.7 3.2-4.52 10.02-2.5 17.16.35 1.4.86 2.62 1.5 3.65.02.05.04.1.07.14.05.07.1.13.14.2 3.37 5.06 9.54 5.66 9.54 5.66-2.9-1.45-5.27-3.76-6.8-6.56-.82-1.5-1.3-2.77-1.6-3.77-1.64-6.3.77-10 2.14-12.47 3.17-4.9 8.95-7.9 15.15-7.18 8.72 1 14.97 8.86 13.98 17.57-.6 5.32-3.78 9.72-8.15 12.12 1.05 2.84-.07 6.28-.07 6.28 2.64 3.32 2.76 5.23 2.67 7-3.36-.55-6.62 1.7-6.62 1.7s6.48-1.53 10.24 1.82c2.44 2.64 4.08 5 5.05 6.77 1.4 2.5 7.86 2.68 7.12 7.2-.74 4.5-5.68 4.53-13.4-.57M69.56 0C31.15 0 0 31.15 0 69.57c0 38.42 31.15 69.57 69.57 69.57 38.42 0 69.57-31.15 69.57-69.57C139.14 31.15 108 0 69.57 0M73.8 51.7c.8-.82.8-2.14 0-2.95-.82-.82-2.14-.82-2.95 0-.82.8-.82 2.13 0 2.94.8.8 2.13.8 2.95 0M66.45 53.15c-.82.8-.82 2.13 0 2.95.8.8 2.13.8 2.94 0 .8-.82.8-2.14 0-2.95-.82-.8-2.14-.8-2.95 0"/><path d="M79.23 54.23c-1.27-1.27-3.34-1.27-4.6 0l-2.72 2.7c-1.27 1.3-1.27 3.35 0 4.63l3 2.97c1.26 1.28 3.32 1.28 4.6 0l2.7-2.7c1.28-1.28 1.28-3.35 0-4.62l-2.97-2.97zM95.76 41.44c-2.15-2.57 1.87-7.25 4.4-4.46 4.64 5.15-2.25 7.04-4.4 4.46m9.24 2.7c3.45-6.56-1.42-10.4-4.77-13.53-5.36-5.03-10.7-7.2-16.8-.23-6.1 6.98-2.24 15.07 3.35 19.06 5.58 4 14.78 1.25 18.22-5.3"/></svg>
|
After Width: | Height: | Size: 3.4 KiB |
1
user/themes/lecampus/js/bricklayer.min.js
vendored
Normal file
1
user/themes/lecampus/js/bricklayer.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function t(e,n,r){function o(s,u){if(!n[s]){if(!e[s]){var l="function"==typeof require&&require;if(!u&&l)return l(s,!0);if(i)return i(s,!0);var a=new Error("Cannot find module '"+s+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[s]={exports:{}};e[s][0].call(p.exports,function(t){var n=e[s][1][t];return o(n?n:t)},p,p.exports,t,e,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s<r.length;s++)o(r[s]);return o}({1:[function(t,e,n){var r,o=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)};!function(t){function e(t){return[].slice.call(t)}function n(t,e,n){if(window.CustomEvent)var r=new CustomEvent(e,{detail:n});else{var r=document.createEvent("CustomEvent");r.initCustomEvent(e,!0,!0,n)}return t.dispatchEvent(r)}var r={rulerClassName:"bricklayer-column-sizer",columnClassName:"bricklayer-column"},i=function(){function t(t){this.element=document.createElement("div"),this.element.className=t}return t.prototype.destroy=function(){this.element.parentNode.removeChild(this.element)},t}(),s=function(t){function e(){t.apply(this,arguments)}return o(e,t),e.prototype.getWidth=function(){this.element.setAttribute("style","\n display: block;\n visibility: hidden !important;\n top: -1000px !important;\n ");var t=this.element.offsetWidth;return this.element.removeAttribute("style"),t},e}(i),u=function(t){function e(){t.apply(this,arguments)}return o(e,t),e}(i),l=function(){function t(t,e){void 0===e&&(e=r),this.element=t,this.options=e,this.build(),this.buildResponsive()}return t.prototype.append=function(t){var n=this;if(Array.isArray(t))return void t.forEach(function(t){return n.append(t)});var r=this.findMinHeightColumn();this.elements=e(this.elements).concat([t]),this.applyPosition("append",r,t)},t.prototype.prepend=function(t){var n=this;if(Array.isArray(t))return void t.forEach(function(t){return n.prepend(t)});var r=this.findMinHeightColumn();this.elements=[t].concat(e(this.elements)),this.applyPosition("prepend",r,t)},t.prototype.on=function(t,e){return this.element.addEventListener("bricklayer."+t,e),this},t.prototype.redraw=function(){var t=this.columnCount;this.checkColumnCount(!1),this.reorderElements(t),n(this.element,"bricklayer.redraw",{columnCount:t})},t.prototype.destroy=function(){var t=this;this.ruler.destroy(),e(this.elements).forEach(function(e){return t.element.appendChild(e)}),e(this.getColumns()).forEach(function(t){return t.parentNode.removeChild(t)}),n(this.element,"bricklayer.destroy",{})},t.prototype.build=function(){this.ruler=new s(this.options.rulerClassName),this.elements=this.getElementsInOrder(),this.element.insertBefore(this.ruler.element,this.element.firstChild)},t.prototype.buildResponsive=function(){var t=this;window.addEventListener("resize",function(e){return t.checkColumnCount()}),this.checkColumnCount(),this.on("breakpoint",function(e){return t.reorderElements(e.detail.columnCount)}),this.columnCount>=1&&this.reorderElements(this.columnCount)},t.prototype.getColumns=function(){return this.element.querySelectorAll(":scope > ."+this.options.columnClassName)},t.prototype.findMinHeightColumn=function(){var t=e(this.getColumns()),n=t.map(function(t){return t.offsetHeight}),r=Math.min.apply(null,n);return t[n.indexOf(r)]},t.prototype.getElementsInOrder=function(){return this.element.querySelectorAll(":scope > *:not(."+this.options.columnClassName+"):not(."+this.options.rulerClassName+")")},t.prototype.checkColumnCount=function(t){void 0===t&&(t=!0);var e=this.getColumnCount();this.columnCount!==e&&(t&&n(this.element,"bricklayer.breakpoint",{columnCount:e}),this.columnCount=e)},t.prototype.reorderElements=function(t){var n=this;void 0===t&&(t=1),(t==1/0||1>t)&&(t=1);for(var r=e(this.elements).map(function(t){var e=t.parentNode?t.parentNode.removeChild(t):t;return e}),o=this.getColumns(),i=0;i<o.length;i++)o[i].parentNode.removeChild(o[i]);for(var i=0;t>i;i++){var s=new u(this.options.columnClassName).element;this.element.appendChild(s)}r.forEach(function(t){var e=n.findMinHeightColumn();e.appendChild(t)})},t.prototype.getColumnCount=function(){var t=this.element.offsetWidth,e=this.ruler.getWidth();return Math.round(t/e)},t.prototype.applyPosition=function(t,e,r){var o=this,i=function(i){var s=i+t.charAt(0).toUpperCase()+t.substr(1);n(o.element,"bricklayer."+s,{item:r,column:e})};switch(i("before"),t){case"append":e.appendChild(r);break;case"prepend":e.insertBefore(r,e.firstChild)}i("after")},t}();t.Container=l}(r||(r={})),function(t,n){"function"==typeof define&&define.amd?define(function(){return n()}):"undefined"!=typeof window&&t===window?t.Bricklayer=n():"object"==typeof e&&e.exports&&(e.exports=n())}("undefined"!=typeof window?window:this,function(){return r.Container})},{}]},{},[1]);
|
87
user/themes/lecampus/js/jquery.treemenu.js
Normal file
87
user/themes/lecampus/js/jquery.treemenu.js
Normal file
@ -0,0 +1,87 @@
|
||||
/*
|
||||
treeMenu - jQuery plugin
|
||||
version: 0.6
|
||||
|
||||
Copyright 2014 Stepan Krapivin
|
||||
|
||||
*/
|
||||
(function($){
|
||||
$.fn.treemenu = function(options) {
|
||||
options = options || {};
|
||||
options.delay = options.delay || 0;
|
||||
options.openActive = options.openActive || false;
|
||||
options.closeOther = options.closeOther || false;
|
||||
options.activeSelector = options.activeSelector || ".active";
|
||||
|
||||
this.addClass("treemenu");
|
||||
|
||||
if (!options.nonroot) {
|
||||
this.addClass("treemenu-root");
|
||||
}
|
||||
|
||||
options.nonroot = true;
|
||||
|
||||
this.find("> li").each(function() {
|
||||
e = $(this);
|
||||
var subtree = e.find('> ul');
|
||||
var button = e.find('.toggler').eq(0);
|
||||
|
||||
if(button.length == 0) {
|
||||
// create toggler
|
||||
var button = $('<span>');
|
||||
button.addClass('toggler');
|
||||
e.prepend(button);
|
||||
}
|
||||
|
||||
if(subtree.length > 0) {
|
||||
subtree.hide();
|
||||
|
||||
e.addClass('tree-closed');
|
||||
|
||||
e.find(button).click(function() {
|
||||
var li = $(this).parent('li');
|
||||
|
||||
if (options.closeOther && li.hasClass('tree-closed')) {
|
||||
var siblings = li.parent('ul').find("li:not(.tree-empty)");
|
||||
siblings.removeClass("tree-opened");
|
||||
siblings.addClass("tree-closed");
|
||||
siblings.removeClass(options.activeSelector);
|
||||
siblings.find('> ul').slideUp(options.delay);
|
||||
}
|
||||
|
||||
li.find('> ul').slideToggle(options.delay);
|
||||
li.toggleClass('tree-opened');
|
||||
li.toggleClass('tree-closed');
|
||||
li.toggleClass(options.activeSelector);
|
||||
});
|
||||
|
||||
$(this).find('> ul').treemenu(options);
|
||||
} else {
|
||||
$(this).addClass('tree-empty');
|
||||
}
|
||||
});
|
||||
|
||||
if (options.openActive) {
|
||||
var cls = this.attr("class");
|
||||
|
||||
this.find(options.activeSelector).each(function(){
|
||||
var el = $(this).parent();
|
||||
|
||||
while (el.attr("class") !== cls) {
|
||||
el.find('> ul').show();
|
||||
if(el.prop("tagName") === 'UL') {
|
||||
el.show();
|
||||
} else if (el.prop("tagName") === 'LI') {
|
||||
el.removeClass('tree-closed');
|
||||
el.addClass("tree-opened");
|
||||
el.show();
|
||||
}
|
||||
|
||||
el = el.parent();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
})(jQuery);
|
9
user/themes/lecampus/js/scopedQuerySelectorShim.min.js
vendored
Normal file
9
user/themes/lecampus/js/scopedQuerySelectorShim.min.js
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
/* scopeQuerySelectorShim.js
|
||||
*
|
||||
* Copyright (C) 2015 Larry Davis
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software may be modified and distributed under the terms
|
||||
* of the BSD license. See the LICENSE file for details.
|
||||
*/
|
||||
!function(){function a(a,c){var e=a[c];a[c]=function(a){var c,f=!1,g=!1;return a.match(d)?(a=a.replace(d,""),this.parentNode||(b.appendChild(this),g=!0),parentNode=this.parentNode,this.id||(this.id="rootedQuerySelector_id_"+(new Date).getTime(),f=!0),c=e.call(parentNode,"#"+this.id+" "+a),f&&(this.id=""),g&&b.removeChild(this),c):e.call(this,a)}}if(!HTMLElement.prototype.querySelectorAll)throw new Error("rootedQuerySelectorAll: This polyfill can only be used with browsers that support querySelectorAll");var b=document.createElement("div");try{b.querySelectorAll(":scope *")}catch(c){var d=/^\s*:scope/gi;a(HTMLElement.prototype,"querySelector"),a(HTMLElement.prototype,"querySelectorAll")}}();
|
8
user/themes/lecampus/js/singlepagenav.min.js
vendored
Normal file
8
user/themes/lecampus/js/singlepagenav.min.js
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
/**
|
||||
* Single Page Nav Plugin
|
||||
* Copyright (c) 2014 Chris Wojcik <hello@chriswojcik.net>
|
||||
* Dual licensed under MIT and GPL.
|
||||
* @author Chris Wojcik
|
||||
* @version 1.2.0
|
||||
*/
|
||||
if(typeof Object.create!=="function"){Object.create=function(e){function t(){}t.prototype=e;return new t}}(function(e,t,n,r){"use strict";var i={init:function(n,r){this.options=e.extend({},e.fn.singlePageNav.defaults,n);this.container=r;this.$container=e(r);this.$links=this.$container.find("a");if(this.options.filter!==""){this.$links=this.$links.filter(this.options.filter)}this.$window=e(t);this.$htmlbody=e("html, body");this.$links.on("click.singlePageNav",e.proxy(this.handleClick,this));this.didScroll=false;this.checkPosition();this.setTimer()},handleClick:function(t){var n=this,r=t.currentTarget,i=e(r.hash);t.preventDefault();if(i.length){n.clearTimer();if(typeof n.options.beforeStart==="function"){n.options.beforeStart()}n.setActiveLink(r.hash);n.scrollTo(i,function(){if(n.options.updateHash&&history.pushState){history.pushState(null,null,r.hash)}n.setTimer();if(typeof n.options.onComplete==="function"){n.options.onComplete()}})}},scrollTo:function(e,t){var n=this;var r=n.getCoords(e).top;var i=false;n.$htmlbody.stop().animate({scrollTop:r},{duration:n.options.speed,easing:n.options.easing,complete:function(){if(typeof t==="function"&&!i){t()}i=true}})},setTimer:function(){var e=this;e.$window.on("scroll.singlePageNav",function(){e.didScroll=true});e.timer=setInterval(function(){if(e.didScroll){e.didScroll=false;e.checkPosition()}},250)},clearTimer:function(){clearInterval(this.timer);this.$window.off("scroll.singlePageNav");this.didScroll=false},checkPosition:function(){var e=this.$window.scrollTop();var t=this.getCurrentSection(e);this.setActiveLink(t)},getCoords:function(e){return{top:Math.round(e.offset().top)-this.options.offset}},setActiveLink:function(e){var t=this.$container.find("a[href$='"+e+"']");if(!t.hasClass(this.options.currentClass)){this.$links.removeClass(this.options.currentClass);t.addClass(this.options.currentClass)}},getCurrentSection:function(t){var n,r,i,s;for(n=0;n<this.$links.length;n++){r=this.$links[n].hash;if(e(r).length){i=this.getCoords(e(r));if(t>=i.top-this.options.threshold){s=r}}}return s||this.$links[0].hash}};e.fn.singlePageNav=function(e){return this.each(function(){var t=Object.create(i);t.init(e,this)})};e.fn.singlePageNav.defaults={offset:0,threshold:120,speed:400,currentClass:"current",easing:"swing",updateHash:false,filter:"",onComplete:false,beforeStart:false}})(jQuery,window,document);
|
59
user/themes/lecampus/js/site.js
Normal file
59
user/themes/lecampus/js/site.js
Normal file
@ -0,0 +1,59 @@
|
||||
var isTouch = window.DocumentTouch && document instanceof DocumentTouch;
|
||||
|
||||
function scrollHeader() {
|
||||
// Has scrolled class on header
|
||||
var zvalue = $(document).scrollTop();
|
||||
if ( zvalue > 75 )
|
||||
$("#header").addClass("scrolled");
|
||||
else
|
||||
$("#header").removeClass("scrolled");
|
||||
}
|
||||
|
||||
function parallaxBackground() {
|
||||
$('.parallax').css('background-positionY', ($(window).scrollTop() * 0.3) + 'px');
|
||||
}
|
||||
|
||||
jQuery(document).ready(function($){
|
||||
|
||||
scrollHeader();
|
||||
|
||||
// Scroll Events
|
||||
if (!isTouch){
|
||||
$(document).scroll(function() {
|
||||
scrollHeader();
|
||||
parallaxBackground();
|
||||
});
|
||||
};
|
||||
|
||||
// Touch scroll
|
||||
$(document).on({
|
||||
'touchmove': function(e) {
|
||||
scrollHeader(); // Replace this with your code.
|
||||
}
|
||||
});
|
||||
|
||||
//Smooth scroll to start
|
||||
$('#to-start').click(function(){
|
||||
var start_y = $('#start').position().top;
|
||||
var header_offset = 45;
|
||||
window.scroll({ top: start_y - header_offset, left: 0, behavior: 'smooth' });
|
||||
return false;
|
||||
});
|
||||
|
||||
//Smooth scroll to top
|
||||
$('#to-top').click(function(){
|
||||
window.scroll({ top: 0, left: 0, behavior: 'smooth' });
|
||||
return false;
|
||||
});
|
||||
|
||||
// Responsive Menu
|
||||
$('#toggle').click(function () {
|
||||
$(this).toggleClass('active');
|
||||
$('#overlay').toggleClass('open');
|
||||
$('body').toggleClass('mobile-nav-open');
|
||||
});
|
||||
|
||||
// Tree Menu
|
||||
$(".tree").treemenu({delay:300});
|
||||
|
||||
});
|
6
user/themes/lecampus/js/smooth-scroll.min.js
vendored
Normal file
6
user/themes/lecampus/js/smooth-scroll.min.js
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
/*
|
||||
* smoothscroll polyfill - v0.3.4
|
||||
* https://iamdustan.github.io/smoothscroll
|
||||
* 2016 (c) Dustan Kasten, Jeremias Menichelli - MIT License
|
||||
*/
|
||||
!function(o,t,l){"use strict";function e(){function e(o,t){this.scrollLeft=o,this.scrollTop=t}function r(o){return.5*(1-Math.cos(Math.PI*o))}function n(o){if("object"!=typeof o||null===o||o.behavior===l||"auto"===o.behavior||"instant"===o.behavior)return!0;if("object"==typeof o&&"smooth"===o.behavior)return!1;throw new TypeError("behavior not valid")}function c(l){var e,r,n;do l=l.parentNode,e=l===t.body,r=l.clientHeight<l.scrollHeight||l.clientWidth<l.scrollWidth,n="visible"===o.getComputedStyle(l,null).overflow;while(!e&&(!r||n));return e=r=n=null,l}function i(t){t.frame=o.requestAnimationFrame(i.bind(o,t));var l,e,n,c=u(),s=(c-t.startTime)/f;return s=s>1?1:s,l=r(s),e=t.startX+(t.x-t.startX)*l,n=t.startY+(t.y-t.startY)*l,t.method.call(t.scrollable,e,n),e===t.x&&n===t.y?void o.cancelAnimationFrame(t.frame):void 0}function s(l,r,n){var c,s,a,f,d,h=u();l===t.body?(c=o,s=o.scrollX||o.pageXOffset,a=o.scrollY||o.pageYOffset,f=p.scroll):(c=l,s=l.scrollLeft,a=l.scrollTop,f=e),d&&o.cancelAnimationFrame(d),i({scrollable:c,method:f,startTime:h,startX:s,startY:a,x:r,y:n,frame:d})}if(!("scrollBehavior"in t.documentElement.style)){var a=o.HTMLElement||o.Element,f=468,p={scroll:o.scroll||o.scrollTo,scrollBy:o.scrollBy,scrollIntoView:a.prototype.scrollIntoView},u=o.performance&&o.performance.now?o.performance.now.bind(o.performance):Date.now;o.scroll=o.scrollTo=function(){return n(arguments[0])?void p.scroll.call(o,arguments[0].left||arguments[0],arguments[0].top||arguments[1]):void s.call(o,t.body,~~arguments[0].left,~~arguments[0].top)},o.scrollBy=function(){return n(arguments[0])?void p.scrollBy.call(o,arguments[0].left||arguments[0],arguments[0].top||arguments[1]):void s.call(o,t.body,~~arguments[0].left+(o.scrollX||o.pageXOffset),~~arguments[0].top+(o.scrollY||o.pageYOffset))},a.prototype.scrollIntoView=function(){if(n(arguments[0]))return void p.scrollIntoView.call(this,arguments[0]||!0);var l=c(this),e=l.getBoundingClientRect(),r=this.getBoundingClientRect();l!==t.body?(s.call(this,l,l.scrollLeft+r.left-e.left,l.scrollTop+r.top-e.top),o.scrollBy({left:e.left,top:e.top,behavior:"smooth"})):o.scrollBy({left:r.left,top:r.top,behavior:"smooth"})}}}"object"==typeof exports?module.exports={polyfill:e}:e()}(window,document);
|
240
user/themes/lecampus/languages.yaml
Normal file
240
user/themes/lecampus/languages.yaml
Normal file
@ -0,0 +1,240 @@
|
||||
en:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Continue reading...
|
||||
NEXT_POST: Next Post
|
||||
PREV_POST: Previous Post
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: Search
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Related Posts
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Random Article
|
||||
FEELING_LUCKY: I'm Feeling Lucky!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Some Text Widget
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Popular Tags
|
||||
ARCHIVES:
|
||||
HEADLINE: Archives
|
||||
SYNDICATE:
|
||||
HEADLINE: Syndicate
|
||||
|
||||
de:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Weiterlesen...
|
||||
NEXT_POST: Nächster Beitrag
|
||||
PREV_POST: Vorheriger Beitrag
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: SimpleSearch
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Ähnliche Beiträge
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Zufälliger Artikel
|
||||
FEELING_LUCKY: Auf gut Glück!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Text Widget Beispiel
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Häufigste Tags
|
||||
ARCHIVES:
|
||||
HEADLINE: Archiv
|
||||
SYNDICATE:
|
||||
HEADLINE: Abonnements
|
||||
|
||||
es:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Continuar leyendo...
|
||||
NEXT_POST: Siguiente Entrada
|
||||
PREV_POST: Entrada Anterior
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: Buscar
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Entradas Relacionadas
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Artículo Aleatorio
|
||||
FEELING_LUCKY: Voy a tener suerte!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Algunos Widget de Texto
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Etiquetas Populares
|
||||
ARCHIVES:
|
||||
HEADLINE: Archivos
|
||||
SYNDICATE:
|
||||
HEADLINE: Distribuir
|
||||
|
||||
fr:
|
||||
THEME_QUARK:
|
||||
TRANSLATION_TEST: Quark !
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Continuer la lecture...
|
||||
NEXT_POST: Article suivant
|
||||
PREV_POST: Article précédent
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: Recherche simple
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Articles en relation
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Article aléatoire
|
||||
FEELING_LUCKY: J'ai de la chance !
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Du texte gadget
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Tags populaires
|
||||
ARCHIVES:
|
||||
HEADLINE: Archives
|
||||
SYNDICATE:
|
||||
HEADLINE: Syndication
|
||||
|
||||
it:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Continua a leggere...
|
||||
NEXT_POST: Prossimo articolo
|
||||
PREV_POST: Articolo precedente
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: SimpleSearch
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Articoli correlati
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Articolo a caso
|
||||
FEELING_LUCKY: Mi sento fortunato!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Widget di testo
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Tag popolari
|
||||
ARCHIVES:
|
||||
HEADLINE: Archivio
|
||||
SYNDICATE:
|
||||
HEADLINE: Feed
|
||||
|
||||
ro:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Mai multe...
|
||||
NEXT_POST: Următorul articol
|
||||
PREV_POST: Articolul anterior
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: Căutare
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Articole corelate
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Articol aleator
|
||||
FEELING_LUCKY: Mă simt norocos
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Text modular
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Etichete populare
|
||||
ARCHIVES:
|
||||
HEADLINE: Arhive
|
||||
SYNDICATE:
|
||||
HEADLINE: Abonați-vă
|
||||
|
||||
ru:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Читать далее...
|
||||
NEXT_POST: Следующая запись
|
||||
PREV_POST: Предыдущая запись
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: Поиск
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Также читайте
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Случайная запись
|
||||
FEELING_LUCKY: Мне повезёт!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Текстовой виджет
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Популярные теги
|
||||
ARCHIVES:
|
||||
HEADLINE: Архив
|
||||
SYNDICATE:
|
||||
HEADLINE: Синдикация
|
||||
|
||||
uk:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Читати далі...
|
||||
NEXT_POST: Наступний запис
|
||||
PREV_POST: Попередній запис
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: Пошук
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Також читайте
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Випадковий запис
|
||||
FEELING_LUCKY: Мені пощастить!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Текстовий віджет
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Популярні теги
|
||||
ARCHIVES:
|
||||
HEADLINE: Архів
|
||||
SYNDICATE:
|
||||
HEADLINE: Синдикація
|
||||
|
||||
hr:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Nastavi s čitanjem...
|
||||
NEXT_POST: Slijedeća objava
|
||||
PREV_POST: Prethodna objava
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: Pretraživanje
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Povezane objave
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Slučajni članak
|
||||
FEELING_LUCKY: Osjećam se sretno!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Neki tekst widget
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Popularni tagovi
|
||||
ARCHIVES:
|
||||
HEADLINE: Arhiva
|
||||
SYNDICATE:
|
||||
HEADLINE: Kanali
|
||||
|
||||
nl:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Lees Meer...
|
||||
NEXT_POST: Volgende Bericht
|
||||
PREV_POST: Vorige Bericht
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: Zoek
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Gerelateerde Berichten
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Willekeurig Artikel
|
||||
FEELING_LUCKY: Ik Voel Me Gelukkig!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Een Tekst Widget
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Populaire Labels
|
||||
ARCHIVES:
|
||||
HEADLINE: Archieven
|
||||
SYNDICATE:
|
||||
HEADLINE: Syndicatie
|
56
user/themes/lecampus/lecampus.php
Normal file
56
user/themes/lecampus/lecampus.php
Normal file
@ -0,0 +1,56 @@
|
||||
<?php
|
||||
namespace Grav\Theme;
|
||||
|
||||
use Grav\Common\Grav;
|
||||
use Grav\Common\Theme;
|
||||
|
||||
class lecampus extends Theme
|
||||
{
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return [
|
||||
'onThemeInitialized' => ['onThemeInitialized', 0],
|
||||
'onTwigLoader' => ['onTwigLoader', 0],
|
||||
'onTwigInitialized' => ['onTwigInitialized', 0],
|
||||
];
|
||||
}
|
||||
|
||||
public function onThemeInitialized()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Add images to twig template paths to allow inclusion of SVG files
|
||||
public function onTwigLoader()
|
||||
{
|
||||
$theme_paths = Grav::instance()['locator']->findResources('theme://images');
|
||||
foreach($theme_paths as $images_path) {
|
||||
$this->grav['twig']->addPath($images_path, 'images');
|
||||
}
|
||||
}
|
||||
|
||||
public function onTwigInitialized()
|
||||
{
|
||||
$twig = $this->grav['twig'];
|
||||
|
||||
$form_class_variables = [
|
||||
// 'form_outer_classes' => 'form-horizontal',
|
||||
'form_button_outer_classes' => 'button-wrapper',
|
||||
'form_button_classes' => 'btn',
|
||||
'form_errors_classes' => '',
|
||||
'form_field_outer_classes' => 'form-group',
|
||||
'form_field_outer_label_classes' => 'form-label-wrapper',
|
||||
'form_field_label_classes' => 'form-label',
|
||||
// 'form_field_outer_data_classes' => 'col-9',
|
||||
'form_field_input_classes' => 'form-input',
|
||||
'form_field_textarea_classes' => 'form-input',
|
||||
'form_field_select_classes' => 'form-select',
|
||||
'form_field_radio_classes' => 'form-radio',
|
||||
'form_field_checkbox_classes' => 'form-checkbox',
|
||||
];
|
||||
|
||||
$twig->twig_vars = array_merge($twig->twig_vars, $form_class_variables);
|
||||
|
||||
}
|
||||
|
||||
}
|
12
user/themes/lecampus/lecampus.yaml
Normal file
12
user/themes/lecampus/lecampus.yaml
Normal file
@ -0,0 +1,12 @@
|
||||
enabled: true
|
||||
production-mode: true
|
||||
grid-size: grid-lg
|
||||
header-fixed: true
|
||||
header-animated: true
|
||||
header-dark: false
|
||||
header-transparent: false
|
||||
sticky-footer: true
|
||||
blog-page: '/blog'
|
||||
spectre:
|
||||
exp: false
|
||||
icons: false
|
45
user/themes/lecampus/package.json
Normal file
45
user/themes/lecampus/package.json
Normal file
@ -0,0 +1,45 @@
|
||||
{
|
||||
"name": "spectre.css",
|
||||
"version": "0.5.1",
|
||||
"homepage": "http://picturepan2.github.io/spectre",
|
||||
"author": "Yan Zhu <picturepan2@hotmail.com>",
|
||||
"description": "Spectre.css: a lightweight, responsive and modern CSS framework",
|
||||
"main": "docs/dist/spectre.css",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/picturepan2/spectre.git"
|
||||
},
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"css",
|
||||
"framework",
|
||||
"flexbox",
|
||||
"responsive",
|
||||
"mobile-friendly",
|
||||
"front-end",
|
||||
"sass",
|
||||
"modern"
|
||||
],
|
||||
"bugs": {
|
||||
"url": "https://github.com/picturepan2/spectre/issues"
|
||||
},
|
||||
"devDependencies": {
|
||||
"gulp": "latest",
|
||||
"gulp-autoprefixer": "latest",
|
||||
"gulp-clean-css": "^3.9.4",
|
||||
"gulp-csscomb": "^3.0.8",
|
||||
"gulp-rename": "^1.2.2",
|
||||
"gulp-sass": "^4.0.1"
|
||||
},
|
||||
"browserslist": [
|
||||
"last 4 Chrome versions",
|
||||
"Edge >= 12",
|
||||
"Firefox ESR",
|
||||
"last 4 Safari versions",
|
||||
"last 4 Opera versions",
|
||||
"Explorer >= 10"
|
||||
],
|
||||
"dependencies": {
|
||||
"gulp-sourcemaps": "^2.6.4"
|
||||
}
|
||||
}
|
BIN
user/themes/lecampus/screenshot.jpg
Normal file
BIN
user/themes/lecampus/screenshot.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 156 KiB |
77
user/themes/lecampus/scss/configurations/_mixins.scss
Normal file
77
user/themes/lecampus/scss/configurations/_mixins.scss
Normal file
@ -0,0 +1,77 @@
|
||||
@mixin breakpoint($point) {
|
||||
@if $point == 2x {
|
||||
@media (min-width:$size-2x) {
|
||||
@content;
|
||||
}
|
||||
} @else if $point == xl {
|
||||
@media (max-width: $size-xl) {
|
||||
@content;
|
||||
}
|
||||
|
||||
} @else if $point == lg {
|
||||
@media (max-width: $size-lg) {
|
||||
@content;
|
||||
}
|
||||
} @else if $point == md {
|
||||
@media (max-width: $size-md) {
|
||||
@content;
|
||||
}
|
||||
} @else if $point == sm {
|
||||
@media (max-width: $size-sm) {
|
||||
@content;
|
||||
}
|
||||
} @else if $point == xs {
|
||||
@media (max-width: $size-xs) {
|
||||
@content;
|
||||
}
|
||||
} @else {
|
||||
@warn "Breakpoint mixin supports: xs, sm, md, lg, xl, 2x";
|
||||
}
|
||||
}
|
||||
|
||||
@mixin vertical-align($position: relative) {
|
||||
position: $position;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
@mixin button-primary() {
|
||||
background: $primary-color;
|
||||
border-color: $primary-color-dark;
|
||||
color: $light-color;
|
||||
&:focus,
|
||||
&:hover {
|
||||
background: darken($primary-color-dark, 2%);
|
||||
border-color: darken($primary-color-dark, 5%);
|
||||
color: $light-color;
|
||||
}
|
||||
&:active,
|
||||
&.active {
|
||||
background: darken($primary-color-dark, 4%);
|
||||
border-color: darken($primary-color-dark, 7%);
|
||||
color: $light-color;
|
||||
}
|
||||
}
|
||||
|
||||
@function strip-unit($value) {
|
||||
@return $value / ($value * 0 + 1);
|
||||
}
|
||||
|
||||
@mixin fluid-type($min-vw, $max-vw, $min-font-size, $max-font-size) {
|
||||
$u1: unit($min-vw);
|
||||
$u2: unit($max-vw);
|
||||
$u3: unit($min-font-size);
|
||||
$u4: unit($max-font-size);
|
||||
|
||||
@if $u1 == $u2 and $u1 == $u3 and $u1 == $u4 {
|
||||
& {
|
||||
font-size: $min-font-size;
|
||||
@media screen and (min-width: $min-vw) {
|
||||
font-size: calc(#{$min-font-size} + #{strip-unit($max-font-size - $min-font-size)} * ((100vw - #{$min-vw}) / #{strip-unit($max-vw - $min-vw)}));
|
||||
}
|
||||
@media screen and (min-width: $max-vw) {
|
||||
font-size: $max-font-size;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
77
user/themes/lecampus/scss/configurations/_variables.scss
Normal file
77
user/themes/lecampus/scss/configurations/_variables.scss
Normal file
@ -0,0 +1,77 @@
|
||||
@mixin breakpoint($point) {
|
||||
@if $point == 2x {
|
||||
@media (min-width:$size-2x) {
|
||||
@content;
|
||||
}
|
||||
} @else if $point == xl {
|
||||
@media (max-width: $size-xl) {
|
||||
@content;
|
||||
}
|
||||
|
||||
} @else if $point == lg {
|
||||
@media (max-width: $size-lg) {
|
||||
@content;
|
||||
}
|
||||
} @else if $point == md {
|
||||
@media (max-width: $size-md) {
|
||||
@content;
|
||||
}
|
||||
} @else if $point == sm {
|
||||
@media (max-width: $size-sm) {
|
||||
@content;
|
||||
}
|
||||
} @else if $point == xs {
|
||||
@media (max-width: $size-xs) {
|
||||
@content;
|
||||
}
|
||||
} @else {
|
||||
@warn "Breakpoint mixin supports: xs, sm, md, lg, xl, 2x";
|
||||
}
|
||||
}
|
||||
|
||||
@mixin vertical-align($position: relative) {
|
||||
position: $position;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
@mixin button-primary() {
|
||||
background: $primary-color;
|
||||
border-color: $primary-color-dark;
|
||||
color: $light-color;
|
||||
&:focus,
|
||||
&:hover {
|
||||
background: darken($primary-color-dark, 2%);
|
||||
border-color: darken($primary-color-dark, 5%);
|
||||
color: $light-color;
|
||||
}
|
||||
&:active,
|
||||
&.active {
|
||||
background: darken($primary-color-dark, 4%);
|
||||
border-color: darken($primary-color-dark, 7%);
|
||||
color: $light-color;
|
||||
}
|
||||
}
|
||||
|
||||
@function strip-unit($value) {
|
||||
@return $value / ($value * 0 + 1);
|
||||
}
|
||||
|
||||
@mixin fluid-type($min-vw, $max-vw, $min-font-size, $max-font-size) {
|
||||
$u1: unit($min-vw);
|
||||
$u2: unit($max-vw);
|
||||
$u3: unit($min-font-size);
|
||||
$u4: unit($max-font-size);
|
||||
|
||||
@if $u1 == $u2 and $u1 == $u3 and $u1 == $u4 {
|
||||
& {
|
||||
font-size: $min-font-size;
|
||||
@media screen and (min-width: $min-vw) {
|
||||
font-size: calc(#{$min-font-size} + #{strip-unit($max-font-size - $min-font-size)} * ((100vw - #{$min-vw}) / #{strip-unit($max-vw - $min-vw)}));
|
||||
}
|
||||
@media screen and (min-width: $max-vw) {
|
||||
font-size: $max-font-size;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
13
user/themes/lecampus/scss/theme.scss
Normal file
13
user/themes/lecampus/scss/theme.scss
Normal file
@ -0,0 +1,13 @@
|
||||
// Core variables and mixins
|
||||
@import 'configurations/variables';
|
||||
@import 'configurations/mixins';
|
||||
|
||||
@import 'theme/animation';
|
||||
@import 'theme/typography';;
|
||||
|
||||
@import 'theme/header';
|
||||
@import 'theme/menu';
|
||||
@import 'theme/footer';
|
||||
|
||||
// Extra Skeleton Styling
|
||||
@import 'theme/blog';
|
23
user/themes/lecampus/scss/theme/_animation.scss
Normal file
23
user/themes/lecampus/scss/theme/_animation.scss
Normal file
@ -0,0 +1,23 @@
|
||||
.default-animation {
|
||||
transition: all 0.5s ease;
|
||||
}
|
||||
|
||||
// Pulse Animation
|
||||
.pulse {
|
||||
animation-name: pulse_animation;
|
||||
animation-duration: 2000ms;
|
||||
transform-origin:70% 70%;
|
||||
animation-iteration-count: infinite;
|
||||
animation-timing-function: linear;
|
||||
}
|
||||
|
||||
@keyframes pulse_animation {
|
||||
0% { transform: scale(1); }
|
||||
30% { transform: scale(1); }
|
||||
40% { transform: scale(1.08); }
|
||||
50% { transform: scale(1); }
|
||||
60% { transform: scale(1); }
|
||||
70% { transform: scale(1.05); }
|
||||
80% { transform: scale(1); }
|
||||
100% { transform: scale(1); }
|
||||
}
|
113
user/themes/lecampus/scss/theme/_blog.scss
Normal file
113
user/themes/lecampus/scss/theme/_blog.scss
Normal file
@ -0,0 +1,113 @@
|
||||
/** Extra columns spacing **/
|
||||
.extra-spacing:not(.col-12), :not(.col12) > .e-content {
|
||||
padding-right: 1rem;
|
||||
|
||||
@include breakpoint(md) {
|
||||
padding-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/** Breadcrumbs styling **/
|
||||
#breadcrumbs {
|
||||
padding-left: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-top: -1rem;
|
||||
margin-bottom: 1rem;
|
||||
|
||||
|
||||
i {
|
||||
display: none;
|
||||
}
|
||||
|
||||
span, a {
|
||||
padding: 0 0.5rem;
|
||||
&:first-child {
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
span, a {
|
||||
&:not(:first-child)::before {
|
||||
color: #e7e9ed;
|
||||
content: "/";
|
||||
padding-right: 1rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Blog Listing **/
|
||||
.blog-listing {
|
||||
|
||||
.bricklayer-column {
|
||||
padding-left: 0px;
|
||||
padding-right: 25px;
|
||||
|
||||
}
|
||||
.card {
|
||||
margin-bottom: 25px;
|
||||
border: 0;
|
||||
box-shadow: 0 10px 45px -9px rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
.card-footer {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.blog-date {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.label {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/** Blog Item **/
|
||||
.content-title {
|
||||
margin-bottom: 2rem;
|
||||
|
||||
h2 {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.label {
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
/** Pagination **/
|
||||
ul.pagination {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.prev-next {
|
||||
margin-top: 4rem;
|
||||
}
|
||||
|
||||
/** Sidebar specific tweaks **/
|
||||
#sidebar {
|
||||
|
||||
ul.related-pages {
|
||||
box-shadow: none;
|
||||
padding: 0;
|
||||
|
||||
li {
|
||||
border-bottom: 1px solid $border-color;
|
||||
&:last-child {
|
||||
border-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ul.archives {
|
||||
list-style: none;
|
||||
margin-left: 0;
|
||||
|
||||
.label {
|
||||
vertical-align: text-top;
|
||||
}
|
||||
}
|
||||
}
|
17
user/themes/lecampus/scss/theme/_footer.scss
Normal file
17
user/themes/lecampus/scss/theme/_footer.scss
Normal file
@ -0,0 +1,17 @@
|
||||
// Sticky Footer solution
|
||||
body.sticky-footer {
|
||||
height: 100%;
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
#page-wrapper {
|
||||
flex: 1 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
#footer {
|
||||
color: #acb3c2;
|
||||
padding: 1rem $horiz-padding 0;
|
||||
text-align: center;
|
||||
}
|
101
user/themes/lecampus/scss/theme/_header.scss
Normal file
101
user/themes/lecampus/scss/theme/_header.scss
Normal file
@ -0,0 +1,101 @@
|
||||
#header {
|
||||
width: 100%;
|
||||
height: $header-height-large;
|
||||
border-bottom: 1px solid rgba($gray-color, 0.2);
|
||||
@extend .default-animation;
|
||||
|
||||
font-size: 0.7rem;
|
||||
font-weight: 700;
|
||||
|
||||
background: $light-color;
|
||||
color: $dark-color;
|
||||
|
||||
a {
|
||||
color: $dark-color;
|
||||
}
|
||||
|
||||
.logo svg path {
|
||||
fill: $header-color-dark;
|
||||
}
|
||||
|
||||
.header-dark &:not(.scrolled) {
|
||||
background: $header-color-dark;
|
||||
color: $light-color;
|
||||
a {
|
||||
color: rgba($light-color, 0.7) !important;
|
||||
}
|
||||
a.active {
|
||||
color: $light-color !important;
|
||||
}
|
||||
.dropmenu ul ul a {
|
||||
color: $dark-color !important;
|
||||
}
|
||||
.logo svg path {
|
||||
fill: $light-color;
|
||||
}
|
||||
}
|
||||
|
||||
.header-dark.header-transparent &:not(.scrolled) {
|
||||
background: rgba(#000, 0.05);
|
||||
}
|
||||
|
||||
.header-transparent &:not(.scrolled) {
|
||||
background: rgba(#fff, 0.05);
|
||||
//border-bottom: 0 !important;
|
||||
}
|
||||
|
||||
.navbar-section {
|
||||
height: $header-height-large;
|
||||
@extend .default-animation;
|
||||
|
||||
@include breakpoint(md) {
|
||||
margin-right: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-section.desktop-menu {
|
||||
@include breakpoint(md) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.logo {
|
||||
svg, img {
|
||||
height: 42px;
|
||||
display: inherit;
|
||||
@extend .default-animation;
|
||||
}
|
||||
}
|
||||
|
||||
// Fixed Header solution
|
||||
.header-fixed & {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
z-index: 2;
|
||||
}
|
||||
}
|
||||
|
||||
// Animate Fixed Header
|
||||
body.header-fixed.header-animated {
|
||||
#header.scrolled {
|
||||
height: $header-height-small;
|
||||
|
||||
.navbar-section {
|
||||
height: $header-height-small;
|
||||
}
|
||||
|
||||
.logo {
|
||||
svg, img {
|
||||
height: 28px;
|
||||
}
|
||||
}
|
||||
|
||||
~ .mobile-menu .button_container {
|
||||
top: 0.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.login-status-wrapper {
|
||||
white-space: nowrap;
|
||||
}
|
94
user/themes/lecampus/scss/theme/_menu.scss
Normal file
94
user/themes/lecampus/scss/theme/_menu.scss
Normal file
@ -0,0 +1,94 @@
|
||||
.dropmenu {
|
||||
|
||||
@include breakpoint(md) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
ul {
|
||||
white-space: nowrap;
|
||||
margin: 0;
|
||||
display: flex;
|
||||
|
||||
li {
|
||||
position: relative;
|
||||
margin: 0;
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
padding: $dropmenu-vert-padding ($dropmenu-horiz-padding + $dropmenu-child-padding) $dropmenu-vert-padding $dropmenu-horiz-padding;
|
||||
display: block;
|
||||
|
||||
&:hover, &:focus, &.active {
|
||||
color: $dropmenu-hover-text !important;
|
||||
}
|
||||
|
||||
&:before {
|
||||
content: '\f107';
|
||||
font-family: 'FontAwesome';
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
float: right;
|
||||
margin-right: - (2 *$dropmenu-child-padding);
|
||||
}
|
||||
|
||||
&:only-child {
|
||||
//background: none;
|
||||
padding-right: $dropmenu-horiz-padding;
|
||||
|
||||
&:before {
|
||||
content: '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
& > ul {
|
||||
display: block;
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ul li a:before {
|
||||
content: '\f105';
|
||||
}
|
||||
|
||||
ul {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
list-style: none;
|
||||
background: $dropmenu-bg;
|
||||
box-shadow: $dropmenu-shadow;
|
||||
visibility: hidden;
|
||||
|
||||
ul {
|
||||
position: absolute;
|
||||
left: 100%;
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
& > ul > li {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
// Animation options
|
||||
&.animated {
|
||||
ul li {
|
||||
transition: background .7s, color 0.5s;
|
||||
}
|
||||
|
||||
ul li:hover > ul {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
ul ul {
|
||||
transition: transform .3s, opacity .5s;
|
||||
opacity: 0;
|
||||
transform: translateY(-10px);
|
||||
}
|
||||
}
|
||||
}
|
162
user/themes/lecampus/scss/theme/_typography.scss
Normal file
162
user/themes/lecampus/scss/theme/_typography.scss
Normal file
@ -0,0 +1,162 @@
|
||||
html {
|
||||
@include fluid-type($size-xs, $size-xl, $min-responsive-font-size, $html-font-size);
|
||||
}
|
||||
|
||||
// Header Overrides
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 2rem;
|
||||
font-family: $title-font-family;
|
||||
color: darken($body-font-color, 10%);
|
||||
}
|
||||
|
||||
h1, .h1 {
|
||||
font-size: 3rem;
|
||||
}
|
||||
|
||||
h2, .h2 {
|
||||
font-size: 1.8rem;
|
||||
}
|
||||
|
||||
h6, .h6 {
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.title-center {
|
||||
h1, h2 {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.title-h1h2 {
|
||||
h1 {
|
||||
font-weight: 100;
|
||||
margin-bottom: 0;
|
||||
line-height: 1.1;
|
||||
|
||||
strong, bold {
|
||||
font-weight: 400;
|
||||
}
|
||||
}
|
||||
h1 + h2 {
|
||||
line-height: 1.1;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Typography Hints
|
||||
.title-h1h2, .title-center {
|
||||
h1 + h2 {
|
||||
margin-bottom: 50px;
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
|
||||
a:focus {
|
||||
outline: none !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
|
||||
// Codeblocks
|
||||
pre code, pre.xdebug-var-dump{
|
||||
background: #fafafa;
|
||||
display: block;
|
||||
padding: 1rem !important;
|
||||
line-height: 1.5;
|
||||
color: inherit;
|
||||
border-radius: 2px;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
pre {
|
||||
code:not(.hljs) {
|
||||
background: #f8f8f8;
|
||||
}
|
||||
}
|
||||
|
||||
// Icon Tweaks
|
||||
i.fa {
|
||||
|
||||
|
||||
&.fa-heart, &.fa-heart-o {
|
||||
&.pulse {
|
||||
color: #920
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Font Weights
|
||||
b,
|
||||
strong {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.heavy {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.light {
|
||||
font-weight: 200;
|
||||
}
|
||||
|
||||
// Colors
|
||||
.text-light {
|
||||
color: rgba($light-color, 0.8);
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
color: rgba($light-color, 0.9);
|
||||
}
|
||||
}
|
||||
|
||||
// Error configuration
|
||||
#error {
|
||||
text-align: center;
|
||||
position: relative;
|
||||
margin-top: 5rem;
|
||||
|
||||
.icon {
|
||||
font-size: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
// Messages
|
||||
#messages {
|
||||
margin-bottom: 1rem;
|
||||
|
||||
.icon {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
// Lists
|
||||
ul,
|
||||
ol {
|
||||
margin-left: $unit-8;
|
||||
|
||||
ul,
|
||||
ol {
|
||||
margin-left: $unit-8;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: disc outside;
|
||||
}
|
||||
|
||||
ol {
|
||||
list-style: decimal outside;
|
||||
}
|
||||
|
||||
// Notices
|
||||
.notices {
|
||||
margin: 1.5rem 0;
|
||||
p {
|
||||
margin: 1rem 0;
|
||||
}
|
||||
}
|
||||
|
32
user/themes/lecampus/templates/blog.html.twig
Normal file
32
user/themes/lecampus/templates/blog.html.twig
Normal file
@ -0,0 +1,32 @@
|
||||
{% extends 'partials/base.html.twig' %}
|
||||
{% set collection = page.collection() %}
|
||||
{% set image = page.media.images|first %}
|
||||
|
||||
{% block stylesheets %}
|
||||
{% do assets.addCss('theme://css/bricklayer.css') %}
|
||||
{{ parent() }}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block body %}
|
||||
<section id="body-wrapper" class="section blog-listing">
|
||||
{% if image %}
|
||||
{{image.html}}
|
||||
{% endif %}
|
||||
|
||||
<h2>{{page.title}}</h2>
|
||||
{{content}}
|
||||
|
||||
{% if show_sidebar %}
|
||||
{% block sidebar %}
|
||||
{% include 'partials/sidebar.html.twig' %}
|
||||
{% endblock %}
|
||||
{% endif %}
|
||||
|
||||
{% for item in page.collection %}
|
||||
<h3>{{item.title}}</h3>
|
||||
{{item.content}}
|
||||
{% endfor %}
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
49
user/themes/lecampus/templates/calendrier.html.twig
Normal file
49
user/themes/lecampus/templates/calendrier.html.twig
Normal file
@ -0,0 +1,49 @@
|
||||
{% extends 'partials/base.html.twig' %}
|
||||
{% set blog_image = page.media.images[page.header.hero_image] ?: page.media.images|first %}
|
||||
{% set collection = page.collection() %}
|
||||
{% set blog = page.find(header_var('blog_url')|defined(theme_var('blog-page'))) %}
|
||||
{% set show_breadcrumbs = header_var('show_breadcrumbs', [page, blog])|defined(true) %}
|
||||
{% set show_sidebar = header_var('show_sidebar', [page, blog])|defined(true) %}
|
||||
{% set show_pagination = header_var('show_pagination', [page, blog])|defined(true) %}
|
||||
|
||||
{% block stylesheets %}
|
||||
{% do assets.addCss('theme://css/bricklayer.css') %}
|
||||
{{ parent() }}
|
||||
{% endblock %}
|
||||
|
||||
{% block javascripts %}
|
||||
{{ parent() }}
|
||||
{% do assets.add('theme://js/bricklayer.min.js') %}
|
||||
{% do assets.add('theme://js/scopedQuerySelectorShim.min.js') %}
|
||||
{% endblock %}
|
||||
|
||||
{% block hero %}
|
||||
{% include 'partials/hero.html.twig' with {id: 'blog-hero', content: page.content, hero_image: blog_image} %}
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<section id="body-wrapper" class="section blog-listing">
|
||||
<section class="container {{ grid_size }}">
|
||||
|
||||
{% if show_breadcrumbs and config.plugins.breadcrumbs.enabled %}
|
||||
{% include 'partials/breadcrumbs.html.twig' %}
|
||||
{% endif %}
|
||||
|
||||
{% embed 'partials/layout.html.twig' with {blog: page} %}
|
||||
|
||||
{% block item %}
|
||||
<div class="bricklayer">
|
||||
{% for child in collection %}
|
||||
{% include 'partials/cal-list-event.html.twig' with {blog: page, page: child} %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
{% endembed %}
|
||||
</section>
|
||||
</section>
|
||||
<script>
|
||||
//Bricklayer
|
||||
var bricklayer = new Bricklayer(document.querySelector('.bricklayer'))
|
||||
</script>
|
||||
{% endblock %}
|
15
user/themes/lecampus/templates/default.html.twig
Normal file
15
user/themes/lecampus/templates/default.html.twig
Normal file
@ -0,0 +1,15 @@
|
||||
{% extends 'partials/base.html.twig' %}
|
||||
{% set image = page.media.images|first %}
|
||||
|
||||
{% block content %}
|
||||
{% if image %}
|
||||
{{ image.html }}
|
||||
{% endif %}
|
||||
|
||||
{{ page.content|raw }}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block sidebar %}
|
||||
{% include 'partials/sidebar.html.twig' %}
|
||||
{% endblock %}
|
12
user/themes/lecampus/templates/error.html.twig
Normal file
12
user/themes/lecampus/templates/error.html.twig
Normal file
@ -0,0 +1,12 @@
|
||||
{% extends 'partials/base.html.twig' %}
|
||||
|
||||
{% block content %}
|
||||
<div id="error">
|
||||
<div>
|
||||
<h1>{{ 'PLUGIN_ERROR.ERROR'|t }} {{ page.header.http_response_code }}</h1>
|
||||
<p>
|
||||
{{ page.content|raw }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
38
user/themes/lecampus/templates/event.html.twig
Normal file
38
user/themes/lecampus/templates/event.html.twig
Normal file
@ -0,0 +1,38 @@
|
||||
{% extends 'partials/base.html.twig' %}
|
||||
{% set blog = page.find(header_var('blog_url')|defined(theme_var('blog-page'))) %}
|
||||
{% set show_breadcrumbs = header_var('show_breadcrumbs', [page, blog])|defined(true) %}
|
||||
{% set show_sidebar = header_var('show_sidebar', [page, blog])|defined(true) %}
|
||||
{% set show_pagination = header_var('show_pagination', [page, blog])|defined(true) %}
|
||||
{% set hero_image_name = page.header.hero_image %}
|
||||
|
||||
{% block hero %}
|
||||
{% if hero_image_name %}
|
||||
{% set hero_image = page.media[hero_image_name] %}
|
||||
{% set content %}
|
||||
<h1>{{ page.title }}</h1>
|
||||
<h2>{{ page.header.subtitle }}</h2>
|
||||
{% include 'partials/blog/date.html.twig' %}
|
||||
{% include 'partials/blog/taxonomy.html.twig' %}
|
||||
{% endset %}
|
||||
{% include 'partials/hero.html.twig' with {id: 'blog-hero'} %}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<section id="body-wrapper" class="section blog-listing">
|
||||
<section class="container {{ grid_size }}">
|
||||
|
||||
{% if show_breadcrumbs and config.plugins.breadcrumbs.enabled %}
|
||||
{% include 'partials/breadcrumbs.html.twig' %}
|
||||
{% endif %}
|
||||
|
||||
{% embed 'partials/layout.html.twig' %}
|
||||
{% block item %}
|
||||
{% include 'partials/blog-item.html.twig' %}
|
||||
{% endblock %}
|
||||
{% endembed %}
|
||||
|
||||
</section>
|
||||
</section>
|
||||
{% endblock %}
|
16
user/themes/lecampus/templates/footer.html.twig
Normal file
16
user/themes/lecampus/templates/footer.html.twig
Normal file
@ -0,0 +1,16 @@
|
||||
{% set collection = page.collection() %}
|
||||
{% set image = page.media.images|first %}
|
||||
|
||||
{% for item in page.collection if page.template == "footer" %}
|
||||
{{item.title}}
|
||||
{% endfor %}
|
||||
<section id="footer" class="section blog-listing">
|
||||
{% if image %}
|
||||
{{image.html}}
|
||||
{% endif %}
|
||||
|
||||
{% for item in collection %}
|
||||
<h3>{{item.title}}</h3>
|
||||
{{item.content}}
|
||||
{% endfor %}
|
||||
</section>
|
12
user/themes/lecampus/templates/formdata.html.twig
Normal file
12
user/themes/lecampus/templates/formdata.html.twig
Normal file
@ -0,0 +1,12 @@
|
||||
{% extends 'partials/base.html.twig' %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{{ content }}
|
||||
|
||||
<div class="alert">{{ form.message }}</div>
|
||||
<p>Here is the summary of what you wrote to us:</p>
|
||||
|
||||
{% include "forms/data.html.twig" %}
|
||||
|
||||
{% endblock %}
|
17
user/themes/lecampus/templates/forms/default/data.txt.twig
Normal file
17
user/themes/lecampus/templates/forms/default/data.txt.twig
Normal file
@ -0,0 +1,17 @@
|
||||
{%- macro render_field(form, fields, scope) %}
|
||||
{%- for index, field in fields %}
|
||||
{%- set input = attribute(field, "input@") %}
|
||||
{%- if input is null or input == true %}
|
||||
{%- set value = form.value(scope ~ (field.name ?? index)) %}
|
||||
{{- scope ~ (field.name ?? index) }}: {{ string(value is iterable ? value|json_encode : value|escape('yaml')) ~ "\r\n" }}
|
||||
{%- else %}
|
||||
{%- if field.fields %}
|
||||
{%- set new_scope = field.nest_id ? scope ~ field.name ~ '.' : scope -%}
|
||||
{{- _self.render_field(form, field.fields, new_scope) }}
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
{%- endfor %}
|
||||
{%- endmacro %}
|
||||
{%- autoescape false %}
|
||||
{{- _self.render_field(form, form.fields, '') ~ "\r\n" }}
|
||||
{%- endautoescape %}
|
@ -0,0 +1,32 @@
|
||||
{% extends "forms/field.html.twig" %}
|
||||
|
||||
{% block label %}
|
||||
{% endblock %}
|
||||
|
||||
{% block input %}
|
||||
{% set id = field.id|default(field.name) ~ '-' ~ key %}
|
||||
<div class="{{ form_field_wrapper_classes ?: 'form-input-wrapper' }} {{ field.size }} {{ field.wrapper_classes }}">
|
||||
<label class="{{ form_field_checkbox_classes }}" for="{{ id|e }}">
|
||||
<input
|
||||
{# required attribute structures #}
|
||||
name="{{ (scope ~ field.name)|fieldName }}"
|
||||
value="{{ value|join(', ') }}"
|
||||
type="checkbox"
|
||||
{% if value == true %} checked="checked" {% endif %}
|
||||
|
||||
{# input attribute structures #}
|
||||
{% block input_attributes %}
|
||||
id="{{ id|e }}"
|
||||
{% if field.classes is defined %}class="{{ field.classes }}" {% endif %}
|
||||
{% if field.style is defined %}style="{{ field.style|e }}" {% endif %}
|
||||
{% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
|
||||
{% if field.autofocus in ['on', 'true', 1] %}autofocus="autofocus"{% endif %}
|
||||
{% if field.novalidate in ['on', 'true', 1] %}novalidate="novalidate"{% endif %}
|
||||
{% if required %}required="required"{% endif %}
|
||||
{% endblock %}
|
||||
/>
|
||||
<i class="form-icon"></i>
|
||||
{{ field.label|t|e }} {{ field.validate.required in ['on', 'true', 1] ? '<span class="required">*</span>' }}
|
||||
</label>
|
||||
</div>
|
||||
{% endblock %}
|
@ -0,0 +1,44 @@
|
||||
{% extends "forms/field.html.twig" %}
|
||||
|
||||
{% set originalValue = value %}
|
||||
{% set value = (value is null ? field.default : value) %}
|
||||
{% if field.use == 'keys' and field.default %}
|
||||
{% set value = field.default|merge(value) %}
|
||||
{% endif %}
|
||||
|
||||
{% block global_attributes %}
|
||||
{{ parent() }}
|
||||
data-grav-keys="{{ field.use == 'keys' ? 'true' : 'false' }}"
|
||||
data-grav-field-name="{{ (scope ~ field.name)|fieldName }}"
|
||||
{% endblock %}
|
||||
|
||||
{% block input %}
|
||||
{% for key, text in field.options %}
|
||||
|
||||
{% set id = field.id|default(field.name) ~ '-' ~ key %}
|
||||
{% set name = field.use == 'keys' ? key : id %}
|
||||
{% set val = field.use == 'keys' ? '1' : key %}
|
||||
{% set checked = (field.use == 'keys' ? value[key] : key in value) %}
|
||||
{% set help = (key in field.help_options|keys ? field.help_options[key] : false) %}
|
||||
|
||||
<div class="checkboxes {{ form_field_wrapper_classes }} {{ field.wrapper_classes }}">
|
||||
<label class="{{ form_field_checkbox_classes }}" for="{{ id|e }}">
|
||||
<input type="checkbox"
|
||||
id="{{ id|e }}"
|
||||
value="{{ val|e }}"
|
||||
name="{{ (scope ~ field.name)|fieldName ~ '[' ~ name ~ ']' }}"
|
||||
{% if checked %}checked="checked"{% endif %}
|
||||
{% if field.classes is defined %}class="{{ field.classes }}" {% endif %}
|
||||
{% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
|
||||
|
||||
>
|
||||
<i class="form-icon"></i>
|
||||
{% if help %}
|
||||
<span class="hint--bottom" data-hint="{{ help|t|e('html_attr') }}">{{ text|t|e }}</span>
|
||||
{% else %}
|
||||
{{ text|t|e }}
|
||||
{% endif %}
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
@ -0,0 +1 @@
|
||||
{% extends "forms/default/data.txt.twig" %}
|
@ -0,0 +1,26 @@
|
||||
{% extends "forms/field.html.twig" %}
|
||||
|
||||
{% set originalValue = value %}
|
||||
{% set value = (value is null ? field.default : value) %}
|
||||
|
||||
{% block input %}
|
||||
{% for key, text in field.options %}
|
||||
{% set id = field.id|default(field.name) ~ '-' ~ key %}
|
||||
|
||||
<div class="radio {{ form_field_wrapper_classes }} {{ field.wrapper_classes }}">
|
||||
<label class="{{ form_field_radio_classes }}" for="{{ id|e }}">
|
||||
<input type="radio"
|
||||
value="{{ key|e }}"
|
||||
id="{{ id|e }}"
|
||||
name="{{ (scope ~ field.name)|fieldName }}"
|
||||
{% if field.classes is defined %}class="{{ field.classes }}" {% endif %}
|
||||
{% if key == value %}checked="checked" {% endif %}
|
||||
{% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
|
||||
{% if required %}required="required"{% endif %}
|
||||
/>
|
||||
<i class="form-icon"></i>
|
||||
{% if grav.twig.twig.filters['tu'] is defined %}{{ text|tu|raw }}{% else %}{{ text|t|raw }}{% endif %}
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
@ -0,0 +1,3 @@
|
||||
{% set form_field_checkbox_classes = 'form-switch' %}
|
||||
{% extends "forms/fields/checkbox/checkbox.html.twig" %}
|
||||
|
43
user/themes/lecampus/templates/item.html.twig
Normal file
43
user/themes/lecampus/templates/item.html.twig
Normal file
@ -0,0 +1,43 @@
|
||||
{% extends 'partials/base.html.twig' %}
|
||||
{% set blog = page.find(header_var('blog_url')|defined(theme_var('blog-page'))) %}
|
||||
{% set show_breadcrumbs = header_var('show_breadcrumbs', [page, blog])|defined(true) %}
|
||||
{% set show_sidebar = header_var('show_sidebar', [page, blog])|defined(true) %}
|
||||
{% set show_pagination = header_var('show_pagination', [page, blog])|defined(true) %}
|
||||
{% set hero_image_name = page.header.hero_image %}
|
||||
|
||||
{% block hero %}
|
||||
{% if hero_image_name %}
|
||||
{% set hero_image = page.media[hero_image_name] %}
|
||||
{% set content %}
|
||||
<h1>{{ page.title }}</h1>
|
||||
<h2>{{ page.header.subtitle }}</h2>
|
||||
{% include 'partials/blog/date.html.twig' %}
|
||||
{% include 'partials/blog/taxonomy.html.twig' %}
|
||||
{% endset %}
|
||||
{% include 'partials/hero.html.twig' with {id: 'blog-hero'} %}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<section id="body-wrapper" class="section blog-listing">
|
||||
<section class="container {{ grid_size }}">
|
||||
|
||||
{% if show_breadcrumbs and config.plugins.breadcrumbs.enabled %}
|
||||
{% include 'partials/breadcrumbs.html.twig' %}
|
||||
{% endif %}
|
||||
|
||||
{% embed 'partials/layout.html.twig' %}
|
||||
{% block item %}
|
||||
{% include 'partials/blog-item.html.twig' %}
|
||||
{% endblock %}
|
||||
{% endembed %}
|
||||
|
||||
{% for child in page.collection %}
|
||||
{{child.content}}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
</section>
|
||||
</section>
|
||||
{% endblock %}
|
22
user/themes/lecampus/templates/macros/macros.html.twig
Normal file
22
user/themes/lecampus/templates/macros/macros.html.twig
Normal file
@ -0,0 +1,22 @@
|
||||
{% macro nav_loop(page) %}
|
||||
{% import _self as macros %}
|
||||
{% for p in page.children.visible %}
|
||||
{% set active_page = (p.active or p.activeChild) ? 'active' : '' %}
|
||||
{% if p.children.visible.count > 0 %}
|
||||
<li>
|
||||
<a href="{{ p.url }}"{{ active_page }}>
|
||||
{{ p.menu }}
|
||||
</a>
|
||||
<ul>
|
||||
{{ macros.nav_loop(p) }}
|
||||
</ul>
|
||||
</li>
|
||||
{% else %}
|
||||
<li>
|
||||
<a href="{{ p.url }}" class="{{ active_page }} ">
|
||||
{{ p.menu }}
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endmacro %}
|
69
user/themes/lecampus/templates/modular.html.twig
Normal file
69
user/themes/lecampus/templates/modular.html.twig
Normal file
@ -0,0 +1,69 @@
|
||||
{% extends 'partials/base.html.twig' %}
|
||||
|
||||
{% macro pageLinkName(text) %}{{ text|lower|replace({' ':'_'}) }}{% endmacro %}
|
||||
|
||||
{% import _self as macro %}
|
||||
|
||||
{% set show_onpage_menu = header.onpage_menu == true or header.onpage_menu is null %}
|
||||
|
||||
{% block javascripts %}
|
||||
{% if show_onpage_menu %}
|
||||
{% do assets.add('theme://js/singlepagenav.min.js') %}
|
||||
{% endif %}
|
||||
{{ parent() }}
|
||||
{% endblock %}
|
||||
|
||||
{% block bottom %}
|
||||
{{ parent() }}
|
||||
{% if show_onpage_menu %}
|
||||
<script>
|
||||
// singlePageNav initialization & configuration
|
||||
$('ul.navigation').singlePageNav({
|
||||
offset: $('#header').outerHeight(),
|
||||
filter: ':not(.external)',
|
||||
updateHash: true,
|
||||
currentClass: 'active'
|
||||
});
|
||||
</script>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block header_navigation %}
|
||||
{% if show_onpage_menu %}
|
||||
<ul class="navigation">
|
||||
{% for module in page.collection() if module.header.visible is not same as(false) %}
|
||||
{% set current_module = (module.active or module.activeChild) ? 'active' : '' %}
|
||||
<li><a class="{{ current_module }}" href="#{{ macro.pageLinkName(module.menu) }}">{{ module.menu }}</a></li>
|
||||
{% endfor %}
|
||||
{% for mitem in site.menu %}
|
||||
<li>
|
||||
<a {% if mitem.class %}class="{{ mitem.class }}"{% endif %} href="{{ mitem.url }}">
|
||||
{% if mitem.icon %}<i class="fa fa-{{ mitem.icon }}"></i>{% endif %}
|
||||
{{ mitem.text }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
{{ parent() }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block hero %}
|
||||
{% for module in page.collection() if module.template == 'modular/hero' %}
|
||||
<div id="{{ macro.pageLinkName(module.menu) }}"></div>
|
||||
{{ module.content|raw }}
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<span class="ariane">
|
||||
{% for module in page.collection() if module.template != 'modular/hero' %}
|
||||
{{module.title}}
|
||||
{% endfor %}
|
||||
</span>
|
||||
{% for module in page.collection() if module.template != 'modular/hero' %}
|
||||
<div id="{{ macro.pageLinkName(module.menu) }}"></div>
|
||||
{{ module.content|raw }}
|
||||
{% endfor %}
|
||||
{% endblock %}
|
30
user/themes/lecampus/templates/modular/features.html.twig
Normal file
30
user/themes/lecampus/templates/modular/features.html.twig
Normal file
@ -0,0 +1,30 @@
|
||||
{% set grid_size = theme_var('grid-size') %}
|
||||
{% set columns = page.header.class == 'small' ? 'col-3 col-md-4 col-sm-6' : 'col-4 col-md-6 col-sm-12' %}
|
||||
<section class="section modular-features {{ page.header.class}}">
|
||||
<section class="container {{ grid_size }}">
|
||||
<div class="frame-box">
|
||||
|
||||
{{ content|raw }}
|
||||
|
||||
<div class="columns">
|
||||
{% for feature in page.header.features %}
|
||||
<div class="column {{ columns }}">
|
||||
{% if feature.url %}<a href="{{feature.url}}">{% endif %}
|
||||
<div class="feature-icon">
|
||||
<i class="fa fa-fw {{ feature.icon }}"></i>
|
||||
{% if feature.header %}
|
||||
<h6>{{ feature.header }}</h6>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if feature.url %}</a>{% endif %}
|
||||
<div class="feature-content">
|
||||
{% if feature.text %}
|
||||
<p>{{ feature.text }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
4
user/themes/lecampus/templates/modular/hero.html.twig
Normal file
4
user/themes/lecampus/templates/modular/hero.html.twig
Normal file
@ -0,0 +1,4 @@
|
||||
{% set grid_size = theme_var('grid-size') %}
|
||||
{% set hero_image = page.header.hero_image ? page.media[page.header.hero_image] : page.media.images|first %}
|
||||
|
||||
{% include 'partials/hero.html.twig' %}
|
24
user/themes/lecampus/templates/modular/text.html.twig
Normal file
24
user/themes/lecampus/templates/modular/text.html.twig
Normal file
@ -0,0 +1,24 @@
|
||||
{% set grid_size = theme_var('grid-size') %}
|
||||
{% set image = page.media.images|first %}
|
||||
|
||||
<section class="section modular-text {{ page.header.class}} bg-gray">
|
||||
<section class="container {{ grid_size }}">
|
||||
<div class="columns {{ page.header.image_align|default('align-right') }}">
|
||||
{% if image %}
|
||||
<div class="column col-6 col-md-12">
|
||||
<h2>{{page.title}}</h2>
|
||||
{{ content|raw }}
|
||||
</div>
|
||||
<div class="column col-6 col-md-12">
|
||||
{% if image %}
|
||||
{{ image.html|raw }}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="column col-12">
|
||||
{{ content|raw }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
13
user/themes/lecampus/templates/partials/archives.html.twig
Normal file
13
user/themes/lecampus/templates/partials/archives.html.twig
Normal file
@ -0,0 +1,13 @@
|
||||
<ul class="archives">
|
||||
|
||||
{% for month,items in archives_data %}
|
||||
<li>
|
||||
<a href="{{ base_url }}/{{ config.plugins.archives.taxonomy_names.month }}{{ config.system.param_sep }}{{ month|date('M_Y')|lower|e('url') }}">
|
||||
{% if archives_show_count %}
|
||||
<span class="label label-rounded label-primary">{{ items|length }}</span>
|
||||
{% endif %}
|
||||
<span class="archive_date">{{ month }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
133
user/themes/lecampus/templates/partials/base.html.twig
Normal file
133
user/themes/lecampus/templates/partials/base.html.twig
Normal file
@ -0,0 +1,133 @@
|
||||
{% set body_classes = body_class(['header-fixed', 'header-animated', 'header-dark', 'header-transparent', 'sticky-footer']) %}
|
||||
{% set grid_size = theme_var('grid-size') %}
|
||||
{% set compress = theme_var('production-mode') ? '.min.css' : '.css' %}
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ grav.language.getActive ?: grav.config.site.default_lang }}">
|
||||
<head>
|
||||
{% block head %}
|
||||
<meta charset="utf-8" />
|
||||
<title>{% if header.title %}{{ header.title|e('html') }} | {% endif %}{{ site.title|e('html') }}</title>
|
||||
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
{% include 'partials/metadata.html.twig' %}
|
||||
|
||||
<link rel="icon" type="image/png" href="{{ url('theme://images/favicon.png') }}" />
|
||||
<link rel="canonical" href="{{ page.url(true, true) }}" />
|
||||
|
||||
{% block stylesheets %}
|
||||
{% do assets.addCss('theme://css-compiled/spectre'~compress) %}
|
||||
{% if theme_var('spectre.exp') %}{% do assets.addCss('theme://css-compiled/spectre-exp'~compress) %}{% endif %}
|
||||
{% if theme_var('spectre.icons') %}{% do assets.addCss('theme://css-compiled/spectre-icons'~compress) %}{% endif %}
|
||||
{% do assets.addCss('theme://css-compiled/theme'~compress) %}
|
||||
{% do assets.addCss('theme://css/custom.css') %}
|
||||
{% do assets.addCss('theme://css/line-awesome.min.css') %}
|
||||
{% endblock %}
|
||||
|
||||
{% block javascripts %}
|
||||
{% do assets.addJs('jquery', 101) %}
|
||||
{% do assets.addJs('theme://js/jquery.treemenu.js', {group:'bottom'}) %}
|
||||
{% do assets.addJs('theme://js/site.js', {group:'bottom'}) %}
|
||||
{% endblock %}
|
||||
|
||||
{% block assets deferred %}
|
||||
{{ assets.css()|raw }}
|
||||
{{ assets.js()|raw }}
|
||||
{% endblock %}
|
||||
<!-- <script>
|
||||
$(document).ready(function(){
|
||||
|
||||
var form = $('#ajax-test-form');
|
||||
form.submit(function(e) {
|
||||
// prevent form submission
|
||||
e.preventDefault();
|
||||
|
||||
// submit the form via Ajax
|
||||
$.ajax({
|
||||
url: form.attr('action'),
|
||||
type: form.attr('method'),
|
||||
dataType: 'html',
|
||||
data: form.serialize(),
|
||||
success: function(result) {
|
||||
// Inject the result in the HTML
|
||||
$('#form-result').html(result);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script> -->
|
||||
{% endblock head %}
|
||||
</head>
|
||||
<body id="top" class="{% block body_classes %}{{ body_classes }}{% endblock %}">
|
||||
<div id="page-wrapper">
|
||||
{% block header %}
|
||||
<section id="header" class="section">
|
||||
<section class="container {{ grid_size }}">
|
||||
<nav class="navbar">
|
||||
<section class="navbar-section logo">
|
||||
{% include 'partials/logo.html.twig' %}
|
||||
</section>
|
||||
<section class="navbar-section desktop-menu">
|
||||
|
||||
<nav class="dropmenu animated">
|
||||
{% block header_navigation %}
|
||||
{% include 'partials/navigation.html.twig' %}
|
||||
{% endblock %}
|
||||
</nav>
|
||||
|
||||
{% if config.plugins.login.enabled and grav.user.username %}
|
||||
<span class="login-status-wrapper"><i class="fa fa-user"></i> {% include 'partials/login-status.html.twig' %}</span>
|
||||
{% endif %}
|
||||
|
||||
</section>
|
||||
</nav>
|
||||
</section>
|
||||
</section>
|
||||
<div class="mobile-menu">
|
||||
<div class="button_container" id="toggle">
|
||||
<span class="top"></span>
|
||||
<span class="middle"></span>
|
||||
<span class="bottom"></span>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block hero %}{% endblock %}
|
||||
|
||||
<section id="start">
|
||||
{% block body %}
|
||||
<section id="body-wrapper" class="section">
|
||||
<section class="container {{ grid_size }}">
|
||||
{% block messages %}
|
||||
{% include 'partials/messages.html.twig' ignore missing %}
|
||||
{% endblock %}
|
||||
{% block content %}{% endblock %}
|
||||
{% block sidebar %}{% endblock %}
|
||||
</section>
|
||||
</section>
|
||||
{% endblock %}
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
{% block footer %}
|
||||
{% include 'partials/footer.html.twig' %}
|
||||
{% endblock %}
|
||||
|
||||
<div class="mobile-container">
|
||||
<div class="overlay" id="overlay">
|
||||
<div class="mobile-logo">
|
||||
{% include 'partials/logo.html.twig' with {mobile: true} %}
|
||||
</div>
|
||||
<nav class="overlay-menu">
|
||||
{% include 'partials/navigation.html.twig' with {tree: true} %}
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% block bottom %}
|
||||
{{ assets.js('bottom')|raw }}
|
||||
{% endblock %}
|
||||
|
||||
</body>
|
||||
</html>
|
20
user/themes/lecampus/templates/partials/blog-item.html.twig
Normal file
20
user/themes/lecampus/templates/partials/blog-item.html.twig
Normal file
@ -0,0 +1,20 @@
|
||||
{% set image = page.media.images|first %}
|
||||
|
||||
<div class="content-item h-entry">
|
||||
{% if image %}
|
||||
{{ image.html }}
|
||||
{% endif %}
|
||||
{% if not hero_image_name %}
|
||||
<div class="content-title text-center">
|
||||
{% include 'partials/blog/title.html.twig' with {title_level: 'h2'} %}
|
||||
{% if page.header.subtitle %}
|
||||
<h3 >{{ page.header.subtitle }}</h3>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="e-content">
|
||||
{{ page.content|raw }}
|
||||
</div>
|
||||
|
||||
</div>
|
@ -0,0 +1,26 @@
|
||||
<div class="card">
|
||||
<div class="card-footer">
|
||||
{% include 'partials/blog/public.html.twig' %}
|
||||
</div>
|
||||
{% set image = page.media.images|first %}
|
||||
{% if image %}
|
||||
<div class="card-image">
|
||||
<a href="{{ page.url }}">{{ image.cropZoom(800,400).html }}</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
{% include 'partials/blog/title.html.twig' with {title_level: 'h5'} %}
|
||||
</div>
|
||||
<div class="card-subtitle text-gray">
|
||||
{% include 'partials/blog/date.html.twig' %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
{% if page.summary != page.content %}
|
||||
{{ page.summary|raw }}
|
||||
{% else %}
|
||||
{{ page.content|raw }}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
16
user/themes/lecampus/templates/partials/blog/date.html.twig
Normal file
16
user/themes/lecampus/templates/partials/blog/date.html.twig
Normal file
@ -0,0 +1,16 @@
|
||||
<div class="date">
|
||||
<span class="dt">
|
||||
Du
|
||||
{% if page.header.date_begin %}
|
||||
<time class="dt-begin" datetime="{{ page.header.date_begin|date("c") }}">
|
||||
{{ page.header.date_begin|date(system.pages.dateformat.short) }}
|
||||
</time>
|
||||
{% endif %}
|
||||
à
|
||||
{% if page.header.date_end %}
|
||||
<time class="dt-end" datetime="{{ page.header.date_end|date("c") }}">
|
||||
{{ page.header.date_end|date(system.pages.dateformat.short) }}
|
||||
</time>
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
@ -0,0 +1,8 @@
|
||||
<div class="p-summary e-content">
|
||||
{% if page.summary != page.content %}
|
||||
{{ page.summary|raw }}
|
||||
{% else %}
|
||||
{{ page.content|raw }}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
@ -0,0 +1,8 @@
|
||||
<div class="publics">
|
||||
<span class="pc">
|
||||
{% set page_public = page.header.public %}
|
||||
{% for public in page_public %}
|
||||
{{ public }}
|
||||
{% endfor %}
|
||||
</span>
|
||||
</div>
|
@ -0,0 +1,10 @@
|
||||
{% set taxlist = children_only is defined ? taxonomylist.getChildPagesTags() : taxonomylist.get() %}
|
||||
|
||||
{% if taxlist %}
|
||||
<span class="tags">
|
||||
{% for tax,value in taxlist[taxonomy] %}
|
||||
{% set label_class = uri.param(taxonomy) == tax ? 'label-primary' : 'label-secondary' %}
|
||||
<a class="label label-rounded {{ label_class }}" href="{{ base_url }}/{{ taxonomy }}{{ config.system.param_sep }}{{ tax }}">{{ tax }}</a>
|
||||
{% endfor %}
|
||||
</span>
|
||||
{% endif %}
|
@ -0,0 +1,9 @@
|
||||
<div class="reseaux-sociaux">
|
||||
{% if page.header.rs %}
|
||||
{% for rs in page.header.rs %}
|
||||
<span class="rs">
|
||||
{{ rs }}
|
||||
</span>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
@ -0,0 +1,7 @@
|
||||
{% if page.taxonomy.tag %}
|
||||
<span class="tags">
|
||||
{% for tag in page.taxonomy.tag %}
|
||||
<a class="label label-rounded {{ label_style ?: 'label-secondary' }} p-category" href="{{ blog.url|rtrim('/') }}/tag{{ config.system.param_sep }}{{ tag }}#body-wrapper">{{ tag }}</a>
|
||||
{% endfor %}
|
||||
</span>
|
||||
{% endif %}
|
11
user/themes/lecampus/templates/partials/blog/title.html.twig
Normal file
11
user/themes/lecampus/templates/partials/blog/title.html.twig
Normal file
@ -0,0 +1,11 @@
|
||||
{% set title_level = title_level ?: 'h2' %}
|
||||
{% if page.header.link %}
|
||||
<{{ title_level }} class="p-name mt-1">
|
||||
{% if page.header.continue_link is not same as(false) %}
|
||||
<a href="{{ page.url }}"><i class="fa fa-angle-double-right u-url"></i></a>
|
||||
{% endif %}
|
||||
<a href="{{ page.header.link }}" class="u-url">{{ page.title }}</a>
|
||||
</{{ title_level }}>
|
||||
{% else %}
|
||||
<{{ title_level }} class="p-name mt-1"><a href="{{ page.url }}" class="u-url">{{ page.title }}</a></{{ title_level }}>
|
||||
{% endif %}
|
23
user/themes/lecampus/templates/partials/cal-event.html.twig
Normal file
23
user/themes/lecampus/templates/partials/cal-event.html.twig
Normal file
@ -0,0 +1,23 @@
|
||||
{% set image = page.media.images|first %}
|
||||
|
||||
<div class="content-item h-entry">
|
||||
{% if not hero_image_name %}
|
||||
<div class="content-title text-center">
|
||||
{% include 'partials/blog/title.html.twig' with {title_level: 'h2'} %}
|
||||
{% if page.header.subtitle %}
|
||||
<h3 >{{ page.header.subtitle }}</h3>
|
||||
{% endif %}
|
||||
{% include 'partials/blog/public.html.twig' %}
|
||||
{% include 'partials/blog/date.html.twig' %}
|
||||
{% include 'partials/blog/reseaux_sociaux.html.twig' %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="e-content">
|
||||
{% if image %}
|
||||
{{ image.html }}
|
||||
{% endif %}
|
||||
{{ page.content|raw }}
|
||||
</div>
|
||||
|
||||
</div>
|
@ -0,0 +1,26 @@
|
||||
<div class="card">
|
||||
<div class="card-footer">
|
||||
{% include 'partials/blog/public.html.twig' %}
|
||||
</div>
|
||||
{% set image = page.media.images|first %}
|
||||
{% if image %}
|
||||
<div class="card-image">
|
||||
<a href="{{ page.url }}">{{ image.cropZoom(800,400).html }}</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
{% include 'partials/blog/title.html.twig' with {title_level: 'h5'} %}
|
||||
</div>
|
||||
<div class="card-subtitle text-gray">
|
||||
{% include 'partials/blog/date.html.twig' %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
{% if page.summary != page.content %}
|
||||
{{ page.summary|raw }}
|
||||
{% else %}
|
||||
{{ page.content|raw }}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
10
user/themes/lecampus/templates/partials/footer.html.twig
Normal file
10
user/themes/lecampus/templates/partials/footer.html.twig
Normal file
@ -0,0 +1,10 @@
|
||||
{% set collection = page.collection() %}
|
||||
{% set image = page.media.images|first %}
|
||||
|
||||
<section id="footer" class="section blog-listing">
|
||||
{% for p in page.find('/home').children if p != page %}
|
||||
<h1>{{p.title}}</h1>
|
||||
{{p.content}}
|
||||
<div class="map"></div>
|
||||
{% endfor %}
|
||||
</section>
|
@ -0,0 +1,6 @@
|
||||
{% if form.message %}
|
||||
{% set inline_errors = form.inline_errors is not null ? form.inline_errors : config.plugins.form.inline_errors(false) %}
|
||||
{% set status_mapping = {'success':'green', 'error': 'red', 'warning': 'yellow'} %}
|
||||
{% set message = inline_errors and form.messages ? "FORM.VALIDATION_FAIL"|t : form.message %}
|
||||
<div class="toast toast-{{ form.status }} {{ status_mapping[form.status] ?: 'green' }} mt-2 mb-2">{{ message|raw }}</div>
|
||||
{% endif %}
|
7
user/themes/lecampus/templates/partials/hero.html.twig
Normal file
7
user/themes/lecampus/templates/partials/hero.html.twig
Normal file
@ -0,0 +1,7 @@
|
||||
<section id="{{ id }}" class="section modular-hero hero {{ page.header.hero_classes }} {{ page.header.background.parallax ? 'parallax' : '' }}" {% if hero_image %}style="background-image: url({{ hero_image.url }});"{% endif %}>
|
||||
<div class="image-overlay"></div>
|
||||
<section class="container {{ grid_size }}" style="text-align: {{ page.header.hero_align|default('center') }}">
|
||||
{{ content|raw }}
|
||||
</section>
|
||||
<i id="to-start" class="pulse fa fa-angle-down"></i>
|
||||
</section>
|
15
user/themes/lecampus/templates/partials/layout.html.twig
Normal file
15
user/themes/lecampus/templates/partials/layout.html.twig
Normal file
@ -0,0 +1,15 @@
|
||||
{% set item_col = show_sidebar ? 'col-9 col-md-12' : 'col-12' %}
|
||||
{% set sidebar_col = show_sidebar ? 'col-3 col-md-12' : 'col-12' %}
|
||||
|
||||
<div class="columns">
|
||||
<div id="item" class="column {{ item_col }} extra-spacing">
|
||||
{% block item %}{% endblock %}
|
||||
</div>
|
||||
{% if show_sidebar %}
|
||||
<div id="sidebar" class="column {{ sidebar_col }}">
|
||||
{% block sidebar %}
|
||||
{% include 'partials/sidebar.html.twig' %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
9
user/themes/lecampus/templates/partials/logo.html.twig
Normal file
9
user/themes/lecampus/templates/partials/logo.html.twig
Normal file
@ -0,0 +1,9 @@
|
||||
{% set logo = theme_var(mobile ? 'custom_logo_mobile' : 'custom_logo') %}
|
||||
<a href="{{ home_url }}" class="navbar-brand mr-10">
|
||||
{% if logo %}
|
||||
{% set logo_file = (logo|first).name %}
|
||||
<img src="{{ url('theme://images/logo/' ~ logo_file) }}" alt="{{ site.name }}" />
|
||||
{% else %}
|
||||
{% include('@images/grav-logo.svg') %}
|
||||
{% endif %}
|
||||
</a>
|
17
user/themes/lecampus/templates/partials/messages.html.twig
Normal file
17
user/themes/lecampus/templates/partials/messages.html.twig
Normal file
@ -0,0 +1,17 @@
|
||||
{% set type_mapping = {'info':'success', 'error': 'error', 'warning': 'warning'} %}
|
||||
{% set icon_mapping = {'info':'checkmark', 'error':'wrong', 'warning':'information'} %}
|
||||
|
||||
{% if grav.messages.all %}
|
||||
<div id="messages">
|
||||
{% for message in grav.messages.fetch %}
|
||||
|
||||
{% set scope = message.scope|e %}
|
||||
{% set type = type_mapping[scope] %}
|
||||
{% set icon = icon_mapping[scope] %}
|
||||
|
||||
<div class="toast toast-{{ type }} {{ scope }}">
|
||||
<i class="icon dripicons-{{ icon }}"></i> {{ message.message|raw }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
@ -0,0 +1,5 @@
|
||||
{% import 'macros/macros.html.twig' as macros %}
|
||||
|
||||
<ul {{ tree ? 'class="tree"' : '' }}>
|
||||
{{ macros.nav_loop(pages) }}
|
||||
</ul>
|
@ -0,0 +1,15 @@
|
||||
<ul class="related-pages menu">
|
||||
{% for related_path, score in related_pages %}
|
||||
{% set related = grav['pages'].get(related_path) %}
|
||||
{% if related %}
|
||||
<li class="menu-item">
|
||||
{% if config.plugins.relatedpages.show_score %}
|
||||
<div class="menu-badge">
|
||||
<span class="label lable-primary">{{ score }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
<a href="{{ related.url }}" title="{{ related.title }}">{{ related.title }}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
15
user/themes/lecampus/templates/partials/sidebar.html.twig
Normal file
15
user/themes/lecampus/templates/partials/sidebar.html.twig
Normal file
@ -0,0 +1,15 @@
|
||||
{% set options = { items: {'@page.children': '/agenda'}, 'limit': 3, 'order': {'by': 'date', 'dir': 'desc'} } %}
|
||||
|
||||
<div class="sidebar">
|
||||
<div class="side-agenda">
|
||||
<h2>À venir</h2>
|
||||
{% for p in page.collection(options)%}
|
||||
{{p.title}}
|
||||
{% include 'partials/blog/date.html.twig' with {page: p } %}
|
||||
{% endfor %}
|
||||
<a href="agenda">voir tout l'agenda</a>
|
||||
</div>
|
||||
<div class="side-newsletter">
|
||||
<h3>Recevoir l’actualté du Campus</h3>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,10 @@
|
||||
{% set taxlist = children_only is defined ? taxonomylist.getChildPagesTags() : taxonomylist.get() %}
|
||||
|
||||
{% if taxlist %}
|
||||
<span class="tags">
|
||||
{% for tax,value in taxlist[taxonomy] %}
|
||||
{% set label_class = uri.param(taxonomy) == tax ? 'label-primary' : 'label-secondary' %}
|
||||
<a class="label label-rounded {{ label_class }}" href="{{ base_url }}/{{ taxonomy }}{{ config.system.param_sep }}{{ tax }}">{{ tax }}</a>
|
||||
{% endfor %}
|
||||
</span>
|
||||
{% endif %}
|
BIN
user/themes/lecampus/thumbnail.jpg
Normal file
BIN
user/themes/lecampus/thumbnail.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 48 KiB |
2835
user/themes/lecampus/yarn.lock
Normal file
2835
user/themes/lecampus/yarn.lock
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user