Autor Zpráva
moom
Profil
Dobrý den, mám prosím dotaz. Zkouším pro jeden neziskový
projekt použit JavaScript PageSlide a chtěl
bych ho využít pro odeslání emailu pomocí PHP.

Ukázka stránky a emailového formuláře je na této ukázce.
Po odkliknutí ikonky EMAILU vpravo nahoře.
Bohužel mně nefunguje PHP, které mám určitě správně,
protože ho používám všude jinde.

Máte prosím nějakou radu, jak udělat podobný efekt, třeba
pomocí jiného JS, nebo jak by to šlo udělat, vyřešit?
Případně má toto řešení nějaký problém, který mě
zatím nenapadá :)

prosím, prosím, máte nějakou radu
Witiko
Profil
moom:
S čím je tedy problém, s PHP scriptem nebo javascriptem? Pakliže máte podezření, že javascript způsobuje nefunkčnost PHP scriptu (nepravděpodobné), tak se podělte o celý php kód / relevantní úsek, abychom mohli posoudit, kde je chyba.

Slovy moderátora Chamurappiho: Prosím o živou ukázku. :-)
moom
Profil
Děkuji za odpověď. Ukázka odkazu je nahoře. Ukázka PHP sránky na kterou
se odkazuje formulář je zde:

<div>
<?
	$predmet = iconv("utf-8", "windows-1250", $_POST['predmet']);
	$jmeno = iconv("utf-8", "windows-1250", $_POST['jmeno']);
	$email = $_POST['email'];
	$spam = $_POST['spam'];
	$text = iconv("utf-8", "windows-1250", $_POST['text']);

	if 
	
	($predmet!="" and $email!="" and $text!="" and $spam=="11")
	
	{ Mail 
	("email@email.cz", 
	$predmet, 
	"Jmeno:".$jmeno."\n".$text, 
	"From: " . $email . "\nContent-type: text/plain;charset=windows-1250\n");
	
	echo "<p class=\"ok\">Váš email byl v pořádku odeslán.</p> ";
	}
	else
	{
	echo "<p class=\"spatne\">Váš email se nepodařilo odeslat.</p>";
	}
?>
</div>


Problém asi bude v tom, že stránka která se otevře zprava pomocí PageSlide
je načtená ze samostatného souboru email.html
který obsahuje pouze DIV s formulářem a ten by správně měl načítat další
stránku poslat.php, kde je právě tento kód.

Asi nejde udělat aby PageSlide načetl místo současné jinou PHP stránku.
Ale teď mě napadlo, že by šlo udělat, že by PageSlide mohl načíst rovnou
stránku PHP , ale to zase netuším jak udělat formulář a nechat PHP přímo
v jednom souboru...

No, babo raď, jsem z toho jelen a rád bych použil tento vyjížděcí efekt...

Prosím, prosím, nemáte nějakou radu
Witiko
Profil
moom:
Problém je v pluginu. Dle zběžného pohledu následující úsek kódu:
$(this).unbind("click").bind("click", function() {
    function _checkA(elm) {
        for (; elm != null; elm = elm.parentElement) {
            if (elm.tagName == "A") return true;
        }
        return false;
    }
    _openSlide(this);
    $("#pageslide-slide-wrap").unbind("click").click(function(e) {
        if (!_checkA(e.target)) return false;
    });
    if (settings.modal != true) {
        $(document).unbind("click").click(function(e) {
            if (!_checkA(e.target)) {
                $(document).unbind("click");
                _closeSlide(e);
                return false;
            }
        });
    }
    return false;
});
blokuje kliknutí na cokoliv ve výsuvném pruhu, pokud se nejedná o odkaz. Pokud je má domněnka správná, stačilo by řetězec if (elm.tagName == "A") return true; nahradit za if (elm.tagName == "A" || elm.tagName == "INPUT") return true;, načež by mělo být submit tlačítko nakliknutelné. Řekněte, jak jste pochodil.
moom
Profil
škoda, škoda, nějak to nepomáhá. Vyzkoušel jsem zaměnit
kód, ale nic. Kurňa práce... Asi se budu muset vzdát této vychytávky
a použít něco jiného... Můžete to otestovat, kód jsem zaměnil.

