Finished Registration
This commit is contained in:
parent
bd716544b0
commit
7a98daf886
|
@ -1,5 +1,5 @@
|
|||
/app/config/parameters.yml
|
||||
/build/
|
||||
/build/dist/
|
||||
/phpunit.xml
|
||||
/var/*
|
||||
!/var/cache
|
||||
|
@ -16,6 +16,7 @@
|
|||
/web/bundles/
|
||||
/web/js/
|
||||
/web/css/
|
||||
/web/images/
|
||||
*~
|
||||
/lib
|
||||
.idea
|
||||
|
|
15
Gruntfile.js
15
Gruntfile.js
|
@ -17,7 +17,8 @@ module.exports = function (grunt) {
|
|||
src: [
|
||||
'./vendor/bower/jquery/dist/jquery.js',
|
||||
'./vendor/bower/uikit/dist/js/uikit.js',
|
||||
'./vendor/bower/uikit/dist/js/uikit-icons.js'
|
||||
'./vendor/bower/uikit/dist/js/uikit-icons.js',
|
||||
'./vendor/bower/select2/dist/js/select2.full.min.js'
|
||||
],
|
||||
dest: 'build/dist/js/vendor.min.js'
|
||||
}
|
||||
|
@ -97,6 +98,18 @@ module.exports = function (grunt) {
|
|||
cwd: './vendor/bower/uikit/dist/images',
|
||||
src: ['**'],
|
||||
dest: 'web/images'
|
||||
},
|
||||
{
|
||||
expand:true,
|
||||
cwd: './vendor/bower/select2/dist/css',
|
||||
src: ['select2.min.css'],
|
||||
dest: 'web/css'
|
||||
},
|
||||
{
|
||||
expand: true,
|
||||
cwd: 'build/images',
|
||||
src: ['*'],
|
||||
dest: 'web/images'
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{% extends "@FOSUser/layout.html.twig" %}
|
||||
{% extends "base.html.twig" %}
|
||||
|
||||
{% block fos_user_content %}
|
||||
{% block body %}
|
||||
{% include "@FOSUser/Registration/register_content.html.twig" %}
|
||||
{% endblock fos_user_content %}
|
||||
{% endblock body %}
|
||||
|
|
|
@ -1,8 +1,83 @@
|
|||
{% trans_default_domain 'FOSUserBundle' %}
|
||||
|
||||
{{ form_start(form, {'method': 'post', 'action': path('fos_user_registration_register'), 'attr': {'class': 'fos_user_registration_register'}}) }}
|
||||
{{ form_widget(form) }}
|
||||
<div>
|
||||
<input type="submit" value="{{ 'registration.submit'|trans }}" />
|
||||
<div class="uk-width-1-1">
|
||||
{{ form_errors(form) }}
|
||||
</div>
|
||||
{{ form_start(form, {'method': 'post', 'action': path('fos_user_registration_register'), 'attr': {'class': 'fos_user_registration_register uk-form'}}) }}
|
||||
<fieldset class="uk-fieldset">
|
||||
<legend class="uk-legend">
|
||||
Register account
|
||||
</legend>
|
||||
<div class="uk-margin">
|
||||
<div hidden>{{ form_label(form.email) }}</div>
|
||||
<div class="uk-form-controls uk-form-controls-text">
|
||||
{{ form_widget(form.email, { 'attr': {'placeholder':'Email address', 'class':'uk-input uk-form-large uk-padding-small'} }) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin">
|
||||
<div hidden>{{ form_label(form.username, 'Username', { 'label_attr':{'class':'uk-form-label'}}) }}</div>
|
||||
<div class="uk-form-controls uk-form-controls-text">
|
||||
{{ form_widget(form.username, { 'attr': {'placeholder':'Username', 'class':'uk-input uk-form-large uk-padding-small'} }) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin">
|
||||
<div hidden>{{ form_label(form.first_name, 'First name', { 'label_attr':{'class':'uk-form-label'}}) }}</div>
|
||||
<div class="uk-form-controls uk-form-controls-text">
|
||||
{{ form_widget(form.first_name, { 'attr': {'placeholder':'First name', 'class':'uk-input uk-form-large uk-padding-small'} }) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin">
|
||||
<div hidden>{{ form_label(form.last_name, 'Last name', { 'label_attr':{'class':'uk-form-label'}}) }}</div>
|
||||
<div class="uk-form-controls uk-form-controls-text">
|
||||
{{ form_widget(form.last_name, { 'attr': {'placeholder':'Last name', 'class':'uk-input uk-input uk-form-large uk-padding-small'} }) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin uk-grid" uk-grid>
|
||||
<div class="uk-width-2-3">
|
||||
{{ form_label(form.familyside) }}
|
||||
</div>
|
||||
<div class="uk-width-1-3">
|
||||
<div class="uk-form-controls uk-form-controls-text">
|
||||
{{ form_widget(form.familyside) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin uk-grid" uk-grid>
|
||||
<div class="uk-width-3-4 uk-width-2-3@m">
|
||||
{{ form_label(form.family) }}
|
||||
</div>
|
||||
<div class="uk-width-1-4@s uk-width-1-4 uk-width-1-3@m uk-form-controls">
|
||||
|
||||
{{ form_widget(form.family, { 'attr': {'class':'uk-checkbox'} }) }}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin">
|
||||
<div hidden>{{ form_label(form.rsvp) }}</div>
|
||||
<div class="uk-form-controls uk-form-controls-text">
|
||||
{{ form_widget(form.rsvp) }}
|
||||
</div>
|
||||
<div class="uk-margin">
|
||||
<div hidden>{{ form_label(form.plainPassword.first, 'Password', { 'label_attr':{'class':'uk-form-label'}}) }}</div>
|
||||
<div class="uk-form-controls uk-form-controls-text">
|
||||
{{ form_widget(form.plainPassword.first, { 'attr': {'placeholder':'Password', 'class':'uk-input uk-form-large uk-padding-small'} }) }}
|
||||
</div>
|
||||
</>
|
||||
<div class="uk-margin">
|
||||
<div hidden>{{ form_label(form.plainPassword.second, 'Repeat ', { 'label_attr':{'class':'uk-form-label'}}) }}</div>
|
||||
<div class="uk-form-controls uk-form-controls-text">
|
||||
{{ form_widget(form.plainPassword.second, { 'attr': {'placeholder':'Repeat Password', 'class':'uk-input uk-form-large uk-padding-small'} }) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="uk-margin uk-grid" uk-grid>
|
||||
<div class="uk-form-controls uk-width-1-2">
|
||||
<input type="submit" value="{{ 'registration.submit'|trans }}" class="uk-button uk-button-primary uk-button-large" />
|
||||
</div>
|
||||
<div class="uk-form-controls-text uk-text-muted uk-margin-small-top uk-width-1-2">
|
||||
<div class="uk-text-large uk-visible@m">Already have an account? Login <a href="{{ path('fos_user_security_login') }}">here</a>.</div>
|
||||
<div class="uk-hidden@m uk-padding-small uk-padding-remove-vertical">Already have an account? Login <a href="{{ path('fos_user_security_login') }}">here</a>.</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
{{ form_end(form) }}
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<title>Title</title>
|
||||
<meta name="viewport" id="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0">
|
||||
<link rel="stylesheet" type="text/css" href="{{ asset('css/doughnutwedding.min.css') }}" />
|
||||
<link rel="stylesheet" type="text/css" href="{{ asset('css/select2.min.css') }}" />
|
||||
<script src="{{ asset('js/vendor.min.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ asset('js/doughnutwedding.min.js') }}" type="text/javascript"></script>
|
||||
</head>
|
||||
|
@ -17,6 +18,8 @@
|
|||
<div class="uk-container-small uk-container uk-margin-large-top uk-margin-large-bottom">
|
||||
{% include 'flash_messages.html.twig' %}
|
||||
{% block body %}{% endblock %}
|
||||
{% include "social_login.html.twig" %}
|
||||
{% block footer %}{% endblock %}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,76 +1,19 @@
|
|||
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block body %}
|
||||
<div id="wrapper">
|
||||
<div id="container">
|
||||
<div id="welcome">
|
||||
<h1><span>Welcome to</span> Symfony {{ constant('Symfony\\Component\\HttpKernel\\Kernel::VERSION') }}</h1>
|
||||
<div class="uk-child-width-1-3@s uk-grid-small" uk-grid>
|
||||
<div>
|
||||
<div class="uk-background-cover uk-margin-small-bottom uk-height-small uk-card uk-card-default uk-card-body uk-flex uk-flex-center uk-flex-middle" style="background-image:url(http://placekitten.com/g/500/500);">
|
||||
</div>
|
||||
|
||||
<div id="status">
|
||||
<p>
|
||||
<svg id="icon-status" width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z" fill="#759E1A"/></svg>
|
||||
|
||||
Your application is now ready. You can start working on it at:
|
||||
<code>{{ base_dir }}</code>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="next">
|
||||
<h2>What's next?</h2>
|
||||
<p>
|
||||
<svg id="icon-book" version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" viewBox="-12.5 9 64 64" enable-background="new -12.5 9 64 64" xml:space="preserve">
|
||||
<path fill="#AAA" d="M6.8,40.8c2.4,0.8,4.5-0.7,4.9-2.5c0.2-1.2-0.3-2.1-1.3-3.2l-0.8-0.8c-0.4-0.5-0.6-1.3-0.2-1.9
|
||||
c0.4-0.5,0.9-0.8,1.8-0.5c1.3,0.4,1.9,1.3,2.9,2.2c-0.4,1.4-0.7,2.9-0.9,4.2l-0.2,1c-0.7,4-1.3,6.2-2.7,7.5
|
||||
c-0.3,0.3-0.7,0.5-1.3,0.6c-0.3,0-0.4-0.3-0.4-0.3c0-0.3,0.2-0.3,0.3-0.4c0.2-0.1,0.5-0.3,0.4-0.8c0-0.7-0.6-1.3-1.3-1.3
|
||||
c-0.6,0-1.4,0.6-1.4,1.7s1,1.9,2.4,1.8c0.8,0,2.5-0.3,4.2-2.5c2-2.5,2.5-5.4,2.9-7.4l0.5-2.8c0.3,0,0.5,0.1,0.8,0.1
|
||||
c2.4,0.1,3.7-1.3,3.7-2.3c0-0.6-0.3-1.2-0.9-1.2c-0.4,0-0.8,0.3-1,0.8c-0.1,0.6,0.8,1.1,0.1,1.5c-0.5,0.3-1.4,0.6-2.7,0.4l0.3-1.3
|
||||
c0.5-2.6,1-5.7,3.2-5.8c0.2,0,0.8,0,0.8,0.4c0,0.2,0,0.2-0.2,0.5c-0.2,0.3-0.3,0.4-0.2,0.7c0,0.7,0.5,1.1,1.2,1.1
|
||||
c0.9,0,1.2-1,1.2-1.4c0-1.2-1.2-1.8-2.6-1.8c-1.5,0.1-2.8,0.9-3.7,2.1c-1.1,1.3-1.8,2.9-2.3,4.5c-0.9-0.8-1.6-1.8-3.1-2.3
|
||||
c-1.1-0.7-2.3-0.5-3.4,0.3c-0.5,0.4-0.8,1-1,1.6c-0.4,1.5,0.4,2.9,0.8,3.4l0.9,1c0.2,0.2,0.6,0.8,0.4,1.5c-0.3,0.8-1.2,1.3-2.1,1
|
||||
c-0.4-0.2-1-0.5-0.9-0.9c0.1-0.2,0.2-0.3,0.3-0.5s0.1-0.3,0.1-0.3c0.2-0.6-0.1-1.4-0.7-1.6c-0.6-0.2-1.2,0-1.3,0.8
|
||||
C4.3,38.4,4.7,40,6.8,40.8z M46.1,20.9c0-4.2-3.2-7.5-7.1-7.5h-3.8C34.8,10.8,32.7,9,30.2,9L-2.3,9.1c-2.8,0.1-4.9,2.4-4.9,5.4
|
||||
L-7,58.6c0,4.8,8.1,13.9,11.6,14.1l34.7-0.1c3.9,0,7-3.4,7-7.6L46.1,20.9z M-0.3,36.4c0-8.6,6.5-15.6,14.5-15.6
|
||||
c8,0,14.5,7,14.5,15.6S22.1,52,14.2,52C6.1,52-0.3,45-0.3,36.4z M42.1,65.1c0,1.8-1.5,3.1-3.1,3.1H4.6c-0.7,0-3-1.8-4.5-4.4h30.4
|
||||
c2.8,0,5-2.4,5-5.4V17.9h3.7c1.6,0,2.9,1.4,2.9,3.1V65.1L42.1,65.1z"/>
|
||||
</svg>
|
||||
|
||||
Read the documentation to learn
|
||||
<a href="http://symfony.com/doc/{{ constant('Symfony\\Component\\HttpKernel\\Kernel::VERSION')[:3] }}/page_creation.html">
|
||||
How to create your first page in Symfony
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="uk-height-small uk-card uk-card-default uk-card-body uk-flex uk-flex-center uk-flex-middle">Small2</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="uk-height-medium uk-card uk-card-default uk-card-body uk-flex uk-flex-center uk-flex-middle">Medium</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="uk-height-large uk-card uk-card-default uk-card-body uk-flex uk-flex-center uk-flex-middle">Large</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block stylesheets %}
|
||||
<style>
|
||||
body { background: #F5F5F5; font: 18px/1.5 sans-serif; }
|
||||
h1, h2 { line-height: 1.2; margin: 0 0 .5em; }
|
||||
h1 { font-size: 36px; }
|
||||
h2 { font-size: 21px; margin-bottom: 1em; }
|
||||
p { margin: 0 0 1em 0; }
|
||||
a { color: #0000F0; }
|
||||
a:hover { text-decoration: none; }
|
||||
code { background: #F5F5F5; max-width: 100px; padding: 2px 6px; word-wrap: break-word; }
|
||||
#wrapper { background: #FFF; margin: 1em auto; max-width: 800px; width: 95%; }
|
||||
#container { padding: 2em; }
|
||||
#welcome, #status { margin-bottom: 2em; }
|
||||
#welcome h1 span { display: block; font-size: 75%; }
|
||||
#icon-status, #icon-book { float: left; height: 64px; margin-right: 1em; margin-top: -4px; width: 64px; }
|
||||
#icon-book { display: none; }
|
||||
|
||||
@media (min-width: 768px) {
|
||||
#wrapper { width: 80%; margin: 2em auto; }
|
||||
#icon-book { display: inline-block; }
|
||||
#status a, #next a { display: block; }
|
||||
|
||||
@-webkit-keyframes fade-in { 0% { opacity: 0; } 100% { opacity: 1; } }
|
||||
@keyframes fade-in { 0% { opacity: 0; } 100% { opacity: 1; } }
|
||||
.sf-toolbar { opacity: 0; -webkit-animation: fade-in 1s .2s forwards; animation: fade-in 1s .2s forwards;}
|
||||
}
|
||||
</style>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block stylesheets %}
|
||||
|
||||
{% endblock %}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
|
||||
{% if(is_granted('IS_AUTHENTICATED_ANONYMOUSLY') and hide_social is not defined ) %}
|
||||
<div class="uk-width-1-1 uk-padding-small uk-align-center">
|
||||
<h4 class="uk-heading-line uk-text-center"><span><a href="{{ url('fos_user_security_login') }}" title="Login">Login</a></span></h4>
|
||||
<ul class="uk-iconnav uk-grid uk-child-width-1-6" uk-grid>
|
||||
<li>
|
||||
<a class="uk-text-center uk-login uk-login-facebook" href="{{ url("hwi_oauth_service_redirect", {service: "facebook"}) }}" uk-icon="icon: facebook; ratio:1.5"></a>
|
||||
</li>
|
||||
<li><a class="uk-text-center uk-login uk-login-google" href="{{ url("hwi_oauth_service_redirect", {service: "google"}) }}" uk-icon="icon: google; ratio:1.5"></a></li>
|
||||
<li><a class="uk-text-center uk-login uk-login-twitter" href="{{ url("hwi_oauth_service_redirect", {service: "twitter"}) }}" uk-icon="icon: twitter; ratio:1.5"></a></li>
|
||||
<li><a href="{{ url("hwi_oauth_service_redirect", {service: "yahoo"}) }}" class="uk-icon-image uk-align-center uk-login uk-login-yahoo"><img height="30" width="30" src="{{ asset('images/yahoo.svg') }}" uk-svg></a></li>
|
||||
<li><a href="{{ url("hwi_oauth_service_redirect", {service: "amazon"}) }}" class="uk-icon-image uk-align-center uk-login uk-login-amazon"><img height="30" width="30" src="{{ asset('images/amazon.svg') }}" uk-svg></a></li>
|
||||
|
||||
<li><a class="uk-text-center uk-login uk-login-instagram" href="{{ url("hwi_oauth_service_redirect", {service: "instagram"}) }}" uk-icon="icon: instagram; ratio:1.5"></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
|
@ -185,3 +185,5 @@ fos_user:
|
|||
form:
|
||||
type: Sikofitt\DoughnutWeddingBundle\Form\RegistrationType
|
||||
|
||||
sikofitt_doughnut_wedding:
|
||||
max_rsvps: ~
|
|
@ -1,33 +1,51 @@
|
|||
hwi_oauth_redirect:
|
||||
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
|
||||
prefix: /user/connect
|
||||
prefix: /connect
|
||||
|
||||
hwi_oauth_connect:
|
||||
resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"
|
||||
prefix: /user/connect
|
||||
prefix: /connect
|
||||
|
||||
hwi_oauth_login:
|
||||
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
|
||||
prefix: /user/oauth
|
||||
prefix: /login/oauth
|
||||
|
||||
facebook_login:
|
||||
path: /user/login/callback/facebook
|
||||
path: /login/callback/facebook
|
||||
google_login:
|
||||
path: /user/login/callback/google
|
||||
path: /login/callback/google
|
||||
twitter_login:
|
||||
path: /user/login/callback/twitter
|
||||
path: /login/callback/twitter
|
||||
windows_login:
|
||||
path: /user/login/callback/windows
|
||||
path: /login/callback/windows
|
||||
instagram_login:
|
||||
path: /user/login/callback/instagram
|
||||
path: /login/callback/instagram
|
||||
amazon_login:
|
||||
path: /user/login/callback/amazon
|
||||
path: /login/callback/amazon
|
||||
yahoo_login:
|
||||
path: /user/login/callback/yahoo
|
||||
path: /login/callback/yahoo
|
||||
|
||||
fos_user:
|
||||
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
|
||||
prefix: /user
|
||||
os_user_security:
|
||||
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
|
||||
#paths
|
||||
# /login
|
||||
# /login_check
|
||||
# /logout
|
||||
fos_user_profile:
|
||||
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
|
||||
prefix: /user/profile
|
||||
|
||||
fos_user_register:
|
||||
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
|
||||
prefix: /register
|
||||
|
||||
fos_user_resetting:
|
||||
resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
|
||||
prefix: /resetting
|
||||
|
||||
fos_user_change_password:
|
||||
resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
|
||||
prefix: /user/profile
|
||||
|
||||
sikofitt_doughnut_wedding:
|
||||
resource: "@SikofittDoughnutWeddingBundle/Controller/"
|
||||
|
|
|
@ -5,13 +5,9 @@ security:
|
|||
FOS\UserBundle\Model\UserInterface:
|
||||
algorithm: bcrypt
|
||||
cost: 14
|
||||
# http://symfony.com/doc/current/security.html#b-configuring-how-users-are-loaded
|
||||
providers:
|
||||
#in_memory:
|
||||
# memory: ~
|
||||
fos_userbundle:
|
||||
id: fos_user.user_provider.username
|
||||
#id: fos_user.user_manager
|
||||
id: fos_user.user_provider.username_email
|
||||
firewalls:
|
||||
# disables authentication for assets and the profiler, adapt it according to your needs
|
||||
dev:
|
||||
|
@ -21,40 +17,31 @@ security:
|
|||
pattern: ^/
|
||||
form_login:
|
||||
provider: fos_userbundle
|
||||
login_path: /user/connect/
|
||||
check_path: /login/login_check
|
||||
login_path: /login
|
||||
check_path: /login_check
|
||||
logout:
|
||||
path: /user/logout
|
||||
path: /logout
|
||||
target: /
|
||||
anonymous: true
|
||||
oauth:
|
||||
resource_owners:
|
||||
facebook: /user/login/callback/facebook
|
||||
google: /user/login/callback/google
|
||||
twitter: /user/login/callback/twitter
|
||||
windows: /user/login/callback/windows
|
||||
instagram: /user/login/callback/instagram
|
||||
amazon: /user/login/callback/amazon
|
||||
yahoo: /user/login/callback/yahoo
|
||||
login_path: /user/oauth
|
||||
facebook: /login/callback/facebook
|
||||
google: /login/callback/google
|
||||
twitter: /login/callback/twitter
|
||||
windows: /login/callback/windows
|
||||
instagram: /login/callback/instagram
|
||||
amazon: /login/callback/amazon
|
||||
yahoo: /login/callback/yahoo
|
||||
login_path: /login
|
||||
use_forward: false
|
||||
failure_path: /user/oauth
|
||||
failure_path: /login
|
||||
oauth_user_provider:
|
||||
service: hwi_oauth.user.provider.fosub_bridge
|
||||
#oauth_user_provider:
|
||||
# service: my.oauth_aware.user_provider.service
|
||||
|
||||
main:
|
||||
anonymous: ~
|
||||
# activate different ways to authenticate
|
||||
|
||||
# http://symfony.com/doc/current/security.html#a-configuring-how-your-users-will-authenticate
|
||||
#http_basic: ~
|
||||
|
||||
# http://symfony.com/doc/current/cookbook/security/form_login_setup.html
|
||||
#form_login: ~
|
||||
access_control:
|
||||
- { path: ^/user/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
|
||||
- { path: ^/user/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
|
||||
- { path: ^/user/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
|
||||
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
|
||||
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
|
||||
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
|
||||
- { path: ^/user, role: ROLE_USER }
|
||||
- { path: ^/gallery/upload, role: ROLE_USER }
|
||||
- { path: ^/gallery, role: IS_AUTHENTICATED_ANONYMOUSLY }
|
||||
- { path: ^/admin/, role: ROLE_ADMIN }
|
|
@ -22,6 +22,7 @@
|
|||
"dependencies": {
|
||||
"uikit": "3",
|
||||
"jquery": "^3.1.1",
|
||||
"parsleyjs": "^2.7.0"
|
||||
"parsleyjs": "^2.7.0",
|
||||
"select2": "^4.0.3"
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 15 KiB |
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 5.7 KiB |
|
@ -1,3 +1,13 @@
|
|||
jQuery.ready(function($) {
|
||||
|
||||
jQuery(document).ready(function($) {
|
||||
if(null !== document.querySelector('select') && document.querySelector('select').length > 0) {
|
||||
var selectPlaceholder = 'Choose an option.';
|
||||
if(document.querySelector('select').hasAttribute('placeholder')) {
|
||||
selectPlaceholder = document.querySelector('select').getAttribute('placeholder');
|
||||
}
|
||||
jQuery('select').prepend('<option/>').select2({
|
||||
placeholder: selectPlaceholder,
|
||||
minimumResultsForSearch: Infinity,
|
||||
theme: 'default'
|
||||
});
|
||||
}
|
||||
});
|
|
@ -1,4 +1,5 @@
|
|||
FROM php:7.1-fpm-alpine
|
||||
#FROM php:7.1-fpm-alpine
|
||||
FROM php-7.1.4-fpm-alpine
|
||||
|
||||
ENV PHPIZE_DEPS \
|
||||
autoconf \
|
||||
|
|
|
@ -4,6 +4,8 @@ namespace Sikofitt\DoughnutWeddingBundle\Controller;
|
|||
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
|
||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
|
@ -12,7 +14,8 @@ use Symfony\Component\HttpFoundation\Request;
|
|||
*/
|
||||
class DefaultController extends Controller
|
||||
{
|
||||
/**
|
||||
|
||||
/**
|
||||
* @Route("/")
|
||||
*
|
||||
* @param Request $request
|
||||
|
@ -20,15 +23,11 @@ class DefaultController extends Controller
|
|||
*/
|
||||
public function indexAction(Request $request)
|
||||
{
|
||||
if(null === $user = $request->getUser()) {
|
||||
return $this->render('default/index.html.twig', array(
|
||||
'base_dir' => $this->get('kernel')->getRootDir(),
|
||||
));
|
||||
}
|
||||
return $this->render('default/index_user.html.twig', array(
|
||||
'base_dir' => $this->get('kernel')->getRootDir(),
|
||||
));
|
||||
|
||||
$parameters = [];
|
||||
if(null !== $this->getUser()) {
|
||||
$parameters['hide_social'] = true;
|
||||
}
|
||||
return $this->render('default/index.html.twig', $parameters);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
<?php
|
||||
|
||||
namespace Sikofitt\DoughnutWeddingBundle\Controller;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
|
||||
|
||||
/**
|
||||
* Class ImageController
|
||||
*
|
||||
* @package Sikofitt\DoughnutWeddingBundle\Controller
|
||||
* @Route("/gallery")
|
||||
*/
|
||||
class ImageController extends Controller
|
||||
{
|
||||
/**
|
||||
* @Route("/")
|
||||
*/
|
||||
public function indexAction()
|
||||
{
|
||||
return $this->render('SikofittDoughnutWeddingBundle:Image:index.html.twig', array(
|
||||
// ...
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/upload")
|
||||
*/
|
||||
public function uploadAction()
|
||||
{
|
||||
return $this->render('SikofittDoughnutWeddingBundle:Image:upload.html.twig', array(
|
||||
// ...
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/tag")
|
||||
*/
|
||||
public function tagAction()
|
||||
{
|
||||
return $this->render('SikofittDoughnutWeddingBundle:Image:tag.html.twig', array(
|
||||
// ...
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* @Route("/category")
|
||||
*/
|
||||
public function categoryAction()
|
||||
{
|
||||
return $this->render('SikofittDoughnutWeddingBundle:Image:category.html.twig', array(
|
||||
// ...
|
||||
));
|
||||
}
|
||||
|
||||
}
|
|
@ -32,6 +32,7 @@ use Symfony\Component\HttpFoundation\StreamedResponse;
|
|||
|
||||
/**
|
||||
* Class UserController.
|
||||
|
||||
*/
|
||||
class UserController extends Controller
|
||||
{
|
||||
|
|
|
@ -14,12 +14,21 @@ class Configuration implements ConfigurationInterface
|
|||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
* @throws \RuntimeException
|
||||
*/
|
||||
public function getConfigTreeBuilder()
|
||||
{
|
||||
$treeBuilder = new TreeBuilder();
|
||||
$rootNode = $treeBuilder->root('sikofitt_doughnut_wedding');
|
||||
|
||||
$rootNode
|
||||
->children()
|
||||
->scalarNode('max_rsvps')
|
||||
->isRequired()
|
||||
->validate()
|
||||
->ifEmpty()->then(function() {return 40;})
|
||||
->ifNull()->then(function() { return 40;})
|
||||
->end()
|
||||
->end();
|
||||
// Here you should define the parameters that are allowed to
|
||||
// configure your bundle. See the documentation linked above for
|
||||
// more information on that topic.
|
||||
|
|
|
@ -24,5 +24,6 @@ class SikofittDoughnutWeddingExtension extends Extension
|
|||
|
||||
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
||||
$loader->load('services.yml');
|
||||
$container->setParameter('wedding_max_rsvps', $config['max_rsvps']);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ class Rsvp
|
|||
private $id;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
* @var \Sikofitt\DoughnutWeddingBundle\Entity\User
|
||||
* @ORM\OneToOne(targetEntity="Sikofitt\DoughnutWeddingBundle\Entity\User", mappedBy="rsvp", cascade={"persist"})
|
||||
*/
|
||||
private $user;
|
||||
|
@ -59,13 +59,13 @@ class Rsvp
|
|||
* @var \DateTime
|
||||
* @ORM\Column(name="created", type="datetime")
|
||||
*/
|
||||
private $created = null;
|
||||
private $created;
|
||||
|
||||
/**
|
||||
* @var \DateTime
|
||||
* @ORM\Column(name="updated", type="datetime")
|
||||
*/
|
||||
private $updated = null;
|
||||
private $updated;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
@ -160,11 +160,11 @@ class Rsvp
|
|||
/**
|
||||
* Set user.
|
||||
*
|
||||
* @param \Sikofitt\App\Entity\User $user
|
||||
* @param User $user
|
||||
*
|
||||
* @return Rsvp
|
||||
*/
|
||||
public function setUser(\Sikofitt\App\Entity\User $user = null)
|
||||
public function setUser(User $user = null)
|
||||
{
|
||||
$this->user = $user;
|
||||
|
||||
|
@ -174,7 +174,7 @@ class Rsvp
|
|||
/**
|
||||
* Get user.
|
||||
*
|
||||
* @return \Sikofitt\App\Entity\User
|
||||
* @return User
|
||||
*/
|
||||
public function getUser()
|
||||
{
|
||||
|
|
|
@ -3,26 +3,101 @@
|
|||
namespace Sikofitt\DoughnutWeddingBundle\Form;
|
||||
|
||||
use FOS\UserBundle\Form\Type\RegistrationFormType;
|
||||
use Sikofitt\DoughnutWeddingBundle\Entity\Rsvp;
|
||||
use Sikofitt\DoughnutWeddingBundle\Entity\User;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\CallbackTransformer;
|
||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\Form\FormInterface;
|
||||
use Symfony\Component\Form\FormView;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
|
||||
class RegistrationType extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder->add('first_name')
|
||||
->add('last_name');
|
||||
|
||||
|
||||
$builder->add('first_name', TextType::class)
|
||||
->add('last_name', TextType::class)
|
||||
->add('familyside', ChoiceType::class, [
|
||||
'choices' => [
|
||||
User::ERIC_SIDE => User::ERIC_SIDE,
|
||||
User::KATRINA_SIDE => User::KATRINA_SIDE,
|
||||
],
|
||||
'attr' => [
|
||||
'class' => 'uk-select uk-form-large uk-box-shadow-hover-small',
|
||||
'style' => 'padding-left:16px;',
|
||||
],
|
||||
'label' => 'Who are you coming for?',
|
||||
'label_attr' => [
|
||||
'class' => 'uk-form-label uk-text-primary',
|
||||
'style' => 'font-size:1.25rem; margin-left:15px;'
|
||||
],
|
||||
])
|
||||
->add('family', CheckboxType::class, [
|
||||
'label' => 'Are you an immediate family member?',
|
||||
'required' => false,
|
||||
'attr' => [
|
||||
'class' => 'uk-checkbox uk-box-shadow-hover-small',
|
||||
],
|
||||
'label_attr' => [
|
||||
'class' => 'uk-form-label uk-text-primary',
|
||||
'style' => 'font-size:1.25rem; margin-left:15px;'
|
||||
],
|
||||
])
|
||||
|
||||
->add('rsvp', IntegerType::class, [
|
||||
'attr' => [
|
||||
|
||||
'class' => 'uk-input uk-form-large uk-padding-small uk-box-shadow-hover-small',
|
||||
'placeholder' => 'Number of Guests (including yourself)',
|
||||
],
|
||||
'label' => 'Number of guests? (including yourself)',
|
||||
'label_attr' => [
|
||||
'class' => 'uk-form-label uk-text-primary',
|
||||
],
|
||||
]);
|
||||
|
||||
$builder->get('rsvp')
|
||||
->addModelTransformer(new CallbackTransformer(
|
||||
function (?Rsvp $rsvp) {
|
||||
if (null === $rsvp) {
|
||||
return $rsvp;
|
||||
}
|
||||
return $rsvp->getGuests();
|
||||
},
|
||||
function (Int $rsvpInt) {
|
||||
$rsvp = new Rsvp();
|
||||
$rsvp->setGuests($rsvpInt);
|
||||
return $rsvp;
|
||||
}
|
||||
));
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver)
|
||||
{
|
||||
$resolver->setDefault('attr', ['class' => 'uk-form uk-form-horizontal']);
|
||||
|
||||
}
|
||||
public function getParent() {
|
||||
return RegistrationFormType::class;
|
||||
}
|
||||
|
||||
public function finishView(
|
||||
FormView $view,
|
||||
FormInterface $form,
|
||||
array $options
|
||||
) {
|
||||
$view->children['email']->vars['attr']['class'] = 'uk-input';
|
||||
$view->children['email']->vars['label_attr']['class'] = 'uk-form-label';
|
||||
}
|
||||
|
||||
public function getBlockPrefix()
|
||||
{
|
||||
return 'sikofitt_doughnut_wedding_bundle_registration_type';
|
||||
|
|
|
@ -83,7 +83,7 @@ class RsvpType extends AbstractType
|
|||
])
|
||||
->add('rsvp', IntegerType::class, [
|
||||
'attr' => [
|
||||
'class' => 'uk-input uk-form-large uk-padding-small uk-form-width-medium uk-box-shadow-hover-small',
|
||||
'class' => 'uk-input uk-form-large uk-padding-small',
|
||||
'placeholder' => 'Number of Guests (including yourself)',
|
||||
],
|
||||
'label' => 'Number of guests? (including yourself)',
|
||||
|
@ -93,6 +93,7 @@ class RsvpType extends AbstractType
|
|||
])
|
||||
->add('familyside', ChoiceType::class, [
|
||||
'choices' => [
|
||||
|
||||
User::ERIC_SIDE => User::ERIC_SIDE,
|
||||
User::KATRINA_SIDE => User::KATRINA_SIDE,
|
||||
],
|
||||
|
@ -106,13 +107,15 @@ class RsvpType extends AbstractType
|
|||
],
|
||||
])
|
||||
->add('family', CheckboxType::class, [
|
||||
'label' => 'Are you an immediate family member?',
|
||||
'label' => 'Are you a family member?',
|
||||
'required' => false,
|
||||
'attr' => [
|
||||
'class' => 'uk-checkbox uk-box-shadow-hover-small',
|
||||
'style' => 'padding-left:16px;'
|
||||
],
|
||||
'label_attr' => [
|
||||
'class' => 'uk-margin-right',
|
||||
'class' => 'uk-form-label uk-text-primary',
|
||||
|
||||
],
|
||||
]);
|
||||
$builder->get('rsvp')
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
services:
|
||||
# sikofitt_doughnut_wedding.example:
|
||||
# class: Sikofitt\DoughnutWeddingBundle\Example
|
||||
# arguments: ["@service_id", "plain_value", "%parameter%"]
|
||||
# arguments: ["@service_id", "plain_value", "%parameter%"]
|
|
@ -0,0 +1,7 @@
|
|||
{% extends "::base.html.twig" %}
|
||||
|
||||
{% block title %}SikofittDoughnutWeddingBundle:Image:category{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<h1>Welcome to the Image:category page</h1>
|
||||
{% endblock %}
|
|
@ -0,0 +1,7 @@
|
|||
{% extends "::base.html.twig" %}
|
||||
|
||||
{% block title %}SikofittDoughnutWeddingBundle:Image:index{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<h1>Welcome to the Image:index page</h1>
|
||||
{% endblock %}
|
|
@ -0,0 +1,7 @@
|
|||
{% extends "::base.html.twig" %}
|
||||
|
||||
{% block title %}SikofittDoughnutWeddingBundle:Image:tag{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<h1>Welcome to the Image:tag page</h1>
|
||||
{% endblock %}
|
|
@ -0,0 +1,7 @@
|
|||
{% extends "::base.html.twig" %}
|
||||
|
||||
{% block title %}SikofittDoughnutWeddingBundle:Image:upload{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<h1>Welcome to the Image:upload page</h1>
|
||||
{% endblock %}
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
namespace Sikofitt\DoughnutWeddingBundle\Tests\Controller;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||
|
||||
class ImageControllerTest extends WebTestCase
|
||||
{
|
||||
public function testIndex()
|
||||
{
|
||||
$client = static::createClient();
|
||||
|
||||
$crawler = $client->request('GET', '/');
|
||||
}
|
||||
|
||||
public function testUpload()
|
||||
{
|
||||
$client = static::createClient();
|
||||
|
||||
$crawler = $client->request('GET', '/upload');
|
||||
}
|
||||
|
||||
public function testTag()
|
||||
{
|
||||
$client = static::createClient();
|
||||
|
||||
$crawler = $client->request('GET', '/tag');
|
||||
}
|
||||
|
||||
public function testCategory()
|
||||
{
|
||||
$client = static::createClient();
|
||||
|
||||
$crawler = $client->request('GET', '/category');
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue