90 lines
2.9 KiB
Ruby
90 lines
2.9 KiB
Ruby
|
class FoldersController < ApplicationController
|
||
|
|
||
|
include ImapMailboxModule
|
||
|
include ImapSessionModule
|
||
|
|
||
|
before_filter :check_current_user ,:selected_folder
|
||
|
|
||
|
before_filter :open_imap_session
|
||
|
after_filter :close_imap_session
|
||
|
|
||
|
before_filter :get_folders, :except => :manage
|
||
|
|
||
|
theme :theme_resolver
|
||
|
|
||
|
def index
|
||
|
|
||
|
end
|
||
|
|
||
|
def create
|
||
|
if params["folder"].empty?
|
||
|
flash[:warning] = t(:folder_to_create_empty)
|
||
|
render "index"
|
||
|
else
|
||
|
begin
|
||
|
if params["parent_folder"].empty?
|
||
|
@mailbox.create_folder(params[:folder])
|
||
|
else
|
||
|
parent_folder = Folder.find(params["parent_folder"])
|
||
|
if parent_folder.depth >= $defaults["mailbox_max_parent_folder_depth"].to_i
|
||
|
raise Exception, t(:folder_max_depth)
|
||
|
end
|
||
|
@mailbox.create_folder(parent_folder.full_name + parent_folder.delim + params[:folder])
|
||
|
end
|
||
|
rescue Exception => e
|
||
|
flash[:error] = t(:can_not_create_folder) + ' (' + e.to_s + ')'
|
||
|
render 'index'
|
||
|
return
|
||
|
end
|
||
|
redirect_to :action => 'manage', :flash => t(:folder_was_created), :type => :notice
|
||
|
end
|
||
|
end
|
||
|
# FIXME if you delete folder you should change current folder because if you go to messages/index you got nil
|
||
|
def delete
|
||
|
if params["folder"].empty?
|
||
|
flash[:warning] = t(:folder_to_delete_empty)
|
||
|
render "index"
|
||
|
else
|
||
|
begin
|
||
|
folder = Folder.find(params["folder"])
|
||
|
system_folders = Array.new
|
||
|
system_folders << $defaults["mailbox_inbox"]
|
||
|
system_folders << $defaults["mailbox_trash"]
|
||
|
system_folders << $defaults["mailbox_sent"]
|
||
|
system_folders << $defaults["mailbox_drafts"]
|
||
|
if system_folders.include?(folder.full_name.downcase)
|
||
|
raise Exception, t(:system_folder)
|
||
|
end
|
||
|
@mailbox.delete_folder(Folder.find(params["folder"]).full_name)
|
||
|
rescue Exception => e
|
||
|
flash[:error] = t(:can_not_delete_folder) + ' (' + e.to_s + ')'
|
||
|
render 'index'
|
||
|
return
|
||
|
end
|
||
|
redirect_to :action => 'manage', :flash => t(:folder_was_deleted), :type => :notice
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def sub_un_scribe
|
||
|
redirect_to :action => 'manage'
|
||
|
end
|
||
|
|
||
|
def manage
|
||
|
@current_user.folders.destroy_all
|
||
|
folders=@mailbox.folders
|
||
|
Folder.createBulk(@current_user,folders)
|
||
|
if params[:flash]
|
||
|
flash[params[:type]] = params[:flash]
|
||
|
end
|
||
|
redirect_to :action => 'index'
|
||
|
end
|
||
|
|
||
|
protected
|
||
|
|
||
|
def get_folders
|
||
|
@folders = @current_user.folders.order("name asc")
|
||
|
@current_folder = @current_user.folders.current(@selected_folder)
|
||
|
end
|
||
|
|
||
|
end
|