Beiträge von SLM

    Die Größe eines Dialogs wird ja in den .js-Dateien festgelegt:

    Code
    function folderViewOptions(folderID)
    {
        openOverlay('email.php?sid=' + currentSID + '&do=viewOptions&folder=' + folderID,
            lang['viewoptions'],
            650,
            140,
            true);
    }

    In diesem Beispiel: 650px Breite, 140px Höhe.

    Gibt es einen technisch versierten Fuchs unter euch der mir eventuell sagen kann, wie man die Werte, beispielsweise per CSS überschreiben und die Dialoge an den Viewport anpassen könnte?

    Alternativ dazu auch die Möglichkeit, Platzhalter anzugeben, die dann per CSS angesteuert werden können.

    Eventuell könnte das eine Alternative für Widgets sein: https://gridstackjs.com/

    gridstack.js is a modern Typescript library designed to help developers create beautiful draggable, resizable, responsive bootstrap-friendly layouts with just a few lines of code.

    You can create more advanced grids: allow users to persist changes, create a sidebar of widgets to drag into your grid, and much more.

    Features:

    • pure JS can be used in any UI framework
    • mobile support
    • draggable, resizable items
    • drag'n'drop from sidebar to insert/delete
    • responsive layouts, column based
    • save/restore
    • drag between multiple grids
    • nested grids
    • external Angular, Vue, React, Ember, Knockout.js bindings and more

    Sebijk wäre es möglich das Template von mir als Standardtemplate für die Opensource Version zu verwenden?

    Dein Template (freshtemp) habe ich mir mal installiert, sieht ja aus wie ehemals in V7.3. Man muss in erster Linie weg von den Tabellen und da sehe ich Bootstrap eigentlich als gute Basis für.

    Ich denke, ein Webdesigner wird sich dazu besser äußern können. Die Frage für mich ist, ob Widgets auch responsive gestaltet werden können oder nicht.

    Bzgl. Lizenz: Ich denke, wenn wir das zusammen mit b1gMail ausliefern, muss diese mit der GPL kompatibel sein, da patrick keine Ausnahmen dazu definiert hat.

    Das mit den Widgets ist das eigentliche Problem dabei. Mit der aktuell verwendeten Methode (/clientlib/dragcontainer.js) lässt sich leider keine responsive Darstellung ermöglichen. Zumindest hab ich es noch nicht geschafft :)

    Zudem sind einige Funktionen darin mittlerweile als deprecated gekennzeichnet.

    Im PremiumPlugin kann man die Abo-Ablauf-Benachrichtigung festlegen. In meinem System ist der Wert auf 14 Tage eingestellt.

    Aufgrund der Tatsache, dass mittlerweile über 50% mobile Nutzer das System nutzen und das aktuelle Template nicht responsive ausgelegt ist, sollte der Prozess der Abo-Verlängerung einfacher gestaltet werden.

    Mein Gedanke dazu geht in folgende Richtung:

    • Mit der Abo-Ablauf-Benachrichtigungsmail (pacc_nm_text) wird ein Link generiert, der bis zum Ende der Laufzeit gültig ist.
    • Der Link führt direkt zu einem externen Bezahlformular mit dem gewohnten Procedere, ohne dass sich der Kunde in sein Konto einloggen muss.
    • Der Prozess könnte ja ähnlich dem der externen Buchung im PremiumPlugin ausgestaltet sein.

    Was meint Ihr? Jemand ne andere Idee?

    ja, geht problemlos. Man muss in der user.class.php bei der Funktion BuildvCard es auch so machen: 'firma' => $this->_row['company']. Sonst wird das Keyword firma nicht angesprochen. Deine Änderungen (bis auf die Anrede, siehe dazu separates Thema Anrede) habe ich soweit übernommen und ist im letzten Commit enthalten.

    OK, aber man muss halt zusätzlich die user.class.php anpassen. Zusätzliche Änderungen wollte ich vermeiden ;) Meine Installation werde ich dann irgendwann auch entpsrechend anpassen, sonst gibts später bei eventuellen Updates ja wieder Probleme.

    Um auch auf die Themen Datenschutz und Datensicherheit mal ein wenig einzugehen:

    • Es sollte künftig ermöglicht werden, dass Daten nicht mehr in Klartext sondern verschlüsselt in der Datenbank abgelegt werden (wahlweise)
    • Bei der Speichermethode (Dateisystem: Eine Datei pro Objekt) ist ebenfalls anzudenken, dass die Dateien verschlüsselt werden (können).

    Ergänzung #1:

    • DSGVO-kompatibles Captcha.

    Weitere Vorschläge diesbezüglich?

    Das Feld "firma" in den Kontaktdaten des Users wurde über Jahre bislang schlichtweg vergessen. Deshalb habe ich mir selbst diese Lösung mit Firma + UST-ID gebaut, vor allem, weil kunden das Fehlen reklamiert haben.

    Sebijk kannst du bitte mal prüfen, ob die Visitenkarte (anzuhängen beim E-Mailversand) auch die richtigen Daten aus deinem Feld "company" statt "firma" enthält? Die vcard.class.php verwendet nämlich den Wert "firma" beim erstellen der Datei den Wert "firma". Mit meiner Version wird die Firma in die Visitenkarte übernommen:

    Code
    else if($key == 'firma')
                {
                    $lines[] = 'ORG:' . $value;
                }

    Mein Rechnungstemplate kann ich nicht anhängen, da ich über die Jahre zu viele Änderungen am Original vorgenommen habe. Das Original-Rechnungstemplate um die beiden Tags zu erweitern sollte nicht so schwer sein.

    Zum Thema Code: Da ich - wie bereits mehrfach erwähnt - kein Entwickler bin und lediglich die Anpassungen / Änderungen die ich beitragen kann mit euch teilen möchte, kann ich das nur in der mir möglichen Form.

    Danke für den Hinweis mit dem Hinweis auf die Tabelle bm60_adressen.

    Für alle, die die kompletten Daten bei der Registrierung abfragen muss auch noch die index.php im Abschnitt "signup" und das "signup.tpl" angepasst werden. Da ich diese Daten bei der Registrierung nicht abfrage, habe ich das bei mir nicht umgesetzt.

    Hat sich schon jemand Gedanken über das Template für den internen Bereich gemacht? Es sollte auf jeden Fall responsive sein und letztendlich die mobile Version gleich mit ersetzen.

    Ich würde gerne eure Vorschläge hören/lesen, in welche Richtung das ganze gehen soll und mit welcher/m Technik / Framework es umgesetzt werden sollte.

    Schon jemand ein Beispiel an dem man mitarbeiten und helfen könnte?

    • Freigegebene Ordner können nur per eindeutiger Url geöffnet werden (/share/?folder=asd8fasdfasdfasdg), der Hash wird z.B. anhand der Ordner ID und Timestamp erstellt
      • Als Konsequenz können nicht mehr alle freigegebenen Ordner eines Benutzers angezeigt werden
    • Als Option kann angegeben werden ob man Daten hochladen kann oder nicht (aber nur falls ein Passwort angegeben wurde)

    Super!

    Toll wäre es, wenn man im UCP auswählen könnte, ob der Link zur Freigabe generell (dauerhaft) oder zeitlich limitiert gültig ist.

    Die zeitliche Limitierung könnte man dann noch gruppenabhängig machen.

    • Grundfunktion: Link dauerhaft erreichbar.
    • Premiumfunktion: Link zu Ordner zeitlich limitiert gültig.

    Wenn ich dich unterstützen kann (z.B. beim Testen) sag Bescheid.

    Wichtiger Hinweis: viele Nutzer haben als optionales Profilfeld bereits Firma/Verein angelegt, dieses sollte dann genutzt werden oder in neue Spalte übernommen und aus Profilfeldern gelöscht werden !!!

    Tabelle firma und inv_firma Länge 255 statt 50, da sonst Firmennamen abgeschnitten werden beim speichern!

    Profilfeld kam nicht in Frage, da nicht mehrsprachig. Und genau darum, weil jeder so seine eigene Lösung zwischenzeitlich gebastelt hat, sollte man die beiden Felder mal fest integrieren, zumal diese Angaben heutzutage überall Standard sind.

    Patrick hat früher oft schon Vorschläge oder Plugins irgendwann in das System integriert, wenn er einen Mehrwert gesehen hat.

    Mein Vorschlag ist ja nicht in Stein gemeißelt, soll nur einen Lösungsansatz darstellen. Den Längenwert auf 255 Zeichen anzupassen ist eine gute Idee ;)

    Ich hab mir mal die Anpassungen vorgenommen die für gewerbliche Kunden notwendig sind, da diese bislang nicht im System vorgesehen waren. Dazu zählen die Felder "Firma" und "USt-ID bzw. Steuer-Nr." Dazu habe ich noch den Wert "Divers" hinzugefügt, der für eventuelle genderneutrale Installationen wichtig ist.

    Basis sind die Dateien meiner Installation, also b1gMail 7.4PL2. Der Wert "firma" und nicht "company" wurde gewählt, da der Wert "firma" bereits in der serverlib/vcard.class.php systemseitig verwendet wird. "taxid" habe ich in Anlehnung an den schon vorhandenen Begriff "tax" verwendet.

    ----------------------------------

    Datenbankanpassungen:


    Neue Spalten in DB einfügen: 


    Tabelle bm60_users: „firma“ und „taxid“ - varchar(50) 

    Tabelle bm60_orders: „inv_firma“ und „inv_taxid“ - varchar(50)


    Anrede Auswahlmenü anpassen: 

    Tabelle bm60_users: Spalte „anrede“ ergänzt: 'herr','frau',‘divers‘,'firma' 

    ----------------------------------

    Geänderte Dateien (anhängend):

    - prefs.php

    - serverlib/payment.class.php

    - serverlib/user.class.php

    Templates angepasst (anhängend):

    • plugins/templates/pacc.nli.order.tpl
    • plugins/templates/pacc.user.order.tpl
    • li/payment.form.tpl
    • li/prefs.contact.tpl


    Sprachdateien müssen selbst angepasst werden:

    - languages/deutsch.lang.php

    - languages/english.lang.php


    $lang_user['divers'] = 'Divers';

    $lang_user['firma'] = 'Firma';

    $lang_user['taxid'] = 'USt-ID';

    $lang_user['yourtaxid'] = 'Ihre USt-ID';

    $lang_user['divers'] = 'Divers';

    $lang_user['firma'] = 'Company';

    $lang_user['taxid'] = 'VAT';

    $lang_user['yourtaxid'] = 'Your VAT';



    Die Sprachvariable „yourtaxid“ wird nur im Rechnungstemplate verwendet. 


    Rechnungstemplate (muss selbst ergänzt werden):


    Adressfeld um Firma ergänzen: 

    {if $firma}{$firma}<br />{/if} 

    Steuer-Nr / Ust-ID. des Kunden ergänzen: 

    {if $taxid}<br /><strong>{lng p="yourtaxid"}:</strong> {$taxid}{/if} 


    Der Adminbereich (ACP):

    • admin/templates/users.edit.tpl
    • admin/users.php

    kann ggfls. selbst um die Felder und Werte ergänzt werden.

    --------------

    Die Datei serverlib/vcard.class.php muss ggfls. noch um die zusätzliche Anrede ergänzt werden, das habe ich bislang noch nicht geschafft.

    Sebijk / ManDal eventuell könnt ihr das ja direkt bei den neuen Releases mit berücksichtigen. Falls noch etwas fehlt oder falsch ist wäre es nett, wenn wir das gemeinsam ergänzen / ändern.


    Wichtig: Bitte vorher ausgiebig testen und dann erst in Produktionsumgebung einsetzen!

    Ich übernehmen keine Garantie und hafte nicht bei eventuell auftrendenden Schäden an euren Systemen ;)

    Hat jemand eine Ahnung wie die App und die Toolbox auf die Daten zugreifen?

    Für die Toolbox wäre Patrick der richtige Ansprechpartner. Die App greift soweit ich weiß über eine API und PHP auf b1gMail zu. Genaueres könnte dir da aber Martin / @möp sagen.

    Da ich sehr viele Webdisk Nutzer*Innen habe, kann ich aus Erfahrung und Feedback folgende Punkte als wichtig einstufen:

    • Fehlerhandling verbessern: Beim Upload von Dateien, die zu groß gemäß den im ACP definierten Limits sind, erhält man keinerlei Feedback. Das Script bricht nur irgendwann ab. Beim Upload sollte direkt angezeigt werden, dass eine Datei nicht den Vorgaben und/oder Limits entspricht.
    • Einfaches herunterladen eines kompletten Ordners bzw. dessen Inhalts - ohne ZIP. Hier bitte auch Ordnerinhalte größer 1GB berücksichtigen - ohne PHP-Timeout. Aktuell muss man umständlich jede Datei einzeln bzw. mehrere Dateien markieren um sie dann herunterladen zu können.
    • Bild- und PDF-Vorschau: Eventuell kann man damit auch das Plugin Webdiskgalerie ersetzen.
    • Fotoalbum-Modus / Lightbox-Gallerie intern als auch im Sharebereich anzeigen.
    • Einzelne Dateien (Beispiel Wetransfer) und einzelne Ordner per Link freigeben statt alle freigegebenen Ordner anzuzeigen.
    • Einzelne Dateien freigeben: Größenlimit pro versendbarer Datei und Transferlimit separat in ACP-Gruppeneinstellung defnieren (so gewinnt man auch Premiumnutzer dazu).
    • Einfacheres Kopieren von Dateien und Ordnern
    • Freigabe-Link anonymisieren. Die E-Mailadresse hat in der Freigabe / im Freigabelink nichts zu suchen. Mein System habe ich vor Längerem schon umgerüstet und zeige nur die UserID (share/?user=111) an. Das ist nur eine Notlösung gewesen, aber wenig sinnvoll. Die Freigabe sollte aus Sicherheits- und Datenschutzgründen eine zufällige ID erhalten.
    • Hochladen von Daten vereinfachen (Auswahl der Upload Felder)
    • Drag & Drop sollte auf jeden Fall weiterhin möglich sein.

    Deswegen halte ich es sinnvoll, wenn es jemand gibt, der die Webdisk pflegen möchte.

    Leider bin ich kein Entwickler und kann da nicht aktiv mithelfen (von kleineren Anpassungen mal abgesehen). Ich helfe selbstverständlich mit wo ich kann. Z.B. irgendwelche Layoutsachen oder dergleichen, wenn der Rahmen vorgegeben ist.

    Und abgesehen von der MP-App sollte trotzdem drauf geachtet werden, dass es ein geschlossenes System bleibt.

    Bei externen Lösungen ist man auch immer darauf angewiesen, dass sich ein anderer Entwickler darum kümmert. Außerdem sind Schnittstellen zu externen Tools oft fehleranfällig und bilden immer eine Schwachstelle im System, die man nicht selbst kontrollieren kann.

    Das Problem mit einer externen Cloudlösung: Ihr vergesst dabei die mobilen Nutzer, die per App auf die Webdisk zugreifen und man kann damit die App von @möp / Martin nicht mehr nutzen. Das erfordert wieder eine zusätzliche App, noch dazu mit einem falschen Branding -> Aus meiner Sicht der falsche Ansatz.

    Bedenkt bitte bei allen euren Entwicklungen immer, dass das Wichtigste Ziel sein muss, den User / die Userin auf der eigenen Plattform bzw. im b1g-Universum zu halten und den Kunden gar nicht erst in Versuchung zu führen und nicht zu verleiten, Fremdsysteme zu nutzen.

    • Länderliste internationalisieren. Meine Vorstellung: Statt mit Länderbezeichnung mit Ländercodes arbeiten und diese in der Sprachdatei referenzieren (oder als Kennzeichnung die ID benutzen). Bisher ist die Länderliste immer in Deutsch.

    Das ist eine sehr gute Idee. Hierfür sollte die offiziellen ISO-Ländercodes verwendet werden: https://de.wikipedia.org/wiki/ISO-3166-1-Kodierliste

    ManDal hat das vorausschauend ja schon mal in seinem Wetter-Widget in die Tabelle {pre}_staaten eingebaut. Die Möglichkeit die Daten anzuzeigen und zu editieren habe ich in die Templates integriert (siehe Anhang).

    Nur hab ich noch keine Möglichkeit gefunden, die ISO-Codes mit der Sprachdatei zu referenzieren und das Länder-Auswahlmenü damit zu bestücken :/