commit
bbc99c6967
@ -0,0 +1,2 @@
|
||||
.DS_Store
|
||||
/node_modules
|
@ -0,0 +1,18 @@
|
||||
[submodule "kirby"]
|
||||
path = kirby
|
||||
url = https://github.com/getkirby/kirby.git
|
||||
[submodule "site/patterns"]
|
||||
path = site/patterns
|
||||
url = https://git.codesignd.com/sites/patterns.git
|
||||
[submodule "site/plugins/cachebuster"]
|
||||
path = site/plugins/cachebuster
|
||||
url = https://github.com/getkirby-plugins/cachebuster-plugin.git
|
||||
[submodule "site/plugins/baromator"]
|
||||
path = site/plugins/baromator
|
||||
url = cdd@git.codesignd.com:corporate-identity/baromator.git
|
||||
[submodule "site/plugins/patterns"]
|
||||
path = site/plugins/patterns
|
||||
url = https://github.com/getkirby-plugins/patterns-plugin.git
|
||||
[submodule "site/plugins/uniform"]
|
||||
path = site/plugins/uniform
|
||||
url = https://github.com/mzur/kirby-uniform.git
|
@ -0,0 +1,95 @@
|
||||
# Rewrite rules
|
||||
<IfModule mod_rewrite.c>
|
||||
# enable awesome urls. i.e.:
|
||||
# http://yourdomain.com/about-us/team
|
||||
RewriteEngine on
|
||||
|
||||
# make sure to set the RewriteBase correctly
|
||||
# if you are running the site in a subfolder.
|
||||
# Otherwise links or the entire site will break.
|
||||
#
|
||||
# If your homepage is http://yourdomain.com/mysite
|
||||
# Set the RewriteBase to:
|
||||
#
|
||||
RewriteBase /
|
||||
|
||||
# enforce HTTPS
|
||||
RewriteCond %{ENV:HTTPS} !=on
|
||||
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
|
||||
|
||||
# rewrite /favicon.ico
|
||||
RewriteRule ^favicon.ico$ assets/img/favicon.ico [L]
|
||||
|
||||
# cache busting
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteRule ^(assets/.+)\.(\d+)\.(\w+)$ $1.$3 [L]
|
||||
|
||||
# block text files in the content folder from being accessed directly
|
||||
RewriteRule ^content/(.*)\.(txt|md|mdown)$ index.php [L]
|
||||
|
||||
# block all files in the site folder from being accessed directly
|
||||
RewriteRule ^site/(.*) index.php [L]
|
||||
|
||||
# block all files in the kirby folder from being accessed directly
|
||||
RewriteRule ^kirby/(.*) index.php [L]
|
||||
|
||||
# make panel links work
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule ^panel/(.*) panel/index.php [L]
|
||||
|
||||
# make site links work
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule ^(.*) index.php [L]
|
||||
</IfModule>
|
||||
|
||||
# Mime types
|
||||
<IfModule mod_mime.c>
|
||||
AddType text/css css
|
||||
AddType application/javascript js
|
||||
|
||||
AddType image/svg+xml svg
|
||||
AddType image/jpeg jpg jpeg
|
||||
AddType image/png png
|
||||
AddType image/x-icon ico
|
||||
|
||||
AddType application/vnd.ms-fontobject eot
|
||||
AddType application/font-woff woff
|
||||
AddType font/woff2 woff2
|
||||
|
||||
AddType application/pgp-keys asc
|
||||
</IfModule>
|
||||
|
||||
# Compression
|
||||
<IfModule mod_deflate.c>
|
||||
AddOutputFilterByType DEFLATE application/atom+xml \
|
||||
application/javascript \
|
||||
application/json \
|
||||
application/rss+xml \
|
||||
application/xhtml+xml \
|
||||
application/xml \
|
||||
image/svg+xml \
|
||||
image/x-icon \
|
||||
text/cache-manifest \
|
||||
text/css \
|
||||
text/html \
|
||||
text/plain
|
||||
</IfModule>
|
||||
|
||||
# Caching
|
||||
<IfModule mod_expires.c>
|
||||
ExpiresActive On
|
||||
|
||||
ExpiresByType text/css "modification plus 1 year"
|
||||
ExpiresByType application/javascript "modification plus 1 year"
|
||||
|
||||
ExpiresByType image/svg+xml "modification plus 1 year"
|
||||
ExpiresByType image/jpeg "modification plus 1 year"
|
||||
ExpiresByType image/png "modification plus 1 year"
|
||||
ExpiresByType image/x-icon "modification plus 1 year"
|
||||
|
||||
ExpiresByType application/vnd.ms-fontobject "modification plus 1 year"
|
||||
ExpiresByType application/font-woff "modification plus 1 year"
|
||||
ExpiresByType font/woff2 "modification plus 1 year"
|
||||
</IfModule>
|
@ -0,0 +1,2 @@
|
||||
npm install
|
||||
node_modules/.bin/gulp prod
|
@ -0,0 +1,2 @@
|
||||
*
|
||||
!.gitignore
|
@ -0,0 +1,2 @@
|
||||
*
|
||||
!.gitignore
|
@ -0,0 +1,2 @@
|
||||
*
|
||||
!.gitignore
|
@ -0,0 +1,2 @@
|
||||
*
|
||||
!.gitignore
|
@ -0,0 +1,2 @@
|
||||
*
|
||||
!.gitignore
|
@ -0,0 +1,4 @@
|
||||
# Note about the assets directory
|
||||
|
||||
The `assets` directory only contains empty subdirectories.
|
||||
This is because the site uses [Kirby patterns](https://github.com/getkirby-plugins/patterns-plugin). The files in this directory are generated automatically by gulp.
|
@ -0,0 +1,14 @@
|
||||
Title: Startseite
|
||||
|
||||
----
|
||||
|
||||
Description:
|
||||
|
||||
----
|
||||
|
||||
Text:
|
||||
|
||||
# Willkommen bei codesignd
|
||||
|
||||
Wo sich **Code** und **Design** begegnen.
|
||||
Auch bei deinen Websites und Webprojekten.
|
@ -0,0 +1,14 @@
|
||||
Title: Home
|
||||
|
||||
----
|
||||
|
||||
Description:
|
||||
|
||||
----
|
||||
|
||||
Text:
|
||||
|
||||
# Welcome at codesignd
|
||||
|
||||
Where **code** and **design** meet.
|
||||
Even at your websites and web projects.
|
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 6.7 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 4.2 KiB |
@ -0,0 +1,49 @@
|
||||
Title: Leistungen
|
||||
|
||||
----
|
||||
|
||||
URL-Key: leistungen
|
||||
|
||||
----
|
||||
|
||||
Description: codesignd bietet Konzeption, Backend-Entwicklung mit Kirby und Beratung und Hilfe beim Web-Hosting.
|
||||
|
||||
----
|
||||
|
||||
Services:
|
||||
|
||||
-
|
||||
title: 'Konzept & Koordination'
|
||||
illustration: conception.svg
|
||||
text: |
|
||||
Zu jedem erfolgreichen Projekt gehรถrt auch ein gutes Konzept. Direkt mit den ersten Vorstellungen loszulegen bringt oft auf gute Ideen, aber bevor es dann an die Umsetzung des Endprodukts geht, finde ich fรผr die Ideen einen Platz in einem stimmigen Gesamtkonzept. Das hilft nicht nur dabei, spรคter sauberen und konsistenten Code zu schreiben, sondern schafft auch frรผh Klarheit รผber die Ziele und Mรถglichkeiten.
|
||||
|
||||
Aber auch nach der Konzeptionsphase kรผmmere ich mich gerne um die Koordination des Projekts. Sollten besondere Fรคhigkeiten benรถtigt werden, arbeite ich im Netzwerk mit anderen Freiberuflern zusammen.
|
||||
-
|
||||
title: Entwicklung
|
||||
illustration: development.svg
|
||||
text: |
|
||||
Das Konzept steht? Dann geht es an die Umsetzung. Seien es robuster und zuverlรคssiger Frontend-Code mit HTML und CSS, interaktive Elemente รผber JavaScript oder komplexe Ablรคufe mit Datenbankanbindungen oder internen Benutzerbereichen, im Gesprรคch mit dir finde ich fรผr so manches eine solide Lรถsung.
|
||||
|
||||
Besonders wichtig ist mir, hochwertigen Code zu schreiben. Das bedeutet: Gute Struktur, Code-Kommentare zum besseren Verstรคndnis durch andere Entwickler und (Unit-)Tests fรผr zentralen Code. Denn schlechter Code rรคcht sich, z. B. bei einer spรคteren Erweiterung, durch eine vermeidbare Sicherheitslรผcke oder wenn neue Entwickler ins Team kommen. Guter Code ist wartbar, verstรคndlich und sicher.
|
||||
-
|
||||
title: Kirby
|
||||
illustration: kirby.svg
|
||||
text: |
|
||||
Der beste Code nutzt jedoch nichts, wenn die Website am Ende nur durch den Entwickler gewartet werden kann. Die Lรถsung sind Content Management Systeme (CMS). Sie bieten eine benutzerfreundliche Oberflรคche, um den Inhalt selbst zu รคndern und zu formatieren.
|
||||
|
||||
Seit 4 Jahren arbeite ich ausschlieรlich mit [Kirby](https://getkirby.com), einem sehr flexiblen und dadurch รคuรerst anpassbaren CMS. Als Mitglied der Entwicklungs- und Support-Teams von Kirby habe ich viel Erfahrung mit der Funktionsweise und kann das System an deine Bedรผrfnisse und die Anforderungen des Projekts anpassen und Lรถsungen finden, die zu deinem Workflow passen.
|
||||
-
|
||||
title: 'Server & Service'
|
||||
illustration: server.svg
|
||||
text: |
|
||||
Auch nach der Umsetzung des Projekts bin ich fรผr dich da, suche gemeinsam mit dir einen passenden Web-Hoster aus und richte die Website dort ein. Je nach Hoster biete ich die Einrichtung von Backup-Strategien, maรgeschneiderten Deployment-Prozessen und Staging-Sites an. Bevor die Website dann online geht, sind natรผrlich auch Optimierungen wie HTTPS, CDNs, Caching und Komprimierung mรถglich.
|
||||
|
||||
Und wenn du auch nach dem Projekt eine Frage hast oder etwas nicht funktioniert, helfe ich dir gerne weiter.
|
||||
|
||||
----
|
||||
|
||||
Cta:
|
||||
|
||||
Zusammen ist das meine <span class="color--brand-secondary">KEKS</span>-Strategie.
|
||||
Klingt lecker? Dann erzรคhl mir von deinem Projekt, ich berate dich gerne!
|
@ -0,0 +1,45 @@
|
||||
Title: Services
|
||||
|
||||
----
|
||||
|
||||
Description: codesignd offers conception, backend development with Kirby as well as consulting and help with web hosting.
|
||||
|
||||
----
|
||||
|
||||
Services:
|
||||
|
||||
-
|
||||
title: 'Conception & Coordination'
|
||||
illustration: conception.svg
|
||||
text: |
|
||||
Every successful project needs a good conception. Starting with the first ideas right away can often inspire, but before it's time to implement the final product, I put it all together in a coherent conception. That not only helps writing good and consistent code, it also provides clarity of the goals and options very early on.
|
||||
|
||||
After the initial conception phase, I can coordinate the project. If special skills are required, I work together with other freelancers from my network.
|
||||
-
|
||||
title: Development
|
||||
illustration: development.svg
|
||||
text: |
|
||||
The conception is ready? Then the next step is the implementation. Be it robust and reliable frontend code with HTML and CSS, interactive elements with JavaScript or complex processes with database integrations or internal user areas, together with you I can find a sound solution for many use cases.
|
||||
|
||||
Especially important to me is to write high quality code. That means: A good code structure, code comments for a better understanding by other developers and (unit) tests for important code. Bad code comes back to roost, e.g. in future expansions, through an avoidable security issue or when new developers join the team. Good code is maintainable, easy to understand and secure.
|
||||
-
|
||||
title: Kirby
|
||||
illustration: kirby.svg
|
||||
text: |
|
||||
The best code doesn't help if the site can only be maintained by the developer. The solution are Content Management Systems (CMS). They provide an easy to use interface to change and format the content.
|
||||
|
||||
In the last 4 years, I have been exclusively working with [Kirby](https://getkirby.com), a very flexible and thus very adaptable CMS. As a member of the development and support teams of Kirby, I am very experienced with the functionality and can adapt the system to your needs and the project requirements as well as find solutions to fit your workflow.
|
||||
-
|
||||
title: 'Servers & Service'
|
||||
illustration: server.svg
|
||||
text: |
|
||||
I'm there for you even after the implementation of the project, will help you to find a fitting web hosting provider and set the website up for you. Depending on the provider I offer setting up backup strategies, custom-fit deployment processes and staging sites. Before the website goes live, optimizations like HTTPS, CDNs, caching and compression are possible too.
|
||||
|
||||
And if you have any questions after the project is done or if anything doesn't work, I'm here to help.
|
||||
|
||||
----
|
||||
|
||||
Cta:
|
||||
|
||||
Sounds great?
|
||||
Then feel free to tell me about your project, I will be happy to help you.
|
@ -0,0 +1,9 @@
|
||||
Title: Kontakt
|
||||
|
||||
----
|
||||
|
||||
URL-Key: kontakt
|
||||
|
||||
----
|
||||
|
||||
Description: Erfahre, wie du Lukas Bestle, den Inhaber von codesignd, erreichen kannst.
|
@ -0,0 +1,5 @@
|
||||
Title: Contact
|
||||
|
||||
----
|
||||
|
||||
Description: Find out how to contact Lukas Bestle, the owner of codesignd.
|
@ -0,0 +1,16 @@
|
||||
Title: Fehler
|
||||
|
||||
----
|
||||
|
||||
Description: Die angeforderte Seite konnte nicht gefunden werden.
|
||||
|
||||
----
|
||||
|
||||
Text:
|
||||
|
||||
# Vier-Null-Vier
|
||||
|
||||
Hm, da ist was schiefgelaufen.
|
||||
Die angeforderte Seite konnte nicht gefunden werden.
|
||||
|
||||
Macht aber nichts, (link: / text: auf der Startseite geht's weiter).
|
@ -0,0 +1,16 @@
|
||||
Title: Error
|
||||
|
||||
----
|
||||
|
||||
Description: The requested page could not be found.
|
||||
|
||||
----
|
||||
|
||||
Text:
|
||||
|
||||
# Four-oh-four
|
||||
|
||||
Hm, something went wrong here.
|
||||
The requested page could not be found.
|
||||
|
||||
Never mind, (link: / text: let's continue on the homepage).
|
@ -0,0 +1,45 @@
|
||||
Title: Impressum
|
||||
|
||||
----
|
||||
|
||||
URL-Key: impressum
|
||||
|
||||
----
|
||||
|
||||
Description:
|
||||
|
||||
----
|
||||
|
||||
Text:
|
||||
|
||||
# Impressum
|
||||
|
||||
**codesignd, Lukas Bestle**
|
||||
Seidenstr. 7
|
||||
72764 Reutlingen
|
||||
Deutschland
|
||||
|
||||
USt-IdNr.: DE 300 983 590
|
||||
|
||||
<h2 id="contact">Kontakt</h2>
|
||||
|
||||
(qdated:)
|
||||
|
||||
Diese E-Mail-Adresse ist eine Woche lang gรผltig und verfรคllt anschlieรend. E-Mails an diese Adresse erreichen mich persรถnlich und werden schnellstmรถglich beantwortet. Mit der Antwort erhรคltst du meine dauerhaft gรผltige E-Mail-Adresse.
|
||||
Durch dieses Verfahren wird die E-Mail-Adresse vor automatisiertem Spam geschรผtzt. Vielen Dank fรผr dein Verstรคndnis.
|
||||
|
||||
## Datenschutz
|
||||
|
||||
Beim Besuch dieser Website werden folgende Daten gespeichert:
|
||||
|
||||
- Datum und Uhrzeit der Anfrage
|
||||
- gekรผrzte IP-Adresse
|
||||
- aufgerufene URL
|
||||
- ggf. Referrer (URL einer hierher verlinkenden Website)
|
||||
- Browser- und Betriebssystemversion
|
||||
|
||||
Die Speicherung erfolgt ausschlieรlich auf dem Server des Betreibers. Eine Weitergabe der Daten oder Zusammenfรผhrung mit weiteren Daten erfolgt nicht. Nach vier Wochen werden die Daten automatisch gelรถscht.
|
||||
|
||||
### Kontaktformular
|
||||
|
||||
Bei Nutzung des Kontaktformulars werden deine Angaben per E-Mail an mich รผbermittelt. Eine Weitergabe der Daten oder Zusammenfรผhrung mit weiteren Daten erfolgt nicht.
|
@ -0,0 +1,43 @@
|
||||
Title: Imprint
|
||||
|
||||
----
|
||||
|
||||
Description:
|
||||
|
||||
----
|
||||
|
||||
Text:
|
||||
|
||||
# Legal information / imprint
|
||||
|
||||
The following information is required by German law.
|
||||
|
||||
**codesignd, Lukas Bestle**
|
||||
Seidenstr. 7
|
||||
72764 Reutlingen
|
||||
Germany
|
||||
|
||||
USt-IdNr.: DE 300 983 590
|
||||
|
||||
<h2 id="contact">Contact</h2>
|
||||
|
||||
(qdated:)
|
||||
|
||||
This email address is valid for one week, after which it expires. Emails to this address are received by me personally and are responded to as fast as possible. Together with my reply, you will get my permanently valid email address.
|
||||
This process protects the email address against automated spam. Thank you for your understanding.
|
||||
|
||||
## Privacy
|
||||
|
||||
Visiting this website temporarily stores the following information:
|
||||
|
||||
- date and time of visit
|
||||
- truncated IP address
|
||||
- visited URL
|
||||
- referrer (URL of the site you came from)
|
||||
- version information of browser and operating system
|
||||
|
||||
The data is stored on the server of the website owner only. No data is circulated or combined with other data. All data is automatically deleted after four weeks.
|
||||
|
||||
### Contact form
|
||||
|
||||
When using the contact form, your information is sent to me via email. No data is circulated or combined with other data.
|
@ -0,0 +1,9 @@
|
||||
Title: codesignd
|
||||
|
||||
----
|
||||
|
||||
Description: codesignd ist Lukas Bestle, ein Backend-Web-Entwickler und Mitglied des Kirby-Teams.
|
||||
|
||||
----
|
||||
|
||||
Copyright: ยฉ 2015-2016 Lukas Bestle
|
@ -0,0 +1,9 @@
|
||||
Title: codesignd
|
||||
|
||||
----
|
||||
|
||||
Description: codesignd is Lukas Bestle, a backend web developer and member of the Kirby team.
|
||||
|
||||
----
|
||||
|
||||
Copyright: ยฉ 2015-2016 Lukas Bestle
|
@ -0,0 +1,245 @@
|
||||
'use strict';
|
||||
|
||||
// Directory name inside the patterns repo
|
||||
var site = 'codesignd';
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Node dependencies
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
|
||||
// gulp and gulp plugins
|
||||
var gulp = require('gulp');
|
||||
var autoprefixer = require('gulp-autoprefixer');
|
||||
var cleanCSS = require('gulp-clean-css');
|
||||
var concat = require('gulp-concat');
|
||||
var header = require('gulp-header');
|
||||
var include = require('gulp-include');
|
||||
var preservetime = require('gulp-preservetime');
|
||||
var refresh = require('gulp-refresh');
|
||||
var rename = require('gulp-rename');
|
||||
var gulpSass = require('gulp-sass');
|
||||
var sass = gulpSass.compiler;
|
||||
var uglify = require('gulp-uglify');
|
||||
|
||||
// Other npm modules
|
||||
var del = require('del');
|
||||
|
||||
// Load package.json of the patterns repo
|
||||
var packageData = require('./site/patterns/package.json');
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
var helpers = {};
|
||||
|
||||
/**
|
||||
* Returns a banner for asset files
|
||||
*
|
||||
* @param {string} type File type of the generated file
|
||||
* @return {object}
|
||||
*/
|
||||
helpers.banner = function(type) {
|
||||
var banner = [
|
||||
'/*!',
|
||||
' * <%= pkg.description %>',
|
||||
' * @link <%= pkg.homepage %>',
|
||||
' * @copyright <%= pkg.copyright %>',
|
||||
' * @license <%= pkg.license' + type + ' || pkg.license %>',
|
||||
' */',
|
||||
''
|
||||
].join('\n');
|
||||
|
||||
return header(banner, {pkg: packageData});
|
||||
};
|
||||
|
||||
/**
|
||||
* Builds the CSS of the specified site
|
||||
*
|
||||
* @param {string} site Site name, defaults to "shared" if not given
|
||||
* @param {boolean} minify Whether to minify using clean-css
|
||||
* @return {stream}
|
||||
*/
|
||||
helpers.buildCSS = function(site, minify) {
|
||||
if(!site) site = 'shared';
|
||||
if(!minify) minify = false;
|
||||
|
||||
var sassOptions = {
|
||||
functions: {
|
||||
'-cdd-cachebuster($filepath)': function(filepath, done) {
|
||||
var pathString = filepath.getValue();
|
||||
|
||||
fs.stat(__dirname + pathString, function(err, stats) {
|
||||
if(err) throw err;
|
||||
|
||||
var mtime = Math.round(Date.parse(stats.mtime) / 1000);
|
||||
|
||||
var parsed = path.parse(pathString);
|
||||
var filepath = parsed.dir + '/' + parsed.name + '.' + mtime + parsed.ext;
|
||||
done(sass.types.String(filepath));
|
||||
});
|
||||
}
|
||||
},
|
||||
outputStyle: 'expanded'
|
||||
};
|
||||
|
||||
// Compile the SCSS file
|
||||
var stream = gulp.src('site/patterns/' + site + '/' + site + '.scss')
|
||||
.pipe(gulpSass(sassOptions).on('error', gulpSass.logError))
|
||||
.pipe(autoprefixer({browsers: ['> 1%']}))
|
||||
.pipe(rename('index.css'))
|
||||
.pipe(helpers.banner('CSS'))
|
||||
.pipe(gulp.dest('assets/css'));
|
||||
|
||||
// Minify CSS if required
|
||||
if(minify) {
|
||||
stream = stream.pipe(rename('index.min.css'))
|
||||
.pipe(cleanCSS())
|
||||
.pipe(gulp.dest('assets/css'));
|
||||
}
|
||||
|
||||
// Trigger LiveReload
|
||||
return stream.pipe(refresh());
|
||||
};
|
||||
|
||||
/**
|
||||
* Builds the JS of the specified site
|
||||
*
|
||||
* @param {string} site Site name, defaults to "shared" if not given
|
||||
* @param {boolean} minify Whether to minify using UglifyJS
|
||||
* @return {stream}
|
||||
*/
|
||||
helpers.buildJS = function(site, minify) {
|
||||
if(!site) site = 'shared';
|
||||
if(!minify) minify = false;
|
||||
|
||||
var src = ['site/patterns/shared/**/*.js'];
|
||||
if(site !== 'shared') src.push('site/patterns/' + site + '/**/*.js');
|
||||
|
||||
// Concat the JS files
|
||||
var stream = gulp.src(src)
|
||||
.pipe(concat('index.js'))
|
||||
.pipe(include({includePaths: __dirname + '/node_modules'}))
|
||||
.pipe(helpers.banner('JS'))
|
||||
.pipe(gulp.dest('assets/js'));
|
||||
|
||||
// Minify JS if required
|
||||
if(minify) {
|
||||
stream = stream.pipe(rename('index.min.js'))
|
||||
.pipe(uglify({preserveComments: 'license'}))
|
||||
.pipe(gulp.dest('assets/js'));
|
||||
}
|
||||
|
||||
// Trigger LiveReload
|
||||
return stream.pipe(refresh());
|
||||
};
|
||||
|
||||
/**
|
||||
* Copies all files matching a specified pattern to the assets dir
|
||||
* Removes folder hierarchies so make sure that each file has a unique name!
|
||||
*
|
||||
* @param {string} site Site name, defaults to "shared" if not given
|
||||
* @param {string} pattern Something like "*.{jpg,svg}"
|
||||
* @param {string} dest Either "fonts" or "img"
|
||||
* @return {stream}
|
||||
*/
|
||||
helpers.copyFiles = function(site, pattern, dest) {
|
||||
if(!site) site = 'shared';
|
||||
|
||||
var src = ['site/patterns/shared/**/' + pattern];
|
||||
if(site !== 'shared') src.push('site/patterns/' + site + '/**/' + pattern);
|
||||
|
||||
return gulp.src(src, {since: gulp.lastRun(dest)})
|
||||
.pipe(rename({dirname: ''})) // Flat hierarchy
|
||||
.pipe(gulp.dest('assets/' + dest))
|
||||
.pipe(preservetime())
|
||||
.pipe(refresh());
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Compiles the CSS file of the current site
|
||||
*/
|
||||
gulp.task('css', function() {
|
||||
return helpers.buildCSS(site);
|
||||
});
|
||||
|
||||
/**
|
||||
* Compiles and minifies the CSS file of the current site
|
||||
*/
|
||||
gulp.task('css.min', function() {
|
||||
return helpers.buildCSS(site, true);
|
||||
});
|
||||
|
||||
/**
|
||||
* Combines the JS files of the current site
|
||||
*/
|
||||
gulp.task('js', function() {
|
||||
return helpers.buildJS(site);
|
||||
});
|
||||
|
||||
/**
|
||||
* Combines and minifies the JS files of the current site
|
||||
*/
|
||||
gulp.task('js.min', function() {
|
||||
return helpers.buildJS(site, true);
|
||||
});
|
||||
|
||||
/**
|
||||
* Copies all webfonts to assets/fonts
|
||||
*/
|
||||
gulp.task('fonts', function() {
|
||||
return helpers.copyFiles(site, '*.{woff,woff2,eot}', 'fonts');
|
||||
});
|
||||
|
||||
/**
|
||||
* Copies all images to assets/img
|
||||
*/
|
||||
gulp.task('img', function() {
|
||||
return helpers.copyFiles(site, '*.{jpg,png,svg,ico}', 'img');
|
||||
});
|
||||
|
||||
/**
|
||||
* Copies prism.js components to assets/js/prism
|
||||
*/
|
||||
gulp.task('prismjs', function() {
|
||||
return gulp.src('node_modules/prismjs/components/*')
|
||||
.pipe(gulp.dest('assets/js/prism'));
|
||||
});
|
||||
|
||||
/**
|
||||
* Builds everything except the minified files for local development
|
||||
*/
|
||||
gulp.task('default', gulp.series(gulp.parallel('fonts', 'img'), gulp.parallel('css', 'js', 'prismjs')));
|
||||
|
||||
/**
|
||||
* Watches for changes
|
||||
*/
|
||||
function watchwait() {
|
||||
refresh.listen();
|
||||
|
||||
gulp.watch('site/patterns/**/*.scss', gulp.series('css'));
|
||||
gulp.watch('site/patterns/**/*.js', gulp.series('js'));
|
||||
gulp.watch('site/patterns/**/*.{woff,woff2,eot}', gulp.series('fonts'));
|
||||
gulp.watch('site/patterns/**/*.{jpg,png,svg,ico}', gulp.series('img'));
|
||||
|
||||
gulp.watch(['content/**/*.txt', 'site/**/*.{php,yml}']).on('change', refresh.changed);
|
||||
}
|
||||
gulp.task('watch', gulp.series('default', watchwait));
|
||||
|
||||
/**
|
||||
* Cleans built files
|
||||
*/
|
||||
gulp.task('clean', function() {
|
||||
return del('assets/*/*');
|
||||
});
|
||||
|
||||
/**
|
||||
* Builds everything for production
|
||||
* WARNING: Deletes some source files, only run this after committing your files
|
||||
*/
|
||||
function prodclean() {
|
||||
return del(['node_modules', 'gulpfile.js', 'site/patterns/*/', '!site/patterns/{shared,' + site + '}']);
|
||||
}
|
||||
gulp.task('prod', gulp.series('clean', gulp.parallel('fonts', 'img'), gulp.parallel('css.min', 'js.min', 'prismjs'), prodclean));
|
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
define('DS', DIRECTORY_SEPARATOR);
|
||||
|
||||
// load kirby
|
||||
require(__DIR__ . DS . 'kirby' . DS . 'bootstrap.php');
|
||||
|
||||
// check for a custom site.php
|
||||
if(file_exists(__DIR__ . DS . 'site.php')) {
|
||||
require(__DIR__ . DS . 'site.php');
|
||||
} else {
|
||||
$kirby = kirby();
|
||||
}
|
||||
|
||||
// render
|
||||
echo $kirby->launch();
|
@ -0,0 +1 @@
|
||||
Subproject commit fae381e5716a50fdc36fc8f5fa9ef9fe30e97384
|
@ -0,0 +1,22 @@
|
||||
# License of the codesignd website
|
||||
|
||||
## Kirby
|
||||
|
||||
This site is based on [Kirby CMS](https://getkirby.com). Kirby is not free. You can find Kirby's license on the [Kirby website](https://getkirby.com/license).
|
||||
|
||||
## Content
|
||||
|
||||
Copyright (c) 2016 Lukas Bestle
|
||||
|
||||
You may not use, copy, modify, merge, publish, distribute, sublicense and/or sell copies of the content from this project without explicit permission by Lukas Bestle.
|
||||
|
||||
## All other code in this repository
|
||||
|
||||
**The MIT License (MIT)**
|
||||
Copyright (c) 2016 Lukas Bestle
|
||||
|
||||
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.
|
@ -0,0 +1,28 @@
|
||||
{
|
||||
"name": "codesignd-site",
|
||||
"description": "codesignd website",
|
||||
"homepage": "https://git.codesignd.com/sites/codesignd",
|
||||
"license": "SEE LICENSE IN license.md",
|
||||
"private": true,
|
||||
|
||||
"dependencies": {
|
||||
"element-closest": "2.0.1",
|
||||
"flexismooth": "1.0.0",
|
||||
"prismjs": "1.5.1",
|
||||
"whatwg-fetch": "1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"del": "^2.2.1",
|
||||
"gulp": "gulpjs/gulp.git#4.0",
|
||||
"gulp-autoprefixer": "^3.1.0",
|
||||
"gulp-clean-css": "^2.0.12",
|
||||
"gulp-concat": "^2.6.0",
|
||||
"gulp-header": "^1.8.7",
|
||||
"gulp-include": "^2.3.1",
|
||||
"gulp-preservetime": "^1.0.0",
|
||||
"gulp-refresh": "^1.1.0",
|
||||
"gulp-rename": "^1.2.2",
|
||||
"gulp-sass": "^2.3.2",
|
||||
"gulp-uglify": "^1.5.3"
|
||||
}
|
||||
}
|
@ -0,0 +1,298 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
0rkW0xLAQiVeN+M2gyMJgUhr/d8BWK+ls28=
|
||||
=qAnb
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
@ -0,0 +1,18 @@
|
||||
# codesignd website
|
||||
|
||||
> codesignd website at codesignd.com/codesignd.de
|
||||
|
||||
This is the main repository of the codesignd website. Most of the actual code is stored in the [patterns repository](https://git.codesignd.com/sites/patterns), which is shared with other codesignd websites.
|
||||
Feel free to take a look at the code and the [pattern library](https://codesignd.com/patterns) and don't hesitate to contact me:
|
||||
|
||||
- [Email and contact form](https://codesignd.com/contact)
|
||||
- [Follow me on Twitter](https://twitter.com/lukasbestle)
|
||||
- Find me in the [Kirby Forum](https://forum.getkirby.com/users/lukasbestle)
|
||||
|
||||
## Copyright
|
||||
|
||||
ยฉ 2016 Lukas Bestle
|
||||
|
||||
## License
|
||||
|
||||
See license.md.
|
@ -0,0 +1,2 @@
|
||||
*
|
||||
!.gitignore
|
@ -0,0 +1,11 @@
|
||||
title: Contact
|
||||
pages: false
|
||||
files: false
|
||||
fields:
|
||||
title:
|
||||
label: Title
|
||||
type: text
|
||||
description:
|
||||
label: Desciption
|
||||
type: text
|
||||
icon: file-text
|
@ -0,0 +1,14 @@
|
||||
title: Page
|
||||
pages: true
|
||||
files: true
|
||||
fields:
|
||||
title:
|
||||
label: Title
|
||||
type: text
|
||||
description:
|
||||
label: Desciption
|
||||
type: text
|
||||
icon: file-text
|
||||
text:
|
||||
label: Text
|
||||
type: textarea
|
@ -0,0 +1,14 @@
|
||||
title: Homepage
|
||||
pages: false
|
||||
files: true
|
||||
fields:
|
||||
title:
|
||||
label: Title
|
||||
type: text
|
||||
description:
|
||||
label: Desciption
|
||||
type: text
|
||||
icon: file-text
|
||||
text:
|
||||
label: Text
|
||||
type: textarea
|
@ -0,0 +1,30 @@
|
||||
title: Services
|
||||
pages: false
|
||||
files: true
|
||||
fields:
|
||||
title:
|
||||
label: Title
|
||||
type: text
|
||||
description:
|
||||
label: Desciption
|
||||
type: text
|
||||
icon: file-text
|
||||
services:
|
||||
label: Services
|
||||
type: structure
|
||||
entry: >
|
||||
<strong>{{title}}</strong><br>
|
||||
{{text}}
|
||||
fields:
|
||||
title:
|
||||
label: Title
|
||||
type: text
|
||||
illustration:
|
||||
label: Illustration
|
||||
type: image
|
||||
text:
|
||||
label: Text
|
||||
type: textarea
|
||||
cta:
|
||||
label: Call to action
|
||||
type: textarea
|
@ -0,0 +1,15 @@
|
||||
title: Site
|
||||
pages: true
|
||||
files: false
|
||||
fields:
|
||||
title:
|
||||
label: Title
|
||||
type: text
|
||||
description:
|
||||
label: Desciption
|
||||
type: text
|
||||
icon: file-text
|
||||
copyright:
|
||||
label: Copyright
|
||||
type: text
|
||||
icon: copyright
|
@ -0,0 +1,2 @@
|
||||
*
|
||||
!.gitignore
|
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
// Enable debugging on the dev host but disable caching
|
||||
c::set('debug', true);
|
||||
c::set('cache', false);
|
||||
|
||||
// Disable assets suffix on the dev host
|
||||
c::set('assets.suffix', '');
|
||||
|
||||
// Language setup with dev domains
|
||||
c::set('languages', [
|
||||
[
|
||||
'code' => 'en',
|
||||
'name' => 'English',
|
||||
'default' => true,
|
||||
'locale' => 'en_US',
|
||||
'url' => 'http://codesignd.dev',
|
||||
],
|
||||
[
|
||||
'code' => 'de',
|
||||
'name' => 'Deutsch',
|
||||
'locale' => 'de_DE',
|
||||
'url' => 'http://de.codesignd.dev',
|
||||
]
|
||||
]);
|
@ -0,0 +1,3 @@
|
||||
<?php
|
||||
|
||||
require_once(__DIR__ . DS . 'config.codesignd.dev.php');
|
@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
|
||||
---------------------------------------
|
||||
License Setup
|
||||
---------------------------------------
|
||||
|
||||
Please add your license key, which you've received
|
||||
via email after purchasing Kirby on http://getkirby.com/buy
|
||||
|
||||
It is not permitted to run a public website without a
|
||||
valid license key. Please read the End User License Agreement
|
||||
for more information: http://getkirby.com/license
|
||||
|
||||
*/
|
||||
|
||||
// The license was removed for the public repository
|
||||
c::set('license', '*snip*');
|
||||
|
||||
/*
|
||||
|
||||
---------------------------------------
|
||||
Kirby Configuration
|
||||
---------------------------------------
|
||||
|
||||
By default you don't have to configure anything to
|
||||
make Kirby work. For more fine-grained configuration
|
||||
of the system, please check out http://getkirby.com/docs/advanced/options
|
||||
|
||||
*/
|
||||
|
||||
// Use production assets by default
|
||||
c::set('assets.suffix', '.min');
|
||||
|
||||
// Cache setup
|
||||
c::set('cache', true);
|
||||
c::set('cache.ignore', ['contact', 'legal']);
|
||||
|
||||
// Representations
|
||||
c::set('representations.accept', true);
|
||||
|
||||
// Language setup
|
||||
c::set('languages', [
|
||||
[
|
||||
'code' => 'en',
|
||||
'name' => 'English',
|
||||
'default' => true,
|
||||
'locale' => 'en_US',
|
||||
'url' => 'https://codesignd.com'
|
||||
],
|
||||
[
|
||||
'code' => 'de',
|
||||
'name' => 'Deutsch',
|
||||
'locale' => 'de_DE',
|
||||
'url' => 'https://codesignd.de'
|
||||
]
|
||||
]);
|
||||
|
||||
// Bar-o-mator plugin
|
||||
c::set('baromator.routes', true);
|
||||
c::set('baromator.basecolor', '#ED8F1B');
|
||||
|
||||
// Cachebuster plugin
|
||||
c::set('cachebuster', true);
|
||||
|
||||
// Patterns plugin
|
||||
c::set('patterns.title', 'codesignd Patterns');
|
||||
c::set('patterns.preview.css', ['assets/css/index.css', 'site/patterns/theme.css']);
|
||||
c::set('patterns.preview.js', 'assets/js/index.js');
|
||||
|
||||
// Serve the pattern library theme file
|
||||
c::set('routes', [
|
||||
[
|
||||
'pattern' => 'site/patterns/theme\.(:num)\.css',
|
||||
'action' => function() {
|
||||
return new Response(f::read(kirby()->roots()->site() . DS . 'patterns' . DS . 'theme.css'), 'css');
|
||||
}
|
||||
]
|
||||
]);
|
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
return function($site, $pages, $page) {
|
||||
$form = uniform('contact', [
|
||||
'required' => [
|
||||
'name' => '',
|
||||
'_from' => 'email'
|
||||
],
|
||||
'actions' => [
|
||||
[
|
||||
'_action' => 'email',
|
||||
'to' => qdated(),
|
||||
'sender' => 'codesignd form <no-reply@codesignd.de>',
|
||||
'subject' => 'Message from the contact form (' . $site->title() . ')',
|
||||
'snippet' => 'email-templates/contact'
|
||||
]
|
||||
]
|
||||
]);
|
||||
|
||||
return compact('form');
|
||||
};
|
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
l::set('nav.main.label', 'Primรคr');
|
||||
l::set('nav.lang.label', 'Sprachauswahl');
|
||||
|
||||
l::set('footer.top', 'Nach oben');
|
||||
l::set('footer.madewith', 'Erstellt mit');
|
||||
l::set('footer.source', 'Quellcode');
|
||||
|
||||
l::set('go.contact', 'โช Kontakt');
|
||||
|
||||
l::set('home-banner.learnmore', 'Mehr erfahren');
|
||||
l::set('home-banner.learnmore.label', 'Mehr รผber meine Leistungen erfahren');
|
||||
l::set('home-banner.contact', 'Kontakt');
|
||||
|
||||
l::set('contact.name', 'Name');
|
||||
l::set('contact.email', 'E-Mail-Adresse');
|
||||
l::set('contact.message', 'Nachricht');
|
||||
l::set('contact.potty', 'Bitte lasse dieses Feld leer');
|
||||
l::set('contact.submit', 'Absenden');
|
||||
l::set('contact.heading.email', 'E-Mail');
|
||||
|
||||
l::set('qdated.error', 'Bei der Anzeige der E-Mail-Adresse ist ein Fehler aufgetreten. Bitte kontaktiere mich รผber <a href="https://twitter.com/lukasbestle">Twitter</a> und mache mich darauf aufmerksam. Danke!');
|
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
l::set('nav.main.label', 'Primary');
|
||||
l::set('nav.lang.label', 'Language select');
|
||||
|
||||
l::set('footer.top', 'Top');
|
||||
l::set('footer.madewith', 'Made with');
|
||||
l::set('footer.source', 'Source');
|
||||
|
||||
l::set('go.contact', 'โช Contact');
|
||||
|
||||
l::set('home-banner.learnmore', 'Learn more');
|
||||
l::set('home-banner.learnmore.label', 'Learn more about my services');
|
||||
l::set('home-banner.contact', 'Contact');
|
||||
|
||||
l::set('contact.name', 'Name');
|
||||
l::set('contact.email', 'Email address');
|
||||
l::set('contact.message', 'Message');
|
||||
l::set('contact.potty', 'Please leave this field blank');
|
||||
l::set('contact.submit', 'Submit');
|
||||
l::set('contact.heading.email', 'Email');
|
||||
|
||||
l::set('qdated.error', 'An error occured while displaying the email address. Please contact me via <a href="https://twitter.com/lukasbestle">Twitter</a> and tell me about this. Thank you!');
|
@ -0,0 +1 @@
|
||||
Subproject commit f9c5f3db5a8cbb3d25e1a84c19b7c56d73b71422
|
@ -0,0 +1 @@
|
||||
Subproject commit cfe2ef2c4cb94f7e1e2bb244427e18569f19bed5
|
@ -0,0 +1 @@
|
||||
Subproject commit eb92317c13603859d298b554a88656cdcdc38f17
|
@ -0,0 +1 @@
|
||||
Subproject commit 3e1d562073062a44395d49d2f8d3e2a9b8fae10a
|
@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Returns the current qdated address
|
||||
* If qdated is not available, returns null
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function qdated() {
|
||||
$path = $_SERVER['HOME'] . DS . '.qdated-current';
|
||||
if(!is_file($path)) return null;
|
||||
|
||||
return 'dated-' . trim(f::read($path)) . '@' . url::host();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an HTML a mailto tag with the current qdated address
|
||||
* If qdated is not available, returns an HTML error message
|
||||
*
|
||||
* @param mixed $text Optional text for the link
|
||||
* Can also be true to use the email
|
||||
* address but put a line break in it
|
||||
* @return string HTML code
|
||||
*/
|
||||
function qdatedHtml($text = false) {
|
||||
$email = qdated();
|
||||
if(!$email) return '<p><strong>' . l::get('qdated.error') . '</strong></p>';
|
||||
|
||||
if($text === true) $text = str_replace('@', '<br>@', $email);
|
||||
return str::email($email, $text);
|
||||
}
|
||||
|
||||
/**
|
||||
* qdated Kirbytag
|
||||
*
|
||||
* Usage: (qdated: Optional link text)
|
||||
*/
|
||||
kirby()->set('tag', 'qdated', [
|
||||
'html' => function($tag) {
|
||||
return qdatedHtml($tag->attr('qdated'));
|
||||
}
|
||||
]);
|
@ -0,0 +1 @@
|
||||
Subproject commit 26f17b120bd2f1a250c7639a9a6ae9119b33b937
|
@ -0,0 +1,6 @@
|
||||
Name: <?= a::get($form, 'name') . "\n" ?>
|
||||
Email: <?= a::get($form, '_from') . "\n" ?>
|
||||
|
||||
----
|
||||
|
||||
<?= a::get($form, 'message') ?>
|
@ -0,0 +1,4 @@
|
||||
<?php pattern('shared/2-blocks/footer', ['pSite' => 'codesignd']) ?>
|
||||
<?= js('assets/js/index' . c::get('assets.suffix') . '.js') ?>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="<?= $site->language()->code() ?>">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title><?= $page->title()->html() ?> ~ <?= $site->title()->html() ?></title>
|
||||
<meta name="description" content="<?= $page->description()->or($site->description()) ?>">
|
||||
|
||||
<link rel="icon" href="<?= url('assets/img/favicon-96.png') ?>" type="image/png">
|
||||
<link rel="apple-touch-icon-precomposed" href="<?= url('assets/img/favicon-152.png') ?>">
|
||||
|
||||
<?php foreach($site->languages()->filterBy('code', '!=', $site->language()->code()) as $lang): ?>
|
||||
<link rel="alternate" href="<?= $page->url($lang->code()) ?>" hreflang="<?= $lang->code() ?>">
|
||||
<?php endforeach ?>
|
||||
<link rel="pgpkey" type="application/pgp-keys" href="<?= url('pgp.asc') ?>">
|
||||
|
||||
<link rel="preload" href="<?= url('assets/fonts/input-sans-narrow-regular.woff2') ?>" as="font" type="font/woff2" crossorigin>
|
||||
|
||||
<?php if($suffix = c::get('assets.suffix')): ?>
|
||||
<style><?= f::read('assets/css/index' . $suffix . '.css') ?></style>
|
||||
<?php else: ?>
|
||||
<?= css('assets/css/index.css') ?>
|
||||
<?php endif ?>
|
||||
</head>
|
||||
<body id="top">
|
||||
<?php pattern('shared/2-blocks/header', [
|
||||
'pSite' => 'codesignd',
|
||||
'navData' => ['languages' => $site->languages(), 'items' => $site->pages()->visible()]
|
||||
]) ?>
|
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
pattern('shared/2-blocks/nav', [
|
||||
'wrapper' => false,
|
||||
'languages' => $site->languages(),
|
||||
'items' => $site->pages()->visible()
|
||||
]);
|
@ -0,0 +1,52 @@
|
||||
<article class="text">
|
||||
<h1><?= html($page->title()) ?></h1>
|
||||
|
||||
<div class="contact">
|
||||
<div class="contact__main">
|
||||
<form class="contact__form form<?php e($form->successful(), ' form--success') ?>" action="<?= url::current() ?>" method="post">
|
||||
<div class="field field--required field--small">
|
||||
<label class="field__label" for="name"><?= l::get('contact.name', 'Name') ?></label>
|
||||
<input class="input field__input<?php e($form->hasError('name'), ' input--invalid') ?>" type="text" name="name" id="name" value="<?php $form->echoValue('name') ?>" placeholder=" " autocomplete="name" required/>
|
||||
</div>
|
||||
|
||||
<div class="field field--required field--small">
|
||||
<label class="field__label" for="email"><?= l::get('contact.email', 'Email address') ?></label>
|
||||
<input class="input field__input<?php e($form->hasError('_from'), ' input--invalid') ?>" type="email" name="_from" id="email" value="<?php $form->echoValue('_from') ?>" placeholder=" " autocomplete="email" required/>
|
||||