Compare commits

...

12 Commits

  1. 17
      .babelrc
  2. 34
      .eslintrc.json
  3. 315
      .gitignore
  4. 33
      README.md
  5. 9
      auth/access
  6. 23
      auth/marketmind.pem
  7. 20
      components/ambassador/ambassador.html
  8. 5
      components/ambassador/ambassador.js
  9. 37
      components/ambassador/ambassador.scss
  10. 13
      components/footer/footer.html
  11. 5
      components/footer/footer.js
  12. 18
      components/footer/footer.scss
  13. 38
      components/header/header.html
  14. 5
      components/header/header.js
  15. 121
      components/header/header.scss
  16. 11
      components/info/info.html
  17. 5
      components/info/info.js
  18. 20
      components/info/info.scss
  19. 26
      components/questions/questions.html
  20. 5
      components/questions/questions.js
  21. 26
      components/questions/questions.scss
  22. 40
      components/register/register.html
  23. 5
      components/register/register.js
  24. 85
      components/register/register.scss
  25. 17
      components/teacher/teacher.html
  26. 5
      components/teacher/teacher.js
  27. 34
      components/teacher/teacher.scss
  28. 4
      components/test/test.html
  29. 5
      components/test/test.js
  30. 6
      components/test/test.scss
  31. 18
      comps.sh
  32. 17
      deploy.sh
  33. BIN
      images/anes.png
  34. 9
      images/anes.svg
  35. BIN
      images/b2bacademy.png
  36. 82
      images/b2bacademy.svg
  37. BIN
      images/bgquestions.png
  38. BIN
      images/header.png
  39. BIN
      images/logoWP.png
  40. BIN
      images/marketmind.png
  41. 9
      images/marketmind.svg
  42. BIN
      images/people.png
  43. BIN
      images/teacher.png
  44. 56
      package.json
  45. 53
      pages/index.ejs
  46. 13
      postcss.config.js
  47. BIN
      src/fonts/icomoon.eot
  48. 15
      src/fonts/icomoon.svg
  49. BIN
      src/fonts/icomoon.ttf
  50. BIN
      src/fonts/icomoon.woff
  51. 1
      src/fonts/selection.json
  52. 49
      src/js/index.js
  53. 10
      src/js/jquery.ihavecookies.min.js
  54. 1
      src/scss/fonts.scss
  55. 230
      src/scss/forms.scss
  56. 170
      src/scss/global.scss
  57. 42
      src/scss/icons.scss
  58. 20
      src/scss/main.scss
  59. 69
      src/scss/mixins.scss
  60. 88
      src/scss/variables.scss
  61. 130
      webpack.config.js

17
.babelrc

@ -0,0 +1,17 @@
{
"presets": [
["@babel/preset-env", {
"targets": {
"browsers": [
"last 2 versions",
"ie >= 10"
]
},
"useBuiltIns": "entry"
}]
],
"plugins": [
["transform-class-properties", { "spec": true }],
"transform-object-assign"
]
}

34
.eslintrc.json

@ -0,0 +1,34 @@
{
"extends": [
"google",
"prettier"
],
"plugins": [
"prettier"
],
"parser": "babel-eslint",
"parserOptions": {
"sourceType": "module"
},
"env": {
"es6": true,
"node": true
},
"rules": {
"comma-dangle": [2,"never"],
"no-invalid-this": 0,
"require-jsdoc": 0,
"max-len": ["error", { "code": 120 }],
"object-curly-spacing": ["error", "never"],
"array-bracket-spacing": ["error", "never"],
"computed-property-spacing": ["error", "never"],
"semi": ["error", "always"],
"arrow-parens": ["error", "always"],
"no-mixed-spaces-and-tabs": "error",
"indent": ["error", 2],
"no-trailing-spaces": "error"
}
}

315
.gitignore

