Idag tenkte jeg at jeg skulle ta et lite tilbakeblikk i “gammel” kunnskap nemmelig WAP da ved bruk av ny kunnskap, rammeverket Ruby on Rails heretter bare RoR.
Sist jeg lagde en WAP side må vel ha vært tilbake i år 2000, da i forbindelse med BrassForum hvor jeg la ut en nyhetsoversikt. Jeg fant i hvert fall ut at jeg hadde helt glemt hvor kresen WAP var da jeg ikke fikk noe frem på mobilen! Eneste som var feil var at jeg hadde glemt “alt” attributten på “img” taggen som er påkrevd.
Jeg ville helst teste lokalt på utviklermaskinen, så da var jakten på en WML leser som gikk an å bruke under Linux igang igjen. Har egentlig ikke funnet noen frie som jeg er helt fornøyd med enda, forslag? Men i hvert fall jeg har nå brukt wmlbrowser en plugin til Firefox selv om den var litt trøblete, av en eller annen grunn får jeg bare den til virke ved å starte Firefox som root bruker!! Ellers har du jo online leseren Wapsilon. Nå er ikke jeg noen stor Opera bruker, men Opera sin nettleser har innebygget støtte for WML.
Mitt lille eksempel under presenterer en WAP side som også inneholder et bilde som blir generert av RoR og av gammel vane da i formatet WBMP som vel var det eneste formatet en kunne bruke med WAP i “gamledager”.
Eneste en egentlig trenger i en “controlller” for tilby WAP med RoR er de første linjene med “set_content_type” som setter Content-Type til text/vnd.wap.wml
wap_controller.rb
require 'RMagick'
class WapController < ApplicationController
before_filter :set_content_type
def set_content_type
@headers["Content-Type"] = "text/vnd.wap.wml; charset=utf-8"
end
def wbmp
canvas = Magick::Image.new(100, 100,
Magick::HatchFill.new('transparent','#323337'))
gc = Magick::Draw.new
gc.annotate(canvas,80,20,27,63, "tp") {
self.stroke = '#f00000'
self.pointsize = 50
self.font_weight = 900
self.stroke_width = 3
}
send_data canvas.to_blob { |img| img.format = "WBMP" },
:type => 8220image/vnd.wap.wbmp8221, :disposition => 8220inline8221
end
end
index.rhtml
< ?xml version="1.0" encoding="utf-8"?>
< !DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card>
<b>WAP med Rails</b>
< %= DateTime.now.to_s %>
<img src="http://demo.brassgeek.com/wap/wbmp"
height="100" width="100" alt="Generert bilde"/>
</card>
</wml>
Dette eksempelet nås på http://demo.brassgeek.com/wap/
Hvis jeg da går et skritt videre og setter opp en “layout” for WAP på samme måte som en gjør det for HTML med RoR samt si at vi har en User “model” så kan jeg f.eks. lage en liten enkel telefonliste slik som dette:
users.rhtml
<card>
< % User.find_all.each do |user| %>
<b>< %= user.fullname %></b>Mob: < %= user.phone %>
< % end %>
</card>
Dette eksempelet nås på http://demo.brassgeek.com/wap/users/