https://github.com/harmim/vut-iis-project
Informační systémy - Projekt
https://github.com/harmim/vut-iis-project
iis information-systems nette-framework php7 vut vut-fit
Last synced: 5 months ago
JSON representation
Informační systémy - Projekt
- Host: GitHub
- URL: https://github.com/harmim/vut-iis-project
- Owner: harmim
- License: mit
- Created: 2018-09-24T16:25:12.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-12-02T23:05:01.000Z (over 7 years ago)
- Last Synced: 2025-07-09T06:43:36.444Z (11 months ago)
- Topics: iis, information-systems, nette-framework, php7, vut, vut-fit
- Language: PHP
- Homepage:
- Size: 1.34 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.html
- License: LICENSE
Awesome Lists containing this project
README
@font-face {
font-family: octicons-anchor;
src: url(https://cdnjs.cloudflare.com/ajax/libs/octicons/4.4.0/font/octicons.woff) format('woff');
}
* {
box-sizing: border-box;
}
body {
width: 980px;
margin-right: auto;
margin-left: auto;
}
body .markdown-body {
padding: 45px;
border: 1px solid #ddd;
border-radius: 3px;
word-wrap: break-word;
}
pre {
font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
}
.markdown-body {
-webkit-text-size-adjust: 100%;
text-size-adjust: 100%;
color: #333;
font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 16px;
line-height: 1.6;
word-wrap: break-word;
}
.markdown-body a {
background-color: transparent;
}
.markdown-body a:active,
.markdown-body a:hover {
outline: 0;
}
.markdown-body strong {
font-weight: bold;
}
.markdown-body h1 {
font-size: 2em;
margin: 0.67em 0;
}
.markdown-body img {
border: 0;
}
.markdown-body hr {
box-sizing: content-box;
height: 0;
}
.markdown-body pre {
overflow: auto;
}
.markdown-body code,
.markdown-body kbd,
.markdown-body pre {
font-family: monospace, monospace;
font-size: 1em;
}
.markdown-body input {
color: inherit;
font: inherit;
margin: 0;
}
.markdown-body html input[disabled] {
cursor: default;
}
.markdown-body input {
line-height: normal;
}
.markdown-body input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
.markdown-body table {
border-collapse: collapse;
border-spacing: 0;
}
.markdown-body td,
.markdown-body th {
padding: 0;
}
.markdown-body input {
font: 13px / 1.4 Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}
.markdown-body a {
color: #4078c0;
text-decoration: none;
}
.markdown-body a:hover,
.markdown-body a:active {
text-decoration: underline;
}
.markdown-body hr {
height: 0;
margin: 15px 0;
overflow: hidden;
background: transparent;
border: 0;
border-bottom: 1px solid #ddd;
}
.markdown-body hr:before {
display: table;
content: "";
}
.markdown-body hr:after {
display: table;
clear: both;
content: "";
}
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
margin-top: 15px;
margin-bottom: 15px;
line-height: 1.1;
}
.markdown-body h1 {
font-size: 30px;
}
.markdown-body h2 {
font-size: 21px;
}
.markdown-body h3 {
font-size: 16px;
}
.markdown-body h4 {
font-size: 14px;
}
.markdown-body h5 {
font-size: 12px;
}
.markdown-body h6 {
font-size: 11px;
}
.markdown-body blockquote {
margin: 0;
}
.markdown-body ul,
.markdown-body ol {
padding: 0;
margin-top: 0;
margin-bottom: 0;
}
.markdown-body ol ol,
.markdown-body ul ol {
list-style-type: lower-roman;
}
.markdown-body ul ul ol,
.markdown-body ul ol ol,
.markdown-body ol ul ol,
.markdown-body ol ol ol {
list-style-type: lower-alpha;
}
.markdown-body dd {
margin-left: 0;
}
.markdown-body code {
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
font-size: 12px;
}
.markdown-body pre {
margin-top: 0;
margin-bottom: 0;
font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
}
.markdown-body .select::-ms-expand {
opacity: 0;
}
.markdown-body .octicon {
font: normal normal normal 16px/1 octicons-anchor;
display: inline-block;
text-decoration: none;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.markdown-body .octicon-link:before {
content: '\f05c';
}
.markdown-body:before {
display: table;
content: "";
}
.markdown-body:after {
display: table;
clear: both;
content: "";
}
.markdown-body>*:first-child {
margin-top: 0 !important;
}
.markdown-body>*:last-child {
margin-bottom: 0 !important;
}
.markdown-body a:not([href]) {
color: inherit;
text-decoration: none;
}
.markdown-body .anchor {
display: inline-block;
padding-right: 2px;
margin-left: -18px;
}
.markdown-body .anchor:focus {
outline: none;
}
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
margin-top: 1em;
margin-bottom: 16px;
font-weight: bold;
line-height: 1.4;
}
.markdown-body h1 .octicon-link,
.markdown-body h2 .octicon-link,
.markdown-body h3 .octicon-link,
.markdown-body h4 .octicon-link,
.markdown-body h5 .octicon-link,
.markdown-body h6 .octicon-link {
color: #000;
vertical-align: middle;
visibility: hidden;
}
.markdown-body h1:hover .anchor,
.markdown-body h2:hover .anchor,
.markdown-body h3:hover .anchor,
.markdown-body h4:hover .anchor,
.markdown-body h5:hover .anchor,
.markdown-body h6:hover .anchor {
text-decoration: none;
}
.markdown-body h1:hover .anchor .octicon-link,
.markdown-body h2:hover .anchor .octicon-link,
.markdown-body h3:hover .anchor .octicon-link,
.markdown-body h4:hover .anchor .octicon-link,
.markdown-body h5:hover .anchor .octicon-link,
.markdown-body h6:hover .anchor .octicon-link {
visibility: visible;
}
.markdown-body h1 {
padding-bottom: 0.3em;
font-size: 2.25em;
line-height: 1.2;
border-bottom: 1px solid #eee;
}
.markdown-body h1 .anchor {
line-height: 1;
}
.markdown-body h2 {
padding-bottom: 0.3em;
font-size: 1.75em;
line-height: 1.225;
border-bottom: 1px solid #eee;
}
.markdown-body h2 .anchor {
line-height: 1;
}
.markdown-body h3 {
font-size: 1.5em;
line-height: 1.43;
}
.markdown-body h3 .anchor {
line-height: 1.2;
}
.markdown-body h4 {
font-size: 1.25em;
}
.markdown-body h4 .anchor {
line-height: 1.2;
}
.markdown-body h5 {
font-size: 1em;
}
.markdown-body h5 .anchor {
line-height: 1.1;
}
.markdown-body h6 {
font-size: 1em;
color: #777;
}
.markdown-body h6 .anchor {
line-height: 1.1;
}
.markdown-body p,
.markdown-body blockquote,
.markdown-body ul,
.markdown-body ol,
.markdown-body dl,
.markdown-body table,
.markdown-body pre {
margin-top: 0;
margin-bottom: 16px;
}
.markdown-body hr {
height: 4px;
padding: 0;
margin: 16px 0;
background-color: #e7e7e7;
border: 0 none;
}
.markdown-body ul,
.markdown-body ol {
padding-left: 2em;
}
.markdown-body ul ul,
.markdown-body ul ol,
.markdown-body ol ol,
.markdown-body ol ul {
margin-top: 0;
margin-bottom: 0;
}
.markdown-body li>p {
margin-top: 16px;
}
.markdown-body dl {
padding: 0;
}
.markdown-body dl dt {
padding: 0;
margin-top: 16px;
font-size: 1em;
font-style: italic;
font-weight: bold;
}
.markdown-body dl dd {
padding: 0 16px;
margin-bottom: 16px;
}
.markdown-body blockquote {
padding: 0 15px;
color: #777;
border-left: 4px solid #ddd;
}
.markdown-body blockquote>:first-child {
margin-top: 0;
}
.markdown-body blockquote>:last-child {
margin-bottom: 0;
}
.markdown-body table {
display: block;
width: 100%;
overflow: auto;
word-break: normal;
word-break: keep-all;
}
.markdown-body table th {
font-weight: bold;
}
.markdown-body table th,
.markdown-body table td {
padding: 6px 13px;
border: 1px solid #ddd;
}
.markdown-body table tr {
background-color: #fff;
border-top: 1px solid #ccc;
}
.markdown-body table tr:nth-child(2n) {
background-color: #f8f8f8;
}
.markdown-body img {
max-width: 100%;
box-sizing: content-box;
background-color: #fff;
}
.markdown-body code {
padding: 0;
padding-top: 0.2em;
padding-bottom: 0.2em;
margin: 0;
font-size: 85%;
background-color: rgba(0,0,0,0.04);
border-radius: 3px;
}
.markdown-body code:before,
.markdown-body code:after {
letter-spacing: -0.2em;
content: "\00a0";
}
.markdown-body pre>code {
padding: 0;
margin: 0;
font-size: 100%;
word-break: normal;
white-space: pre;
background: transparent;
border: 0;
}
.markdown-body .highlight {
margin-bottom: 16px;
}
.markdown-body .highlight pre,
.markdown-body pre {
padding: 16px;
overflow: auto;
font-size: 85%;
line-height: 1.45;
background-color: #f7f7f7;
border-radius: 3px;
}
.markdown-body .highlight pre {
margin-bottom: 0;
word-break: normal;
}
.markdown-body pre {
word-wrap: normal;
}
.markdown-body pre code {
display: inline;
max-width: initial;
padding: 0;
margin: 0;
overflow: initial;
line-height: inherit;
word-wrap: normal;
background-color: transparent;
border: 0;
}
.markdown-body pre code:before,
.markdown-body pre code:after {
content: normal;
}
.markdown-body kbd {
display: inline-block;
padding: 3px 5px;
font-size: 11px;
line-height: 10px;
color: #555;
vertical-align: middle;
background-color: #fcfcfc;
border: solid 1px #ccc;
border-bottom-color: #bbb;
border-radius: 3px;
box-shadow: inset 0 -1px 0 #bbb;
}
.markdown-body .pl-c {
color: #969896;
}
.markdown-body .pl-c1,
.markdown-body .pl-s .pl-v {
color: #0086b3;
}
.markdown-body .pl-e,
.markdown-body .pl-en {
color: #795da3;
}
.markdown-body .pl-s .pl-s1,
.markdown-body .pl-smi {
color: #333;
}
.markdown-body .pl-ent {
color: #63a35c;
}
.markdown-body .pl-k {
color: #a71d5d;
}
.markdown-body .pl-pds,
.markdown-body .pl-s,
.markdown-body .pl-s .pl-pse .pl-s1,
.markdown-body .pl-sr,
.markdown-body .pl-sr .pl-cce,
.markdown-body .pl-sr .pl-sra,
.markdown-body .pl-sr .pl-sre {
color: #183691;
}
.markdown-body .pl-v {
color: #ed6a43;
}
.markdown-body .pl-id {
color: #b52a1d;
}
.markdown-body .pl-ii {
background-color: #b52a1d;
color: #f8f8f8;
}
.markdown-body .pl-sr .pl-cce {
color: #63a35c;
font-weight: bold;
}
.markdown-body .pl-ml {
color: #693a17;
}
.markdown-body .pl-mh,
.markdown-body .pl-mh .pl-en,
.markdown-body .pl-ms {
color: #1d3e81;
font-weight: bold;
}
.markdown-body .pl-mq {
color: #008080;
}
.markdown-body .pl-mi {
color: #333;
font-style: italic;
}
.markdown-body .pl-mb {
color: #333;
font-weight: bold;
}
.markdown-body .pl-md {
background-color: #ffecec;
color: #bd2c00;
}
.markdown-body .pl-mi1 {
background-color: #eaffea;
color: #55a532;
}
.markdown-body .pl-mdr {
color: #795da3;
font-weight: bold;
}
.markdown-body .pl-mo {
color: #1d3e81;
}
.markdown-body kbd {
display: inline-block;
padding: 3px 5px;
font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
line-height: 10px;
color: #555;
vertical-align: middle;
background-color: #fcfcfc;
border: solid 1px #ccc;
border-bottom-color: #bbb;
border-radius: 3px;
box-shadow: inset 0 -1px 0 #bbb;
}
.markdown-body .plan-price-unit {
color: #767676;
font-weight: normal;
}
.markdown-body .task-list-item {
list-style-type: none;
}
.markdown-body .task-list-item+.task-list-item {
margin-top: 3px;
}
.markdown-body .task-list-item input {
margin: 0 0.35em 0.25em -1.6em;
vertical-align: middle;
}
.markdown-body .plan-choice {
padding: 15px;
padding-left: 40px;
display: block;
border: 1px solid #e0e0e0;
position: relative;
font-weight: normal;
background-color: #fafafa;
}
.markdown-body .plan-choice.open {
background-color: #fff;
}
.markdown-body .plan-choice.open .plan-choice-seat-breakdown {
display: block;
}
.markdown-body .plan-choice-free {
border-radius: 3px 3px 0 0;
}
.markdown-body .plan-choice-paid {
border-radius: 0 0 3px 3px;
border-top: 0;
margin-bottom: 20px;
}
.markdown-body .plan-choice-radio {
position: absolute;
left: 15px;
top: 18px;
}
.markdown-body .plan-choice-exp {
color: #999;
font-size: 12px;
margin-top: 5px;
}
.markdown-body .plan-choice-seat-breakdown {
margin-top: 10px;
display: none;
}
.markdown-body :checked+.radio-label {
z-index: 1;
position: relative;
border-color: #4078c0;
}
@media print {
body .markdown-body {
padding: 0;
border: none;
}
}
README
Informační systémy - Projekt
Půjčovna kostýmů (založeno na zadání č. 10 z kursu IUS)
Autoři
- Dominik Harmim xharmi00@stud.fit.vutbr.cz
- Matúš Burzala xburza00@stud.fit.vutbr.cz
Dokumentace
Dokumentace projektu se nachází v ./doc/doc.html.
Databáze
SQL skript pro inicializaci schématu databáze se nachází v ./sql/create_db.sql.
Struktura projektu
-
./app/Jádro systému. PHP skripty a třídy, konfigurační NEON soubory. Latte šablony.-
./app/config/Konfigurační NEON soubory systému. -
./app/*Module/Jednotlivé moduly systému. Tento adresář obsahuje konfigurační NEON soubor pro daný modul,
adresářControlspro komponenty,Modelpro modelové třídy,Presenterspro presentery (kontrolery) atemplatespro Latte šablony. -
./app/bootstrap.phpvýchozí skript s nastavením konfigrace celého systému.
-
-
./doc/Dokumentace. -
./docker/Nastavení Docker. -
./libs/PHP třídy, které modifikují nebo rozšiřují chování Nette framework. -
./log/Chybové záznamy systému ("logy"). -
./node_modules/JavaScript knihovny nainstalované přes NPM. Slouží k nastavení a stahování JavaScript a CSS
závislostí systému. -
./sql/SQL skripty.-
./sql/create_db.sqlSkript pro inicializaci databáze.
-
-
./temp/Dočasné soubory systému. -
./vednor/PHP knihovny nainstalované přes Composer. -
./www/Kořenový adresář přístupný z webu.-
./www/img/Obrázky. -
./www/js/JavaScript skripty. -
./www/styles/CSS soubory. -
./www/index.phpVýchozí PHP skript spuštěný při spuštění systému.
-
-
./.bowerrcKonfigurace nástroje Bower použitého na stahování JavaScript a CSS závislostí systému. -
./.gitignoreIgnorované soubory verzovacím systémem Git. -
./.htaccessVýchozí konfigurace webového serveru Apache pro celý systém. -
./bower.jsonDefinice používaných JavaScript a CSS knihoven nástrojem Bower. -
./coding-standard.ymlNastavení nástrojenette/coding-standardpro kontrolu stylu PHP kódu. -
./composer.jsonDefinice používaných PHP knihoven, verze PHP a způsobu automatického načítání PHP souborů
nástrojem Composer. -
./composer.lockPomocný soubor pro nástroj Composer. -
./docker-compose.override.sample.ymlVzorový konfigurační soubor pro lokální modifikaci konfigurace Docker. -
./docker-compose.ymlKonfigurační soubor pro Docker. -
./Gruntfile.jsJavaScript skript pro správu a stahování JavaScript a CSS závislostí systému.
(Konfigurační soubor nástroje Grunt.) -
./LICENSELicence. -
./MakefileSoubor pro správu systému programem make. -
./package.jsonDefinice používaných JavaScript knihoven pro stahování JavaScript a CSS závislostí systému
nástrojem NPM. -
./package-lock.jsonPomocný soubor pro nástroj NPM. -
./phpstan.neonNastavení nástroje phpstan pro statickou analýzu PHP kódu. -
./README.mdREADME se základními informacemi o systému. -
./README.htmlREADME ve formátu HTML.
Požadavky (obecné)
-
Git. (Pro stažení repositáře.)
Požadavky (bez použití Docker)
- Webový server, např. Apache nebo Nginx +
MySQL nebo MariaDB +
PHP >= 7.2. Možno nainstalovat zvlášť nebo nainstalovat
XAMPP nebo třeba WAMP. -
Composer. (Pro správu PHP zavislostí.) -
NodeJS. (Pro správu JavaScript balíčků pro stahování JavaScript a CSS knihoven.)
Požadavky (s použitím Docker)
-
Docker nebo přes
Docker Desktop. -
Docker Compose.
Nastavení (obecné)
Nastavení DNS
- Doména
vut-iis-project.localhost.commusí směrovat na localhost (127.0.0.1).
Lze to udělat např. editací souboru/etc/hosts, respektive (C:\Windows\System32\Drivers\etc\hosts).
Nebo je možné použít programdnsmasqkde je možné
nastavit, aby celé skupiny domén směrovaly na localhost, např. všechny domény, které mají ve svém
názvu řetězeclocalhost. Návod pro Mac.
Nebo je také možné nainstalovat sidnsmasqpřes Docker.
Stažení repositáře
Přes SSH
$ git clone git@github.com:harmim/vut-iis-project.git ~/cesta/k/repositari
nebo přes HTTPS.
$ git clone https://github.com/harmim/vut-iis-project.git ~/cesta/k/repositari
Nastavení (bez použití Docker)
Nastavení virtual host
V konfiguračím souboru Apache, např. /usr/local/etc/httpd/extra/httpd-vhosts.conf.
<VirtualHost *:80>
ServerName vut-iis-project.localhost.com
DocumentRoot "~/cesta/k/repositari"
SetEnv IIS_DEBUG 1
</VirtualHost>
Nastavení (s použitím Docker)
Nginx-proxy
Nastavení Nginx proxy serveru, přes který se budeme připojovat k systému a který bude proxy na Apach server.
- Vytvoření souboru
~/docker-compose.ymlnapř. v domovském adresáři:
version: '3'
services:
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- 80:80
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
restart: always
networks:
default:
external:
name: nginx-proxy
$ docker network create nginx-proxy
$ (cd ~ && docker-compose up -d)
Tato Nginx proxy se teď bude spouštět vždy po restartu Docker automaticky.
Instalace (bez použití Docker)
$ make DOCKER=0
Nastavení vlastní databáze
$ cp app/config/local.sample.neon app/config/local.neon
- Nastavení údajů k vlastní databázi v souboru
app/config/loocal.neon.
Instalace (s použitím docker)
$ cp docker-compose.override.sample.yml docker-compose.override.yml
-
Změna konfigurace v souboru
docker-compose.override.yml, např. nastaveníXDEBUG_CONFIGnadocker.for.win.localhostpro Windows. -
$ docker-compose up -d
(pro vypnutí Docker kontejneru $ docker-compose down)
$ make
Make příkazy
U každého příkazu je možné uvést DOCKER=1/0 pro používání/nepoužívaní Docker, např. $ make install DOCKER=0.
Výchozí hodnota je 1.
U kažédho příkazu je možné uvést PRODUCTION=1/0 pro nastavení knihoven pro produkční/vývojový server,
např. $ make install PRODUCTION=1. Výchozí hodnota je 0.
-
installcomposer+assets. Výchozí cíl. -
composerInstalace PHP knihoven a vygenerování souboru pro automatické načítání PHP souborů. -
assetsnpm+bower+grunt. -
npmInstalace JavaScript knihoven přes NPM pro nastavování a stahování JavaScript a CSS knihoven systému. -
bowerInstalace JavaScript a CSS knihoven přes Bower. -
gruntKopírování a nastavování (minifikace, aj.) JavaScript a CSS knihoven systému. -
code-checkerSpuštění kontroly validity PHP kódu. -
coding-standardSpuštění kontroly stylu PHP kódu. -
phpstanSpuštění statické analýzy PHP kódu. -
cleanOdstranení všech dočasných souborů. -
clean-cacheOstranění dočasných souborů Nette framework. -
packVytvoření archívu pro odevzdání.