Plugin Advanced Mod Rewrite für Contenido 4.8.x

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re:

Beitrag von rethus »

DiMiZu hat geschrieben:Ich hänge mich an _wiewo_ an, gleiches Problem:

Neue Installation Contenido V 4.8.9
plugin_advanced_mod_rewrite_0.5.1

Sobald ich die Datei config.misc.php im include Ordner mit der des plugins überschreibe erhalte ich im Frontend eine leere weiße Seite auch wenn das Plugin im Backend noch gar nicht aktiviert ist. Ersetzte ich besagte Datei wieder durch die Orginaldatei dann funktioniert Contenido wieder, natürlich ohne mod_rewrite

Contenido 4.8.13
(Installierte PHP-Version 5.2.6)

Problem:
Unter Content >> AMR bleibt alles weiß - wird also nichts angezeigt.

Im Backend und auf der Ausgabeseite erhalte ich die Meldung:

Code: Alles auswählen

[23-Sep-2010 19:42:42] PHP Fatal error:  Error: Can't include ......./classes/class.modrewrite.php in ........../contenido/includes/api/functions.api.general.php on line 181
Der Clou dabei, in dem AMR-Plugin ist gar keine derartige Klasse, die ich dort hinüber kopieren könnte.
Hat jemand einen Tipp für mich, woran das leigen könnte?
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
xmurrix
Beiträge: 3193
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 8 Mal
Kontaktdaten:

Re: Re:

Beitrag von xmurrix »

rethus hat geschrieben: Contenido 4.8.13
(Installierte PHP-Version 5.2.6)

Problem:
Unter Content >> AMR bleibt alles weiß - wird also nichts angezeigt.

Im Backend und auf der Ausgabeseite erhalte ich die Meldung:

Code: Alles auswählen

[23-Sep-2010 19:42:42] PHP Fatal error:  Error: Can't include ......./classes/class.modrewrite.php in ........../contenido/includes/api/functions.api.general.php on line 181
Der Clou dabei, in dem AMR-Plugin ist gar keine derartige Klasse, die ich dort hinüber kopieren könnte.
Die Datei "class.modrewrite.php" gibt es schon seit Ewigkeiten nicht im Verzeichnis "contenido/classes/", das gab es mal früher im Bundle Contenido + AMR (wenn ich mich nicht irre, in der 4.6.x er Reihe).
Wie kann es sein, dass diese Datei in eine Contenido 4.8.13 er Installation hinein kommt? Gab es etwa vorher ein Contenido Update und/oder ein Update des Plugins? Falls ja, welche Versionen liefen vorher?

Du kannst auch in der Funktion contenido_include() ine debug_backtrace() einbauen, um herauszufinden, von wo aus die class.modrewrite.php eingebunden wird.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von rethus »

Also zuvor war das eine 4.6.15er installation. Die hab ich komplett mit backup gesichert, und das Verzeichnis gelöscht. Dann 4.8.13 PLAIN drauf gespielt, und via Setup >> Migration, dann installiert.

Eine class.mod_rewrite.php ist ja gerade nicht drin. Die Sucht er ja, und die ist nicht dort.
Runtergeladen hab ich mir das AMR in der letzten Version von hier http://www.purc.de/playground-coding-co ... a.109.html

Seit der installatoin des Plugins (mitlerweile hab ich es wieder deinstalliert und gelöscht, erhalte ich auch einen Fehler auf der Ausgabeseite, der nach dem Aktualisieren wieder verschwindet: unser-horrem.de
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
xmurrix
Beiträge: 3193
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 8 Mal
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von xmurrix »

rethus hat geschrieben:Also zuvor war das eine 4.6.15er installation. Die hab ich komplett mit backup gesichert, und das Verzeichnis gelöscht. Dann 4.8.13 PLAIN drauf gespielt, und via Setup >> Migration, dann installiert.

Eine class.mod_rewrite.php ist ja gerade nicht drin. Die Sucht er ja, und die ist nicht dort...
War das etwas ein Bundle 4.6.15mr, also mit den mod_rewrite Anpassungen?

Falls ja, hat die Suche bei mir nach einem include der "class.mod.rewrite.php" (Contenido 4.6.15mr) folgende Ergebnisse geliefert:

Code: Alles auswählen

contenido/external/frontend/front_content.php/
    Line 70: cInclude("classes", 'class.modrewrite.php');
contenido/external/frontend/front_crcloginform.inc.php/
    Line 19: cInclude("classes","class.modrewrite.php");
contenido/includes/functions.con.php/
    Line 22: cInclude("classes", "class.modrewrite.php");
contenido/includes/functions.str.php/
    Line 36: cInclude("classes", "class.modrewrite.php");
contenido/includes/include.str_aliases.php/
    Line 8: cInclude("classes", "class.modrewrite.php");
cms/front_content.php/
    Line 70: cInclude("classes", 'class.modrewrite.php');
cms/front_crcloginform.inc.php/
    Line 19: cInclude("classes","class.modrewrite.php");
Schau mal nach, ob auch wirklich das Vorkommen von cInclude("classes","class.modrewrite.php"); auch wirklich überall entfernt wurde.

Wie schon vorher gesagt, würde der Einbau von debug_backtrace() in der Funktion contenido_include() dir aufzeigen, wo der Aufruf von cInclude("classes","class.modrewrite.php"); genau stattfindet.
Öffne die Datei contenido/includes/api/functions.api.general.php und schreibe am Anfang der Funktion contenido_include() (aber nach der Zeile global $client...) folgende Zeilen hinein

Code: Alles auswählen

if ($where == 'classes' && $what == 'class.modrewrite.php') {
    $trace =  debug_backtrace();
    file_put_contents(
        $cfg['path']['contenido'] . 'logs/wer_will_class.modrewrite.php_includieren.txt',
        print_r($tace, true),
        FILE_APPEND
    );
}
Dann kannst du in der Datei contenido/logs/wer_will_class.modrewrite.php_includieren.txt nachsehen, woher der Aufruf von cInclude("classes","class.modrewrite.php"); kommt...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von rethus »

Ok, danke für die INfo. Dein Code hat kein Ergebnis gebracht. Die Logdateibleibt leer. Daher hab ich den backtrace weiter unten eingesetzt, wo der error ausgegeben wird.
Jetzt hab ich herausgefunden, dass Capits-SimpleBlog mod_rewrite inkludieren will, wenn die Variable $cfg['mod_rewrite'] gesetzt ist.
Bisher konnte ich aber noch nicht finden, wo die gesetzt wird. Ein print_r($cfg) gibt definitiv aus, dass Sie gesetzt wird.

Demnach müsste ich dann wohl erst mal den Simple-Blog abschalten, und später ggf. umschreiben, damit AMR genutzt wird ?!
Die Andere Frage die bestehen bleibt... wenn ich im Backend Content >> AMR aufrufe, bleibt eine leere weiße Seite.
Werde das Modul jetzt gleich nochmal komplett neu installieren und sehen, ob es dann geht, aber ich befürchte, dass die Seite weiterhin weiß bleibt.
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
xmurrix
Beiträge: 3193
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 8 Mal
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von xmurrix »

rethus hat geschrieben:...Die Andere Frage die bestehen bleibt... wenn ich im Backend Content >> AMR aufrufe, bleibt eine leere weiße Seite.
Werde das Modul jetzt gleich nochmal komplett neu installieren und sehen, ob es dann geht, aber ich befürchte, dass die Seite weiterhin weiß bleibt...
Kannst du herausfinden, wo genau PHP da aussteigt?

Einfach in der Datei "contenido/plugins/mod_rewrite/includes/include.mod_rewrite_content.php" ganz oben die('foobar'); einbauen, und dies solange Zeile für Zeile runterschieben und im Backend die AMR-Seite aufrufen, bis die weiße Seite ohne die Ausgabe "foobar" kommt - Dann ist hoffentlich auch das Problem eingegrenzt. Vielleicht steht ja auch etwas in der errorlog.txt drin.
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von homtata »

Ich habe in der 4.8.13 ein Problem, von dem ich nicht sicher weiß, ob es in alten Versionen auch schon aufgetaucht ist:

- Ich habe AMR 0.5.5 intalliert, und in der htaccess sind die pdf-Dateien vom Umschreiben ausgenommen, ebenso wie der upload-Ordner.
- Die PDF-Links programmiere ich meist als Popups über die Karteikarte der Dateieigenschaften des Links im TinyMCE.
- Alle diese javascriptbasierten Links, die ja den normalen HTML-Link erstmal ausbremsen, werden im IE leider doch zu völligem Unsinn umschrieben, also anstatt /upload/pdf/xyz.pdf wird versucht, im Popup /pfad-zum-artikel-in-dem-die-pdf-steht/xyz.pdf anzuzeigen. Der reine HTML-Link wird nicht umschrieben, das ist ok.

Dieses Verhalten habe ich in allen Installationen - im Firefox gibt es dieses Problem übrigens nicht.
Muss ich damit leben oder gibts noch einen mir unbekannten Trick, den IE zur Zusammenarbeit zu bewegen?

LG
xmurrix
Beiträge: 3193
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 8 Mal
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von xmurrix »

homtata hat geschrieben:...- Ich habe AMR 0.5.5 intalliert, und in der htaccess sind die pdf-Dateien vom Umschreiben ausgenommen, ebenso wie der upload-Ordner.
- Die PDF-Links programmiere ich meist als Popups über die Karteikarte der Dateieigenschaften des Links im TinyMCE.
- Alle diese javascriptbasierten Links, die ja den normalen HTML-Link erstmal ausbremsen, werden im IE leider doch zu völligem Unsinn umschrieben, also anstatt /upload/pdf/xyz.pdf wird versucht, im Popup /pfad-zum-artikel-in-dem-die-pdf-steht/xyz.pdf anzuzeigen. Der reine HTML-Link wird nicht umschrieben, das ist ok....
Kannst du mir bitte ein paar Beispiele geben, wie die Links (Quellcode, nicht Statuszeile des Browsers) vor dem Umschreiben und nach dem Umschreiben genau aussehen und was bei dir der Wert im href-Attribut des base-Tags ist?

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von homtata »

hallo xmurrix,

ei sicher gern doch ;-) ich bin ja froh, dass du dich meiner sache annimmst!
also:

