ConPresso Community

Fragen, Antworten, Diskussionen rund um das Content Management System ConPresso

 
Goodie: Kontextbezogene Bild- und Dateiauswahl

 
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Implementierung/Anpassung ConPresso 4
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6994

BeitragVerfasst am: 16.06.2012 11:57    Titel: Goodie: Kontextbezogene Bild- und Dateiauswahl Antworten mit Zitat

Im Kundenauftrag für www.gomasa.nl enstanden als Ergänzung zu mod_text, nun freigegeben für die Community:

Wer schon in wirklich großen Webauftritten gearbeitet hat, der weiß, wie ätzend die Bild- oder Dateiauswahl sein kann, wenn da erst mal ein paar Hundert zur Wahl stehen. Klar kann man durch Rubrikenzuordnung schon etwas Ordung erreichen, durch die mittlerweile entsorgte ID kommt man immerhin durch die Anfangsbuchstaben ans Ziel, aber Spaß macht das noch immer nicht und immer wieder werden falsche Dateien gewählt (Vorsicht mit Scrollmäusen!), was bei sensiblen oder personenbezogenen Daten schnell richtig Probleme geben kann.

Was tun?
In diesem Fall wird
1.) ein beliebig benanntes Textfeld benötigt, das als Refernez dienen soll, also z.B. eine Personalnummer, einen Namen, eine Eigenschaft etc.
2.) ein paar kleine Änderungen in den Platzhalter-Dateien durchgeführt
3.) diesen File/Image-Platzhaltern dann das Feld mitgeteilt, auf das sie sich beziehen sollen (siehe 1) und dann die Art des Suchmusters (Anfang, Ende oder irgendwo im Dateinamen. Alle Datei/Bild-Auswahlen ohne Zuordnung funktionieren wie bisher und es lassen sich beliebige viele Zuordnungen in einem Template realisieren. Cool Cool

Das Ganze wird Bestandteil der neuen mod_text-Ausgabe, kann aber mit wenigen Handgriffen auch als Standalone betrieben werden.

Im folgenden Post die Einbauanleitung für ConPresso 4.1.x

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6994

BeitragVerfasst am: 16.06.2012 12:13    Titel: Antworten mit Zitat

Einbauanleitung für ConPresso 4.1.x

Code:
=== OPEN / ÖFFNE ===

_admin/manage_placeholders.php

=== FIND / FINDE ===

default:

=== BEFORE ADD / DAVOR EINFÜGEN ===

// file_filter {{{
case 'file':
case 'image':
    print('<tr><td>'.__('Description:').'</td><td>');
    print('<input name="placeholder[label]" type="text" value="'.htmlspecialchars($placeholder['label']).'" class="inputwidth">'.help('templates-workonarticletemplates.html#templates-workonarticletemplates-editplaceholder-settings-description').'</td></tr>');
    print('<tr><td>'.__('Related to:').'</td><td>');
    print('<input name="placeholder[relation]" type="text" value="'.htmlspecialchars($placeholder['relation']).'"> ');
    print('&nbsp; &nbsp;'.__('Pattern:').' ');
    print('<input name="placeholder[pattern]" type="text" value="'.htmlspecialchars($placeholder['pattern']).'"></td></tr>');
    break;
// }}}

=== SAVE AND UPLOAD / SPEICHERN UND HOCHLADEN ===

Code:
=== OPEN / ÖFFNE ===

_include/form_fields.inc.php

=== FIND ALL / FINDE ALLE ===

."ORDER BY datei";

=== EACH BEFORE ADD / BEI JEDEM DAVOR EINFÜGEN ===

.((isset($value['relation']) && isset($value['pattern']) && trim($value['relation'])!='') ? "AND datei LIKE '".str_replace('###',$content[trim($value['relation']).' (text)']['text'],$value['pattern'])."' " : '') // file_filter

=== SAVE AND UPLOAD / SPEICHERN UND HOCHLADEN ===

Bitte beachten, daß die letzte Such- und Einfüge-Aktion zweimal(!) durchgeführt wird, weil dies auch zweimal vorkommt, weil es für Bilder UND Dateien genutzt wird!

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6994

BeitragVerfasst am: 16.06.2012 12:36    Titel: Antworten mit Zitat

Hier nun die praktische Anwendung:

1.) Refernzfeld neu anlegen oder aussuchen (eines der vorhandenen Textfelder)
2.) Alle Datei/Bild-Platzhalter mit dem Namen des Refernzfeldes und dem Suchmuster ergänzen. Syntax für das Suchmuster wir bei mod_fature_search:
###% => Dateiname beginnt mit dem Suchbegriff
%###% 0 => Dateiname enthält den Suchbegriff
%### => Dateiname endet mit dem Suchbegriff (praktisch für Dateiendungen)
3.) Bei der Artikelerfassung den Filterbegriff ins Referenzfeld eingeben (wenn nicht schon vorhanden), dann Artikel speichern und erneut aufrufen. Jetzt enthalten die bearbeiteten Date/Bild-Auswahlen nur noch die gefilterten Dateien. Durch Löschen des Inhaltes des Refernzfeldes können jederzeit wieder alle angezeigt werden.

Und nun das Ganze als Bildergeschichte:




Ich habe das Feld "Bildfilter" als Textfeld neu angelegt (könnte aber auch eines der vorhandenen Textfelder nehmen, wenn da nutzbare Inhalte drin stehem)
file_filter1.jpg
Klicken für Originalbild! file_filter1.jpg (148.15KB) - 430 mal angeklickt


Dem Textfeld habe ich eine erklärende Beschreibung gegeben, es als Kurztext und auf eine Länge von 20 (nach Belieben) eingestellt.
file_filter2.jpg
Klicken für Originalbild! file_filter2.jpg (21.78KB) - 394 mal angeklickt


Alle Bildplatzhalter (in diesem Beispiel) haben dann "Bildfilter" als Referenzfeld bekommen und das Suchmuster %###%, der Begriff kann also irgendwo vorkommen.
file_filter3.jpg
Klicken für Originalbild! file_filter3.jpg (47.69KB) - 402 mal angeklickt


Und so sieht's dann im Artikel aus: Nachdem ins "Bildfilter"-Feld ein Begriff/Name eingegeben wurde und der Artikel gespeichert wurde, werden beim nächsten Aufruf nur noch passende Bilder angezeigt. So muss es sein!
file_filter4.jpg
Klicken für Originalbild! file_filter4.jpg (119.48KB) - 459 mal angeklickt


Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6994

BeitragVerfasst am: 16.06.2012 12:55    Titel: Antworten mit Zitat

Worauf sollte man achten?

1.) Man braucht eben ein Referenzfeld!
Personalnummern, Artikelnummern oder Namen, die sich nicht ändern sind da ganz praktisch und man kann den Begriff einfach im Feld stehen lassen. Hat man keinen so festen Bezug, dann kann man es eher als Filter ansehen, aber das ist die schlechtere Idee (s.u.).

2.) Man muss bei der Datei/Bildbenennung sehr konsequent sein und diesen jeweiligen Referenzbegriff verwenden, aber das tun die meisten ohnehin, um den Überblick zu bewahren.

3.) nun wird's gefährlich!
Es kann folgendes schiefgehen: Wenn man nun in einem oder mehreren referenzierten Datei/Bildfeldern schon Dateien gewählt hat und nun einen Begriff wählt, auf den diese NICHT passen, dann wird beim nächsten Aufruf statt des eigentlich gewälten Bildes "kein" angezeigt. Wenn man JETZT SPEICHERT, dann ist die ursprüngliche Auswahl verloren! Es ist also eher etwas für konsequent arbeitende Redakteure.

Weiterführendes:
Wer lange genug nachdenkt und den Code betrachtet erkennt schnell, daß sich da noch ganz andere Dinge mit machen lassen.
in meinem Beispiel gibt es neben den passend benannten Bildern noch Platzhalter-Bilder, die benutzt werden, solange kein richtiges Bild vorliegt. Diese tragen natürlich keinen referenzierbaren Namen, sondern beginnen alle mit "-PH" (wie PlatzHalter und stehen durch das "-" immer ganz vorne).
Mit folgendem Suchmuster erreiche ich eine ODER-Verknüpfung:
%###%' OR datei LIKE '-PH%
listet mir die gewünschten Bilder UND die Platzhalterbilder

Weitere Begiffe/Suchmuster:
[.pdf] mit [%###] listet nur Dateien mit einer bestimmten Endung, z.B. PDF
[Begriff] mit [%###%.pdf] listet nur die PDF-Dateien mit dem Begriff im Dateinamen

Denkt Euch was dazu aus! Wink

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7

 
Für dieses Posting bedanken sich die folgenden User: Mr. Magpie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6994

BeitragVerfasst am: 16.06.2012 14:12    Titel: Antworten mit Zitat

Hier noch die
Einbauanleitung für ConPresso 4.0.x

Code:
=== OPEN / ÖFFNE ===

_admin/manage_placeholder.php  (ConPresso bis 4.0.6) oder
_admin/manage_placeholders.php  (ConPresso 4.0.7 bis 4.0.12)

=== FIND / FINDE ===

case 'url':

=== BEFORE ADD / DAVOR EINFÜGEN ===

// file_filter {{{
case 'file':
case 'image':
    print('<tr><td>'.__('Related to:').'</td><td>');
    print('<input name="placeholder[relation]" type="text" value="'.htmlspecialchars($placeholder['relation']).'"> ');
    print('&nbsp; &nbsp;'.__('Pattern:').' ');
    print('<input name="placeholder[pattern]" type="text" value="'.htmlspecialchars($placeholder['pattern']).'"></td></tr>');
    break;
// }}}

=== SAVE AND UPLOAD / SPEICHERN UND HOCHLADEN ===

Code:
=== OPEN / ÖFFNE ===

_include/form_fields.inc.php

=== FIND ALL / FINDE ALLE ===

."ORDER BY datei";

=== EACH BEFORE ADD / BEI JEDEM DAVOR EINFÜGEN ===

.((isset($value['relation']) && isset($value['pattern']) && trim($value['relation'])!='') ? "AND datei LIKE '".str_replace('###',$content[trim($value['relation']).' (text)']['text'],$value['pattern'])."' " : '') // file_filter
 
=== SAVE AND UPLOAD / SPEICHERN UND HOCHLADEN ===

Auch hier wird der letzte Finde/Einfüge Prozess zweimal(!) ausgeführt!

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7

 
Für dieses Posting bedanken sich die folgenden User: Mr. Magpie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Implementierung/Anpassung ConPresso 4 Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen