From 45e5e759d9b46253e2247f59609b7ef4363c5d2a Mon Sep 17 00:00:00 2001 From: H4CK3R-01 Date: Wed, 7 Jul 2021 22:44:54 +0200 Subject: [PATCH] Added documentation --- .gitignore | 1 + .idea/Webengineering-Filemanager.iml | 1 + Documentation/content/01-00-chapter.tex | 15 +++ Documentation/content/02-00-chapter.tex | 33 +++++++ Documentation/content/03-00-chapter.tex | 87 ++++++++++++++++++ Documentation/customization/style.tex | 86 +++++++++++++++++ .../customization/text-variables.tex | 17 ++++ Documentation/customization/variables.tex | 29 ++++++ Documentation/images/TSY-opaque.png | Bin 0 -> 377925 bytes Documentation/images/TSY-transparent.png | Bin 0 -> 251923 bytes Documentation/images/dhbw-stuttgart.png | Bin 0 -> 30355 bytes Documentation/includes/acronyms.tex | 16 ++++ Documentation/includes/cover.tex | 17 ++++ Documentation/main.bib | 0 Documentation/main.tex | 56 +++++++++++ 15 files changed, 358 insertions(+) create mode 100644 .gitignore create mode 100644 Documentation/content/01-00-chapter.tex create mode 100644 Documentation/content/02-00-chapter.tex create mode 100644 Documentation/content/03-00-chapter.tex create mode 100644 Documentation/customization/style.tex create mode 100644 Documentation/customization/text-variables.tex create mode 100644 Documentation/customization/variables.tex create mode 100644 Documentation/images/TSY-opaque.png create mode 100644 Documentation/images/TSY-transparent.png create mode 100644 Documentation/images/dhbw-stuttgart.png create mode 100644 Documentation/includes/acronyms.tex create mode 100644 Documentation/includes/cover.tex create mode 100644 Documentation/main.bib create mode 100644 Documentation/main.tex diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f4f9b6c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/Documentation/out/ diff --git a/.idea/Webengineering-Filemanager.iml b/.idea/Webengineering-Filemanager.iml index 0c8867d..9ea9141 100644 --- a/.idea/Webengineering-Filemanager.iml +++ b/.idea/Webengineering-Filemanager.iml @@ -5,6 +5,7 @@ + diff --git a/Documentation/content/01-00-chapter.tex b/Documentation/content/01-00-chapter.tex new file mode 100644 index 0000000..ab95aa4 --- /dev/null +++ b/Documentation/content/01-00-chapter.tex @@ -0,0 +1,15 @@ +\chapter{Einleitung und Installation}\label{ch:einleitung} +Immer mehr Programme werden heutzutage nicht mehr als native App sondern als Webapp, die im Browser aufgerufen wird, genutzt. +Ein Beispiel dafür sind die Office Anwendungen von Microsoft, die als native Programme und als Web-Version verfügbar sind. +Die Web-Version hat dabei den Vorteil, dass sie auch unter Linux oder anderen, eigentlich nicht unterstützten Betriebssystemen, funktioniert. +Dadurch können mehr Personen die Anwendung nutzen und oftmals ist auch die Entwicklung einfacher, weil nur für ein System (Browser) und nicht für mehrere Systeme (Windows, Linux, MacOS, \ldots) entwickelt werden muss. + +\section{Installation} +Der Webservice kann mittels Docker gestartet werden. +\begin{lstlisting} +docker run --rm -v ":/app" -v "/upload.ini:/usr/local/etc/php/conf.d/upload.ini" -w /app -p 8080:80 php:7.4-cli php -S 0.0.0.0:80 router.php +\end{lstlisting} + +Die eigentliche App wird geöffnet, indem die Datei \glqq index.html\grqq~im Ordner \glqq Frontend\grqq~in einem kompatiblen Browser geöffnet wird. + +Damit alles einwandfrei funktionieren kann, muss der Webservice entweder auf dem gleichen Gerät wie die eigentliche App laufen oder in der Datei \glqq Frontend/static/js/index.js\grqq~ muss die erste Zeile angepasst werden. diff --git a/Documentation/content/02-00-chapter.tex b/Documentation/content/02-00-chapter.tex new file mode 100644 index 0000000..1e7632d --- /dev/null +++ b/Documentation/content/02-00-chapter.tex @@ -0,0 +1,33 @@ +\chapter{Allgemeine Informationen}\label{ch:allgemeine_informationen} +Bei diesem Projekt wurden ausschließlich die Programmier- beziehungsweise Markupsprachen JavaScript, \gls{css} und \gls{html} verwendet. + +Es handelt sich um eine Single-Page-App. +Das heißt, die komplette Funktionalität wurde in einer einzelnen \acrshort{html}-Datei und mehreren JavaScript beziehungsweise CSS Dateien umgesetzt. + +Alle Funktionen wurden in folgenden Browsern getestet: + +\section{Desktop} +\begin{center} + \begin{tabular}{ c c c c c } + \bfseries{Browser} & \bfseries{Version} & \bfseries{funktioniert?} & \bfseries{Probleme} \\ + \hline + Mozilla Firefox & 90.0b12 & \textcolor{green}{\cmark} & \\ + Google Chrome & 91.0.4472.114 & \textcolor{red}{\xmark} & Audio + Video abspielen \\ + Chromium & 91.0.4472.114 & \textcolor{red}{\xmark} & Audio + Video abspielen \\ + Opera & 77.0.4054.203 & \textcolor{red}{\xmark} & Audio + Video abspielen \\ + Microsoft Edge & & & \\ + Internet Explorer & & & + \end{tabular} +\end{center} + + +\section{Mobile} +\begin{center} + \begin{tabular}{ c c c } + Browser & Version & funktioniert? \\ + Mozilla Firefox & & \\ + Google Chrome & & \\ + Safari & & \\ + Opera & & + \end{tabular} +\end{center} \ No newline at end of file diff --git a/Documentation/content/03-00-chapter.tex b/Documentation/content/03-00-chapter.tex new file mode 100644 index 0000000..e5d4ce4 --- /dev/null +++ b/Documentation/content/03-00-chapter.tex @@ -0,0 +1,87 @@ +\chapter{Anforderungen}\label{ch:anforderungen} + +\section{Laufzeitumgebung} +\subsection{Sprachen} +Wie bereits erwähnt wurden bei diesem Projekt nur die Sprachen \gls{html}, \gls{css} und JavaScript verwendet + +\subsection{Keine Bibliotheken} +Auf JavaScript Bibliotheken und Frameworks wie \glqq jQuery\grqq, \glqq React\grqq~oder \glqq Angular\grqq~wurde verzichtet. +Stattdessen wurden native JavaScript-Funktionen verwendet. + +Auch das \gls{html}- bezieziehungsweise \gls{css}-Framework \glqq Bootstrap\grqq~wurde nicht verwendet. + + +\section{Sicherheit} +\subsection{Authentifizierung} +Damit nicht jede Person zugang zu den Daten hat, muss der Benutzer sich authentifizieren. +Dafür wird beim starten der Webapp ein Login-Fenster angezeigt. +Sollte der Login am Server erfolgreich sein, wird der generierte Token in Session Storage gespeichert. +Das hat zur Folge, das der Login spätestens mit dem beenden der Browser-Session ungültig gemacht wird. + +\subsection{Logout} +Der Logout wird zum einen vom Server automatisch durchgeführt, wenn seit 600 Sekunden keine Aktivität mehr erkannt wurde. +Des Weiteren wird im Browser beim Login und bei jeder Aktivität ein Timeout gesetzt, sodass der Token in Session Storage automatisch nach diesen 600 Sekunden gelöscht wird. + +\section{Darstellung} +\subsection{Anpassung an Browserfenstern} +Da es unterschiedliche Bildschirme gibt, ist der Inhalt der App nicht überall gut lesbar. +Deshalb wurde mittels \gls{css} \glqq Media queries\grqq~dafür gesorgt, dass bei schmalen Geräten die Baum-Ansicht unter der Verzeichnis-Ansicht angezeigt wird. +Dadurch wird sichergestellt, dass auf Smartphones, die sowieso schon wenig Platz in der Breite haben, nicht noch mehr Platz \glqq verschwendet\grqq~wird. + +\subsection{Usability} +Der Dateimanager ist von der Grundstruktur ähnlich aufgebaut wie der \glqq Windows Explorer\grqq~unter Windows oder \glqq Nautilus\grqq~unter Linux. +Nutzer, die diese Dateimanager schon genutzt haben, finden sich in der Webapp schnell zurecht. + +\subsection{Fehlererkennung} +Auch wenn es eigentlich nicht vorkommen sollte, kann es immer wieder zu Fehlern kommen, weil die angefragte Datei zum Beispiel gelöscht wurde. +Die Fehlermeldungen des Servers werden von der App abgefangen und angezeigt. + +\subsection{Verzeichnisse \& Dateitypen} +Verzeichnisse und Dateitypen werden in der Verzeichnisansicht durch unterschiedliche Icons angezeigt. +So wird sichergestellt, dass der Benutzer schnell herausfinden kann, um was es sich handelt. + +\section{Navigation} +Die Navigation ist entweder über den Verzeichnis-Baum links beziehungsweise unten oder über die Datei-Ansicht rechts oder oben möglich. +Um sich ein Verzeichnis nach oben zu bewegen, kann \glqq ..\grqq~verwendet werden. +Um ein oder mehrere Verzeichnisse nach oben zu gehen, kann der Pfad oberhalb der Dateien verwendet werden. + +\subsection{Verzeichnis öffnen} +Um ein Verzeichnis zu öffnen, kann das entsprechende Verzeichnis in der Verzeichnisansicht angeklickt werden. + +\section{Datei-Handling} +\subsubsection{MP4-Video-Datei abspielen} +Der Dateimanager kann mp4-Video-Dateien abspielen, indem diese in der Verzeichnisansicht angeklickt werden. + +\subsubsection{Audio-Datei abspielen} +Der Dateimanager kann Audio-Dateien abspielen, indem diese in der Verzeichnisansicht angeklickt werden. + +\subsubsection{Bild-Datei ansehen} +Der Dateimanager kann Bild-Dateien anzeigen, indem diese in der Verzeichnisansicht angeklickt werden. + +\subsubsection{Text-Datei bearbeiten} +Der Dateimanager kann Text-Dateien bearbeiten, indem diese in der Verzeichnisansicht angeklickt werden. +Im neuen Fenster kann der Inhalt der Datei bearbeitet werden und wird mit einem Klick auf \glqq Save\grqq~gespeichert. + +\subsubsection{Datei herunterladen} +Eine Datei kann heruntergeladen werden, indem in der Verzeichnisansicht das Kontextmenü mittels Rechtsklick geöffnet wird. + +\subsubsection{Datei löschen} +Eine Datei kann gelöscht werden, indem in der Verzeichnisansicht das Kontextmenü mittels Rechtsklick geöffnet wird. + +\subsubsection{Text-Datei erstellen} +Um eine Text-Datei zu erstellen muss unten rechts über das \glqq +\grqq-Icon gehovert werden. +Bei den neu angezeigten Icons das zweite von oben anklicken, um die Datei zu erstellen. +Im Header des neuen Fensters kann der Dateiname festgelegt werden. +Der Rest ist gleich, wie beim bearbeiten von Text-Dateien. + +\subsubsection{Datei hochladen} +Um eine Datei hochzuladen muss unten rechts über das \glqq +\grqq-Icon gehovert werden. +Bei den neu angezeigten Icons das dritte von oben anklicken, um die Datei hochzuladen. + +\section{Verzeichnis-Handling} +\subsection{Verzeichnis löschen} +Ein Verzeichnis kann gelöscht werden, indem in der Verzeichnisansicht das Kontextmenü mittels Rechtsklick geöffnet wird. + +\subsection{Verzeichnis erstellen} +Um ein Verzeichnis zu erstellen, muss unten rechts über das \glqq +\grqq-Icon gehovert werden. +Bei den neu angezeigten Icons das oberste anklicken, um das Verzeichnis zu erstellen. diff --git a/Documentation/customization/style.tex b/Documentation/customization/style.tex new file mode 100644 index 0000000..6522886 --- /dev/null +++ b/Documentation/customization/style.tex @@ -0,0 +1,86 @@ +%! Author = soeichho +%! Date = 20.11.2020 + +% Text style +\setmainfont{\mainFont} +\setstretch{\lineStretchValue} % Space between lines + + +% Chapter format +\renewcommand*{\chapterformat}{ + \thechapter \hspace{10pt} \textcolor{accent-color}{|} \hspace{10pt} +} +\renewcommand*{\chapterheadstartvskip}{\vspace*{0pt}} + + +% Header / Footer +\clearpairofpagestyles +\KOMAoptions { + headsepline = true, + footsepline = true, + plainfootsepline = true +} +\automark[chapter]{chapter} + +\ihead{\headmark} +\ifoot{\author~~|~~\kurs~~|~~\date} +\ofoot{\thepage} + +\renewcommand*{\headfont}{\normalfont} % Keine kursive Schrift +\renewcommand*{\footfont}{\normalfont} + +\newpairofpagestyles{chapterpage}{ + \KOMAoptions { + headsepline = false, + footsepline = true, + plainfootsepline = true + } + \ihead{} + \ifoot{\author~~|~~\kurs~~|~~\date} + \ofoot{\thepage} +} + +\renewcommand*{\chapterpagestyle}{chapterpage} + + +% Listings style +\lstset{ + basicstyle=\ttfamily\small, + frame=top, + frame=bottom, + breaklines=true, + tabsize=2, + upquote = true, + numbers=left, + stepnumber=1, + numbersep=5pt, + commentstyle=\color{teal}, + stringstyle=\color{magenta}, + keywordstyle=\color{orange} +} + +\lstdefinelanguage{JSON}{ + string=[s]{"}{"}, + comment=[l]{:\ "}, + morecomment=[l]{:"}, +} + +\lstdefinelanguage{JavaScript}{ + keywords={const, let, typeof, instanceof, new, true, false, catch, function, return, null, undefined, catch, switch, var, if, in, while, for, do, else, case, default, break}, + ndkeywords={class, export, throw, import, this}, + sensitive=false, + comment=[l]{//}, + morecomment=[s]{/*}{*/}, + morestring=[b]', + morestring=[b]`, + morestring=[b]" +} + +% Float listings +\newfloat{lstfloat}{htbp}{lop} +\floatname{lstfloat}{Listing} +\def\lstfloatautorefname{Listing} % needed for hyperref/auroref + +\usepackage{pifont}% http://ctan.org/pkg/pifont +\newcommand{\cmark}{\ding{51}}% +\newcommand{\xmark}{\ding{55}}% \ No newline at end of file diff --git a/Documentation/customization/text-variables.tex b/Documentation/customization/text-variables.tex new file mode 100644 index 0000000..a5cf0dc --- /dev/null +++ b/Documentation/customization/text-variables.tex @@ -0,0 +1,17 @@ +%! Author = flokaise +%! Date = 21.04.2021 + +% Text variables +\renewcommand{\author}{Florian Kaiser} +\renewcommand{\date}{\today} +\newcommand{\institutionName}{Duale Hochschule Baden-Württemberg} +\newcommand{\paperName}{Dokumentation Web Engineering Projekt} +\newcommand{\registerId}{9829423} +\newcommand{\kurs}{TINF20C} +\renewcommand{\title}{Filemanager} + +% Layout variables +\newcommand{\pageMarginLeft}{40mm} +\newcommand{\pageMarginRight}{20mm} +\newcommand{\pageMarginTop}{40mm} +\newcommand{\pageMarginBottom}{20mm} \ No newline at end of file diff --git a/Documentation/customization/variables.tex b/Documentation/customization/variables.tex new file mode 100644 index 0000000..60cf4b8 --- /dev/null +++ b/Documentation/customization/variables.tex @@ -0,0 +1,29 @@ +%! Author = soeichho +%! Date = 19.11.2020 + +%! This file is dedicated to individual changes. +%! If I've done my job correctly, you only have to modify this file to your personal favour. +%! Access these variables by using \commandname within any .tex file + +% Style variables +%! IMPORTANT: The font size needs to be changed after the \begin{document} block in your main.tex +% TODO +%\newcommand{\mainFont}{TeleNeo Office} % Whatever font you want to use, needs to be installed on your computer +\newcommand{\mainFont}{Ubuntu} % Whatever font you want to use, needs to be installed on your computer +\newcommand{\lineStretchValue}{1.5} +\newcommand{\coverSheetImages}{ + \includegraphics[width=0.4\textwidth]{images/dhbw-stuttgart}\hspace{1 cm} + \includegraphics[width=0.4\textwidth]{images/TSY-transparent} +} + +% Colors +%! You can name as many colors as you'd like. +%! The accent-color is the only one, that is actually used by the template so far +%! Here are some convenient color codes for you ;) +%! telekom magenta: E20074 +%! fom: 539D90 +%! fom_light: 73d9c6 +%! fom_dark: 36665e +%! dhbw_red: E2001A +%! dhbw_grey: 7D8990 +\definecolor{accent-color}{HTML}{E20074} % This color will be used as highlight color in the chapter name \ No newline at end of file diff --git a/Documentation/images/TSY-opaque.png b/Documentation/images/TSY-opaque.png new file mode 100644 index 0000000000000000000000000000000000000000..f0e4193097256e4792cb04aa1e88440c46d7d66f GIT binary patch literal 377925 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