Upload Image Size Chain
Upload Image Size Chain
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. 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 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. 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.
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. 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 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. 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.
Re: Upload Image Size Chain
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
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
Re: Upload Image Size Chain
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.
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.
-
- Beiträge: 4255
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Kontaktdaten:
Re: Upload Image Size Chain
Servus,
eine Umsetzung als Plugin würde Sinn machen und die Installation auch für Laien vereinfachen.
Gruß aus Franken
Ortwin
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
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Re: Upload Image Size Chain
Im Prinzip ja, aber für Laien zu installieren ist die Chain gar nicht gedacht, denn sie richtet sich eher "gegen" Laien
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
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
-
- Beiträge: 4255
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Kontaktdaten:
Re: Upload Image Size Chain
Servus,
Gruß aus Franken
Ortwin
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)Faar hat geschrieben: ↑Do 18. Jul 2019, 15:07Im Prinzip ja, aber für Laien zu installieren ist die Chain gar nicht gedacht, denn sie richtet sich eher "gegen" Laien
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.
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
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Re: Upload Image Size Chain
Schön für dich, und wo ist Dein Plugin hier in der Liste zum downloaden?
Die Anleitung in den Docs scheint falsch zu sein: https://docs.contenido.org/display/CONDEVE/ChainEventuell sollte man auch bei den Chains etwas in der Art etablieren, bzw. bei den Plugins noch Kategorien unterscheiden (System, Admin, User)
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');
}
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.
Re: Upload Image Size Chain
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
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
Re: Upload Image Size Chain
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
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
Re: Upload Image Size Chain
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.
-
- Beiträge: 4255
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Kontaktdaten:
Re: Upload Image Size Chain
Servus,
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.
Gruß aus Franken
Ortwin
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.
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.
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
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Re: Upload Image Size Chain
Hey Ortwin,
hast du auch einen Tipp für mich wo ich das hin setzen muss ?
Gruß
Peer
hast du auch einen Tipp für mich wo ich das hin setzen muss ?
Gruß
Peer
-
- Beiträge: 4255
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Kontaktdaten:
Re: Upload Image Size Chain
Servus
@peer, wo möchtest du was hinsetzen?
Gruß aus Franken
Ortwin
@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
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Re: Upload Image Size Chain
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
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
-
- Beiträge: 4255
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Kontaktdaten:
Re: Upload Image Size Chain
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 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 https://www.google.com/search?channel=f ... ido+chains
Gruß aus Franken
Ortwin
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 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 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
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog