WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 26.12.2016 17:46:30

grindbatzn
Gast

Puh - auf Schiene: GlobalUploads

GlobalUploads stellt eine zeitgemäße Upload-Funktion für alle Module zur Verfügung.

Es hat mich immer schon gestört, dass jedes Modul seine eigenen, meist relativ ungepflegten und lieblosen Upload-Funktionen hat; etwa für Bilder (inkl Resizen).
Das muss doch heutzutage anders gehen: Mit allem PiPaPo und so zeugs dran.

Yeah! Gerade ist auf einer Testseite der „Proof of Concept“ ohne Fehler durchgelaufen.

Es wird zwar noch ein bissel dauern, bis es eine „fertige Version“ gibt, aber falls sich gerade jemand mit der Upload-Funktion seines Moduls herumquält, kann es ja schon mal interessant sein.

upload.php
Wird mit ein paar Parametern als iFrame eingebunden, an beliebiger Stelle und enthält eigentlich nichts als den Upload-Schalter, der sich während des Uploads einem Fortschrittsbalken und ggf Fehlermeldungen wandelt.
Sehr unkompliziert, geht im Frontend und im Backend, auch mehrere gleichzeitig, können beliebig auch nachgeholt werden. Kommen sich nicht in die Quere, auch wenn verschiedenen Module auf einer Seite sind.

receiver.php (für Namensvorschläge bin ich offen)
Das ist das eigentliche Ding, das die Uploads entgegennimmt und verarbeitet.

Bei meiner monatlichen Dusche ist mir eingefallen, wie das mit dem jeweiligen Modul zusammengeht - und auch die Sicherheit gewahrt wird:
Von upload.php wird neben $_FILES per $_POST mitgegeben:
caller: das Modul, für das der Upload erledigt wird
section_id: eben die section, zu der der Upload gehört.
item_id: falls mehrere Uploads gleichzeitig laufen können.

In Receiver.php wird zunächst überprüft, ob der User die Berechtigung zu Modul $caller hat - und zur $page_id, die über $section_id festgestellt werden kann.
Da kann man eigentlich nichts tricksen, was man nicht mit jedem anderen Modul auch kann.

Außerdem muss ein Modul, das von GlobalUploads unterstützt werden will, eine zusätzliche Datei globalupload.php enthalten, die includet wird und genau definierter Form Informationen bereitstellen muss: Wo sollen die Bilder hingeladen werden, wie soll der Dateiname sein, wie groß, usw.
Ist kein Hexenwerk, und ich denke, ich habe da alle möglichen Fälle abgedeckt.
Grundsätzlich wird /zoom und ggf /original gespeichert, das braucht man zum Beschneiden. Das wird aber noch etwas dauern, bis Crop auch dabei ist.

Wenn receiver.php durch ist, werden Informationen über Erfolg und die Liste der Uploads an upload.php zurückgesendet, wo wiederum eine function parent.handleuploads(data) gestartet wird und den Rest erledigt.

Beitrag geändert von grindbatzn (26.12.2016 17:48:45)

Liked by:

florian

#2 02.01.2017 10:03:32

grindbatzn
Gast

Re: Puh - auf Schiene: GlobalUploads

Kleiner Zwischenbericht

Zum Anfassen wird es so bald noch nix geben, leider
Ich bin aber ziemlich dran an der Sache, hab als Testobjekt nebenher ein Modul "Teasers" gemacht, weil Itemz doch etwas speziell ist.

Probleme habe ich, einen vernünftigen Standard zu finden, wie der Austausch der Daten funktioniert. Das ist deswegen schwierig, weil das muss dann ja lange halten und alle möglichen Fälle abdecken. Das kann  man nachträglich schwer ändern, sind ja immer mehrere Komponenten beteiligt.

Ich denke auch daran, dass das Ganze für Templates und auch für den Core verfügbar sein soll; etwa dass das Feld "pages:page_icon" in WB endlich eine Verwendung bekommen könnte.
Und dann noch viele Kleinigkeiten, etwa das Beschneiden sehr großer Bilder (header), was einfach aus Platzgründen Probleme macht.

