Ruby Examples
environment.rb
LINKLUNA_DOMAIN_ID = "235123"
routes.rb
map.connect 'friends/new',
:controller => 'linkluna', :action => 'new'
map.connect 'friends/:id',
:controller => 'linkluna'
linkluna_controller.rb
class LinklunaController < ApplicationController
require 'net/http'
require 'hpricot'
layout 'main'
def index
@categories = []
item = ''
doc = Hpricot::XML(categories)
(doc/:category).each do |category|
['name'].each do |el|
item = "<a href='/friends/#{URI.escape(category.at(el).innerHTML)}'>#{category.at(el).innerHTML}</a>"
@categories << item
end
end
if params[:id]
@links = []
doc = Hpricot::XML(category_links(params[:id]))
(doc/:link).each do |link|
['url'].each do |el|
item = "<a href='#{link.at(el).innerHTML}'>"
end
['title'].each do |el|
item << "#{link.at(el).innerHTML}</a>"
end
['description'].each do |el|
item << " - #{link.at(el).innerHTML}"
end
['enabled'].each do |el|
@links << item if link.at(el).innerHTML == 'true'
end
end
@title = params[:id]
end
end
def new
@categories = []
doc = Hpricot::XML(categories)
(doc/:category).each do |category|
item = {}
['name'].each do |el|
item = { 'name' => category.at(el).innerHTML }
end
['id'].each do |el|
item.merge!( { 'id' => category.at(el).innerHTML } )
end
@categories << item
end
end
def create
response = Net::HTTP.post_form(URI.parse("http://linkluna.onomojo.com/remote_request/create/#{LINKLUNA_DOMAIN_ID}"), {
'contact[first_name]' => params[:contact][:first_name],
'contact[last_name]' => params[:contact][:last_name],
'contact[email]' => params[:contact][:email],
'contact[phone]' => params[:contact][:phone],
'link[url]' => params[:link][:url],
'link[recip_url]' => params[:link][:recip_url],
'link[title]' => params[:link][:title],
'link[description]' => params[:link][:description],
'link[category_id]' => params[:link][:category_id],
'submit' => '1'
})
end
private
def category_links (category)
response = Net::HTTP.get(URI.parse(URI.escape("http://linkluna.onomojo.com/remote_request/links/#{LINKLUNA_DOMAIN_ID}?category=#{category}")))
end
def categories
response = Net::HTTP.get(URI.parse("http://linkluna.onomojo.com/remote_request/categories/#{LINKLUNA_DOMAIN_ID}"))
end
def dump
response = Net::HTTP.get(URI.parse("http://linkluna.onomojo.com/remote_request/dump/#{LINKLUNA_DOMAIN_ID}"))
end
end
views/linkluna/new.rhtml
<div style="padding:20px;">
<h2>Add your site</h2>
<p>* You must provide a reciprical link to this site or your link won't be approved.</p>
<%= start_form_tag :action => 'create' %>
<p><label for="link_title">Title</label><br/>
<%= text_field 'link', 'title' %></p>
<p><label for="link_description">Description</label><br/>
<%= text_field 'link', 'description' %></p>
<p><label for="link_url">URL</label><br/>
<%= text_field 'link', 'url' %></p>
<p><label for="link_recip_url">Reciprical URL</label><br/>
<%= text_field 'link', 'recip_url' %></p>
<p><label for="contact_first_name">First Name</label><br/>
<%= text_field 'contact', 'first_name' %></p>
<p><label for="contact_last_name">Last Name</label><br/>
<%= text_field 'contact', 'last_name' %></p>
<p><label for="contact_phone">Phone</label><br/>
<%= text_field 'contact', 'phone' %></p>
<p><label for="contact_email">Email</label><br/>
<%= text_field 'contact', 'email' %></p>
<p><label for="contact_address">Address</label><br/>
<%= text_field 'contact', 'address' %></p>
<%= select( "link", "category_id", @categories.map {|u| [u["name"],u["id"]]}, options = {:prompt => '- Select a Category -'}) %>
<!--[eoform:category]-->
<%= submit_tag "Create" %>
<%= end_form_tag %>
</div>
views/linkluna/create.rhtml
<div style="padding:10px;">Thank you for your link. It may take up to 48 hours for your link to be activated.</div>
views/linkluna/index.rhtml
<div id="friends" style="padding: 10px;">
<h2>Friends of the <%= your_site %></h2>
<div id="categories" style="padding: 10px;">
<h3>Categories</h3>
<ul>
<% for item in @categories %>
<li><%= item %></li>
<% end %>
</ul>
</div>
<% if @links %>
<div id="categories" style="padding: 10px;">
<h4>Links</h4>
<ul>
<% for item in @links %>
<li><%= item %></li>
<% end %>
</ul>
</div>
<% end %>
<a href="/friends/new">Add your site</a>
</div>