From 7c4f2a7e4e3a395359f87a1bc468c6218c3a15af Mon Sep 17 00:00:00 2001 From: Petar Simic Date: Tue, 31 Jul 2018 00:17:27 +0200 Subject: [PATCH] update new Security layouts design - add new screenshoots - update documentation --- README.md | 38 ++- client/dist/styles/security.css | 269 +++++++++++++----- client/dist/styles/security.min.css | 2 +- composer.json | 7 + .../security-layout-log-in-logged-in.png | Bin 0 -> 19304 bytes docs/images/security-layout-log-in.png | Bin 0 -> 15031 bytes docs/images/security-layout-log-out.png | Bin 0 -> 24039 bytes docs/images/security-layout-lost-password.png | Bin 0 -> 24491 bytes docs/images/security-layout-password-sent.png | Bin 0 -> 15632 bytes src/SecurityFormController.php | 13 +- templates/Layout/Security.ss | 10 + templates/Layout/Security_logout.ss | 18 ++ templates/Security.ss | 12 +- templates/SilverStripe/Forms/CheckboxField.ss | 4 + .../Forms/CheckboxField_holder.ss | 7 + templates/SilverStripe/Forms/TextField.ss | 1 + 16 files changed, 294 insertions(+), 87 deletions(-) create mode 100644 docs/images/security-layout-log-in-logged-in.png create mode 100644 docs/images/security-layout-log-in.png create mode 100644 docs/images/security-layout-log-out.png create mode 100644 docs/images/security-layout-lost-password.png create mode 100644 docs/images/security-layout-password-sent.png create mode 100644 templates/Layout/Security.ss create mode 100644 templates/Layout/Security_logout.ss create mode 100644 templates/SilverStripe/Forms/CheckboxField.ss create mode 100644 templates/SilverStripe/Forms/CheckboxField_holder.ss create mode 100644 templates/SilverStripe/Forms/TextField.ss diff --git a/README.md b/README.md index 0dc21af..d8e22a4 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,19 @@ [![License](https://poser.pugx.org/fractas/security-layouts/license)](https://packagist.org/packages/fractas/security-layouts) ## Overview -SilverStripe module for fancier security layouts (login/lost password etc.) +SilverStripe module for fancier security layouts _(login, logout, lost password etc.)_ see [Screenshoots](#screenshoots) to see how they look. +Inspired by Bootstrap 4. + + +## Note +This module overwrites couple of _SilverStripe FormField templates_ in order to style checkbox and input fields. + ## Requirements - SilverStripe CMS 4+ - SilverStripe Framework 4+ + ## Installation & Usage - Install via Composer ``` @@ -19,23 +26,36 @@ SilverStripe module for fancier security layouts (login/lost password etc.) - Add to your config.yml file: ```yml Fractas\SecurityForm\SecurityFormController: - company_logo: 'path/to/logo.svg' # path to project or company logo - company_name: 'ACME' # name of company or project - company_link: 'http://www.example.com' # project or company link + company_logo: 'path/to/logo.svg' # path to project or company logo, if not specified defaults to logo.png (SilverStripe logo) + company_name: 'ACME' # name of company or project, if not specified defaults to SiteConfig Title + company_link: 'http://www.example.com' # project or company link, if not specified defaults to Site's BaseHref ``` -- Run dev/build +- Run flush=all in your browser + ## Screenshoots -![Security Layout Log In](https://github.com/fractaslabs/silverstripe-security-layouts/blob/master/docs/images/security-layout-log-in.jpg) -![Security Layout Lost Password](https://github.com/fractaslabs/silverstripe-security-layouts/blob/master/docs/images/security-layout-lost-password.jpg) -![Security Layout Password Sent](https://github.com/fractaslabs/silverstripe-security-layouts/blob/master/docs/images/security-layout-password-sent.jpg) +![Security Layout Log In](docs/images/security-layout-log-in.png) + +![Security Layout Lost Password](docs/images/security-layout-lost-password.png) + +![Security Layout Password Sent](docs/images/security-layout-password-sent.png) + +![Security Layout Log Out](docs/images/security-layout-log-out.png) + +![Security Layout Log In Logged As](docs/images/security-layout-log-in-logged-in.png) ## Bugtracker Bugs are tracked on [github.com](https://github.com/fractaslabs/silverstripe-security-layouts/issues) + ## Licence -See [Licence](https://github.com/fractaslabs/silverstripe-security-layouts/blob/master/LICENSE) +See [Licence](LICENSE) + + +## Credits + +- logo.png by SilverStripe.org diff --git a/client/dist/styles/security.css b/client/dist/styles/security.css index 36de0a4..8338fc6 100644 --- a/client/dist/styles/security.css +++ b/client/dist/styles/security.css @@ -11,7 +11,9 @@ html { body { background-color: #eeeeee; - font-family: Helvetica, 'Helvetica Neue', Arial, sans-serif; + font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; font-size: 16px; line-height: 1.5; color: #333333; @@ -29,12 +31,12 @@ a:hover, a:focus { } .container { - display: block; position: absolute; left: 50%; top: 50%; -webkit-transform: translate(-50%,-50%); transform: translate(-50%,-50%); + will-change: transform; } .pre-header { @@ -43,6 +45,7 @@ a:hover, a:focus { } .logo { + margin: 0; text-align: center; } @@ -81,16 +84,20 @@ a:hover, a:focus { filter: alpha(opacity=100); } + .text-logo { + + } + .wrapper { background-color: #ffffff; border-radius: 3px; box-shadow: 0 3px 8px 1px #c2c2c2; - padding: 1.5em; + padding: 2em; width: 28em; } .header { - margin-bottom: 1.5em; + margin-bottom: 3em; } h1, h2 { @@ -109,6 +116,8 @@ a:hover, a:focus { margin-bottom: 1em; padding-bottom: 1em; border-bottom: 1px solid #eeeeee; + font-size: 15px; + color: #666666; } .header h2 { @@ -119,51 +128,115 @@ a:hover, a:focus { .login-block {} + .login-block form { + margin-top: 3em; + } + fieldset { border: none; margin: 0; padding: 0 } - .form-group, - .field, - .rs-control-group { - margin-bottom: 1em; + .field { + position: relative; + margin-bottom: 1.5em; } - label { - display: inline-block; - font-weight: bold; - font-size: .875em; - margin-bottom: .5em; - } - - .checkbox label { - font-size: 0.8125em; - font-weight: normal; - line-height: 1; + .field > label { + position: absolute; + top: 0; + left: 0; + display: block; + width: 100%; margin-bottom: 0; + line-height: 1.5; + color: #495057; + border: 1px solid transparent; + border-radius: .25rem; + -webkit-transition: all .1s ease-in-out; + transition: all .1s ease-in-out; } - input[type="checkbox"] { - margin: 0 0.5em 0 0; + .custom-control { + position: relative; + display: block; + } + + .custom-control .checkbox { + position: absolute; + z-index: -1; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + } + + .custom-control-label { + padding-left: 30px; position: relative; - top: 2px; } + .custom-control-label:before { + position: absolute; + top: 0; + left: 0; + display: block; + width: 20px; + height: 20px; + will-change: transform; + content: ""; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + pointer-events: none; + background-color: #fff; + box-shadow: none; + } + + .custom-control-label:after { + position: absolute; + top: 0; + left: 0; + display: block; + width: 20px; + height: 20px; + will-change: transform; + content: ""; + background-repeat: no-repeat; + background-position: center center; + background-size: 50% 50%; + } + + .custom-checkbox .checkbox~.custom-control-label { + cursor: pointer; + } + + .custom-checkbox .custom-control-label:before { + border-radius: 2px; + -webkit-transition: all .2s cubic-bezier(.68,-.55,.265,1.55); + transition: all .2s cubic-bezier(.68,-.55,.265,1.55); + border: 1px solid #cad1d7; + } + .custom-checkbox .checkbox:checked~.custom-control-label:before { + border-color: #007bff; + background-color: #007bff; + } + .custom-checkbox .checkbox:checked~.custom-control-label:after { + background-image: url('data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3E%3Cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3E%3C/svg%3E'); + } + .form-control, input[type="text"], input[type="password"], input[type="email"] { background-color: #ffffff; - border: 1px solid #999999; + border: 1px solid #ced4da; border-radius: 3px; - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.15) inset; + color: #495057; display: block; font-size: 1em; - font-family: Helvetica, 'Helvetica Neue', Arial, sans-serif; - height: 3em; - padding: 0.5em 1.5em; + padding: 0.75em 1.5em; + line-height: 1.5; position: relative; width: 100%; -webkit-transition: background-color 0.3s ease-in-out 0s, box-shadow 0.3s ease-in-out 0s; @@ -174,67 +247,135 @@ a:hover, a:focus { input[type="text"]:focus, input[type="password"]:focus, input[type="email"]:focus { - background-color: #f1f6ff; - box-shadow: 0 0 0 2px #1e6ec1; - outline: none; + color: #495057; + background-color: #ffffff; + border-color: #80bdff; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25); } - .alert { - font-size: 0.8125em; - margin-bottom: 1.23076923em; - } + .field.text input:not(:placeholder-shown) { + padding-top: calc(0.75em + 0.75em * (2 / 3)); + padding-bottom: calc(0.75em / 3); + } + + .field.text input:not(:placeholder-shown) ~ label { + padding-top: calc(0.75em / 3); + padding-bottom: calc(0.75em / 3); + font-size: 12px; + color: #777; + } - .alert-danger { - color: #c40022; + p.message { + margin-bottom: 1.25em; + padding: 1em; + border-radius: 3px; + border: 1px solid transparent; } - .alert-success { - color: #00a96d; + p.warning { + color: #856404; + background-color: #fff3cd; + border-color: #ffeeba; } - .login-block .action { - background-color: #6db460; - background-image: -webkit-linear-gradient(#6db460, #409d2f); - background-image: linear-gradient(#6db460, #409d2f); - border: 1px solid #1e8c0a; - border-radius: 3px; - color: #ffffff; - display: block; - font-size: 1em; - font-family: Helvetica, 'Helvetica Neue', Arial, sans-serif; - height: 3em; - padding: 0.5em 1.5em; - position: relative; - width: 100%; - font-weight: bold; - text-align: center; - cursor: pointer; - -webkit-transition: background-image 0.3s ease-in-out 0s; - transition: background-image 0.3s ease-in-out 0s; + p.info { + color: #155724; + background-color: #d4edda; + border-color: #c3e6cb; } - .login-block .action:hover, .login-block .action:focus { - background-color: #56a947; - background-image: -webkit-linear-gradient(#56a947, #299216); - background-image: linear-gradient(#56a947, #299216); + p.success { + color: #155724; + background-color: #d4edda; + border-color: #c3e6cb; } + .login-block .action { + background-color: #6db460; + background-image: -webkit-linear-gradient(#6db460, #409d2f); + background-image: linear-gradient(#6db460, #409d2f); + border: 1px solid #1e8c0a; + border-radius: 3px; + color: #ffffff; + display: block; + font-size: 1em; + height: 3em; + padding: 0.5em 1.5em; + position: relative; + width: 100%; + font-weight: bold; + text-align: center; + cursor: pointer; + -webkit-transition: background-image 0.3s ease-in-out 0s; + transition: background-image 0.3s ease-in-out 0s; + } + + .login-block .action:hover, .login-block .action:focus { + background-color: #56a947; + background-image: -webkit-linear-gradient(#56a947, #299216); + background-image: linear-gradient(#56a947, #299216); + } + + .or { + display: block; + position: relative; + margin-top: 2em; + margin-bottom: 2em; + text-align: center; + } + + .or:before { + position: absolute; + background-color: #c2c2c2; + height: 1px; + content: ""; + width: 50%; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%,-50%); + transform: translate(-50%,-50%); + } + + .or > span { + background-color: #ffffff; + position: relative; + padding: 5px 10px; + text-transform: uppercase; + } + + .text-center { + text-align: center; + } + + .back-to { + display: inline-block; + } + #ForgotPassword { margin-bottom: 0; + margin-top: 2em; } .footer { padding: 0.75em 1.5em 0; } + .copy { + color: #666666; + text-align: center; + margin: 0; + font-size: 14px; + } + @media (max-width: 767px) { body { - font-size: 14px; + overflow-x: hidden; } .pre-header, .wrapper { - width: 25em; + width: auto; } .container { @@ -243,6 +384,6 @@ a:hover, a:focus { transform: none; left: auto; top: auto; - margin: 2em auto; + margin: 2em; } } diff --git a/client/dist/styles/security.min.css b/client/dist/styles/security.min.css index d41ba46..606e051 100644 --- a/client/dist/styles/security.min.css +++ b/client/dist/styles/security.min.css @@ -1 +1 @@ -html{box-sizing:border-box;font-size:62.5%}*,*:after,*:before{box-sizing:inherit}body{background-color:#eee;font-family:Helvetica,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:1.5;color:#333;margin:0}a{color:#1e6ec1;text-decoration:none;outline:none}a:hover,a:focus{text-decoration:underline}.container{display:block;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.pre-header{padding:0 1.5em .75em;width:28em}.logo{text-align:center}.logo a{display:inline-block}.logo img{border:none;max-width:100%;max-height:3em;display:block;filter:url("data:image/svg+xml;utf8,#grayscale");-webkit-filter:grayscale(1);filter:url('data:image/svg+xml;charset=utf-8,#filter');filter:grayscale(1);-webkit-filter:gray;filter:gray;opacity:.65;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=65)";filter:alpha(opacity=65);-webkit-transition:-webkit-filter .5s ease-in-out 0s,opacity .5s ease-in-out 0s,filter .5s ease-in-out 0s,opacity .5s ease-in-out 0s;-webkit-transition:opacity .5s ease-in-out 0s,-webkit-filter .5s ease-in-out 0s;transition:opacity .5s ease-in-out 0s,-webkit-filter .5s ease-in-out 0s;transition:filter .5s ease-in-out 0s,opacity .5s ease-in-out 0s;transition:filter .5s ease-in-out 0s,opacity .5s ease-in-out 0s,-webkit-filter .5s ease-in-out 0s}.logo a:hover img,.logo a:focus img{filter:url('data:image/svg+xml;charset=utf-8,#filter');-webkit-filter:grayscale(0);filter:grayscale(0);opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100)}.wrapper{background-color:#fff;border-radius:3px;box-shadow:0 3px 8px 1px #c2c2c2;padding:1.5em;width:28em}.header{margin-bottom:1.5em}h1,h2{font-weight:700;line-height:1}.app-title{font-size:1.75em;margin-top:0;margin-bottom:.25em}.app-tagline{margin-top:0;margin-bottom:1em;padding-bottom:1em;border-bottom:1px solid #eee}.header h2{margin-top:0;font-size:1.5em;margin-bottom:0}fieldset{border:none;margin:0;padding:0}.form-group,.field,.rs-control-group{margin-bottom:1em}label{display:inline-block;font-weight:700;font-size:.875em;margin-bottom:.5em}.checkbox label{font-size:.8125em;font-weight:400;line-height:1;margin-bottom:0}input[type=checkbox]{margin:0 .5em 0 0;position:relative;top:2px}.form-control,input[type=text],input[type=password],input[type=email]{background-color:#fff;border:1px solid #999;border-radius:3px;box-shadow:0 1px 3px 0 rgba(0,0,0,.15) inset;display:block;font-size:1em;font-family:Helvetica,Helvetica Neue,Arial,sans-serif;height:3em;padding:.5em 1.5em;position:relative;width:100%;-webkit-transition:background-color .3s ease-in-out 0s,box-shadow .3s ease-in-out 0s;transition:background-color .3s ease-in-out 0s,box-shadow .3s ease-in-out 0s}.form-control:focus,input[type=text]:focus,input[type=password]:focus,input[type=email]:focus{background-color:#f1f6ff;box-shadow:0 0 0 2px #1e6ec1;outline:none}.alert{font-size:.8125em;margin-bottom:1.23076923em}.alert-danger{color:#c40022}.alert-success{color:#00a96d}.login-block .action{background-color:#6db460;background-image:-webkit-linear-gradient(#6db460,#409d2f);background-image:linear-gradient(#6db460,#409d2f);border:1px solid #1e8c0a;border-radius:3px;color:#fff;display:block;font-size:1em;font-family:Helvetica,Helvetica Neue,Arial,sans-serif;height:3em;padding:.5em 1.5em;position:relative;width:100%;font-weight:700;text-align:center;cursor:pointer;-webkit-transition:background-image .3s ease-in-out 0s;transition:background-image .3s ease-in-out 0s}.login-block .action:hover,.login-block .action:focus{background-color:#56a947;background-image:-webkit-linear-gradient(#56a947,#299216);background-image:linear-gradient(#56a947,#299216)}#ForgotPassword{margin-bottom:0}.footer{padding:.75em 1.5em 0}@media(max-width:767px){body{font-size:14px}.pre-header,.wrapper{width:25em}.container{position:static;-webkit-transform:none;transform:none;left:auto;top:auto;margin:2em auto}} +html{box-sizing:border-box;font-size:62.5%}*,*:after,*:before{box-sizing:inherit}body{background-color:#eee;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.5;color:#333;margin:0}a{color:#1e6ec1;text-decoration:none;outline:none}a:hover,a:focus{text-decoration:underline}.container{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);will-change:transform}.pre-header{padding:0 1.5em .75em;width:28em}.logo{margin:0;text-align:center}.logo a{display:inline-block}.logo img{border:none;max-width:100%;max-height:3em;display:block;filter:url("data:image/svg+xml;utf8,#grayscale");-webkit-filter:grayscale(1);filter:url('data:image/svg+xml;charset=utf-8,#filter');filter:grayscale(1);-webkit-filter:gray;filter:gray;opacity:.65;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=65)";filter:alpha(opacity=65);-webkit-transition:-webkit-filter .5s ease-in-out 0s,opacity .5s ease-in-out 0s,filter .5s ease-in-out 0s,opacity .5s ease-in-out 0s;-webkit-transition:opacity .5s ease-in-out 0s,-webkit-filter .5s ease-in-out 0s;transition:opacity .5s ease-in-out 0s,-webkit-filter .5s ease-in-out 0s;transition:filter .5s ease-in-out 0s,opacity .5s ease-in-out 0s;transition:filter .5s ease-in-out 0s,opacity .5s ease-in-out 0s,-webkit-filter .5s ease-in-out 0s}.logo a:hover img,.logo a:focus img{filter:url('data:image/svg+xml;charset=utf-8,#filter');-webkit-filter:grayscale(0);filter:grayscale(0);opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100)}.wrapper{background-color:#fff;border-radius:3px;box-shadow:0 3px 8px 1px #c2c2c2;padding:2em;width:28em}.header{margin-bottom:3em}h1,h2{font-weight:700;line-height:1}.app-title{font-size:1.75em;margin-top:0;margin-bottom:.25em}.app-tagline{margin-top:0;margin-bottom:1em;padding-bottom:1em;border-bottom:1px solid #eee;font-size:15px;color:#666}.header h2{margin-top:0;font-size:1.5em;margin-bottom:0}.login-block form{margin-top:3em}fieldset{border:none;margin:0;padding:0}.field{position:relative;margin-bottom:1.5em}.field>label{position:absolute;top:0;left:0;display:block;width:100%;margin-bottom:0;line-height:1.5;color:#495057;border:1px solid transparent;border-radius:.25rem;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.custom-control{position:relative;display:block}.custom-control .checkbox{position:absolute;z-index:-1;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.custom-control-label{padding-left:30px;position:relative}.custom-control-label:before{position:absolute;top:0;left:0;display:block;width:20px;height:20px;will-change:transform;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;background-color:#fff;box-shadow:none}.custom-control-label:after{position:absolute;top:0;left:0;display:block;width:20px;height:20px;will-change:transform;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .checkbox~.custom-control-label{cursor:pointer}.custom-checkbox .custom-control-label:before{border-radius:2px;-webkit-transition:all .2s cubic-bezier(.68,-.55,.265,1.55);transition:all .2s cubic-bezier(.68,-.55,.265,1.55);border:1px solid #cad1d7}.custom-checkbox .checkbox:checked~.custom-control-label:before{border-color:#007bff;background-color:#007bff}.custom-checkbox .checkbox:checked~.custom-control-label:after{background-image:url('data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3E%3Cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3E%3C/svg%3E')}.form-control,input[type=text],input[type=password],input[type=email]{background-color:#fff;border:1px solid #ced4da;border-radius:3px;color:#495057;display:block;font-size:1em;padding:.75em 1.5em;line-height:1.5;position:relative;width:100%;-webkit-transition:background-color .3s ease-in-out 0s,box-shadow .3s ease-in-out 0s;transition:background-color .3s ease-in-out 0s,box-shadow .3s ease-in-out 0s}.form-control:focus,input[type=text]:focus,input[type=password]:focus,input[type=email]:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.field.text input:not(:placeholder-shown){padding-top:calc(.75em + .75em*(2/3));padding-bottom:calc(.75em/3)}.field.text input:not(:placeholder-shown)~label{padding-top:calc(.75em/3);padding-bottom:calc(.75em/3);font-size:12px;color:#777}p.message{margin-bottom:1.25em;padding:1em;border-radius:3px;border:1px solid transparent}p.warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}p.info{color:#155724;background-color:#d4edda;border-color:#c3e6cb}p.success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.login-block .action{background-color:#6db460;background-image:-webkit-linear-gradient(#6db460,#409d2f);background-image:linear-gradient(#6db460,#409d2f);border:1px solid #1e8c0a;border-radius:3px;color:#fff;display:block;font-size:1em;height:3em;padding:.5em 1.5em;position:relative;width:100%;font-weight:700;text-align:center;cursor:pointer;-webkit-transition:background-image .3s ease-in-out 0s;transition:background-image .3s ease-in-out 0s}.login-block .action:hover,.login-block .action:focus{background-color:#56a947;background-image:-webkit-linear-gradient(#56a947,#299216);background-image:linear-gradient(#56a947,#299216)}.or{display:block;position:relative;margin-top:2em;margin-bottom:2em;text-align:center}.or:before{position:absolute;background-color:#c2c2c2;height:1px;content:"";width:50%;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.or>span{background-color:#fff;position:relative;padding:5px 10px;text-transform:uppercase}.text-center{text-align:center}.back-to{display:inline-block}#ForgotPassword{margin-bottom:0;margin-top:2em}.footer{padding:.75em 1.5em 0}.copy{color:#666;text-align:center;margin:0;font-size:14px}@media(max-width:767px){body{overflow-x:hidden}.pre-header,.wrapper{width:auto}.container{position:static;-webkit-transform:none;transform:none;left:auto;top:auto;margin:2em}} diff --git a/composer.json b/composer.json index 8b9a5ad..b9add9e 100644 --- a/composer.json +++ b/composer.json @@ -30,6 +30,13 @@ }, "expose": [ "client/dist" + ], + "screenshoots": [ + "docs/images/security-layout-log-in.png", + "docs/images/security-layout-lost-password.png", + "docs/images/security-layout-password-sent.png", + "docs/images/security-layout-log-out.png", + "docs/images/security-layout-log-in-logged-in.png" ] }, "autoload": { diff --git a/docs/images/security-layout-log-in-logged-in.png b/docs/images/security-layout-log-in-logged-in.png new file mode 100644 index 0000000000000000000000000000000000000000..c8839b06e0304df9ac1fa92793b601a8c9eadf2f GIT binary patch literal 19304 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 BWaIz< literal 0 HcmV?d00001 diff --git a/docs/images/security-layout-log-in.png b/docs/images/security-layout-log-in.png new file mode 100644 index 0000000000000000000000000000000000000000..6f2ceb58a32225fb65b654b83346cc5f6f482fbe GIT binary patch literal 15031 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 literal 0 HcmV?d00001 diff --git a/docs/images/security-layout-lost-password.png b/docs/images/security-layout-lost-password.png new file mode 100644 index 0000000000000000000000000000000000000000..58ce0dd318a9bcb917f1dfc3246565d0554dcf26 GIT binary patch literal 24491 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.'/images/logo.png'; + $res = ModuleResourceLoader::singleton() + ->resourceURL('fractas/security-layouts:client/dist/images/logo.png'); + + return $res; } /** diff --git a/templates/Layout/Security.ss b/templates/Layout/Security.ss new file mode 100644 index 0000000..c9ff209 --- /dev/null +++ b/templates/Layout/Security.ss @@ -0,0 +1,10 @@ +
+
+

$Siteconfig.Title

+ <% if $SiteConfig.Tagline %>

$SiteConfig.Tagline

<% end_if %> +
+ +
diff --git a/templates/Layout/Security_logout.ss b/templates/Layout/Security_logout.ss new file mode 100644 index 0000000..97d7412 --- /dev/null +++ b/templates/Layout/Security_logout.ss @@ -0,0 +1,18 @@ +
+
+

$Siteconfig.Title

+ <% if $SiteConfig.Tagline %>

$SiteConfig.Tagline

<% end_if %> +

<%t Security.HELLO "Hello" %>

+ <% if $CurrentUser %> +

<%t Security.LOGOUT "You're currently logged in as {name}" name=$CurrentUser.Title %>

+ <% end_if %> +
+ +
diff --git a/templates/Security.ss b/templates/Security.ss index 12fb1b1..0d22534 100644 --- a/templates/Security.ss +++ b/templates/Security.ss @@ -11,24 +11,24 @@
- +
$Layout - <%-- --%> +
+

© {$Now.Year}

+
diff --git a/templates/SilverStripe/Forms/CheckboxField.ss b/templates/SilverStripe/Forms/CheckboxField.ss new file mode 100644 index 0000000..0316643 --- /dev/null +++ b/templates/SilverStripe/Forms/CheckboxField.ss @@ -0,0 +1,4 @@ +
+ + +
diff --git a/templates/SilverStripe/Forms/CheckboxField_holder.ss b/templates/SilverStripe/Forms/CheckboxField_holder.ss new file mode 100644 index 0000000..c009abb --- /dev/null +++ b/templates/SilverStripe/Forms/CheckboxField_holder.ss @@ -0,0 +1,7 @@ +
+
+ $Field +
+ <% if $Message %>$Message<% end_if %> + <% if $Description %>$Description<% end_if %> +
diff --git a/templates/SilverStripe/Forms/TextField.ss b/templates/SilverStripe/Forms/TextField.ss new file mode 100644 index 0000000..85006c3 --- /dev/null +++ b/templates/SilverStripe/Forms/TextField.ss @@ -0,0 +1 @@ +