Beitrag geändert von grindbatzn (02.01.2017 10:40:10)

#3 02.01.2017 12:15:54

stefanek
Developer

Re: Puh - auf Schiene: GlobalUploads

Probleme habe ich, einen vernünftigen Standard zu finden, wie der Austausch der Daten funktioniert. Das ist deswegen schwierig, weil das muss dann ja lange halten und alle möglichen Fälle abdecken. Das kann  man nachträglich schwer ändern, sind ja immer mehrere Komponenten beteiligt.

Das kommt wirklich darauf an, wie Du es machst.
Wenn Du es so machst wie im Eingangspost angedeutet, dass die Module noch extra Dateien brauchen die Code zur Verfügung stellen, dann ja, es wird schwierig.

Wenn Du hingegen in den Modulen nur mit einem Objekt arbeitest mithilfe dessen Du die Settings für den Upload Mechanismus setzt, wird es nicht besonders schwierig nachzurüsten oder zu modifizieren.

Ich kann mir momentan kein Bild davon machen warum Du die ganzen Dateien dazu brauchst, statt es über eine Klasse zu machen.

Hast Du nicht neulich schon einen Thread aufgemacht, wo es um etwas dieser Art ging?

Grundsätzlich ist ein GlobalUploads Mechanismus sehr wünschenswert.

Es ist etwas woran man als Team arbeiten könnte.

Christian


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#4 02.01.2017 18:47:18

grindbatzn
Gast

Re: Puh - auf Schiene: GlobalUploads

Es hat ja jedes Modul seine eigene Art, wie die Bildgrößen und -verzeichnisse gespeichert werden.

Wie würde denn eine Klasse funktionieren, die von einem Modul nur weiß, wie sein Verzeichnisname lautet?
Wie soll die denn die Werte holen? Ich glaube, du vertraust da ein bissel zu viel auf die Kraft der Objekte ;-)

Nein, die muss ihm das Modul sagen, also ist eine zusätzliche Datei nötig, die die Werte bereitstellt. Ist aber kein Hexenwerk. Und wer nicht will, kann ja selber machen.
Und es sind auch weitere Anpassungen nötig; im PHP, in JS und CSS. Ist aber alles Copy/Paste Zeugs und von einem Modulentwickler kann man ja erwarten, dass er eine vorgegebene Variable richtig setzt.

#5 02.01.2017 19:18:45

stefanek
Developer

Re: Puh - auf Schiene: GlobalUploads

grindbatzn schrieb:

Wie würde denn eine Klasse funktionieren, die von einem Modul nur weiß, wie sein Verzeichnisname lautet?
Wie soll die denn die Werte holen? Ich glaube, du vertraust da ein bissel zu viel auf die Kraft der Objekte ;-)

Ich weiß ja nicht wie Dein Wissensstand über OOP ist, ich weiß dass Du öfter von Macromedia sprichst, wenn das Thema aufkommt.

Aber gut, woher soll ein Objekt etwas wissen?
Indem Du es ihm mitteilst.

Die Klasse hat all das Frimmel-Frammel JS, CSS und so weiter schon bereit. Inklusive Layout.

Und Du startest einfach ein Objekt und setzt die entsprechenden Variablen (bzw. Eigenschaften) bevor Du das Objekt die letztendliche Ausgabe machen läßt.
Kein Hexenwerk.

Christian


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#6 04.01.2017 11:37:35

grindbatzn
Gast

Re: Puh - auf Schiene: GlobalUploads

Sodanna:
Es gibt was zu sehen, falls es wen interessiert.

wbce.at/downloads/teasers-0.1.0.zip
wbce.at/downloads/globalupload-0.1.0.zip
Beide noch Alpha

