new stuff

This commit is contained in:
Wojciech Todryk 2011-08-02 23:12:17 +02:00
parent 65472c55cc
commit 68b925ea5e
29 changed files with 368 additions and 33 deletions

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -8,6 +8,8 @@ class PrefsController < ApplicationController
def index
flash[:notice] = 'Not implemented yet'
@prefs = @current_user.prefs
end
end