| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung |
| dienste:wiki [02.07.2017 12:36] – Status-Code korrigiert und Bilder mit alt/title ergänzt bernd | dienste:wiki [05.03.2026 12:55] (aktuell) – BaseURL mape2k |
|---|
| |
| Wir verwenden [[https://www.dokuwiki.org|DokuWiki]] in der nachfolgend dokumentierten Konfiguration. | Wir verwenden [[https://www.dokuwiki.org|DokuWiki]] in der nachfolgend dokumentierten Konfiguration. |
| | |
| ===== Plugins ===== | ===== Plugins ===== |
| |
| ==== Für Nutzer ==== | ^ Name ^ Anwendung ^ Kommentar ^ |
| | | [[http://www.dokuwiki.org/plugin:codemirror|Codemirror]] | Enhances DokuWiki's Editor with syntax highlighting | funktioniert mit aktueller DokuWiki-Version, wird aber nicht aktiv weiterentwickelt, im Wiki wird auf [[https://www.dokuwiki.org/plugin:prosemirror|prosemirror]] verwiesen | |
| * [[http://www.dokuwiki.org/plugin:codemirror|Codemirror]] | | [[http://www.dokuwiki.org/plugin:code|Code Replacement]] | This plugin replaces the current DokuWiki handlers for code & file markup. It adds ability to recognize and render a title above the code box. | | |
| * [[http://www.dokuwiki.org/plugin:code|Code Replacement]] | | [[http://www.dokuwiki.org/plugin:edittable|editTable]] | This plugin adds an additional edit button to every table. Using this button the table can be edited in an Excel-like visual interface. The plugin also adds a button to the standard toolbar for inserting new tables using this editor. | | |
| * [[http://www.dokuwiki.org/plugin:edittable|editTable]] | | [[http://www.dokuwiki.org/plugin:tablewidth|tableWidth]] | The plugin allows to specify width for a DokuWiki table and its columns. | | |
| | | [[http://www.dokuwiki.org/plugin:wrap|Wrap]] | Universal plugin which combines the functionality of many other plugins. Wrap wiki text inside containers (divs or spans) and give them a class (choose from a variety of preset classes), a width and/or a language with its associated text direction. | | |
| ==== Für Admins ==== | | [[https://www.dokuwiki.org/plugin:mobiletable|MobileTable]] | This plugin creates a second representation of a table, where all columns are stacked on top of each other, which is only shown for mobile devices. This improves the mobile experience for wide tables as it prevents horizontal scrolling. | | |
| | | [[http://www.dokuwiki.org/plugin:move|Move]] | Move pages, media files and namespaces while maintaining the link structure | | |
| * [[http://www.dokuwiki.org/plugin:move|Move]] | | [[http://www.dokuwiki.org/plugin:searchindex|Searchindex Manager]] | This admin plugin allows you to rebuild the index used by the fulltext search. | | |
| * [[http://www.dokuwiki.org/plugin:searchindex|Searchindex Manager]] | | [[http://www.dokuwiki.org/plugin:smtp|SMTP]] | This plugin replaces the way DokuWiki sends emails. Instead of relying on PHP's built-in mail function, it will contact a configured SMTP server directly to send emails. | | |
| | | [[https://www.dokuwiki.org/plugin:simplenavi|simplenavi]] | Create a simple navigation tree based on namespaces | | |
| ==== System ==== | | [[https://www.dokuwiki.org/plugin:attribute|attribute]] | Arbitrary attribute definition and storage for user associated data | wird für das 2FA-Plugin benötigt, um Daten abspeichern zu können | |
| | | [[https://www.dokuwiki.org/plugin:twofactor|Two Factor Authentication - Core Plugin]] | Provides modular two factor authentication functionality to DokuWiki | wird als Grundlage für die verschiedenen 2FA-Methoden benötigt | |
| * [[https://www.dokuwiki.org/plugin:simplenavi|simplenavi]] | | [[https://www.dokuwiki.org/plugin:twofactorgoogleauth|Two Factor Authentication - Google Authenticator Plugin]] | Google Authenticator support plugin for the Twofactor authentication plugin. | Implementiert die App-Veriante von 2FA. Es gibt auch noch eine Variante für [[https://www.dokuwiki.org/plugin:twofactoremail|2FA per E-Mail]], dieses ist jedoch aktuell nicht installiert. | |
| |
| ===== Template ===== | ===== Template ===== |
| * nativeeditor: **[X]** | * nativeeditor: **[X]** |
| |
| ==== iCalendar ==== | ==== URL-Schemes ==== |
| | |
| | * conf/scheme.local.conf angelegt und um "webcal" erweitert |
| | |
| | ==== SMTP ==== |
| | |
| | * smtp_host: **mail.bytespeicher.org** |
| | * smtp_port: **465** |
| | * smtp_ssl: **SSL** |
| | * smtp_auth_user: **XXX@technikkultur-erfurt.de** |
| | * smtp_auth_user: **PASSWORT fuer XXX** |
| | |
| | ==== Twofactor ==== |
| | |
| | * enable: **[X]** |
| | * optinout: **opt-in** |
| | * otpsubject: **OTP Verification Code** |
| | * otpcontent: **$otp is your verification code.** |
| | * generatorexpiry: **2** |
| | * otplength: **7** |
| | * sentexpiry: **5** |
| | * loginnotice: **User** |
| | * loginsubject: **Login Successful** |
| | * logincontent: **Your account was logged into at $time.** |
| | * refreshexpiry: **240** |
| | * logging_level: **None** |
| | * logging_path: **2fa_audit.txt** |
| | |
| | ==== Twofactorgoogleauth ==== |
| | |
| | * enable: **[X]** |
| |
| * table: **<nowiki>| **{date}** | {summary} | {location_link} |</nowiki>** | |
| |
| ==== Template / Boostrap3 ==== | ==== Template / Boostrap3 ==== |
| </code> | </code> |
| |
| Der Raum-Status und die Social-Media-Links liegen in folgender Datei | Der Raum-Status und die Social-Media-Links liegen in der Datei lib/tpl/bootstrap3/sidebarfooter.html. Der PHP-Code des Raum-Status ist identisch mit dem im [[wp_tkev#raumstatus|Wordpress]] verwendeten. |
| |
| <file|lib/tpl/bootstrap3/sidebarfooter.html> | <file|lib/tpl/bootstrap3/sidebarfooter.html> |
| | <!-- ***** Info-Box ***** --> |
| | <div class="well" style="color: #999; padding: 10px;"> |
| | <h3 style="text-align: center; font-weight: bold;"> |
| | <a href="http://technikkultur-erfurt.de/_media/verein:mitgliedsantrag.pdf">Mitglied werden</a> |
| | <hr style="margin: 5px auto;" /> |
| | <a href="https://technikkultur-erfurt.de/kontakt">Kontakt & Social Media</a> |
| | </h3> |
| | </div> |
| <!-- ***** Raumstatus ***** --> | <!-- ***** Raumstatus ***** --> |
| <h1 style="text-align: center">Raumstatus</h1> | <div class="well" style="color: #999; padding: 10px;"> |
| <a href="https://status.bytespeicher.org/"> | <?php |
| <?php | |
| $context = stream_context_create(array('http'=> array('timeout' => 3))); | // Spaces |
| $status = json_decode(file_get_contents('https://status.bytespeicher.org/status.json', false, $context)); | $spaces = [ |
| if($status && isset($status->state->open) && $status->state->open === true) { | 'Bytespeicher' => 'http://status.bytespeicher.org', |
| echo '<img src='.$status->icon->open.' style="max-width: 100%;" alt="Raumstatus des Bytespeicher, offen" title="Der Bytespeicher ist offen!" />'; | 'Makerspace' => 'http://status.makerspace-erfurt.de', |
| } else { | ]; |
| echo '<img src='.$status->icon->closed.' style="max-width: 100%;" alt="Raumstatus des Bytespeicher, geschlossen" title="Der Bytespeicher ist geschlossen!" />'; | |
| | // Max width of icon (small = 100, large = 200) |
| | $cssMaxWidth = 100; |
| | |
| | // JSON path for URI |
| | $statusJsonPath = '/status-minimal.json'; |
| | |
| | // Create stream context with low timeout |
| | $context = stream_context_create([ |
| | 'http' => [ |
| | 'method' => "GET", |
| | 'timeout' => 1 |
| | ] |
| | ]); |
| | |
| | // Check every space |
| | // No output on errors |
| | foreach ($spaces as $spaceName => $statusUrl) { |
| | // Get minimal status from spacestatus webpage |
| | $jsonContent = file_get_contents($statusUrl . $statusJsonPath, false, $context); |
| | if ($jsonContent === false) { |
| | // Status could not be received, skip it |
| | continue; |
| } | } |
| ?> | |
| </a> | // Decode JSON with max depth of 2 |
| <a href="https://status.makerspace-erfurt.de/"> | $jsonContent = json_decode($jsonContent, false, 2); |
| <?php | if (is_null($jsonContent) || !isset($jsonContent->open) || !isset($jsonContent->icon)) { |
| $context = stream_context_create(array('http'=> array('timeout' => 3))); | // JSON could not be decoded or entries missing |
| $status = json_decode(file_get_contents('https://status.makerspace-erfurt.de/status.json', false, $context)); | continue; |
| if($status && isset($status->state->open) && $status->state->open === true) { | |
| echo '<img src='.$status->icon->open.' style="max-width: 100%;" alt="Raumstatus des Makerspace, offen" title="Der Makerspace ist offen!" />'; | |
| } else { | |
| echo '<img src='.$status->icon->closed.' style="max-width: 100%;" alt="Raumstatus des Makerspace, geschlossen" title="Der Makerspace ist geschlossen!" />'; | |
| } | } |
| ?> | |
| </a> | // Output spaces |
| <hr /> | $text = 'Der ' . $spaceName . ' ist ' . ($jsonContent->open === true ? 'offen' : 'geschlossen') . '!'; |
| <div class="well" style="color: #999; padding: 10px;"> | echo '<a href=\'' . $statusUrl . '\'>'; |
| <h3 style="text-align: center; font-weight: bold;"><a href="http://technikkultur-erfurt.de/_media/verein:mitgliedsantrag.pdf">Mitglied werden!</a></h3> | echo '<img src=\'' . $jsonContent->icon . '\' title=\'' . $text . '\' alt=\'Raumstatus des ' . $spaceName . '\' style=\'width:100%;max-width:' . $cssMaxWidth . 'px;\' />'; |
| <hr style="margin: 5px auto;" /> | echo '</a>'; |
| <strong>Neues im Social Media:</strong><br /> | } |
| <a href="http://twitter.com/Bytespeicher_ef">Twitter</a> • | |
| <a href="https://www.facebook.com/Bytespeicher">Facebook</a> • | ?> |
| <a href="https://plus.google.com/u/0/communities/113086269259260523588">Google+</a> | |
| </div> | </div> |
| <hr /> | |
| <img src="/lib/tpl/bootstrap3/images/hetzner_hosted_160.gif" /> | |
| </file> | </file> |
| |
| |
| <file|local.php> | <file|local.php> |
| $conf['title'] = 'Technikkultur in Erfurt'; | $conf['title'] = 'Verein zur Förderung von Technikkultur in Erfurt e.V'; |
| | $conf['baseurl'] = 'https://wiki.technikkultur-erfurt.de'; |
| $conf['lang'] = 'de'; | $conf['lang'] = 'de'; |
| $conf['template'] = 'bootstrap3'; | $conf['template'] = 'bootstrap3'; |
| $conf['passcrypt'] = 'sha512'; | $conf['passcrypt'] = 'sha512'; |
| $conf['superuser'] = '@admin'; | $conf['superuser'] = '@admin'; |
| | $conf['disableactions'] = 'register'; |
| $conf['mediarevisions'] = 0; | $conf['mediarevisions'] = 0; |
| $conf['mailfrom'] = 'noreply@technikkultur-erfurt.de'; | $conf['mailfrom'] = 'noreply@technikkultur-erfurt.de'; |
| $conf['userewrite'] = '1'; | $conf['userewrite'] = '1'; |
| $conf['plugin']['codemirror']['nativeeditor'] = 1; | $conf['plugin']['codemirror']['nativeeditor'] = 1; |
| $conf['plugin']['iCalendar']['dformat'] = '%d. %B %Y'; | |
| $conf['plugin']['iCalendar']['default'] = '===== {date}: {summary} ===== | |
| |
| |
| |
| {description}'; | {description}'; |
| $conf['plugin']['iCalendar']['list'] = '====== {date}: {summary} ====== | |
| |
| **<sup>Location: {location}</sup>**\\\\ | |
| |
| {description}'; | |
| $conf['plugin']['iCalendar']['table'] = '| **{date}** | {summary} | {location_link} |'; | |
| $conf['plugin']['dw2pdf']['template'] = 'technikkultur'; | $conf['plugin']['dw2pdf']['template'] = 'technikkultur'; |
| $conf['plugin']['dw2pdf']['output'] = 'browser'; | $conf['plugin']['dw2pdf']['output'] = 'browser'; |
| $conf['tpl']['bootstrap3']['showBadges'] = 0; | $conf['tpl']['bootstrap3']['showBadges'] = 0; |
| </file> | </file> |
| |