diff --git a/.gitignore b/.gitignore
index f044de1..591c5c1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,7 +14,12 @@ public/assets/images/*
!public/assets/images/global/
!public/assets/images/global/*
-content/
+!content/
+content/*
+!content/themes
+content/themes/*
+!content/themes/fipamo-default
+!content/themes/fipamo-default/*
vendor/
cache/
_temp
diff --git a/brain/App.inc.php b/brain/App.inc.php
index 73b4058..ec8dca7 100644
--- a/brain/App.inc.php
+++ b/brain/App.inc.php
@@ -16,6 +16,7 @@ include "../brain/utility/StringTools.inc.php";
include "../brain/utility/FileUploader.inc.php";
include "../brain/utility/DocTools.inc.php";
include "../brain/utility/Sorting.inc.php";
+include "../brain/utility/Setup.inc.php";
class App
{
diff --git a/brain/api/v1/InitAPI.inc.php b/brain/api/v1/InitAPI.inc.php
new file mode 100644
index 0000000..778f6e9
--- /dev/null
+++ b/brain/api/v1/InitAPI.inc.php
@@ -0,0 +1,21 @@
+renderTags();
- //$render->renderArchive();
+ $render->renderTags();
+ $render->renderArchive();
$render->renderPages();
$result = [
@@ -36,7 +36,6 @@ class SettingsAPI
"message" => "Settings Synced. You're doing great!",
"type" => "settingsUpdated",
];
-
break;
case "nav-sync":
Settings::navSync($body);
diff --git a/brain/controller/APIControl.inc.php b/brain/controller/APIControl.inc.php
index 43d554d..cd09474 100644
--- a/brain/controller/APIControl.inc.php
+++ b/brain/controller/APIControl.inc.php
@@ -6,6 +6,7 @@ include "../brain/api/v1/AuthAPI.inc.php";
include "../brain/api/v1/ImagesAPI.inc.php";
include "../brain/api/v1/PagesAPI.inc.php";
include "../brain/api/v1/SettingsAPI.inc.php";
+include "../brain/api/v1/InitAPI.inc.php";
class APIControl
{
@@ -39,6 +40,9 @@ class APIControl
}
switch (isset($args["third"]) ? $args["third"] : "none") {
+ case "init":
+ $result = InitApi::handleInitTasks($args["third"], $body);
+ break;
case "login":
$result = AuthAPI::login($body);
break;
diff --git a/brain/controller/DashControl.inc.php b/brain/controller/DashControl.inc.php
index e0829c6..69ba850 100644
--- a/brain/controller/DashControl.inc.php
+++ b/brain/controller/DashControl.inc.php
@@ -15,120 +15,126 @@ class DashControl
$view = Twig::fromRequest($request);
$pageOptions = [];
$template = "";
- switch (isset($args["second"]) ? $args["second"] : "index") {
- case "settings":
- if (Session::active()) {
- $config = new Settings();
- $settings = $config->getSettings();
- $themes = $config->getThemes();
- $template = "dash/settings.twig";
- $member = Session::get("member");
- $pageOptions = [
- "title" => "Dash Settings",
- "private" => $settings["global"]["private"],
- "render" => $settings["global"]["renderOnSave"],
- "background" => $settings["global"]["background"],
- "member" => $member,
- "siteTitle" => $settings["global"]["title"],
- "baseUrl" => $settings["global"]["base_url"],
- "desc" => $settings["global"]["descriptions"],
- "lastBackup" => $settings["global"]["last_backup"],
- "currentTheme" => $settings["global"]["theme"],
- "themes" => $themes,
- "mailOption" => $settings["email"]["active"],
- "status" => Session::active(),
- ];
- } else {
- header("Location: /dashboard");
- die();
- }
-
- break;
- case "navigation":
- if (Session::active()) {
- $config = new Settings();
- $settings = $config->getSettings();
- $template = "dash/navigation.twig";
- $pageOptions = [
- "title" => "Edit Dash Navigation",
- "status" => Session::active(),
- "menu" => $settings["menu"],
- ];
- } else {
- header("Location: /dashboard");
- die();
- }
- break;
- case "pages":
- if (Session::active()) {
- $currentPage = isset($args["fourth"]) ? $args["fourth"] : 1;
- $filter = isset($args["third"]) ? $args["third"] : "all";
- $data = (new Book("../content/pages"))->getPages(
- $currentPage,
- 4,
- $filter
- );
- $template = "dash/book.twig";
- $pageOptions = [
- "entryCount" => $data["entryCount"],
- "numOfPages" => $data["numOfPages"],
- "currentPage" => $currentPage,
- "filter" => $data["paginate"]["sort"],
- "stats" => $data["stats"],
- "pages" => $data["pages"],
- "paginate" => $data["paginate"],
- "status" => Session::active(),
- ];
- } else {
- header("Location: /dashboard");
- die();
- }
- break;
- case "page":
- if (Session::active()) {
- $template = "dash/page-edit.twig";
- $mode = $args["third"];
- if ($mode == "edit") {
- $uuid = $args["fourth"];
+ if (Setup::status()) {
+ switch (isset($args["second"]) ? $args["second"] : "index") {
+ case "settings":
+ if (Session::active()) {
+ $config = new Settings();
+ $settings = $config->getSettings();
+ $themes = $config->getThemes();
+ $template = "dash/settings.twig";
+ $member = Session::get("member");
+ $pageOptions = [
+ "title" => "Dash Settings",
+ "private" => $settings["global"]["private"],
+ "render" => $settings["global"]["renderOnSave"],
+ "background" => $settings["global"]["background"],
+ "member" => $member,
+ "siteTitle" => $settings["global"]["title"],
+ "baseUrl" => $settings["global"]["base_url"],
+ "desc" => $settings["global"]["descriptions"],
+ "lastBackup" => $settings["global"]["last_backup"],
+ "currentTheme" => $settings["global"]["theme"],
+ "themes" => $themes,
+ "mailOption" => $settings["email"]["active"],
+ "status" => Session::active(),
+ ];
+ } else {
+ header("Location: /dashboard");
+ die();
+ }
+ break;
+ case "navigation":
+ if (Session::active()) {
+ $config = new Settings();
+ $settings = $config->getSettings();
+ $template = "dash/navigation.twig";
$pageOptions = [
- "title" => "Fipamo | Edit Page",
- "page" => (new Book("../content/pages"))->findPageById($uuid),
- "mode" => $mode,
+ "title" => "Edit Dash Navigation",
"status" => Session::active(),
+ "menu" => $settings["menu"],
];
} else {
+ header("Location: /dashboard");
+ die();
+ }
+ break;
+ case "pages":
+ if (Session::active()) {
+ $currentPage = isset($args["fourth"]) ? $args["fourth"] : 1;
+ $filter = isset($args["third"]) ? $args["third"] : "all";
+ $data = (new Book("../content/pages"))->getPages(
+ $currentPage,
+ 4,
+ $filter
+ );
+ $template = "dash/book.twig";
$pageOptions = [
- "title" => "Fipamo | Create Page",
- "mode" => $mode,
+ "entryCount" => $data["entryCount"],
+ "numOfPages" => $data["numOfPages"],
+ "currentPage" => $currentPage,
+ "filter" => $data["paginate"]["sort"],
+ "stats" => $data["stats"],
+ "pages" => $data["pages"],
+ "paginate" => $data["paginate"],
"status" => Session::active(),
];
+ } else {
+ header("Location: /dashboard");
+ die();
+ }
+ break;
+ case "page":
+ if (Session::active()) {
+ $template = "dash/page-edit.twig";
+ $mode = $args["third"];
+ if ($mode == "edit") {
+ $uuid = $args["fourth"];
+
+ $pageOptions = [
+ "title" => "Fipamo | Edit Page",
+ "page" => (new Book("../content/pages"))->findPageById($uuid),
+ "mode" => $mode,
+ "status" => Session::active(),
+ ];
+ } else {
+ $pageOptions = [
+ "title" => "Fipamo | Create Page",
+ "mode" => $mode,
+ "status" => Session::active(),
+ ];
+ }
+ } else {
+ header("Location: /dashboard");
+ die();
}
- } else {
+ break;
+ case "logout":
+ Session::kill();
header("Location: /dashboard");
die();
- }
- break;
- case "logout":
- Session::kill();
- header("Location: /dashboard");
- die();
- break;
- default:
- $template = "dash/start.twig";
- if (Session::active()) {
- $pageOptions = [
- "title" => "Welcome Back",
- "status" => Session::active(),
- "data" => (new Book("../content/pages"))->getPages(1, 4),
- ];
- } else {
- $pageOptions = [
- "title" => "Welcome to Fipamo",
- "status" => Session::active(),
- ];
- }
- break;
+ break;
+ default:
+ //$secret = ;
+ $template = "dash/start.twig";
+ if (Session::active()) {
+ $pageOptions = [
+ "title" => "Welcome Back",
+ "status" => Session::active(),
+ "data" => (new Book("../content/pages"))->getPages(1, 4),
+ ];
+ } else {
+ $pageOptions = [
+ "title" => "Welcome to Fipamo",
+ "status" => Session::active(),
+ ];
+ }
+ break;
+ }
+ } else {
+ $template = "dash/init.twig";
+ $pageOptions = ["title" => "Fipamo Setup"];
}
return $view->render($response, $template, $pageOptions);
diff --git a/brain/controller/IndexControl.inc.php b/brain/controller/IndexControl.inc.php
index e26d526..0949c3f 100644
--- a/brain/controller/IndexControl.inc.php
+++ b/brain/controller/IndexControl.inc.php
@@ -12,18 +12,8 @@ class IndexControl
): ResponseInterface {
//unset($_SESSION);
$view = Twig::fromRequest($request);
-
$html = file_get_contents("../public/index.html");
$response->getBody()->write($html);
return $response;
-
- /*
- return $view->render($response, "front/start.twig", [
- "title" => "Fipamo Dash",
- "status" => false,
- "pages" => [],
- "totalPages" => 0,
- ]);
- */
}
}
diff --git a/brain/data/Book.inc.php b/brain/data/Book.inc.php
index 7d8bc3c..07e6f0a 100644
--- a/brain/data/Book.inc.php
+++ b/brain/data/Book.inc.php
@@ -58,7 +58,11 @@ class Book
if (isset($image["feature_image"])) {
if ($task != "create") {
- $feature = $image["feature_image"]->getClientFileName();
+ $feature =
+ "/assets/images/blog/" .
+ $path .
+ "/" .
+ $image["feature_image"]->getClientFileName();
} else {
$feature =
"/assets/images/blog/" .
@@ -143,14 +147,17 @@ class Book
"type" => $task == "write" ? "postUpdated" : "postAdded",
"id" => $uuid,
];
+
+ //**just testing to see why indexing isn't working **
+
+ //once saved, update menu
+ $body["path"] = $path;
+ Settings::updateMenu($body);
+ Settings::updateTags();
//if new page added, update current index in Settings file
if ($task == "create") {
Settings::updateIndex();
}
- //once saved, update menu
- $body["path"] = $path;
- Settings::updateMenu($body);
- //Settings::updateTags();
} else {
$response = [
"message" => "Uh oh. File save problem. Don't panic",
diff --git a/brain/data/Session.inc.php b/brain/data/Session.inc.php
index 1d6d330..7bbc245 100644
--- a/brain/data/Session.inc.php
+++ b/brain/data/Session.inc.php
@@ -22,19 +22,27 @@ class Session
public static function active()
{
- $data = json_decode(file_get_contents(self::$file), true);
- if ($data["member"] != null) {
- $secret = (new Settings())->getFolks("secret");
- if (
- Token::validate($data["token"], $secret) &&
- Token::validateExpiration($data["token"], $secret)
- ) {
- return true;
+ if (!is_file(self::$file)) {
+ return false;
+ } else {
+ $data = json_decode(file_get_contents(self::$file), true);
+ if ($data["member"] != null) {
+ $secret = (new Settings())->getFolks("secret");
+ if ($secret == null) {
+ return false;
+ } else {
+ if (
+ Token::validate($data["token"], $secret) &&
+ Token::validateExpiration($data["token"], $secret)
+ ) {
+ return true;
+ } else {
+ return false;
+ }
+ }
} else {
return false;
}
- } else {
- return false;
}
}
diff --git a/brain/data/Settings.inc.php b/brain/data/Settings.inc.php
index 883ab6a..9ae7226 100644
--- a/brain/data/Settings.inc.php
+++ b/brain/data/Settings.inc.php
@@ -136,8 +136,9 @@ class Settings
public static function updateIndex()
{
$settings = self::$settings;
- $index = $settings["library_stats"]["current_index"];
- $settings["library_stats"]["current_index"] = $index + 1;
+
+ $settings["library_stats"]["current_index"] =
+ $settings["library_stats"]["current_index"] + 1;
DocTools::writeSettings("../config/settings.json", $settings);
}
diff --git a/brain/utility/DocTools.inc.php b/brain/utility/DocTools.inc.php
index cc52766..c64da0d 100644
--- a/brain/utility/DocTools.inc.php
+++ b/brain/utility/DocTools.inc.php
@@ -29,9 +29,13 @@ class DocTools
public static function writeSettings($fileLocation, $fileContents)
{
- ($new = fopen($fileLocation, "w")) or die("Unable to open file!");
- fwrite($new, json_encode($fileContents));
- fclose($new);
+ if (!is_file($fileLocation)) {
+ file_put_contents($fileLocation, json_encode($fileContents));
+ } else {
+ ($new = fopen($fileLocation, "w")) or die("Unable to open file!");
+ fwrite($new, json_encode($fileContents));
+ fclose($new);
+ }
}
public static function writeHTML($location, $html, $path = null)
diff --git a/brain/utility/FileUploader.inc.php b/brain/utility/FileUploader.inc.php
index 5609834..be3df13 100644
--- a/brain/utility/FileUploader.inc.php
+++ b/brain/utility/FileUploader.inc.php
@@ -1,13 +1,11 @@
getClientFileName();
+
$file->moveTo($directory . "/" . $file->getClientFileName());
- } catch (Error $e) {
- echo $e;
+ } catch (RuntimeException $e) {
+ echo "ERROR " . $e->getMessage();
//echo "failed to upload image: " . $e->getMessage();
//throw new Error("Failed to upload image file");
diff --git a/brain/utility/Setup.inc.php b/brain/utility/Setup.inc.php
new file mode 100644
index 0000000..1ce2593
--- /dev/null
+++ b/brain/utility/Setup.inc.php
@@ -0,0 +1,97 @@
+getParsedBody();
+ $handle = $body["new_member_handle"];
+ $email = $body["new_member_email"];
+ $pass = $body["new_member_pass"];
+ $title = $body["new_member_title"];
+
+ $now = new \Moment\Moment();
+ //setup folks config
+ $hash = password_hash($pass, PASSWORD_DEFAULT);
+ $newFolks[0]["id"] = 0;
+ $newFolks[0]["handle"] = $handle;
+ $newFolks[0]["email"] = $email;
+ $newFolks[0]["password"] = $hash;
+ $newFolks[0]["key"] = password_hash($email, PASSWORD_DEFAULT);
+ $newFolks[0]["secret"] = StringTools::randomString(12);
+ $newFolks[0]["role"] = "hnic";
+ $newFolks[0]["created"] = $now->format("Y-m-d\TH:i:sP");
+ $newFolks[0]["updated"] = $now->format("Y-m-d\TH:i:sP");
+ //set up settings config
+ $newSettings["global"]["title"] = $title;
+
+ //create index file
+ //$rightNow = $now->format("Y-m-d\TH:i:sP");
+ //var_dump($now->format("Y-m-d\TH:i:sP"));
+ $index = [
+ "id" => 1,
+ "uuid" => StringTools::createUUID(),
+ "title" => "FIRST!",
+ "feature" => "/assets/images/global/default-bg.jpg",
+ "path" => "content/pages/start",
+ "layout" => "index",
+ "tags" => "start, welcome",
+ "author" => $handle,
+ "created" => $now->format("Y-m-d\TH:i:sP"),
+ "updated" => $now->format("Y-m-d\TH:i:sP"),
+ "deleted" => "false",
+ "slug" => "first",
+ "menu" => "false",
+ "featured" => "false",
+ "published" => "true",
+ "content" =>
+ "# F**k Yes \n\nIf you're seeing this, you're up and running. NICE WORK!\n\nFrom here, feel free to start dropping pages to your heart's content.\n\nFor some tips about using Fipamo, check out the ![docs](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage)\n\nAll good? Feel free to edit this page to whatever you want!\n\nYOU'RE THE CAPTAIN NOW.",
+ ];
+
+ $freshIndex = DocTools::objectToMD($index);
+
+ //once all files created, write down
+
+ DocTools::writeSettings("../config/settings.json", $newSettings);
+ DocTools::writeSettings("../config/folks.json", $newFolks);
+ DocTools::writeSettings("../config/tags.json", []);
+ DocTools::writePages(
+ "create",
+ "start",
+ "../content/pages/start/index.md",
+ $freshIndex
+ );
+
+ //if there is an older session file, get rid of it
+ if (is_file("../content/.session")) {
+ unlink("../content/.session");
+ }
+
+ $result = ["type" => "blogInitGood", "message" => "Site Created"];
+
+ return $result;
+ }
+
+ public static function restore()
+ {
+ }
+}
diff --git a/brain/utility/StringTools.inc.php b/brain/utility/StringTools.inc.php
index 58487fb..68d81cd 100644
--- a/brain/utility/StringTools.inc.php
+++ b/brain/utility/StringTools.inc.php
@@ -1,5 +1,6 @@
+ {% endblock %}
+
+ {% block mainContent %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% endblock %}
+
+ {% block javascripts %}
+
+ {% endblock %}
\ No newline at end of file
diff --git a/config/init/folks-template.json b/config/init/folks-template.json
index 2b1084e..0933e36 100644
--- a/config/init/folks-template.json
+++ b/config/init/folks-template.json
@@ -1,14 +1,15 @@
[
- {
- "id": "",
- "handle": "",
- "avi": "/assets/images/global/default-avi.png",
- "email": "",
- "password": "",
- "key": "",
- "role": "",
- "created": "",
- "updated": "",
- "deleted": null
- }
-]
\ No newline at end of file
+ {
+ "id": "",
+ "handle": "",
+ "avi": "/assets/images/global/default-avi.png",
+ "email": "",
+ "password": "",
+ "key": "",
+ "secret": "",
+ "role": "",
+ "created": "",
+ "updated": "",
+ "deleted": null
+ }
+]
diff --git a/config/init/index-template.md b/config/init/index-template.md
deleted file mode 100644
index 6e23de4..0000000
--- a/config/init/index-template.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-id: 0
-uuid:
-title: This is the Start
-feature: /assets/images/global/default-bg.jpg
-path:
-layout: index
-tags: start
-author:
-created:
-updated:
-deleted: false
-menu: false
-featured: false
-published: true
-slug: index
----
-# F**k Yes
-
-If you're seeing this, you're up and running. NICE WORK!
-
-From here, feel free to start dropping pages to your heart's content.
-
-For some tips about using Fipamo, check out the ![docs](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage)
-
-All good? Feel free to edit this page to whatever you want!
-
-YOU'RE THE CAPTAIN NOW.
diff --git a/config/init/settings-template.json b/config/init/settings-template.json
index 37dfb1b..93a1e3f 100644
--- a/config/init/settings-template.json
+++ b/config/init/settings-template.json
@@ -1,29 +1,29 @@
{
- "global": {
- "base_url": "http://your.domain",
- "title": "This is a Title",
- "descriptions": "Because it should be easy.",
- "background": "/assets/images/global/default-bg.jpg",
- "private": "true",
- "renderOnSave": "false",
- "theme": "default-light",
- "display_limit": 5,
- "last_backup": null,
- "port": 2314
+ "global": {
+ "base_url": "http://your.domain",
+ "title": "This is a Title",
+ "descriptions": "Because it should be easy.",
+ "background": "/assets/images/global/default-bg.jpg",
+ "private": "true",
+ "renderOnSave": "false",
+ "theme": "fipamo-default",
+ "display_limit": 5,
+ "last_backup": null
+ },
+ "library_stats": {
+ "current_index": 1
+ },
+ "email": {
+ "active": "none",
+ "smtp": {
+ "domain": "",
+ "email": "",
+ "password": ""
},
- "library_stats": {
- "current_index": 1
- },
- "email": {
- "smtp": {
- "domain": "",
- "email": "",
- "password": ""
- },
- "mailgun": {
- "domain": "",
- "api-key": ""
- }
- },
- "menu": []
-}
\ No newline at end of file
+ "mailgun": {
+ "domain": "",
+ "api-key": ""
+ }
+ },
+ "menu": []
+}
diff --git a/content/themes/fipamo-default/archive.twig b/content/themes/fipamo-default/archive.twig
new file mode 100644
index 0000000..18c7b02
--- /dev/null
+++ b/content/themes/fipamo-default/archive.twig
@@ -0,0 +1,36 @@
+{% extends "fipamo-default/frame.twig" %}
+
+{% block title %}
+ {{ title }}
+{% endblock %}
+
+ {% block mainContent %}
+
+
+
+ {% for item in archives %}
+
+
+ {{item.year}}
+
+ {% for data in item.year_data %}
+
+
+ {{data.full_month}}
+
+ {% for page in data.pages %}
+
{{page.title}}
+ {% endfor %}
+
+
+ {% endfor %}
+
+ {% endfor %}
+
+
+
+ {% endblock %}
\ No newline at end of file
diff --git a/content/themes/fipamo-default/assets/css/base.css b/content/themes/fipamo-default/assets/css/base.css
new file mode 100644
index 0000000..a1a08e0
--- /dev/null
+++ b/content/themes/fipamo-default/assets/css/base.css
@@ -0,0 +1,555 @@
+/**
+-------------------------------
+-- Typography
+-------------------------------
+**/
+/**
+-------------------------------
+-- Colors
+-------------------------------
+**/
+/**
+-------------------------------
+-- Mixins
+-------------------------------
+**/
+/**
+-------------------------------
+-- Normalize
+-------------------------------
+**/
+html {
+ line-height: 1.15;
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%;
+}
+body {
+ margin: 0;
+}
+article,
+aside,
+footer,
+header,
+nav,
+section {
+ display: block;
+}
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+ line-height: 1em;
+}
+figcaption,
+figure,
+main {
+ display: block;
+}
+figure {
+ margin: 1em 40px;
+}
+hr {
+ box-sizing: content-box;
+ height: 0;
+ overflow: visible;
+}
+pre {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+a {
+ background-color: transparent;
+ -webkit-text-decoration-skip: objects;
+}
+a:active,
+a:hover {
+ outline-width: 0;
+}
+abbr[title] {
+ border-bottom: none;
+ text-decoration: underline;
+ text-decoration: underline dotted;
+}
+b,
+strong {
+ font-weight: inherit;
+ font-weight: bolder;
+}
+code,
+kbd,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+dfn {
+ font-style: italic;
+}
+mark {
+ background-color: #ff0;
+ color: #000;
+}
+small {
+ font-size: 80%;
+}
+sub,
+sup {
+ font-size: 60%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+sub {
+ bottom: -0.25em;
+}
+sup {
+ top: -0.55em;
+ background: #bdcbdb;
+ color: #151d26;
+ border-radius: 2px;
+ padding: 0 2px 0 2px;
+ margin: 0 2px 0 0;
+}
+audio,
+video {
+ display: inline-block;
+}
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+img {
+ border-style: none;
+}
+svg:not(:root) {
+ overflow: hidden;
+}
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+}
+button,
+input {
+ overflow: visible;
+}
+button,
+select {
+ text-transform: none;
+}
+button,
+html [type="button"],
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button;
+}
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner,
+button::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring,
+button:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+legend {
+ box-sizing: border-box;
+ color: inherit;
+ display: table;
+ max-width: 100%;
+ padding: 0;
+ white-space: normal;
+}
+progress {
+ display: inline-block;
+ vertical-align: baseline;
+}
+textarea {
+ overflow: auto;
+}
+[type="checkbox"],
+[type="radio"] {
+ box-sizing: border-box;
+ padding: 0;
+}
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+[type="search"] {
+ -webkit-appearance: textfield;
+ outline-offset: -2px;
+}
+[type="search"]::-webkit-search-cancel-button,
+[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ font: inherit;
+}
+details,
+menu {
+ display: block;
+}
+summary {
+ display: list-item;
+}
+canvas {
+ display: inline-block;
+}
+template {
+ display: none;
+}
+[hidden] {
+ display: none;
+}
+/**
+-------------------------------
+-- Main Structure
+-------------------------------
+**/
+html {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ font: 400 1.2em/1.4em Helvetica, Arial, sans-serif;
+}
+body {
+ background: #ebe5d4;
+ margin: 0;
+ padding: 0;
+ perspective: 1px;
+ transform-style: preserve-3d;
+ height: 100%;
+ width: 100%;
+ overflow-y: scroll;
+ overflow-x: hidden;
+}
+a {
+ color: #151d26;
+ text-decoration: none;
+ border-bottom: 1px solid #7ed07e;
+ -moz-transition: all 0.2s linear;
+ -webkit-transition: all 0.2s linear;
+ -o-transition: all 0.2s linear;
+ transition: all 0.2s linear;
+}
+a:hover {
+ border-bottom: 1px solid #fc6399;
+}
+code {
+ background: #32302f;
+ color: #7ed07e;
+ border-radius: 3px;
+ padding: 3px;
+}
+pre {
+ background: #32302f;
+ color: #7ed07e;
+ border-radius: 3px;
+ padding: 3px;
+}
+pre code {
+ color: #fc6399;
+ background: none;
+}
+svg.icons {
+ width: 25px;
+ fill: #ebe5d4;
+}
+header {
+ background: #151d26;
+ height: 90%;
+ width: 100%;
+ border-top: #ebe5d4 3px solid;
+}
+header nav {
+ width: 97%;
+ margin: 10px auto;
+ color: #151d26;
+}
+header nav .left,
+header nav .right {
+ width: 50%;
+ display: inline-block;
+ vertical-align: top;
+}
+header nav .left a.logo-link {
+ border-bottom: none;
+ margin: 0 0 20px 0;
+ display: block;
+}
+header nav .left a.logo-link #logo {
+ width: 50px;
+ border-bottom: none;
+}
+header nav .right {
+ text-align: right;
+}
+header nav .right a.menu-link {
+ background: #fc6399;
+ margin-bottom: 4px;
+ padding: 3px;
+ border-radius: 2px;
+ display: inline-block;
+ font-size: 0.8em;
+ border-bottom: none;
+}
+header nav .right a.menu-link:hover {
+ background: #feb1cc;
+}
+.container {
+ z-index: 2;
+ background: #ebe5d4;
+ line-height: 30px;
+ font-weight: lighter;
+ width: 100%;
+ color: #32302f;
+}
+.container article {
+ position: relative;
+ width: 80%;
+ height: 80%;
+ max-width: 840px;
+ background: #ebe5d4;
+ vertical-align: top;
+ color: #32302f;
+ margin: 0 auto;
+}
+.container article .index,
+.container article .page {
+ padding: 0 0 15px 0;
+}
+.container article .index img,
+.container article .page img {
+ display: block;
+ width: 100%;
+}
+.container article .index h1,
+.container article .page h1 {
+ color: #151d26;
+}
+.container article .index p,
+.container article .page p {
+ font: 300 1.25em/1.6em Helvetica, Arial, sans-serif;
+}
+.container article .index .meta,
+.container article .page .meta {
+ font: 500 0.8em/1.3em Helvetica, Arial, sans-serif;
+ padding: 5px 0 0 0;
+ border-top: 1px solid #151d26;
+ background: #ede8d8;
+}
+.container article .index .meta a,
+.container article .page .meta a {
+ font-size: 0.8em;
+ font-weight: 400;
+}
+.container article .index .archive-item,
+.container article .page .archive-item {
+ padding: 15px 0 20px 0;
+}
+.container article .index .archive-item span.year,
+.container article .page .archive-item span.year {
+ font-size: 1.5em;
+ font-weight: 500;
+ padding: 5px;
+ display: block;
+ color: #151d26;
+}
+.container article .index .archive-item .archive-month,
+.container article .page .archive-item .archive-month {
+ display: inline-block;
+ vertical-align: top;
+ width: 30%;
+ padding: 5px;
+}
+.container article .index .archive-item .archive-month span.month,
+.container article .page .archive-item .archive-month span.month {
+ color: #fc6399;
+ font-size: 1.5em;
+ font-weight: 300;
+ padding: 5px;
+ display: block;
+}
+.container section {
+ padding: 0 0 20px 0;
+ background: #151d26;
+}
+.container section a {
+ color: #ebe5d4;
+}
+.container section .index-lists,
+.container section .page-title {
+ max-width: 840px;
+ width: 80%;
+ margin: 0 auto;
+ padding: 20px 0 0 0;
+}
+.container section .index-lists span,
+.container section .page-title span {
+ font: 600 2em/1.5 Helvetica, Arial, sans-serif;
+ color: #ebe5d4;
+}
+.container section .index-lists .recent,
+.container section .page-title .recent,
+.container section .index-lists .featured,
+.container section .page-title .featured {
+ display: inline-block;
+ width: 50%;
+ vertical-align: top;
+}
+.container section .index-lists label,
+.container section .page-title label {
+ background: #32302f;
+ color: #ebe5d4;
+ font-size: 1.5em;
+ line-height: 1.3;
+}
+footer {
+ background: #e4dcc5;
+ padding: 10px;
+ color: #151d26;
+ font-size: 0.8em;
+ font-weight: 600;
+ height: 100px;
+}
+footer .inner {
+ margin: 20px auto;
+ width: 80%;
+ max-width: 840px;
+}
+footer .inner a {
+ color: #fc6399;
+}
+@media only screen and (max-width: 640px) {
+ header nav {
+ width: 98%;
+ }
+ header span {
+ font-size: 2.5em;
+ }
+ .container article .index .archive-item .archive-month,
+ .container article .page .archive-item .archive-month {
+ width: 45%;
+ }
+}
+@media only screen and (max-width: 480px) {
+ header nav {
+ width: 96%;
+ }
+ .container article .index,
+ .container article .page {
+ margin: 0;
+ }
+ .container article .index p,
+ .container article .page p {
+ font: 300 1em/1.6em Helvetica, Arial, sans-serif;
+ }
+ .container section .index-lists .recent,
+ .container section .index-lists .featured {
+ width: 100% !important;
+ }
+}
+@media only screen and (max-width: 375px) {
+ header nav {
+ width: 95%;
+ }
+ .container article .index,
+ .container article .page {
+ margin: 0;
+ }
+ .container article .index p,
+ .container article .page p {
+ font: 300 0.9em/1.7em Helvetica, Arial, sans-serif;
+ }
+ .container article .index .archive-item .archive-month,
+ .container article .page .archive-item .archive-month {
+ width: 95%;
+ }
+}
+/**
+-------------------------------
+-- Forms
+-------------------------------
+**/
+form {
+ display: inline-block;
+}
+input[type=email],
+input[type=password],
+input[type=text] {
+ border: 0;
+ border-radius: 5px;
+ padding: 5px;
+ margin: 10px 5px 0 0;
+ font: 15px 'RobotoMono';
+ display: inline-block;
+}
+textarea {
+ border: 0;
+ border-radius: 3px;
+ color: $type02;
+ font: 15px 'RobotoMono';
+}
+button,
+input[type=submit] {
+ background: #fc6399;
+ color: #ebe5d4;
+ font: 14px Helvetica, Arial, sans-serif;
+ border-radius: 5px;
+ position: relative;
+ cursor: pointer;
+ border: 0;
+ padding: 5px 5px 0 5px;
+ -moz-transition: all 0.3s linear;
+ -webkit-transition: all 0.3s linear;
+ -o-transition: all 0.3s linear;
+ transition: all 0.3s linear;
+}
+button:hover,
+input[type=submit]:hover {
+ background: #fc7ca9;
+}
+select {
+ font: 14px 'RobotoMono';
+ border: 1px solid #fc6399;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ color: #151d26;
+}
+::-webkit-input-placeholder {
+ font: 14px 'RobotoMono';
+ color: #837e7c;
+}
+:-moz-placeholder {
+/* Firefox 18- */
+ font: 14px 'RobotoMono';
+ color: #837e7c;
+}
+::-moz-placeholder {
+/* Firefox 19+ */
+ font: 14px 'RobotoMono';
+ color: #837e7c;
+}
+:-ms-input-placeholder {
+ font: 14px 'RobotoMono';
+ color: #837e7c;
+}
+/*# sourceMappingURL=base.css.map */
\ No newline at end of file
diff --git a/content/themes/fipamo-default/assets/css/base.css.map b/content/themes/fipamo-default/assets/css/base.css.map
new file mode 100644
index 0000000..d9e5fd2
--- /dev/null
+++ b/content/themes/fipamo-default/assets/css/base.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../../styles/base.styl","../../../styles/_normalize.styl","../../../styles/_structure.styl","../../../styles/_mixins.styl","../../../styles/_forms.styl"],"names":[],"mappings":"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","file":"base.css"}
\ No newline at end of file
diff --git a/content/themes/fipamo-default/assets/images/global/default-avi.png b/content/themes/fipamo-default/assets/images/global/default-avi.png
new file mode 100644
index 0000000..99ee4bb
Binary files /dev/null and b/content/themes/fipamo-default/assets/images/global/default-avi.png differ
diff --git a/content/themes/fipamo-default/assets/images/global/default-bg.jpg b/content/themes/fipamo-default/assets/images/global/default-bg.jpg
new file mode 100644
index 0000000..ff29737
Binary files /dev/null and b/content/themes/fipamo-default/assets/images/global/default-bg.jpg differ
diff --git a/content/themes/fipamo-default/assets/images/global/sprite.svg b/content/themes/fipamo-default/assets/images/global/sprite.svg
new file mode 100644
index 0000000..565e7ab
--- /dev/null
+++ b/content/themes/fipamo-default/assets/images/global/sprite.svg
@@ -0,0 +1,823 @@
+
\ No newline at end of file
diff --git a/content/themes/fipamo-default/assets/images/global/the-logo.svg b/content/themes/fipamo-default/assets/images/global/the-logo.svg
new file mode 100644
index 0000000..f8d21b5
--- /dev/null
+++ b/content/themes/fipamo-default/assets/images/global/the-logo.svg
@@ -0,0 +1,33 @@
+
+
+
diff --git a/content/themes/fipamo-default/assets/scripts/start.min.js b/content/themes/fipamo-default/assets/scripts/start.min.js
new file mode 100644
index 0000000..b108df7
--- /dev/null
+++ b/content/themes/fipamo-default/assets/scripts/start.min.js
@@ -0,0 +1,376 @@
+// modules are defined as an array
+// [ module function, map of requires ]
+//
+// map of requires is short require name -> numeric require
+//
+// anything defined in a previous bundle is accessed via the
+// orig method which is the require for previous bundles
+parcelRequire = (function (modules, cache, entry, globalName) {
+ // Save the require from previous bundle to this closure if any
+ var previousRequire = typeof parcelRequire === 'function' && parcelRequire;
+ var nodeRequire = typeof require === 'function' && require;
+
+ function newRequire(name, jumped) {
+ if (!cache[name]) {
+ if (!modules[name]) {
+ // if we cannot find the module within our internal map or
+ // cache jump to the current global require ie. the last bundle
+ // that was added to the page.
+ var currentRequire = typeof parcelRequire === 'function' && parcelRequire;
+ if (!jumped && currentRequire) {
+ return currentRequire(name, true);
+ }
+
+ // If there are other bundles on this page the require from the
+ // previous one is saved to 'previousRequire'. Repeat this as
+ // many times as there are bundles until the module is found or
+ // we exhaust the require chain.
+ if (previousRequire) {
+ return previousRequire(name, true);
+ }
+
+ // Try the node require function if it exists.
+ if (nodeRequire && typeof name === 'string') {
+ return nodeRequire(name);
+ }
+
+ var err = new Error('Cannot find module \'' + name + '\'');
+ err.code = 'MODULE_NOT_FOUND';
+ throw err;
+ }
+
+ localRequire.resolve = resolve;
+ localRequire.cache = {};
+
+ var module = cache[name] = new newRequire.Module(name);
+
+ modules[name][0].call(module.exports, localRequire, module, module.exports, this);
+ }
+
+ return cache[name].exports;
+
+ function localRequire(x){
+ return newRequire(localRequire.resolve(x));
+ }
+
+ function resolve(x){
+ return modules[name][1][x] || x;
+ }
+ }
+
+ function Module(moduleName) {
+ this.id = moduleName;
+ this.bundle = newRequire;
+ this.exports = {};
+ }
+
+ newRequire.isParcelRequire = true;
+ newRequire.Module = Module;
+ newRequire.modules = modules;
+ newRequire.cache = cache;
+ newRequire.parent = previousRequire;
+ newRequire.register = function (id, exports) {
+ modules[id] = [function (require, module) {
+ module.exports = exports;
+ }, {}];
+ };
+
+ var error;
+ for (var i = 0; i < entry.length; i++) {
+ try {
+ newRequire(entry[i]);
+ } catch (e) {
+ // Save first error but execute all entries
+ if (!error) {
+ error = e;
+ }
+ }
+ }
+
+ if (entry.length) {
+ // Expose entry point to Node, AMD or browser globals
+ // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
+ var mainExports = newRequire(entry[entry.length - 1]);
+
+ // CommonJS
+ if (typeof exports === "object" && typeof module !== "undefined") {
+ module.exports = mainExports;
+
+ // RequireJS
+ } else if (typeof define === "function" && define.amd) {
+ define(function () {
+ return mainExports;
+ });
+
+ //
+