Teasers ist eine Art Arbeits- und Demonstationsmodul für GlobalUpload
Noch ziemlich grob, man kann zb noch keine neuen Teaser anlegen (zu Beginn werden 4 gemacht, die kann man auf inaktiv setzen). Auch sonst gibt es noch reichlich Seltsamkeiten.
Ihr braucht mir keine Bugs melden ;-)

Man kann übrigens alles im Frontend machen - auch am Handy. (bzw: Wird man können, wenns ist)
Auch die Texte sind für angemeldete User im Frontend editierbar.

Mit Teasers habe ich insgesamt noch mehr vor. Es wird so wie in der rFG putzige Effekte geben, zum einfach dazuschalten.
Außerdem einen 2. Modus, um diverse Header-Slider zu verwalten; das geht aber dann nur mehr im Backend.

Und nicht zuletzt als schnelle News in der Sidebar.

GlobalUpload ist eigentlich kein Modul, sondern stellt die Funktionen zur Verfügung. Ist relativ leicht in ein beliebiges Modul einzubauen.
Ist noch nicht allzu ausgefeilt und hat die selben Bugs, die auch der Upload in Topics hat: Probleme beim Zuschneiden, wenn das hochgeladene Bild zu klein ist.

Liked by:

florian

#7 05.01.2017 12:12:41

grindbatzn
Gast

Re: Puh - auf Schiene: GlobalUploads

Ich habe gerade die Versionen 0.1.1 hochgeladen:
http://wbce.at/downloads/globalupload-0.1.1.zip
http://wbce.at/downloads/teasers-0.1.1.zip

In Teasers kann man jetzt auch Items anlegen und löschen. Allerdings derzeit nur im Backend - dort kann man dafür keine Dateien hochladen (nur Bilder). Im Frontend kann man dafür anderes nicht, und das wird zT auch so bleiben, weil es einfach zu voll gerammelt wird.

Über kurz oder lang wird es natürlich so sein, dass man im Backend alles machen kann, im Frontend nur die schnellen Basics: Anlegen, Bilder/Files hochladen; Link setzen, Text ändern, Active ändern (+ Löschen)

So langsam werde ich mir bei Teasers auch was für die Settings überlegen müssen. Die Mühen der Ebene...

Beitrag geändert von grindbatzn (05.01.2017 12:21:29)

#8 05.01.2017 13:29:36

grindbatzn
Gast

Re: Puh - auf Schiene: GlobalUploads

Mein weiterer Plan zu Teasers:
Die Items sind nach Datum (neueste zuerst) oder random sortiert. Vielleicht gibt es ein Limit, mal sehen.
Problem bei random: Das kann man dann kaum im Frontend editieren, wenns nach jedem Speichern woanders steht.


Modus "Teaser":
Hier wird Frontend-Edit unterstützt. Da ist ein Haufen JS/jQuery beteiligt, deswegen hat man in der "inneren Gestaltung" wenig Spielraum: Jedes Ding hat seine Classes und man kann das alles über CSS ändern, aber Templates wird es nicht geben, da verheddert man sich nur drin. Die Ausgabe ist fix. Wenn man etwas nicht will, wird es auf display:none gesetzt.
Einstellbar werden vordefinierte CSS Transitions und diese neumodernen Zappel-Dinger ;-) sein.
Vielleicht kommt mal ein "Sub-Modus", wo statt Bildern  Font-Awesome Icons verwendet werden können. Hat aber nicht oberste Priorität.

Modus Slider:
Da wird es Templates geben - und deswegen KEIN Frontend-Edit. Geht ja auch gar nicht, wie will man slidende Bilder bearbeiten.
Das sollte dann so laufen wie die Lightboxes in der Foldergallery, einfach zum Auswählen.

Sonderfall: MyMiniNews:
Das ist im Prinzip wie Modus Teaser, aber einspaltig. Die Ausgabe pro Block ist je nach Active anders: Kein Bild bei Active 1, Thumb bei Active 2, 100% Bild bei Aktive 3. Im Frontend bearbeitbar.

#9 06.01.2017 15:32:51

cherrg
Mitglied

Re: Puh - auf Schiene: GlobalUploads

Heyho grindbatzn,
ich habe mir vergangene Nacht mal deine Module zu Gemüte geführt.

Jetzt weiß ich auch, wie man die Modul Berechtigungen abfragt, ohne dazu das Admin-Object zu verwenden. -> Wieder was gelernt smile
Auch habe ich die Variante mit dem Iframe verstanden.
Ich beziehe mich hier mal mit auf das iiUpload Modul (https://forum.wbce.org/viewtopic.php?id=875).
Das was im Iframe passiert, ist im Prinzip das gleiche, was in iiUpload im Overlay passiert.
An eine Verwendung ohne extra Fenster hatte ich gar nicht gedacht, verstehe aber wofür das gut wäre.
An sich ginge das auch ohne Iframe...

Sehe ich das richtig, dass jeder Button als extra Iframe geladen wird? Sprich auch der 'Browser' ist in einer extra Datei?

Im großen und Ganzen arbeiten die Module im Uploadbereich gleich (sprich ohne JS geht nichts, in alten IE Versionen geht nicht viel).
Bei mir (iiUpload) habe ich aber den Upload auf eine Datei auf einmal begrenzt (Der Server arbeitet nur die erste Datei ab), für einen Fallback müsste ich das noch ändern. Die Bilder werden also nacheinander übertragen und das JS wartet erst eine Antwort ab, bevor die nächste Datei übertragen wird. Desweiteren blockt das meinige noch alles außer die unterstützten Dateien im JS ab.
Im Endeffekt sollten wir uns beim Upload auf eine Variante einigen, und diese dann vervollständigen, sonst bauen wir an 2 Modulen smile
Eine Art Dateibrowser fehlt zum Beispiel bei iiUpload noch komplett.

(Dann hatte ich zwischendurch ein paar Meldungen im Log, dass die 'tool.php' nicht gefunden wurde. )

Sicherheitstechnisch bin ich mir nicht ganz sicher, welche Dateien man bei der Übertragung zulassen sollte. Ich hab gesehen, dass es diese globale Variable gibt, die einiges blockt. (Wird auch so was wie '.sh' geblockt?)
Die Alternative wäre eine extension-Whitelist, ist aber in beiden Fällen etwas unglücklich...

Gruß
Michael

Offline

#10 06.01.2017 16:12:13

grindbatzn
Gast

Re: Puh - auf Schiene: GlobalUploads

Servus Michael
Whilelist hatte ich mal wo, das war super nervig. Da muss man dauernd dransein..

2 Module:
Momentan unterscheiden sich die 2 Module grundsätzlich schon vom Ansatz her:
GlobalUpload "hängt" immer an einem Modul, macht den Upload für dieses Modul und übernimmt damit indirekt dessen Berechtigungen.
Es geht auch davon aus, dass es immer mehrere fixe Größen gibt - die vom Modul eben so vorgegeben werden - sich aber nachträglich ändern können.
Da macht ein Beschneiden VOR dem Upload wenig Sinn(*).
Das ist aber wieder genau das, was die Stärke deines Modules ist.

*(Gerade mal eine Reduktion der Dateigröße auf ein "vertretbares" Maß würde sinnvoll sein.)

So insgesamt darfst du GlobalUploads nicht als "fertig" ansehen. Der iFrame hat im wesentlichen auch den Sinn, dass sich das sehr leicht in andere Module einbauen lässt. Und im Gegensatz zur jetzigen Version wird es sicher besser sein, man erzeugt ihn erst bei Bedarf mit etwas JS.

Auch der Bild/DateiBrowser und das Croppen sind iFrames, die in jedes andere Modul einfach reingeladen werden, ohne dass es hier Konflikte gibt.

Da muss ich noch aufräumen - und vor allem dafür sorgen, dass mehrere Module auf einer Seite sein können, die gup verwenden.
Auch das hier wird noch anders:
<script>
var upl_caller = "'.$mod_dir.'";
</script>

das wird eher was in RIchtung
var section_set_.section_id = {'caller':... ,'picpath':...};

Sonst überschreibt sich der Krempel gegenseitig.

Beitrag geändert von grindbatzn (06.01.2017 16:12:37)

#11 06.01.2017 16:29:02

grindbatzn
Gast

Re: Puh - auf Schiene: GlobalUploads

Zum Multiple Upload:
Da tu mir ich natürlich leichter - ich muss da nichts darstellen außer einem Balken ;-)
Deswegen ist das alles grundsätzlich mal so vorgesehen. Ausgeschaltet ist leicht.