@ -0,0 +1,315 @@
# Cache, temp and personal files
/.htaccess
*.log
npm-debug.log.*
.sass-cache/
# Cache
/cache/*
!/cache/.htaccess
!/cache/cachefs/index.php
!/cache/deprecated.txt
!/cache/index.php
!/cache/purifier/index.php
!/cache/push/activity
!/cache/push/index.php
!/cache/push/trends
!/cache/sandbox/index.php
!/cache/smarty/cache/index.php
!/cache/smarty/compile/index.php
!/cache/smarty/index.php
!/cache/tcpdf/index.php
# Download
/download/*
!/download/.htaccess
!/download/index.php
# Images
/img/*
!/img/.htaccess
!/img/index.php
!/img/404.gif
!/img/bg_500.png
!/img/bg_loader.png
!/img/favicon.ico
!/img/loader.gif
!/img/loadingAnimation.gif
!/img/logo.jpg
!/img/logo.png
!/img/logo_invoice.jpg
!/img/logo_stores.png
!/img/macFFBgHack.png
!/img/prestashop-avatar.png
!/img/prestashop@2x.png
!/img/preston-login-wink@2x.png
!/img/preston-login@2x.png
!/img/questionmark.png
!/img/genders/index.php
!/img/admin/index.php
!/img/c/index.php
!/img/cms/index.php
!/img/co/index.php
!/img/jquery-ui
!/img/l/index.php
!/img/m/index.php
!/img/os/index.php
!/img/p/index.php
!/img/s/index.php
!/img/scenes
!/img/st/index.php
!/img/su/index.php
!/img/t/index.php
!/img/tmp/index.php
# Upload
/upload/*
!/upload/.htaccess
/vendor/*
/docs/phpdoc-sf/
/composer.lock
/tests/Selenium/errorShots/
!/tests/Selenium/errorShots/.gitkeep
/tests/Selenium/errorDumps/
!/tests/Selenium/errorDumps/.gitkeep
*.hot-update.js
*.hot-update.json
tests-legacy/resources/modules/followup/
tests-legacy/resources/modules/ps_emailalerts/
tests-legacy/resources/modules/ps_emailsubscription/mails/
tests-legacy/resources/modules/referralprogram/
/admin-dev/autoupgrade/*
!/admin-dev/autoupgrade/index.php
!/admin-dev/autoupgrade/backup/index.php
/admin-dev/backups/*
!/admin-dev/backups/.htaccess
/admin-dev/import/*
!/admin-dev/import/.htaccess
!/admin-dev/import/index.php
/admin-dev/export/*
!/admin-dev/export/.htaccess
!/admin-dev/export/index.php
themes/*/cache/*
# Config
config/settings.inc.php
config/settings.old.php
config/xml/*
config/themes/*
!config/xml/themes/default.xml
tests/Selenium/settings.js
themes/*/config/settings_*.json
app/config/parameters.old.yml
app/config/config.php
# Themes, modules and overrides
modules/*
!modules/hos*
!modules/creativeelements
!modules/amazzingfilter
!modules/addtofavoritesmywishlist
!override/*
!override/controllers/front/*
!override/classes/ObjectModel.php
themes/*/
!themes/classic
!themes/classic-fork
!themes/_core
!themes/_libraries
# Vendors and dependencies
bower_components/
node_modules/
composer.phar
php-cs-fixer
.grunt/*
# Translations and emails templates
translations/*
mails/*
!mails/en/
!mails/themes/
themes/default-bootstrap/lang/*
themes/default-bootstrap/modules/*/translations/*.php
themes/default-bootstrap/mails/*
!themes/default-bootstrap/mails/en/
themes/default-bootstrap/modules/*/mails/*
!themes/default-bootstrap/modules/*/mails/en
# MISC
*sitemap.xml
/robots.txt
# Symfony
/bin/
/.web-server-pid
/app/Resources/geoip/GeoLite2-City.mmdb
/app/Resources/translations/*
!/app/Resources/translations/default
/app/config/parameters.yml
/app/config/parameters.php
/build/
/phpunit.xml
/var/*
!/var/cache
/var/cache/*
!var/cache/.gitkeep
!/var/logs
/var/logs/*
!var/logs/.gitkeep
!/var/sessions
/var/sessions/*
!var/sessions/.gitkeep
!var/SymfonyRequirements.php
/vendor/
/web/bundles/
# Created by https://www.gitignore.io/api/linux,osx,windows,sublimetext,phpstorm
### Linux ###
*~
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
### OSX ###
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### Windows ###
# Windows image file caches
Thumbs.db
ehthumbs.db
# Folder config file
Desktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msm
*.msp
# Windows shortcuts
*.lnk
### SublimeText ###
# cache files for sublime text
*.tmlanguage.cache
*.tmPreferences.cache
*.stTheme.cache
# workspace files are user-specific
*.sublime-workspace
# project files should be checked into the repository, unless a significant
# proportion of contributors will probably not be using SublimeText
# *.sublime-project
# sftp configuration file
sftp-config.json
### PhpStorm ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio
*.iml
## Directory-based project format:
.idea/
## File-based project format:
*.ipr
*.iws
## Plugin-specific files:
# IntelliJ
/out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
### NetBeans ###
nbproject/private/
/build/
nbbuild/
dist/
nbdist/
nbactions.xml
nb-configuration.xml
.nb-gradle/
### Eclipse ###
.buildpath
.project
.settings/
.externalToolBuilders/
### Release creation ###
tools/build/releases/*
!tools/build/releases/.gitkeep
node_modules/
public/
package-lock.json
img/
docs/

33
README.md

@ -1 +1,32 @@
anes
# Anes academy
#### Install dependencies
```bash
npm install
```
#### Build in development mode
```bash
npm run dev
```
#### Build in production mode
```bash
npm run prod
```
#### Build in production mode
```bash
npm run prod
```
#### Preview
```bash
npm run preview
```

9
auth/access

@ -0,0 +1,9 @@
ubuntu@3.94.203.176
ubuntu@18.194.83.82
CoZE
M4rk37Mind!
admin C0z3l4bsPwd!

23
auth/marketmind.pem

@ -0,0 +1,23 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAwIaPYPemuR3j3uyc6uT7HmTCEotVl1nDI41QVuF9rYFA4oL3ET45NAzWuZPB
7F2zeOMpjU3KtiNvMb1qR/a8gQHceI9wOWfq6r8IOxm/r+ZKtoBbsQg/ygfmKtNJ1NcsUIGVhv1G
4buoOaU65UbATO8uXC6zmuwk/q7VnXRcoequqnXhg06TBeIFGtf92BxUdjUAEDpHyN11d0zDVN7N
SRyvt93YSusB3UVPlds9le0xqOIXEMQzvCheqODLGpW0CR1sq02SmwAzvosBiMB4PHYlpkHptGXt
MujSjzIJE2PrlM4ZOYLMqSUk62qh7vnFMaOb/GtN1wo8uh10qIkfuwIDAQABAoIBADwsEjXpURd8
axLqeuTDamUGcs2e9MJYELBU4240DbajtibVbejavMAy3w2jS7HXW1eGEB+U161zh7ZREB2r1SCw
9zpLAnU+sGJsEGOAWbPdUy6VEZNUE7POIjbyUJoQIk6LIbPOB1BX+W0C4lR0d3fULXYsNoBOHAXp
mOQcUTNdfY3imXMTQkx+wKPyp7VW7MN1uHowFU039HPy4BSxKtGrMXvt7vm8OzWzqUp5sYMZGIcK
Hi5s1wo9vzaqXJgMuqAPvFnLrx/wF+EYfUcjBZVck6Oy3CbB2O8z2XUlkeGzFrXHYgyvi//GXNQz
sABkGmvWazwdlNlFzz5y7bOy5hkCgYEA9F+svyPFcdkO0Xdx/MWaS6ghtaCRoTiGx1Zlx6jtVDEB
jYIL9oOKjGACCxyTo1cLvh0WTf2J9KWhCYS3GQEaTkG+EUA5HIob2m9Khvhbbgtlmb0O+U2mMTT9
5GHyrCGGMWqdUvQQArjhDoKxDos5NDJAty34x+jfDXIyQ+xS9a0CgYEAya9oEb4AHrdN2DSWA5Ju
aTYHcXtJnvYO2EYHvYx1D1L/SSpdxm/crc6QoZiM4UmvGdUgkf0nzkp/ql+ln9JzbYSNgffvEVKt
++7y6RPYwFkBvHZ/PgUQM4+sjmdATNGb1OzPlBC2DtMNoB6N55OLPTK34WND7jEgKtdCEDHTCAcC
gYBr0WaTMoIjt+PM0Uluf/SSmsy8qOp32kvE2T6wt7x2X+TSfWUvz1uqkZV1N5eAAqDAsW6s3Eco
tIb3fyGVm6Hykxj73X0VNW4SkvWr1Rnp1IdwLDTWE8dWgI3gXMLH5UaiuOpOtjX2LYHGeC0MQKrt
d5qL93GDKiB3e0HoK/VyRQKBgCYKQH3AMXOZrUQPPxAzaUHM4ACGeW9TB5/BLaqRuG6IgAADzqYj
6SKbKGpiRIglhrI/oaIHdp+RK50t5yZK4lyQuMP/yIai6o/vFL/jb2lwIES0sPE4sUKYYbqGPPmA
O30goVJTCJOpOROvT6KTEJsdWtNXDrP5bhDGgv5c92m3AoGASrDKqIP5kazJy0wQWw/C2iE3qsMb
b/WSt64yOq7OLZlSCh+7P1K3X4ecqfy1fVfQ7rvM35tJiNNhspqZsEmsZg09m4h6jzYLuxNs2+I7
65M3yOcbEixRdXKiv2PBBRK5qfMOogkRIEY4ZPzC32LXVgi8qYvxPMqfBBS12BsNSFY=
-----END RSA PRIVATE KEY-----

20
components/ambassador/ambassador.html

@ -0,0 +1,20 @@
<div class="component-ambassador">
<div class="row container mx-auto">
<div class="col-10 col-md-6 mx-auto mr-md-0 my-4">
<h3 class="title">Diventa nostro ambassador</h3>
<div class="row">
<div class="col-12 col-md-8">
<span class="subtitle">In palio 2 borse di studio a copertura totale.</span>
<p class="text">
Compila la lettera di motivazione e rispondi alle nostre domande, puoi vincere un free-pass per la masterclass.
</p>
<a href="/docs/Borsa_di_studio.docx" target="_blank" class="button button-blue mt-4">Compila e invia la candidatura</a>
</div>
</div>
</div>
<div class="col-12 col-md-5 mx-auto mx-md-0 mt-4 mb-3 mt-md-0 mb-md-0">
<img class="image" src="/images/people.png">
</div>
</div>
</div>

5
components/ambassador/ambassador.js

@ -0,0 +1,5 @@
$(document).ready( () => {
console.log('Load component - ambassador')
})

37
components/ambassador/ambassador.scss

@ -0,0 +1,37 @@
@import "../../src/scss/variables.scss";
@import "../../src/scss/mixins.scss";
.component-ambassador {
background: $light-grey;
.title {
display: block;
font-size: $font-48;
font-weight: normal;
color: $blue;
padding: 0 0 30px 0;
}
.subtitle {
display: block;
font-size: $font-18;
font-weight: bold;
color: $dark-grey;
padding-bottom: 10px;
}
.text {
display: block;
font-size: $font-18;
font-weight: normal;
color: $dark-grey;
padding-bottom: 10px;
margin: 0;
}
.image {
object-fit: cover;
width: 100%;
height: 100%;
}
}

13
components/footer/footer.html

@ -0,0 +1,13 @@
<div class="component-footer">
<div class="row container mx-auto">
<div class="col-6 col-md-2 ml-auto d-flex">
<img class="image ml-auto" src="/images/anes.svg">
</div>
<div class="col-6 col-md-2 mr-auto d-flex">
<img class="image mr-auto" src="/images/marketmind.svg">
</div>
<div class="col-12 text">
Copyright 2020 - ANES - Via Crocefisso, 5, 20122 Milano. Per info: <a href="mailto:anes@anes.it">anes@anes.it</a>
</div>
</div>
</div>

5
components/footer/footer.js

@ -0,0 +1,5 @@
$(document).ready( () => {
console.log('Load component - footer')
})

18
components/footer/footer.scss

@ -0,0 +1,18 @@
@import "../../src/scss/variables.scss";
@import "../../src/scss/mixins.scss";
.component-footer {
background: $light-grey;
padding: 30px 0;
.text {
display: block;
font-size: $font-14;
font-weight: normal;
color: $dark-grey;
text-align: center;
padding: 30px 0 10px 0;
}
}

38
components/header/header.html

@ -0,0 +1,38 @@
<header class="component-header">
<div class="row container mx-auto">
<div class="col-10 col-md-5 mx-auto ml-md-auto mr-md-0">
<div class="row">
<div class="col-6 col-md-5 p-3 text-center">
<img class="image" src="/images/b2bacademy.png">
</div>
<div class="col-4 col-sm-3 col-md-4 mx-auto p-3 text-center">
<p class="font-12 m-0">PARTNER</p>
<img class="image my-2 px-2 px-sm-0" src="/images/anes.png">
<img class="image my-2" src="/images/marketmind.png">
</div>
<div class="col-12">
<p class="suptitle">Corso online</p>
<h1 class="title">
Intelligenza Artificiale per il marketing aziendale
</h1>
<p class="subtitle">Masterclass</p>
<p class="text">
La masterclass in Intelligenza Artificiale per il business è composta da una sessione di formazione a distanza in cui imparerai a comprendere e utilizzare le nuove tecnologie di A.I. per migliorare le azioni di marketing e aumentare le vendite. Grazie a tecnologie economiche e pronte all'uso potrai raggiungere più clienti, automatizzare le attività più ripetitive e creare prodotti più efficaci. L'intera Masterclass si terrà online con un docente dedicato che ti seguirà durante tutto il percorso.
</p>
</div>
</div>
</div>
<div class="col-6 d-none d-md-block">
<img class="image" src="/images/header.png">
</div>
</div>
<div class="line">
<div class="container mx-auto d-block d-md-flex py-2">
<span class="line-text ml-md-auto my-auto">CODICE SCONTO PER ISCRIZIONI ANTICIPATE 53%: </span>
<span class="code ml-md-2 mr-md-auto my-auto">YFR3643</span>
</div>
</div>
</header>

5
components/header/header.js

@ -0,0 +1,5 @@
$(document).ready( () => {
console.log('Load component - header')
})

121
components/header/header.scss

@ -0,0 +1,121 @@
@import "../../src/scss/variables.scss";
@import "../../src/scss/mixins.scss";
.component-header {
width: 100%;
background: $light-grey;
.image {
width: 100%;
}
.title {
display: block;
font-size: $font-40;
font-weight: 300;
line-height: 45px;
color: $blue;
padding: 10px 0 5px 0;
margin: 0;
&:after {
display: block;
content: '';
height: 2px;
margin-top: 20px;
width: 100%;
background: linear-gradient(to right, $blue, $light-grey);
}
}
.suptitle {
font-size: $font-18;
font-weight: bold;
line-height: 20px;
color: $black;
padding: 25px 0 0 0;
margin: 0;
text-transform: uppercase;
}
.subtitle {
font-size: $font-18;
font-weight: bold;
line-height: 20px;
color: $dark-grey;
padding: 25px 0;
margin: 0;
text-transform: uppercase;
}
.text {
font-size: $font-18;
font-weight: normal;
line-height: 25px;
padding-bottom: 50px;
margin: 0;
color: $dark-grey;
}
.line {
background: $yellow;
min-height: 70px;
text-align: center;
.container {
min-height: 70px;
.line-text {
display: inline-block;
color: $black;
font-size: $font-18;
text-transform: uppercase;
font-weight: normal;
padding: 20px 0;
}
.code {
display: inline-block;
color: $black;
font-size: $font-32;
font-weight: bold;
}
}
}
}
@media (min-width: map-get($grid-breakpoints, 'md')) {
.component-header {
.title {
//font-size: $font-50;
//line-height: 60px;
font-size: $font-44;
line-height: $font-50;
}
.subtitle {
//font-size: $font-18;
font-size: $font-16;
padding-bottom: 15px;
}
.text {
//font-size: $font-18;
font-size: $font-16;
}
.line {
.container {
.line-text {
font-size: $font-18;
}
.code {
font-size: $font-32;
}
}
}
}
}

11
components/info/info.html

@ -0,0 +1,11 @@
<div class="component-info">
<div class="row container mx-auto">
<div class="col-10 col-md-6 mx-auto text-center">
<h3 class="title">Hai bisogno di ulteriori informazioni?</h3>
<p class="text">
Fabiola Iannaccone di Anes è a tua disposizione:<br>
scrivi all'indirizzo <a href="mailto:anes@anes.it">anes@anes.it</a>
</p>
</div>
</div>
</div>

5
components/info/info.js

@ -0,0 +1,5 @@
$(document).ready( () => {
console.log('Load component - info')
})

20
components/info/info.scss

@ -0,0 +1,20 @@
@import "../../src/scss/variables.scss";
@import "../../src/scss/mixins.scss";
.component-info {
.title {
display: block;
font-size: $font-32;
font-weight: bold;
color: $blue;
padding: 30px 0;
}
.text {
display: block;
font-size: $font-20;
font-weight: normal;
color: $dark-grey;
padding-bottom: 20px;
}
}

26
components/questions/questions.html

@ -0,0 +1,26 @@
<div class="component-questions">
<div class="row container mx-auto">
<div class="col-10 col-md-6 mx-auto text-center">
<h3 class="title">Alcune domande a cui saprai rispondere</h3>
<p class="item">
Cosa sono l'Intelligenza Artificiale e il Machine Learning?
</p>
<p class="item">
Come sfruttare l'Intelligenza Artificiale per aumentare le vendite?
</p>
<p class="item">
Dove reperire la <b>tecnologia necessaria</b> per sviluppare un primo progetto di AI?
</p>
<p class="item">
Quali sono le <b>metodologie</b> che consentono di prototipare rapidamente proof-of-concept con poco effort e poco budget?
</p>
<p class="item">
Qual è il <b>processo di adozione</b> che dovrei seguire per gestire l'implementazione di un primo progetto di AI?
</p>
<p class="item">
Come l'AI può consentire di aiutare nel <b>funnel di vendita o di marketing</b>?
</p>
</div>
</div>
</div>

5
components/questions/questions.js

@ -0,0 +1,5 @@
$(document).ready( () => {
console.log('Load component - questions')
})

26
components/questions/questions.scss

@ -0,0 +1,26 @@
@import "../../src/scss/variables.scss";
@import "../../src/scss/mixins.scss";
.component-questions {
background-image: url(/images/bgquestions.png);
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
padding: 40px 0;
.title {
display: block;
font-size: $font-32;
font-weight: bold;
color: $blue;
padding: 40px 0;
}
.item {
display: block;
font-size: $font-20;
font-weight: normal;
color: $dark-grey;
padding-bottom: 20px;
}
}

40
components/register/register.html

@ -0,0 +1,40 @@
<div class="component-register">
<div class="row mx-auto">
<div class="col-10 col-md-5 pt-5 mx-auto ml-md-auto mr-md-0 order-1 order-md-0">
<div class="item">
<span class="icon icon-marker"></span>
<span class="title">Completamente on-line</span>
</div>
<div class="item">
<span class="icon icon-calendar"></span>
<span class="title">10 DICEMBRE 2020 (9.30-13.00)</span>
</div>
<div class="item">
<span class="icon icon-hourglass"></span>
<span class="title">Una sessione da 3 ore e mezza di lezioni frontali in diretta e workshop</span>
</div>
<div class="item">
<span class="icon icon-tag"></span>
<span class="title">EARLY BIRD: 69€ (-53% OFFERTA)</span>
<span class="subtitle">Registrazioni fino al 10/11/2020</span>
<span class="title mt-2">ADVANCED: 149€ </span>
<span class="subtitle">Registrazioni dal 11/11/2020</span>
</div>
<a href="https://www.eventbrite.it/e/biglietti-intelligenza-artificiale-per-il-marketing-aziendale-126981333587" target="_blank" class="button button-blue mt-4">Registrati subito su EventBrite</a>
</div>
<div class="list col-10 col-md-4 mx-auto">
<h3 class="title">A chi è rivolto</h3>
<p class="subtitle">La Masterclass è dedicata a:​</p>
<span class="list-item">
Marketing manager, responsabili marketing, imprenditori e decision maker​ che desiderano comprendere e sfruttare il nuovo trend tecnologico dell'Intelligenza Artificiale da un punto di vista business e organizzativo.
</span>
<span class="list-item">
Professionisti del settore IT che desiderano comprendere le metodologie di adozione e come analizzare e valutare i business case abilitati da tecnologie di Intelligenza Artificiale.
</span>
<span class="list-item">
Chiunque voglia diventare una figura di riferimento all'interno della propria società/startup per tutte le tematiche inerenti all'Intelligenza Artificiale.
</span>
</div>
</div>
</div>

5
components/register/register.js

@ -0,0 +1,5 @@
$(document).ready( () => {
console.log('Load component - register')
})

85
components/register/register.scss

@ -0,0 +1,85 @@
@import "../../src/scss/variables.scss";
@import "../../src/scss/mixins.scss";
.component-register {
.item {
position: relative;
display: block;
padding: 15px 0;
border-bottom: 1px solid $light-grey;
&:last-of-type {
border-bottom: none;
}
.icon {
position: absolute;
display: block;
color: $blue;
font-size: $font-20;
line-height: 25px;
}
.title {
display: block;
font-size: $font-18;
font-weight: normal;
color: $dark-grey;
text-transform: uppercase;
padding-left: 40px;
}
.subtitle {
display: block;
font-size: $font-14;
font-weight: normal;
color: $dark-grey;
text-transform: uppercase;
padding-left: 40px;
}
}
.list {
.title {
display: block;
font-size: $font-32;
font-weight: bold;
color: $blue;
&:after {
display: block;
content: '';
height: 2px;
margin-top: 20px;
width: 100%;
background: linear-gradient(to right, $blue, $light-grey);
}
}
.subtitle {
display: block;
font-size: $font-16;
font-weight: bold;
color: $dark-grey;
padding-top: 20px;
}
.list-item {
position: relative;
display: block;
font-size: $font-18;
font-weight: normal;
color: $dark-grey;
padding: 0 20px 20px 40px;
&:before {
content: '\e901';
position: absolute;
left: 0;
font-family: $icon;
font-size: $font-20;
color: $blue;
}
}
}
}

17
components/teacher/teacher.html

@ -0,0 +1,17 @@
<div class="component-teacher">
<div class="row">
<div class="col-10 col-md-4 mx-auto ml-md-auto mr-md-0 d-flex">
<img class="image mx-auto my-auto" src="/images/teacher.png">
</div>
<div class="col-10 col-md-5 mx-auto mr-md-auto ml-md-0">
<h3 class="title">Docente</h3>
<span class="subtitle">Fabio Foglia</span>
<p class="text">
È un co-founder e partner di MarketMind Research e nella sua carriera ha aiutato numerose organizzazioni (tra cui banche, società di assicurazioni, ospedali e università) a implementare progetti di Intelligenza Artificiale e predictive analytics.
</p>
<p class="text">
È attualmente docente a contratto presso l'Università Luigi Bocconi e presso la scuola d'innovazione Talent Garden dove si occupa di Intelligenza Artificiale applicata. Durante l'intera masterclass ti aiuterà a comprendere la rivoluzione dell'A.I. grazie a simulazioni, workshop e analisi di business case reali.
</p>
</div>
</div>
</div>

5
components/teacher/teacher.js

@ -0,0 +1,5 @@
$(document).ready( () => {
console.log('Load component - teacher')
})

34
components/teacher/teacher.scss

@ -0,0 +1,34 @@
@import "../../src/scss/variables.scss";
@import "../../src/scss/mixins.scss";
.component-teacher {
.image {
width: 60%
}
.title {
display: block;
font-size: $font-48;
font-weight: normal;
color: $blue;
padding: 40px 0 20px 0;
}
.subtitle {
display: block;
font-size: $font-22;
font-weight: bold;
color: $dark-grey;
padding-bottom: 20px;
}
.text {
display: block;
font-size: $font-18;
font-weight: normal;
color: $dark-grey;
padding-bottom: 20px;
margin: 0;
}
}

4
components/test/test.html

@ -0,0 +1,4 @@
<div class="component-test">
<div class="row no-gutters">
</div>
</div>

5
components/test/test.js

@ -0,0 +1,5 @@
$(document).ready( () => {
console.log('Load component - test')
})

6
components/test/test.scss

@ -0,0 +1,6 @@
@import "../../src/scss/variables.scss";
@import "../../src/scss/mixins.scss";
.component-test {
}

18
comps.sh

@ -0,0 +1,18 @@
COMPDIR="components/$2"
if [ ${1} = "add" ]
then
mkdir $COMPDIR
printf "<div class=\"component-$2\">\n <div class=\"row no-gutters\">\n </div>\n</div>" > "$COMPDIR/$2.html"
printf "@import \"../../src/scss/variables.scss\";\n@import \"../../src/scss/mixins.scss\";\n \n.component-$2 {\n\n}" > "$COMPDIR/$2.scss"
printf "\n\$(document).ready( () => {\n console.log('Load component - $2')\n\n})" > "$COMPDIR/$2.js"
echo "@import \"./components/$2/$2.scss\";" >> src/scss/main.scss
fi
if [ ${1} = "del" ]
then
rm -rf $COMPDIR
sed -i "\/$2\/$2.scss/d" src/scss/main.scss
fi

17
deploy.sh

@ -0,0 +1,17 @@
#!/bin/bash
BASE="http://www.anesacademy.com/"
BASE_PARSED=$(echo $BASE | sed 's/\//\\\//g')
cd public
for f in *.html
do
sed -i "s/href\=\"\//href\=\"$BASE_PARSED/g" "$f"
sed -i "s/src\=\"\//src\=\"$BASE_PARSED/g" "$f"
sed -i "s/src\=\"\.\//src\=\"$BASE_PARSED/g" "$f"
done
cd ..
#scp -r -i ./auth/marketmind.pem ./public/* ubuntu@18.194.83.82:/var/www/anesacademy.com/
rsync -avz --delete -e "ssh -i ./auth/marketmind.pem" ./public/* ubuntu@18.194.83.82:/var/www/anesacademy.com/

BIN
images/anes.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

9
images/anes.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.2 KiB

BIN
images/b2bacademy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

82
images/b2bacademy.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

BIN
images/bgquestions.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 KiB

BIN
images/header.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 KiB

BIN
images/logoWP.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
images/marketmind.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

9
images/marketmind.svg

@ -0,0 +1,9 @@
<svg width="104" height="38" viewBox="0 0 104 38" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<rect width="104" height="38" fill="url(#pattern0)"/>
<defs>
<pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
<use xlink:href="#image0" transform="translate(-0.00052687) scale(0.00500527 0.0136986)"/>
</pattern>
<image id="image0" width="200" height="73" xlink:href="data:image/png;base64,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"/>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
images/people.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 KiB

BIN
images/teacher.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 KiB

56
package.json

@ -0,0 +1,56 @@
{
"name": "anes",
"version": "1.0.0",
"description": "ANES",
"main": "index.js",
"repository": "git@2.238.194.8:2222/git/anes.git",
"scripts": {
"dev": "nodemon --watch webpack.config.js --exec \"webpack --config webpack.config.js --watch --progress --mode development\"",
"prod": "webpack --config webpack.config.js --mode none --env.prod",
"deploy": "sh deploy.sh",
"add-comp": "sh ./comps.sh add",
"del-comp": "sh ./comps.sh del",
"preview": "http-server",
"clean": "rm -rf ./node_modules ./public ./package-lock.json"
},
"author": "Dslak",
"license": "MIT",
"dependencies": {
"@babel/core": "^7.9.0",
"@babel/preset-env": "^7.9.0",
"autoprefixer": "^9.7.6",
"babel-eslint": "^10.1.0",
"babel-loader": "^8.1.0",
"babel-plugin-transform-class-properties": "^6.24.1",
"babel-plugin-transform-object-assign": "^6.22.0",
"babel-preset-env": "^1.7.0",
"base-href-webpack-plugin": "^2.0.0",
"bootstrap": "^4.3.1",
"copy-webpack-plugin": "^6.2.1",
"css-loader": "^3.5.1",
"es6-promise-promise": "^1.0.0",
"eslint": "^6.0.1",
"eslint-config-google": "^0.13.0",
"eslint-config-prettier": "^6.10.1",
"eslint-plugin-prettier": "^3.1.0",
"extract-loader": "^3.1.0",
"file-loader": "^4.0.0",
"glob": "^7.1.4",
"html-loader": "^0.5.5",
"html-webpack-plugin": "^3.2.0",
"http-server": "^0.12.1",
"jquery": "^3.4.1",
"mini-css-extract-plugin": "^0.7.0",
"minimist": "^1.2.5",
"node-sass": "^4.12.0",
"nodemon": "^1.19.1",
"popper.js": "^1.15.0",
"postcss-loader": "^3.0.0",
"prettier": "^1.18.2",
"sass-loader": "^7.1.0",
"url-loader": "^2.0.1",
"webpack": "^4.42.1",
"webpack-cli": "^3.3.9",
"webpack-notifier": "^1.8.0"
}
}

53
pages/index.ejs

@ -0,0 +1,53 @@
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<title>Anes</title>
<meta name="viewport" content="width=device-width, user-scalable=no,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0">
<meta name="description" content=".">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<link rel="stylesheet" href="/assets/css/styles.css">
</head>
<body>
${require('../components/header/header.html')}
<main class="main-content">
<section class="container">
${require('../components/register/register.html')}
</section>
<section class="container container-full">
${require('../components/questions/questions.html')}
</section>
<section class="container">
${require('../components/teacher/teacher.html')}
</section>
<section class="container container-full">
${require('../components/ambassador/ambassador.html')}
</section>
<section class="container">
${require('../components/info/info.html')}
</section>
</main>
${require('../components/footer/footer.html')}
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-16180970-3"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-16180970-3');
</script>
</body>
</html>

13
postcss.config.js

@ -0,0 +1,13 @@
const autoprefixer = require('autoprefixer')
module.exports = {
plugins: [
autoprefixer({
overrideBrowserslist: [
'last 2 versions',
'> 1%',
'maintained node versions',
'not dead', 'ie >= 10']
})
]
}

BIN
src/fonts/icomoon.eot

Binary file not shown.

15
src/fonts/icomoon.svg

@ -0,0 +1,15 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="icomoon" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe900;" glyph-name="calendar" horiz-adv-x="896" d="M872 640h-848c-13.254 0-24 10.746-24 24v72c0 53.020 42.98 96 96 96h96v104c0 13.254 10.746 24 24 24h80c13.254 0 24-10.746 24-24v-104h256v104c0 13.254 10.746 24 24 24h80c13.254 0 24-10.746 24-24v-104h96c53.020 0 96-42.98 96-96v-72c0-13.254-10.746-24-24-24zM24 576h848c13.254 0 24-10.746 24-24v-520c0-53.020-42.98-96-96-96h-704c-53.020 0-96 42.98-96 96v520c0 13.254 10.746 24 24 24zM690.592 384.106l-56.338 56.796c-9.334 9.41-24.53 9.472-33.94 0.136l-212.074-210.368-91.96 92.704c-9.334 9.41-24.532 9.472-33.942 0.136l-56.794-56.34c-9.41-9.334-9.472-24.53-0.136-33.94l165.202-166.538c9.334-9.41 24.53-9.472 33.94-0.136l285.906 283.61c9.41 9.334 9.472 24.53 0.136 33.94z" />
<glyph unicode="&#xe901;" glyph-name="check" d="M512 944c-273.934 0-496-222.066-496-496s222.066-496 496-496 496 222.066 496 496-222.066 496-496 496zM512 848c221.064 0 400-178.902 400-400 0-221.064-178.902-400-400-400-221.064 0-400 178.902-400 400 0 221.064 178.902 400 400 400zM792.408 587.466l-45.072 45.436c-9.334 9.41-24.53 9.472-33.94 0.136l-282.704-280.432-119.584 120.554c-9.334 9.41-24.53 9.472-33.94 0.138l-45.438-45.072c-9.41-9.334-9.472-24.53-0.136-33.942l181.562-183.032c9.334-9.41 24.53-9.472 33.94-0.136l345.178 342.408c9.408 9.336 9.468 24.532 0.134 33.942z" />
<glyph unicode="&#xe902;" glyph-name="hourglass" horiz-adv-x="768" d="M720 960h-672c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48 0-181.93 102.032-335.468 241.684-384-139.652-48.532-241.684-202.070-241.684-384-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h672c26.51 0 48 21.49 48 48v32c0 26.51-21.49 48-48 48 0 181.93-102.032 335.468-241.684 384 139.652 48.532 241.684 202.070 241.684 384 26.51 0 48 21.49 48 48v32c0 26.51-21.49 48-48 48zM569.844 192h-371.684c34.118 93.594 104.192 160 185.84 160 81.642 0 151.724-66.392 185.844-160zM569.882 704h-371.726c-14.18 38.904-22.156 82.504-22.156 128h416c0-45.61-7.974-89.174-22.118-128z" />
<glyph unicode="&#xe903;" glyph-name="marker" horiz-adv-x="768" d="M344.536-43.34c-290.596 421.278-344.536 464.514-344.536 619.34 0 212.078 171.922 384 384 384s384-171.922 384-384c0-154.826-53.94-198.062-344.536-619.34-19.070-27.548-59.86-27.546-78.928 0zM384 416c88.366 0 160 71.634 160 160s-71.634 160-160 160-160-71.634-160-160 71.634-160 160-160z" />
<glyph unicode="&#xe904;" glyph-name="tag" d="M0 455.764v408.236c0 53.020 42.98 96 96 96h408.236c26.51 0 50.509-10.745 67.882-28.118l423.764-423.764c37.49-37.49 37.49-98.274 0-135.764l-408.236-408.236c-37.49-37.49-98.274-37.49-135.764 0l-423.764 423.764c-17.373 17.373-28.118 41.372-28.118 67.882v0zM224 832c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96z" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
src/fonts/icomoon.ttf

Binary file not shown.

BIN
src/fonts/icomoon.woff

Binary file not shown.

1
src/fonts/selection.json

@ -0,0 +1 @@
{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M872 320h-848c-13.254 0-24-10.746-24-24v-72c0-53.020 42.98-96 96-96h96v-104c0-13.254 10.746-24 24-24h80c13.254 0 24 10.746 24 24v104h256v-104c0-13.254 10.746-24 24-24h80c13.254 0 24 10.746 24 24v104h96c53.020 0 96 42.98 96 96v72c0 13.254-10.746 24-24 24zM24 384h848c13.254 0 24 10.746 24 24v520c0 53.020-42.98 96-96 96h-704c-53.020 0-96-42.98-96-96v-520c0-13.254 10.746-24 24-24zM690.592 575.894l-56.338-56.796c-9.334-9.41-24.53-9.472-33.94-0.136l-212.074 210.368-91.96-92.704c-9.334-9.41-24.532-9.472-33.942-0.136l-56.794 56.34c-9.41 9.334-9.472 24.53-0.136 33.94l165.202 166.538c9.334 9.41 24.53 9.472 33.94 0.136l285.906-283.61c9.41-9.334 9.472-24.53 0.136-33.94z"],"attrs":[{}],"width":896,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["calendar"]},"attrs":[{}],"properties":{"order":78,"id":4,"name":"calendar","prevSize":32,"code":59648},"setIdx":0,"setId":0,"iconIdx":0},{"icon":{"paths":["M512 16c-273.934 0-496 222.066-496 496s222.066 496 496 496 496-222.066 496-496-222.066-496-496-496zM512 112c221.064 0 400 178.902 400 400 0 221.064-178.902 400-400 400-221.064 0-400-178.902-400-400 0-221.064 178.902-400 400-400zM792.408 372.534l-45.072-45.436c-9.334-9.41-24.53-9.472-33.94-0.136l-282.704 280.432-119.584-120.554c-9.334-9.41-24.53-9.472-33.94-0.138l-45.438 45.072c-9.41 9.334-9.472 24.53-0.136 33.942l181.562 183.032c9.334 9.41 24.53 9.472 33.94 0.136l345.178-342.408c9.408-9.336 9.468-24.532 0.134-33.942z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["check"]},"attrs":[{}],"properties":{"order":79,"id":3,"name":"check","prevSize":32,"code":59649},"setIdx":0,"setId":0,"iconIdx":1},{"icon":{"paths":["M720 0h-672c-26.51 0-48 21.49-48 48v32c0 26.51 21.49 48 48 48 0 181.93 102.032 335.468 241.684 384-139.652 48.532-241.684 202.070-241.684 384-26.51 0-48 21.49-48 48v32c0 26.51 21.49 48 48 48h672c26.51 0 48-21.49 48-48v-32c0-26.51-21.49-48-48-48 0-181.93-102.032-335.468-241.684-384 139.652-48.532 241.684-202.070 241.684-384 26.51 0 48-21.49 48-48v-32c0-26.51-21.49-48-48-48zM569.844 768h-371.684c34.118-93.594 104.192-160 185.84-160 81.642 0 151.724 66.392 185.844 160zM569.882 256h-371.726c-14.18-38.904-22.156-82.504-22.156-128h416c0 45.61-7.974 89.174-22.118 128z"],"attrs":[{}],"width":768,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["hourglass"]},"attrs":[{}],"properties":{"order":80,"id":2,"name":"hourglass","prevSize":32,"code":59650},"setIdx":0,"setId":0,"iconIdx":2},{"icon":{"paths":["M344.536 1003.34c-290.596-421.278-344.536-464.514-344.536-619.34 0-212.078 171.922-384 384-384s384 171.922 384 384c0 154.826-53.94 198.062-344.536 619.34-19.070 27.548-59.86 27.546-78.928 0zM384 544c88.366 0 160-71.634 160-160s-71.634-160-160-160-160 71.634-160 160 71.634 160 160 160z"],"attrs":[{}],"width":768,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["marker"]},"attrs":[{}],"properties":{"order":81,"id":1,"name":"marker","prevSize":32,"code":59651},"setIdx":0,"setId":0,"iconIdx":3},{"icon":{"paths":["M0 504.236v-408.236c0-53.020 42.98-96 96-96h408.236c26.51 0 50.509 10.745 67.882 28.118l423.764 423.764c37.49 37.49 37.49 98.274 0 135.764l-408.236 408.236c-37.49 37.49-98.274 37.49-135.764 0l-423.764-423.764c-17.373-17.373-28.118-41.372-28.118-67.882l-0-0zM224 128c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["tag"]},"attrs":[{}],"properties":{"order":82,"id":0,"name":"tag","prevSize":32,"code":59652},"setIdx":0,"setId":0,"iconIdx":4}],"height":1024,"metadata":{"name":"icomoon"},"preferences":{"showGlyphs":true,"showQuickUse":false,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"icomoon"},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false,"autoHost":true},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"classSelector":".icon"},"historySize":50,"showCodes":true,"gridSize":16,"quickUsageToken":{"UntitledProject":"ZjQ5ODNjZDkzZGRhNGRlZDg3YmQ2Njc5YTQyNWU2Y2QjMSMxNTY0MDUxMDkxIyMj"},"showGrid":false}}

49
src/js/index.js

@ -0,0 +1,49 @@
window.readyResize = (callback, orientation = false) => {
if ($.isFunction(callback)) {
$(document).ready(()=>{
callback();
})
$(window).resize(()=>{
console.log('Window resize ')
callback()
})
if(orientation) {
window.addEventListener("orientationchange", () => {
const WCO = ($(window).width() > $(window).height()) ? "landscape" : "portrait"
console.log('Change orientation: ' + WCO)
callback()
})
}
}
};
$('body').ihavecookies({
title: "Cookies & Privacy",
message: "Questo sito web utilizza cookie tecnici per assicurarti di ottenere la migliore esperienza sul nostro portale.",
expires: 30,
moreInfoLabel: 'Maggiori informazioni',
link: "https://anes.it/informativa-sui-cookie/",
acceptBtnLabel: 'Accetta i Cookies',
advancedBtnLabel: 'Personalizza Cookies',
uncheckBoxes: false,
cookieTypesTitle: 'Seleziona i Cookies da accettare',
fixedCookieTypeLabel:'Necessari',
fixedCookieTypeDesc: 'Si tratta di cookie essenziali per il corretto funzionamento del sito Web.',
cookieTypes: [
{
type: 'Analytics',
value: 'analytics',
description: 'Cookie relativi a statistiche sulle visite al sito, tipi di browser, ecc'
},
{
type: 'Marketing',
value: 'marketing',
description: 'Cookie relativi al marketing, e.g. newsletters, social media, etc'
}
],
onAccept: function(){
}
})

10
src/js/jquery.ihavecookies.min.js

@ -0,0 +1,10 @@
/*!
* ihavecookies - jQuery plugin for displaying cookie/privacy message
* v0.3.1
*
* Copyright (c) 2018 Ketan Mistry (https://iamketan.com.au)
* Licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*
*/
!function(e){e.fn.ihavecookies=function(n){var a=e(this),c=e.extend({cookieTypes:[{type:"Site Preferences",value:"preferences",description:"These are cookies that are related to your site preferences, e.g. remembering your username, site colours, etc."},{type:"Analytics",value:"analytics",description:"Cookies related to site visits, browser types, etc."},{type:"Marketing",value:"marketing",description:"Cookies related to marketing, e.g. newsletters, social media, etc"}],title:"Cookies & Privacy",message:"Cookies enable you to use shopping carts and to personalize your experience on our sites, tell us which parts of our websites people have visited, help us measure the effectiveness of ads and web searches, and give us insights into user behavior so we can improve our communications and products.",link:"/privacy-policy",delay:2e3,expires:30,moreInfoLabel:"More information",acceptBtnLabel:"Accept Cookies",advancedBtnLabel:"Customise Cookies",cookieTypesTitle:"Select cookies to accept",fixedCookieTypeLabel:"Necessary",fixedCookieTypeDesc:"These are cookies that are essential for the website to work correctly.",onAccept:function(){},uncheckBoxes:!1},n),r=t("cookieControl"),s=t("cookieControlPrefs");if(r&&s){var p=!0;"false"==r&&(p=!1),o(p,c.expires)}else{var d='<li><input type="checkbox" name="gdpr[]" value="necessary" checked="checked" disabled="disabled"> <label title="'+c.fixedCookieTypeDesc+'">'+c.fixedCookieTypeLabel+"</label></li>";e.each(c.cookieTypes,function(e,o){if(""!==o.type&&""!==o.value){var i="";o.description!==!1&&(i=' title="'+o.description+'"'),d+='<li><input type="checkbox" id="gdpr-cookietype-'+o.value+'" name="gdpr[]" value="'+o.value+'" data-auto="on"> <label for="gdpr-cookietype-'+o.value+'"'+i+">"+o.type+"</label></li>"}});var l='<div id="gdpr-cookie-message"><h4>'+c.title+"</h4><p>"+c.message+' <a href="'+c.link+'">'+c.moreInfoLabel+'</a><div id="gdpr-cookie-types" style="display:none;"><h5>'+c.cookieTypesTitle+"</h5><ul>"+d+'</ul></div><p><button id="gdpr-cookie-accept" type="button">'+c.acceptBtnLabel+'</button><button id="gdpr-cookie-advanced" type="button">'+c.advancedBtnLabel+"</button></p></div>";setTimeout(function(){e(a).append(l),e("#gdpr-cookie-message").hide().fadeIn("slow")},c.delay),e("body").on("click","#gdpr-cookie-accept",function(){o(!0,c.expires),e('input[name="gdpr[]"][data-auto="on"]').prop("checked",!0);var t=[];e.each(e('input[name="gdpr[]"]').serializeArray(),function(e,o){t.push(o.value)}),i("cookieControlPrefs",JSON.stringify(t),365),c.onAccept.call(this)}),e("body").on("click","#gdpr-cookie-advanced",function(){e('input[name="gdpr[]"]:not(:disabled)').attr("data-auto","off").prop("checked",!1),e("#gdpr-cookie-types").slideDown("fast",function(){e("#gdpr-cookie-advanced").prop("disabled",!0)})})}c.uncheckBoxes===!0&&e('input[type="checkbox"].ihavecookies').prop("checked",!1)},e.fn.ihavecookies.cookie=function(){var e=t("cookieControlPrefs");return JSON.parse(e)},e.fn.ihavecookies.preference=function(e){var o=t("cookieControl"),i=t("cookieControlPrefs");return i=JSON.parse(i),o!==!1&&(i!==!1&&i.indexOf(e)!==-1)};var o=function(o,t){i("cookieControl",o,t),e("#gdpr-cookie-message").fadeOut("fast",function(){e(this).remove()})},i=function(e,o,i){var n=new Date;n.setTime(n.getTime()+24*i*60*60*1e3);var a="expires="+n.toUTCString();return document.cookie=e+"="+o+";"+a+";path=/",t(e)},t=function(e){for(var o=e+"=",i=decodeURIComponent(document.cookie),t=i.split(";"),n=0;n<t.length;n++){for(var a=t[n];" "==a.charAt(0);)a=a.substring(1);if(0===a.indexOf(o))return a.substring(o.length,a.length)}return!1}}(jQuery);

