Ten dokument nie wyjaśnia wszystkich wątpliwości? Szczegółowa dokumentacja techniczna API DoCelu.pl
Sprawdź toczące się dyskusje na Forum API DoCelu.pl
Ten dokument nie wyjaśnia wszystkich wątpliwości? Szczegółowa dokumentacja techniczna API DoCelu.pl
Sprawdź toczące się dyskusje na Forum API DoCelu.pl
W celu wysłania e-maila z linkiem do strony niezbędne jest zdefiniowanie funkcji callBack do pobierania stanu linka:
function getLinkCallback(linkCreationParameter) {
var thisHref = document.location.href;
thisHref += (-1 == thisHref.indexOf('?')) ? '?' : '&';
thisHref += 'lon=' + linkCreationParameter.lon + '&';
thisHref += 'lat=' + linkCreationParameter.lat + '&';
thisHref += 'zoom=' + linkCreationParameter.zoom + '&';
return thisHref;
}
Teraz należy jeszcze oprogramować samo wysyłanie e-maila. Potrzebujemy do tego serwera pocztowego. Można też skorzystać ze swojego konta smtp, dostępnego na większości serwerów pocztowych. Wysyłanie e-maila musi odbywać się po stronie serwera. W tym celu należy stworzyć stronę web, po wywołaniu której, na podstawie parametrów requestu wysyłany jest e-mail. Po stworzeniu takiego widoku należy zdefiniować w konfiguracji parametry takiego widoku:
var sendViewPath = {
"url" : "http://moja.strona.pl/sendView.html",
"paramNames" : {
"body" : "msgBody",
"from" : "senderEmail",
"to" : "receiverEmail",
"link" : "mapLink",
"signature" : "signature"
}
}
Przy powyższej konfiguracji chcąc wysłać e-maila z danymi:
API wywoła stronę określoną URLem:
http://moja.strona.pl/sendView.html?msgBody=Tu%20by%C5%82em%20na
%20wakacjach&senderEmail=Jan.Kowalski%40poczta.jana.pl&receiverEmail=
Piotr.Nowak%40poczta.piotra.pl&mapLink=http%3A%2F%2Fdocelu.pl
%2F&signature=Jasiek&callback=jsonp1234
Wywołanie powyższego widoku powinno oczywiście powodować wysłanie e-maila, gdyż taki jest cel tej funkcjonalności. Natomiast schemat odpowiedzi powinien być zgodny ze standardem jsonp, co jest wymagane przy wywołaniu javascriptem stron umieszczonych na zewnętrznych witrynach.
jsonp1234({
"result" : 1,
"value" : {"info":"Operacja zakończona powodzeniem"},
"error" : []
});
Jak widzimy powyższy fragment to wywołanie funkcji javascriptowej. Nazwą funkcji jest parametr callBack z URLa. Funkcja przyjmuje jeden parametr - obiekt javascriptowy. Obiekt ten posiada 3 atrybuty:
Jeśli chcemy, aby na mapie pojawił się odpowiedni przycisk i obsługa formularza, to musimy ustawić w konfiguracji mapy element features.sendView na true. W konfiguracji wpiszemy też funkcję callBack do pobierania linka.
var config = {
"features" : {
"sendView" : true
},
"callBacks" : {
"getLink" : getLinkCallback
},
"paths" : {
"sendView" : sendViewPath
}
};
Możliwe jest też wywołanie okna z formularzem wysyłania linka do mapy z przycisku umieszczonego poza obszarem mapy:
<a href="javascript:DoCelu.send()">link do mapy</a>
Wywołuje wysłanie e-maila według wcześniejszego opisu. Funkcję tą możemy obsługiwać automatycznie poprzez formularz na mapie, lub wywoływać z poziomu javascriptu.
var params = {
"body" : "Tu byłem na wakacjach",
"from" : "Jan.Kowalski@poczta.jana.pl",
"to" : "Piotr.Nowak@poczta.piotra.pl",
"link" : "http://docelu.pl/",
"signature" : "Jasiek"
};
Przykład użycia funkcji:
var params = {
"body" : "Tu byłem na wakacjach",
"from" : "Jan.Kowalski@poczta.jana.pl",
"to" : "Piotr.Nowak@poczta.piotra.pl",
"link" : getLinkCallback(DoCelu.getLinkCreationParameters()),
"signature" : "Jasiek"
};
DoCelu.sendView(params, function(ret, response) {
if (ret.failed) {
//błąd połączenia AJAX
} else {
if (response.result) {
alert('e-mail wysłany');
} else {
alert('błąd wysyłania maila ' + jQuery.dump(response.error));
}
}
})
Mapę ładujemy z odpowiednią konfiguracją.
DoCelu.loadMap(document.getElementById('map'), config);
Przykładowy kod i efekt jego zastosowania:
<div id="map" style="width:800px; height:600px; "></div>
<script type="text/javascript">
//<![CDATA[
jQuery(document).ready(function() {
function getLinkCallback(linkCreationParameter) {
var thisHref = document.location.href;
thisHref += (-1 == thisHref.indexOf('?')) ? '?' : '&';
thisHref += 'lon=' + linkCreationParameter.lon + '&';
thisHref += 'lat=' + linkCreationParameter.lat + '&';
thisHref += 'zoom=' + linkCreationParameter.zoom + '&';
return thisHref;
}
var sendViewPath = {
"url" : "actionResponse.mock.json",
"paramNames" : {
"body" : "body",
"from" : "mailFrom",
"to" : "mailTo",
"link" : "link",
"signature" : "signature"
}
};
var config = {
"features" : {
"sendView" : true
},
"callBacks" : {
"getLink" : getLinkCallback
},
"paths" : {
"sendView" : sendViewPath
}
};
DoCelu.loadMap(document.getElementById('map'), config);
jQuery('#test').mousedown(function() {
var params = {
"body" : "Tu byłem na wakacjach",
"from" : "Jan.Kowalski@poczta.jana.pl",
"to" : "Piotr.Nowak@poczta.piotra.pl",
"link" : getLinkCallback(DoCelu.getLinkCreationParameters()),
"signature" : "Jasiek"
};
DoCelu.sendView(params, function(ret, response) {
if (ret.failed) {
//błąd połączenia AJAX
} else {
if (response.result) {
alert('e-mail wysłany');
} else {
alert('błąd wysyłania maila ' + jQuery.dump(response.error));
}
}
})
});
});
//]]>
</script>
Nasz przykład nie będzie wysyłał prawdziwych maili, gdyż jest to funkcjonalność, którą należy wykonać po stronie swojego serwera. W przykładzie tym ważne są przekazywane parametry i odpowiedź od serwera. Jeśli chcemy mieć pewność, że wszystko naprawdę działa tak, jak jest to opisane, to polecamy skorzystanie z wtyczki Firebug do przeglądarki Mozilla Firefox, bądź innego oprogramowania analizujacego ruch żądań XMLHttpRequest
Ten dokument nie wyjaśnia wszystkich wątpliwości? Szczegółowa dokumentacja techniczna API DoCelu.pl
Sprawdź toczące się dyskusje na Forum API DoCelu.pl
Ten materiał nie ma jeszcze żadnej opinii. Twoja może być pierwsza!