Class: MessagesController

Inherits:
ApplicationController
  • Object
show all
Defined in:
app/controllers/messages_controller.rb

Instance Method Summary collapse

Instance Method Details

#createObject

POST /messages POST /messages.json



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'app/controllers/messages_controller.rb', line 79

def create
  @message = Message.new(params[:message])
  @message.sender = current_user
  get_parent(@message.parent_id)
  @message.receiver = User.find(@message.recipient) rescue nil

  respond_to do |format|
    if @message.save
      format.html { redirect_to messages_url, :notice => t('controller.successfully_created', :model => t('activerecord.models.message')) }
      format.json { render :json => @message, :status => :created, :location => @message }
    else
      format.html { render :action => "new" }
      format.json { render :json => @message.errors, :status => :unprocessable_entity }
    end
  end
end

#destroyObject

DELETE /messages/1 DELETE /messages/1.json



112
113
114
115
116
117
118
119
120
# File 'app/controllers/messages_controller.rb', line 112

def destroy
  @message = current_user.received_messages.find(params[:id])
  @message.destroy

  respond_to do |format|
    format.html { redirect_to messages_url }
    format.json { head :no_content }
  end
end

#destroy_selectedObject



122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# File 'app/controllers/messages_controller.rb', line 122

def destroy_selected
  if current_user
    unless current_user.has_role?('Librarian')
      access_denied
    end
  else
    redirect_to new_user_session_url
    return
  end
  respond_to do |format|
    if params[:delete].present?
      messages = params[:delete].map{|m| Message.find_by_id(m)}
    end
    if messages.present?
      messages.each do |message|
        message.destroy
      end
      flash[:notice] = t('message.messages_were_deleted')
      format.html { redirect_to messages_url }
    else
      flash[:notice] = t('message.select_messages')
      format.html { redirect_to messages_url }
    end
  end
end

#editObject

GET /messages/1/edit



72
73
74
75
# File 'app/controllers/messages_controller.rb', line 72

def edit
  @message = current_user.received_messages.find(params[:id])
  @message.sm_read!
end

#indexObject

GET /messages GET /messages.json



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/controllers/messages_controller.rb', line 9

def index
  query = params[:query].to_s.strip
  search = Sunspot.new_search(Message)
  user = current_user
  case params[:mode]
  when 'read'
    is_read = true
  when 'unread'
    is_read = false
  else
    is_read = nil
  end
  search.build do
    fulltext query
    order_by :created_at, :desc
    with(:receiver_id).equal_to user.id
    facet(:is_read)
  end
  @message_facet = search.execute!.facet('is_read').rows
  search.build do
    with(:is_read).equal_to is_read unless is_read.nil?
  end
  page = params[:page] || 1
  search.query.paginate(page.to_i, Message.default_per_page)
  @messages = search.execute!.results

  respond_to do |format|
    format.html # index.html.erb
    format.json { render :json => @messages }
    format.rss
    format.atom
  end
end

#newObject

GET /messages/new



56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'app/controllers/messages_controller.rb', line 56

def new
  parent = get_parent(params[:parent_id])
  @message = current_user.sent_messages.new
  if params[:recipient] && current_user.has_role?('Librarian')
    @message.recipient = params[:recipient]
  else
    @message.recipient = parent.sender.username if parent
  end

  respond_to do |format|
    format.html # new.html.erb
    format.json { render :json => @message }
  end
end

#showObject

GET /messages/1 GET /messages/1.json



45
46
47
48
49
50
51
52
53
# File 'app/controllers/messages_controller.rb', line 45

def show
  @message = current_user.received_messages.find(params[:id])
  @message.sm_read!

  respond_to do |format|
    format.html # show.html.erb
    format.json { render :json => @message }
  end
end

#updateObject

PUT /messages/1 PUT /messages/1.json



98
99
100
101
102
103
104
105
106
107
108
# File 'app/controllers/messages_controller.rb', line 98

def update
  @message = current_user.received_messages.find(params[:id])

  if @message.update_attributes(params[:message])
    format.html { redirect_to @message, :notice => t('controller.successfully_updated', :model => t('activerecord.models.message')) }
    format.json { head :no_content }
  else
    format.html { render :action => "edit" }
    format.json { render :json => @message.errors, :status => :unprocessable_entity }
  end
end