{"id":602,"date":"2021-06-20T16:32:21","date_gmt":"2021-06-20T14:32:21","guid":{"rendered":"https:\/\/neu.montybanse.eu\/?p=602"},"modified":"2022-03-06T23:38:02","modified_gmt":"2022-03-06T22:38:02","slug":"dms-die-funktionen","status":"publish","type":"post","link":"https:\/\/www.montybanse.eu\/index.php\/server-programmierung-co\/dms-die-funktionen\/","title":{"rendered":"DMS: Die Funktionen"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"602\" class=\"elementor elementor-602\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-89fcd12 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no\" data-id=\"89fcd12\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-cadfe22\" data-id=\"cadfe22\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8a303f1 elementor-drop-cap-yes elementor-drop-cap-view-default elementor-widget elementor-widget-text-editor\" data-id=\"8a303f1\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;drop_cap&quot;:&quot;yes&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Als erstes entwickelte ich die Grundpfeiler f\u00fcr das DM-System. Das war f\u00fcr mich in erster Linie die Dokumente anzeigen und bearbeiten zu lassen. Als ersten Schritt davon, entwarf ich das Tabellenlayout (Ja, ich verwende tats\u00e4chlich eine Tabelle f\u00fcr die \u00dcbersicht).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-078ba95 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no\" data-id=\"078ba95\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-401a4f1\" data-id=\"401a4f1\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0ecd50c elementor-widget elementor-widget-image\" data-id=\"0ecd50c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"http:\/\/neu.montybanse.eu\/wp-content\/uploads\/2021\/06\/Uebersicht.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"\u00dcbersicht\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NjIzLCJ1cmwiOiJodHRwczpcL1wvd3d3Lm1vbnR5YmFuc2UuZXVcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzA2XC9VZWJlcnNpY2h0LnBuZyJ9\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"750\" height=\"439\" src=\"https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Uebersicht-1024x599.png\" class=\"attachment-large size-large wp-image-623\" alt=\"\" srcset=\"https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Uebersicht-1024x599.png 1024w, https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Uebersicht-300x176.png 300w, https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Uebersicht-768x449.png 768w, https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Uebersicht-1536x899.png 1536w, https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Uebersicht.png 1683w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2644315 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no\" data-id=\"2644315\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-190de42\" data-id=\"190de42\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2830265 elementor-widget elementor-widget-text-editor\" data-id=\"2830265\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Aber warum eine Tabelle? Das war f\u00fcr mich recht einfach zu entscheiden: Die Tabelle basiert auf die Datatables und der dazugeh\u00f6rigen Javascript Klasse bzw. -funktionen. Datatables bringt ebenfalls eine Menge guter Dinge mit, um eine Tabelle recht gut aussehen zu lassen und erweitert diese z.B. gleichzeitig um eine Suchfunktion (die sich ausschlie\u00dflich auf die Tabelleninhalte bezieht), eine Sortierfunktion nach Tabellenkopf oder auch so praktische Funktionen wie das Ausblenden einer kompletten Spalte (das ben\u00f6tige ich sp\u00e4ter n\u00e4mlich noch).<\/p><p>Tabellen allgemein sind in der HTML Welt mittlerweile recht verrufen, das liegt einfach daran, dass die Responsability f\u00fcr kleinere Ger\u00e4te oftmals nicht mehr gegeben ist und diese eine gro\u00dfe Tabelle mehr schlecht als Recht darstellen k\u00f6nnen.<\/p><p>Hier greift einem Datatables auch wieder unter die Arme: Es erm\u00f6glicht die Tabelle bei kleineren Formaten automatisch anders zu positionieren, sodass sie weiterhin benutzbar bleibt. Optisch macht man dann nat\u00fcrlich abstriche, aber das ist f\u00fcr die schnelle Dokumentensuche f\u00fcr unterwegs gut vertretbar.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1bfed2e elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no\" data-id=\"1bfed2e\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ede6f7e\" data-id=\"ede6f7e\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-096d681 elementor-widget elementor-widget-text-editor\" data-id=\"096d681\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Die Tabelle ist soweit einfach aufgebaut. In der Mitte in der Spalte \u201eDokumentname\u201c befindet sich \u00fcber den Inhalt ein Link, der wiederum ein Modal \u00f6ffnet, welches die PDF im jeweiligen HTML5-Viewer des Browsers aufruft. Je nach Browser sieht der Viewer etwas anders aus und es gibt unterschiedliche Funktionen, aber f\u00fcr den allgemeinen Gebrauch sind sie alle brauch- und benutzbar:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4ab26f7 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no\" data-id=\"4ab26f7\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4d53773\" data-id=\"4d53773\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ea8b720 elementor-widget elementor-widget-image\" data-id=\"ea8b720\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"http:\/\/neu.montybanse.eu\/wp-content\/uploads\/2021\/06\/Vorschau-Modal.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"Vorschau Modal\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NjI0LCJ1cmwiOiJodHRwczpcL1wvd3d3Lm1vbnR5YmFuc2UuZXVcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzA2XC9Wb3JzY2hhdS1Nb2RhbC5wbmcifQ%3D%3D\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"750\" height=\"439\" src=\"https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Vorschau-Modal-1024x599.png\" class=\"attachment-large size-large wp-image-624\" alt=\"\" srcset=\"https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Vorschau-Modal-1024x599.png 1024w, https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Vorschau-Modal-300x176.png 300w, https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Vorschau-Modal-768x449.png 768w, https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Vorschau-Modal-1536x899.png 1536w, https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Vorschau-Modal.png 1683w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-40d2687 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no\" data-id=\"40d2687\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b02efac\" data-id=\"b02efac\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-19efb2d elementor-widget elementor-widget-text-editor\" data-id=\"19efb2d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Dadurch, dass die PDF erst im Modal per Ajax (nach-) geladen wird, verbraucht die PDF Ansicht auch nur wenig Speicher.<\/p><p>Das war etwas, was ich mir auch erst angelesen habe. Anfangs hatte ich n\u00e4mlich die Modals immer automatisch erstellen lassen. Im Quelltext sah das dann in etwa so aus:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-855db66 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no\" data-id=\"855db66\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c771e3c\" data-id=\"c771e3c\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d7bfc72 elementor-widget elementor-widget-code-block-for-elementor\" data-id=\"d7bfc72\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-block-for-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre class='line-numbers theme-okaidia' data-show-toolbar='yes'><code class='language-html'>&lt;div class=&quot;modal-body&quot;&gt;\n    &lt;div class=&quot;embed-responsive embed-responsive-16by9&quot;&gt;\n        &lt;embed src=&quot;data:[@mimeTyp];base64,[@attachment]&quot; &gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ed71aa7 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no\" data-id=\"ed71aa7\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-745cd20\" data-id=\"745cd20\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-10095c1 elementor-widget elementor-widget-text-editor\" data-id=\"10095c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Hier reihte sich dann ein Modal an Modal am Ende der Webseite, welche \u00fcber einen entsprechenden Link aufgerufen wurden. Zu Beginn klappte das auch einwandfrei. Ich stellte aber fest, dass bei vielen Dokumenten (nachdem ich begonnen habe das DM-System einmal mit einer Reihe an 50+ Dokumenten zu f\u00fcttern), die Ladezeiten der Webseiten ewig lang war. Klar, so wurde in jedem Modal die komplette PDF als Base64 geladen (oben im Quelltext findet sich hier \u00fcbrigens nur ein Platzhalter <em>[@attachment] <\/em>welcher von dem PHP-Skript dann bef\u00fcllt wird, sobald es aufgerufen wurde.<\/p><p>So habe ich es dann umsetzen k\u00f6nnen, dass die jeweilige PDF erst geladen wird, wenn das Modal per Ajax \u201eerschaffen\u201c wird.<\/p><p>Praktischerweise habe ich hier auch gleich die Funktionen f\u00fcr den Download und das L\u00f6schen mit eingebaut.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b70c119 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no\" data-id=\"b70c119\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ab85530\" data-id=\"ab85530\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2fbabc6 elementor-widget elementor-widget-text-editor\" data-id=\"2fbabc6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Ich wollte mir meine Dokumente aber nicht nur ansehen, sondern auch Bearbeiten. Bearbeiten in Form von Kategorien vergeben, ein Datum festlegen von wann das Dokument war oder auch eine kleine Beschreibung hinzuf\u00fcgen, die mit in der \u00dcbersicht angezeigt wurde.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-04929b0 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no\" data-id=\"04929b0\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c157cec\" data-id=\"c157cec\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4365eb4 elementor-widget elementor-widget-image\" data-id=\"4365eb4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"http:\/\/neu.montybanse.eu\/wp-content\/uploads\/2021\/06\/Dokument-Bearbeiten-Anzeigen.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"Dokument Bearbeiten Anzeigen\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NjI1LCJ1cmwiOiJodHRwczpcL1wvd3d3Lm1vbnR5YmFuc2UuZXVcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzA2XC9Eb2t1bWVudC1CZWFyYmVpdGVuLUFuemVpZ2VuLnBuZyJ9\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"750\" height=\"439\" src=\"https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Dokument-Bearbeiten-Anzeigen-1024x599.png\" class=\"attachment-large size-large wp-image-625\" alt=\"\" srcset=\"https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Dokument-Bearbeiten-Anzeigen-1024x599.png 1024w, https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Dokument-Bearbeiten-Anzeigen-300x176.png 300w, https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Dokument-Bearbeiten-Anzeigen-768x449.png 768w, https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Dokument-Bearbeiten-Anzeigen-1536x899.png 1536w, https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Dokument-Bearbeiten-Anzeigen.png 1683w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e7c4c87 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no\" data-id=\"e7c4c87\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-463a40f\" data-id=\"463a40f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9c44721 elementor-widget elementor-widget-text-editor\" data-id=\"9c44721\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Daraus entstand diese Ansicht. Ich unterteilte den gro\u00dfen \u201eAnsichtsbereich\u201c in zwei weitere Container. Im linken Bereich wird die M\u00f6glichkeit zum Bearbeiten gegeben und im rechten Bereich sieht man noch einmal das Dokument in der Vorschau.<\/p><p>Warum hier auch noch einmal eine Vorschau? Anfangs hatte ich mir das auch \u00fcberlegt, eigentlich dachte ich, die Ansicht im Modal w\u00fcrde v\u00f6llig gen\u00fcgen. Bei den ersten Bearbeitungen stelle ich aber fest, dass es unpraktisch ist jedes mal das Modal zu \u00f6ffnen, sich z.B. das Datum oder den Betreff des Dokuments zu merken und dann in die andere Ansicht zu wechseln.<\/p><p>Es soll doch so einfach und unkompliziert f\u00fcr einen selbst bleiben, nicht wahr?<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-c666383 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no\" data-id=\"c666383\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c522a3b\" data-id=\"c522a3b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9f0f318 elementor-widget elementor-widget-text-editor\" data-id=\"9f0f318\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Als letztes gibt es noch ein Modal zum direkten L\u00f6schen des Dokuments (was nat\u00fcrlich auch \u00fcber die Vorschau gehen w\u00fcrde).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-afc7152 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no\" data-id=\"afc7152\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-eab70ca\" data-id=\"eab70ca\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-cb5e0e5 elementor-widget elementor-widget-image\" data-id=\"cb5e0e5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"http:\/\/neu.montybanse.eu\/wp-content\/uploads\/2021\/06\/Dokument-loeschen.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"Dokument l\u00f6schen\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6NjI2LCJ1cmwiOiJodHRwczpcL1wvd3d3Lm1vbnR5YmFuc2UuZXVcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjFcLzA2XC9Eb2t1bWVudC1sb2VzY2hlbi5wbmcifQ%3D%3D\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"439\" src=\"https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Dokument-loeschen-1024x599.png\" class=\"attachment-large size-large wp-image-626\" alt=\"\" srcset=\"https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Dokument-loeschen-1024x599.png 1024w, https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Dokument-loeschen-300x176.png 300w, https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Dokument-loeschen-768x449.png 768w, https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Dokument-loeschen-1536x899.png 1536w, https:\/\/www.montybanse.eu\/wp-content\/uploads\/2021\/06\/Dokument-loeschen.png 1683w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a974596 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no\" data-id=\"a974596\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c9b2e9c\" data-id=\"c9b2e9c\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2e96b00 elementor-widget elementor-widget-text-editor\" data-id=\"2e96b00\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Ja und Nein. Mehr Auswahl haben wir nicht.<\/p><p>Bei der L\u00f6schung habe ich mich \u00fcbrigens dazu entschieden sie wirklich unwiderruflich zu machen. Das Dokument wird nach einem Klick auf \u201eJa\u201c komplett aus der Datenbank entfernt. Inklusive aller vorhandenen Daten, Informationen oder dergleichen. Ich wollte damit die M\u00f6glichkeit schaffen, dass zum Beispiel meine Familienmitglieder (die dieses System mittlerweile auch nutzen), die M\u00f6glichkeit haben ein Dokument so zu l\u00f6schen, dass auch ich als Entwickler darauf keinen Zugriff mehr h\u00e4tte.<\/p><p>(Um Fair zu bleiben: Ja, es gibt nat\u00fcrlich Backups, aber diese m\u00fcssten relativ umst\u00e4ndlich wiederhergestellt und eingespielt werden. Zudem werden diese nicht dauerhaft vorgehalten, es m\u00fcsste mir also relativ zeitnah einfallen, dass ich genau dieses Dokument gerne gesehen h\u00e4tte.)<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a4c689e elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no\" data-id=\"a4c689e\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-637c314\" data-id=\"637c314\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c6aa5f1 elementor-drop-cap-yes elementor-drop-cap-view-default elementor-widget elementor-widget-text-editor\" data-id=\"c6aa5f1\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;drop_cap&quot;:&quot;yes&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Halt. Hast du da nicht einen Button vergessen zu erkl\u00e4ren?<br \/><br \/>Jap, richtig. Da gibt es noch einen kleinen Button mit einem Mailsymbol. Das ist eine Funktion, die ich erst vor kurzem eingebaut habe. Dar\u00fcber l\u00e4sst sich ein Dokument mal spontan per E-Mail an einen Empf\u00e4nger weiterleiten. Ich brauchte die Funktion selbst f\u00fcr ein Dokument, welches ich an zwei Freunde weiterleiten wollte. Klar, ich h\u00e4tte die PDF einfach herunterladen und per Mail versenden k\u00f6nnen.<\/p><p>Aber ich wollte es als dauerhafte Funktion mit einbinden. Warum auch nicht?<br \/>Hierzu erz\u00e4hle ich dann aber sp\u00e4ter mehr, wenn es um die Erweiterung des Projektes geht.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Als erstes entwickelte ich die Grundpfeiler f\u00fcr das DM-System. Das war f\u00fcr mich in erster Linie die Dokumente anzeigen und bearbeiten zu lassen. Als ersten Schritt davon, entwarf ich das Tabellenlayout (Ja, ich verwende tats\u00e4chlich eine Tabelle f\u00fcr die \u00dcbersicht). Aber warum eine Tabelle? Das war f\u00fcr mich recht einfach<\/p>\n","protected":false},"author":1,"featured_media":966,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_eb_attr":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[18,17],"tags":[],"class_list":["post-602","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dokumentenmanagement-selbst-gemacht","category-server-programmierung-co"],"_links":{"self":[{"href":"https:\/\/www.montybanse.eu\/index.php\/wp-json\/wp\/v2\/posts\/602","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.montybanse.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.montybanse.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.montybanse.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.montybanse.eu\/index.php\/wp-json\/wp\/v2\/comments?post=602"}],"version-history":[{"count":11,"href":"https:\/\/www.montybanse.eu\/index.php\/wp-json\/wp\/v2\/posts\/602\/revisions"}],"predecessor-version":[{"id":968,"href":"https:\/\/www.montybanse.eu\/index.php\/wp-json\/wp\/v2\/posts\/602\/revisions\/968"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.montybanse.eu\/index.php\/wp-json\/wp\/v2\/media\/966"}],"wp:attachment":[{"href":"https:\/\/www.montybanse.eu\/index.php\/wp-json\/wp\/v2\/media?parent=602"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.montybanse.eu\/index.php\/wp-json\/wp\/v2\/categories?post=602"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.montybanse.eu\/index.php\/wp-json\/wp\/v2\/tags?post=602"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}