1
src/scss/fonts.scss

@ -0,0 +1 @@
@import url('https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap');

230
src/scss/forms.scss

@ -0,0 +1,230 @@
input,
button {
border: 1px solid $black;
background: $white;
border-radius: 0;
height: 28px;
}
button {
border: none;
cursor: pointer;
}
input,
select,
textarea {
font-size: $font-12;
border-radius: 0;
background: $white;
width: 100%;
outline: none !important;
&:active,
&:focus{
outline: none !important;
}
&:-moz-focusring {
//color: transparent;
text-shadow: 0 0 0 $black;
}
&:-webkit-autofill {
-webkit-text-fill-color: $black;
box-shadow: 0 0 0px 1000px $white inset !important;
&:focus,
&:hover {
-webkit-text-fill-color: $black;
box-shadow: 0 0 0px 1000px $white inset !important;
}
}
}
select,
input[type=text],
input[type=password],
input[type=email],
input[type=tel],
input[type=date] {
border: none;
border-bottom: 1px solid $black;
height: 30px;
box-shadow: unset;
text-transform: initial !important;
& + .label-text,
& + label {
color: $grey;
top: -1*$font-10;
position: absolute;
display: block;
@include font-style($font-sans, 'regular', $font-10);
text-transform: uppercase;
}
&:required {
& + .label-text,
& + label {
&::after {
content: ' *';
}
& ~ .error-message {
display: none;
color: $red;
@include font-style($font-sans, 'regular', $font-10);
}
}
}
&.has-error {
border-bottom: 1px solid $red;
& + .label-text,
& + label {
color: $red;
text-transform: uppercase;
& ~ .error-message {
display: block;
color: $red;
text-transform: uppercase;
}
}
}
&.transparent {
background: transparent;
}
&:disabled {
border-bottom: 1px solid $grey;
& + .label-text,
& + label {
color: $grey;
}
}
}
fieldset,
.fieldset {
position: relative;
padding-bottom: 35px;
.label-text {
color: $grey;
&.required {
&:after {
content: '*';
}
}
}
&.has-error {
.label-text {
color: $red;
text-transform: uppercase;
font-size: $font-10;
}
.error-message {
color: $red;
display: block !important;
text-transform: uppercase;
font-size: $font-10;
}
input {
border-bottom: 1px solid $red;
}
}
}
select {
appearance: none;
background-image: url(/images/arrow-down.svg);
background-size: auto 40%;
background-repeat: no-repeat;
background-position: right 3px center;
&:disabled {
background-image: url(/images/arrow-down-grey.svg);
}
&:focus {
//background-image: url(/images/arrow-up.svg);
}
}
.button {
border: none;
color: $black;
background: transparent;
border-radius: 0;
height: auto;
display: block;
padding: 10px 20px;
text-align: center;
@include font-style( $font-sans, 'regular', $font-18);
text-transform: uppercase;
&.button-blue {
background: $blue;
color: $white;
}
&.button-small {
height: 18px;
line-height: $font-6;
padding: 5px;
}
&:disabled {
opacity: 0.5;
}
}
.checkbox {
display: inline-block;
position: relative;
padding-left: 25px;
margin-bottom: 12px;
cursor: pointer;
user-select: none;
width: 100%;
float: left;
line-height: 12px;
.checkmark {
position: absolute;
top: 0;
left: 0;
height: 15px;
width: 15px;
background: none;
border: 1px solid $black;
&:disabled {
border-bottom: 1px solid $grey;
}
&:after {
content: '';
position: absolute;
display: none;
}
}
input {
position: absolute;
opacity: 0;
cursor: pointer;
height: 0;
width: 0;
&:checked ~ .checkmark {
background: $black;
&:after {
display: block;
}
}
}
}

170
src/scss/global.scss

@ -0,0 +1,170 @@
body {
font-family: $font-sans;
font-weight: 400;
margin: 0;
color: $black;
overflow-x: hidden;
}
ul {
list-style: none;
padding: 0;
margin: 0;
}
a,
input,
button {
text-decoration: none;
outline: none;
&:active,
&:visited,
&:hover,
&:focus{
outline: none;
text-decoration: none;
}
}
.font-serif {
font-family: $font-serif;
}
.font-sans {
font-family: $font-sans;
}
.text-right {
text-align: right;
}
.text-left {
text-align: left;
}
.text-center {
text-align: center;
}
@each $bp in $grid-breakpoints {
$key: nth($bp, 1);
$value: nth($bp, 2);
@media (min-width: $value) {
.text-#{$key}-center{
text-align: center;
}
.text-#{$key}-left {
text-align: left;
}
.text-#{$key}-right {
text-align: right;
}
}
}
.text-white {
color: $white;
}
.text-black {
color: $black;
}
.text-grey {
color: $grey;
}
.text-bold {
font-weight: bold !important;
}
.text-uppercase {
text-transform: uppercase;
}
.middle {
@include middle();
}
.full-middle {
@include full-middle();
}
// Font size
@each $size in 10, 12, 13, 14, 15, 16, 18, 20, 22, 24, 25, 26, 28, 30, 32, 34, 36, 38, 40, 42, 46, 48, 50, 52, 54, 60, 72 {
.font-#{$size} {font-size: #{$size/16}rem !important;}
}
.main-content {
//min-height: calc(100vh - #{$header-height} - #{$footer-height});
&.container-fluid {
&.full-width {
padding-left: 0;
padding-right: 0;
overflow-x: hidden;
}
}
section {
margin: 50px auto;
&.container-full {
padding: 0;
max-width: initial;
}
}
}
.debug-border {
border: 1px solid red;
}
#gdpr-cookie-message {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
background: $black-alpha;
color: $white;
padding: 10px;
font-size: $font-14;
ul {
list-style: none;
li {
display: flex;
label {
padding-left: 10px;
}
}
}
h4 {
font-size: $font-18;
}
input {
width: auto;
}
button {
border: none;
color: $white;
background: $blue;
border-radius: 0;
height: auto;
display: block;
padding: 5px 10px;
text-align: center;
@include font-style( $font-sans, 'regular', $font-14);
text-transform: uppercase;
float: left;
margin: 0 20px 10px 0;
}
}

