ala#{body}"
+ render :text => @body
end
end
diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb
index 7b9d597..5304635 100755
--- a/app/controllers/user_controller.rb
+++ b/app/controllers/user_controller.rb
@@ -12,9 +12,11 @@ class UserController < ApplicationController
redirect_to :action => "login"
end
-# TODO make login possible to use only one username
-
def authenticate
+ if !$defaults["only_can_logins"].include?(params[:user][:email])
+ redirect_to :controller => 'internal', :action => 'onlycanlogins'
+ return false
+ end
user = User.find_by_email(params[:user][:email])
if user.nil?
redirect_to :action => 'unknown' ,:email=> params[:user][:email]
@@ -26,7 +28,7 @@ class UserController < ApplicationController
redirect_to(session["return_to"])
session["return_to"] = nil
else
- redirect_to :controller=> 'messages', :action=> 'refresh'
+ redirect_to :controller=> 'messages', :action=> 'index'
end
end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 4bafdea..c498d6a 100755
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -4,18 +4,16 @@ def form_field(object,field,flabel,example,val)
model_name = eval(object.class.model_name)
html = ""
html << "
"
- if object.errors[field.to_sym]
+ if not object.errors[field.to_sym].empty?
html << "
"
end
+
html << ""
- if object.errors[field.to_sym]
+
+ if not object.errors[field.to_sym].empty?
html << " "
html << object.errors[field.to_sym].to_s
html << ""
@@ -25,8 +23,8 @@ def form_field(object,field,flabel,example,val)
html << object.class.name.downcase+"_"+field
html << "\""
html << " name=\"#{object.class.name.downcase}[#{field}]\""
- html << " size=50 type=\"text\" class=\"text_field\" value=\""
- value = object.instance_eval(field) || val || ""
+ html << " type=\"text\" class=\"text_field\" value=\""
+ value = object.instance_eval(field) || val || ""
html << value
html << "\"/>"
html << ""
@@ -38,6 +36,47 @@ def form_field(object,field,flabel,example,val)
end
+def mail_param_view(object,field,value)
+ model_name = eval(object.class.model_name)
+ html = ""
+ html << "
"
+ html << ""
+ html << value
+ html << "
"
+ html
+end
+
+def area_field(object,field,flabel,example,val,cols,rows)
+ model_name = eval(object.class.model_name)
+ html = ""
+ html << "
"
+
+ if not object.errors[field.to_sym].empty?
+ html << "
"
+ end
+
+ html << ""
+
+ if not object.errors[field.to_sym].empty?
+ html << ""
+ html << object.errors[field.to_sym].to_s
+ html << ""
+ html << "
"
+ end
+
+ name = object.class.name.downcase + '[' + field + ']'
+ id = object.class.name.downcase+"_"+field
+ value = object.instance_eval(field) || val || ""
+ html << ""
+
+ desc = t(:example) + ": " + example
+ html << "#{desc}"
+
+ html << "
"
+end
+
def form_button(text,image)
html = ""
html << "
"
diff --git a/app/helpers/folder_helper.rb b/app/helpers/folder_helper.rb
index 4a4d477..68dc87f 100755
--- a/app/helpers/folder_helper.rb
+++ b/app/helpers/folder_helper.rb
@@ -3,12 +3,12 @@ module FolderHelper
def folder_link(folder)
folder.parent.empty? ? name = folder.name : name = folder.parent.gsub(/\./,'#') + "#" + folder.name
- s = link_to folder.name.capitalize, messages_folder_path(:id => name)
+ s = link_to folder.name.capitalize, folders_select_path(:id => name)
if folder.full_name.downcase == $defaults["mailbox_trash"].downcase
if not folder.total.zero?
s <<' ('
- s << link_to(t(:emptybin,:scope=>:folder),messages_emptybin_path)
+ s << link_to(t(:emptybin,:scope=>:folder),folders_emptybin_path)
s << ')'
end
else
diff --git a/app/helpers/messages_helper.rb b/app/helpers/messages_helper.rb
index 135c25a..f616fbb 100755
--- a/app/helpers/messages_helper.rb
+++ b/app/helpers/messages_helper.rb
@@ -18,6 +18,13 @@ module MessagesHelper
ImapMessageModule::IMAPAddress.parse(addr).friendly
end
+ def show_address_formatter(addr)
+ html = ""
+ fs = addr.split(/#/)
+ fs[0].size.zero? ? html << h("<")+fs[1]+h("@")+fs[2]+h(">") : html << fs[0]+h(" <")+fs[1]+h("@")+fs[2]+h(">")
+ html
+ end
+
def subject_formatter(message)
if message.subject.size.zero?
s = t(:no_subject,:scope=>:message)
diff --git a/app/models/folder.rb b/app/models/folder.rb
index d967081..c3dfc97 100755
--- a/app/models/folder.rb
+++ b/app/models/folder.rb
@@ -40,6 +40,9 @@ class Folder < ActiveRecord::Base
def check_fill_params
self.total.nil? ? self.total = 0 : self.total
self.unseen.nil? ? self.unseen = 0 : self.unseen
+ self.parent.nil? ? self.parent = "" : self.parent
+ self.haschildren.nil? ? self.haschildren = false : self.haschildren
+ self.delim.nil? ? self.delim = "." : self.delim
end
def self.createBulk(user,imapFolders)
diff --git a/app/models/message.rb b/app/models/message.rb
index 3a51d40..4001327 100755
--- a/app/models/message.rb
+++ b/app/models/message.rb
@@ -2,6 +2,8 @@ class Message < ActiveRecord::Base
belongs_to :user
belongs_to :folder
+ attr_accessor :body
+
def self.getPageForUser(user,folder,page,sort_field,sort_dir)
order = 'date desc'
@@ -22,7 +24,7 @@ class Message < ActiveRecord::Base
:msg_id => mess.message_id,
:uid => mess.uid,
:from_addr => mess.from_to_db,
- :to_addr => mess.to,
+ :to_addr => mess.to_to_db,
:subject => mess.subject,
:content_type => mess.content_type,
:date => mess.date,
diff --git a/config/defaults.yml b/config/defaults.yml
index afbae6e..57e05f8 100755
--- a/config/defaults.yml
+++ b/config/defaults.yml
@@ -35,3 +35,4 @@ mailbox_trash: INBOX.Trash
mailbox_sent: INBOX.sent
mailbox_drafts: INBOX.drafts
+only_can_logins: [login]
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 70e313f..56355ff 100755
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -28,6 +28,7 @@ pl:
subject: Temat
size: Rozmiar
date: Data
+ body: Treść
user:
email: E-mail
password: Hasło
@@ -40,7 +41,7 @@ pl:
compose_to_selected: Napisz do wybranych
delete_selected: Usuń wybrane
modifying: Modyfikacja kontaktu
- creating_new: Tworzenie nowego kontaktu
+ creating_new: Nowy kontakt
create_new: Utwórz nowy kontakt
contacts: Kontakty
contact: Kontakt
@@ -55,7 +56,7 @@ pl:
folder:
folders: Foldery
- no_shown: Żadnych pokazanych folderów
+ no_shown: Nie prezentowany jest żaden folder. Skonfiguruj widok folderów w zakładce
parent: Folder nadrzędny
to_create: Folder do utworzenia
to_delete: Folder do usunięcia
@@ -84,6 +85,16 @@ pl:
compose:
compose: Nowa wiadomość
+ new_message: Nowa wiadomość
+ not_contain_at: ",jeżeli nie zawiera znaku @, adres będzie szukany w kontaktach"
+ subject_of_the_message: Temat wiadomości
+ write_your_message_here: Tu wpisz swoją wiadomość
+
+ sendout:
+ was_sent: Wiadomość została wysłana
+
+ show:
+ replay_to: Odpowiedz
user:
login_failure: Nieudane logowanie. Podano błędny e-mail lub hasło.
@@ -96,6 +107,7 @@ pl:
unknown_setup: Idź do strony konfiguracyjnej i skonfiguruj swój dostęp
setup: Konfiguracja
login: Logowanie
+ only_can_logins: Podany identyfikator użytkownika nie uprawnia do korzystania z aplikacji
must_be_unique: musi być unikalny
some_add_info: jakieś dodatkowe informacje
diff --git a/config/routes.rb b/config/routes.rb
index a0c179a..d819134 100755
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -8,26 +8,34 @@ Mailr::Application.routes.draw do
#resources :folders
- get "folders/index"
+ match "folders/index" => 'folders#index', :as => :folders
post "folders/create"
post "folders/delete"
post "folders/show_hide"
get "folders/refresh"
+ get "folders/refresh_status"
post "folders/refresh"
+ match "folders/select/:id" => 'folders#select', :as => :folders_select
+ get "folders/emptybin"
get "internal/error"
get "internal/imaperror"
get "internal/loginfailure"
+ get "internal/onlycanlogins"
root :to => "messages#index"
+ #get "messages/refresh_status"
+ #get "messages/emptybin"
+ #match "messages/select/:id" => 'messages#select', :as => :messages_select
get "messages/index"
- get "messages/refresh"
- match 'messages/folder/:id' => 'messages#folder', :as => :messages_folder
+ #match 'messages/folder/:id' => 'messages#folder', :as => :messages_folder
post "messages/ops"
- get "messages/compose"
- get "messages/refresh"
+ post "messages/msgops"
+ match "messages/compose" => 'messages#compose'
+ match "messages/reply/:id" => 'messages#reply'
+ post "messages/sendout"
match "messages/show/:id" => 'messages#show'
- get "messages/emptybin"
+ match "messages/body/:id" => 'messages#body' , :as => :messages_body
get "user/logout"
post "user/authenticate"
diff --git a/lib/imap_mailbox.rb b/lib/imap_mailbox.rb
index aa4b319..6f0fd1e 100755
--- a/lib/imap_mailbox.rb
+++ b/lib/imap_mailbox.rb
@@ -12,11 +12,12 @@ class IMAPMailbox
attr_accessor :sfolder
attr_accessor :logger
- def initialize(logger)
+ def initialize(logger,debug)
@sfolder = ''
@folders = {}
@connected = false
@logger = logger
+ Net::IMAP.debug = debug
end
def connect(server,username,password)
diff --git a/lib/imap_message.rb b/lib/imap_message.rb
index d72f1f2..17afc4f 100755
--- a/lib/imap_message.rb
+++ b/lib/imap_message.rb
@@ -57,7 +57,6 @@ class IMAPMessage
envelope = message.attr['ENVELOPE']
m.envelope = envelope
m.message_id = envelope.message_id
- m.to = envelope.to
m.date = envelope.date
m.subject = envelope.subject
m.uid = message.attr['UID']
@@ -66,6 +65,7 @@ class IMAPMessage
m.size = message.attr['RFC822.SIZE']
m.unseen = !(message.attr['FLAGS'].member? :Seen)
m.from = IMAPAddress.from_address(envelope.from[0])
+ m.to = IMAPAddress.from_address(envelope.to[0])
m
end
@@ -77,6 +77,10 @@ class IMAPMessage
from.to_db
end
+ def to_to_db
+ to.to_db
+ end
+
end
diff --git a/lib/imap_session.rb b/lib/imap_session.rb
index 4e5042a..8b915f3 100755
--- a/lib/imap_session.rb
+++ b/lib/imap_session.rb
@@ -5,7 +5,7 @@ module ImapSessionModule
def open_imap_session
begin
- @mailbox ||= ImapMailboxModule::IMAPMailbox.new(logger)
+ @mailbox ||= ImapMailboxModule::IMAPMailbox.new(logger,$defaults["imap_debug"])
@mailbox.connect(@current_user.servers.primary,@current_user.email, @current_user.get_cached_password(session))
rescue Exception => ex
redirect_to :controller => 'internal', :action => 'loginfailure'
diff --git a/themes/olive/stylesheets/style.css b/themes/olive/stylesheets/style.css
index 1905386..1355dff 100755
--- a/themes/olive/stylesheets/style.css
+++ b/themes/olive/stylesheets/style.css
@@ -356,11 +356,11 @@ tr.notseen td.subject {
font-weight: bold;
}
-input,select {
+input,select,textarea {
background-color: #EFF3E4;
border: 1px solid #5E634E;
color: #black;
- margin: 5px 0 0;
+ margin: 3px 0;
}
#footer {
@@ -422,10 +422,33 @@ div.params {
}
div.params div.group {
- margin-bottom:5px;
+ margin-bottom: 10px;
}
-div.params div.group div.fieldWithErrors label.label {
+div.msg_header label {
+ display: inline;
+ float: left;
+ text-align: right;
+ width: 100px;
+ margin-right: 10px;
+ font-weight: bold;
+}
+
+div.msg_header div.group {
+ margin: 10px 0;
+}
+
+div.msg_header {
+ font-size: 14px;
+}
+
+iframe {
+ width: 937px;
+ height: 600px;
+ margin-top: 10px;
+}
+
+div.params div.group div.fieldWithErrors label.label, div.params div.group label.label{
font-weight: bold;
font-size: 14px;
}
@@ -444,3 +467,4 @@ div.params div.group .description {
div.params div.group .fieldWithErrors .error {
color: red;
}
+
diff --git a/themes/olive/views/folders/_list.html.erb b/themes/olive/views/folders/_list.html.erb
index c3078c1..d7f92d9 100755
--- a/themes/olive/views/folders/_list.html.erb
+++ b/themes/olive/views/folders/_list.html.erb
@@ -1,8 +1,8 @@