Class: FurnituresController

Inherits:
ApplicationController show all
Defined in:
app/controllers/furnitures_controller.rb

Overview

Contrôleur de gestion du mobilier urbain, Furniture.

Ce contrôleur permet de :

  • lister le mobilier existant, sans permettre de le modifier pour l’instant.

  • enregistrer un nouveau mobilier.

Suite à l’enregistrement d’un nouveau mobilier, ses panneaux (Panel) s’enregistreront.

Instance Method Summary collapse

Instance Method Details

#destroyObject

Suppression d’un mobilier. Le mobilier disparaît de la base si ses panneaux ont été supprimés car non updatés depuis 5 fois le delay (furniture vide)



63
64
65
66
67
68
69
70
71
72
73
# File 'app/controllers/furnitures_controller.rb', line 63

def destroy
  #Panel.find(:first,:conditions => [ "furniture_id = ?", "1"])
  furniture = Furniture.find(params[:id])
  if panel=Panel.find(:first,:conditions => [ "furniture_id = ?", params[:id]]) == nil
    render :text => "Furniture removed from database"
    furniture.destroy
  else
    
    redirect_to(:action => :list)
  end
end

#destroydeadObject

Détruit tous les mobiliers qui n’ont plus de panneaux associés



76
77
78
79
80
81
82
83
84
85
# File 'app/controllers/furnitures_controller.rb', line 76

def destroydead
  for furniture in Furniture.find_all
    for column in Furniture.content_columns 
      if Panel.find(:first,:conditions => [ "furniture_id = ?", params[:id]]) == nil
        furniture.destroy
      end
    end
  end
  redirect_to :action => 'list'
end

#indexObject

Renvoie vers l’action ‘list’



16
17
18
19
# File 'app/controllers/furnitures_controller.rb', line 16

def index
  list
  render :action => 'list'
end

#listObject

Liste des panneaux.



26
27
28
# File 'app/controllers/furnitures_controller.rb', line 26

def list
  @furniture_pages, @furnitures = paginate :furnitures, :per_page => 10
end

#registerObject

Enregistrement d’un nouveau mobilier

Input

  • Environnement Second Life transmis en HTTP

  • permanent_id=permanent_id : identifiant permanent du mobilier, s’il existe déjà

permanent_id est optionnel, si le mobilier n’en remplace pas un qui existait déjà.

Output

  • Le délai de mise à jour et l’identifiant permanent, sous la forme :

delay=delay
permanent_id=permanent_id


48
49
50
51
52
53
54
55
56
57
58
# File 'app/controllers/furnitures_controller.rb', line 48

def register
  # Création ou mise à jour du mobilier.
  # Attention à l'astuce "slattrs.delete(:key)". Grâce à celle-ci, l'appel à
  # 'update_attributes' ne reçoit que les 3 paramètres à mettre à jour, moins "key".
  furniture = Furniture.find_or_initialize_by_furniture_key(@slattrs.delete(:key))
  furniture.update_attributes!(@slattrs.merge({ :permanent_id => params[:permanent_id]}))
  
  render :text => "delay=#{furniture.delay}\npermanent_id=#{furniture.permanent_id}\n",
         :layout => false,
         :content_type => "text/plain"
end

#showObject

Détail d’un panneau.



31
32
33
# File 'app/controllers/furnitures_controller.rb', line 31

def show
  @furniture = Furniture.find(params[:id])
end