End of Days

This commit is contained in:
R. Eric Wheeler 2016-07-05 14:41:50 -07:00
parent 2c869478f6
commit 3e60989bdb
11 changed files with 646 additions and 351 deletions

View File

@ -1,28 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PublishConfigData" serverName="Symfony Dev">
<serverData>
<paths name="Local Dev">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="Symfony Dev">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="eecore">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
</serverData>
</component>
<component name="PublishConfigData" serverName="Symfony Local" />
</project>

View File

@ -2,10 +2,8 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="cf1e275f-fbc1-41d4-a421-0f55447b6367" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/resume.iml" afterPath="$PROJECT_DIR$/.idea/resume.iml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/deployment.xml" afterPath="$PROJECT_DIR$/.idea/deployment.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/composer.lock" afterPath="$PROJECT_DIR$/composer.lock" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/Sikofitt/less/resume.less" afterPath="$PROJECT_DIR$/src/Sikofitt/less/resume.less" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/web/index.php" afterPath="$PROJECT_DIR$/web/index.php" />
</list>
<ignored path="resume.iws" />
@ -18,6 +16,7 @@
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
<component name="CreatePatchCommitExecutor">
<option name="PATCH_PATH" value="" />
</component>
@ -30,8 +29,8 @@
<file leaf-file-name="index.php" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/web/index.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="80">
<caret line="32" column="62" selection-start-line="32" selection-start-column="62" selection-end-line="32" selection-end-column="62" />
<state relative-caret-position="650">
<caret line="60" column="3" selection-start-line="60" selection-start-column="3" selection-end-line="60" selection-end-column="3" />
<folding>
<element signature="e#8#27#0#PHP" expanded="true" />
</folding>
@ -54,10 +53,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="27" column="17" selection-start-line="27" selection-start-column="17" selection-end-line="27" selection-end-column="17" />
<folding>
<element signature="e#6#84#0#PHP" expanded="false" />
<element signature="e#114#145#0#PHP" expanded="false" />
</folding>
<folding />
</state>
</provider>
</entry>
@ -67,9 +63,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="288">
<caret line="17" column="25" selection-start-line="17" selection-start-column="25" selection-end-line="17" selection-end-column="25" />
<folding>
<element signature="e#7#39#0#PHP" expanded="false" />
</folding>
<folding />
</state>
</provider>
</entry>
@ -79,9 +73,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="16" column="42" selection-start-line="16" selection-start-column="42" selection-end-line="16" selection-end-column="42" />
<folding>
<element signature="e#6#16#0#PHP" expanded="false" />
</folding>
<folding />
</state>
</provider>
</entry>
@ -163,7 +155,7 @@
<component name="PhpWorkspaceProjectConfiguration" backward_compatibility_performed="true" />
<component name="ProjectFrameBounds">
<option name="x" value="134" />
<option name="y" value="24" />
<option name="y" value="30" />
<option name="width" value="1701" />
<option name="height" value="1011" />
</component>
@ -192,6 +184,8 @@
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scope" />
<pane id="Scratches" />
<pane id="ProjectPane">
<subPane>
<PATH>
@ -316,8 +310,6 @@
</PATH>
</subPane>
</pane>
<pane id="Scratches" />
<pane id="Scope" />
</panes>
</component>
<component name="PropertiesComponent">
@ -342,9 +334,6 @@
<configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
<method />
</configuration>
<configuration default="true" type="NodeJSConfigurationType" factoryName="Node.js" path-to-node="project" working-dir="">
<method />
</configuration>
<configuration default="true" type="PHPUnitRunConfigurationType" factoryName="PHPUnit">
<TestRunner />
<method />
@ -372,19 +361,6 @@
<envs />
<method />
</configuration>
<configuration default="true" type="mocha-javascript-test-runner" factoryName="Mocha">
<node-interpreter>project</node-interpreter>
<node-options />
<working-directory />
<pass-parent-env>true</pass-parent-env>
<envs />
<ui>bdd</ui>
<extra-mocha-options />
<test-kind>DIRECTORY</test-kind>
<test-directory />
<recursive>false</recursive>
<method />
</configuration>
</component>
<component name="ShelveChangesManager" show_recycled="false">
<option name="remove_strategy" value="false" />
@ -405,35 +381,38 @@
<workItem from="1467649451288" duration="2331000" />
<workItem from="1467656661331" duration="59000" />
<workItem from="1467656740400" duration="133000" />
<workItem from="1467728864296" duration="546000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="27275000" />
<option name="totallyTimeSpent" value="27821000" />
</component>
<component name="ToolWindowManager">
<frame x="134" y="24" width="1701" height="1011" extended-state="0" />
<editor active="false" />
<frame x="134" y="30" width="1701" height="1011" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="eSnippet Pro" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="GfmBrowser" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="DB Browser" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="DB Execution Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Regex Tester" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32919955" sideWeight="0.41894352" order="0" side_tool="true" content_ui="tabs" />
<window_info id="GitLabIntegration" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32919955" sideWeight="0.5810565" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="hashGenerator" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32919955" sideWeight="0.5" order="10" side_tool="true" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Remote Host" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.26593807" sideWeight="0.5" order="1" side_tool="false" content_ui="combo" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.26934797" sideWeight="0.5" order="1" side_tool="false" content_ui="combo" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="true" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Regex Tester" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="hashGenerator" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32919955" sideWeight="0.5" order="10" side_tool="true" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="combo" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
@ -476,6 +455,46 @@
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/app/App.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="288">
<caret line="17" column="25" selection-start-line="17" selection-start-column="25" selection-end-line="17" selection-end-column="25" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Sikofitt/Config/ConfigTrait.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="16" column="42" selection-start-line="16" selection-start-column="42" selection-end-line="16" selection-end-column="42" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/views/uikit.html.twig">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="594">
<caret line="33" column="7" selection-start-line="33" selection-start-column="7" selection-end-line="33" selection-end-column="7" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Sikofitt/less/resume.less">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="108">
<caret line="6" column="34" selection-start-line="6" selection-start-column="34" selection-end-line="6" selection-end-column="34" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/config/config.yml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="54">
<caret line="3" column="26" selection-start-line="3" selection-start-column="26" selection-end-line="3" selection-end-column="26" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/web/index.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
@ -498,10 +517,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="27" column="17" selection-start-line="27" selection-start-column="17" selection-end-line="27" selection-end-column="17" />
<folding>
<element signature="e#6#84#0#PHP" expanded="false" />
<element signature="e#114#145#0#PHP" expanded="false" />
</folding>
<folding />
</state>
</provider>
</entry>
@ -509,9 +525,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="288">
<caret line="17" column="25" selection-start-line="17" selection-start-column="25" selection-end-line="17" selection-end-column="25" />
<folding>
<element signature="e#7#39#0#PHP" expanded="false" />
</folding>
<folding />
</state>
</provider>
</entry>
@ -519,9 +533,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="16" column="42" selection-start-line="16" selection-start-column="42" selection-end-line="16" selection-end-column="42" />
<folding>
<element signature="e#6#16#0#PHP" expanded="false" />
</folding>
<folding />
</state>
</provider>
</entry>
@ -571,10 +583,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="27" column="17" selection-start-line="27" selection-start-column="17" selection-end-line="27" selection-end-column="17" />
<folding>
<element signature="e#6#84#0#PHP" expanded="false" />
<element signature="e#114#145#0#PHP" expanded="false" />
</folding>
<folding />
</state>
</provider>
</entry>
@ -582,9 +591,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="306">
<caret line="17" column="25" selection-start-line="17" selection-start-column="25" selection-end-line="17" selection-end-column="25" />
<folding>
<element signature="e#7#39#0#PHP" expanded="false" />
</folding>
<folding />
</state>
</provider>
</entry>
@ -592,9 +599,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="288">
<caret line="16" column="42" selection-start-line="16" selection-start-column="42" selection-end-line="16" selection-end-column="42" />
<folding>
<element signature="e#6#16#0#PHP" expanded="false" />
</folding>
<folding />
</state>
</provider>
</entry>
@ -636,10 +641,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="308">
<caret line="27" column="17" selection-start-line="27" selection-start-column="17" selection-end-line="27" selection-end-column="17" />
<folding>
<element signature="e#6#84#0#PHP" expanded="false" />
<element signature="e#114#145#0#PHP" expanded="false" />
</folding>
<folding />
</state>
</provider>
</entry>
@ -647,9 +649,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="352">
<caret line="17" column="25" selection-start-line="17" selection-start-column="25" selection-end-line="17" selection-end-column="25" />
<folding>
<element signature="e#7#39#0#PHP" expanded="false" />
</folding>
<folding />
</state>
</provider>
</entry>
@ -731,8 +731,8 @@
</entry>
<entry file="file://$PROJECT_DIR$/web/index.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="80">
<caret line="32" column="62" selection-start-line="32" selection-start-column="62" selection-end-line="32" selection-end-column="62" />
<state relative-caret-position="650">
<caret line="60" column="3" selection-start-line="60" selection-start-column="3" selection-end-line="60" selection-end-column="3" />
<folding>
<element signature="e#8#27#0#PHP" expanded="true" />
</folding>
@ -751,10 +751,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="27" column="17" selection-start-line="27" selection-start-column="17" selection-end-line="27" selection-end-column="17" />
<folding>
<element signature="e#6#84#0#PHP" expanded="false" />
<element signature="e#114#145#0#PHP" expanded="false" />
</folding>
<folding />
</state>
</provider>
</entry>
@ -762,9 +759,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="288">
<caret line="17" column="25" selection-start-line="17" selection-start-column="25" selection-end-line="17" selection-end-column="25" />
<folding>
<element signature="e#7#39#0#PHP" expanded="false" />
</folding>
<folding />
</state>
</provider>
</entry>
@ -772,9 +767,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="16" column="42" selection-start-line="16" selection-start-column="42" selection-end-line="16" selection-end-column="42" />
<folding>
<element signature="e#6#16#0#PHP" expanded="false" />
</folding>
<folding />
</state>
</provider>
</entry>