Ich achte auch sehr darauf, dass das alles mit dem Handy funktioniert, zumindest mit Android teste ich laufend, gelegentlich auch iPhone.

#12 06.01.2017 20:00:26

cherrg
Mitglied

Re: Puh - auf Schiene: GlobalUploads

grindbatzn schrieb:

Momentan unterscheiden sich die 2 Module grundsätzlich schon vom Ansatz her:
GlobalUpload "hängt" immer an einem Modul, macht den Upload für dieses Modul und übernimmt damit indirekt dessen Berechtigungen.

Ich meinte mit Gleichheit, dass beide Module die Dateien per Ajax-Post verschicken und eine Art 'receiver' haben, der den Upload steuert. Unabhängig, das das eine in einem Iframe sitzt, das andere erst ein Overlay öffnet.
Mit den Berechtigungen hatte ich folgenden Gedanken, als ich das Modul gebaut habe:
Es gibt Nutzer die dürfen nichts hochladen, dann gibt es welche, die können Bilder hochladen, und dann welche, die dürfen alles hochladen.
Ich hatte es absichtlich nicht an die Modulberechtigungen geklammert. Einmal kann der Upload von allen Nutzern von jedem Modul aufgerufen werden, wo es benötigt wird, und die Berechtigungen zum hochladen vorhanden sind. Da sowieso alles im media verzeichnis landet, sah ich die das eher so: wenn ein Nutzer ein Modul nutzen darf, welches den Upload erlaubt/unterstützt, kommt er sowieso überall hin...

grindbatzn schrieb:

Es geht auch davon aus, dass es immer mehrere fixe Größen gibt - die vom Modul eben so vorgegeben werden - sich aber nachträglich ändern können.
Da macht ein Beschneiden VOR dem Upload wenig Sinn(*).

Im Prinzip ist das ja nichts anderes als ein großes Bild und kleinere Bilder, bei iiUpload eben Thumbnail bezeichnet, könnte man aber beliebig viele erstellen.
Beim Beschneiden ging es mir darum, den Ausschnitt eines Bildes hochzuladen, ohne vorher ein Fotoprogramm zum Schneiden nutzen zu müssen.
Bei dir war (glaub ich) der Ansatz, aus dem Original verschiedene Ausschnitte erstellen zu können.

Auf Android hatte ich auch getestet, IPhone hab ich nicht.
Da wir allerdings der selbe Ajax Zauber im Hintergrund abläuft, sollten die Ergebnisse ähnlich sein smile

Gruß,
Michael

Beitrag geändert von cherrg (06.01.2017 22:40:38)

Offline

#13 06.01.2017 20:09:19

grindmobil
Gast

Re: Puh - auf Schiene: GlobalUploads

Das beschneiden geht bei mir nicht am Handy u Tablet. Ich hoffe, es geht mit der neuen jquery Version.
Geht das bei deinem uploader?

#14 06.01.2017 20:27:19

cherrg
Mitglied

Re: Puh - auf Schiene: GlobalUploads

Jo, ich nutze aber auch nur eine 'fremde' Bibliothek zum schneiden. Mit dem Teil wäre es auch möglich die Bilder schon im JS zu verkleinern, wenn diese zu groß wären und der Browser es unterstützt. Google am besten mal nach cropperjs. -> das nutze ich.
Beim Zuschneiden werden bei iiUpload aber nur die Kanten berechnet und als AjaxData mit übergeben (deswegen der Einzelupload). Das eigentliche Zuschneiden übernimmt dann die 'class.upload.php'.

Ich glaub das sich die Module gut gegenseitig ergänzen würden (funktionstechnisch).
Gruß, Michael

Beitrag geändert von cherrg (07.01.2017 14:45:40)

Offline

Liked by:

stefanek

#15 06.01.2017 20:32:33

grindmobil
Gast

Re: Puh - auf Schiene: GlobalUploads

Ja, ich glaube, wir sollten da an einem Strang ziehen. Unser Knowhow zusammenbringen. Dann kann das eine gute und moderne Sache werden.

Liked by:

stefanek

#16 07.01.2017 15:53:20

grindbatzn
Gast

Re: Puh - auf Schiene: GlobalUploads

Erste Eindrücke zu GlobalUpload
https://youtu.be/Q6K2lii9jyE

Ein gestottertes Video sagt mehr als 1000 Tippfehler ;-)

Beitrag geändert von grindbatzn (07.01.2017 16:55:25)

Liked by:

cwsoft, petero, thanks

#17 21.01.2017 15:59:13

grindbatzn
Gast

Re: Puh - auf Schiene: GlobalUploads

Jo, ich bastel immer noch dran, wie ein Verrückter (verrückt - das findet auch meine Frau...)

Teasers wird immer besser.
Ich Wahnsinniger habe mir eingebildet, das alles a) Handy-Tauglich b) im Frontend und im Backend bearbeitbar (wobei die Frontend-Version richtig cool aussieht, leider manchmal etwas "üppig", weil die handytauglichen Schalter so groß sind.)
Und c) alles von Grund auf neu zu schreiben, also mit leeren Dateien anfangen.
Allzu lang wirds nimmer dauern, hoffe ich.

teasers-basteln.jpg

http://wbce.at/tpls/unterseiten/teaser.php

Liked by:

florian, sillar, cwsoft, colinax

#18 29.01.2017 16:15:23

grindbatzn
Gast

Re: Puh - auf Schiene: GlobalUploads

Zieht sich, aber wird.
Und der Browsercache ist ein Hund ;-) Und das Ruckeln ist nur auf dem Video so.

Kleiner Zwischenbericht: GlobalUpload und Seitenbilder:
https://youtu.be/IphQOzvExDk

Beitrag geändert von grindbatzn (29.01.2017 16:21:01)

#19 01.03.2017 22:14:14

thanks
Mitglied

Re: Puh - auf Schiene: GlobalUploads

grindbatzn schrieb:

... ich bastel immer noch dran, wie ein Verrückter (verrückt - das findet auch meine Frau...)

Das hat sich aber gelohnt. Ich habe mich heute (im Rahmen eines Proektes) mal ein wenig intensiver mit den beiden Modulen beschäftigt oder besser gesagt, mit deren Anwendung. Da ist in den letzten vier Wochen ja noch richtig Hirnschmalz eingeflossen wink
Ein tolles Werkzeug, das mir einiges an Fummelarbeit abgenommen hat. Man merkt immer wieder, Chio ist ein Praktiker und das merkt man in seinen Templates und Modulen.

Um noch mal auf das Eingangszitat zu kommen: Hoffentlich ist Frauchen nicht dauerhaft der Meinung einen Verrückten im Haus zu haben wink

Offline

#20 02.03.2017 18:58:40

grindmobil
Gast

Re: Puh - auf Schiene: GlobalUploads

Danke fürs Kompliment smile

Globalupload ist in der letzten Zeit ein bissel liegen geblieben, ich musste Geld scheffeln.

Habe aber heute Mal begonnen, das Ding in itemz einzubauen, als proof of concept. Schaut gut aus, ist mit Anleitung eigentlich recht einfach.

Beitrag geändert von grindmobil (02.03.2017 19:00:00)

Liked by:

florian

Fußzeile des Forums

up