new stuff
This commit is contained in:
parent
65472c55cc
commit
68b925ea5e
29 changed files with 368 additions and 33 deletions
|
@ -2,9 +2,16 @@ require 'yaml'
|
|||
|
||||
class ApplicationController < ActionController::Base
|
||||
|
||||
#unless config.consider_all_requests_local
|
||||
# #rescue_from ActionController::RoutingError, :with => :route_not_found
|
||||
# rescue_from ActiveRecord::RecordNotFound, :with => :route_not_found
|
||||
#end
|
||||
|
||||
protect_from_forgery
|
||||
before_filter :load_defaults,:set_locale,:current_user
|
||||
|
||||
################################# protected section ###########################################
|
||||
|
||||
protected
|
||||
|
||||
def load_defaults
|
||||
|
@ -48,4 +55,12 @@ class ApplicationController < ActionController::Base
|
|||
@current_folder = @current_user.folders.current(@selected_folder)
|
||||
end
|
||||
|
||||
##################################### private section ##########################################
|
||||
|
||||
#private
|
||||
|
||||
#def route_not_found
|
||||
# render :text => 'What the fuck are you looking for ?', :status => :not_found
|
||||
#end
|
||||
|
||||
end
|
||||
|
|
|
@ -81,9 +81,10 @@ class FoldersController < ApplicationController
|
|||
|
||||
def refresh
|
||||
Folder.refresh(@mailbox,@current_user)
|
||||
if params[:flash]
|
||||
flash[params[:type]] = params[:flash]
|
||||
end
|
||||
flash.keep
|
||||
#if params[:flash]
|
||||
# flash[params[:type]] = params[:flash]
|
||||
#end
|
||||
redirect_to :action => 'index'
|
||||
end
|
||||
|
||||
|
|
|
@ -4,9 +4,7 @@ class InternalController < ApplicationController
|
|||
layout "simple"
|
||||
|
||||
def error
|
||||
@title = params[:title] || t(:general_error)
|
||||
@error = params[:error] || t(:unspecified_error)
|
||||
logger.error "!!! InternalControllerError: " + @error
|
||||
|
||||
end
|
||||
|
||||
def imaperror
|
||||
|
@ -16,6 +14,13 @@ class InternalController < ApplicationController
|
|||
render 'error'
|
||||
end
|
||||
|
||||
def page_not_found
|
||||
@title = t(:page_not_found)
|
||||
@error = t(:page_not_found)
|
||||
logger.error "!!! InternalControllerError: " + @error
|
||||
render 'error'
|
||||
end
|
||||
|
||||
def loginfailure
|
||||
reset_session
|
||||
flash[:error] = t(:login_failure)
|
||||
|
|
|
@ -1,22 +1,85 @@
|
|||
require 'imap_session'
|
||||
require 'imap_mailbox'
|
||||
require 'imap_message'
|
||||
|
||||
class MessagesController < ApplicationController
|
||||
|
||||
include ImapMailboxModule
|
||||
include ImapSessionModule
|
||||
include ImapMessageModule
|
||||
include MessagesHelper
|
||||
|
||||
before_filter :check_current_user ,:selected_folder
|
||||
|
||||
before_filter :get_current_folders, :only => [:index,:compose]
|
||||
before_filter :get_current_folders, :only => [:index,:compose,:show]
|
||||
|
||||
before_filter :open_imap_session, :only => :refresh
|
||||
after_filter :close_imap_session, :only => :refresh
|
||||
|
||||
theme :theme_resolver
|
||||
|
||||
@@fetch_attr = ['ENVELOPE','BODYSTRUCTURE', 'FLAGS', 'UID', 'RFC822.SIZE']
|
||||
|
||||
def index
|
||||
flash[:notice] = 'Not implemented yet'
|
||||
|
||||
open_imap_session
|
||||
####################
|
||||
@messages = []
|
||||
|
||||
folder_status = @mailbox.status(@current_folder.full_name)
|
||||
@current_folder.update_attributes(:messages => folder_status['MESSAGES'], :unseen => folder_status['UNSEEN'])
|
||||
|
||||
if folder_status['MESSAGES'].zero?
|
||||
return
|
||||
end
|
||||
|
||||
messages = @mailbox.fetch(@current_folder.full_name,1..-1, "UID")
|
||||
logger.custom('mess',messages)
|
||||
uids_to_be_fetched = []
|
||||
|
||||
messages.each do |m|
|
||||
uids_to_be_fetched << m.attr['UID']
|
||||
end
|
||||
|
||||
messages = []
|
||||
@current_user.messages.destroy_all
|
||||
uids_to_be_fetched.each_slice($defaults["imap_fetch_slice"].to_i) do |slice|
|
||||
logger.custom('slice',slice.join(","))
|
||||
messages = @mailbox.uid_fetch(@current_folder.full_name,slice, @@fetch_attr)
|
||||
|
||||
|
||||
|
||||
messages.each do |m|
|
||||
|
||||
envelope = m.attr['ENVELOPE']
|
||||
uid = m.attr['UID']
|
||||
#content_type = m.attr['BODYSTRUCTURE'].multipart? ? 'multipart' : 'text'
|
||||
content_type = m.attr['BODYSTRUCTURE'].media_type.downcase
|
||||
size = m.attr['RFC822.SIZE']
|
||||
unread = !(m.attr['FLAGS'].member? :Seen)
|
||||
from = ImapMessageModule::IMAPAddress.from_address(envelope.from[0])
|
||||
logger.custom('from',from.to_db)
|
||||
logger.custom('enevelope_from',envelope)
|
||||
logger.custom('body',m.attr['BODYSTRUCTURE'])
|
||||
message = @current_user.messages.create(:folder_id => @current_folder.id,
|
||||
:msg_id => envelope.message_id,
|
||||
:uid => uid,
|
||||
:from => from.to_db,
|
||||
:to => envelope.to,
|
||||
:subject => envelope.subject,
|
||||
:content_type => content_type,
|
||||
:date => envelope.date,
|
||||
:unread => unread,
|
||||
:size => size)
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@messages = Message.getPageForUser(@current_user,params['page'])
|
||||
|
||||
###############
|
||||
close_imap_session
|
||||
end
|
||||
|
||||
def folder
|
||||
|
@ -29,7 +92,20 @@ class MessagesController < ApplicationController
|
|||
end
|
||||
|
||||
def refresh
|
||||
redirect_to :action => 'index'
|
||||
redirect_to :action => 'index'
|
||||
end
|
||||
|
||||
def ops
|
||||
redirect_to :action => 'index'
|
||||
end
|
||||
|
||||
def show
|
||||
@message = Message.find(params[:id])
|
||||
flash[:notice] = 'Not impelented yet'
|
||||
open_imap_session
|
||||
@body = @mailbox.fetch_body(@current_folder.full_name,@message.uid)
|
||||
logger.custom('body',@body.inspect)
|
||||
close_imap_session
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -8,6 +8,8 @@ class PrefsController < ApplicationController
|
|||
|
||||
def index
|
||||
flash[:notice] = 'Not implemented yet'
|
||||
|
||||
@prefs = @current_user.prefs
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue