Start project

This commit is contained in:
Skylar Ittner 2018-04-21 14:29:52 -06:00
parent 2d98c68efd
commit 1897f4984b
9 changed files with 93 additions and 128 deletions

3
.gitignore vendored
View File

@ -1,4 +1,5 @@
vendor
settings.php
nbproject/private
*.sync-conflict*
*.sync-conflict*
*.bak

View File

@ -1,66 +1,4 @@
Business App Template
=====================
SiteWriter
==========
This is an empty (but fully functional) PHP application. It is designed to
integrate with AccountHub, an account management web interface. AccountHub manages
user credentials and account data, and is accessed by this app via [a simple API](http://docs.netsyms.com/docs/AccountHub/API%20Documentation/).
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/2aeadc6b65d545c4a4c2e77d286373fd)](https://www.codacy.com/app/Netsyms/BusinessAppTemplate?utm_source=github.com&utm_medium=referral&utm_content=Netsyms/BusinessAppTemplate&utm_campaign=Badge_Grade)
Program Structure
-----------------
### Folders
* lang
Translations and alert messages.
The language file that is loaded depends on the value of `LANGUAGE` in `settings.php`.
Translate the values (but not the keys) in `en_us.php` into other languages and save in appropriately named files to add languages.
* lib
A good place to put helper functions that you don't want "in the way".
* pages
What it looks like. If you go into `pages.php` and define a page with the name `foo`, there should be a `foo.php` in here.
The app checks before loading, so it will give a friendly 404 error if it doesn't find your page.
Woe to you if you delete `home.php` or `404.php`, as those are assumed to exist for fallback behavior.
* static
CSS, JS, fonts, images...
* vendor
If you don't know what this is about, or you don't have it, you need to read up on Composer. Right now.
### Files
* settings.template.php
App configuration. Copy to `settings.php` and customize. Documented with inline comments.
* required.php
The "duct tape" that holds the app together. Use `require_once __DIR__."/required.php"` at the top of every file.
It loads Composer dependencies, app settings, language data, and creates `$database` for accessing the database.
It also has some utility functions, including `dieifnotloggedin()`, `is_empty($var)`, and `lang('key')`.
Read through it to see what those functions do.
* action.php
A good place to post forms to. By default it only handles logging out, but is easily expanded.
* api.php
Similar to action.php, but designed for user/pass authenticated JSON responses.
* index.php
Login page and handler. Hands off to `app.php` after authenticating user.
It includes 2fa support, by the way.
* app.php
Main app page after login. Handles loading app pages and 404 errors.
Redirects to `index.php` if the user is not logged in.
Note: to show an alert message (success, error, whatever), set the GET argument `msg` to a message ID from `lang/messages.php`.
* pages.php
Define app pages/screens in an array. The page ID/array key is assumed to exist as a file `pages/{key}.php`, or it will 404.
__Optional parameters:__
`'navbar' => true` will show the page as a button in the app menu bar.
`'icon' => '...'` will show an icon from FontAwesome in the menu bar. Setting this to `home` will show the icon `fa-home`.
`'styles' => ["file.css"]` will inject the listed CSS files into the page header (after all other CSS, like Bootstrap).
`'scripts' => ["file.js"]` will inject the listed JavaScript files into the page footer (after jQuery and other builtin scripts).
* lang/messages.php
Array of alert messages.
`"string"` is the language string for the message, `"type"` is one of `success`, `info`, `warning`, or `danger` (i.e. Bootstrap alert classes).
Changing the type changes the icon and color of the alert box.
*lang/en_us.php
Language data for US English.
*lib/login.php
Functions for logging in users and stuff like that. Most functions transparently makes requests to the AccountHub API and return the results.
*lib/userinfo.php
Functions for getting user data, like real names and managed employees.
*static/css/app.css
Custom styles for the app. See the comments inside for instructions on theming the app.
A public website builder.

View File

@ -108,7 +108,7 @@ END;
// For mobile app
echo "<script nonce=\"$SECURE_NONCE\">var navbar_breakpoint = \"$navbar_breakpoint\";</script>"
?>
<nav class="navbar navbar-expand-<?php echo $navbar_breakpoint; ?> navbar-dark bg-blue fixed-top">
<nav class="navbar navbar-expand-<?php echo $navbar_breakpoint; ?> navbar-light bg-light-blue fixed-top">
<button class="navbar-toggler my-0 py-0" type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-controls="navbar-collapse" aria-expanded="false" aria-label="Toggle navigation">
<!--<i class="fas fa-bars"></i>-->
<span class="navbar-toggler-icon"></span>

28
composer.lock generated
View File

@ -4,21 +4,21 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "577921e9d14ff39571692f88476151ee",
"content-hash": "1c8b61c5d506ae016285b99b20040cf0",
"hash": "5c7439c6e041764f2f6b0270a95ab3ae",
"content-hash": "e4e700119f47d2f68b0ed82abaf8c5c6",
"packages": [
{
"name": "catfan/medoo",
"version": "v1.5.3",
"version": "v1.5.6",
"source": {
"type": "git",
"url": "https://github.com/catfan/Medoo.git",
"reference": "1aa25a4001e0cfb739ba2996f00f4a3d2a7fdf07"
"reference": "f77a93f72864e892c99d1033b8733e5da8fb0b3b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/catfan/Medoo/zipball/1aa25a4001e0cfb739ba2996f00f4a3d2a7fdf07",
"reference": "1aa25a4001e0cfb739ba2996f00f4a3d2a7fdf07",
"url": "https://api.github.com/repos/catfan/Medoo/zipball/f77a93f72864e892c99d1033b8733e5da8fb0b3b",
"reference": "f77a93f72864e892c99d1033b8733e5da8fb0b3b",
"shasum": ""
},
"require": {
@ -64,20 +64,20 @@
"sql",
"sqlite"
],
"time": "2017-12-25 17:02:41"
"time": "2018-03-26 17:54:24"
},
{
"name": "guzzlehttp/guzzle",
"version": "6.3.0",
"version": "6.3.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699"
"reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699",
"reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/68d0ea14d5a3f42a20e87632a5f84931e2709c90",
"reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90",
"shasum": ""
},
"require": {
@ -87,7 +87,7 @@
},
"require-dev": {
"ext-curl": "*",
"phpunit/phpunit": "^4.0 || ^5.0",
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4",
"psr/log": "^1.0"
},
"suggest": {
@ -96,7 +96,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.2-dev"
"dev-master": "6.3-dev"
}
},
"autoload": {
@ -129,7 +129,7 @@
"rest",
"web service"
],
"time": "2017-06-22 18:50:49"
"time": "2018-03-26 16:33:04"
},
{
"name": "guzzlehttp/promises",

BIN
database.mwb Normal file

Binary file not shown.

View File

@ -3,7 +3,7 @@
<type>org.netbeans.modules.php.project</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/php-project/1">
<name>BusinessAppTemplate</name>
<name>SiteWriter</name>
</data>
</configuration>
</project>

View File

@ -11,14 +11,14 @@ define("DEBUG", false);
// Database connection settings
// See http://medoo.in/api/new for info
define("DB_TYPE", "mysql");
define("DB_NAME", "app");
define("DB_NAME", "sitewriter");
define("DB_SERVER", "localhost");
define("DB_USER", "app");
define("DB_USER", "sitewriter");
define("DB_PASS", "");
define("DB_CHARSET", "utf8");
// Name of the app.
define("SITE_TITLE", "Web App Template");
define("SITE_TITLE", "SiteWriter");
// URL of the AccountHub API endpoint

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -1,6 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
@ -11,38 +9,36 @@
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
viewBox="0 0 512.00001 512.00001"
viewBox="0 0 511.99999 511.99999"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="logo.svg"
inkscape:export-filename="/home/skylar/Documents/Projects/Sources/WebAppTemplate/static/img/logo.png"
inkscape:export-filename="/home/skylar/Documents/Projects/Assets/SiteWriter/logo_512.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs
id="defs4">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="-493.3276 : 245.89848 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="464.45088 : 245.89848 : 1"
inkscape:persp3d-origin="-14.438371 : 160.56515 : 1"
id="perspective4236" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="0.49497475"
inkscape:cx="-135.9681"
inkscape:cy="352.66131"
inkscape:document-units="px"
inkscape:current-layer="layer1"
inkscape:window-width="1440"
inkscape:window-height="842"
id="namedview14"
showgrid="false"
units="px" />
inkscape:zoom="0.65186406"
inkscape:cx="-263.8452"
inkscape:cy="164.6375"
inkscape:window-x="1024"
inkscape:window-y="156"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<defs
id="defs4" />
<metadata
id="metadata7">
<rdf:RDF>
@ -51,28 +47,58 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:20;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.74509804"
id="rect4726-3"
width="512"
height="512"
x="0"
y="0"
rx="50"
ry="50" />
<path
id="rect4149"
d="m 151.84815,105.55999 c 0,0 208.08221,4e-4 208.08221,4e-4 8.87969,2e-5 17.47765,5.42434 19.32647,12.34724 0,0 68.50606,256.52161 68.50606,256.52161 4.65095,17.41553 -3.3789,32.03897 -18.20921,32.01073 0,0 -347.207046,-0.66126 -347.207046,-0.66126 -14.762494,-0.0281 -22.747362,-14.64569 -18.112131,-32.00219 0,0 68.337707,-255.88862 68.337707,-255.88862 1.84592,-6.91197 10.42061,-12.32792 19.27594,-12.32791 0,0 0,0 0,0"
style="opacity:1;fill:#03a9f4;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-540.36216)">
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:20;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.74509804"
id="rect4726"
width="512"
height="512"
x="0"
y="540.36218"
rx="50"
ry="50" />
<path
id="path4348"
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9.87128067;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 132.93564,682.51771 213.96788,-43.14304 0,313.97496 -213.96788,-37.9643 z m 213.96788,-43.14304 0,313.97496 32.16084,-45.18373 0,-217.44396 z m -213.96788,43.14304 213.96788,-43.14304 32.16084,51.34727 -167.21823,22.47784 z m 78.91049,30.68207 167.21823,-22.47784 0,217.44396 -167.21823,-19.77968 z m -78.91049,-30.68207 0,232.86762 78.91049,-26.99911 0,-175.18644 z m 0,232.86762 213.96788,37.9643 32.16084,-45.18373 -167.21823,-19.77968 z"
inkscape:connector-curvature="0" />
</g>
transform="matrix(5.9992735,-11.249026,11.249026,5.999273,-1609.4403,-1737.4273)"
id="g2030"
style="display:inline;stroke-width:1.91200209" />
<rect
ry="11.220414"
rx="11.220414"
y="237.21503"
x="150.21944"
height="18.934093"
width="211.56111"
id="rect5279"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5281"
width="245.31049"
height="21.954561"
x="133.34476"
y="287.24475"
rx="13.010355"
ry="13.010355" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5277"
width="188.55019"
height="16.874683"
x="161.7249"
y="189.24477"
rx="10"
ry="10" />
<path
style="opacity:1;fill:#3f51b5;fill-opacity:1;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 413.40083,100.4255 c -6.25994,-3.614167 -12.82305,-3.883777 -14.71576,-0.605517 L 267.15452,327.63761 c -0.1189,0.20593 -0.21483,0.42009 -0.29174,0.64289 -2.61136,2.10628 3.51508,29.26281 7.21558,31.3993 3.70042,2.13644 30.28348,-6.13458 30.80284,-9.44936 0.1545,-0.17801 0.28948,-0.3696 0.40838,-0.57554 L 436.82014,121.83727 c 1.8927,-3.27826 -1.62235,-8.82729 -7.88226,-12.44145 l -15.53706,-8.97032 z"
id="rect4549"
inkscape:connector-curvature="0" />
</svg>

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB