Merge branch '0.1' into 'master'

Merge 0.1 into master

See merge request !2
This commit is contained in:
R. Eric Wheeler 2017-05-06 18:39:52 -07:00
commit c4049bc349
131 changed files with 92814 additions and 1311 deletions

29
.gitattributes vendored
View File

@ -1 +1,30 @@
*.tgz filter=lfs diff=lfs merge=lfs -text
mockups filter=lfs diff=lfs merge=lfs -text
mockups/DoughnutWedding_RSVP.jpg filter=lfs diff=lfs merge=lfs -text
mockups/Website[[:space:]]JPGs-20170423T193800Z-001.zip filter=lfs diff=lfs merge=lfs -text
mockups/DoughnutWedding_Contact.jpg filter=lfs diff=lfs merge=lfs -text
mockups/DoughnutWedding_Home.jpg filter=lfs diff=lfs merge=lfs -text
mockups/DoughnutWedding_Location.jpg filter=lfs diff=lfs merge=lfs -text
mockups/DoughnutWedding_OurStory.jpg filter=lfs diff=lfs merge=lfs -text
mockups/DoughnutWedding_Photos.jpg filter=lfs diff=lfs merge=lfs -text
mockups/home_images/home_our_story_1.jpg filter=lfs diff=lfs merge=lfs -text
mockups/home_images/home_our_story_2.jpg filter=lfs diff=lfs merge=lfs -text
mockups/home_images/home_photo.jpg filter=lfs diff=lfs merge=lfs -text
mockups/home_images/drive-download-20170424T134706Z-001.zip filter=lfs diff=lfs merge=lfs -text
mockups/home_images/home_doughnut_1.jpg filter=lfs diff=lfs merge=lfs -text
mockups/home_images/home_doughnut_2.jpg filter=lfs diff=lfs merge=lfs -text
mockups/home_images/home_location.jpg filter=lfs diff=lfs merge=lfs -text
build/images/home_doughnut_2.jpg filter=lfs diff=lfs merge=lfs -text
build/images/home_our_story_1.jpg filter=lfs diff=lfs merge=lfs -text
build/images/home_our_story_2.jpg filter=lfs diff=lfs merge=lfs -text
build/images/logo.png filter=lfs diff=lfs merge=lfs -text
build/images/yahoo.svg filter=lfs diff=lfs merge=lfs -text
build/images/amazon.svg filter=lfs diff=lfs merge=lfs -text
build/images/home_doughnut_1.jpg filter=lfs diff=lfs merge=lfs -text
build/images/home_location.jpg filter=lfs diff=lfs merge=lfs -text
build/images/home_photo.jpg filter=lfs diff=lfs merge=lfs -text
build/images/favicon.png filter=lfs diff=lfs merge=lfs -text
build/images/home_photo_1.jpg filter=lfs diff=lfs merge=lfs -text
build/images/home_photo_2.jpg filter=lfs diff=lfs merge=lfs -text
build/images/location.jpg filter=lfs diff=lfs merge=lfs -text
build/images/yahoo2.svg filter=lfs diff=lfs merge=lfs -text

6
.gitignore vendored
View File

@ -22,3 +22,9 @@
.idea
node_modules/
composer.lock
.php_cs.cache
cors.json
doughnutwedding-cred.json
mailer.yml

View File

@ -39,7 +39,9 @@ class AppKernel extends Kernel
new \FOS\UserBundle\FOSUserBundle(),
new Knp\Bundle\GaufretteBundle\KnpGaufretteBundle(),
new Vich\UploaderBundle\VichUploaderBundle(),
new JavierEguiluz\Bundle\EasyAdminBundle\EasyAdminBundle(),
new Sikofitt\DoughnutWeddingBundle\SikofittDoughnutWeddingBundle(),
new WhiteOctober\PagerfantaBundle\WhiteOctoberPagerfantaBundle(),
];
if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {

View File

@ -1,5 +1,5 @@
{% extends "@FOSUser/layout.html.twig" %}
{% block fos_user_content %}
{% extends "base.html.twig" %}
{% block title %}Change password{% endblock title %}
{% block body %}
{% include "@FOSUser/ChangePassword/change_password_content.html.twig" %}
{% endblock fos_user_content %}
{% endblock body %}

View File

@ -1,8 +1,20 @@
{% trans_default_domain 'FOSUserBundle' %}
{{ form_start(form, { 'action': path('fos_user_change_password'), 'attr': { 'class': 'fos_user_change_password' } }) }}
{{ form_widget(form) }}
<div>
<input type="submit" value="{{ 'change_password.submit'|trans }}" />
</div>
<h2 class="uk-heading-line"><span>Change your password</span></h2>
{{ form_start(form, { 'action': path('fos_user_change_password'), 'attr': { 'class': 'uk-form uk-form-horizontal fos_user_resetting_reset' } }) }}
{{ form_label(form.plainPassword.first, 'New password', {'label_attr':{'class':'uk-form-label uk-visible@m'}}) }}
<div class="uk-form-controls uk-form-controls-text uk-margin-small-bottom">
{{ form_errors(form.plainPassword.first) }}
{{ form_widget(form.plainPassword.first, {'attr':{'class':'uk-input uk-form-large','placeholder':'New password'}}) }}
</div>
{{ form_label(form.plainPassword.second, 'Repeat password', {'label_attr':{'class':'uk-form-label uk-visible@m'}}) }}
<div class="uk-form-controls uk-form-controls-text">
{{ form_errors(form.plainPassword.second) }}
{{ form_widget(form.plainPassword.second, {'attr':{'class':'uk-input uk-form-large','placeholder':'Repeat password'}}) }}
</div>
<div class="uk-margin-medium-top uk-width-1-1 uk-text-right@m">
<input type="submit" class="uk-button uk-width-1-1@s uk-width-1-2@m uk-button-large uk-button-primary" value="{{ 'resetting.reset.submit'|trans }}" />
</div>
{{ form_end(form) }}

View File

@ -1,5 +0,0 @@
{% extends "@FOSUser/layout.html.twig" %}
{% block fos_user_content %}
{% include "@FOSUser/Group/edit_content.html.twig" %}
{% endblock fos_user_content %}

View File

@ -1,8 +0,0 @@
{% trans_default_domain 'FOSUserBundle' %}
{{ form_start(form, { 'action': path('fos_user_group_edit', {'groupName': group_name}), 'attr': { 'class': 'fos_user_group_edit' } }) }}
{{ form_widget(form) }}
<div>
<input type="submit" value="{{ 'group.edit.submit'|trans }}" />
</div>
{{ form_end(form) }}

View File

@ -1,5 +0,0 @@
{% extends "@FOSUser/layout.html.twig" %}
{% block fos_user_content %}
{% include "@FOSUser/Group/list_content.html.twig" %}
{% endblock fos_user_content %}

View File

@ -1,7 +0,0 @@
<div class="fos_user_group_list">
<ul>
{% for group in groups %}
<li><a href="{{ path('fos_user_group_show', {'groupName': group.getName()} ) }}">{{ group.getName() }}</a></li>
{% endfor %}
</ul>
</div>

View File

@ -1,5 +0,0 @@
{% extends "@FOSUser/layout.html.twig" %}
{% block fos_user_content %}
{% include "@FOSUser/Group/new_content.html.twig" %}
{% endblock fos_user_content %}

View File

@ -1,8 +0,0 @@
{% trans_default_domain 'FOSUserBundle' %}
{{ form_start(form, { 'action': path('fos_user_group_new'), 'attr': { 'class': 'fos_user_group_new' } }) }}
{{ form_widget(form) }}
<div>
<input type="submit" value="{{ 'group.new.submit'|trans }}" />
</div>
{{ form_end(form) }}

View File

@ -1,5 +0,0 @@
{% extends "@FOSUser/layout.html.twig" %}
{% block fos_user_content %}
{% include "@FOSUser/Group/show_content.html.twig" %}
{% endblock fos_user_content %}

View File

@ -1,5 +0,0 @@
{% trans_default_domain 'FOSUserBundle' %}
<div class="fos_user_group_show">
<p>{{ 'group.show.name'|trans }}: {{ group.getName() }}</p>
</div>

View File

@ -1,5 +1,5 @@
{% extends "base.html.twig" %}
{% block title %}Edit Profile{% endblock title %}
{% block body %}
{% include "@FOSUser/Profile/edit_content.html.twig" %}
{% endblock body %}

View File

@ -1,26 +1,28 @@
{% trans_default_domain 'FOSUserBundle' %}
{% if form.vars.errors is not empty %}
<div class="uk-alert uk-alert-danger">
{{ form_errors(form) }}
</div>
{% endif %}
{{ form_errors(form) }}
{{ form_start(form, { 'action': path('fos_user_profile_edit'), 'attr': { 'class': 'uk-form-horizontal fos_user_profile_edit' } }) }}
{{ form_label(form.email) }}
<div class="uk-form-controls uk-form-controls-text">
{{ form_errors(form.email) }}
{{ form_widget(form.email) }}
</div>
{{ form_label(form.name) }}
<div class="uk-form-controls uk-form-controls-text">
{{ form_errors(form.name) }}
{{ form_widget(form.name) }}
</div>
{{ form_label(form.rsvp) }}
<div class="uk-form-controls uk-form-controls-text">
{{ form_widget(form.rsvp) }}
</div>
{{ form_label(form.rsvp) }}
<div class="uk-form-controls uk-form-controls-text">
{{ form_errors(form.rsvp) }}
{{ form_widget(form.rsvp) }}
</div>
<div class="uk-form-controls uk-margin-medium-top">
<input type="submit" class="uk-button uk-button-large uk-width-1-1@s uk-width-1-3@m uk-align-right uk-button-primary" value="{{ 'profile.edit.submit'|trans }}" />
<div class="uk-margin-medium-top">
<button type="submit" class="uk-button uk-button-large uk-width-1-1@s uk-width-1-3@m uk-align-right uk-button-primary" value="{{ 'profile.edit.submit'|trans }}">{{ 'profile.edit.submit'|trans }}</button>
</div>
<div class="uk-form-controls">
<a href="{{ url('fos_user_profile_show') }}" title="Cancel" class="uk-width-1-1@s uk-width-1-3@m uk-button uk-button-large uk-button-danger uk-align-right">Cancel</a>

View File

@ -1,5 +1,5 @@
{% extends "base.html.twig" %}
{% block title %}Profile{% endblock title %}
{% block body %}
{% include "@FOSUser/Profile/show_content.html.twig" %}
{% endblock body %}

View File

@ -1,7 +1,8 @@
{% trans_default_domain 'SikofittDoughnutweddingBundle' %}
<h2 class="uk-width-1-1 uk-margin-medium-bottom uk-text-center">User Information</h2>
<div class="uk-width-1-1 uk-text-center uk-grid-divider uk-child-width-1-2" uk-grid>
<h2 class="uk-width-1-1 uk-margin-medium-bottom uk-margin-remove-top uk-text-center">User Information</h2>
<div class="uk-width-1-1 uk-text-center uk-child-width-1-2" uk-grid>
<div><p class="uk-padding-small uk-text-right">{{ 'profile.name'|trans }}</p></div>
<div><p class="uk-padding-small uk-text-left">{{ user.name }}</p></div>
@ -11,21 +12,33 @@
<div><p class="uk-padding-small uk-text-right">{{ 'profile.rsvp'|trans }}</p></div>
<div><p class="uk-padding-small uk-text-left">{% if user.rsvp is not null %}{{ user.rsvp.guests }}{% else %}0{% endif %}</p></div>
<div class="uk-width-1-2@m uk-width-1-1@s uk-align-center uk-margin-small uk-grid-margin uk-first-column">
<a href="{{ url('fos_user_profile_edit') }}" title="Edit profile" class="uk-button-large uk-button uk-button-primary uk-width-1-1">Edit Information</a></div>
</div>
<div class="uk-width-1-6@m uk-visible@m uk-margin-large-top uk-position-center-right">
</div>
<div class="uk-width-1-1 uk-margin-medium uk-text-center">
You can change your password <a href="{{ path('fos_user_change_password') }}">here.</a>
</div>
<div class="uk-width-1-2@m uk-width-1-1@s uk-align-center uk-margin-small uk-first-column">
<a href="{{ url('fos_user_profile_edit') }}" title="Edit profile" class="uk-button-large uk-button uk-button-primary uk-width-1-1">Edit Information</a>
</div>
<div class="uk-width-1-6@m uk-visible@m uk-margin-large-bottom@s uk-position-bottom-right">
<ul class="uk-iconnav uk-iconnav-vertical">
<li>
<a {% if user.facebookid is not null %} style="color:#0b97c4;" {% endif %}class="uk-align-left 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-align-left 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-align-left 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-align-left 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-align-left 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-align-left 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>
<li>{% set serviceActiveClass ='' %}
{% if user.facebookid is not null %}{% set serviceActiveClass ='uk-icon-facebook' %}{% endif %}
<a class="{{ serviceActiveClass }} uk-align-left 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>{% set serviceActiveClass='' %}
<li>{% if user.googleid is not null %}{% set serviceActiveClass ='uk-icon-google' %}{% endif %}
<a class="{{ serviceActiveClass }} uk-align-left 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>{% set serviceActiveClass='' %}
<li>{% if user.twitterid is not null %}{% set serviceActiveClass ='uk-icon-twitter' %}{% endif %}
<a class="{{ serviceActiveClass }} uk-align-left 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>{% set serviceActiveClass='' %}
<li>{% if user.yahooid is not null %}{% set serviceActiveClass = 'uk-icon-yahoo' %}{% endif %}
<a class="{{ serviceActiveClass }} uk-align-left uk-text-center uk-login uk-login-yahoo" href="{{ url("hwi_oauth_service_redirect", {service: "yahoo"}) }}" uk-icon="icon: yahoo; ratio:1.5"></a>
</li>{% set serviceActiveClass='' %}
<li>{% if user.amazonid is not null %}{% set serviceActiveClass = 'uk-icon-amazon' %}{% endif %}
<a class="{{ serviceActiveClass }} uk-align-left uk-login uk-login-amazon" href="{{ url("hwi_oauth_service_redirect", {service: "amazon"}) }}" uk-icon="icon: amazon; ratio:1.5"></a>
</li>{% set serviceActiveClass='' %}
</ul>
</div>
<div class="uk-margin-medium uk-width-1-1 uk-text-center">{{ 'profile.member_since'|trans({'%date%':user.created|date('l F jS, Y (h:i a)')}) }}</div>

View File

@ -1,7 +0,0 @@
{% extends "@FOSUser/layout.html.twig" %}
{% trans_default_domain 'FOSUserBundle' %}
{% block fos_user_content %}
<p>{{ 'registration.check_email'|trans({'%email%': user.email}) }}</p>
{% endblock fos_user_content %}

View File

@ -1,13 +0,0 @@
{% trans_default_domain 'FOSUserBundle' %}
{% block subject %}
{%- autoescape false -%}
{{ 'registration.email.subject'|trans({'%username%': user.username, '%confirmationUrl%': confirmationUrl}) }}
{%- endautoescape -%}
{% endblock %}
{% block body_text %}
{% autoescape false %}
{{ 'registration.email.message'|trans({'%username%': user.username, '%confirmationUrl%': confirmationUrl}) }}
{% endautoescape %}
{% endblock %}
{% block body_html %}{% endblock %}

View File

@ -1,5 +1,5 @@
{% extends "base.html.twig" %}
{% block title %}Register{% endblock title %}
{% block body %}
{% include "@FOSUser/Registration/register_content.html.twig" %}
{% endblock body %}

View File

@ -1,8 +1,21 @@
{% trans_default_domain 'FOSUserBundle' %}
<div class="uk-width-1-1">
{% set show_social = false %}
{{ form_errors(form) }}
{% set ownerCount = hwi_oauth_resource_owners()|length %}
<div class="uk-margin-medium-bottom uk-child-width-1-{{ ownerCount +1 }} uk-visible@m uk-grid-small uk-grid-divider" uk-grid>
<div class="uk-text-center">
Connect with :
</div>
{% for owner in hwi_oauth_resource_owners() %}
<div class="uk-text-center uk-registration-connect">
<a href="{{ hwi_oauth_login_url(owner) }}">{{ owner | trans({}, 'HWIOAuthBundle')|capitalize }}</a>
</div>
{% endfor %}
</div>
{{ dump(app.session) }}
{{ 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">
@ -11,12 +24,14 @@
<div class="uk-margin">
<div hidden>{{ form_label(form.email) }}</div>
<div class="uk-form-controls uk-form-controls-text">
{{ form_errors(form.email) }}
{{ form_widget(form.email, { 'attr': {'placeholder':'Email address', 'class':'uk-input uk-form-large uk-padding-small'} }) }}
</div>
</div>
</div>
<div class="uk-margin">
<div hidden>{{ form_label(form.name, 'Name', { 'label_attr':{'class':'uk-form-label'}}) }}</div>
<div class="uk-form-controls uk-form-controls-text">
{{ form_errors(form.name) }}
{{ form_widget(form.name, { 'attr': {'placeholder':'Name', 'class':'uk-input uk-form-large uk-padding-small'} }) }}
</div>
</div>
@ -24,14 +39,24 @@
<div class="uk-margin">
<div hidden>{{ form_label(form.rsvp) }}</div>
<div class="uk-form-controls uk-form-controls-text">
{{ form_errors(form.rsvp) }}
{{ form_widget(form.rsvp) }}
</div>
</div>
<div class="uk-margin">
<div hidden>{{ form_label(form.comment, null, { 'label_attr':{'class':'uk-form-label'}}) }}</div>
<div class="uk-form-controls uk-form-controls-text">
{{ form_errors(form.comment) }}
{{ form_widget(form.comment) }}
</div>
</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_errors(form.plainPassword) }}
{{ form_widget(form.plainPassword.first, { 'attr': {'placeholder':'Password', 'class':'uk-input uk-form-large uk-padding-small'} }) }}
</div>
</>
</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">
@ -40,8 +65,8 @@
</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 class="uk-width-1-2">
<button type="submit" value="Register" class="uk-button uk-button-primary uk-button-large">Register</button>
</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>

View File

@ -1,9 +1,8 @@
{% extends "@FOSUser/layout.html.twig" %}
{% extends "base.html.twig" %}
{% block title %}Check Email{% endblock title %}
{% trans_default_domain 'FOSUserBundle' %}
{% block fos_user_content %}
<p>
{% block body %}
<p class="uk-width-1-1 uk-text-center uk-text-lead">
{{ 'resetting.check_email'|trans({'%tokenLifetime%': tokenLifetime})|nl2br }}
</p>
{% endblock %}

View File

@ -1,13 +1,25 @@
{% trans_default_domain 'FOSUserBundle' %}
{% block subject %}
{%- autoescape false -%}
{{ 'resetting.email.subject'|trans({'%username%': user.username}) }}
[Doughnut Wedding] Password reset requested
{%- endautoescape -%}
{% endblock %}
{% block body_text %}
{% autoescape false %}
{{ 'resetting.email.message'|trans({'%username%': user.username, '%confirmationUrl%': confirmationUrl}) }}
Hi {{ user.name }},
Someone has requested to reset the password for your account.
If this was not you please ignore this message. No further action is required.
To reset your password please visit this link in your browser :
{{ confirmationUrl }}
Thank you,
Katrina and Eric ❤
{% endautoescape %}
{% endblock %}
{% block body_html %}{% endblock %}
{% block body_html %}
{% endblock %}

View File

@ -1,5 +1,5 @@
{% extends "base.html.twig" %}
{% block title %}Reset Password{% endblock title %}
{% block body %}
{% include "@FOSUser/Resetting/request_content.html.twig" %}
{% endblock body %}

View File

@ -1,11 +1,16 @@
{% trans_default_domain 'FOSUserBundle' %}
<h1 class="uk-h2 uk-text-center">Reset your password</h1>
<form action="{{ path('fos_user_resetting_send_email') }}" method="POST" class="fos_user_resetting_request">
<div>
<label for="username">{{ 'resetting.request.username'|trans }}</label>
<input type="text" id="username" name="username" required="required" />
</div>
<div>
<input type="submit" value="{{ 'resetting.request.submit'|trans }}" />
<form action="{{ path('fos_user_resetting_send_email') }}" method="POST" class="uk-form uk-form-horizontal">
<label class="uk-form-label uk-visible@m required" for="username">Email address</label>
<div class="uk-form-controls uk-form-controls-text">
<div class="uk-inline uk-width-1-1">
<span class="uk-form-icon uk-form-icon-flip" uk-icon="icon: mail"></span>
<input type="text" id="username" name="username" required="required" class="uk-input uk-form-large uk-margin-small-bottom" placeholder="Email address">
</div>
</div>
<div class="uk-width-1-1 uk-text-right@m">
<input type="submit" value="{{ 'resetting.request.submit'|trans }}" class="uk-button uk-button-primary uk-button-large uk-width-1-1@s uk-width-1-3@m" />
</div>
</form>

View File

@ -1,5 +1,6 @@
{% extends "@FOSUser/layout.html.twig" %}
{% extends "base.html.twig" %}
{% block fos_user_content %}
{% block title %}Reset Password{% endblock title %}
{% block body %}
{% include "@FOSUser/Resetting/reset_content.html.twig" %}
{% endblock fos_user_content %}
{% endblock body %}

View File

@ -1,8 +1,19 @@
{% trans_default_domain 'FOSUserBundle' %}
<h2 class="uk-heading-line"><span>Reset your password</span></h2>
{{ form_start(form, { 'action': path('fos_user_resetting_reset', {'token': token}), 'attr': { 'class': 'uk-form uk-form-horizontal fos_user_resetting_reset' } }) }}
{{ form_start(form, { 'action': path('fos_user_resetting_reset', {'token': token}), 'attr': { 'class': 'fos_user_resetting_reset' } }) }}
{{ form_widget(form) }}
<div>
<input type="submit" value="{{ 'resetting.reset.submit'|trans }}" />
{{ form_label(form.plainPassword.first, 'New password', {'label_attr':{'class':'uk-form-label uk-visible@m'}}) }}
<div class="uk-form-controls uk-form-controls-text uk-margin-small-bottom">
{{ form_errors(form.plainPassword.first) }}
{{ form_widget(form.plainPassword.first, {'attr':{'class':'uk-input uk-form-large','placeholder':'New password'}}) }}
</div>
{{ form_label(form.plainPassword.second, 'Repeat password', {'label_attr':{'class':'uk-form-label uk-visible@m'}}) }}
<div class="uk-form-controls uk-form-controls-text">
{{ form_errors(form.plainPassword.second) }}
{{ form_widget(form.plainPassword.second, {'attr':{'class':'uk-input uk-form-large','placeholder':'Repeat password'}}) }}
</div>
<div class="uk-margin-medium-top uk-width-1-1 uk-text-right@m">
<input type="submit" class="uk-button uk-width-1-1@s uk-width-1-2@m uk-button-large uk-button-primary" value="{{ 'resetting.reset.submit'|trans }}" />
</div>
{{ form_end(form) }}

View File

@ -1,5 +1,5 @@
{% extends "base.html.twig" %}
{% block title %}Login{% endblock title %}
{% block body %}
{{ include('@FOSUser/Security/login_content.html.twig') }}
{% endblock body %}

View File

@ -1,13 +1,16 @@
{% trans_default_domain 'FOSUserBundle' %}
{% if error %}
<div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
<div class="uk-alert uk-width-1-1">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
<form action="{{ path("fos_user_security_check") }}" method="post" class="uk-login-form uk-form uk-form-stacked">
{% if csrf_token %}
<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
{% endif %}
<div class="uk-width-1-1 uk-text-center">
<a href="{{ path('fos_user_registration_register') }}" class="uk-text-large" title="Create an account">Create an account</a>
</div>
<div class="uk-child-width-1-1@s uk-width-1-2@m uk-align-center uk-grid-collapse uk-grid uk-grid-stack" uk-grid>
<div>
<label class="uk-form-label uk-hidden" for="username">{{ 'security.login.username'|trans }}</label>
@ -20,16 +23,21 @@
<label class="uk-form-label uk-hidden" for="password">{{ 'security.login.password'|trans }}</label>
<div class="uk-inline uk-width-1-1 uk-form-controls uk-form-controls-text">
<span class="uk-form-icon" uk-icon="icon: lock"></span>
<input class="uk-input uk-form-large" placeholder="Password" type="password" id="password" name="_password" required="required" />
</div>
</div>
<div class="uk-form-controls uk-child-width-1-2@m uk-child-width-1-1@s uk-padding-remove-horizontal uk-padding-small uk-grid-collapse" uk-grid>
<div><input type="submit" class="uk-button uk-button-large uk-button-primary uk-width-1-1@s uk-align-left@m" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans }}" /></div>
<div class="uk-child-width-1-2@m uk-child-width-1-1@s uk-padding-remove-horizontal uk-padding-small uk-grid-collapse" uk-grid>
<div>
<button type="submit" class="uk-button uk-button-large uk-button-primary uk-width-1-1@s uk-align-left@m" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans }}">{{ 'security.login.submit'|trans }}</button>
</div>
<div class="uk-text-right uk-margin-small-top uk-form-controls">
<label for="remember_me">{{ 'security.login.remember_me'|trans }}</label>
<input type="checkbox" class="uk-checkbox uk-margin-medium-left" id="remember_me" name="_remember_me" value="on" /></div>
</div>
<input type="checkbox" class="uk-checkbox uk-margin-medium-left" id="remember_me" name="_remember_me" value="on" />
</div>
</div>
<div class="uk-width-1-1 uk-text-center">
<p>Forgot your password? <a href="{{ path('fos_user_resetting_request') }}">Click here</a></p>
</div>
</div>
</form>

View File

@ -1,5 +1,5 @@
{% extends 'base.html.twig' %}
{% block title %}Register with {{ service }}{% endblock title %}
{% block body %}
<h3>{{ 'header.connecting' | trans({}, 'HWIOAuthBundle')}}</h3>
<div class="uk-width-1-1">

View File

@ -1,5 +1,9 @@
{% extends 'HWIOAuthBundle::layout.html.twig' %}
{% extends 'base.html.twig' %}
{% block hwi_oauth_content %}
<h3>{{ 'header.success' | trans({'%name%': userInformation.realName}, 'HWIOAuthBundle') }}</h3>
{% endblock hwi_oauth_content %}
{% block title %}Connected account with {{ userInformation.resourceOwner.name }}{% endblock title %}
{% block body %}
<p class="uk-text-center uk-text-lead">Connected account with {{ userInformation.resourceOwner.name }}</p>
<p class="uk-text-center">
<a href="{{ path('fos_user_profile_show') }}" title="Go to profile">Go to your profile</a>
</p>
{% endblock body %}

View File

@ -1,10 +1,17 @@
{% extends 'HWIOAuthBundle::layout.html.twig' %}
{% block hwi_oauth_content %}
{% extends 'base.html.twig' %}
{% block title %}Connect with your social media accounts{% endblock title %}
{% block body %}
{% if error is defined and error %}
<span>{{ error }}</span>
<div class="uk-alert uk-alert-danger" data-uk-alert>
<a href="#" class="uk-alert-close uk-close"></a>
<p>{{ error }}</p>
</div>
{% endif %}
<div class="uk-text-center uk-child-width-1-1@s uk-child-width-1-5@m" uk-grid>
{% for owner in hwi_oauth_resource_owners() %}
<a href="{{ hwi_oauth_login_url(owner) }}">{{ owner | trans({}, 'HWIOAuthBundle') }}</a> <br />
<div class="uk-text-center">
<a href="{{ hwi_oauth_login_url(owner) }}">{{ owner | trans({}, 'HWIOAuthBundle') }}</a>
</div>
{% endfor %}
{% endblock hwi_oauth_content %}
</div>
{% endblock body %}

View File

@ -1,30 +1,82 @@
{% extends 'base.html.twig' %}
{% block title %}Register with {{ userInformation.resourceOwner.name|capitalize }}{% endblock title %}
{% block body %}
<div class="uk-width-1-1">
{{ dump(userInformation) }}
</div>
{% if userInformation.resourceOwner.name == 'yahoo' %}
{% set name = userInformation.nickname %}
<div class="uk-width-1-1">
{% if userInformation.response.name is defined %}
{% set name = userInformation.response.name %}
{% elseif userInformation.response.data.username is defined %}
{% set name = userInformation.response.data.username %}
{% elseif userInformation.resourceOwner.name == 'yahoo' %}
{% set name = userInformation.nickname %}
{% else %}
{% set name = userInformation.email %}
{% set name = userInformation.email %}
{% endif %}
<h3>{{ 'header.register' | trans({'%name%': name }, 'HWIOAuthBundle') }}</h3>
<div class="uk-card uk-card-default uk-margin-small-bottom uk-width-1-1">
<div class="uk-card-header">
<div class="uk-grid-small uk-flex-middle" uk-grid>
<div class="uk-width-auto">
{% if userInformation.profilePicture is not empty %}
<img class="" width="40" height="40" src="{{ userInformation.profilePicture }}">
{% endif %}
</div>
<div class="uk-width-expand">
<p class="uk-text-large uk-card-title uk-margin-remove-bottom">Register with {{ userInformation.resourceOwner.name|capitalize }} account?</p>
{{ form_start(form, {'action': path('hwi_oauth_connect_registration', {'key': key}), 'attr': {'class': 'hwi_oauth_registration_register uk-form uk-form-horizontal'}}) }}
{{ form_widget(form) }}
<div>
<button type="submit" class="btn btn-primary">{{ 'connect.registration.submit'|trans({}, 'HWIOAuthBundle') }}</button>
<a href="{{ path('hwi_oauth_connect') }}" class="btn">{{ 'connect.registration.cancel' | trans({}, 'HWIOAuthBundle') }}</a>
</div>
{{ form_end(form) }}
{% if userInformation.profilePicture is not empty %}
<img src="{{ userInformation.profilePicture }}" />
{% endif %}
</div>
</div>
</div>
<div class="uk-card-footer">
<p class="uk-margin-remove-top">
{{ 'header.register' | trans({'%name%': name }, 'HWIOAuthBundle') }}?
</p>
</div>
</div>
{{ form_start(form, {'action': path('hwi_oauth_connect_registration', {'key': key}), 'attr': {'class': 'hwi_oauth_registration_register uk-form uk-form-horizontal'}}) }}
{{ form_label(form.name, 'Name', {'label_attr':{'class':'uk-form-label uk-visible@m'}}) }}
<div class="uk-form-controls uk-form-controls-text uk-margin-small-bottom">
{{ form_errors(form.name) }}
{{ form_widget(form.name, {'value': name,'attr':{'class':'uk-input uk-form-large', 'placeholder':'Your name'}}) }}
</div>
{{ form_label(form.email, 'Email address', {'label_attr':{'class':'uk-form-label uk-visible@m'}}) }}
<div class="uk-form-controls uk-form-controls-text uk-margin-small-bottom">
{{ form_errors(form.email) }}
{{ form_widget(form.email, {'attr':{'class':'uk-input uk-form-large', 'placeholder':'Email address'}}) }}
</div>
{{ form_label(form.plainPassword.first, 'Password', {'label_attr':{'class':'uk-form-label uk-visible@m'}}) }}
<div class="uk-form-controls uk-form-controls-text uk-margin-small-bottom">
{{ form_errors(form.plainPassword.first) }}
{{ form_widget(form.plainPassword.first, {'attr':{'class':'uk-input uk-form-large', 'placeholder':'Create password'}}) }}
</div>
{{ form_label(form.plainPassword.second, 'Repeat password', {'label_attr':{'class':'uk-form-label uk-visible@m'}}) }}
<div class="uk-form-controls uk-form-controls-text uk-margin-small-bottom">
{{ form_errors(form.plainPassword.second) }}
{{ form_widget(form.plainPassword.second, {'attr':{'class':'uk-input uk-form-large', 'placeholder':'Repeat password'}}) }}
</div>
{{ form_label(form.rsvp, 'Number of guests? (including yourself)', {'label_attr':{'class':'uk-form-label uk-visible@m'}}) }}
<div class="uk-form-controls uk-form-controls-text uk-margin-small-bottom">
{{ form_errors(form.rsvp) }}
{{ form_widget(form.rsvp, {'attr':{'placeholder':'Number of guests including yourself.'}}) }}
</div>
{{ form_label(form.comment) }}
<div class="uk-form-controls uk-form-controls-text">
{{ form_errors(form.comment) }}
{{ form_widget(form.comment) }}
</div>
<div class="uk-child-width-1-2@m uk-child-width-1-1@s uk-grid uk-grid-divider uk-margin-medium-top" uk-grid>
<div>
<input type="submit" class="uk-width-1-1 uk-button-primary uk-button uk-button-large"
value="{{ 'connect.registration.submit'|trans({}, 'HWIOAuthBundle') }}"/>
</div>
<div>
<a href="{{ path('hwi_oauth_connect') }}"
class="uk-width-1-1 uk-button uk-button-large uk-button-danger">{{ 'connect.registration.cancel' | trans({}, 'HWIOAuthBundle') }}</a>
</div>
</div>
{{ form_end(form) }}
</div>
{% endblock body %}