hier ein beispiel:
contenido ist standardmäßig installiert, frontend in /cms, backend in /contenido. keine subdomains o.ä., htaccess liegt im root.
die zu öffnende datei steht im artikel http://www.open-mrt-heidelberg.de/de/th ... e-mrt.html
der unumschriebene link zur pdf heißt http://www.open-mrt-heidelberg.de/cms/u ... MRT_3A.pdf
im href des links trage ich im tinymce als "adresse" folgendes ein: upload/pdf/Aufklb_MRT_3A.pdf. der gleiche wert steht auch in der adresse der karteikarte "popup".

dies führt zu folgendem quelltext im browser: href="upload/pdf/Aufklb_MRT_3A.pdf" onclick="window.open('upload/pdf/Aufklb_MRT_3A.pdf','pdf','scrollbars=yes,resizable=yes,width=500,height=700,left='+(screen.availWidth/2-250)+',top='+(screen.availHeight/2-350)+'');return false;" id="pdf" title="Aufkl&auml;rungsbogen MRT" target="_blank">Aufkl&auml;rungsbogen Kernspintomographie</a>
im header der datei steht: <base href="http://www.open-mrt-heidelberg.de/cms/">

in der statuszeile sehe ich den html-href-link korrekt (nicht umschrieben) als http://www.open-mrt-heidelberg.de/cms/u ... MRT_3A.pdf
das popupfenster zeigt oben in seiner grauen adressleiste an, dass es versucht, folgenden link zu öffnen: http://www.open-mrt-heidelberg.de/de/th ... MRT_3A.pdf

wie gesagt, fehler NUR im internet explorer - der firefox schreibt den javascriptlink korrekt um... !

brauchst du noch weitere angaben? dann liefere ich die gern.
xmurrix
Beiträge: 3193
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 8 Mal
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von xmurrix »

Vermute, dass das Problem die falsche Interpretation der URLs ist.
Wenn du mit window.open('upload/path_to_file.pdf') arbeitest, und die Adresse der aktuellen Seite z. B. http://host/category/article.html ist, wird die URL in window.open als http://host/category/upload/path_to_file.pdf interpretiert. Anscheinend kommt der IE hier trotz der Angabe im base-Tag durcheinander.

Deshalb gibt es im Plugin auch die Funktion, die vorhandene Pfade zum Upload-Ordner anpasst, indem es den URLs die Web-Adresse des Mandanten voranstellt (also das, was auch im base-Tag) ist. Dann aus Links wie href="upload/path_to_file.pdf" umgewandelt zu href="http://host/cms/upload/path_to_file.pdf". Das funktioniert aber nicht mit onclick="window.open('upload/path_to_file.pdf')".

Vorschlag:
Füge den Links nur die URL hinzu und eine Kennzeichnung, wie z. B. eine CSS-Klasse "jsPopup".

Code: Alles auswählen

<a href="upload/path_to_file.pdf" target="_blank" class="jsPopup">PDF</a>
Das Plugin sollte diese Links umwandeln zu

Code: Alles auswählen

<a href="http://host/cms/upload/path_to_file.pdf" target="_blank" class="jsPopup">PDF</a>
Beim domready-Event kannst du mit JS die Seite nach Links mit der CSS-Klasse "jsPopup" parsen und die Popupfunktion "on the fly" hinzufügen. Mit jQuery wäre das z. B.:

Code: Alles auswählen

$(document).ready(function() {
    $("a.jsPopup").click(function() {
        window.open(this.href,'pdf');
        return false;
    });
});
So sollte es eigentlich funktionieren.

Clients mit JS-Unterstützung öffnen dann die Datei in einem vorgegebenen Popup, andere einfach in einem neuen Fenster. Du kannst auch die CSS-Klasse "jsPopup" ganz weg lassen und die JS-Funktionalität allen Links mit target="_blank" zuweisen.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von homtata »

hallo xmurrix,

danke für deine hilfen und ideen!
ich bin jetzt doch einen leicht anderen weg gegangen, den ich auf anderen seiten schon eingesetzt habe, auch wenn das heißt, dass die contenido-eigene funktion für popups damit erstmal für amr nicht in frage kommt...

ich habe ein externes javascript erstellt mit den funktionen:

Code: Alles auswählen

var win = null;

function popdown() {
  if (win && !win.closed) win.close();
}



function showpdf(formtext)
{ 
attr = "scrollbars=yes, width=500, height=700, resizable=yes, left="+(screen.availWidth/2-250)+", top="+(screen.availHeight/2-350);
win = window.open(formtext,"PDFDatei",attr);

if (win) return false;
  else return true;
}

function showurl(formtext)
{ 
attr = "location=yes,menubar=yes,toolbar=yes,status=yes,scrollbars=yes, width=700, height=500, resizable=yes, left="+(screen.availWidth/2-250)+", top="+(screen.availHeight/2-350);
win = window.open(formtext,"URL",attr);

if (win) return false;
  else return true;
}

window.onunload = popdown;
window.onfocus = popdown;
und schreibe in die karteikarte "Ereignisse" des links ins feld "onclick" entweder

Code: Alles auswählen

return showpdf(this); 
(für PDF-Dateien) bzw.

Code: Alles auswählen

return showurl(this); 
(für externe Links)

damit kommt der internet explorer dann endlich auch zurecht, und wenn man will, kann man durch intensiveres skripting und parameterübergabe innerhalb von () ja auch die popups noch genauer steuern.
trotzdem danke, deine vorschläge haben mich erst auf die idee gebracht, diese skripte zu reaktivieren!

für die zukunft bliebe die frage, ob sich das nicht dennoch mit dem amr irgendwie lösen ließe, durch eine plugin-chain oder sowas, die auch die in der karteikarte "popup" eingetragenen links nochmal umschießt, so dass auch der ie damit klar kommt (falls das überhaupt geht).

lg
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von homtata »

noch eine Variante zur Lösung des Problems, da ich jetzt nicht auf allen Installationen alle Popup-Links ohne Not umschießen wollte:

Das Problem löst sich, wenn statt des relativen Pfads der absolute Pfad nach hinter "window.open" folgt....
Daher reicht es eigentlich, wenn man die Modulausgabe trickst, das trifft fast 100 Prozent aller Vorkommen:

statt

Code: Alles auswählen

echo "<p>". "CMS_HTML[1]"."</p>";
schießt man nach folgender Form um:

Code: Alles auswählen

$text = "CMS_HTML[1]";
$text = str_replace("window.open('upload/","window.open('http://[domain]/cms/upload/",$text);
echo "<p>".$text."</p>";
Damit tuts der IE dann auch wieder, und man hat weiterhin die Kontrolle für jedes einzelnen Popupfenster, falls das nötig ist.

LG
micro2001
Beiträge: 76
Registriert: Sa 18. Nov 2006, 10:44
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von micro2001 »

Hallo zusammen,

hat schon jemand das AMR 0.5.5 unter Contenido 4.8.14 am Laufen? Gibts da Probleme, so dass man noch warten sollte bis eine neue Version rauskommt?

Grüße, Ralph
techie
Beiträge: 8
Registriert: Fr 9. Jan 2009, 21:08
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von techie »

Habe AMR und die 4.8.14 versucht. Hat aber nicht funktioniert. Ich warte auf die AMR 0.5.6
micro2001
Beiträge: 76
Registriert: Sa 18. Nov 2006, 10:44
Kontaktdaten:

Re: Plugin Advanced Mod Rewrite für Contenido 4.8.x

Beitrag von micro2001 »

Hallo technie,

danke für die Info. Dann erspare ich mir lieber eine mühsame Migration.
Gesperrt