Skip to content
This repository has been archived by the owner on Apr 25, 2022. It is now read-only.

Programmstruktur

KIMBtech edited this page Mar 28, 2019 · 12 revisions

Server API

Behandelt Version v1.1.0

Es gibt zwei Typen der API eine AJAX API, welche mit Sessions arbeitet und eine RESTful API, welche den Authentifikationscode aus Authentifikationslinks nutzt.

Die URL für einen Request ist wie folgt aufgebaut:

https://<<notes-url>>/[rest/ajax].php?<<task>>

https://notes.example.com/rest.php?auth
https://notes.example.com/ajax.php?login

Jeder Task bestimmt weitere (POST-)Parameter, bei denen auch die Reihenfolge definiert ist. Die meisten Tasks (inkl. Parameter) sind für REST und AJAX gleich.

Task ajax.php rest.php Beschreibung
login Session erstellen (User einloggen), User ausloggen, Status abfragen
auth Authcode erstellen, UserID bestimmen
list Liste lesen und bearbeiten, Notizarchiv
view Datei lesen und schreiben, Verlauf, Freigaben bearbeiten
admin User hinzufügen und löschen
account Authcode erstellen und löschen, Passwort ändern
share Inhalt der Freigaben lesen und schreiben (RESTful, trotzdem ajax.php)

Bei Anfragen an die REST API muss immer die UserID (userid) und ein Authcode (authcode) mittels POST angegeben werden (Ausnahmen in auth).
Bei Anfragen an die AJAX API müssen Cookies korrekt behandelt werden und weiterhin hat die Session eine Lebensdauer.

Anfragen

Für die genauen Anfragen siehe Server API – Anfragen.

WebApp

Die WebApp ist in JavaScript geschrieben und besteht grob gesagt aus drei Teilen.

  1. Login
    • Freigaben erkennen
    • Authentifikationslinks und Sessions erkennen
    • REST oder AJAX API wählen
    • Login mit Loginformular durchführen
    • Logout Button anzeigen und mit Leben füllen
  2. Notizliste
    • Liste der Notizen
    • Neue Notizen erstellen
  3. Notes
    • Notizen lesen und schreiben
    • Freigabe
    • Verlauf

Weiterhin gibt es:

  • Account-Manager
    • Passwort ändern
    • Authentifikationslinks verwalten
  • Admin-Dialog
    • User erstellen und löschen
  • Notizarchiv
    • Erlaubt es gelöschte (archivierte) Notizen wiederzuholen.
  • Freigaben
    • Präsentiert dem User die Freigaben
  • Offline-Manager
    • Speichert die Offline-Änderungen an Notizen und lädt sie so bald wie möglich hoch.

Globale Funktionen und Variablen

  • Globale Variablen Allgemein (sowas wie public Attribute)
    • JSON : userinformation = { "name": String, "id": String, "admin" : bool , "authcode" : String }
      • allgemeine Userdaten werden hier verfügbar gehalten
      • wird im localStorage gesichert
    • bool : systemOfflineMode
      • true, wenn die WebApp offline ist
      • wird von der ajax_request-Funktion gesetzt
    • OfflineManager : systemOfflineManager
      • eine Instanz des OfflineManagers
    • bool : systemRESTAPI
      • true, wenn die WebApp REST API nutzt
      • wird von Login gesetzt und von ajax_request beachtet
  • Globale Funktionen Allgemein (sowas wie public Methoden)
    • void review( enabled )
      • einen der drei Bereich im DOM anzeigen, die anderen ausblenden
      • enabled : (login, noteview, noteslist, globalloader)
    • void errorMessage( message, remove )
      • global eine Fehlermeldung anzeigen
      • Text der Medlung String, null für keine Meldung
      • (optional, Standard 10) int Zeit in Sekunden bis Meldung verschwindet, false um immer anzuzeigen
    • void ajax_request( task, post, callback, errcallback )
    • function confirmDialog(cont, buttons, title)
  • Globale Variablen von Funktionen (sowas wie public Attribute und Methoden)
    • int : errorMessageTimeOut
    • bool : list_first_load
    • CodeMirror : cm_editor
    • function : newerNoteOnServerFound
  • localStorage Daten
    • ToDo

Ablauf des Programms und seiner Teile

Beim Aufruf der Seite wird zuerst der erste Teil Login gestartet.

Login

Teil Login geht wie folgt vor (bei Nein/ nicht erfolgreich zum nächsten Punkt, bei Ja/ erfolgreich zum Unterpunkt):

  1. Prüfe ob Freigabelink geöffnet
    • rufe Freigaben auf
  2. Prüfe auf Logindaten im localStorage
    • Authcode vorhanden
      • nutze REST API für Notizliste
    • Andernfalls prüfe Session
      • nutze AJAX API für Notizliste
  3. Prüfe ob ein Authentifikationslink aufgerufen
    • Teste den Link am Server
      • nutze REST API für Notizliste
  4. Zeige Loginformular
    • Bitte User um Eingabe seiner Daten
    • Versuche mit Daten einzuloggen
      • nutze AJAX API für Notizliste

Vor dem Aufruf der Notizliste wird der Logoutbutton und die Buttons für Account-Manager und evtl. Admin-Dialog angezeigt.
Außerdem wir eine regelmäßige Prüfung der Session gestartet, diese erkennt auch Änderungen an geöffnete Notizen auf dem Server.

Der Logoutbutton zerstört die Session auf dem Server (wenn AJAX API) und löscht entweder den gesamten localStorage oder nur die User-Informationen. Außerdem werden die DOM-Elemente bereinigt.

Notizliste

Notes

Account-Manager

Admin-Dialog

Notizarchiv

Freigaben

Offline-Manager

Desktop-Application

Allgemein erfragt die App Servername und die Logindaten und erstellt mit diesen einen Authentifikationslink. Anschließend wird über ein WebView Element KIMB-Notes geladen, wobei der Authentifikationslink übergeben wird.

ToDo