mirror of
https://github.com/tim-krehan/shopping-list.git
synced 2024-11-23 22:30:41 +01:00
Merge branch 'Add-Parsedown-Support' into 'develop'
Add parsedown support See merge request bluekay/shopping-list!1
This commit is contained in:
commit
aed65dc228
23 changed files with 2179 additions and 34 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
config/config.php
|
|
@ -2,7 +2,7 @@
|
|||
#Rewrite Engine anschalten
|
||||
RewriteEngine on
|
||||
|
||||
#normale Seiten ohne Unterverzeichnis (Liste, Rezeptliste)
|
||||
#normale Seiten ohne Unterverzeichnis (Liste, Rezeptliste, neues Rezept)
|
||||
RewriteRule ^([a-zA-Z0-9-]+)$ ?site=$1
|
||||
|
||||
#Error Seite
|
||||
|
@ -11,6 +11,9 @@
|
|||
#Rezept Seite
|
||||
RewriteRule ^recipe/([0-9]+)$ ?site=recipe&number=$1
|
||||
|
||||
#Rezepteditieren
|
||||
RewriteRule ^edit-recipe/([0-9]+)$ ?site=edit-recipe&number=$1
|
||||
|
||||
#Loginseite
|
||||
RewriteRule ^login/url=(.+)$ ?site=login&refurl=$1 [L]
|
||||
|
||||
|
|
42
README.md
42
README.md
|
@ -1,24 +1,40 @@
|
|||
# Voraussetzungen
|
||||
## Apache Module:
|
||||
# Requirements
|
||||
|
||||
## Apache Modules:
|
||||
* mod-rewrite
|
||||
|
||||
## Packages
|
||||
* php7
|
||||
* php7-mysql
|
||||
|
||||
# Beispiel Apache Config
|
||||
# Sample Apache Config
|
||||
```apache
|
||||
<VirtualHost *:80>
|
||||
ServerAdmin webmaster@localhost
|
||||
ServerAdmin webmaster@localhost
|
||||
ServerName shopping.example.com
|
||||
|
||||
DocumentRoot /var/www/html/shopping-list
|
||||
<Directory /var/www/html/shopping-list>
|
||||
AllowOverride All
|
||||
</Directory>
|
||||
DocumentRoot /var/www/html/shopping-list
|
||||
<Directory /var/www/html/shopping-list>
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||||
AllowOverride All
|
||||
</Directory>
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||||
</VirtualHost>
|
||||
```
|
||||
# Installation
|
||||
Um die Installation zu starten folgende Seite aufrufen:
|
||||
[HOSTNAME]/install/install.php
|
||||
|
||||
# Installation Instructions
|
||||
|
||||
* create a new mysql-database. Please use `utf8_general_ci` as your collation.
|
||||
* create a new mysql-user that can edit the database.
|
||||
|
||||
* Download the latest release. You can download it [here (tar.gz)](https://gitlab.com/bluekay/shopping-list/-/archive/master/shopping-list-master.tar.gz) or [here (zip)](https://gitlab.com/bluekay/shopping-list/-/archive/master/shopping-list-master.zip)
|
||||
* unpack the archive and copy its content to `/var/www/html/shopping-list`
|
||||
* grant your web server permission to write the config-file
|
||||
```bash
|
||||
chown www-data:www-data /var/www/html/shopping-list/config/config.php
|
||||
```
|
||||
* visit the address of your web browser, you will be redirected to the installation page
|
||||
* insert your database information and create your login user
|
||||
* thats it, you are good to go. You may login now!
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
<link rel="stylesheet" href="/style/recipe.css">
|
||||
<link rel="stylesheet" href="/style/parsedown.css">
|
||||
<script src="/bin/recipe.js" charset="utf-8"></script>
|
||||
<?php
|
||||
include $_SESSION["docroot"].'/php/classes.recipe.php';
|
||||
include $_SESSION["docroot"].'/php/classes.parsedown.php';
|
||||
$book = new cookbook;
|
||||
$book->getRecipe($_GET["number"]);
|
||||
$recipe = $book->sites[0];
|
||||
|
||||
echo "<h1 data-recipeid='$recipe->ID'>$recipe->Name</h1>";
|
||||
echo "<h1 id='recipeHeader' data-recipeid='$recipe->ID'>$recipe->Name</h1>";
|
||||
echo "<h2>Zutaten</h2>";
|
||||
echo "<button id='addToListButton' class='button'>Zur Einkaufsliste hinzufügen</button>";
|
||||
echo "<div id='ingredients'>";
|
||||
|
@ -17,9 +19,10 @@
|
|||
}
|
||||
echo "</div>";
|
||||
echo "<h2>Zubereitung</h2>";
|
||||
foreach(explode("\r\n", $recipe->Beschreibung) as $paragraph){
|
||||
echo "<p>$paragraph</p>";
|
||||
}
|
||||
echo "<section class='parsedown-section'>";
|
||||
$parsedown = new Parsedown;
|
||||
echo $parsedown->text($recipe->Beschreibung);
|
||||
echo "</section>";
|
||||
?>
|
||||
<div id="editingMenu"></div>
|
||||
<div id="editingMenuOpen">
|
||||
|
|
BIN
fonts/Roboto-Black.ttf
Normal file
BIN
fonts/Roboto-Black.ttf
Normal file
Binary file not shown.
BIN
fonts/Roboto-BlackItalic.ttf
Normal file
BIN
fonts/Roboto-BlackItalic.ttf
Normal file
Binary file not shown.
BIN
fonts/Roboto-Bold.ttf
Normal file
BIN
fonts/Roboto-Bold.ttf
Normal file
Binary file not shown.
BIN
fonts/Roboto-BoldItalic.ttf
Normal file
BIN
fonts/Roboto-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
fonts/Roboto-Italic.ttf
Normal file
BIN
fonts/Roboto-Italic.ttf
Normal file
Binary file not shown.
BIN
fonts/Roboto-Light.ttf
Normal file
BIN
fonts/Roboto-Light.ttf
Normal file
Binary file not shown.
BIN
fonts/Roboto-LightItalic.ttf
Normal file
BIN
fonts/Roboto-LightItalic.ttf
Normal file
Binary file not shown.
BIN
fonts/Roboto-Medium.ttf
Normal file
BIN
fonts/Roboto-Medium.ttf
Normal file
Binary file not shown.
BIN
fonts/Roboto-MediumItalic.ttf
Normal file
BIN
fonts/Roboto-MediumItalic.ttf
Normal file
Binary file not shown.
BIN
fonts/Roboto-Regular.ttf
Normal file
BIN
fonts/Roboto-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/Roboto-Thin.ttf
Normal file
BIN
fonts/Roboto-Thin.ttf
Normal file
Binary file not shown.
BIN
fonts/Roboto-ThinItalic.ttf
Normal file
BIN
fonts/Roboto-ThinItalic.ttf
Normal file
Binary file not shown.
1980
php/classes.parsedown.php
Normal file
1980
php/classes.parsedown.php
Normal file
File diff suppressed because it is too large
Load diff
|
@ -120,7 +120,7 @@
|
|||
}
|
||||
else{
|
||||
$mysqli->query("INSERT INTO `Zutat` (`Name`) VALUES ('".ucwords($Zutat["Name"])."')");
|
||||
$ingredientID = $mysqli->insert_id;
|
||||
$ZutatID = $mysqli->insert_id;
|
||||
}
|
||||
$mysqli->query("INSERT INTO `RezeptZutat` (`Rezept`,`Menge`,`Einheit`,`Zutat`) VALUES ('{$ID}','{$Zutat["Amount"]}','{$Zutat["Unit"]}','{$ZutatID}');");
|
||||
}
|
||||
|
|
|
@ -21,7 +21,13 @@
|
|||
margin-bottom: .1em;
|
||||
color: #ffffff;
|
||||
align-items: center;
|
||||
border-radius: 5px;
|
||||
border-left: 3px solid #4CAF50;
|
||||
border-bottom-right-radius: 5px;
|
||||
border-top-right-radius: 5px;
|
||||
}
|
||||
|
||||
.list_row.new {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
.list_row_count {
|
||||
|
@ -78,6 +84,15 @@
|
|||
.checked {
|
||||
background-color: #4CAF50;
|
||||
}
|
||||
|
||||
.list_row.even.checked {
|
||||
border-left: 3px solid #565656;
|
||||
}
|
||||
|
||||
.list_row.odd.checked {
|
||||
border-left: 3px solid #888;
|
||||
}
|
||||
|
||||
#saved, #error {
|
||||
pointer-events: none;
|
||||
position: fixed;
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
margin-bottom: .1em;
|
||||
}
|
||||
.ingredientAmount {
|
||||
width: 2em;
|
||||
width: 3em;
|
||||
font-size: 16px;
|
||||
padding: .2em;
|
||||
border: 1px solid #ddd;
|
||||
|
|
|
@ -1,19 +1,39 @@
|
|||
@import url('https://fonts.googleapis.com/css?family=Open+Sans:400,800');
|
||||
@font-face {
|
||||
font-family: Roboto;
|
||||
src: url("/fonts/Roboto-Regular.ttf");
|
||||
}
|
||||
|
||||
html {
|
||||
transition: .6s;
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
background-color: #c3c3c3;
|
||||
font-family: 'Roboto';
|
||||
background-color: #ccc;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 3em;
|
||||
margin-top: .5em;
|
||||
padding-bottom: .5em;
|
||||
border-bottom: 1px solid grey;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 2em;
|
||||
text-align: left;
|
||||
margin-top: .5em;
|
||||
padding-bottom: .5em;
|
||||
border-bottom: 1px solid grey;
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.even {
|
||||
background-color: #000;
|
||||
background-color: #565656;
|
||||
}
|
||||
|
||||
.odd {
|
||||
background-color: #5f5f5f;
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
.search {
|
||||
background-image: url('/pic/search.png');
|
||||
background-position: 10px 12px;
|
||||
|
@ -22,6 +42,7 @@ h1 {
|
|||
padding: 12px 20px 12px 40px;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.button {
|
||||
-webkit-appearance: none;
|
||||
border: none;
|
||||
|
@ -33,7 +54,8 @@ h1 {
|
|||
background-color: #4CAF50;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.hover:hover {
|
||||
background-color: #4CAF50;
|
||||
cursor: pointer;
|
||||
background-color: #4CAF50;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
|
100
style/parsedown.css
Normal file
100
style/parsedown.css
Normal file
|
@ -0,0 +1,100 @@
|
|||
.parsedown-section h1 {
|
||||
font-size: 1.3em;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid grey;
|
||||
color: #333;
|
||||
text-transform: uppercase;
|
||||
max-width: 75%;
|
||||
}
|
||||
|
||||
.parsedown-section h2 {
|
||||
font-size: 1.2em;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid grey;
|
||||
color: #333;
|
||||
text-transform: uppercase;
|
||||
max-width: 70%;
|
||||
}
|
||||
|
||||
.parsedown-section h3 {
|
||||
font-size: 1.1em;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid grey;
|
||||
color: #444;
|
||||
text-transform: capitalize;
|
||||
max-width: 60%;
|
||||
}
|
||||
|
||||
.parsedown-section h4 {
|
||||
font-size: 1em;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid grey;
|
||||
color: #444;
|
||||
text-transform: capitalize;
|
||||
max-width: 60%;
|
||||
}
|
||||
|
||||
.parsedown-section h5 {
|
||||
font-size: .9em;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid grey;
|
||||
color: #555;
|
||||
text-transform: lowercase;
|
||||
font-weight: normal;
|
||||
max-width: 55%;
|
||||
}
|
||||
|
||||
.parsedown-section h6 {
|
||||
font-size: .8em;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid grey;
|
||||
color: #555;
|
||||
text-transform: lowercase;
|
||||
font-weight: normal;
|
||||
max-width: 50%;
|
||||
}
|
||||
|
||||
.parsedown-section table {
|
||||
border-collapse: collapse;
|
||||
border: 1px solid black;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
.parsedown-section th {
|
||||
background-color: #4CAF50;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.parsedown-section td, th {
|
||||
/* border: 1px solid black; */
|
||||
padding: .2em .5em;
|
||||
}
|
||||
|
||||
.parsedown-section tr:nth-child(even) {
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
.parsedown-section button {
|
||||
display: block;
|
||||
border: 1px solid #777777;
|
||||
padding: .5em 1em;
|
||||
margin: 1em .25em;
|
||||
}
|
||||
|
||||
.parsedown-section pre {
|
||||
max-height: calc(50vh - 9em);
|
||||
background: #f4f4f4;
|
||||
border: 1px solid #ddd;
|
||||
border-left: 3px solid #a0c391;
|
||||
color: #666;
|
||||
page-break-inside: avoid;
|
||||
font-family: monospace;
|
||||
font-size: 15px;
|
||||
line-height: 1.6;
|
||||
margin-bottom: 1.6em;
|
||||
max-width: 100%;
|
||||
overflow: auto;
|
||||
padding: 1em 1.5em;
|
||||
display: block;
|
||||
word-wrap: break-word;
|
||||
}
|
|
@ -11,19 +11,24 @@
|
|||
width: 100%;
|
||||
}
|
||||
.ingredients_row {
|
||||
width: 95%;
|
||||
max-width: 30em;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-start;
|
||||
border-radius: 5px;
|
||||
min-height: 24px;
|
||||
margin-bottom: .1em;
|
||||
align-items: center;
|
||||
border-left: 3px solid #4CAF50;
|
||||
border-bottom-right-radius: 5px;
|
||||
border-top-right-radius: 5px;
|
||||
max-width: 30em;
|
||||
}
|
||||
.ingredients_row_amount {
|
||||
text-indent: 1em;
|
||||
width: auto;
|
||||
min-width: 2em;
|
||||
max-width: 3em;
|
||||
text-align: right;
|
||||
}
|
||||
.ingredients_row_unit {
|
||||
width: 4em;
|
||||
text-indent: .5em;
|
||||
text-align: left;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue