diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..62c8935 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +.idea/ \ No newline at end of file diff --git a/.gitignore b/.gitignore index 7aae344..5d7ab2d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,7 @@ public/internal/config.php #phpstorm -.idea/ \ No newline at end of file +.idea/ + +#node +node_modules/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 1616c6d..db9cefa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,12 @@ +# Bootstrap CSS +FROM ruby:latest AS build-env +WORKDIR /build +COPY . /build +RUN gem install sass +RUN sass --update scss:public/css + + +# Prepare Webserver ARG INSTALL_CRON=0 ARG INSTALL_COMPOSER=0 ARG PHP_VERSION @@ -12,7 +21,7 @@ FROM thecodingmachine/php:8.0-v4-slim-apache # | USER root -RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh +RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh && a2enmod headers USER docker # |-------------------------------------------------------------------------- @@ -41,4 +50,4 @@ ENV APACHE_RUN_USER=www-data \ # |-------------------------------------------------------------------------- # | Add php files of website # |-------------------------------------------------------------------------- -COPY ./public /var/www/html \ No newline at end of file +COPY --from=build-env /build/public /var/www/html \ No newline at end of file diff --git a/public/css/style.css b/public/css/style.css deleted file mode 100644 index 6cf7bfb..0000000 --- a/public/css/style.css +++ /dev/null @@ -1,478 +0,0 @@ -@media all { - div, - h1, - p { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - vertical-align: baseline; - } - * { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - *:before, - *:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - div { - zoom: 1; - } - div:before, - div:after { - content: ""; - display: table; - } - div:after { - clear: both; - } - h1 { - font-weight: bold; - } - p { - margin: 0 0 14px 0; - } - h1 { - margin: 0 0 54px 0; - color: #000; - text-transform: uppercase; - font-size: 3em; - font-weight: 600; - line-height: 115%; - } - p { - -webkit-font-smoothing: subpixel-antialiased; - } - .gridContainer { - width: 100%; - padding-left: 15px; - padding-right: 15px; - margin-left: auto; - margin-right: auto; - } - .header-homepage { - background-image:url(/img/bannerHome.webp); - background-position: center center; - background-repeat: no-repeat; - background-size: cover; - position: relative; - color: #fff; - z-index: 0; - padding-top: 160px; - padding-bottom: 160px; - } - .header-homepage:before { - width: 100%; - height: 100%; - top: 0; - left: 0; - position: absolute; - z-index: -1; - display: inline-block; - } - .header-separator-bottom { - position: absolute; - bottom: -1px; - left: 0; - width: 100%; - } - .header-separator svg { - display: block; - width: calc(100% + 1.3px); - } - .header-separator { - position: absolute; - width: 100%; - max-width: 100%; - bottom: -1px; - overflow: hidden; - } - .svg-white-bg { - fill: #1a2332; - } - .header-description { - min-height: 100px; - text-align: center; - } - p.header-subtitle { - color: #fff; - font-weight: 300; - font-size: 1.4em; - text-align: inherit; - } - .color-overlay:before { - width: 100%; - height: 100%; - top: 0; - left: 0; - position: absolute; - z-index: -1; - display: inline-block; - content: ""; - -webkit-transform: translate3d(0, 0, -1px); - } - .header-wrapper { - background-color: #ebebeb; - position: relative; - } - h1.heading8 { - font-weight: 600; - font-size: 2.2em; - color: #fff; - margin-bottom: 25px; - } - .header-description-row { - padding: 0 15px 0 15px; - display: block; - } - .align-holder { - width: 100%; - } - .header-buttons-wrapper { - margin: 0; - } - @media only screen and (min-width:768px) { - h1 { - font-size: 3.4em; - } - p { - line-height: 130%; - } - h1.heading8 { - font-size: 3.3em; - } - .gridContainer { - width: 90%; - max-width: 1232px; - } - .gridContainer .row { - margin-left: -15px; - margin-right: -15px; - clear: both; - } - .header-description-row:before, - .header-description-row:after { - content: normal; - } - .header-content-centered { - margin-left: auto; - margin-right: auto; - } - .header-buttons-wrapper { - margin: 0 -9px 0 -9px; - clear: both; - } - } - @media only screen and (min-width:1024px) { - .gridContainer { - width: 80%; - } - h1 { - font-size: 3.8em; - } - p { - line-height: 150%; - } - } -} - -.red { - color: red; -} - - -@media all { - .gridContainer { - margin-right: auto!important; - margin-left: auto!important; - } - .header-homepage { - background-color: #fff; - } - @media only screen and (min-width:1024px) { - .header-homepage { - min-height: auto; - } - } - p { - margin: 0 0 20px 0; - } -} - -@media all { - .homepage-template .svg-white-bg { - fill: #fff; - } -} - -.header-homepage.color-overlay:before { - background-color: #000; - opacity: .4; -} - -.header-homepage+.header-separator svg { - height: 90px!important; -} - -.header-separator svg { - height: 90px!important; -} - -.header-homepage .header-description-row { - padding-top: 8%; - padding-bottom: 8%; -} - -@media only screen and (min-width:768px) { - .header-content .align-holder { - text-align: center!important; - } - .header-content { - width: 100%!important; - } -} - -@media only screen and (min-width:768px) { - .header-homepage { - padding-bottom: 230px; - } -} - -body { - margin: 0; - background-color: #151d28; - color: #b3b3b3; - font-family: 'Source Sans Pro', sans-serif; -} -#content{ - background-color: #1a2332; - width: 100%; - padding: 20px 20%; -} - -#content img{ - max-width: 40%; -} - -#blueBar{ - height: 5px; - width: 100%; - background-color: #03A8F4; -} - -footer{ - display: flex; - justify-content: center; - flex-direction: column; -} - -a{ - padding: 0; - color: #b3b3b3; - text-decoration:underline; -} - -footer a{ - text-decoration: none; -} - -.footerIconSpacer{ - margin-left: 10px; - display: inline; -} - -.center{ - text-align: center; -} - -article{ - border: 2px solid #b3b3b3; - border-radius: 20px; - padding: 10px; - margin-right: 20px; - width: 100%; - height: 100%; -} - -#blog{ - width: 100%; - display: flex; - justify-content: center; - align-items: center; -} - -article:last-child{ - margin-right: 0; -} - -article h2{ - text-align: center; - margin: 0; -} - -button{ - background: #1cb09a; - color: #fff; - text-transform: uppercase; - border: 0; - padding: 5px; - cursor: pointer; - border-radius: 5px; -} - -#homeImage{ - float: left; -} - -.spacer{ - clear: both; -} - -#footerContent{ - width: 100%; - display: flex; - justify-content: center; - -} -#footerContent div{ - border-right: #3d3d3d 1px solid; - padding: 20px; -} -#footerContent div{ - border-left: #3d3d3d 1px solid; -} - -#footerContent h3{ - margin-top: 0; -} - -.cookieinfo{ - position: fixed; - left: 0px; - right: 0px; - height: auto; - min-height: 21px; - z-index: 2147483647; - line-height: 21px; - padding: 8px 18px; - font-family: verdana, arial, sans-serif; - font-size: 14px; - text-align: center; - bottom: 0px; - opacity: 1; - background: #1a2332; - color: #b3b3b3; - -} - -.cookieinfo-close{ - float: right; - display: block; - padding: 5px 8px; - min-width: 100px; - margin-left: 5px; - border-radius: 5px; - cursor: pointer; - background: #1cb09a; - color: #fff; - text-align: center; -} - -.cookieinfo-text { - display:block; - padding:5px 0 5px 0; -} - -.cookieinfo-link{ - text-decoration: none; - color: #1cb09a; -} -#newComment form input, #newComment form textarea{ - width: 100%; - background: #1a2332; - color: #b3b3b3; - border: solid #212a39; -} - -#newComment form input:focus, #newComment form textarea:focus{ - outline: none; - } - -#newComment form textarea{ - resize: vertical; -} -#newComment form input[type=submit]{ - background: #1cb09a; - color: #fff; - text-transform: uppercase; - padding: 15px; - font-size: 14px; - cursor: pointer; - outline: 0; - border: 0; -} - -.comment{ - display: flex; -} - -.commentTitle{ - margin-bottom: 5px; -} - -.comment img{ - margin-right: 10px; - width: 100px; - height: 100px; -} - -.commentArticle{ - display: flex; - justify-content: center; - flex-direction: column; - align-items: center; - min-height: 100px; -} - -.commentText{ - margin: 0; - width: 100%; -} - -.emailBox { - display: inline; -} - -@media only screen and (max-width: 600px) { - #homeImage{ - float: none; - } - #content{ - padding-left: 10px; - padding-right: 10px; - } - #blog{ - flex-direction: column; - } - article { - margin-bottom: 10px; - margin-right: 0; - } - #banner a{ - display: block; - } - - #banner img { - max-width: none; - width: 100%; - } - - #newestPost{ - display: none; - } - -} \ No newline at end of file diff --git a/public/yarn-error.log b/public/yarn-error.log new file mode 100644 index 0000000..6556db8 --- /dev/null +++ b/public/yarn-error.log @@ -0,0 +1,37 @@ +Arguments: + C:\Program Files\nodejs\node.exe C:\Program Files (x86)\Yarn\bin\yarn.js init + +PATH: + C:\Program Files (x86)\VMware\VMware Workstation\bin\;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\compiler;C:\Program Files\Oculus\Support\oculus-runtime;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\PuTTY\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Git\cmd;C:\Program Files (x86)\Touch Portal\plugins\adb\platform-tools;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\;D:\gitlab_runner;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\nodejs\;C:\ProgramData\chocolatey\bin;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Program Files\dotnet\;C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility;C:\Program Files\LLVM\bin;C:\Program Files\Multipass\bin;C:\ProgramData\ComposerSetup\bin;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\DTS\Binn\;C:\WINDOWS\system32;D:\dartsdk-windows-x64-release\dart-sdk\bin;D:\dartsdk-windows-x64-release\flutter\bin;D:\php-7.4.11;C:\MinGW\bin;C:\Program Files (x86)\Gow\bin;C:\Users\admin\AppData\Local\Programs\Python\Python38;C:\Program Files (x86)\Graphviz2.38\bin;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Azure Data Studio\bin;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\WireGuard\;C:\Program Files\WorldPainter;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files (x86)\Streamlink\bin;D:\sdk\go\bin;C:\Program Files (x86)\Yarn\bin\;D:\Ruby27-x64\bin;d:\chrome\tools;C:\Program Files (x86)\VMware\VMware Workstation\bin\;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\compiler;C:\Program Files\Oculus\Support\oculus-runtime;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\PuTTY\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Git\cmd;C:\Program Files (x86)\Touch Portal\plugins\adb\platform-tools;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\;D:\gitlab_runner;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\nodejs\;C:\ProgramData\chocolatey\bin;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\;C:\Users\admin\AppData\Local\Programs\Python\Python38\Scripts;C:\Users\admin\AppData\Roaming\Python\Python38\Scripts;C:\Program Files\Azure Data Studio\bin;C:\Users\admin\AppData\Local\Programs\Microsoft VS Code\bin;C:\Program Files\Docker\Docker\resources\bin;C:\Users\admin\go\bin;C:\Python27\DLLs;C:\Users\admin\AppData\Local\Yarn\bin + +Yarn version: + 1.22.5 + +Node version: + 12.16.1 + +Platform: + win32 x64 + +Trace: + Error: canceled + at Interface. (C:\Program Files (x86)\Yarn\lib\cli.js:137009:13) + at Interface.emit (events.js:311:20) + at Interface._ttyWrite (readline.js:893:16) + at ReadStream.onkeypress (readline.js:198:10) + at ReadStream.emit (events.js:311:20) + at emitKeys (internal/readline/utils.js:438:14) + at emitKeys.next () + at ReadStream.onData (readline.js:1160:36) + at ReadStream.emit (events.js:311:20) + at addChunk (_stream_readable.js:294:12) + +npm manifest: + No manifest + +yarn manifest: + No manifest + +Lockfile: + # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. + # yarn lockfile v1 diff --git a/public/yarn.lock b/public/yarn.lock new file mode 100644 index 0000000..fb57ccd --- /dev/null +++ b/public/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + diff --git a/scss/style.scss b/scss/style.scss new file mode 100644 index 0000000..58f94ba --- /dev/null +++ b/scss/style.scss @@ -0,0 +1,477 @@ +@media all { + div, + h1, + p { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + vertical-align: baseline; + } + * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + *:before, + *:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + div { + zoom: 1; + } + div:before, + div:after { + content: ""; + display: table; + } + div:after { + clear: both; + } + h1 { + font-weight: bold; + } + p { + margin: 0 0 14px 0; + } + h1 { + margin: 0 0 54px 0; + color: #000; + text-transform: uppercase; + font-size: 3em; + font-weight: 600; + line-height: 115%; + } + p { + -webkit-font-smoothing: subpixel-antialiased; + } + .gridContainer { + width: 100%; + padding-left: 15px; + padding-right: 15px; + margin-left: auto; + margin-right: auto; + } + .header-homepage { + background-image:url(/img/bannerHome.webp); + background-position: center center; + background-repeat: no-repeat; + background-size: cover; + position: relative; + color: #fff; + z-index: 0; + padding-top: 160px; + padding-bottom: 160px; + } + .header-homepage:before { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + z-index: -1; + display: inline-block; + } + .header-separator-bottom { + position: absolute; + bottom: -1px; + left: 0; + width: 100%; + } + .header-separator svg { + display: block; + width: calc(100% + 1.3px); + } + .header-separator { + position: absolute; + width: 100%; + max-width: 100%; + bottom: -1px; + overflow: hidden; + } + .svg-white-bg { + fill: #1a2332; + } + .header-description { + min-height: 100px; + text-align: center; + } + p.header-subtitle { + color: #fff; + font-weight: 300; + font-size: 1.4em; + text-align: inherit; + } + .color-overlay:before { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + z-index: -1; + display: inline-block; + content: ""; + -webkit-transform: translate3d(0, 0, -1px); + } + .header-wrapper { + background-color: #ebebeb; + position: relative; + } + h1.heading8 { + font-weight: 600; + font-size: 2.2em; + color: #fff; + margin-bottom: 25px; + } + .header-description-row { + padding: 0 15px 0 15px; + display: block; + } + .align-holder { + width: 100%; + } + .header-buttons-wrapper { + margin: 0; + } + @media only screen and (min-width:768px) { + h1 { + font-size: 3.4em; + } + p { + line-height: 130%; + } + h1.heading8 { + font-size: 3.3em; + } + .gridContainer { + width: 90%; + max-width: 1232px; + } + .gridContainer .row { + margin-left: -15px; + margin-right: -15px; + clear: both; + } + .header-description-row:before, + .header-description-row:after { + content: normal; + } + .header-content-centered { + margin-left: auto; + margin-right: auto; + } + .header-buttons-wrapper { + margin: 0 -9px 0 -9px; + clear: both; + } + } + @media only screen and (min-width:1024px) { + .gridContainer { + width: 80%; + } + h1 { + font-size: 3.8em; + } + p { + line-height: 150%; + } + } +} + +.red { + color: red; +} + + +@media all { + .gridContainer { + margin-right: auto!important; + margin-left: auto!important; + } + .header-homepage { + background-color: #fff; + } + @media only screen and (min-width:1024px) { + .header-homepage { + min-height: auto; + } + } + p { + margin: 0 0 20px 0; + } +} + +@media all { + .homepage-template .svg-white-bg { + fill: #fff; + } +} + +.header-homepage.color-overlay:before { + background-color: #000; + opacity: .4; +} + +.header-homepage+.header-separator svg { + height: 90px!important; +} + +.header-separator svg { + height: 90px!important; +} + +.header-homepage .header-description-row { + padding-top: 8%; + padding-bottom: 8%; +} + +@media only screen and (min-width:768px) { + .header-content .align-holder { + text-align: center!important; + } + .header-content { + width: 100%!important; + } +} + +@media only screen and (min-width:768px) { + .header-homepage { + padding-bottom: 230px; + } +} + +body { + margin: 0; + background-color: #151d28; + color: #b3b3b3; + font-family: 'Source Sans Pro', sans-serif; +} +#content{ + background-color: #1a2332; + width: 100%; + padding: 20px 20%; + img { + max-width: 40%; + } +} + +#blueBar{ + height: 5px; + width: 100%; + background-color: #03A8F4; +} + +footer{ + display: flex; + justify-content: center; + flex-direction: column; + a { + text-decoration: none; + } +} + +a{ + padding: 0; + color: #b3b3b3; + text-decoration:underline; +} + +.footerIconSpacer{ + margin-left: 10px; + display: inline; +} + +.center{ + text-align: center; +} + +article{ + border: 2px solid #b3b3b3; + border-radius: 20px; + padding: 10px; + margin-right: 20px; + width: 100%; + height: 100%; + h2{ + text-align: center; + margin: 0; + } +} + +#blog{ + width: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +article:last-child{ + margin-right: 0; +} + +button{ + background: #1cb09a; + color: #fff; + text-transform: uppercase; + border: 0; + padding: 5px; + cursor: pointer; + border-radius: 5px; +} + +#homeImage{ + float: left; +} + +.spacer{ + clear: both; +} + +#footerContent{ + width: 100%; + display: flex; + justify-content: center; + + div{ + border-right: #3d3d3d 1px solid; + padding: 20px; + } + + h3 { + margin-top: 0; + } +} + +.cookieinfo{ + position: fixed; + left: 0px; + right: 0px; + height: auto; + min-height: 21px; + z-index: 2147483647; + line-height: 21px; + padding: 8px 18px; + font-family: verdana, arial, sans-serif; + font-size: 14px; + text-align: center; + bottom: 0px; + opacity: 1; + background: #1a2332; + color: #b3b3b3; + +} + +.cookieinfo-close{ + float: right; + display: block; + padding: 5px 8px; + min-width: 100px; + margin-left: 5px; + border-radius: 5px; + cursor: pointer; + background: #1cb09a; + color: #fff; + text-align: center; +} + +.cookieinfo-text { + display:block; + padding:5px 0 5px 0; +} + +.cookieinfo-link{ + text-decoration: none; + color: #1cb09a; +} +#newComment { + form { + input, textarea{ + width: 100%; + background: #1a2332; + color: #b3b3b3; + border: solid #212a39; + } + + input:focus, textarea:focus { + outline: none; + } + + textarea{ + resize: vertical; + } + + input[type=submit]{ + background: #1cb09a; + color: #fff; + text-transform: uppercase; + padding: 15px; + font-size: 14px; + cursor: pointer; + outline: 0; + border: 0; + } + } +} + +.comment{ + display: flex; + img{ + margin-right: 10px; + width: 100px; + height: 100px; + } +} + +.commentTitle{ + margin-bottom: 5px; +} + +.commentArticle{ + display: flex; + justify-content: center; + flex-direction: column; + align-items: center; + min-height: 100px; +} + +.commentText{ + margin: 0; + width: 100%; +} + +.emailBox { + display: inline; +} + +@media only screen and (max-width: 600px) { + #homeImage{ + float: none; + } + #content{ + padding-left: 10px; + padding-right: 10px; + } + #blog{ + flex-direction: column; + } + article { + margin-bottom: 10px; + margin-right: 0; + } + #banner { + a { + display: block; + } + img { + max-width: none; + width: 100%; + } + } + + #newestPost{ + display: none; + } + +} \ No newline at end of file