Home Pricing About Contact

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>