View File

@ -9,65 +9,70 @@ require '../vendor/autoload.php';
* Class App
*/
class App extends Application {
use ConfigTrait;
public $conf;
use ConfigTrait;
use Application\TwigTrait;
use Application\MonologTrait;
use Application\SwiftmailerTrait;
use Application\TranslationTrait;
use Application\UrlGeneratorTrait;
/**
* Returns the application directory.
*
* @return string
* The main application directory.
*/
public function getAppDirectory() {
$r = new ReflectionClass($this);
return dirname($r->getFileName());
}
public $conf;
/**
* Returns the root directory of the application.
*
* @return string
* The root directory of the application.
*/
public function getRootDirectory() {
return dirname($this->getAppDirectory());
}
/**
* Returns the application directory.
*
* @return string
* The main application directory.
*/
public function getAppDirectory() {
$r = new ReflectionClass($this);
return dirname($r->getFileName());
}
/**
* @return string
*/
public function getConfDirectory() {
return $this->getAppDirectory() . '/config';
}
/**
* Returns the root directory of the application.
*
* @return string
* The root directory of the application.
*/
public function getRootDirectory() {
return dirname($this->getAppDirectory());
}
/**
* @return string
*/
public function getDataDirectory() {
return $this->getRootDirectory() . '/data';
}
/**
* @return string
*/
public function getConfDirectory() {
return $this->getAppDirectory() . '/config';
}
/**
* @return string
*/
public function getResumeJson() {
return $this->getDataDirectory() . '/resume.json';
}
/**
* @return string
*/
public function getDataDirectory() {
return $this->getRootDirectory() . '/data';
}
/**
* @return string
*/
public function getResumeSchema() {
return $this->getDataDirectory() . '/resume.schema.json';
}
/**
* @return string
*/
public function getResumeJson() {
return $this->getDataDirectory() . '/resume.json';
}
/**
* @return \Noodlehaus\Config
*/
public function conf2() {
return Noodlehaus\Config::load($this->getConfDirectory());
}
/**
* @return string
*/
public function getResumeSchema() {
return $this->getDataDirectory() . '/resume.schema.json';
}
/**
* @return \Noodlehaus\Config
*/
public function conf2() {
return Noodlehaus\Config::load($this->getConfDirectory());
}
}