View File

@ -1,5 +1,8 @@
{% extends 'HWIOAuthBundle::layout.html.twig' %}
{% block hwi_oauth_content %}
<h3>{{ 'header.registration_success' | trans({'%username%': app.user.username}, 'HWIOAuthBundle') }}</h3>
{% endblock hwi_oauth_content %}
{% extends 'base.html.twig' %}
{% block title %}Successfully Registered with {{ userInformation.resourceOwner.name }}.{% endblock title %}
{% block body %}
<p class="uk-text-lead uk-text-center">{{ 'header.registration_success' | trans({'%username%': app.user.username}, 'HWIOAuthBundle') }}</p>
<p class="uk-text-center">
<a href="{{ path('fos_user_profile_show') }}" title="Go to profile">Go to your profile</a>
</p>
{% endblock body %}

View File

@ -1,12 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
</head>
<body>
<div>
{% block hwi_oauth_content %}
{% endblock hwi_oauth_content %}
</div>
</body>
</html>

View File

@ -0,0 +1,21 @@
{% extends 'base.html.twig' %}
{% block title %}Error {{ status_code }} {{ status_text }}{% endblock title %}
{% block body %}
<p class="uk-margin-remove-top uk-text-center uk-404 uk-doughnut">
{{ status_code|replace({0:'<span class="uk-spin uk-background-cover uk-inline"></span>'})|raw }}
</p>
<div class="uk-width-1-1">
<hr class="uk-divider-icon" />
<p class="uk-text-center uk-text-lead">{{ status_text }}</p>
<p class="uk-text-center uk-text-large">
Sorry about that. I tried to get the page <span class="uk-text-bold">{{ app.request.requestUri }}</span> but it told me <span class="uk-text-bold">{{ status_text }}</span>.
</p>
<p class="uk-text-center uk-text-large">
I don't know what this means because it's not a 1 or a 0, but I sent an email with the error details to my owner and I'm sure they'll get right on it.
</p>
<p class="uk-text-center uk-text-large">The best I can do right now is redirect you to the <a href="{{ path('sikofitt_doughnutwedding_default_index') }}" title="Home page">home</a> page.</p>
</div>
{% endblock body %}

View File

@ -0,0 +1,16 @@
{% extends 'base.html.twig' %}
{% block title %}Error {{ status_code }} {{ status_text }}{% endblock title %}
{% block body %}
<p class="uk-margin-remove-top uk-text-center uk-404 uk-doughnut">
4<span class="uk-spin uk-background-cover uk-inline"></span>3
</p>
<div class="uk-width-1-1">
<hr class="uk-divider-icon" />
<p class="uk-text-center uk-text-lead">
So it turns out I can't give you access to this page. Sorry about that.
</p>
<p class="uk-text-center uk-text-large">The best I can do is redirect you to the <a href="{{ path('sikofitt_doughnutwedding_default_index') }}" title="Home page">home</a> page.</p>
</div>
{% endblock body %}

View File

@ -0,0 +1,14 @@
{% extends 'base.html.twig' %}
{% block title %}Error {{ status_code }} {{ status_text }}{% endblock title %}
{% block body %}
<p class="uk-margin-remove-top uk-text-center uk-404 uk-doughnut">
4<span class="uk-spin uk-background-cover uk-inline"></span>4
</p>
<div class="uk-width-1-1">
<hr class="uk-divider-icon" />
<p class="uk-text-center uk-text-lead">I wish the page <span class="uk-text-bold">'{{ app.request.requestUri }}'</span> existed, I really do. Unfortunately it does not.</p>
<p class="uk-text-center uk-text-large">The best I can do is redirect you to the <a href="{{ path('sikofitt_doughnutwedding_default_index') }}" title="Home page">home</a> page.</p>
</div>
{% endblock body %}

View File

@ -0,0 +1,31 @@
{% extends 'base.html.twig' %}
{% block title %}Error {{ status_code }} {{ status_text }}{% endblock title %}
{% block body %}
<h2 class="uk-text-center uk-text-lead uk-text-danger uk-margin-remove-top">
What did you do!! <small>Just kidding ..</small>
</h2>
<p class="uk-margin-remove-top uk-text-center uk-404 uk-doughnut">
5<span class="uk-spin uk-background-cover uk-inline"></span><span class="uk-spin uk-background-cover uk-inline"></span>
</p>
<p class="uk-margin-remove-top uk-text-center uk-404 uk-doughnut">
</p>
<hr class="uk-divider-icon" />
<blockquote cite="#">
<p class="uk-margin-small-bottom uk-text-center">
Nothing is more intolerable than to have to admit to yourself your own errors.
</p>
<footer class="uk-text-center">Ludwig van Beethoven</footer>
</blockquote>
<p class="uk-text-center uk-text-lead">
A message has been sent with the details of the error.<br />
We will fix it as soon as possible.
</p>
<p class="uk-text-center uk-text-large">
Sorry for any inconvenience caused.
</p>
<p class="uk-text-center">
<a href="{{ path('sikofitt_doughnutwedding_default_index') }}" class="uk-width-1-1@s uk-width-1-2@s uk-button uk-button-primary" title="Home page">Go to the home page</a>
</p>
{% endblock body %}

View File

@ -1,35 +1,125 @@
{% if form is defined %}
{% form_theme form with [_self, 'form_errors.html.twig'] %}
{% endif %}
{% set bucket = 'https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4' %}
<!DOCTYPE html>
<html lang="en">
<html lang="en-us">
<head>
<meta charset="UTF-8">
<title>Title</title>
<meta charset="utf-8">
<title>{% block title %}{% endblock title %}{% if app.request.requestUri != '/' %} | {% endif %}&hearts; Doughnut Wedding</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 href="https://fonts.googleapis.com/css?family=Raleway:200,300" rel="stylesheet">
<!-- Android -->
<meta name="theme-color" content="#f7a59d" />
<!-- Windows Phone -->
<meta name="msapplication-navbutton-color" content="#9dd3d5" />
<!-- iOS Safari -->
<meta name="apple-mobile-web-app-status-bar-style" content="#9dd3d5" />
<link rel="stylesheet" type="text/css" href="{{ asset('css/doughnutwedding.min.css') }}" />
<link href="https://fonts.googleapis.com/css?family=Raleway:200,300" rel="stylesheet" />
<link rel="stylesheet" type="text/css" href="{{ asset('css/select2.min.css') }}" />
<script src="{{ asset('js/vendor.min.js') }}" type="text/javascript"></script>
<link rel="shortcut icon" type="image/png" href="{{ bucket }}/assets/favicon.png" />
<link rel="apple-touch-icon-precomposed" href="{{ bucket }}/assets/favicon.png" />
{% block stylesheets %}{% endblock %}
<script src="{{ asset('js/vendor.min.js') }}" type="text/javascript"></script>
<script src="{{ asset('js/doughnutwedding.min.js') }}" type="text/javascript"></script>
{% block javascripts %}{% endblock %}
</head>
<body>
{% block debug %}{% endblock %}
{% if app.request.requestUri == path('sikofitt_doughnutwedding_default_index') %}
<div class="uk-preload">
<div class="our-story"></div>
<div class="photo-gallery"></div>
</div>
{% endif %}
{% block debug %}
{% endblock %}
<div class="uk-offcanvas-content">
<div class="uk-container-small uk-container uk-margin-large-top uk-margin-large-bottom">
<div class="uk-responsive-width uk-width-3-4 uk-align-center">
<div class="uk-logo uk-animation-scale-up uk-transform-origin-top-center">
<a href="{{ path('sikofitt_doughnutwedding_default_index') }}"><img src="{{ asset('images/logo.png') }}" /></a>
</div>
<div class="uk-login-container uk-container uk-container-expand uk-visible@m uk-position-top-right">
<nav class="uk-navbar uk-navbar-container uk-navbar-transparent" uk-navbar>
<div class="uk-navbar-right uk-responsive-width">
<ul class="uk-navbar-nav">
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
<li><a href="{{ path('fos_user_profile_show') }}">{{ app.user.name }}</a></li>
<div class="uk-navbar-item">|</div>
<li><a class="" href="{{ path('sikofitt_doughnutwedding_gallery_upload') }}" title="Upload a wedding photo">Upload a photo</a></li>
<div class="uk-navbar-item">|</div>
<li><a class="" href="{{ path('fos_user_security_logout') }}" title="Logout">Logout</a></li>
{% else %}
<li><a class="" href="{{ path('fos_user_security_login') }}" title="Login">Login</a></li>
{% endif %}
</ul>
</div>
</nav>
</div>
<div class="uk-container uk-container-expand uk-hidden@m">
<nav class="uk-navbar uk-margin-small-top">
<div class="uk-navbar-left uk-width-medium">
<a class="{% if app.request.requestUri == path('sikofitt_doughnutwedding_default_index') %}uk-animation-slide-left{% endif %}" href="{{ path('sikofitt_doughnutwedding_default_index') }}"><img src="{{ bucket }}/assets/logo.png" /></a>
</div>
<div class="uk-navbar-right">
<a uk-navbar-toggle-icon="" href="#offcanvas" uk-toggle="" class="uk-navbar-toggle uk-hidden@m uk-navbar-toggle-icon uk-icon"></a>
</div>
</nav>
</div>
<div class="uk-container-small uk-container uk-margin-medium-top uk-margin-medium-bottom">
<div class="uk-visible@m uk-responsive-width uk-width-3-4 uk-align-center">
<div class="uk-logo {% if app.request.requestUri == '/' %}uk-animation-scale-up{% endif %} uk-transform-origin-bottom-center">
{% if app.request.requestUri == '/' %}
<h2 class="uk-text-center">ERIC + KATRINA'S</h2>
{% endif %}
<a href="{{ path('sikofitt_doughnutwedding_default_index') }}"><img class="uk-logo" src="{{ bucket }}/assets/logo.png" /></a>
{% if app.request.requestUri == '/' %}
<h3 class="uk-margin-small-top uk-text-center">MAY 12TH, 2017</h3>
{% endif %}
</div>
</div>{% set currentUrl = app.request.requestUri %}
{% if currentUrl != path('sikofitt_doughnutwedding_default_index') %}
<div class="uk-navigation-container uk-container uk-container-expand uk-visible@m">
<nav class="uk-navbar uk-navbar-container uk-navbar-transparent" uk-navbar>
<div class="uk-navbar-center uk-width-expand uk-margin-medium-bottom">
<ul class="uk-navbar-nav uk-doughnut-main-nav uk-child-width-1-5 uk-width-1-1">
<li class="{% if currentUrl == path('sikofitt_doughnutwedding_default_ourstory') %}uk-active{% endif %}">
<a href="{{ path('sikofitt_doughnutwedding_default_ourstory') }}" title="Our Story">Our Story</a>
</li>
<li class="{% if currentUrl == path('fos_user_profile_edit') %}uk-active{% endif %}">
<a href="{{ path('fos_user_profile_edit') }}" title="RSVP">RSVP</a>
</li>
<li class="{% if currentUrl == path('sikofitt_doughnutwedding_gallery_index') %}uk-active{% endif %}">
<a href="{{ path('sikofitt_doughnutwedding_gallery_index') }}" title="Photos!">Photo Gallery</a>
</li>
<li class="{% if currentUrl == path('sikofitt_doughnutwedding_default_location') %}uk-active{% endif %}">
<a href="{{ path('sikofitt_doughnutwedding_default_location') }}" title="Location">Location</a>
</li>
<li class="{% if currentUrl == path('sikofitt_doughnutwedding_default_contact') %}uk-active{% endif %}">
<a href="{{ path('sikofitt_doughnutwedding_default_contact') }}" title="Get In Touch">Get In Touch</a>
</li>
</ul>
</div>
</nav>
</div>
{% endif %}
{% include 'flash_messages.html.twig' %}
{% block body %}{% endblock %}
<a href="{{ path('fos_user_registration_check_email') }}">check</a>
<a href="{{ path('fos_user_change_password') }}">check</a>
<a href="{{ path('fos_user_resetting_check_email') }}">check</a>
{% include "social_login.html.twig" %}
{% block footer %}{% endblock %}
</div>
{% include 'off_canvas.html.twig' %}
</div>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-98404954-1', 'auto');
ga('send', 'pageview');
</script>
</body>
</html>

View File

@ -2,28 +2,61 @@
{% extends 'base.html.twig' %}
{% block body %}
<div class="uk-child-width-1-3@s uk-grid-small" uk-grid>
<div class="uk-home uk-child-width-1-3@s uk-grid-match uk-grid-small" uk-grid>
<div>
<div class="uk-inline uk-transition-toggle uk-cover-container uk-height-large uk-card uk-card-default uk-card-body uk-flex uk-flex-center uk-flex-middle">
<img src="http://placekitten.com/g/305/450" class="uk-position-cover uk-width-1-1 uk-height-large" />
<div class="uk-dark uk-overlay uk-overlay-primary uk-width-responsive uk-margin-large-top uk-position-center">
<h2>About Us</h2>
<div class="uk-animation-fade uk-background-cover uk-background-fade uk-our-story-home uk-height-large uk-card uk-card-default uk-card-body uk-flex uk-flex-center uk-flex-middle">
<a href="{{ path('sikofitt_doughnutwedding_default_ourstory') }}" class="uk-position-cover"></a>
<div class="uk-light uk-width-1-1 uk-overlay uk-margin-large-top uk-position-center">
<h3 class="uk-position-cover uk-text-center">
<a href="{{ path('sikofitt_doughnutwedding_default_ourstory') }}" class="uk-position-cover">our story</a>
</h3>
</div>
<div class="uk-transition-fade uk-background-cover uk-position-cover" style="background-image:url(http://placekitten.com/g/305/451)">
<a href="#" class="uk-display-inline-block uk-position-cover"></a>
</div>
</div>
<div>
<div class="uk-background-cover uk-background-fade uk-doughnut-rsvp uk-margin-small-bottom uk-height-small uk-card uk-card-default uk-card-body uk-flex uk-flex-center uk-flex-middle">
<a href="{{ path('fos_user_profile_edit') }}" class="uk-position-cover"></a>
<div class="uk-light uk-width-1-1 uk-overlay uk-margin-small-top uk-position-center">
<h3 class="uk-position-cover uk-text-center"><a href="{{ path('fos_user_profile_edit') }}" class="uk-position-cover">RSVP</a></h3>
</div>
</div>
<div class="uk-height-medium uk-background-cover uk-background-fade uk-photo-home uk-card uk-card-default uk-card-body uk-flex uk-flex-center uk-flex-middle">
<a href="{{ path('sikofitt_doughnutwedding_gallery_index') }}" class="uk-position-cover"></a>
<div class="uk-light uk-width-1-1 uk-overlay uk-margin-small-top uk-position-center">
<h3 class="uk-position-cover uk-text-center"><a href="{{ path('sikofitt_doughnutwedding_gallery_index') }}" class="uk-position-cover">photo gallery</a></h3>
</div>
</div>
</div>
<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 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 class="uk-height-medium uk-background-cover uk-margin-small-bottom uk-location-home uk-card uk-card-default uk-card-body uk-flex uk-flex-center uk-flex-middle">
<a href="{{ path('sikofitt_doughnutwedding_default_location') }}" class="uk-position-cover"></a>
<div class="uk-light uk-width-1-1 uk-overlay uk-position-center uk-margin-small-top">
<h3 class="uk-position-cover uk-text-center"><a href="{{ path('sikofitt_doughnutwedding_default_location') }}" class="uk-position-cover">location</a></h3>
</div>
</div>
<div class="uk-height-small uk-background-cover uk-background-fade uk-doughnut-get-in-touch-home uk-card uk-card-default uk-card-body uk-flex uk-flex-center uk-flex-middle">
<a href="{{ path('sikofitt_doughnutwedding_default_contact') }}" class="uk-position-cover"></a>
<div class="uk-light uk-width-1-1 uk-overlay uk-position-center uk-margin-small-top">
<h3 class="uk-position-cover uk-text-center"><a href="{{ path('sikofitt_doughnutwedding_default_contact') }}" class="uk-position-cover">get in touch</a></h3>
</div>
</div>
</div>
<div class="uk-width-1-2@m uk-width-1-1@s">
<p class="uk-text-lead uk-padding-remove-vertical">Want to attend but can't make it to Oregon?</p>
</div>
<div class="uk-width-1-2@m uk-width-1-1@s">
<p class="uk-text-meta">
Watch us tie the knot on Facebook or Instagram! We know many of you wont be here in person. so we'll be broadcasting the ceremony live. Join our wedding group on Facebook or follow us on Instagram and you'll be able to see the doughnut festivities as they happen!
</p>
</div>
<div class="uk-width-1-1 uk-grid-match uk-grid-small">
<div class="uk-text-center uk-width-1-2@m uk-width-1-1@s uk-margin-small-bottom"><a href="https://www.facebook.com/groups/doughnutwedding" class="uk-width-1-1 uk-button uk-button-primary" target="_blank" title="Join Facebook Group">Join Facebook Group</a></div>
<div class="uk-text-center uk-width-1-2@m uk-width-1-1@s uk-margin-small-bottom"><a href="https://instagram.com/doughnutwedding" class="uk-width-1-1 uk-button uk-button-primary" target="_blank" title="Follow on Instagram">Follow on Instagram</a></div>
</div>
</div>
</div>
{% endblock %}

View File

@ -0,0 +1,71 @@
{% extends 'base.html.twig' %}
{% block title %}Get in touch{% endblock title %}
{% block body %}
<h2 class="uk-text-center">Get in touch</h2>
<p class="uk-margin-medium uk-text-center uk-text-lead">
We'd LOVE to hear from you!<br /> Send us your wishes, thoughts, advice, stories or questions.
</p>
{% if(form is defined) %}
{{ form_errors(form) }}
{{ form_start(form) }}
{{ form_label(form.name) }}
<div class="uk-form-controls uk-form-controls-text">
{{ form_errors(form.name) }}
{{ form_widget(form.name) }}
</div>
{{ form_label(form.email) }}
<div class="uk-form-controls uk-form-controls-text">
{{ form_errors(form.email) }}
{{ form_widget(form.email) }}
</div>
{{ form_label(form.subject) }}
<div class="uk-form-controls uk-form-controls-text">
{{ form_errors(form.subject) }}
{{ form_widget(form.subject) }}
</div>
{{ form_label(form.comment) }}
<div class="uk-form-controls uk-form-controls-text">
{{ form_errors(form.comment) }}
{{ form_widget(form.comment) }}
</div>
<div class="" uk-grid>
<div class="uk-width-1-3@m uk-width-1-1@s">
{{ form_widget(form.submit) }}
</div>
<div class="uk-width-2-3@m uk-width-1-1@s">
<p class="uk-text-lead uk-text-center">
#doughnutwedding
</p>
<p class="uk-text-center">
Follow us on Instagram and Facebook for wedding updates!
</p>
</div>
</div>
{{ form_rest(form) }}
{{ form_end(form) }}
{% else %}
<div class="uk-width-1-1 uk-text-center">
<p class="uk-text-lead">
{{ message|first }}
</p>
{% if message|length > 1 %}
<p class="uk-text-center">{{ message|last }}</p>
{% endif %}
<p class="uk-text-lead uk-text-center">
#doughnutwedding
</p>
<p class="uk-text-center">
Follow us on Instagram and Facebook for wedding updates!
</p>
<p class="uk-text-center">
<a class="uk-button uk-button-primary uk-button-large" href="{{ path('sikofitt_doughnutwedding_default_index') }}" title="Home">
Go to the home page
</a>
</p>
</div>
{% endif %}
{% endblock %}

View File

@ -1,33 +0,0 @@
{% extends 'base.html.twig' %}
{% block body %}
{{ dump(app.session.get('user')) }}
{{ form_start(form) }}
<fieldset class="uk-fieldset uk-margin-small-bottom">
<legend class="uk-legend">Enter Token</legend>
</fieldset>
<div class="uk-grid-small" uk-grid>
<div class="uk-form-controls uk-form-controls-text uk-width-2-3@m">
{{ form_row(form.user_token) }}
</div>
<div class="uk-form-controls uk-width-1-3@m">
{{ form_row(form.submit) }}
</div>
</div>
<div class="uk-grid" uk-grid>
<div class="uk-width-1-1">
<p class="uk-text-center uk-text-lead">
You can also send a new auto login link to your email.
</p>
</div>
<div class="uk-form-controls uk-width-1-1 uk-text-center">
{{ form_row(form.email) }}
</div>
<div class="uk-form-controls uk-width-1-1 uk-text-center">
{{ form_row(form.update_token) }}
</div>
</div>
<div class="form-controls uk-form-blank">
{{ form_rest(form) }}
</div>
{{ form_end(form) }}
{% endblock %}

View File

@ -0,0 +1,15 @@
<li class="uk-margin-small-top uk-animation-fade">
<article class="uk-comment">
<header class="uk-comment-header uk-grid-medium uk-flex-middle" uk-grid>
<div class="uk-width-expand">
<h4 class="uk-comment-title uk-text-capitalize">{{ comment.user.name }} <small class="uk-text-meta" title="{{ comment.created|date('l F jS, Y') }} at {{ comment.created|date('g:ia') }}" uk-tooltip> | {{ comment.created|date('m/d/y') }} at {{ comment.created|date('g:ia') }}</small></h4>
</div>
</header>
<div class="uk-comment-body">
<p>{{ comment.comment }}</p>
</div>
</article>
</li>
<li class="uk-margin-small">
<p class="uk-heading-line uk-text-center"><span uk-icon="icon: heart;"></span></p>
</li>

View File

@ -1,8 +0,0 @@
{% extends 'base.html.twig' %}
{% block body %}
{{ 'Hello World!' }}
{% for key, request in app.request_stack %}
{{ dump(key) }}
{% endfor %}
{% endblock %}

View File

@ -0,0 +1,96 @@
{% extends 'base.html.twig' %}
{% block title %}Location{% endblock title %}
{% block stylesheets %}
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400" rel="stylesheet">
<link href="https://cdn.mapkit.io/v1/infobox.css" rel="stylesheet" >
<style>
#mapkit-9468 {
padding-bottom: 45%;
height: 0;
}
</style>
{% endblock %}
{% block javascripts %}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDvLrOMB0SW_fTNrIvZF3bS1xtpg6JRRHs&extension=.js"></script>
<script src="https://cdn.mapkit.io/v1/infobox.js"></script>
{% include 'map.html.twig' %}
{% endblock %}
{% block body %}
<div class="uk-grid-small uk-flex-center uk-grid-divider uk-child-width-1-1" uk-grid>
<h2 class="uk-margin-remove-top uk-text-center">Our Doughnut Wedding</h2>
<div>
<div class="uk-overflow-hidden uk-height-medium">
<img class="uk-transform-origin-top-right uk-animation-reverse uk-animation-kenburns" src="{{ bucket }}/assets/location.jpg" />
</div>
</div>
<div class="uk-margin-medium-bottom">
<h2 class="uk-text-center">Wedding</h2>
<p class="uk-text-large uk-text-center">
The ceremony will begin at 2pm at Voodoo Doughnut Too -- located where Sandy,
Davis and 15th meet. The shop is just across the street from Portland's famous
Sandy Hut. You can't miss the pink box building! There is limited parking at the venue,
but street parking is easy to find.
We'll be serving Voodoo Doughnuts and coffee immediately after the ceremony.
</p>
<h2 class="uk-text-center">Reception</h2>
<p class="uk-text-large uk-text-center">
A reception will be held at the Bar Bar patio from 4pm to 7pm. Street parking is available.
</p>
<div class="uk-width-1-1">
<h2 class="uk-text-center uk-heading-line"><span uk-icon="icon: heart;"></span></h2>
</div>
<div class="uk-child-width-1-1@s uk-child-width-1-2@m" uk-grid>
<div>
<p class="uk-h3 uk-text-center">Voodoo Doughnut Too</p>
<p class="uk-text-center">1501 NE Davis St.<br />Portland, Oregon
(<a href="https://goo.gl/maps/bk4FpLdpud92" target="_blank" title="Voodoo Too on Google Maps">Map</a>)
</p>
<p class="uk-text-center uk-align-center">
<a href="http://www.voodoodoughnut.com/doughnuts" target="_blank" title="Voodoo Doughnuts" class="uk-width-1-1@s uk-width-auto@m uk-button uk-button-primary">Check Out The Doughnuts!</a>
</p>
</div>
<div>
<p class="uk-h3 uk-text-center">Bar Bar</p>
<p class="uk-text-center">3939 N. Mississippi Ave.<br />Portland, Oregon
(<a href="https://goo.gl/maps/sBmLBeKr72q" target="_blank" title="Bar Bar on Google Maps">Map</a>)
</p>
<p class="uk-text-center uk-align-center">
<a href="http://www.mississippistudios.com/bar-bar/" target="_blank" title="Mississippi Studios - Bar Bar" class="uk-width-1-1@s uk-width-auto@m uk-button uk-button-primary">Check Out Bar Bar!</a>
</p>
</div>
</div>
</div>
<div>
<h2 class="uk-text-center">Directions</h2>
<h4 class="uk-text-center">From I-5 N</h4>
<p class="uk-text-center">
Use the right lane to take exit 300 for I-84 E/US-30 E toward Portland Airport/The Dalles
</p>
<p class="uk-text-center">
Keep right, follow signs for Central Eastside Industrial District
</p>
<p class="uk-text-center">
Continue on SE Water Ave. Take SE Stark St. and SE Sandy Blvd to NE Davis St
</p>
<h4 class="uk-text-center">From I-5 S</h4>
<p class="uk-text-center">
Continue on OR-99E N/SE Grand Ave. Drive to NE Davis St.
</p>
<p class="uk-text-center uk-text-large">
<a href="https://goo.gl/maps/bk4FpLdpud92" class="uk-width-1-1@s uk-width-1-3@m uk-button uk-button-primary" title="Google maps" target="_blank">Open in Google Maps</a>
</p>
</div>
<div class="">
<div id='mapkit-9468'></div>
</div>
</div>
{% endblock %}

View File

@ -0,0 +1,39 @@
{% extends 'base.html.twig' %}
{% block body %}
<p class="uk-text-lead uk-text-center">
We are sorry, but we are in maintenance mode.
</p>
<p class="uk-text-center">
We are busy upgrading the system and will be back shortly.<br />
Thank you for your patience!
</p>
<p class="uk-margin-remove-top uk-text-center uk-404 uk-doughnut">
<span class="uk-spin uk-background-cover uk-inline"></span>
</p>
<progress id="progressbar" class="uk-progress uk-width-1-2@m uk-width-1-1@s uk-align-center" value="10" max="100"></progress>
{% endblock %}
{% block javascripts %}
<script>
jQuery(function () {
var animate = setInterval(function () {
var progress = jQuery('progress');
progress && (progress.val(progress.val() + 10) );
if (!progress || progress.val() >= progress.attr('max')) {
for(i=progress.attr('max');i>0;i--) {
progress.val(i);
}
}
}, 1000);
});
</script>
{% endblock %}

View File

