spännande site

22 januari, 2010

IKEA släpper tävling SM i Kylskåpespoesi. Tror inte tävlingen går igång för en på måndag.. Men det är en riktigt fräck hemsida!

Du hittar den på www.smikylskapspoesi.se

php html mail

28 maj, 2009

Alla som har försökt använda funktionen mail() för att skicka html mail vet att det inte är helt självklart att få till det så att det fungerar bra. Istället har det funnits paket som Swiftmailer, för inte så länge sedan så släppts version 4 av systemet. Här tänkte jag visa hur vi använt det för att skapa ett html mail från ett formulär.

formulärkoden ser i detta fall ut såhär:

<form action="/email/intresseanmalan" method="post" name="intresseanmalan">
<input type="hidden" name="subject" value="rubrik på Mailet"/>
<input type="hidden" name="fromEmail" value="test@dindoman.se"/>
<input type="hidden" name="fromName" value="FrånNamn"/>
<input type="hidden" name="toEmail" value=""/>
<table cellpadding="0" cellspacing="4" border="0">
<tr><td>Namn</td>
<td><input type="text" size="20" name="Namn" /></td></tr>
<tr><td>E-post</td>
<td><input type="text" size="20" name="Email" /></td></tr>
<tr><td valign="top"></td>
<td><input type="submit" value="Skicka meddeland"/></td></tr>
</table></form>

och php koden såhär

require_once $wwwRoot.'/Simple/php/Swift-4.0.3/lib/swift_required.php';
$transport = Swift_SmtpTransport::newInstance('smtpServer', smtpPort)
  ->setUsername('username')
  ->setPassword('password')
  ;
//build message from post variable!
foreach ($_POST as $kat => $varde) {
	if($kat == 'subject' || $kat == 'fromEmail' || $kat == 'fromName' || $kat == 'toEmail'){}
	else{
		  //Html versionen av mailet byggs här.
		  $messageHtml = $messageHtml.''.$kat.' = '.$varde.'<br /><br />';

		  //Textversionen av mailet byggs här.
		  $messagePlain = $messagePlain.''.$kat.' = '.$varde.'  

';
	}
}
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance()
  ->setSubject($_POST['subject'])
  ->setFrom(array($_POST['fromEmail'] => $_POST['fromName']))
// Vi skickar meddelandet till adressen som är ifylld i fältet email
  ->setTo(array($_POST['Email']))
  ->setBody($messagePlain)
  ->addPart($messageHtml, 'text/html')
  ;
$result = $mailer->send($message);

Om vi sedan skall spara det i en databas och har multipla emailfromulär på en site så är det ganska smidigt att bara peta in hela $post variabeln i en databas med 2 kolumner. Genom att alltid hålla de fält som är satta som ”hidden” likadana så får vi ganksa snart en väldigt sökbar databas som är helt dynamisk. Ungefär såhär:

//En tabell med email som ger ett id och en timestamp när emailet är skickat. Koden är inte testad men borde fungera.

mysql_query("INSERT INTO email (id, date) VALUES ('','')");
$thisId = mysql_insert_id();
foreach ($_POST as $kat => $varde) {
	mysql_query("INSERT INTO emailComponents (cat, value, emailId)
        VALUES ('".$kat."', '".$varde."', '".$thisId."')");
';
header("Location: {$_SERVER['HTTP_REFERER']}/ok"); 

File exists Smarty

27 maj, 2009

Vi fick lite ganska länge innan vi hittade en funktion för att kontrollera om filer existerade på servern. Och därför gör vi ett inlägga om det så att du antagligen inte behöver leta lika länge.

{if file_exists(”path”)}Utskrift{/if}

Och om du vill ha smarty variabler i pathen fungera det såhär:

{if file_exists(”path`$pub.id`_`$language`.jpg”)}utskrift{/if}

Make Div clickable, klickbar

27 maj, 2009

Ibland är det jobbigt att få till så att divstrukturer får länkar som är klickbara  överallt. Det brukar sluta med att bara textfält i <div> element är klickbara. Oftast ser strukturen ut ungefär såhär:

<a href=”http://www.gaos.se” target=”_blank”>

<div class=”linkDemo”>

Massa innehåll i form av andra divar och texter mm.

</div>

</a>

Om vi skall göra hela container diven klickbar gör vi det via följande Mootools kommando:

$$(’.linkDemo’).addEvents({
click: function(){
document.location = this.getParent().getProperty(’href’);
}

});

Så kommer länken fungera alldeles utmärkt i alla webläsare!

SqueezeBox ajax och formulär

27 maj, 2009

SqueezeBox är ett förträffligt system för att hantera ajax och iframe popups med Mootools. Grunden till det är elementär att använda men när det kom till att implementera det till ett formulär blev det lite mer komplicerat. Genom att initiera SqueezeBox på ett element (div) med fromElement kunde vi dock få in formulärets svarsinformation på ett ok vis. Sen väljer vi att sätta begränsningar på boxens storlek, men om ni inte vill göra det så är det ju bara att ta bort size delen.

Testa det här:

Här kommer JavaScript koden:

$(’formNamn’).addEvent(’submit’, function(el) {
new Event(el).stop();
this.set(’send’, {
onSuccess:function(response){
var div = new Element(’div’,{html:response});
SqueezeBox.fromElement(div,{
size: {x: 1000, y: 450}
});
}
}).send();
});