View File

@ -1,7 +1,7 @@
app:
debug: true
environment: dev
title: R. Eric Wheeler
title: R. Eric Wheeler | Resume
twig:
paths:
- views

View File

@ -1,66 +1,118 @@
{% extends app.config.twig.template %}
{% block title %}
{{ app.config.app.title | default('Resume') }}
{% endblock %}
{{ app.config.app.title | default('Resume') }}
{% endblock %}
{% block body %}
<div class="uk-grid" data-uk-grid-margin>
<div class="uk-width-1-1">
<h1 class="uk-heading-large">{{ app.config.app.title|default('Resume') }}</h1>
<p class="uk-text-large">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut.</p>
{{ dump(basics) }}
<div class="uk-grid" data-uk-grid-margin>
<div class="uk-width-1-1">
<h1 class="uk-heading-large" data-uk-sticky="{top:35}">
{% if basics.name is not empty %}
{{ basics.name }}
{% else %}
{{ app.config.app.title|default('Resume') }}
{% endif %}
{% if basics.label is not empty %}
<small class="uk-h2">{{ basics.label }}</small>
{% endif %}
</h1>
<hr />
{% if basics.summary is not empty %}
<p class="uk-text-large">
{{ basics.summary }}
</p>
{% endif %}
</div>
</div>
</div>
<div class="uk-grid" data-uk-grid-margin>
<div class="uk-width-medium-3-4">
<h2 id="getstarted">Get Started</h2>
<p>Lorem ipsum dolor sit amet, <code>consectetuer adipiscing</code> elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim.</p>
<div class="uk-grid" data-uk-grid-margin>
<div class="uk-width-medium-3-4">
{% set position = work|first %}
{{ dump(position) }}
<p class="resume-positions">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor.
Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim.
</p>
</div>
<div class="uk-width-medium-1-4">
<div class="uk-panel uk-panel-box" data-uk-sticky="{top:35}">
<div class="uk-panel-header"><h3 class="uk-panel-title">Contact<img class="uk-align-right uk-thumbnail uk-border-circle uk-thumbnail-mini uk-animation-scale-up uk-img-preserve" src="{{ basics.picture }}"/></h3></div>
<!--
--><ul class="uk-list uk-list-line uk-h5">
{% if basics.email is not empty %}
<li><a href="#" class="hidden-email">[Click to view email]</a></li>
{% endif %}
{% if basics.phone is not empty %}
<li>{{ basics.phone }}</li>
{% endif %}
{% if basics.website is not empty %}
<li><a href="{{ basics.website }}" target="_blank" title="Home page">{{ basics.website }}</a></li>
{% endif %}
{% if basics.location|length > 0 and basics.location is not empty %}
<li>
<address>
{% set location = basics.location %}
{% if location.address is not empty %}
{{ location.address }}<br />
{% endif %}
{% if location.city is not empty %}
{{ location.city }}
{% if location.postalCode is not empty %}
&nbsp;{{ location.postalCode }}
{% endif %}
{% if location.countryCode is not empty %}
&nbsp;{{ location.countryCode }}
{% endif %}<br />
{% endif %}
</address>
</li>
{% endif %}
</ul>
</div>
</div>
</div>
<div class="uk-width-medium-1-4">
<div class="uk-panel uk-panel-box" data-uk-sticky="{top:35}">
<!--<ul class="uk-nav uk-nav-side" data-uk-scrollspy-nav="{closest:'li', smoothscroll:true}">
<li class="uk-nav-header">For Beginners</li>
<li class="uk-active"><a href="#getstarted">Get Started</a></li>
<li class=""><a href="#templatesettings">Template Settings</a></li>
<li class=""><a href="#customizer">Customizer</a></li>
<li class="uk-nav-header">For Developers</li>
<li class=""><a href="#customization">Customizaton</a></li>
<li class=""><a href="#troubleshooting">Troubleshooting</a></li>
<li class="uk-nav-divider"></li>
<li class=""><a href="#faq"><i class="uk-icon-info-circle uk-margin-small-right"></i>FAQ</a></li>
</ul>-->
<h2>Testing This Title</h2>
</div>
</div>
</div>
</div>
<div id="offcanvas" class="uk-offcanvas">
<div class="uk-offcanvas-bar">
<ul class="uk-nav uk-nav-offcanvas">
<li>
<a href="layouts_frontpage.html">Frontpage</a>
</li>
<li>
<a href="layouts_portfolio.html">Portfolio</a>
</li>
<li>
<a href="layouts_blog.html">Blog</a>
</li>
<li class="uk-active">
<a href="layouts_documentation.html">Documentation</a>
</li>
<li>
<a href="layouts_contact.html">Contact</a>
</li>
<li>
<a href="layouts_login.html">Login</a>
</li>
</ul>
</div>
<div id="offcanvas" class="uk-offcanvas">
<div class="uk-offcanvas-bar">
<ul class="uk-list uk-list-line">
{% if basics.email is not empty %}
<li>{{ basics.email }}</li>
{% endif %}
{% if basics.phone is not empty %}
<li>{{ basics.phone }}</li>
{% endif %}
{% if basics.location|length > 0 and basics.location is not empty %}
<address>
{% for location in basics.location %}
{% if location.address is not empty %}
{{ location.address }}<br />
{% endif %}
{% if location.city is not empty %}
{{ location.city }}
{% if location.postalCode is not empty %}
&nbsp;{{ location.postalCode }}
{% endif %}
{% if location.countryCode is not empty %}
&nbsp;{{ location.countryCode }}
{% endif %}<br />
{% endif %}
{% endfor %}
{% endif %}
</address>
</ul>
</div>
{% endblock %}