Ještě jsem dnes našel toto:
http://theodin.co.uk/blog/ajax/contactable-jquery-plugin.html
ale neodjíždí celá stránka...

Prosím, prosím, nemáte nějaké řešení?
Witiko
Profil
moom:
Nezaměnil, soubor jquery.pageslide.js řádek 132:
function _checkA(elm) { for (; elm != null; elm = elm.parentElement) { if (elm.tagName == 'A') return true; } return false; }
Je potřeba if (elm.tagName == "A") return true; nahradit za if (elm.tagName == "A" || elm.tagName == "INPUT") return true;
moom
Profil
Hmm... zajímavé. Měl by tam být soubor: jquery.pageslide-new.js
kde právě na 132 řádku je ta změna. Možná se musí dát reload
stránky (CTRL-R)
Witiko
Profil
moom
Moje chyba, nepoužíváte input, ale button. Pak tedy if(elm.tagName == "A" || elm.tagName == "BUTTON") return true;
moom
Profil
Tak jsem ještě vyzkoušel načíst do PageSlide tuto stránku,
která kombinuje do jednoho souboru PHP a jQuery pro odesílání
emailu. Je to uděláno pomocí tohoto návodu.

Formulář funguje, chodí mně i emaily.

Bohužel. když to načtu do PageSlide, tak zase nefunguje
tlačítko. Kontrola vyplnění formuláře funguje, ale tlačítko ne.
Jako by bylo blokováno jenom pro zavření PageSlide.
Ukázka zde s puvodním JS. Toto Nefunguje!

A tady je už funkční ukázka s dopsaným řádkem, která funguje,
ale otevře se potvrzení do nového okna... Sakrbléééé

Už jenom kousek a budeme u cíle :)
moom
Profil
Jejda napsal jsem komentář, ještě před přečtením posledního příspěvku. Jdu to vyzkoušet :)
moom
Profil
No jo už funguje i první verze pokud se přepíše na BUTTON.
Ale jak vošéfovat, aby se to načetlo ve stejném okně?
Tady je ukázka s JS: jquery.pageslide-new-2.js
Witiko
Profil
moom:
poslat.php se načítá ve stejném okně. Pokud chcete, aby se formulář odeslal do nového okna, pak mu dejte vlastnost target="_blank".
moom
Profil
no právě, že chci aby se načítal ve stejném okně
a nezavřel se PageSlide. Teď se po vyplnění otevře okno
poslat.php s potvrzením formuláře, místo aby se změnil
text, jenom v pravé vysunuté části...

Omlouvám se, že mám tolik dotazů.
A děkuji moc a moc za pomoc.
Witiko
Profil
moom:
To, po čem prahnete by vyřešil rámec. Ve vámi uvedené stránce ale žádné rámce nejsou a formulář je vsazený do stránek napevno, nikoliv přes klientský rámec. Možností by bylo načítat stránku do skrytého rámce a po načtení provést vypsání textu javascriptem / použít ajax, ale tím se dostáváme poměrně mimo původní problém.

Mimochodem doporučuji dodat u email.html do hlavičky kódování. Stránka se podle všeho načte každému, kdo nemá povolený javascript a aktuálně není kódování uvedeno.
moom
Profil
Jo jo, děkuji. Asi jsem si vymyslel moc složitý úkol :(
kódování jsem zatím neřešil. Vlastně email.html není ani
HTML soubor s hlavičkou atd, ale jenom text s jedním DIVem.
Každopádně děkuji za pomoc. Budu muset opustit tento efekt
a vymyslet něco jiného. Ještě jsem našel toto, kde to asi nějak
řeší JS. No, ale teď si říkám, že jestli to funguje tady:
http://theodin.co.uk/blog/ajax/contactable-jquery-plugin.html

Snažím se nedávat linky přímo se zobrazením konkrétní URL
adresy, aby nebyla vidět moje doména, ale koukám, že jste
odkázal na moji stránku přímo. Mohu prosím poprosit o schování
adresy :)

Děkuju, děkuju, děkuju

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: