Upload Image Size Chain

Alles rund um Module und Plugins in CONTENIDO 4.9.
Antworten
Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Upload Image Size Chain

Beitrag von Faar » Mi 17. Jul 2019, 13:41

Ich habe hier eine Chain, die Bilder vor dem Hochladen in die Dateiverwaltung automatisch skaliert.
Grund der Chain ist der, dass viele User eine Webseite keine Bildbearbeitung vor dem Hochladen machen, sondern Bilder direkt aus der hochauflösenden Kamera ins Web hochladen. Wenn das nicht wirklich nötig ist, weil das Bild so groß sein sollte, schmiert man ansonsten den Webspace zu und hat zudem auf der Webseite scheinbar kleine Bildchen, die aber lediglich klein dargestellt werden, in Wirklichkeit aber locker 24 oder 32 Megapixel groß sein können. Wer braucht ein 8000 x 4000 Pixel großes Bild in der Webseite? Vermutlich die wenigsten.
Darum diese Chain, die skaliert Bilder, wenn sie größer sind als der eingestellte Wert.
Die Chain wird über System-, Mandante- oder Usereinstellungen eingestellt.
Sofern es mit den Usereinstellungen klappt, kann man sogar je User die Chain verschieden einstellen.
Bei Bedarf auch auschalten, um mal ein großes Bild hochladen zu können.

Die Chain benützt Contenido Funktionen, könnte somit mit den neuesten Bilddatei-Formaten noch nicht klar kommen.
Es gibt natürliche Restriktionen durch den Server und die PHP Einstellungen, wie Upload-Max-Filesize oder erlaubte Dateiendungen.

Da ist der Download: https://dfabig.de/de/download/contenido ... chain.html

Mit 4.10 habe ich es noch nicht getestet.

Ok, als Nachtrag die Anleitung zum Installieren dazu:
https://docs.contenido.org/display/CONDEVE/Chain
Das wird vielleicht nicht gleich jeder verstehen, darum nochmal kurz:
1. Speicherort
Das Chain-Programm wird in /contenido/includes/chains/ abgelegt.
Speicherort.png
Speicherort für die Chain-Datei
Speicherort.png (8.01 KiB) 9685 mal betrachtet
2. Die Chain in Contenido "bekannt" zu machen
Damit die Chain überhaupt von Contenido geladen wird, muss sie noch in eine Config-Datei eingetragen werden.
Die befindet sich üblicherweise in /data/production/ und nennt sich config.chains.load.php
config2.jpg
Eintrag in der Chain config-Datei
(131.72 KiB) Noch nie heruntergeladen
Hier gibt es 2 Einträge zu tätigen: 1. die Chain-Datei und 2. den Eintrag bei welchem Hook die Chain geladen werden soll.
In diesem Fall ist des die cec-Hook "Contenido.Upload.UploadPostprocess", die selbst schon erklärt, dass sie für die Upload-Nachbearbeitung greift. Diese ist bereits in Contenido eingebaut, sonst könnten wir sie nicht nutzen. Ja, und daran anschließend einen griffigen Namen für diese Chain. Das ist zugleich der Name der Funktion in der Chain. Das muss überein stimmen.

3. Konfiguration
Die Chain ist konfigurierbar, trotzdem eine Chain eigentlich kein Userinterface hat. Aber die System-, Mandanten- oder User-Einstellungen greifen.
Hier hilft das Bildchen zu den Einstellungen schneller als man es beschrieben hat.
Einstellungen.png
Mandanten-Einstellungen
(14.59 KiB) Noch nie heruntergeladen
In den Bildanhängen sieht man die Installation auch noch anschaulich.

Noch einen Nachtrag zum Nachtrag:
Wenn man ein Update macht und die config.chains.load.php dabei auch neu hoch lädt, ist die eigene Chain natürlich wieder raus.
Zuletzt geändert von Faar am Do 18. Jul 2019, 14:07, insgesamt 1-mal geändert.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

mattmarr
Beiträge: 361
Registriert: Mo 3. Aug 2009, 14:11
Kontaktdaten:

Re: Upload Image Size Chain

Beitrag von mattmarr » Do 18. Jul 2019, 13:38

Hallo Faar!

danke für das super Script!!

Leider greift der Chain an einer Stelle nicht. Wenn man im Artikel ein Bild mit dem CMS_IMGEDITOR hoch lädt wird der Chain nicht ausgelöst.
So wie ich das sehe ist die Programmierung für das auslösen des Chain in der Datei "contenido/classes/content_types/class.content.type.imgeditor.php" > "function uplupload()" nicht eingebaut worden.



Gruß
Matthias

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Upload Image Size Chain

Beitrag von Faar » Do 18. Jul 2019, 14:05

Hallo Matthias,
tatsächlich ist die Chain nur für den Dateiverwaltungsbereich gedacht.
Und wie du festgestellt hast, andere Arten von Upload umgehen diesen Hook.

Es gibt da zwei Chains die mit dem Upload zu tun haben:
Contenido.Upload.UploadPreprocess
Contenido.Upload.UploadPostprocess
Ersteres greift im PHP-Prozess eines Fileuploads ein, bevor die Datei im Contenido Bereich gespeichert wird.
Meine Chain benützt den zweiten Hook, der danach wirksam wird.
Vielleicht würde der erste Hook bei sämtlichen Arten von Upload greifen?
Ich muss mir mal die erste Hook genauer anschauen, was sie macht und ob man da das Datei-Handling übernehmen muss wie bei einem Uploadmodul (hab ich auch noch irgendwo) ?
Vielleicht kann ich meine Chain darauf adaptieren falls der erste Hook alle Uploads betrifft.

Chains sind schon klasse, weil sie einfach vor sich hin werkeln und (meistens) tun was sie sollen.
Als eher Problem sehe ich, dass es keine Info gibt (z.B. im MyContenido Bereich), dass die Chain aktiv ist.
Ich habe auch erst jetzt beim Veröffentlichen gesehen, dass die Chain, die ja nun schon über 2 Jahre alt ist, in meiner 4.10 Testversion gar nicht mehr läuft, weil ich beim Update die config.chain.load.php überschrieben habe.
Irgendwo war doch noch beschrieben, wie man eigene Configs erstellt.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Upload Image Size Chain

Beitrag von Oldperl » Do 18. Jul 2019, 14:26

Servus,

eine Umsetzung als Plugin würde Sinn machen und die Installation auch für Laien vereinfachen.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Upload Image Size Chain

Beitrag von Faar » Do 18. Jul 2019, 15:07

Oldperl hat geschrieben:
Do 18. Jul 2019, 14:26
eine Umsetzung als Plugin würde Sinn machen und die Installation auch für Laien vereinfachen.
Im Prinzip ja, aber für Laien zu installieren ist die Chain gar nicht gedacht, denn sie richtet sich eher "gegen" Laien :twisted:
Ein Contenido Webentwickler soll die Chain installieren, damit Laien in ihrer Uploadwut begrenzt werden.
"Laien", die sich das selbst installieren wollten, wären auch in der Lage, ihre Bilder vor dem Upload zu skalieren.
Die Chain wurde ja für einen praktischen Fall entwickelt.

Der klassische Anwendungsfall ist der des Admins, der aus naheliegenden Gründen verhindern muss, dass laienhafte User gigantische Bilder hochladen.
Zum einen verhindert auch die Max-UploadFileSize all zu große Bilder aber bei manchen ist das auf 100 MB hochgeschraubt, wegen gigantischer PDF oder Videos. Ein 100 MB JPEG wäre nicht gerade klein.
Die Chain kümmert sich nur um die gängigen Pixel-Bildformate, die Contenido verarbeiten kann.
Letzteres kann noch ein Problem darstellen, wenn neue Web-Bildformate hochgeladen werden sollen, die Contenido noch nicht beherrscht.
Davon unbetroffen sind Bildformate, die nichts mit Web zu tun haben, wie Indesign, Photoshop oder Corel.

Ein Problem der eigenen Chain ist noch, dass sie beim Updaten aus der config.chains.load.php rausgeworfen wird, weil diese config-Datei in dem Update-Packet mit drin ist. Man soll ja eigentlich alle config-Dateien zuerst sichern aber meistens tun das die wenigsten und praktisch sollte es eine Art config.chains.load.local.php geben. Vielleicht gibt es die auch und ich weiß es derzeit nur nicht :shock:
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Upload Image Size Chain

Beitrag von Oldperl » So 21. Jul 2019, 12:26

Servus,
Faar hat geschrieben:
Do 18. Jul 2019, 15:07
Im Prinzip ja, aber für Laien zu installieren ist die Chain gar nicht gedacht, denn sie richtet sich eher "gegen" Laien :twisted:
Ein Contenido Webentwickler soll die Chain installieren, damit Laien in ihrer Uploadwut begrenzt werden.
"Laien", die sich das selbst installieren wollten, wären auch in der Lage, ihre Bilder vor dem Upload zu skalieren.
Die Chain wurde ja für einen praktischen Fall entwickelt.
Wie Du meinst, ich habe so etwas ähnliches als Plugin für meine ConLite umgesetzt. Es hilft meiner Meinung nach allen Admins, die eine Seite betreuen, ohne dabei die Update-Fähigkeit des Systems zu erschweren. Eventuell sollte man auch bei den Chains etwas in der Art etablieren, bzw. bei den Plugins noch Kategorien unterscheiden (System, Admin, User)

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Upload Image Size Chain

Beitrag von Faar » Mo 22. Jul 2019, 11:10

Oldperl hat geschrieben:
So 21. Jul 2019, 12:26
Wie Du meinst, ich habe so etwas ähnliches als Plugin für meine ConLite umgesetzt.
Schön für dich, und wo ist Dein Plugin hier in der Liste zum downloaden?
Eventuell sollte man auch bei den Chains etwas in der Art etablieren, bzw. bei den Plugins noch Kategorien unterscheiden (System, Admin, User)
Die Anleitung in den Docs scheint falsch zu sein: https://docs.contenido.org/display/CONDEVE/Chain
Es bräuchte im Core-Code folgendes auch für die Mandanten:

Code: Alles auswählen

if (cFileHandler::exists($cfg'path''contenido_config' . 'config.chains.load.php')) {
include_once($cfg'path''contenido_config' . 'config.chains.load.php');
}
Und vielleicht auch nochmal für das System.
Zum einen sollen sicher nicht alle eigenen Chains auf allen Mandanten wirken, daher die Suche noch in jedem Mandanten nach Chains.
Aber systemweite Chains machen in einem Mandantenordner auch von der Semantik her weniger Sinn. Ich sehe da einen Denkkonflikt, wenn man auf das gesamte System wirkende Chains im Mandanten ablegt.
Daher nochmal eigene Chain-Config im System.

Natürlich könnte man sich auch bemühen und vor dem Update alle Config-Dateien sichern (was wir ja alle machen) und dann mit Programmen wie WinMerge die beiden Config-Dateien vergleichen, was unterschiedlich ist.
Ich sehe das halt als wenig elegant an.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Peer
Beiträge: 309
Registriert: Fr 9. Sep 2005, 17:22
Kontaktdaten:

Re: Upload Image Size Chain

Beitrag von Peer » Sa 1. Feb 2020, 14:54

Hallo Faar,

das ist hier eine super Sache.

Das wird mir einiges einfacher machen !!!!

Ich habe das Script unter 4.10.1 laufen und es funktioniert gut.

Wenn man das mit der Installation besser gestallten könnte bzw. auch nachhaltiger damit bei einem Upload auch alles erhalten bleibt.
Würde ich mich freuen.

Gruß

Peer

Peer
Beiträge: 309
Registriert: Fr 9. Sep 2005, 17:22
Kontaktdaten:

Re: Upload Image Size Chain

Beitrag von Peer » Di 11. Feb 2020, 21:34

Moin,

gibt es eventuell schon eine Lösung für den CMS_IMGEDITOR - Das dort auch der Size Chain angewendet werden kann ?

Vielen Dank für die Rückmeldung

Gruß

Peer

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Upload Image Size Chain

Beitrag von Faar » Mi 12. Feb 2020, 12:28

Peer hat geschrieben:
Di 11. Feb 2020, 21:34
gibt es eventuell schon eine Lösung für den CMS_IMGEDITOR - Das dort auch der Size Chain angewendet werden kann ?
Moin Peer,
zum ersten Post: Man kann eine Chain offenbar auch mittels eines Plugins installieren.
Zum Post-Zitat: Eine Chain ist nie interaktiv, also müsste sie dann beim Speichern des Bildes geschehen.
Meine Chain greift ja beim Upload ein.

Momentan geht die Doku nicht aufzurufen, aber vielleicht ist ein Hook da, um eine Chain dran zu hängen.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Upload Image Size Chain

Beitrag von Oldperl » Do 13. Feb 2020, 11:19

Servus,
Faar hat geschrieben:
Mi 12. Feb 2020, 12:28
Man kann eine Chain offenbar auch mittels eines Plugins installieren.
Ja, das ist definitiv machbar. Wie kann man sich im Plugin content_allocation anschauen. Dazu braucht es eigentlich nur ein rudimentäres Plugin, ohne eigenen sichtbaren Backend-Bereich, welches die entsprechenden Chain-Klassen bzw. -Funktionen einbindet.
Faar hat geschrieben:
Mi 12. Feb 2020, 12:28
Eine Chain ist nie interaktiv, also müsste sie dann beim Speichern des Bildes geschehen.
Meine Chain greift ja beim Upload ein.
Nun, eine Chain ist nur sehr bedingt interaktiv, das kommt sicherlich auf die Art der Einbindung des entsprechenden Hooks an.
Generell stimme ich Frank aber zu. Möchte man entsprechendes umsetzen, so würde sich ein zusätzlicher Bereich im Backend zur Bearbeitung von Bildern anbieten. Auch eine eigene Version des Uploadbereiches per Plugin wäre denkbar.
Faar hat geschrieben:
Mi 12. Feb 2020, 12:28
Momentan geht die Doku nicht aufzurufen, aber vielleicht ist ein Hook da, um eine Chain dran zu hängen.
Jep, Contenido.Upload.UploadPreprocess oder Contenido.Upload.UploadPostprocess sind mögliche CEC-Einstiegspunkte, zu finden in CONTENIDO/contenido/includes/include.upl_files_overview.php.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Peer
Beiträge: 309
Registriert: Fr 9. Sep 2005, 17:22
Kontaktdaten:

Re: Upload Image Size Chain

Beitrag von Peer » Fr 14. Feb 2020, 20:57

Hey Ortwin,

hast du auch einen Tipp für mich wo ich das hin setzen muss ?

Gruß

Peer

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Upload Image Size Chain

Beitrag von Oldperl » Sa 15. Feb 2020, 12:40

Servus

@peer, wo möchtest du was hinsetzen?

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Peer
Beiträge: 309
Registriert: Fr 9. Sep 2005, 17:22
Kontaktdaten:

Re: Upload Image Size Chain

Beitrag von Peer » Mo 17. Feb 2020, 20:05

Moin,

wo muss ich den Befehl vom Chain einpflegen damit er beim CMS_IMGEDITOR greift.
Du hast ja schon eine Datei angegeben, ich werde aber nicht schlau raus wo ich das in der Datei selber anbringen muss.

Vielen Dank

Gruß

Peer

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Upload Image Size Chain

Beitrag von Oldperl » Di 18. Feb 2020, 07:46

Guten Morgen Peer,

nun, in der Datei selbst solltest und musst Du nichts einbauen. Ich habe nur die dort enthaltenen Hooks einmal beispielhaft aufgezeigt.

Das Thema Chains haben wir hier im Forum auch schon mehrfach durchgekaut, daher möchte ich Dich bitten doch auch der Forumssuche mal eine Chance zu geben.
Hier schon mal ein entsprechender Thread aus den Suchergebnissen :arrow: Wie wende ich Chains an?

Gerne würde ich auch einen Link auf die entsprechende Seite https://docs.contenido.org/display/CONDEVE/Chain empfehlen, jedoch ist der Documentationsbereich von CONTENIDO momentan, und mit unbekannter Dauer, offline. Alternativ kann man die Artikel noch im Cache von Tante G anschauen :arrow: https://www.google.com/search?channel=f ... ido+chains

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Antworten