@ -0,0 +1,168 @@
<script>
google.maps.event.addDomListener(window, 'load', init);
var map, markersArray = [];
function bindInfoWindow(marker, map, location) {
google.maps.event.addListener(marker, 'click', function() {
function close(location) {
location.ib.close();
location.infoWindowVisible = false;
location.ib = null;
}
if (location.infoWindowVisible === true) {
close(location);
} else {
markersArray.forEach(function(loc, index){
if (loc.ib && loc.ib !== null) {
close(loc);
}
});
var boxText = document.createElement('div');
boxText.style.cssText = 'background: #fff;';
boxText.classList.add('md-whiteframe-2dp');
function buildPieces(location, el, part, icon) {
if (location[part] === '') {
return '';
} else if (location.iw[part]) {
switch(el){
case 'photo':
if (location.photo){
return '<div class="iw-photo" style="background-image: url(' + location.photo + ');"></div>';
} else {
return '';
}
break;
case 'iw-toolbar':
return '<div class="iw-toolbar"><h3 class="md-subhead">' + location.title + '</h3></div>';
break;
case 'div':
switch(part){
case 'email':
return '<div class="iw-details"><i class="material-icons" style="color:#4285f4;"><img src="//cdn.mapkit.io/v1/icons/' + icon + '.svg"/></i><span><a href="mailto:' + location.email + '" target="_blank">' + location.email + '</a></span></div>';
break;
case 'web':
return '<div class="iw-details"><i class="material-icons" style="color:#4285f4;"><img src="//cdn.mapkit.io/v1/icons/' + icon + '.svg"/></i><span><a href="' + location.web + '" target="_blank">' + location.web_formatted + '</a></span></div>';
break;
case 'desc':
return '<label class="iw-desc" for="cb_details"><input type="checkbox" id="cb_details"/><h3 class="iw-x-details">Details</h3><i class="material-icons toggle-open-details"><img src="//cdn.mapkit.io/v1/icons/' + icon + '.svg"/></i><p class="iw-x-details">' + location.desc + '</p></label>';
break;
default:
return '<div class="iw-details"><i class="material-icons"><img src="//cdn.mapkit.io/v1/icons/' + icon + '.svg"/></i><span>' + location[part] + '</span></div>';
break;
}
break;
case 'open_hours':
var items = '';
if (location.open_hours.length > 0){
for (var i = 0; i < location.open_hours.length; ++i) {
if (i !== 0){
items += '<li><strong>' + location.open_hours[i].day + '</strong><strong>' + location.open_hours[i].hours +'</strong></li>';
}
var first = '<li><label for="cb_hours"><input type="checkbox" id="cb_hours"/><strong>' + location.open_hours[0].day + '</strong><strong>' + location.open_hours[0].hours +'</strong><i class="material-icons toggle-open-hours"><img src="//cdn.mapkit.io/v1/icons/keyboard_arrow_down.svg"/></i><ul>' + items + '</ul></label></li>';
}
return '<div class="iw-list"><i class="material-icons first-material-icons" style="color:#4285f4;"><img src="//cdn.mapkit.io/v1/icons/' + icon + '.svg"/></i><ul>' + first + '</ul></div>';
} else {
return '';
}
break;
}
} else {
return '';
}
}
boxText.innerHTML =
buildPieces(location, 'photo', 'photo', '') +
buildPieces(location, 'iw-toolbar', 'title', '') +
buildPieces(location, 'div', 'address', 'location_on') +
buildPieces(location, 'div', 'web', 'public') +
buildPieces(location, 'div', 'email', 'email') +
buildPieces(location, 'div', 'tel', 'phone') +
buildPieces(location, 'div', 'int_tel', 'phone') +
buildPieces(location, 'open_hours', 'open_hours', 'access_time') +
buildPieces(location, 'div', 'desc', 'keyboard_arrow_down');
var myOptions = {
alignBottom: true,
content: boxText,
disableAutoPan: true,
maxWidth: 0,
pixelOffset: new google.maps.Size(-140, -40),
zIndex: null,
boxStyle: {
opacity: 1,
width: '280px'
},
closeBoxMargin: '0px 0px 0px 0px',
infoBoxClearance: new google.maps.Size(1, 1),
isHidden: false,
pane: 'floatPane',
enableEventPropagation: false
};
location.ib = new InfoBox(myOptions);
location.ib.open(map, marker);
location.infoWindowVisible = true;
}
});
}
function init() {
var mapOptions = {
center: new google.maps.LatLng(45.52464731651513, -122.65028208095099),
zoom: 16,
gestureHandling: 'auto',
fullscreenControl: false,
zoomControl: true,
disableDoubleClickZoom: true,
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
},
scaleControl: true,
scrollwheel: true,
streetViewControl: true,
draggable : true,
clickableIcons: false,
mapTypeId: google.maps.MapTypeId.ROADMAP,
styles: [{"featureType":"administrative","stylers":[{"visibility":"off"}]},{"featureType":"poi","stylers":[{"visibility":"simplified"}]},{"featureType":"road","elementType":"labels","stylers":[{"visibility":"simplified"}]},{"featureType":"water","stylers":[{"visibility":"simplified"}]},{"featureType":"transit","stylers":[{"visibility":"simplified"}]},{"featureType":"landscape","stylers":[{"visibility":"simplified"}]},{"featureType":"road.highway","stylers":[{"visibility":"off"}]},{"featureType":"road.local","stylers":[{"visibility":"on"}]},{"featureType":"road.highway","elementType":"geometry","stylers":[{"visibility":"on"}]},{"featureType":"water","stylers":[{"color":"#84afa3"},{"lightness":52}]},{"stylers":[{"saturation":-17},{"gamma":0.36}]},{"featureType":"transit.line","elementType":"geometry","stylers":[{"color":"#3f518c"}]}]
}
var mapElement = document.getElementById('mapkit-9468');
var map = new google.maps.Map(mapElement, mapOptions);
var locations = [
{"title":"Voodoo Doughnut Too","address":"1501 NE Davis St, Portland, OR 97232, USA","desc":"","tel":"(503) 235-2666","int_tel":"+1 503-235-2666","email":"","web":"http://voodoodoughnuts.com","web_formatted":"voodoodoughnuts.com","open":"","time":"0742","lat":45.5244594,"lng":-122.65047520000002,"vicinity":"1501 Northeast Davis Street, Portland","open_hours":[{"day":"Monday","hours":"open24hours","$$hashKey":"object:1722"},{"day":"Tuesday","hours":"open24hours","$$hashKey":"object:1723"},{"day":"Wednesday","hours":"open24hours","$$hashKey":"object:1724"},{"day":"Thursday","hours":"open24hours","$$hashKey":"object:1725"},{"day":"Friday","hours":"open24hours","$$hashKey":"object:1726"},{"day":"Saturday","hours":"open24hours","$$hashKey":"object:1727"},{"day":"Sunday","hours":"open24hours","$$hashKey":"object:1728"}],"marker":{"fillColor":"#4CAF50","fillOpacity":1,"strokeWeight":0,"scale":1.5,"path":"M10.2,0C4.6,0,0,4.6,0,10.2c0,6.9,7.8,6.3,10.2,26.4c2.5-20.1,10.2-19.5,10.2-26.4C20.4,4.6,15.9,0,10.2,0z M10.2,13.9c-2.4,0-4.3-1.9-4.3-4.3s1.9-4.3,4.3-4.3s4.3,1.9,4.3,4.3C14.6,12,12.6,13.9,10.2,13.9z","anchor":{"x":10,"y":30},"origin":{"x":0,"y":0},"style":3},"iw":{"address":true,"desc":true,"email":true,"enable":true,"int_tel":true,"open":true,"open_hours":true,"photo":true,"tel":true,"title":true,"web":true}}
];
var layer = new google.maps.TrafficLayer();
layer.setMap(map);
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
icon: locations[i].marker,
position: new google.maps.LatLng(locations[i].lat, locations[i].lng),
map: map,
title: locations[i].title,
address: locations[i].address,
desc: locations[i].desc,
tel: locations[i].tel,
int_tel: locations[i].int_tel,
vicinity: locations[i].vicinity,
open: locations[i].open,
open_hours: locations[i].open_hours,
photo: locations[i].photo,
time: locations[i].time,
email: locations[i].email,
web: locations[i].web,
iw: locations[i].iw
});
markersArray.push(marker);
if (locations[i].iw.enable === true){
bindInfoWindow(marker, map, locations[i]);
}
}
}
</script>

View File

@ -0,0 +1,68 @@
<div id="offcanvas" uk-offcanvas="overlay: true; mode:reveal;">
<div class="uk-offcanvas-bar uk-offcanvas-bar-animation">
<button class="uk-offcanvas-close uk-align-right" type="button" uk-close></button>
<ul class="uk-nav uk-nav-primary">
<li class="uk-nav-header">Navigation</li>
<li class="uk-nav-divider"></li>
<li><a href="{{ path('sikofitt_doughnutwedding_default_index') }}"><span class="uk-margin-small-right" uk-icon="icon: home"></span> Home</a></li>
<li><a href="{{ path('sikofitt_doughnutwedding_default_ourstory') }}"><span class="uk-margin-small-right" uk-icon="icon: heart"></span> Our Story</a></li>
<li><a href="{{ path('fos_user_profile_edit') }}"><span class="uk-margin-small-right" uk-icon="icon: bolt"></span> RSVP</a></li>
<li><a href="{{ path('sikofitt_doughnutwedding_gallery_index') }}"><span class="uk-margin-small-right" uk-icon="icon: image"></span> Gallery</a></li>
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
<li><a href="{{ path('sikofitt_doughnutwedding_gallery_upload') }}">
<span class="uk-margin-small-right" uk-icon="icon: cloud-upload"></span> Upload Photo</a>
</li>
{% endif %}
<li><a href="{{ path('sikofitt_doughnutwedding_default_location') }}"><span class="uk-margin-small-right" uk-icon="icon: location"></span> Location</a></li>
<li><a href="{{ path('sikofitt_doughnutwedding_default_contact') }}"><span class="uk-margin-small-right" uk-icon="icon: mail"></span> Get In Touch</a></li>
{% if not is_granted('IS_AUTHENTICATED_FULLY') %} {% set social_prefix = 'Login with' %} {% else %} {% set social_prefix = 'Link Account With' %} {% endif %}
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
<li class="uk-nav-header">{{ app.user.name }}</li>
<li class="uk-nav-divider"></li>
<li><a href="{{ path('fos_user_profile_show') }}"><span class="uk-margin-small-right" uk-icon="icon: user"></span> Profile</a></li>
<li><a href="{{ path('fos_user_change_password') }}"><span class="uk-margin-small-right" uk-icon="icon: lock"></span> Change <span class="uk-display-inline-block uk-margin-medium-left">Password</span></a></li>
<li><a href="{{ path('fos_user_security_logout') }}"><span class="uk-margin-small-right" uk-icon="icon: sign-out"></span> Logout</a></li>
{% else %}
<li class="uk-nav-header">User</li>
<li class="uk-nav-divider"></li>
<li><a href="{{ path('fos_user_security_login') }}" title="Login"><span class="uk-margin-small-right" uk-icon="icon: sign-in"></span> Login</a></li>
<li><a href="{{ path('fos_user_registration_register') }}" title="Register"><span class="uk-margin-small-right" uk-icon="icon: star"></span> Register / RSVP</a></li>
{% endif %}
<li>
<div class="uk-position-fixed uk-position-bottom uk-padding-small">
<p class="uk-text-meta uk-text-center uk-margin-small-bottom">{{ social_prefix }}</p>
<ul class="uk-iconnav uk-text-center uk-child-width-1-5">
<li>
<a href="{{ path("hwi_oauth_service_redirect", {service: "facebook"}) }}">
<span class="uk-margin-small-right" uk-icon="icon: facebook"></span>
</a>
</li>
<li>
<a href="{{ path("hwi_oauth_service_redirect", {service: "google"}) }}">
<span class="uk-margin-small-right" uk-icon="icon: google"></span>
</a>
</li>
<li>
<a href="{{ path("hwi_oauth_service_redirect", {service: "twitter"}) }}">
<span class="uk-margin-small-right" uk-icon="icon: twitter"></span>
</a>
</li>
<li>
<a href="{{ path("hwi_oauth_service_redirect", {service: "yahoo"}) }}">
<span class="uk-margin-small-right" uk-icon="icon: yahoo"></span>
</a>
</li>
<li>
<a href="{{ path("hwi_oauth_service_redirect", {service: "amazon"}) }}">
<span class="uk-margin-small-right" uk-icon="icon: amazon"></span>
</a>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>

View File

@ -0,0 +1,29 @@
{% extends 'base.html.twig' %}
{% block title %}Our Story{% endblock title %}
{% block body %}
<h2 class="uk-text-center uk-margin-remove-top" style="letter-spacing: .15rem">Our Story</h2>
<hr class="uk-margin-small-bottom" />
<div class="uk-overflow-hidden uk-margin-top-remove uk-margin-small-bottom">
<img class="uk-responsive-width" src="{{ bucket }}/assets/our-story-hero.jpg" />
</div>
<div class="uk-column-1-1@m uk-column-divider">
<hr class="uk-margin-small-bottom" />
<p>Eric and Katrina first met online in 2014. After texting back and forth for a week they finally met in
persion at a little coffee shop in Oakland on July 23, 2014. Eric was shy and Katrina was nervous, but somehow they found enough
to talk about to agree to a second date where they continued to bond over coffee, cigarettes, and zombie movies.</p>
<p>Ollie (Katrina's dog) loved Eric instantly, and Buddy and Mayu (Eric's cats) never murdered Katrina in her sleep, so they tolerated her.</p>
<h2 class="uk-heading-line uk-text-center uk-text-capitalize"><span>This was a good sign.</span></h2>
<p class="uk-column-span uk-text-lead uk-text-center"></p>
<p>In August 2016 they packed everything into a couple of crates and moved up north to Portland, Oregon. After six months of the both of them working from home,
they realized that they were still madly in love (despite seeing each other all day, every day.) So on February 6, 2017 Eric proposed to Katrina.</p>
<h2 class="uk-heading-line uk-text-center"><span><span uk-icon="icon: heart"></span></span></h2>
<p class="uk-column-span uk-text-lead uk-text-center uk-text-primary">
On May 12, 2017 they will both say "yes" and live happily ever after til death do they part.
</p>
</div>
<div class="uk-width-1-1">
<p class="uk-text-center">
<a href="{{ path('sikofitt_doughnutwedding_gallery_index') }}" class="uk-button uk-button-large uk-button-primary">Check out some photos!</a>
</p>
</div>
{% endblock %}

View File

@ -1,5 +1,5 @@
{% extends 'base.html.twig' %}
{% block body %}
{% dump(request.flash) %}
{% endblock %}

View File

@ -2,7 +2,7 @@
{% block body %}
{{ dump(app.session.get('user')) }}
{{ form_start(form) }}
<fieldset class="uk-fieldset uk-margin-large-bottom">
<legend class="uk-legend">RSVP!</legend>

View File

@ -1,21 +1,22 @@
{% if(not is_granted('IS_AUTHENTICATED_FULLY')) %}
<div class="uk-width-1-1 uk-padding-small uk-align-center">
{% if not is_granted('IS_AUTHENTICATED_FULLY') %}
<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 class="uk-margin-small-left uk-margin-small-right" uk-icon="icon: social"></span> <a href="{{ url('fos_user_registration_register') }}" title="Register">Register</a>
</span>
</h4>
<ul class="uk-iconnav uk-grid uk-child-width-1-6" uk-grid>
<ul class="uk-iconnav uk-grid uk-child-width-1-5" 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-yahoo" href="{{ url("hwi_oauth_service_redirect", {service: "yahoo"}) }}" uk-icon="icon: yahoo; ratio:1.5"></a></li>
<li><a class="uk-text-center uk-login uk-login-amazon" href="{{ url("hwi_oauth_service_redirect", {service: "amazon"}) }}" uk-icon="icon: amazon; ratio:1.5"></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 %}

View File

@ -1,4 +0,0 @@
{% extends 'base.html.twig' %}
{% block body %}
{{ dump(app.session.get('user')) }}
{% endblock %}

View File

@ -1,7 +0,0 @@
{% extends 'base.html.twig' %}
{% block body %}
<h2 class="uk-text-center">You have been successfully logged out.</h2>
<p class="uk-text-center">
You can log in again by going to the <a href="/login">login</a> page.
</p>
{% endblock %}

View File

@ -0,0 +1,22 @@
{% block body_text %}
{% autoescape false %}
Heyo!
{{ user.name }} has registered a new account with the email {{ user.email }} and is bringing {% if user.rsvp.guests != 0 %}{{ user.rsvp.guests - 1 }}{% else %}0{% endif %} guests with them.
{% if user.comment is not null %}
{{ user.name }} wants you to know -
{{ user.comment }}
{% endif %}
{% if resourceOwner is defined and resourceOwner is not null %}
{{ user.name }} connected with {{ resourceOwner|capitalize }}
{% endif %}
Love,
Your website ❤
{% endautoescape %}
{% endblock %}
{% block body_html %}{% endblock %}

View File