42
src/scss/icons.scss

@ -0,0 +1,42 @@
@font-face {
font-family: 'icomoon';
src: url('../fonts/icomoon.eot');
src: url('../fonts/icomoon.eot#iefix') format('embedded-opentype'),
url('../fonts/icomoon.ttf') format('truetype'),
url('../fonts/icomoon.woff') format('woff'),
url('../fonts/icomoon.svg#icomoon') format('svg');
font-weight: normal;
font-style: normal;
}
[class^="icon-"], [class*=" icon-"] {
/* use !important to prevent issues with browser extensions that change fonts */
font-family: 'icomoon' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-calendar:before {
content: "\e900";
}
.icon-check:before {
content: "\e901";
}
.icon-hourglass:before {
content: "\e902";
}
.icon-marker:before {
content: "\e903";
}
.icon-tag:before {
content: "\e904";
}

20
src/scss/main.scss

@ -0,0 +1,20 @@
@import "../scss/variables.scss";
@import "../scss/mixins.scss";
/* Libraries */
@import "./node_modules/bootstrap/scss/bootstrap";
/* Global setup */
@import "../scss/fonts.scss";
@import "../scss/icons.scss";
@import "../scss/global.scss";
@import "../scss/forms.scss";
@import "./components/test/test.scss";
@import "./components/header/header.scss";
@import "./components/register/register.scss";
@import "./components/questions/questions.scss";
@import "./components/teacher/teacher.scss";
@import "./components/ambassador/ambassador.scss";
@import "./components/info/info.scss";
@import "./components/footer/footer.scss";

69
src/scss/mixins.scss

@ -0,0 +1,69 @@
@import "../../src/scss/variables.scss";
@mixin font-style ( $font: $font-serif, $style: 'regular', $size: $font-12 , $ls: normal ) {
font-family: $font;
font-size: $size;
letter-spacing: $ls;
@if $style == 'regular' {
font-weight: 400;
} @else if $style == 'light' {
font-weight: 200;
} @else if $style == 'medium' {
font-weight: 500;
} @else if $style == 'semibold' {
font-weight: 600;
} @else if $style == 'bold' {
font-weight: 700;
} @else if $style == 'regular-italic' {
font-weight: 400;
font-style: italic;
} @else if $style == 'light-italic' {
font-weight: 200;
font-style: italic;
} @else if $style == 'semibold-italic' {
font-weight: 600;
font-style: italic;
} @else if $style == 'bold-italic' {
font-weight: 700;
font-style: italic;
} @else {
font-weight: $style;
}
}
@mixin middle() {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
@mixin full-middle() {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
@mixin middle-right() {
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
}
@mixin middle-left() {
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
}
@mixin reset() {
margin: 20px auto;
width: 100%;
max-width: $max-width;
padding: 60px $grid-gutter-width;
font-size: 16px;
letter-spacing: .08em;
}

88
src/scss/variables.scss

@ -0,0 +1,88 @@
// Bootstrap Settings
$spacer: 20px;
$spacers: (
0: 0,
1: ($spacer * .25), // 5px
2: ($spacer * .5), // 10px
3: $spacer, // 20px
4: ($spacer * 1.5), // 30px
5: ($spacer * 3), // 60px
6: ($spacer * 6), // 120px
);
$grid-columns: 12;
$grid-gutter-width: 20px;
$grid-gutter-width-mobile: 5px;
$grid-breakpoints: (
xs: 0, // Mobile Portrait
sm: 768px, // Tablet Portrait
md: 1024px, // Tablet landscape/Small desktop
lg: 1280px, // Desktop
xl: 1600px, // Large desktop
);
$container-max-widths: (
sm: 708px,
md: 984px,
lg: 1200px,
xl: 1560px
);
$font-serif: 'Roboto';
$font-sans: 'Roboto';
$icon: 'icomoon';
$black: #000;
$white: #fff;
$grey: #c2c0bd;
$light-grey: #E4E9ED;
$dark-grey: #5A6B73;
$red: #ea0032;
$light-green: #8cd69b;
$blue: #16ACBB;
$yellow: #FFD600;
$white-alpha: rgba(255, 255, 255, 0.8);
$black-alpha: rgba(0, 0, 0, 0.8);
$grey-alpha: rgba(180, 180, 180, 0.6);
$header-height: 130px;
$header-height-mobile: 50px;
$footer-height: 65px;
/* Font-size variables */
$font-6: 0.375rem; /* 6px */
$font-8: 0.5rem; /* 8px */
$font-10: 0.625rem; /* 10px */
$font-11: 0.687rem; /* 11px */
$font-12: 0.75rem; /* 12px */
$font-13: 0.812rem; /* 13px */
$font-14: 0.875rem; /* 14px */
$font-15: 0.937rem; /* 15px */
$font-16: 1rem; /* 16px */
$font-18: 1.125rem; /* 18px */
$font-20: 1.25rem; /* 20px */
$font-22: 1.375rem; /* 22px */
$font-24: 1.5rem; /* 24px */
$font-25: 1.56rem; /* 24px */
$font-26: 1.625rem; /* 26px */
$font-28: 1.75rem; /* 28px */
$font-30: 1.875rem; /* 30px */
$font-32: 2rem; /* 32px */
$font-34: 2.125rem; /* 34px */
$font-36: 2.25rem; /* 36px */
$font-38: 2.375rem; /* 38px */
$font-40: 2.5rem; /* 40px */
$font-42: 2.625rem; /* 42px */
$font-44: 2.75rem; /* 44px */
$font-46: 2.875rem; /* 46px */
$font-48: 3rem; /* 48px */
$font-50: 3.125rem; /* 50px */
$font-52: 3.25rem; /* 52px */
$font-54: 3.375rem; /* 54px */
$font-60: 3.75rem; /* 60px */
$font-72: 4.5rem; /* 72px */

130
webpack.config.js

@ -0,0 +1,130 @@
const webpack = require('webpack')
const path = require('path')
const fs = require('fs')
const WebpackNotifierPlugin = require('webpack-notifier')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const { BaseHrefWebpackPlugin } = require('base-href-webpack-plugin')
const basePath = './'
const pagesPath = path.join(__dirname, './pages')
const distPath = path.join(__dirname, './public')
const componentPath = path.join(__dirname, './components')
const imagesPath = path.join(__dirname, './images')
const assetsPath = path.join(__dirname, './assets')
const docsPath = path.join(__dirname, './docs')
const srcPath = './src'
let components = []
let entries = []
let plugins = []
module.exports = (env) => {
const isProd = env && env.prod || false
entries.push(srcPath + '/js/jquery.ihavecookies.min.js')
entries.push(srcPath + '/js/index.js')
entries.push(srcPath + '/scss/main.scss')
fs.readdirSync(componentPath).forEach( (comp) => {
entries.push(componentPath + '/' + comp + '/' + comp + '.js')
})
plugins = [
new HtmlWebpackPlugin(),
new BaseHrefWebpackPlugin({ baseHref: isProd ? 'http://tmp.it/' : '/' }),
new WebpackNotifierPlugin({
title: 'Anes',
contentImage: path.join(__dirname, basePath + '/images/logoWP.png'),
alwaysNotify: true
}),
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
}),
new CopyWebpackPlugin({
patterns: [
{ context: componentPath, from: '**/*.html', to: distPath + '/components/[path]/[name].php'},
{ context: imagesPath, from: '*.*', to: distPath + '/images'},
{ context: docsPath, from: '*.*', to: distPath + '/docs'}
]
})
]
fs.readdirSync(pagesPath).forEach( (page) => {
plugins.push(
new HtmlWebpackPlugin({
template: path.resolve(pagesPath, page),
filename: path.resolve(distPath, page.substr(0, page.lastIndexOf(".")) + ".html")
})
)
})
return {
devtool: isProd ? '' : 'eval',
entry: entries,
output: {
path: path.join(distPath, '/assets/js'),
publicPath: './assets/js',
filename: 'bundle.js'
},
module: {
rules: [
// JS
{
test: /\.js$/,
exclude: /(node_modules|bower_components|vendor)/,
use: {
loader: 'babel-loader',
options: {
minified: false,
babelrc: true
}
},
},
// SCSS
{
test: /\.scss$/,
use: [
{loader: 'file-loader',
options: { name: '../../assets/css/styles.css'}
},
{loader: 'extract-loader'},
{loader: 'css-loader'},
{loader: 'postcss-loader'},
{loader: 'sass-loader'}
]
},
// FONTS
{
test: /\.(woff|woff2|eot|ttf|svg)$/,
use: ['url-loader?limit=100000']
},
// HTML
{
test: /.*\.html?$/,
use: {
loader: 'html-loader',
options: {
attrs: ['link:href', 'script:src', 'img:src'],
interpolate: true,
},
},
}
]
},
plugins: plugins,
devtool: false,
performance: {
maxEntrypointSize: 512000,
maxAssetSize: 512000
}
}
}
Loading…
Cancel
Save