Add read-only online shopping site (issue #8)
bovenliggende
9fc5912d10
commit
c4c387cf62
Binair bestand niet weergegeven.
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
require_once __DIR__ . "/../required.php";
|
||||
|
||||
define("NICKELBOX", true);
|
||||
|
||||
require_once __DIR__ . "/lib/item.php";
|
||||
|
||||
$config = $database->select("config", ['key', 'value']);
|
||||
$settings = [
|
||||
"sitename" => "Shop",
|
||||
"theme" => "default",
|
||||
];
|
||||
foreach ($config as $c) {
|
||||
$settings[$c['key']] = $c['value'];
|
||||
}
|
||||
|
||||
$page = "home";
|
||||
|
||||
if (isset($_GET['page'])) {
|
||||
switch ($_GET['page']) {
|
||||
case "browse":
|
||||
if (isset($_GET['cat']) && $binstack->has('categories', ['catid' => $_GET['cat']])) {
|
||||
$page = "browse";
|
||||
} else {
|
||||
$page = "404";
|
||||
}
|
||||
break;
|
||||
case "item":
|
||||
if (isset($_GET['id']) && $binstack->has('items', ['itemid' => $_GET['id']])) {
|
||||
$page = "item";
|
||||
} else {
|
||||
$page = "404";
|
||||
}
|
||||
break;
|
||||
case "home":
|
||||
default:
|
||||
$page = "home";
|
||||
}
|
||||
}
|
||||
require __DIR__ . "/parts/head.php";
|
||||
require __DIR__ . "/parts/nav.php";
|
||||
require __DIR__ . "/parts/$page.php";
|
||||
require __DIR__ . "/parts/footer.php";
|
@ -0,0 +1,112 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
require_once __DIR__ . "/../../required.php";
|
||||
|
||||
class Item {
|
||||
|
||||
private $itemid = null;
|
||||
private $itemdata = [];
|
||||
|
||||
function __construct($itemid) {
|
||||
global $binstack;
|
||||
$this->itemdata = $binstack->get('items', ['itemid', 'catid', 'name', 'text1', 'qty', 'want', 'cost', 'price'], ['itemid' => $itemid]);
|
||||
$this->itemid = $itemid;
|
||||
}
|
||||
|
||||
function getId() {
|
||||
return $this->itemid;
|
||||
}
|
||||
|
||||
function getPrice($customer = null) {
|
||||
global $database;
|
||||
$binprice = $this->itemdata['price'];
|
||||
if (!is_null($customer)) {
|
||||
if ($database->has('customer_pricing', ['AND' => ['itemid' => $this->itemid, 'customerid' => $customer]])) {
|
||||
return $database->get('customer_pricing', 'price', ['AND' => ['itemid' => $this->itemid, 'customerid' => $customer]]);
|
||||
}
|
||||
}
|
||||
return $binprice;
|
||||
}
|
||||
|
||||
function getName() {
|
||||
return $this->itemdata['name'];
|
||||
}
|
||||
|
||||
function getDescription() {
|
||||
return $this->itemdata['text1'];
|
||||
}
|
||||
|
||||
function getQty() {
|
||||
return $this->itemdata['qty'];
|
||||
}
|
||||
|
||||
function getWant() {
|
||||
return $this->itemdata['want'];
|
||||
}
|
||||
|
||||
function getCategoryName() {
|
||||
global $binstack;
|
||||
return $binstack->get('items', ['[>]categories' => 'catid'], 'catname', ['itemid' => $this->itemid]);
|
||||
}
|
||||
|
||||
function getCategoryId() {
|
||||
return $this->itemdata['catid'];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class RenderItem {
|
||||
|
||||
static function card(Item $item) {
|
||||
$id = $item->getId();
|
||||
$name = $item->getName();
|
||||
$catid = $item->getCategoryId();
|
||||
$catname = $item->getCategoryName();
|
||||
$price = $item->getPrice();
|
||||
$html = <<<END
|
||||
<div class="card m-2">
|
||||
<div class="card-body text-center">
|
||||
<a href="./?page=item&id=$id" class="font-weight-bold">$name</a><br />
|
||||
<span>$$price</span>
|
||||
</div>
|
||||
</div>
|
||||
END;
|
||||
return $html;
|
||||
}
|
||||
|
||||
static function line(Item $item) {
|
||||
$id = $item->getId();
|
||||
$name = $item->getName();
|
||||
$catid = $item->getCategoryId();
|
||||
$catname = $item->getCategoryName();
|
||||
$price = $item->getPrice();
|
||||
$html = <<<END
|
||||
<div class="list-group-item d-flex flex-wrap">
|
||||
<div>
|
||||
<h4><a href="./?page=item&id=$id">$name</a></h4>
|
||||
<span>$$price</span>
|
||||
</div>
|
||||
<div class="ml-auto">
|
||||
<form action="./action.php" method="POST">
|
||||
<div class="input-group">
|
||||
<input type="number" name="qty" class="form-control mb-2" placeholder="Quantity" value="1" />
|
||||
<div class="input-group-addon">
|
||||
<button type="submit" class="btn btn-primary"><i class="fas fa-cart-plus"></i> Add</button>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="item" value="<?php echo $id; ?>" />
|
||||
<input type="hidden" name="action" value="addtocart" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
END;
|
||||
return $html;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
if (!defined('NICKELBOX')) {
|
||||
die("Direct access denied.");
|
||||
}
|
||||
|
||||
?>
|
||||
<div class="text-center">
|
||||
<h1 class="display-1">404</h1>
|
||||
<p>The requested page could not be found.</p>
|
||||
</div>
|
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
if (!defined('NICKELBOX')) {
|
||||
die("Direct access denied.");
|
||||
}
|
||||
$catid = $_GET['cat'];
|
||||
$cat = $binstack->get('categories', 'catname', ['catid' => $catid]);
|
||||
|
||||
$dbitems = $binstack->select('items', 'itemid', ['AND' => ['price[>]' => 0, 'catid' => $catid], 'LIMIT' => 20]);
|
||||
|
||||
$items = [];
|
||||
|
||||
foreach ($dbitems as $i) {
|
||||
$items[] = new Item($i);
|
||||
}
|
||||
?>
|
||||
<div class="container mt-4">
|
||||
<h1 class="display-4"><?php echo $cat; ?></h1>
|
||||
|
||||
<div class="list-group list-group-flush">
|
||||
<?php
|
||||
foreach ($items as $i) {
|
||||
echo RenderItem::line($i);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
if (!defined('NICKELBOX')) {
|
||||
die("Direct access denied.");
|
||||
}
|
||||
?>
|
||||
<script src="static/jquery-3.3.1.min.js"></script>
|
||||
<script src="static/bootstrap.min.js"></script>
|
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
if (!defined('NICKELBOX')) {
|
||||
die("Direct access denied.");
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title><?php echo $settings['sitename']; ?></title>
|
||||
<link rel="stylesheet" href="themes/<?php echo $settings['theme']; ?>/bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="static/fa-svg-with-js.css" />
|
||||
<script nonce="<?php echo $SECURE_NONCE; ?>">
|
||||
FontAwesomeConfig = {autoAddCss: false};
|
||||
</script>
|
||||
<script defer src="static/fontawesome-all.min.js"></script>
|
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
if (!defined('NICKELBOX')) {
|
||||
die("Direct access denied.");
|
||||
}
|
||||
|
||||
$dbitems = $binstack->select('items', 'itemid', ['AND' => ['price[>]' => 0], 'LIMIT' => 20]);
|
||||
|
||||
$items = [];
|
||||
|
||||
foreach ($dbitems as $i) {
|
||||
$items[] = new Item($i);
|
||||
}
|
||||
?>
|
||||
<div class="container mt-4">
|
||||
<div class="row">
|
||||
<div class="col-md-4 col-xl-3 d-none d-md-block">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Categories</h5>
|
||||
<ul class="list-group list-group-flush">
|
||||
<?php
|
||||
foreach ($categories as $c) {
|
||||
?>
|
||||
<li class="list-group-item">
|
||||
<a href="./?page=browse&cat=<?php echo $c['id']; ?>">
|
||||
<?php echo $c['name']; ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-8 col-xl-9 d-flex flex-wrap">
|
||||
<?php
|
||||
foreach ($items as $i) {
|
||||
echo RenderItem::card($i);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,58 @@
|
||||
<?php
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
if (!defined('NICKELBOX')) {
|
||||
die("Direct access denied.");
|
||||
}
|
||||
|
||||
$item = new Item($_GET['id']);
|
||||
?>
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<!-- Item image(s) go here -->
|
||||
</div>
|
||||
|
||||
<div class="col-md-8">
|
||||
<div class="row mt-4">
|
||||
<div class="col-sm-7 jumbotron py-4">
|
||||
<h2><?php echo $item->getName(); ?></h2>
|
||||
<p>in <a href="./?page=browse&cat=<?php echo $item->getCategoryId(); ?>"><?php echo $item->getCategoryName(); ?></a></p>
|
||||
<h3>$<?php echo $item->getPrice(); ?></h3>
|
||||
</div>
|
||||
<div class="col-sm-5">
|
||||
<form action="./action.php" method="POST">
|
||||
<input type="number" name="qty" class="form-control mb-2" placeholder="Quantity" value="1" />
|
||||
<button type="submit" class="btn btn-block btn-primary"><i class="fas fa-cart-plus"></i> Add to Cart</button>
|
||||
<input type="hidden" name="item" value="<?php echo $item->getId(); ?>" />
|
||||
<input type="hidden" name="action" value="addtocart" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-4 mt-sm-0">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Description</h5>
|
||||
|
||||
<p>
|
||||
<?php
|
||||
$desc = $item->getDescription();
|
||||
if (empty($desc)) {
|
||||
echo "No item information found.";
|
||||
} else {
|
||||
echo htmlspecialchars($desc);
|
||||
}
|
||||
?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,94 @@
|
||||
<?php
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
if (!defined('NICKELBOX')) {
|
||||
die("Direct access denied.");
|
||||
}
|
||||
|
||||
$cats = $binstack->select('categories', ['catid (id)', 'catname (name)']);
|
||||
$categories = [];
|
||||
foreach ($cats as $c) {
|
||||
if ($binstack->has('items', ['AND' => ['catid' => $c['id'], 'price[>]' => 0]])) {
|
||||
$categories[] = $c;
|
||||
}
|
||||
}
|
||||
?>
|
||||
<nav class="navbar navbar-expand navbar-dark bg-dark">
|
||||
<a class="navbar-brand" href="./"><?php echo $settings['sitename']; ?></a>
|
||||
<div class="collapse navbar-collapse">
|
||||
<ul class="navbar-nav d-none d-md-inline">
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="categorydropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
Categories
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="categorydropdown">
|
||||
<?php
|
||||
foreach ($categories as $c) {
|
||||
?>
|
||||
<a class="dropdown-item" href="./?page=browse&cat=<?php echo $c['id']; ?>"><?php echo $c['name']; ?></a>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<form class="form-inline ml-3">
|
||||
<div class="input-group">
|
||||
<input class="form-control" type="search" placeholder="Search" aria-label="Search">
|
||||
<div class="input-group-addon">
|
||||
<button class="btn btn-success" type="submit"><i class="fas fa-search"></i> <span class="d-none d-md-inline">Search</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="d-none d-md-inline ml-auto">
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./?page=cart">
|
||||
<i class="fas fa-shopping-cart"></i> Cart
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./?page=account">
|
||||
<i class="fas fa-user-circle"></i> Account
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<nav class="navbar navbar-expand navbar-dark bg-dark d-md-none">
|
||||
<div class="collapse navbar-collapse justify-content-between">
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="categorydropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
Categories
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="categorydropdown">
|
||||
<?php
|
||||
foreach ($categories as $c) {
|
||||
?>
|
||||
<a class="dropdown-item" href="./?page=browse&cat=<?php echo $c['id']; ?>"><?php echo $c['name']; ?></a>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="navbar-nav ml-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./?page=cart">
|
||||
<i class="fas fa-shopping-cart"></i> Cart
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./?page=account">
|
||||
<i class="fas fa-user-circle"></i> Account
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
@ -0,0 +1,345 @@
|
||||
/*!
|
||||
* Font Awesome Free 5.0.13 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
*/
|
||||
svg:not(:root).svg-inline--fa {
|
||||
overflow: visible; }
|
||||
|
||||
.svg-inline--fa {
|
||||
display: inline-block;
|
||||
font-size: inherit;
|
||||
height: 1em;
|
||||
overflow: visible;
|
||||
vertical-align: -.125em; }
|
||||
.svg-inline--fa.fa-lg {
|
||||
vertical-align: -.225em; }
|
||||
.svg-inline--fa.fa-w-1 {
|
||||
width: 0.0625em; }
|
||||
.svg-inline--fa.fa-w-2 {
|
||||
width: 0.125em; }
|
||||
.svg-inline--fa.fa-w-3 {
|
||||
width: 0.1875em; }
|
||||
.svg-inline--fa.fa-w-4 {
|
||||
width: 0.25em; }
|
||||
.svg-inline--fa.fa-w-5 {
|
||||
width: 0.3125em; }
|
||||
.svg-inline--fa.fa-w-6 {
|
||||
width: 0.375em; }
|
||||
.svg-inline--fa.fa-w-7 {
|
||||
width: 0.4375em; }
|
||||
.svg-inline--fa.fa-w-8 {
|
||||
width: 0.5em; }
|
||||
.svg-inline--fa.fa-w-9 {
|
||||
width: 0.5625em; }
|
||||
.svg-inline--fa.fa-w-10 {
|
||||
width: 0.625em; }
|
||||
.svg-inline--fa.fa-w-11 {
|
||||
width: 0.6875em; }
|
||||
.svg-inline--fa.fa-w-12 {
|
||||
width: 0.75em; }
|
||||
.svg-inline--fa.fa-w-13 {
|
||||
width: 0.8125em; }
|
||||
.svg-inline--fa.fa-w-14 {
|
||||
width: 0.875em; }
|
||||
.svg-inline--fa.fa-w-15 {
|
||||
width: 0.9375em; }
|
||||
.svg-inline--fa.fa-w-16 {
|
||||
width: 1em; }
|
||||
.svg-inline--fa.fa-w-17 {
|
||||
width: 1.0625em; }
|
||||
.svg-inline--fa.fa-w-18 {
|
||||
width: 1.125em; }
|
||||
.svg-inline--fa.fa-w-19 {
|
||||
width: 1.1875em; }
|
||||
.svg-inline--fa.fa-w-20 {
|
||||
width: 1.25em; }
|
||||
.svg-inline--fa.fa-pull-left {
|
||||
margin-right: .3em;
|
||||
width: auto; }
|
||||
.svg-inline--fa.fa-pull-right {
|
||||
margin-left: .3em;
|
||||
width: auto; }
|
||||
.svg-inline--fa.fa-border {
|
||||
height: 1.5em; }
|
||||
.svg-inline--fa.fa-li {
|
||||
width: 2em; }
|
||||
.svg-inline--fa.fa-fw {
|
||||
width: 1.25em; }
|
||||
|
||||
.fa-layers svg.svg-inline--fa {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin: auto;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0; }
|
||||
|
||||
.fa-layers {
|
||||
display: inline-block;
|
||||
height: 1em;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
vertical-align: -.125em;
|
||||
width: 1em; }
|
||||
.fa-layers svg.svg-inline--fa {
|
||||
-webkit-transform-origin: center center;
|
||||
transform-origin: center center; }
|
||||
|
||||
.fa-layers-text, .fa-layers-counter {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
text-align: center; }
|
||||
|
||||
.fa-layers-text {
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
-webkit-transform: translate(-50%, -50%);
|
||||
transform: translate(-50%, -50%);
|
||||
-webkit-transform-origin: center center;
|
||||
transform-origin: center center; }
|
||||
|
||||
.fa-layers-counter {
|
||||
background-color: #ff253a;
|
||||
border-radius: 1em;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: #fff;
|
||||
height: 1.5em;
|
||||
line-height: 1;
|
||||
max-width: 5em;
|
||||
min-width: 1.5em;
|
||||
overflow: hidden;
|
||||
padding: .25em;
|
||||
right: 0;
|
||||
text-overflow: ellipsis;
|
||||
top: 0;
|
||||
-webkit-transform: scale(0.25);
|
||||
transform: scale(0.25);
|
||||
-webkit-transform-origin: top right;
|
||||
transform-origin: top right; }
|
||||
|
||||
.fa-layers-bottom-right {
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
top: auto;
|
||||
-webkit-transform: scale(0.25);
|
||||
transform: scale(0.25);
|
||||
-webkit-transform-origin: bottom right;
|
||||
transform-origin: bottom right; }
|
||||
|
||||
.fa-layers-bottom-left {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: auto;
|
||||
top: auto;
|
||||
-webkit-transform: scale(0.25);
|
||||
transform: scale(0.25);
|
||||
-webkit-transform-origin: bottom left;
|
||||
transform-origin: bottom left; }
|
||||
|
||||
.fa-layers-top-right {
|
||||
right: 0;
|
||||
top: 0;
|
||||
-webkit-transform: scale(0.25);
|
||||
transform: scale(0.25);
|
||||
-webkit-transform-origin: top right;
|
||||
transform-origin: top right; }
|
||||
|
||||
.fa-layers-top-left {
|
||||
left: 0;
|
||||
right: auto;
|
||||
top: 0;
|
||||
-webkit-transform: scale(0.25);
|
||||
transform: scale(0.25);
|
||||
-webkit-transform-origin: top left;
|
||||
transform-origin: top left; }
|
||||
|
||||
.fa-lg {
|
||||
font-size: 1.33333em;
|
||||
line-height: 0.75em;
|
||||
vertical-align: -.0667em; }
|
||||
|
||||
.fa-xs {
|
||||
font-size: .75em; }
|
||||
|
||||
.fa-sm {
|
||||
font-size: .875em; }
|
||||
|
||||
.fa-1x {
|
||||
font-size: 1em; }
|
||||
|
||||
.fa-2x {
|
||||
font-size: 2em; }
|
||||
|
||||
.fa-3x {
|
||||
font-size: 3em; }
|
||||
|
||||
.fa-4x {
|
||||
font-size: 4em; }
|
||||
|
||||
.fa-5x {
|
||||
font-size: 5em; }
|
||||
|
||||
.fa-6x {
|
||||
font-size: 6em; }
|
||||
|
||||
.fa-7x {
|
||||
font-size: 7em; }
|
||||
|
||||
.fa-8x {
|
||||
font-size: 8em; }
|
||||
|
||||
.fa-9x {
|
||||
font-size: 9em; }
|
||||
|
||||
.fa-10x {
|
||||
font-size: 10em; }
|
||||
|
||||
.fa-fw {
|
||||
text-align: center;
|
||||
width: 1.25em; }
|
||||
|
||||
.fa-ul {
|
||||
list-style-type: none;
|
||||
margin-left: 2.5em;
|
||||
padding-left: 0; }
|
||||
.fa-ul > li {
|
||||
position: relative; }
|
||||
|
||||
.fa-li {
|
||||
left: -2em;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
width: 2em;
|
||||
line-height: inherit; }
|
||||
|
||||
.fa-border {
|
||||
border: solid 0.08em #eee;
|
||||
border-radius: .1em;
|
||||
padding: .2em .25em .15em; }
|
||||
|
||||
.fa-pull-left {
|
||||
float: left; }
|
||||
|
||||
.fa-pull-right {
|
||||
float: right; }
|
||||
|
||||
.fa.fa-pull-left,
|
||||
.fas.fa-pull-left,
|
||||
.far.fa-pull-left,
|
||||
.fal.fa-pull-left,
|
||||
.fab.fa-pull-left {
|
||||
margin-right: .3em; }
|
||||
|
||||
.fa.fa-pull-right,
|
||||
.fas.fa-pull-right,
|
||||
.far.fa-pull-right,
|
||||
.fal.fa-pull-right,
|
||||
.fab.fa-pull-right {
|
||||
margin-left: .3em; }
|
||||
|
||||
.fa-spin {
|
||||
-webkit-animation: fa-spin 2s infinite linear;
|
||||
animation: fa-spin 2s infinite linear; }
|
||||
|
||||
.fa-pulse {
|
||||
-webkit-animation: fa-spin 1s infinite steps(8);
|
||||
animation: fa-spin 1s infinite steps(8); }
|
||||
|
||||
@-webkit-keyframes fa-spin {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg); } }
|
||||
|
||||
@keyframes fa-spin {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg); } }
|
||||
|
||||
.fa-rotate-90 {
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
|
||||
-webkit-transform: rotate(90deg);
|
||||
transform: rotate(90deg); }
|
||||
|
||||
.fa-rotate-180 {
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
|
||||
-webkit-transform: rotate(180deg);
|
||||
transform: rotate(180deg); }
|
||||
|
||||
.fa-rotate-270 {
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
|
||||
-webkit-transform: rotate(270deg);
|
||||
transform: rotate(270deg); }
|
||||
|
||||
.fa-flip-horizontal {
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
|
||||
-webkit-transform: scale(-1, 1);
|
||||
transform: scale(-1, 1); }
|
||||
|
||||
.fa-flip-vertical {
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
|
||||
-webkit-transform: scale(1, -1);
|
||||
transform: scale(1, -1); }
|
||||
|
||||
.fa-flip-horizontal.fa-flip-vertical {
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
|
||||
-webkit-transform: scale(-1, -1);
|
||||
transform: scale(-1, -1); }
|
||||
|
||||
:root .fa-rotate-90,
|
||||
:root .fa-rotate-180,
|
||||
:root .fa-rotate-270,
|
||||
:root .fa-flip-horizontal,
|
||||
:root .fa-flip-vertical {
|
||||
-webkit-filter: none;
|
||||
filter: none; }
|
||||
|
||||
.fa-stack {
|
||||
display: inline-block;
|
||||
height: 2em;
|
||||
position: relative;
|
||||
width: 2em; }
|
||||
|
||||
.fa-stack-1x,
|
||||
.fa-stack-2x {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin: auto;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0; }
|
||||
|
||||
.svg-inline--fa.fa-stack-1x {
|
||||
height: 1em;
|
||||
width: 1em; }
|
||||
|
||||
.svg-inline--fa.fa-stack-2x {
|
||||
height: 2em;
|
||||
width: 2em; }
|
||||
|
||||
.fa-inverse {
|
||||
color: #fff; }
|
||||
|
||||
.sr-only {
|
||||
border: 0;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
width: 1px; }
|
||||
|
||||
.sr-only-focusable:active, .sr-only-focusable:focus {
|
||||
clip: auto;
|
||||
height: auto;
|
||||
margin: 0;
|
||||
overflow: visible;
|
||||
position: static;
|
||||
width: auto; }
|
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
@ -0,0 +1,90 @@
|
||||
{
|
||||
"default": {
|
||||
"title": "Default",
|
||||
"description": "Standard Bootstrap theme"
|
||||
},
|
||||
"cerulean": {
|
||||
"title": "Cerulean",
|
||||
"description": "A calm blue sky"
|
||||
},
|
||||
"cosmo": {
|
||||
"title": "Cosmo",
|
||||
"description": "An ode to Metro"
|
||||
},
|
||||
"cyborg": {
|
||||
"title": "Cyborg",
|
||||
"description": "Jet black and electric blue"
|
||||
},
|
||||
"darkly": {
|
||||
"title": "Darkly",
|
||||
"description": "Flatly in night mode"
|
||||
},
|
||||
"flatly": {
|
||||
"title": "Flatly",
|
||||
"description": "Flat and modern"
|
||||
},
|
||||
"journal": {
|
||||
"title": "Journal",
|
||||
"description": "Crisp like a new sheet of paper"
|
||||
},
|
||||
"litera": {
|
||||
"title": "Litera",
|
||||
"description": "The medium is the message"
|
||||
},
|
||||
"lumen": {
|
||||
"title": "Lumen",
|
||||
"description": "Light and shadow"
|
||||
},
|
||||
"lux": {
|
||||
"title": "Lux",
|
||||
"description": "A touch of class"
|
||||
},
|
||||
"materia": {
|
||||
"title": "Materia",
|
||||
"description": "Material is the metaphor"
|
||||
},
|
||||
"minty": {
|
||||
"title": "Minty",
|
||||
"description": "A fresh feel"
|
||||
},
|
||||
"pulse": {
|
||||
"title": "Pulse",
|
||||
"description": "A trace of purple"
|
||||
},
|
||||
"sandstone": {
|
||||
"title": "Sandstone",
|
||||
"description": "A touch of warmth"
|
||||
},
|
||||
"simplex": {
|
||||
"title": "Simplex",
|
||||
"description": "Mini and minimalist"
|
||||
},
|
||||
"sketchy": {
|
||||
"title": "Sketchy",
|
||||
"description": "A hand-drawn look for mockups and mirth"
|
||||
},
|
||||
"slate": {
|
||||
"title": "Slate",
|
||||
"description": "Shades of gunmetal gray"
|
||||
},
|
||||
"solar": {
|
||||
"title": "Solar",
|
||||
"description": "A spin on Solarized"
|
||||
},
|
||||
"spacelab": {
|
||||
"title": "Spacelab",
|
||||
"description": "Silvery and sleek"
|
||||
},
|
||||
"superhero": {
|
||||
"title": "Superhero",
|
||||
"description": "The brave and the blue"
|
||||
},
|
||||
"united": {
|
||||
"title": "United",
|
||||
"description": "Ubuntu orange and unique font"
|
||||
},
|
||||
"yeti": {
|
||||
"title": "Yeti",
|
||||
"description": "A friendly foundation"
|
||||
}
|
||||
}
|
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Bestand-diff onderdrukt omdat een of meer regels te lang zijn
Laden…
Verwijs in nieuw issue