@ -1,11 +1,9 @@
# https://www.lightsaml.com/SP-Bundle/Getting-started/
# https://github.com/hslavich/OneloginSamlBundle
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
- { resource: snc_redis.yml }
- { resource: easy_admin.yml }
# Put parameters here that don't need to change on each machine where the app is deployed
# http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
parameters:
@ -13,6 +11,9 @@ parameters:
google.credentials_file: '%kernel.root_dir%/config/google-storage-key.json'
google.client_id: '100826355104373784827'
google.application_name: 'doughnut-wedding'
katrina.email: katrina.a.johnson@gmail.com
eric.email: sikofitt@gmail.com
maintenance: false
framework:
cache:
app: cache.adapter.redis
@ -49,6 +50,9 @@ framework:
twig:
debug: '%kernel.debug%'
strict_variables: '%kernel.debug%'
form_themes:
# other form themes
- 'VichUploaderBundle:Form:fields.html.twig'
# Doctrine Configuration
doctrine:
@ -121,10 +125,11 @@ swiftmailer:
transport: '%mailer_transport%'
host: '%mailer_host%'
port: '%mailer_port%'
encryption: ssl
auth_mode: login
username: '%mailer_user%'
password: '%mailer_password%'
spool: { type: memory }
delivery_addresses: ['eric@rewiv.com']
sender_address: 'noreply@doughnutwedding.com'
hwi_oauth:
@ -146,10 +151,6 @@ hwi_oauth:
type: amazon
client_id: 'amzn1.application-oa2-client.15f87b8a4f23465b9022ba0a3f55610d'
client_secret: '84d6f402c53386ae0f196062945f217dcc56e7b7122cffb76c95b6a5775d22e0'
instagram:
type: instagram
client_id: ' 70e7edd280834c429d49f985ff308230'
client_secret: '9c405020a3ef412086032a4514909705'
twitter:
type: twitter
client_id: 'YmXGQN2Az0eTlkwJrnaO2wR9r'
@ -168,13 +169,12 @@ hwi_oauth:
google: googleId
facebook: facebookId
amazon: amazonId
instagram: instagramId
twitter: twitterId
yahoo: yahooId
# if you want to use 'connect' and do not use the FOSUB integration, configure these separately
connect:
confirmation: false
failed_auth_path: fos_user_security_login
fos_user:
db_driver: orm # other valid values are 'mongodb' and 'couchdb'
firewall_name: secured_area
@ -188,20 +188,52 @@ fos_user:
registration:
form:
type: Sikofitt\DoughnutWeddingBundle\Form\RegistrationType
change_password:
form:
type: Sikofitt\DoughnutWeddingBundle\Form\ChangePasswordFormType
knp_gaufrette:
stream_wrapper: ~
adapters:
assets:
google_cloud_storage:
service_id: 'doughnutwedding.google_cloud_storage.service'
bucket_name: 'zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4'
options:
acl: 'public'
directory: 'assets'
gallery:
google_cloud_storage:
service_id: 'doughnutwedding.google_cloud_storage.service'
bucket_name: 'zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4'
options:
acl: 'public'
directory: 'gallery'
filesystems:
cloud:
adapter: gallery
alias: google_cloud
assets:
adapter: assets
alias: cloud_assets
vich_uploader:
db_driver: orm
mappings:
gallery_image:
namer:
service: vich_uploader.namer_hash
options:
length: 32
algorithm: 'sha3-512'
delete_on_update: true
delete_on_remove: true
sikofitt_doughnut_wedding:
max_rsvps: ~
max_rsvps: ~
white_october_pagerfanta:
exceptions_strategy:
out_of_range_page: ~
not_valid_current_page: ~

View File

@ -9,7 +9,7 @@ framework:
web_profiler:
toolbar: true
intercept_redirects: true
intercept_redirects: false
monolog:
handlers:
@ -36,8 +36,20 @@ monolog:
#chromephp:
# type: chromephp
# level: info
vich_uploader:
storage: gaufrette
mappings:
gallery_image:
upload_destination: cloud
uri_prefix: /
#storage: file_system
#mappings:
# gallery_image:
# uri_prefix: /images/gallery
# upload_destination: '%kernel.root_dir%/../web/images/gallery'
#swiftmailer:
swiftmailer:
transport: null
# disable_delivery: true
# transport: smtp
# delivery_addresses: ['info@doughnutwedding.com']

View File

@ -5,11 +5,41 @@ monolog:
handlers:
main:
type: fingers_crossed
action_level: error
action_level: notice
handler: redis
console:
type: console
redis:
type: service
id: snc_redis.monolog.handler
level: debug
level: notice
mail:
type: fingers_crossed
# 500 errors are logged at the critical level
action_level: error
excluded_404s:
- ^/
# to also log 400 level errors (but not 404's):
# action_level: error
#excluded_404s:
# - ^/
handler: deduplicated
deduplicated:
type: deduplication
handler: swift
swift:
type: swift_mailer
from_email: 'action@doughnutwedding.com'
to_email: ['sikofitt@gmail.com','katrina.a.johnson@gmail.com']
# or list of recipients
# to_email: ['dev1@example.com', 'dev2@example.com', ...]
subject: 'An Error Occurred! %%message%%'
level: error
formatter: monolog.formatter.html
content_type: text/html
vich_uploader:
storage: gaufrette
mappings:
gallery_image:
upload_destination: cloud
uri_prefix: /

80
app/config/easy_admin.yml Normal file
View File

@ -0,0 +1,80 @@
easy_admin:
site_name: Doughnut Wedding
design:
form_theme: 'horizontal'
entities:
ImageComments:
class: Sikofitt\DoughnutWeddingBundle\Entity\ImageComment
disabled_actions: ['new']
User:
class: Sikofitt\DoughnutWeddingBundle\Entity\User
list:
actions: ['show','edit','delete']
fields: ['name','username','email','enabled','lastLogin','rsvp']
edit:
fields:
- name
- username
- email
- { property: rsvp, type_options: { disabled: true } }
- comment
- images
- enabled
- lastLogin
- confirmationToken
- passwordRequestedAt
- roles
- created
- updated
- facebookId
- googleId
- amazonId
- instagramId
- twitterId
- yahooId
show:
fields:
- name
- username
- email
- rsvp
- comment
- images
- enabled
- lastLogin
- passwordRequestedAt
- roles
- created
- updated
- facebookId
- googleId
- amazonId
- instagramId
- twitterId
- yahooId
Rsvp:
class: Sikofitt\DoughnutWeddingBundle\Entity\Rsvp
Contact:
class: Sikofitt\DoughnutWeddingBundle\Entity\Contact
list:
actions: ['show','edit','delete']
fields: ['userid','email','name','comment','createdAt']
Images:
class: Sikofitt\DoughnutWeddingBundle\Entity\Image
image_base_path: 'https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/gallery/'
list:
actions: ['show','delete']
fields:
- { property: 'imageName', label: 'Image', type: 'image', base_path: 'https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/gallery/' }
- description
- category
- tags
- user
form:
fields:
- { property: 'imageFile', type: 'vich_image', base_path: 'https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/gallery/' }
- description
- { property: tags, type: 'collection'}
- category
- user

View File

@ -2,49 +2,63 @@ hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
prefix: /connect
hwi_oauth_connect:
resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"
prefix: /connect
hwi_oauth_login:
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
prefix: /connect
facebook_login:
path: /login/callback/facebook
google_login:
path: /login/callback/google
twitter_login:
path: /login/callback/twitter
instagram_login:
path: /login/callback/instagram
amazon_login:
path: /login/callback/amazon
yahoo_login:
path: /login/callback/yahoo
fos_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
easy_admin_bundle:
resource: "@EasyAdminBundle/Controller/"
type: annotation
prefix: /admin
sikofitt_doughnut_wedding:
resource: "@SikofittDoughnutWeddingBundle/Controller/"
type: annotation

View File

@ -5,15 +5,22 @@ security:
FOS\UserBundle\Model\UserInterface:
algorithm: bcrypt
cost: 14
role_hierarchy:
ROLE_USER: ~
ROLE_ADMIN: [ROLE_USER]
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN]
providers:
fos_userbundle:
id: fos_user.user_provider.username
id: fos_user.user_provider.username_email
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
secured_area:
access_denied_handler: doughnutwedding.security.access_denied_handler
pattern: ^/
form_login:
provider: fos_userbundle
@ -28,10 +35,9 @@ security:
facebook: /login/callback/facebook
google: /login/callback/google
twitter: /login/callback/twitter
instagram: /login/callback/instagram
amazon: /login/callback/amazon
yahoo: /login/callback/yahoo
login_path: /connect
login_path: /login
use_forward: false
failure_path: /connect
oauth_user_provider:
@ -39,9 +45,13 @@ security:
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login/callback, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/logout$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login_check$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/user$, role: ROLE_USER }
- { path: ^/user, role: ROLE_USER }
- { path: ^/gallery/upload, role: ROLE_USER }
- { path: ^/gallery, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin$, role: ROLE_ADMIN }
- { path: ^/admin, role: ROLE_ADMIN }
- { path: ^/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }

View File

@ -13,19 +13,52 @@ services:
arguments: ['@fos_user.user_manager']
tags:
- { name: form.type, alias: app_user_registration }
doughnutwedding.form.profile:
class: Sikofitt\DoughnutWeddingBundle\Form\ProfileEditType
arguments: ['@fos_user.user_manager']
tags:
- { name: form.type, alias: app_user_profile_edit }
doughnutwedding.event.redirect_user_logged_in_event:
class: Sikofitt\DoughnutWeddingBundle\EventListener\UserRedirectOnLoggedInListener
arguments: ['@security.token_storage', '@router']
tags:
- { name: kernel.event_listener, event: kernel.request }
doughnutwedding.event.redirect_from_hwi_connect_page:
class: Sikofitt\DoughnutWeddingBundle\EventListener\RedirectFromHwiConnectPageEvent
arguments: ['@router', '@service_container']
tags:
- { name: kernel.event_listener, event: kernel.request }
doughnutwedding.event.redirect_user_after_register_event:
class: Sikofitt\DoughnutWeddingBundle\EventListener\RedirectOnUserRegisterListener
arguments: ['@router']
arguments: ['@service_container']
tags:
- { name: kernel.event_listener, event: fos_user.registration.confirmed }
- { name: kernel.event_listener, event: fos_user.registration.completed }
- { name: kernel.event_listener, event: security.interactive_login }
doughnutwedding.google_cloud_storage.service:
class: \Google_Service_Storage
factory: ['Sikofitt\DoughnutWeddingBundle\Factory\GoogleCloudStorageServiceFactory', createGoogleCloudService]
arguments: ['%google.credentials_file%', '%google.client_id%', '%google.application_name%']
doughnutwedding.event.check_maintenance_mode:
class: Sikofitt\DoughnutWeddingBundle\EventListener\CheckForMaintenanceModeListenerEvent
arguments: ['@service_container', '@security.token_storage']
tags:
- { name: kernel.event_listener, event: kernel.request }
doughnutwedding.event.check_email_on_reset_event:
class: Sikofitt\DoughnutWeddingBundle\EventListener\CheckThatEmailAndUserNameExistOnResetRequest
arguments: ['@router', '@templating.engine.twig']
tags:
- { name: kernel.event_listener, event: fos_user.resetting.send_email.initialize }
doughnutwedding.event.need_to_authenticate_listener_event:
class: Sikofitt\DoughnutWeddingBundle\EventListener\NeedToAuthenticateListenerEvent
tags:
- { name: kernel.event_listener, event: kernel.response }
doughnutwedding.security.access_denied_handler:
class: Sikofitt\DoughnutWeddingBundle\Security\AccessDeniedHandler
arguments: ['@router', '@monolog.logger']
doughnutwedding.uikit.template:
class: Sikofitt\DoughnutWeddingBundle\Pager\View\UIkitTemplate
pagerfanta.view.default:
class: Pagerfanta\View\DefaultView
arguments: ['@doughnutwedding.uikit.template']
public: false
tags: [{ name: pagerfanta.view, alias: default }]

88166
app/logs/development.log Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 130 B

3
build/images/favicon.png Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7226428a1b7a936b5bebfa5234fdeaf23cc6ba4c2c95c30bb882431d93c50b58
size 19799

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c2f77625370cea32c788260860dd0d80db78f5dd39407bea5db7a08d368b5c67
size 129385

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:20292a46d4178dbf439c79f443c7cf47625c0b424340dc3b20665d272d75df21
size 137445

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5ad55bf9040225d6a605294152c6f88d5476ef582936e8a4d016aa16e22ad1d2
size 305052

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:633d635d0526e5fd75ba380e827a524b417cfdf0e43e81b5f6ab5bdc6b7c1ed0
size 234658

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b2323c2bdbc898df952a1fb615e7bb62eb6ee4541f8ac2b01991925da7bf4abd
size 241003

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b439362aa5029f855ee1f72ff94552d8246ad46c303e04796465687656a7a86d
size 139466

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:482cb918c7bc3ea0998759a60abc237cd350651ddf5a09707fe52df2dae1afeb
size 129353

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e7ad0693c08599150ecae7ff1dabccb18792c1d10cc96a95129938b08a3cf4d6
size 271299

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 130 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 129 B

3
build/images/yahoo2.svg Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:806dc0af681d43dd94bf783335f3e6de6bdf769e4f882b513a106696c69cca82
size 763

View File

@ -1,5 +1,5 @@
jQuery(document).ready(function($) {
if(null === document.querySelector('select') && document.querySelector('select').length > 0) {
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');

View File

@ -1,14 +1,195 @@
@import "../../vendor/bower/uikit/src/less/uikit.less";
@import "../../vendor/bower/uikit/src/less/components/variables.less";
@import url('https://fonts.googleapis.com/css?family=Sigmar+One');
//@global-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
//@global-font-size: 16px;
@global-font-family: 'Raleway', sans-serif;
@base-body-font-family: 'Raleway', sans-serif;
@base-heading-font-family: 'Raleway', sans-serif;
@base-heading-text-transform: uppercase;
@button-text-transform:capitalize;
@base-body-font-weight: 200;
@base-heading-font-weight: 300;
@form-background: #ffffff;
@global-link-color: #5fbabd;
@base-link-color: @global-link-color;
@base-link-hover-color: darken(@base-link-color, 20%);
@button-primary-background: #9dd3d5;
@button-primary-color: #333;
@text-primary-color: @button-primary-background;
@button-primary-hover-color: darken(@button-primary-color, 10%);
@button-primary-hover-background: darken(@button-primary-background, 10%);
@button-danger-background: #fa6581;
@button-danger-color: #333;
@button-danger-hover-color: darken(@button-danger-color, 10%);
@button-danger-hover-background: darken(@button-danger-background, 10%);
blockquote p {
}
blockquote footer:before {
content: "— ";
}
.uk-404 {
font-family: 'Sigmar One', cursive;
line-height:0;
&.uk-doughnut {
@media(min-width: @breakpoint-small-max) {
font-size: 10rem;
}
@media(max-width: @breakpoint-small) {
font-size: 5rem;
}
.uk-spin {
@media(min-width: @breakpoint-small-max) {
width: 128px;
height: 128px;
}
@media(max-width: @breakpoint-small) {
width: 64px;
height:64px;
}
background-image:url(https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/doughnut_404.png)
}
}
}
@-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } }
@-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } }
@keyframes spin { 100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); } }
.uk-spin {
position: relative;
top: 0%;
left: 0%;
margin:0px 12px;
-webkit-animation:spin 1.5s linear infinite;
-moz-animation:spin 1.5s linear infinite;
animation:spin 1.5s linear infinite;
}
.uk-login-container {
.uk-navbar {
.uk-navbar-nav {
li {
a {
font-weight:bold !important;
}
}
}
}
}
label.required:after {
content: "*";
text-align:right;
float:right;
color: @form-danger-color;
font-size: @global-large-font-size;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-weight: bold
}
.uk-home {
.uk-overlay {
h3 {
a {
text-decoration:none;
border:0;
letter-spacing:.15rem;
text-transform: uppercase;
&:hover {
text-shadow: #000000;
}
}
}
}
.uk-background-fade {
transition-duration: .3s;
transition-timing-function: ease-in-out;
transition-property: background-image;
}
.uk-our-story-home {
height:465px !important;
background-image: url('https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/home_our_story_1.jpg');
&:hover {
background-image: url('https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/home_our_story_2.jpg')
}
}
// photo
// location
.uk-photo-home {
background-image: url('https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/home_photo_2.jpg');
&:hover {
background-image: url('https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/home_photo_1.jpg');
}
}
.uk-location-home {
margin-bottom:15px !important;
background-image: url('https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/home_location.jpg');
transition-duration: .3s;
transition-timing-function: ease-out;
transition-property: filter;
&:hover {
filter: hue-rotate(90deg);
background-blend-mode: darken;
}
}
.uk-doughnut-rsvp {
margin-bottom:15px !important;
background-image: url('https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/home_doughnut_1.jpg');
&:hover {
background-image: url('https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/home_doughnut_2.jpg');
}
}
.uk-doughnut-get-in-touch-home {
background-image: url('https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/home_doughnut_2.jpg');
&:hover {
background-image: url('https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/home_doughnut_1.jpg');
}
}
.uk-background-home {
}
}
.uk-icon.uk-icon-facebook {
color: #3b5998;
}
.uk-icon.uk-icon-google {
color: #d50f25;
}
.uk-icon.uk-icon-twitter {
color: #1da1f2;
}
.uk-icon.uk-icon-yahoo {
color: #7b0099;
/*color: #720e9e;*/
}
.uk-icon.uk-icon-amazon {
color: #ff9900;
}
.uk-preload {
background-repeat: no-repeat;
background-position-x: -9999px;
background-position-y: -9999px;
.our-story {
background-image:url('https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/home_our_story_2.jpg');
}
.photo-gallery {
background-image:url('https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/home_photo_1.jpg');
}
}
.uk-registration-connect a,
.uk-doughnut-main-nav li a {
font-weight:bold !important;
}
.uk-input,
.uk-select,
.uk-textarea {

View File

@ -18,6 +18,7 @@
"doctrine/doctrine-cache-bundle": "^1.3",
"doctrine/orm": "^2.5",
"egulias/email-validator": "^2.1",
"excelwebzone/recaptcha-bundle": "^1.4",
"friendsofsymfony/user-bundle": "^2.0",
"google/apiclient": "^2.1",
"google/recaptcha": "^1.1",
@ -54,7 +55,8 @@
"tedivm/stash-bundle": "^0.6.2",
"twig/extensions": "^1.4",
"twig/twig": "^1.0||^2.0",
"vich/uploader-bundle": "^1.5"
"vich/uploader-bundle": "^1.5",
"white-october/pagerfanta-bundle": "^1.0"
},
"require-dev": {
"doctrine/doctrine-fixtures-bundle": "^2.3",

377
email/doughnut_wedding.html Normal file
View File

@ -0,0 +1,377 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Eric and Katrina's Doughnut Wedding!</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0 "/>
<meta name="format-detection" content="telephone=no"/>
<!--[if !mso]><!-->
<link href='https://fonts.googleapis.com/css?family=Roboto+Condensed:400,300,700'
rel='stylesheet' type='text/css'/>
<!--<![endif]-->
<style type="text/css">
body {
-webkit-text-size-adjust: 100% !important;
-ms-text-size-adjust: 100% !important;
-webkit-font-smoothing: antialiased !important;
}
img {
border: 0 !important;
outline: none !important;
}
p {
Margin: 0px !important;
padding: 0px !important;
}
table {
border-collapse: collapse;
mso-table-lspace: 0px;
mso-table-rspace: 0px;
}
td, a, span {
border-collapse: collapse;
mso-line-height-rule: exactly;
}
.ExternalClass * {
line-height: 100%;
}
span.MsoHyperlink {
mso-style-priority: 99;
color: inherit;
}
span.MsoHyperlinkFollowed {
mso-style-priority: 99;
color: inherit;
}
center table {
width: 100% !important;
}
.em_white1 a {
color: #f3f4f6 !important;
text-decoration: none !important;
}
.em_blue a {
color: #34a8ff !important;
text-decoration: none !important;
}
.em_white a {
color: #ffffff !important;
text-decoration: none !important;
}
/*Stylesheet for the devices width between 481px to 599px*/
@media only screen and (min-width: 481px) and (max-width: 599px) {
table[class=em_main_table] {
width: 480px !important;
}
table[class=em_wrapper] {
width: 100% !important;
}
td[class=em_aside] {
padding: 0px 0px !important; /*Update the values as required*/
}
td[class=em_hide], table[class=em_hide], span[class=em_hide], br[class=em_hide] {
display: none !important;
}
img[class=em_full_img] {
width: 100% !important;
height: auto !important;
}
td[class=em_center] {
text-align: center !important;
}
td[class=em_width10] {
width: 10px !important;
}
td[class=em_height] {
height: 20px !important;
font-size: 1px !important;
line-height: 1px !important;
}
td[class=em_pad_top] {
padding-top: 20px !important;
}
br[class=br] {
display: none !important;
}
}
/*Stylesheet for the devices width between 0px to 480px*/
@media only screen and (max-width: 480px) {
.em_white {
font-size: 16px !important;
}
table[class=em_main_table] {
width: 100% !important;
}
table[class=em_wrapper] {
width: 100% !important;
}
td[class=em_aside] {
padding: 0px 0px !important; /*Update the ualves as required*/
}
td[class=em_hide], table[class=em_hide], span[class=em_hide], br[class=em_hide] {
display: none !important;
}
img[class=em_full_img] {
width: 100% !important;
height: auto !important;
}
td[class=em_center] {
text-align: center !important;
}
td[class=em_width10] {
width: 10px !important;
}
td[class=em_height] {
height: 20px !important;
font-size: 1px !important;
line-height: 1px !important;
}
td[class=em_pad_top] {
padding-top: 15px !important;
}
br[class=br] {
display: none !important;
}
}
</style>
</head>
<body style="margin:0px; padding:0px;" bgcolor="#ffffff">
<!--Full width table start-->
<table width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="#ffffff">
<tr>
<td align="center" valign="top">
<table width="680" border="0" align="center" class="em_wrapper" cellpadding="0" cellspacing="0" style="table-layout:fixed;">
<tr>
<td class="em_hide" height="1" style="line-height:0px; font-size:0px;">
<img
src="https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/email/1450138002_spacer.gif"
height="1" alt="" width="680"
style="display:block; width:680px; min-width:680px;"
border="0"/>
</td>
</tr>
<tr>
<td width="20" class="em_width10"><img
src="https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/email/1450138002_spacer.gif"
width="1" height="1" alt=""
style="display:block; border:none;"/></td>
</tr>
</table>
</td>
</tr>
<!--=== //HEADER SECTION === -->
<!--=== BODY SECTION === -->
<tr>
<td valign="top" bgcolor="#f9f9f9">
<table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">
<!--=== HERO SECTION === -->
<tr>
<td valign="top">
<table width="680" border="0" cellspacing="0"
cellpadding="0" align="center"
class="em_wrapper">
<tr>
<td valign="top">
<table width="100%" border="0"
cellspacing="0" cellpadding="0"
align="center">
<tr>
<td valign="top" align="center"><a
href="https://www.doughnutwedding.com"
target="_blank"
style="text-decoration:none;"><img
src="https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/email/doughnut_wedding_1.jpg"
alt="Please join us for ERIC + KATRINA'S"
width="640"
class="em_full_img"
style="display:block; max-width:640px; border:none; font-family:Variable, Tahoma, Geneva, sans-serif; font-size:35px; line-height:62px; color:#ff4b55; font-style:italic;"/></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<!--=== //HERO SECTION === -->
<!--=== 1 SECTION === -->
<tr>
<td valign="top">
<table width="680" border="0" cellspacing="0"
cellpadding="0" align="center"
class="em_wrapper">
<tr>
<td valign="top">
<table width="100%" border="0"
cellspacing="0" cellpadding="0"
align="center">
<tr>
<td valign="top" align="center">
<a
href="https://www.doughnutwedding.com"
target="_blank"
style="text-decoration:none;">
<img
src="https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/email/doughnut_wedding_2.jpg"
alt="DOUGHNUT WEDDING"
width="640"
class="em_full_img"
style="display:block; max-width:680px; border:none; line-height:62px;" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<!--=== //1 SECTION === -->
<!--=== 2 SECTION === -->
<tr>
<td valign="top">
<table width="680" border="0" cellspacing="0"
cellpadding="0" align="center"
class="em_wrapper">
<tr>
<td valign="top">
<table width="100%" border="0"
cellspacing="0" cellpadding="0"
align="center">
<tr>
<td valign="top" align="center"><a
href="https://www.doughnutwedding.com"
target="_blank"
style="text-decoration:none;"><img
src="https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/email/doughnut_wedding_3.jpg"
alt="Friday, May 12, 2017<br>Two O'Clock"
width="640"
class="em_full_img"
style="display:block; max-width:680px; border:none; font-family:Variable, Tahoma, Geneva, sans-serif; font-size:35px; line-height:62px; color:#ff4b55; font-style:italic;"/></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<!--=== //2 SECTION === -->
<!--=== 3 SECTION === -->
<tr>
<td valign="top">
<table width="680" border="0" cellspacing="0"
cellpadding="0" align="center"
class="em_wrapper">
<tr>
<td valign="top">
<table width="100%" border="0"
cellspacing="0" cellpadding="0"
align="center">
<tr>
<td valign="top" align="center"><a
href="https://www.doughnutwedding.com"
target="_blank"
style="text-decoration:none;"><img
src="https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/email/doughnut_wedding_4.jpg"
alt="RSVP Online"
width="640"
class="em_full_img"
style="display:block; max-width:680px; border:none; font-family:Variable, Tahoma, Geneva, sans-serif; font-size:35px; line-height:62px; color:#ff4b55; font-style:italic;"/></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<!--=== //3 SECTION === -->
<!--=== 4 SECTION === -->
<tr>
<td valign="top">
<table width="100%" border="0" cellspacing="0"
cellpadding="0" align="center">
<tr>
<td valign="top" align="center"><a
href="https://www.doughnutwedding.com"
target="_blank"
style="text-decoration:none;">
<img
src="https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/email/doughnut_wedding_5.jpg"
alt="doughnutwedding.com" width="640"
class="em_full_img"
style="display:block; max-width:680px; border:none; line-height:62px;"/></a>
</td>
</tr>
</table>
</td>
<td width="15" class="em_width10"><img
src="https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/email/1450138002_spacer.gif"
width="1" height="1" alt=""
style="display:block; border:none;"/></td>
</tr>
</table>
</td>
</tr>
<!--=== //4 SECTION === -->
<!--=== 5 SECTION === -->
<tr>
<td valign="top">
<table width="680" border="0" cellspacing="0" cellpadding="0"
align="center" class="em_wrapper">
<tr>
<td width="15" class="em_width10"><img
src="https://storage.googleapis.com/zgluzzkwodfky2m0ytbhmjhmmzqzntq2ngy3ndjmntyxmzg4/assets/email/1450138002_spacer.gif"
width="1" height="1" alt=""
style="display:block; border:none;"/></td>
</tr>
<!--=== //5 SECTION === -->
</table>
</td>
</tr>
<!--=== //BODY SECTION === -->
</table>
</td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:165d8d68c96cb96f1189408bba6c30e05e0e97ee9ae44891c8295566baa714a5
size 530995

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:943b4d8aed1aaad571845157a9b5c95ad3dc8aa3fa7d18d64440eb3f5c0b8f1e
size 1749889

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:045fcebc3e0471ba8a9a7411a84d3054998fd28c746c04e44f1a7b8dd4f68a27
size 1500237

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:009a3b1410932a60c4c03c54d4f95bc899334876e778c1565176f4308ba4ea5a
size 870606

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3cad8691607de617b40a30f8170cee7bfc4a0e1d55de7dc460173760df5f26bf
size 935502

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ca0ad9c31e98221d4a65d5a9f1784752693b5880e0c697e9b10b5721f1557b5f
size 541065

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3d48152460415179fd2e56864af38218624b021ee8e0e77249e50a92ae7e40e7
size 6130866

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e23ac24ff30a7b1d40b60e7764f6a065e4e19d50a378cf1495040e92f3ca8af4
size 1323865

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c2f77625370cea32c788260860dd0d80db78f5dd39407bea5db7a08d368b5c67
size 129385

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:20292a46d4178dbf439c79f443c7cf47625c0b424340dc3b20665d272d75df21
size 137445

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5ad55bf9040225d6a605294152c6f88d5476ef582936e8a4d016aa16e22ad1d2
size 305052

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:633d635d0526e5fd75ba380e827a524b417cfdf0e43e81b5f6ab5bdc6b7c1ed0
size 234658

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b2323c2bdbc898df952a1fb615e7bb62eb6ee4541f8ac2b01991925da7bf4abd
size 241003

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:772a9388ccc9a749836cf6e15b4bf32f20cd008649f98e4f1961d6ab89f38805
size 274984

View File

@ -21,6 +21,8 @@
namespace Sikofitt\DoughnutWeddingBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sikofitt\DoughnutWeddingBundle\Entity\Contact;
use Sikofitt\DoughnutWeddingBundle\Form\ContactFormType;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
@ -43,6 +45,92 @@ class DefaultController extends Controller
if (null !== $this->getUser()) {
$parameters['hide_social'] = true;
}
return $this->render('default/index.html.twig', $parameters);
}
/**
* @Route("/our_story")
*
* @param \Symfony\Component\HttpFoundation\Request $request
*
* @return Response
*/
public function ourStoryAction(Request $request): Response
{
return $this->render('our_story.html.twig');
}
/**
* @Route("/location")
*
* @param Request $request
*
* @return Response
*/
public function locationAction(Request $request): Response
{
return $this->render('location.html.twig');
}
/**
* @Route("/get_in_touch")
*
* @param \Symfony\Component\HttpFoundation\Request $request
*
* @return \Symfony\Component\HttpFoundation\Response
*/
public function contactAction(Request $request): Response
{
$contact = new Contact();
if (null !== $this->getUser()) {
$contact
->setName($this->getUser()->getName())
->setEmail($this->getUser()->getEmail())
->setUserId($this->getUser()->getId())
;
}
$form = $this->get('form.factory')->create(ContactFormType::class, $contact);
if ($request->isMethod('POST')) {
$form->handleRequest($request);
if ($form->isValid() && $form->isSubmitted()) {
$em = $this->get('doctrine.orm.entity_manager');
/** @var Contact $data */
$data = $form->getData();
$data->setCreatedAt(new \DateTime('now'));
$em->persist($data);
$em->flush();
$responseMessage[] = 'Thank you for your message '.$data->getName().'!';
$email = $data->getEmail();
if (null !== $email) {
$responseMessage[] = sprintf('We will respond to you at %s as soon as possible.', $email);
} else {
$email = 'no-reply@doughnutwedding.com';
}
$message = new \Swift_Message();
$message->setSubject($data->getSubject());
$message->setFrom($email);
$message->setTo([
$this->getParameter('katrina.email') => 'Katrina Johnson',
$this->getParameter('eric.email') => 'R. Eric Wheeler',
]);
$message->setBody($data->getComment());
$this->get('swiftmailer.mailer')->send($message);
return $this->render('form/contact.html.twig',
['message' => $responseMessage]);
}
}
return $this->render('form/contact.html.twig', ['form' => $form->createView()]);
}
}

View File

@ -0,0 +1,306 @@
<?php
/*
* doughnutwedding.com
* Copyright (C) 2017 http://doughnutwedding.com eric@doughnutwedding.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
namespace Sikofitt\DoughnutWeddingBundle\Controller;
use Pagerfanta\Adapter\ArrayAdapter;
use Pagerfanta\Pagerfanta;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\{
Method,
Route
};
use Sikofitt\DoughnutWeddingBundle\Entity\{
Image,
ImageComment,
User
};
use Sikofitt\DoughnutWeddingBundle\Form\GalleryUploadType;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\{
JsonResponse,
RedirectResponse,
Request,
Response
};
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Security\{
Core\Authentication\Token\TokenInterface,
Csrf\CsrfToken
};
/**
* Class ImageController.
*
* @Route("/gallery")
*/
class GalleryController extends Controller
{
/**
* @Route("/")
* @Method({"GET"})
*/
public function indexAction(Request $request): Response
{
$images = $this
->get('doctrine.orm.entity_manager')
->getRepository('SikofittDoughnutWeddingBundle:Image')
->findAllSortedByUpdatedAtDesc();
$chunks = array_chunk($images, 12);
$adapter = new ArrayAdapter($images);
$pager = new Pagerfanta($adapter);
$pager->setMaxPerPage(12);
return $this->render('SikofittDoughnutWeddingBundle:Image:index.html.twig', [
'images' => $chunks[0] ?? $images,
'pager' => $pager,
]);
}
/**
* @Route("/page/{number}", defaults={"number":1}, name="gallery_page_view", requirements={"number":"\d+"})
*
* @param \Symfony\Component\HttpFoundation\Request $request
* @param int $number
*
* @return Response
*/
public function pageAction(Request $request, int $number)
{
$images = $this
->get('doctrine.orm.entity_manager')
->getRepository('SikofittDoughnutWeddingBundle:Image')
->findAllSortedByUpdatedAtDesc();
$adapter = new ArrayAdapter($images);
$pager = new Pagerfanta($adapter);
$chunks = array_chunk($images, 12);
$pager->setMaxPerPage(12);
$pager->setCurrentPage($number);
return $this->render('SikofittDoughnutWeddingBundle:Image:index.html.twig', [
'images' => $chunks[$number - 1] ?? $images,
'pager' => $pager,
]);
}
/**
* @Route("/upload")
*/
public function uploadAction(Request $request, Response $response = null)
{
if (false === $this->isGranted('IS_AUTHENTICATED_FULLY')) {
$this->addFlash('error', 'You must be logged in to upload photos.');
}
$image = new Image();
$image->setUser($request->getSession()->get('user'));
$form = $this->get('form.factory')->create(GalleryUploadType::class, $image);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
/** @var \Sikofitt\DoughnutWeddingBundle\Entity\User $user */
$user = $this->getUser();
$image->setUser($user);
$em = $this->get('doctrine.orm.entity_manager');
$em->persist($image);
$em->flush();
$baseName = $image
->getImageFile()
->getBasename(
sprintf('.%s', $image->getImageFile()->getExtension())
);
return new RedirectResponse(
$this
->get('router')
->generate('view_gallery_image_by_hash', [
'imageHash' => $baseName,
])
);
}
return $this->render('SikofittDoughnutWeddingBundle:Image:upload.html.twig', [
'form' => $form->createView(),
]);
}
/**
* @Route("/ajax")
* @Method({"POST"})
*/
public function ajaxCommentAction(Request $request): JsonResponse
{
if (false === $request->getSession()->has('_security_secured_area')) {
return new JsonResponse([
'status' => 403,
'message' => 'You must be logged in to post a comment',
], 403);
}
/** @var \Symfony\Component\Security\Core\Authentication\Token\TokenInterface $data */
$data = unserialize(
$request->getSession()->get('_security_secured_area'), [
TokenInterface::class,
]);
$tokenManager = $this->get('security.csrf.token_manager');
$fileName = $request->request->get('file');
$token = $request->request->get('_token');
$csrfToken = new CsrfToken($fileName, $token);
if (false === $tokenManager->isTokenValid($csrfToken)) {
return new JsonResponse(['status' => Response::HTTP_EXPECTATION_FAILED, 'message' => 'Invalid Token'], Response::HTTP_EXPECTATION_FAILED);
}
if (false === $data->getUser() instanceof User) {
return new JsonResponse([
'status' => 403,
'message' => 'You must be logged in to post a comment',
], 403);
}
$em = $this->get('doctrine.orm.entity_manager');
$user = $em
->getRepository('SikofittDoughnutWeddingBundle:User')
->findOneBy(['id' => $data->getUser()->getId()]);
$comment = $request->request->get('comment');
$fileId = $request->request->get('id');
$image = $em
->getRepository('SikofittDoughnutWeddingBundle:Image')
->findOneBy(['id' => $fileId]);
$newComment = new ImageComment();
$newComment->setUser($user)
->setComment($comment)
->setImage($image)
->setIsChild(false)
->setCreated(new \DateTime('now'))
->setChildComments(null);
$em->persist($newComment);
$em->flush();
$commentHtml = $this->renderView('gallery_comment.html.twig', ['comment' => $newComment]);
return new JsonResponse([
'id' => $user->getId(),
'name' => $user->getName(),
'date_short' => date('m/d/y').' at '.date('g:ia'),
'date_long' => date('l F jS, Y').' at '.date('g:ia'),
'status' => Response::HTTP_OK,
'html' => $commentHtml,
]);
}
/**
* @Route("/{imageHash}", name="view_gallery_image_by_hash", requirements={"imageHash":"\w{32,32}"})
* @Method({"GET","HEAD"})
*
* @param \Symfony\Component\HttpFoundation\Request $request
* @param string $imageHash
*
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
*
* @return Response
*/
public function viewImageAction(Request $request, string $imageHash): ?Response
{
$image = $this
->get('doctrine.orm.entity_manager')
->createQueryBuilder()
->select('i')
->from(Image::class, 'i')
->where('i.imageName LIKE :imageHash')
->setParameter('imageHash', $imageHash.'%')
->getQuery()
->getOneOrNullResult();
if (null !== $image) {
return $this
->render('@SikofittDoughnutWedding/Image/view_image.html.twig', [
'image' => $image,
]);
}
throw new NotFoundHttpException();
}
/**
* @Route("/tag/{tag}/{number}", name="gallery_tag_action", defaults={"number":1}, requirements={"number":"\d+"})
*
* @param \Symfony\Component\HttpFoundation\Request $request
* @param string $tag
* @param int $number
*
* @return Response
*/
public function tagAction(Request $request, string $tag, int $number): Response
{
$images = $this
->get('doctrine.orm.entity_manager')
->getRepository('SikofittDoughnutWeddingBundle:Image')
->findImageByTag($tag);
$adapter = new ArrayAdapter($images);
$pager = new Pagerfanta($adapter);
$pager->setMaxPerPage(12);
$chunks = array_chunk($images, 12);
return $this
->render('SikofittDoughnutWeddingBundle:Image:index.html.twig', [
'pager' => $pager,
'tag' => $tag,
'images' => $chunks[$number - 1] ?? $images,
]);
}
/**
* @Route("/category/{category}/{number}", name="gallery_category_action", defaults={"number":1}, requirements={"number":"\d+"})
*
* @param \Symfony\Component\HttpFoundation\Request $request
* @param string $category
* @param int $number
* The current page
*
* @return Response
*/
public function categoryAction(Request $request, string $category, int $number): Response
{
$images = $this
->get('doctrine.orm.entity_manager')
->getRepository('SikofittDoughnutWeddingBundle:Image')
->findImageByCategory($category);
$adapter = new ArrayAdapter($images);
$pager = new Pagerfanta($adapter);
$pager->setMaxPerPage(12);
$chunks = array_chunk($images, 12);
return $this
->render('SikofittDoughnutWeddingBundle:Image:index.html.twig', [
'pager' => $pager,
'category' => $category,
'images' => $chunks[$number - 1] ?? $images,
]);
}
}

View File

@ -1,74 +0,0 @@
<?php
/*
* doughnutwedding.com
* Copyright (C) 2017 http://doughnutwedding.com eric@doughnutwedding.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
namespace Sikofitt\DoughnutWeddingBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
/**
* Class ImageController.
*
* @Route("/gallery")
*/
class ImageController extends Controller
{
/**
* @Route("/")
*/
public function indexAction()
{
/** @var \Gaufrette\Filesystem $fileSystem */
$fileSystem = $this->get('knp_gaufrette.filesystem_map')->get('cloud');
dump($fileSystem->listKeys());
return $this->render('SikofittDoughnutWeddingBundle:Image:index.html.twig', [
]);
}
/**
* @Route("/upload")
*/
public function uploadAction()
{
return $this->render('SikofittDoughnutWeddingBundle:Image:upload.html.twig', [
// ...
]);
}
/**
* @Route("/tag")
*/
public function tagAction()
{
return $this->render('SikofittDoughnutWeddingBundle:Image:tag.html.twig', [
// ...
]);
}
/**
* @Route("/category")
*/
public function categoryAction()
{
return $this->render('SikofittDoughnutWeddingBundle:Image:category.html.twig', [
// ...
]);
}
}

View File

@ -1,181 +0,0 @@
<?php
/*
* doughnutwedding.com
* Copyright (C) 2017 http://doughnutwedding.com eric@doughnutwedding.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
namespace Sikofitt\DoughnutWeddingBundle\Controller;
use Doctrine\ORM\EntityManager;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Form\FormFactory;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\ConstraintViolationList;
class RsvpController extends Controller
{
/**
* @Route("/rsvp")
*
* @param \Symfony\Component\HttpFoundation\Request $request
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response
*/
public function indexAction(Request $request)
{
/**
* @var EntityManager $em
* @var RsvpRepository $rsvpRepo
* @var UserRepository $userRepo
*/
$em = $this->get('doctrine.orm.entity_manager');
$rsvpRepo = $em->getRepository('Sikofitt:Rsvp');
$count = (40 - $rsvpRepo->getRsvpCount());
$userRepo = $em->getRepository('Sikofitt:User');
$kCount = $userRepo->getKatrinaCount();
$eCount = $userRepo->getEricCount();
/**
* @var FormFactory $formFactory
*/
$formFactory = $app['form.factory'];
$user = new User();
$rsvp = new Rsvp();
$rsvp
->setCreated(new \DateTime('now'))
->setUpdated(new \DateTime('now'));
$user
->setRsvp($rsvp)
->setCreated(new \DateTime('now'))
->setUpdated(new \DateTime('now'));
$form = $formFactory->create(RsvpType::class, $user);
if ($request->isMethod('POST')) {
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$user = $form->getData();
$user->setPassword($user->getPlainPassword());
/**
* @var EntityManager $em
*/
$em = $app['orm.em'];
$em->persist($user);
$em->flush();
return $app->redirect('/rsvp');
}
}
return $app->render(
'rsvp_form.html.twig',
[
'form' => $form->createView(),
'count' => $count,
'kCount' => $kCount,
'eCount' => $eCount,
]
);
}
/**
* @param \Symfony\Component\HttpFoundation\Request $request
* @param \Kernel $app
* @param string $token
*
* @return \Symfony\Component\HttpFoundation\Response
*/
public function resetAction(Request $request, \Kernel $app)
{
$formFactory = $app->getFormFactory();
$passwordResetForm = $formFactory
->createBuilder(ResetType::class)
->getForm();
$update = false;
if ($request->isMethod('POST')) {
$passwordResetForm->handleRequest($request);
if ($passwordResetForm->isSubmitted() && $passwordResetForm->isValid()) {
$data = $passwordResetForm->get('email')->getData();
$update = $app['orm.em']->getRepository('Sikofitt\App\Entity\User')
->setResetToken($data);
} else {
$data = null;
}
} else {
$data = null;
}
/**
* @var UserRepository $userRepo
*/
$userRepo = $app['orm.em']->getRepository('Sikofitt\App\Entity\User');
//$emailResult = $userRepo->getEmail($passwordResetForm->get('email'));
/*if(null === $emailResult) {
return $app->render('reset_password_confirm.html.twig', [
'message' => 'Email was not found in database',
]);
} elseif($emailResult instanceof ConstraintViolationList) {
return $app->render(
'reset_password.html.twig',
[
'form' => $passwordResetForm->createView(),
'data' => $data,
'email' => $emailResult,
'message' => $emailResult,
]
);
} else {
return $app->render('reset_password_confirm.html.twig', [
'message' => 'Please check your email. A reset request has been sent.',
]);
}*/
$app->addInfo('Message', 'message 2');
return $app->render(
'reset_password.html.twig',
[
'form' => $passwordResetForm->createView(),
'data' => $data,
//'email' => $emailResult,
]
);
}
public function tokenAction(Request $request, \Kernel $app, string $token = null)
{
$user = $app['orm.em']->getRepository('Sikofitt\App\Entity\User')->getUserByToken($token);
if (null === $user) {
return $app->render('reset_password_token.html.twig', ['token' => ['valid' => false, 'value' => $token]]);
} else {
$passwordForm = $app->getFormFactory()->create(ResetPasswordType::class);
if ($request->isMethod('POST')) {
$passwordForm->handleRequest($request);
if ($passwordForm->isValid() && $passwordForm->isSubmitted()) {
$hash = $app->encodePassword($user, $passwordForm->get('password')->getData());
$user->setPassword($hash);
$app['orm.em']->getRepository('Sikofitt\App\Entity\User')->updatePassword($user);
$app->addSuccess('Successfully changed your password!');
return $app->redirect($app->url('rsvp'));
}
}
return $app->render('reset_password_token.html.twig', ['token' => ['valid' => true, 'value' => $token], 'form' => $passwordForm->createView(), 'user' => $user]);
}
}
}

View File

@ -0,0 +1,237 @@
<?php
/*
* doughnutwedding.com
* Copyright (C) 2017 http://doughnutwedding.com eric@doughnutwedding.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
namespace Sikofitt\DoughnutWeddingBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Contact.
*
* @ORM\Table(name="contact")
* @ORM\Entity(repositoryClass="Sikofitt\DoughnutWeddingBundle\Repository\ContactRepository")
*/
class Contact
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var int
*
* @ORM\Column(name="user_id", type="integer", nullable=true, unique=false)
*/
private $userId;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=255, nullable=true)
*/
private $email;
/**
* @var string
*
* @ORM\Column(name="subject", type="string", length=255, nullable=true)
*/
private $subject;
/**
* @var string
*
* @ORM\Column(name="comment", type="text")
*/
private $comment;
/**
* @var \DateTime
*
* @ORM\Column(name="createdAt", type="datetime")
*/
private $createdAt;
/**
* Get id.
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set name.
*
* @param int $userId
*
* @return Contact
*/
public function setUserId($userId)
{
$this->userId = $userId;
return $this;
}
/**
* Get name.
*
* @return string
*/
public function getUserId()
{
return $this->userId;
}
/**
* Set name.
*
* @param string $name
*
* @return Contact
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name.
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set Email.
*
* @param null|string $email
*
* @return \Sikofitt\DoughnutWeddingBundle\Entity\Contact
*/
public function setEmail(?string $email): Contact
{
$this->email = $email;
return $this;
}
/**
* Get Email.
*
* @return null|string
*/
public function getEmail(): ?string
{
return $this->email;
}
/**
* Set subject.
*
* @param string $subject
*
* @return Contact
*/
public function setSubject($subject)
{
$this->subject = $subject;
return $this;
}
/**
* Get subject.
*
* @return string
*/
public function getSubject()
{
return $this->subject;
}
/**
* Set comment.
*
* @param string $comment
*
* @return Contact
*/
public function setComment($comment)
{
$this->comment = $comment;
return $this;
}
/**
* Get comment.
*
* @return string
*/
public function getComment()
{
return $this->comment;
}
/**
* Set createdAt.
*
* @param \DateTime $createdAt
*
* @return Contact
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;
return $this;
}
/**
* Get createdAt.
*
* @return \DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}
}

Some files were not shown because too many files have changed in this diff Show More