View File

@ -37,7 +37,8 @@
"monolog/monolog": "^1.20",
"symfony/monolog-bridge": "^3.1",
"google/recaptcha": "^1.1",
"hassankhan/config": "^0.10.0"
"hassankhan/config": "^0.10.0",
"silex/web-profiler": "^2.0"
},
"require-dev": {
"symfony/debug": "~2.8|^3.0",
@ -46,7 +47,8 @@
"symfony/serializer": "~2.8|^3.0",
"symfony/var-dumper": "^3.1",
"symfony/console": "^3.1",
"texthtml/whoops-silex": "^1.0"
"texthtml/whoops-silex": "^1.0",
"symfony/debug-bundle": "^3.1"
},
"autoload": {
"psr-4": {

228
composer.lock generated
View File

@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "bff507b41d23db26ac64f22c144abe58",
"content-hash": "fca3e43ff787d71afd6f495624a8bf9c",
"hash": "bc85e2d6fdda738f03a5e498d59ff477",
"content-hash": "d0a7cfefe30599f33ddbe16cd3cce33d",
"packages": [
{
"name": "google/recaptcha",
@ -661,6 +661,62 @@
],
"time": "2016-06-14 09:27:51"
},
{
"name": "silex/web-profiler",
"version": "v2.0.1",
"target-dir": "Silex/Provider",
"source": {
"type": "git",
"url": "https://github.com/silexphp/Silex-WebProfiler.git",
"reference": "605ebe9d16eb9597ab42603d1b4bec595ebf677d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/silexphp/Silex-WebProfiler/zipball/605ebe9d16eb9597ab42603d1b4bec595ebf677d",
"reference": "605ebe9d16eb9597ab42603d1b4bec595ebf677d",
"shasum": ""
},
"require": {
"silex/silex": "^2.0",
"symfony/stopwatch": "^2.8|^3.0",
"symfony/twig-bridge": "^2.8|^3.0",
"symfony/web-profiler-bundle": "^2.8|^3.0"
},
"conflict": {
"symfony/web-profiler-bundle": "3.1.0"
},
"require-dev": {
"symfony/browser-kit": "^2.8|^3.0",
"symfony/css-selector": "^2.8|^3.0",
"symfony/debug-bundle": "^2.8|^3.0",
"symfony/security": "^2.8|^3.0",
"symfony/security-bundle": "^2.8|^3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-0": {
"Silex\\Provider\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "A WebProfiler for Silex",
"homepage": "http://silex.sensiolabs.org/",
"time": "2016-06-15 07:44:40"
},
{
"name": "swiftmailer/swiftmailer",
"version": "v5.4.2",
@ -1703,6 +1759,55 @@
],
"time": "2016-06-29 05:41:56"
},
{
"name": "symfony/stopwatch",
"version": "v3.1.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/stopwatch.git",
"reference": "bb42806b12c5f89db4ebf64af6741afe6d8457e1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/stopwatch/zipball/bb42806b12c5f89db4ebf64af6741afe6d8457e1",
"reference": "bb42806b12c5f89db4ebf64af6741afe6d8457e1",
"shasum": ""
},
"require": {
"php": ">=5.5.9"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.1-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Stopwatch\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Stopwatch Component",
"homepage": "https://symfony.com",
"time": "2016-06-29 05:41:56"
},
{
"name": "symfony/swiftmailer-bridge",
"version": "v2.8.8",
@ -1975,6 +2080,64 @@
"homepage": "https://symfony.com",
"time": "2016-06-29 05:41:56"
},
{
"name": "symfony/web-profiler-bundle",
"version": "v3.1.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/web-profiler-bundle.git",
"reference": "0043f504e8008542ee56e2fb52292cb6a3918c78"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/0043f504e8008542ee56e2fb52292cb6a3918c78",
"reference": "0043f504e8008542ee56e2fb52292cb6a3918c78",
"shasum": ""
},
"require": {
"php": ">=5.5.9",
"symfony/http-kernel": "~3.1",
"symfony/routing": "~2.8|~3.0",
"symfony/twig-bridge": "~2.8|~3.0"
},
"require-dev": {
"symfony/config": "~2.8|~3.0",
"symfony/console": "~2.8|~3.0",
"symfony/dependency-injection": "~2.8|~3.0",
"symfony/stopwatch": "~2.8|~3.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "3.1-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\WebProfilerBundle\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony WebProfilerBundle",
"homepage": "https://symfony.com",
"time": "2016-06-29 05:41:56"
},
{
"name": "symfony/yaml",
"version": "v3.1.2",
@ -2351,6 +2514,67 @@
"homepage": "https://symfony.com",
"time": "2016-06-29 07:02:31"
},
{
"name": "symfony/debug-bundle",
"version": "v3.1.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug-bundle.git",
"reference": "995b9d7c1f3e1489cfe3379e18276e6032f99aa3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/debug-bundle/zipball/995b9d7c1f3e1489cfe3379e18276e6032f99aa3",
"reference": "995b9d7c1f3e1489cfe3379e18276e6032f99aa3",
"shasum": ""
},
"require": {
"php": ">=5.5.9",
"symfony/http-kernel": "~2.8|~3.0",
"symfony/twig-bridge": "~2.8|~3.0",
"symfony/var-dumper": "~2.8|~3.0"
},
"require-dev": {
"symfony/config": "~2.8|~3.0",
"symfony/dependency-injection": "~2.8|~3.0",
"symfony/web-profiler-bundle": "~2.8|~3.0"
},
"suggest": {
"symfony/config": "For service container configuration",
"symfony/dependency-injection": "For using as a service from the container"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "3.1-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\DebugBundle\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony DebugBundle",
"homepage": "https://symfony.com",
"time": "2016-02-13 09:24:02"
},
{
"name": "symfony/phpunit-bridge",
"version": "v3.1.2",

View File

@ -1,116 +1,116 @@
{
"basics": {
"name": "R. Eric Wheeler",
"label": "Developer / Systems",
"picture": "http://rewiv.com/storage/me.png",
"email": "eric@ericwheeler.net",
"phone": "",
"website": "https://code.reric.me",
"summary": "",
"location": {
"address": "",
"postalCode": "CA 94578",
"city": "San Leandro",
"countryCode": "US",
"region": "California"
"basics": {
"name": "R. Eric Wheeler",
"label": "Developer / Systems",
"picture": "http://rewiv.com/storage/me.png",
"email": "eric@ericwheeler.net",
"phone": "",
"website": "https://code.reric.me",
"summary": "",
"location": {
"address": "",
"postalCode": "CA 94578",
"city": "San Leandro",
"countryCode": "US",
"region": "California"
},
"profiles": [
{
"network": "Twitter",
"username": "sikofitt",
"url": ""
},
{
"network": "Github",
"username": "sikofitt",
"url": ""
},
{
"network": "Private Git",
"username": "sikofitt",
"url": "https://repos.bgemi.net/u/sikofitt"
},
{
"network": "linkedin",
"username": "reric",
"url": "https://www.linkedin.com/in/reric"
}
]
},
"profiles": [
{
"network": "Twitter",
"username": "sikofitt",
"url": ""
},
{
"network": "Github",
"username": "sikofitt",
"url": ""
},
{
"network": "Private Git",
"username": "sikofitt",
"url": "https://repos.bgemi.net/u/sikofitt"
},
{
"network": "linkedin",
"username": "reric",
"url": "https://www.linkedin.com/in/reric"
}
"work": [
{
"company": "Stanford University",
"position": "Developer / Systems Administrator",
"website": "https://ee.stanford.edu",
"startDate": "2007-05-27",
"endDate": "2016-07-02",
"summary": "",
"highlights": [
"Build an algorithm for artist to detect if their music was violating copy right infringement laws",
"Successfully won Techcrunch Disrupt",
"Optimized an algorithm that holds the current world record for Weisman Scores"
]
},
{
"company": "Searchathlon INC.",
"position": "Web Developer / Linux System Administration",
"website": "http://searchathlon.com",
"startDate": "2005-01-01",
"endDate": "2006-01-01",
"summary": "",
"highlights": []
}
],
"volunteer": [],
"education": [],
"awards": [],
"publications": [],
"skills": [
{
"name": "Web Development / Design",
"level": "",
"keywords": [
"HTML5",
"CSS3",
"Javascript",
"jQuery",
"NPM",
"Bower",
"Grunt",
"Let's Encrypt"
]
},
{
"name": "PHP",
"level": "",
"keywords": [
"PHP5",
"PHP7",
"Symfony 2",
"Symfony 3",
"OOP",
"Silex",
"Slim",
"Doctrine",
"Composer"
]
}
],
"languages": [],
"interests": [
{
"name": "Computers",
"keywords": [
"Hardware",
"Programming",
"Design"
]
}
],
"references": [
{
"name": "Erlich Bachman",
"reference": "It is my pleasure to recommend Richard, his performance working as a consultant for Main St. Company proved that he will be a valuable addition to any company."
}
]
},
"work": [
{
"company": "Stanford University",
"position": "Developer / Systems Administrator",
"website": "https://ee.stanford.edu",
"startDate": "2007-05-27",
"endDate": "2016-07-02",
"summary": "",
"highlights": [
"Build an algorithm for artist to detect if their music was violating copy right infringement laws",
"Successfully won Techcrunch Disrupt",
"Optimized an algorithm that holds the current world record for Weisman Scores"
]
},
{
"company": "Searchathlon INC.",
"position": "Web Developer / Linux System Administration",
"website": "http://searchathlon.com",
"startDate": "2005-01-01",
"endDate": "2006-01-01",
"summary": "",
"highlights": []
}
],
"volunteer": [],
"education": [],
"awards": [],
"publications": [],
"skills": [
{
"name": "Web Development / Design",
"level": "",
"keywords": [
"HTML5",
"CSS3",
"Javascript",
"jQuery",
"NPM",
"Bower",
"Grunt",
"Let's Encrypt"
]
},
{
"name": "PHP",
"level": "",
"keywords": [
"PHP5",
"PHP7",
"Symfony 2",
"Symfony 3",
"OOP",
"Silex",
"Slim",
"Doctrine",
"Composer"
]
}
],
"languages": [],
"interests": [
{
"name": "Computers",
"keywords": [
"Hardware",
"Programming",
"Design"
]
}
],
"references": [
{
"name": "Erlich Bachman",
"reference": "It is my pleasure to recommend Richard, his performance working as a consultant for Main St. Company proved that he will be a valuable addition to any company."
}
]
}

12
dump.php Normal file
View File

@ -0,0 +1,12 @@
<?php
require_once 'vendor/autoload.php';
$decoder = new Webmozart\Json\JsonDecoder();
$json = $decoder->decodeFile('data/resume.json');
dump($json);

View File

@ -4,4 +4,5 @@
@base-body-font-family : 'Lato';
@base-body-font-size : 26px;
@base-heading-font-family : 'Eczar';
@base-body-line-height : 1.2em;
@base-body-line-height : 1.2em;
@thumbnail-mini-width : 100px;

View File

@ -1,38 +1,52 @@
<?php
use Knp\Snappy\Pdf;
use Sikofitt\Json\ResumeBuilder;
use Symfony\Component\HttpFoundation\Response;
use Webmozart\Json\FileNotFoundException;
use Webmozart\Json\ValidationFailedException;
use Silex\Provider\TwigServiceProvider;
use Symfony\Component\Config;
use Webmozart\Json\DecodingFailedException;
use WhoopsSilex\WhoopsServiceProvider;
use Symfony\Component\HttpKernel\DataCollector\DumpDataCollector;
require_once __DIR__ . '/../vendor/autoload.php';
require_once __DIR__ . '/../app/App.php';
define ('APP_ROOT', __DIR__ . '/../');
define ('SCHEMA_URL', 'https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json');
$app = new App();
$app['debug'] = true;
$app->register(new Sikofitt\Config\ConfigServiceProvider(), [
'config.path' => $app->getConfDirectory(),
]);
$app->register (new TwigServiceProvider(), [
'twig.path' => APP_ROOT . 'app/views',
'twig.path' => [APP_ROOT . 'app/views', APP_ROOT .'vendor/symfony/web-profiler-bundle/Resources/views/Profiler'],
]);
$app['conf'] = function ($app) {
};
$app->register (new WhoopsServiceProvider());
$app->register (new \Silex\Provider\AssetServiceProvider());
$app->register (new \Silex\Provider\MonologServiceProvider());
$app->register (new \Silex\Provider\VarDumperServiceProvider());
$app->register (new \Silex\Provider\HttpKernelServiceProvider());
$app->register(new \Silex\Provider\AssetServiceProvider());
$app->register(new \Silex\Provider\FormServiceProvider());
$app->register(new \Silex\Provider\HttpFragmentServiceProvider());
$app->register(new \Silex\Provider\ServiceControllerServiceProvider());
$app->register(new \Silex\Provider\RoutingServiceProvider());
$app->register (new \Silex\Provider\VarDumperServiceProvider(), array(
'var_dumper.dump_destination' => new \Symfony\Component\VarDumper\Cloner\VarCloner(),
));
$app->register(new \Silex\Provider\MonologServiceProvider(), array(
'monolog.logfile' => $app->getDataDirectory() . '/logs/' . (null !== $app->config('app.environment') ? $app->config('app.environment') . '.log' : 'dev.log'),
));
$app->register(new \Silex\Provider\SessionServiceProvider());
$app->register(new \Silex\Provider\WebProfilerServiceProvider(), array(
'profiler.cache_dir' => $app->getDataDirectory() .'/cache/profiler',
));
$app->extend('twig', function(\Twig_Environment $twig, $app) {
$twig->enableDebug();
return $twig;
});
$app->error(function (\Exception $e, $code) use($app) {
switch ($code) {
case 404:
@ -41,7 +55,6 @@ $app->error(function (\Exception $e, $code) use($app) {
default:
$message = $app['twig']->render('error500.html.twig');
}
return new Response($message, $code);
});
$app['json.decoder'] = function ($app) {
@ -54,16 +67,33 @@ $app['json.validator'] = function ($app) {
return new Webmozart\Json\JsonValidator();
};
$app->get ('/', function () use ($app) {
//$snappy = new Pdf($app->getRootDirectory() . '/vendor/bin/wkhtmltopdf-amd64');
//$snappy->setTemporaryFolder(sys_get_temp_dir() . '/pdf');
//$snappy->setOption( 'disable-external-links', true);
//$snappy->setOption('toc', false);
//$snappy->setOption('enable-internal-links', false);
//$html = $app['twig']->render('resume.html.twig');
//$snappy->generateFromHtml($html, $app->getRootDirectory() . '/test3.pdf');
return $app['twig']->render('resume.html.twig');
$app->get ('/', function () use ($app) {
$resumeData = $app['json.decoder']->decodeFile($app->getDataDirectory() .'/resume.json', $app->getDataDirectory() . '/resume.schema.json');
$basics = (isset($resumeData->basics) && count($resumeData->basics) > 0) ? $resumeData->basics : null;
$work = (isset($resumeData->work) && count($resumeData->work) > 0) ? $resumeData->work : null;
$volunteer = (isset($resumeData->volunteer) && count($resumeData->volunteer) > 0) ? $resumeData->volunteer : null;
$education = (isset($resumeData->education) && count($resumeData->education) > 0) ? $resumeData->education : null;
$awards = (isset($resumeData->awards) && count($resumeData->awards) > 0) ? $resumeData->awards : null;
$publications = (isset($resumeData->publications) && count($resumeData->publications) > 0) ? $resumeData->publications : null;
$skills = (isset($resumeData->skills) && count($resumeData->skills) > 0) ? $resumeData->skills : null;
$languages = (isset($resumeData->languages) && count($resumeData->languages) > 0) ? $resumeData->languages : null;
$interests = (isset($resumeData->interests) && count($resumeData->interests) > 0) ? $resumeData->interests : null;
$references = (isset($resumeData->references) && count($resumeData->references) > 0) ? $resumeData->references : null;
return $app['twig']->render('resume.html.twig', [
'basics' => $basics,
'work' => $work,
'volunteer' => $volunteer,
'education' => $education,
'awards' => $awards,
'publications' => $publications,
'skills' => $skills,
'languages' => $languages,
'interests' => $interests,
'references' => $references,
]);
});
$app->run ();