Giter VIP home page Giter VIP logo

protokollcleaner's Introduction

ProtokollCleaner

Features im Überblick

  • Anbindung ans SGIS
    • Anwesenheitsliste
  • Protokollkontrolle
  • Protokolle veröffentlichen
  • Protokollerinnerungen bei nicht kontrollierten, nicht abgestimmten oder nicht veröffentlichten Protokollen
  • Beschlussliste
    • automatische Wikiexport
    • durchsuchbar, filterbar, Drucklayout
      • Bsp: nach Jahren, Legislatur, Finanzbeschlüssen, Wahlen, ...
  • Todo Liste
    • Smartphone WebApp Unterstützung
  • Sitzungsplanung
    • E-Mail Einladung
    • Vortragen von Berichten
    • Tagesordnung
  • Skriptzugang für Cronjobs

Zweck

Das Tool stellt eine einfache Möglichkeit dar, interne StuRa Protokolle auf grobe Fehler zu kontrollieren und diese im hochschulöffentlichen Teil des Gremienwikis zu veröffentlichen.

Des Weiteren gibt das Tool einen Überblick über Fixmes, Todos, DeleteMes und Dateianhängen von Protokollen und entfernt interne nicht öffentliche Teile beim Exportieren.

Erweiterungen

Im Laufe der Entwicklung wurden viele Erweiterungen hinzugefügt.

Das Tool filtert die Protokolle auf Beschlüsse. Dadurch wird es möglich, die StuRa-Beschlussliste automatisch zu aktualisieren, die Beschlüsse nach Themen zu sortieren und durchsuchbar zu machen, sowie zu überprüfen, ob Protokolle in späteren StuRa-Sitzungen abgestimmt wurden. Rückwirkend wurden alle im Wiki veröffentlichten Stura-Beschlüsse importiert.

Mittlerweile ist auch die Sitzungsplanung über dieses Tool möglich. So kann man Themen/Tops einreichen, Referatsberichte vortragen und Dateianhänge bereitstellen. Ist eine konkrete Sitzung geplant, so werden Sitzungsleitung und Protokollverantwortliche über ihre Aufgaben informiert und rechtzeitig alle StuRäte per E-Mail mit einer Tagesordnung und Protokollhinweisen eingeladen. Die Sitzungsleitung kann in Vorbereitung der Sitzung eine aktuelle Anwesenheitsliste erstellen und drucken.

Die Tagesordnung wird hochschulöffentlich zur Verfügung gestellt.

Installation

  1. Repository in Webserver clonen:

clone git

    git clone https://github.com/Ref-IT/ProtokollCleaner.git
  1. die git submodule wurden gegen composer ausgetauscht
    composer install
  1. Einspielen des DB Modells mit Hilfe von MySQL Workbench

  2. Anpassen der Konfigurationsdatei config.sample.php

Installierte Instanzen

Externe Bibliotheken

  • php

    • phpMailer
    • guzzle
    • defuse-crypto
  • js/css

    • serviceWorker
    • screenfull
    • push.js
    • jQuery
    • jQueryUI
    • jQuery-DateFormat
    • jQueryUI-widget-combobox
    • dropzone
    • bootstrap
    • codeMirror
    • iLitePhoto

nginx config

To prevent access to filestorage location, make nginx config look something like this. (Apache will handle this via htaccess and rewrite engine.)

