Zum Inhalt springen

Powermail Validation Problem

Erstellt am 6. Mai 2009 · 23 Antworten · letzte Antwort am 19. März 2010 · Seite 1 von 2

Tags: Frage

T3_NUTZER ·

Ein herzliches Hallo,

meine Powermail-Installation (Typo3 4.2.6) funktioniert prima, bis auf die Tatsache, daß keine Validation möglich ist. Ich bekomme in der Firefox Javascript-Console "Validation is not definded" und zwar sowohl mit der Einstellung mootools und prototype.

Die Fehlermeldung wird von folgender Zeile erzeugt:

var valid = new Validation('formulareinsteiger', {immediate : true, onFormValidate : formCallback});

Die Javascript-Aufrufe sind im Header zu finden:

	<script src="typo3conf/ext/powermail/js/mandatoryjs/lib/prototype.js" type="text/javascript"></script>
	<script src="typo3conf/ext/powermail/js/mandatoryjs/src/effects.js" type="text/javascript"></script>
	<script src="typo3conf/ext/powermail/js/mandatoryjs/fabtabulous.js" type="text/javascript"></script>
	<script src="typo3conf/ext/powermail/js/checkbox/checkbox.js" type="text/javascript"></script>

Kann jemand helfen?

Ansonsten ist die Extension herausragend, was den Komfort bei der Erstellung und Verwaltung von Formularen angeht.

Gruß

Carsten

T3_NUTZER ·

Habe jetzt einen Workaround gefunden und zwar habe ich in das Extension-Template der Seite, auf dem sich das Formular befindet folgenden Typoscript-Code eingetragen:

page.headerData = COA
page.headerData.11 = TEXT
page.headerData.11.value = <script type="text/javascript" src="typo3conf/ext/powermail/js/mandatoryjs/validation.js"></script>

Dann tritt der Fehler "Validation not defined" nicht mehr auf und die Funktion läuft wie erwünscht! Aber das ist doch sicher nicht im Sinne des Erfinders, oder?

Carsten o.O

einpraegsam.​net ·

Das JS das du manuell hinzugefügt hast, sollte eigentlich automatisch hinzugefügt werden:

lib.powermail_dynJavascript = TEXT
lib.powermail_dynJavascript {
    wrap = <script src="|" type="text/javascript"></script>
	typolink.parameter.dataWrap = {TSFE:id},3131
    typolink.returnLast = url
}
page.headerData.31310 < lib.powermail_dynJavascript

Hierbei handelt es sich um die gleiche Seite jedoch mit dem type 3131.

T3_NUTZER ·

Hallo,

vielen Dank für die schnelle Antwort. Ich habe Deinen Code noch mal schnell in das Extension-Template bei mir eingefügt aber auch damit funktioniert es nicht!

Da bei mir die üblichen "Störer" (Extensions mit mootools) nicht in Frage kommen, gibt es noch andere bekannte Gründe, daß die Javascript-Datei nicht eingebunden wird? Habe powermail seit Version 1.4.1 im Einsatz und die Validation hat leider bisher noch nie funktioniert. Das Merkwürdige ist, daß alle anderen Javascript-Dateien ohne Probleme richtig eingebunden werden.

Gruß

Carsten

einpraegsam.​net ·

1. Klar funktioniert das manuelle Einfügen nicht - sonst würde es ja von Anfang an funktionieren

T3_NUTZER schrieb

Das Merkwürdige ist, daß alle anderen Javascript-Dateien ohne Probleme richtig eingebunden werden.

2. Eine wichtige Datei funktioniert scheinbar nicht, das kann verschiedene Gründe haben (z.B. Einsatz von TIDY oder anderen Extensions die an der HTML Ausgabe basteln). Hilfreich wäre hier ein Link, damit man sich das Ganze mal anschauen kann...

T3_NUTZER ·

Im root-Template, das die Eigenschaften an die anderen Seiten vererbt steht folgendes:

config.simulateStaticDocuments = 0
config.baseURL = http://www.meine-domain.de/
config.tx_realurl_enable = 1
config.prefixLocalAnchors = all


page.config.doctype = xhtml_trans

page.headerData >
page.headerData.10 = TEXT
page.headerData.10.value (
        <title>{page:subtitle // page:title}</title>
        <meta http-equiv="content-language" content="de" />
        <meta name="description" content="{page:description}" />
        <meta name="abstract" content="{page:abstract}" />
        <meta name="keywords" content="{page:keywords}" />
        <meta name="author" content="{page:author}" />
        <meta name="distribution" content="global" />
        <meta name="rating" content="General" />

        <meta name="robots" content="index, follow" />
        <meta name="robots" content="all" />
        <meta name="language" content="deutsch, de, German" />
        <meta name="distribution" content="global" />
        <meta name="publisher" content="" />
        <meta name="copyright" content="" />
        <meta name="page-topic" content="" />
        <meta name="page-type" content="" />
)

page.headerData.10.insertData = 1
page.config.noPageTitle = 1

config.language = de
config.locale_all = de_DE
config.sys_language_uid = 0

config.spamProtectEmailAddresses = 2
config.spamProtectEmailAddresses_atSubst = (at)

page = PAGE
page {
   
   typeNum = 0

   # Allgemeine Eigenschaften setzen
   bodyTag = <body>
   includeCSS {
      file1 = fileadmin/vorlagen/vorlage.css
   }

   # Vorlage integrieren
   10 = TEMPLATE
   10.template = FILE
   10.template.file = fileadmin/vorlagen/vorlage.html
   10.workOnSubpart = DOKUMENT

   10.marks {


      # Inhalt ausgeben
      INHALT = CONTENT
      INHALT {
         table = tt_content
         select.orderBy = sorting
         select.where = colPos = 0  
      }

      # Code für Generierung von Menüs ausgeschnitten!

   }
}

Muß da irgendein Eintrag für powermail noch rein??

T3_NUTZER ·

So, habe jetzt mal RealUrl ausgeschaltet und siehe da es funktioniert (übrigens auch deutsche Texte für die Fehlermeldungen!). Ein Blick in den HTML-Quellcode zeigt folgendes:

<script src="index.php?id=43&amp;type=3131" type="text/javascript"></script>

Schalte ich RealUrl wieder ein geht gar nichts. Binde ich die Datei validation.js manuell ein funktioniert die Überprüfung, aber englische Fehlertexte.

Manuelle Einbindung:

page.includeJS.file12 = typo3conf/ext/powermail/js/mandatoryjs/validation.js
kitze ·

Hallo,

bin neu hier und habe die selben Probleme wie mein Vorredner.

Mit seinem Workaround (manuelle Einbindung der validation.js) habe ich die JS Validierung auch zum Laufen bekommen. Allerdings zersägt er mir dann das Class-Attribut des neu erzeugten Div's. Hier kommt es wohl zu keiner Ersetzung der Marker.

<div id="advice-required-uid9" class="<!-- ###DIV_CLASS### -->powermail_mandatory_js<!-- ###DIV_CLASS### -->" style="">This is a required field.</div>

Der Lösungsversuch mit dem Ändern der ext_typoscript_setup.txt hat bei mir keine Wirkung gehabt. Ich gehe mal davon aus, dieser Ansatz bezog sich auf eine ältere Version von Powermail. (http://forge.typo3.org/issues/show/2710)

Gibt es hier mittlerweile vielleicht neue Lösungsmöglichkeiten?

Viele Grüße, Philipp

Typo3 4.1.5
Powermail 1.4.18
RealUrl 1.4.0

einpraegsam.​net ·

Hi,

ich würde der Sache auf den Grund gehen, warum das erzeugte JS nicht funktioniert. Das kann ein paar Fehlerquellen haben:
- Wenn Realurl: Ist der Type 3131 definiert?
- Gibt es Extensions die die HTML Ausgabe manipulieren (TIDY, htmlcleaner, etc...) - testweise deaktivieren
- Wie sieht das JS aus, wenn man es manuell aufruft?

kitze ·

Hallo Alexander,

danke für deine schnelle Antwort. Ich versuche mal Antworten auf deine Fragen zu finden.

einpraegsam.net schrieb

- Wenn Realurl: Ist der Type 3131 definiert?

Im ObjectBrowser ist der Type 3131 definiert. Auch die Page 3131 ist hier zu finden. Diese verweist auf das Template powermail/js/mandatoryjs/validation.js. Auch im Firebug wird dann im HTML-Header die Datei aufgeführt. Natürlich mit "schöner" URL. Sollte also dem Browser zur Verfügung stehen.

einpraegsam.net schrieb

- Gibt es Extensions die die HTML Ausgabe manipulieren (TIDY, htmlcleaner, etc...) - testweise deaktivieren

Hm, dazu kann ich noch nichts sagen, da ich noch nicht alle Extensions kenne, die im Projekt eingesetzt werden.

einpraegsam.net schrieb

- Wie sieht das JS aus, wenn man es manuell aufruft?

Du meinst, wenn die Datei manuell eingebunden wird? Wie im letzten Post beschrieben funktioniert dann das Validieren an sich. Lediglich das Class-Attribut ist nicht korrekt. Dieses brauche ich aber, da ich die Farbe ändern möchte.

Gruß, Philipp

einpraegsam.​net ·
kitze schrieb

Du meinst, wenn die Datei manuell eingebunden wird?

Nein, wenn du die URL herauskopierst aus dem Quelltext und samt deiner URL in deinen Browser einträgst...

kitze ·
einpraegsam.net schrieb
kitze schrieb

Du meinst, wenn die Datei manuell eingebunden wird?

Nein, wenn du die URL herauskopierst aus dem Quelltext und samt deiner URL in deinen Browser einträgst...

... dann bekomme ich die JavaScript-Datei zurückgeliefert. So wie es sein sollte, richtig?

Die mit RealUrl unbenannte URL lautet formular.html?type=3131. Ohne RealUrl entsprechend index.php?id=2432&type=3131.

Was mir gerade neu auffällt: die obige Datei wird VOR allen anderen Powermail-JS-Dateien eingebunden. Ist das wichtig?

Danke für deine Zeit, Gruß

koRn ·

Hi,

ich habe momentan ein ähnliches Problem, dass ich Powermail nicht in Verbindung mit RealURL verwenden kann. Bei der Deaktivierung von RealURL wird die Verlinkung index.php?id=X&type=3131 richtig aufgelöst. Bei der Aktivierung hingegen funktioniert der Link, der zur JS führen soll, nicht. Im Quelltext sieht der Link in etwa so aus "/unternehmen/kontakt.html?type=3131".
Verschiedene Varianten, wie Autoconf an/aus bei jewails Powermail / Realurl und manuelle eine RealURL Konfiguration, bezogen auf diesen Beitrag http://www.typo3forum.net/forum/suchmaschinenfreundliche-urls-seo/42907-realurl-config-f-r-type-9713-chgallery-powermail-3131-a.html, habe ich bereits ohne Erfolg ausprobiert.

Soweit ich es aber auf deiner Seite gesehen habe, funktioniert die Konfiguration aber in der Art, wie ich sie ebenfalls haben möchte. Es wird der Link http://www.einpraegsam.net/validation/kontakt/kontaktformular.html korrekt aufgelöst. Welche Schritte sind hierbei zu beachten ?

Typo3: 4.3.0
PM: 1.5.3
RealURL: 1.7.0

//update

Nun funktioniert es soweit, dass bei mir der Link zur JS-Datei (validation.js) richtig gesetzt und aufgelöst wird. Dennoch funktioniert die Überprüfung nicht. Alternativ habe ich RealURL deinstalliert und es mit Simulate Static URLs getestet. Genau das gleiche Resultat. Link wird richtig gesetzt, Validierung funktioniert nicht. Das heißt, dass ich immer noch auf der gleichen Seite ohne Veränderung, nach einem Klick auf den Absendebutton, verharre.

fragile74 ·

Ich schließe mich hier mal kurz an.

Meine Vorschreiber haben evtl. auf Ihrer TYPO3 - Installation folgendes Problem:
Die Extension powermail liefert den Validation-Javascriptcode als TYPO3 Seite des Typ(e)s 3131 aus. Um Probleme mit RealURL zu vermeiden, setzt die Extension eine RealURL Autoconfig-Option, die in den preVars für diesen Seitentyp einen Pfadtyp "validation" erzeugt.

Problem hierbei : Setzt man default... zur Erzeugung virtueller Dateinamen auf 1, wird die Javascript-TYPO3-Seite der Extension fälschlicherweise mit .html ausgeliefert -> unschön bzw. strenggenommen falsch.

Ein weiteres Problem entsteht, wenn man z.b. (was durchaus sinnvoll sein kann, um z.b. von Usern verhuntzten RTE-Code zu entschärfen) im Installtool [FE][Tidy] auf 1, fügt Tidy bei der Auslieferung des Seitentyps 3131 HTML-Seitenauszeichnungen hinzu. Damit wird das Javascript nicht mehr als solches erkannt und die Validierung schlägt komplett fehl.

Nun mag man argumentieren, tidy etc. wäre nur während der Entwicklung sinnvoll einzusetzen, die Realität ist, dass viele TYPO3-Admins/Entwickler aus oben genanntem Grund vor der Auslieferung von TYPO3-Seiten diese durch einen Cleaner laufen lassen, der dann solche Probleme verursacht...

Frage an einprägsam.net: Siehst du eine Alternativlösung, so daß deine Extension auch mit Cleaner-tools funktioniert ?