location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~* ^/files/get/filestorage/(.+){
        try_files $uri /index.php$is_args$args;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

cronjobs

To update some wikipages and user information from sGis some cronjobs are required.

Create a file '/home/< user >/.logins/cron_protocol_tool.netrc' and make sure no other user or group has access 'chmod 600 cron_protocol_tool.netrc'. Place your basic auth login information there. Do not pass this information directly via command line as other users may see them via the process list.

machine < domain >
        login < cronuser >
        password < password >

e.g.

machine helfer.stura.tu-ilmenau.de
        login cronuser
        password 012345678

add following lines to '/etc/crontab'

1  *    * * *   < user > curl --netrc-file /home/< user >/.logins/cron_protocol_tool.netrc -s -X POST https://<domain and path>/cron/mail
4  2    * * *   < user > curl --netrc-file /home/< user >/.logins/cron_protocol_tool.netrc -s -X POST https://<domain and path>/cron/wiki
2  4    * * *   < user > curl --netrc-file /home/< user >/.logins/cron_protocol_tool.netrc -s -X POST https://<domain and path>/cron/sgis

e.g.

1  *    * * *   < user > curl --netrc-file /home/< user >/.logins/cron_protocol_tool.netrc -s -X POST https://helfer.stura.tu-ilmenau.de/protocolhelper/cron/mail
4  2    * * *   < user > curl --netrc-file /home/< user >/.logins/cron_protocol_tool.netrc -s -X POST https://helfer.stura.tu-ilmenau.de/protocolhelper/cron/wiki
2  4    * * *   < user > curl --netrc-file /home/< user >/.logins/cron_protocol_tool.netrc -s -X POST https://helfer.stura.tu-ilmenau.de/protocolhelper/cron/sgis

protokollcleaner's People

Contributors

cherrg avatar konfuzzyus-ger avatar schlagma avatar mdritchie avatar

Stargazers

 avatar  avatar

Watchers

James Cloos avatar Lukas Staab avatar  avatar  avatar  avatar

protokollcleaner's Issues

Abgrenzung von public Verzeichnis

Das in dem webroot eingehange Verzeichnis (aka die Dateien die grundsätzlich von extern erreicht werden können), sollten in einem separatem Verzeichnis liegen. In diesem separatem Verzeichnis dürfen keine Klassendefinitionen, Configurationsdateien oder Hilfetexte liegen.
Hilfsfunktionen und -klassen sollten in einem eigenen Ordner, beispw. "lib", liegen.
Wenn mehr als eine Konfigurationsdatei benötigt wird (beispw. weil auch SSL Zertifikate oder Logos daneben gelegt werden müssen), sollte ein Ordner für die Konfiguration, beispw. "config" verwendet werden.

Noch abzustimmende TO Punkte

Tops die zu spät eingegangen sind sollten deutlicher (nur mit Antrag und Abstimmung) auf die Sitzung gebracht werden können.

getDateFromFileName: verify input format

Die o.g. Methode sollte sicherstellen, dass die Eingabe ein gültiges Format hat.
Die Class Date sollte geeignete Vergleichsmethoden bereitstellen und diese nicht vom Verwendet implementieren lassen. Ggf. reicht hier die PHP Standardklasse aus.

Alternative bilde das Selektionskriterium als Textrange ab.

Datum der StuRa Sitzung mit ausgeben

Für die Finanzbeschlüsse die aktuell im JSON-Format

{
"token":"Beschlussnr"
}

ausgegeben werden, soll zusätzlich die Information des Datums der Sitzung mit ausgegeben werden.

Gewünschtes Neues Format:
{
"YYY-MM-DD":
{
"token1": "beschluss1",
"token2": "beschluss2"
} ,
"Datum2":
{
"token3": "beschluss3",
"token4": "beschluss4"
}

Legislaturnummer

Nummer der Legislatur automatisiert/halautomatsisiert hochzählen

Default-Fallback-Config als separate Datei

Eine Klasse sollte kein include verwenden. Alle ihre Argumente werden dem Konstruktor explizit übergeben, sonst ist sie nicht richtig gekapselt.

Das klassische Schema für Default-Config ist:

  1. include lib/config.default.php
  2. include config/config.php

DB korrigieren

AG Wohnen entfernen,
neue AG Verbesserung der Studienbedingungen anlegen,
Beschlussliste -> Typ: Wahlen zu Wahl ändern

Send TODOs via Mail

TODOs sollten auch ca. Freitag morgens 4:01 per Mail versendet werden. die Zeile des ToDos sollte denke ich genügen. Evtl. getrimmt ;)

GUI bauen

nicht automatisch trigern, sondern via Usereingabe und kontrolle

getcwd nicht verwenden

Es gibt keinerlei Garantien darüber, welches current working directory der Webserver verwendet. Daher sollte getcwd für diesen Kontext hier NIEMALS verwendet werden.

XMLRPC API verwenden

DokuWiki hat eine XMLRPC API zum Lesen von Wiki-Seiten.
Bitte verwende diese statt direkt auf dem Dateisystem zu arbeiten.

ProtokollCleaner Ansatz

In main.php sehe ich derzeit nix, was Protokolle bereinigt.
Ich halte das auch für keine gute Idee.
Schreibe dafür am Besten ein DokuWiki Plugin, welches das Speichern von veröffentlichten Protokollen mit internem Bereich verhindert.

Ansatz FinanzenExport

Warum können die Beschlüsse für das FinanzenTool nicht einfach aus der WikiSeite mit der Beschlussliste exportiert werden?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.