From 639d223629813b94b4176591590d698183f0fdab Mon Sep 17 00:00:00 2001 From: Wojciech Todryk Date: Sat, 10 Sep 2011 20:31:55 +0200 Subject: [PATCH] some fixes --- app/controllers/application_controller.rb | 46 ------------------- app/controllers/messages_controller.rb | 6 ++- app/controllers/messages_ops_controller.rb | 34 +++++++++----- app/helpers/application_helper.rb | 8 ++-- app/helpers/messages_helper.rb | 42 ++++++++++------- app/models/user.rb | 3 +- config/defaults.yml | 2 +- config/locales/pl.yml | 2 +- themes/olive/images/key.png | Bin 0 -> 1475 bytes themes/olive/views/messages/_header.html.erb | 3 -- themes/olive/views/messages/_new.html.erb | 26 ++++++++--- themes/olive/views/user/login.html.erb | 2 +- 12 files changed, 80 insertions(+), 94 deletions(-) create mode 100755 themes/olive/images/key.png diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 8cdf6cb..008b927 100755 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -5,15 +5,8 @@ class ApplicationController < ActionController::Base protect_from_forgery before_filter :load_defaults,:current_user,:set_locale - before_filter :plugins_configuration -# rescue_from ActiveRecord::RecordNotFound do -# logger.custom('record_not_found','exc') -# reset_session -# redirect_to :controller=>'user', :action => 'login' -# end - def load_defaults $defaults ||= YAML::load(File.open(Rails.root.join('config','defaults.yml'))) end @@ -68,44 +61,6 @@ class ApplicationController < ActionController::Base end end - def self.decode_quoted(text,unknown_charset = $defaults["msg_unknown_charset"]) - begin - if text.match(/\=\?.+\?\w\?.+\?\=/).nil? - after = Iconv.conv('UTF-8',unknown_charset,text) - #after = text - else - -# FIXME support multiple showing of =?xxx?= - - - after = text - match = text.match(/\=\?.+\?\w\?.+\?\=/).to_s - f = match.split(/\?/) - case f[2].downcase - when 'q': - replace = f[3].gsub(/_/," ").unpack("M").first - when 'b': - replace = f[3].gsub(/_/," ").unpack("m").first - else - replace = match - end - match.gsub!(/\?/,'\?') - match.gsub!(/\)/,'\)') - after = text.gsub(/#{match}/,replace) - - if f[1].downcase != 'utf-8' - after = Iconv.conv('UTF-8',f[1],after) - end - - end - #logger.custom('after',after) - return after - rescue Exception => e - logger.error("Class Message: #{e.to_s}: T: #{text} M: #{match} R: #{replace} A: #{after}") - return text - end - end - def prepare_compose_buttons @buttons = [] @buttons << {:text => 'send',:scope=>:compose,:image => 'email.png'} @@ -122,7 +77,6 @@ class ApplicationController < ActionController::Base files.each do |f| @attachments << {:name => File.basename(f).gsub!(/#{@current_user.username}_/,"") , :size => File.stat(f).size } end - logger.custom('a',@attachments.inspect) end def get_system_folders diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index 41e539a..d50c72b 100755 --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -65,7 +65,9 @@ class MessagesController < ApplicationController end def compose - #before_filter + #before filter + @operation = :new + logger.custom('m',@message.inspect) end def show @@ -82,7 +84,7 @@ class MessagesController < ApplicationController @plain_header = mail.header.to_s - # FIXME missing fields + # FIXME missing fields and support arrays #@from = mail.From.addrs.presence #@to = mail.To.addrs.presence @from = @message.from_addr diff --git a/app/controllers/messages_ops_controller.rb b/app/controllers/messages_ops_controller.rb index 9783eed..3548eee 100755 --- a/app/controllers/messages_ops_controller.rb +++ b/app/controllers/messages_ops_controller.rb @@ -53,7 +53,7 @@ class MessagesOpsController < ApplicationController move end rescue Exception => e - flash[:error] = "#{t(:imap_error)} (#{e.to_s})" + flash[:error] = "#{t(:imap_error,:scope=>:internal)} (#{e.to_s})" end redirect_to :controller => 'messages', :action => 'index' end @@ -124,12 +124,18 @@ class MessagesOpsController < ApplicationController end def upload - name = params[:upload][:datafile].original_filename - upload_dir = $defaults["msg_upload_dir"] - path = File.join(upload_dir, @current_user.username + "_" + name) - File.open(path, "wb") { |f| f.write(params[:upload][:datafile].read) } - create_message_with_params - render 'messages/compose' + #FIXME check if uploads directory exists + @operation = :upload + create_message_with_params + if not params[:upload] + flash[:error] = t(:no_attach,:scope=>:compose) + else + name = params[:upload][:datafile].original_filename + upload_dir = $defaults["msg_upload_dir"] + path = File.join(upload_dir, @current_user.username + "_" + name) + File.open(path, "wb") { |f| f.write(params[:upload][:datafile].read) } + end + render 'messages/compose' end # Files uploaded from Internet Explorer: @@ -166,12 +172,15 @@ class MessagesOpsController < ApplicationController def sendout_or_save + #FIXME check if domain is set + if params[:delete_marked] and params[:files] params[:files].each do |filename| path = File.join(Rails.root,$defaults["msg_upload_dir"],@current_user.username + "_" +filename) File.delete(path) if File.exist?(path) end create_message_with_params + @operation = :new render 'messages/compose' return end @@ -193,6 +202,7 @@ class MessagesOpsController < ApplicationController if smtp_server.nil? flash[:error] = t(:not_configured_smtp,:scope => :compose) + @operation = :new render 'messages/compose' return end @@ -245,13 +255,11 @@ class MessagesOpsController < ApplicationController protected def edit - old_message = @current_user.messages.find(params[:id].first) @message = Message.new - @message.to_addr = address_formatter(old_message.to_addr,:raw) + @message.to_addr = old_message.to_addr @message.subject = old_message.subject imap_message = @mailbox.fetch_body(old_message.uid) - @edit = true mail = Mail.new(imap_message) if mail.multipart? @message.body = mail.text_part.decoded_and_charseted @@ -259,14 +267,15 @@ class MessagesOpsController < ApplicationController @message.body = mail.decoded_and_charseted end @attachments = [] + @operation = :edit render 'messages/compose' end def reply old_message = @current_user.messages.find(params[:uids].first) @message = Message.new - @message.to_addr = address_formatter(old_message.from_addr,:raw) - @message.subject = t(:reply_string,:scope=>:show) + old_message.subject + @message.to_addr = old_message.from_addr + @message.subject = old_message.subject imap_message = @mailbox.fetch_body(old_message.uid) mail = Mail.new(imap_message) @@ -276,6 +285,7 @@ class MessagesOpsController < ApplicationController @message.body = mail.decoded_and_charseted.gsub(/<\/?[^>]*>/, "") end @attachments = [] + @operation = :reply render 'messages/compose' end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 0034dd7..c6ccba4 100755 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -26,11 +26,11 @@ def form_field(object,field,flabel,example,val) html << "\"" html << " name=\"#{object.class.name.downcase}[#{field}]\"" html << " type=\"text\" class=\"text_field\" value=\"" - value = object.instance_eval(field) || val || "" + value = val || object.instance_eval(field) || "" html << value html << "\"/>" html << "" - html << t(:example) + html << t(:example,:scope=>:common) html << ": " html << example html << "" @@ -70,10 +70,10 @@ def area_field(object,field,flabel,example,val,cols,rows) name = object.class.name.downcase + '[' + field + ']' id = object.class.name.downcase+"_"+field - value = object.instance_eval(field) || val || "" + value = val || object.instance_eval(field) || "" html << "" - desc = t(:example) + ": " + example + desc = t(:example,:scope=>:common) + ": " + example html << "#{desc}" html << "" diff --git a/app/helpers/messages_helper.rb b/app/helpers/messages_helper.rb index c349bd4..d4789a5 100755 --- a/app/helpers/messages_helper.rb +++ b/app/helpers/messages_helper.rb @@ -14,12 +14,12 @@ module MessagesHelper date.nil? ? t(:no_date,:scope=>:message) : date.strftime("%Y-%m-%d %H:%M") end - def address_formatter(addr,mode) + def address_formatter(addr,op) s = "" return s if addr.nil? length = $defaults["msg_address_length"].to_i - case mode + case op when :index fs = addr.gsub(/\"/,"").split(/" s = h(addr) return s + when :reply + return h(addr) end end -# def show_addr_formatter(addrs) -# return h(force_charset(addrs[0].decoded)) -# end + def body_formatter(body,op) + case op + when :reply + s = "\n\n\n" + body.gsub(/^\s+/,"").split(/\n/).each do |line| + s += ">" + line + "\n" + end + s + when :edit + return body + end + end -# def show_subject_formatter(subject) -# if subject.to_s.nil? -# t(:no_subject,:scope=>:message) -# else -# return h(force_charset(subject.decoded)) -# end -# end - - - def subject_formatter(message,mode) - case mode + def subject_formatter(message,op) + case op when :index if message.subject.nil? or message.subject.size.zero? s = t(:no_subject,:scope=>:message) @@ -65,6 +67,12 @@ module MessagesHelper else message.subject end + when :reply + if message.nil? or message.size.zero? + t(:reply_string,:scope=>:show) + else + t(:reply_string,:scope=>:show) + " " + message + end end end diff --git a/app/models/user.rb b/app/models/user.rb index cafa7d4..1374cf0 100755 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -36,10 +36,11 @@ class User < ActiveRecord::Base end def full_address + d = domain.presence || "" if email =~ /\@/ email else - email + "@" + domain + email + "@" + d end end diff --git a/config/defaults.yml b/config/defaults.yml index d8e98b2..b71ffca 100755 --- a/config/defaults.yml +++ b/config/defaults.yml @@ -43,4 +43,4 @@ session_password: asDD3s2@sAdc983# mailbox_max_parent_folder_depth: 3 # array of logins which only can login to application, comment it to allow everyone to login -only_can_logins: [wtodryk] +only_can_logins: [soldier] diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 9455537..615a01a 100755 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -132,13 +132,13 @@ pl: write_your_message_here: Tu wpisz swoją wiadomość was_sent: Wiadomość została wysłana was_saved: Wiadomość została zapisana w katalogu roboczym - not_configured_smtp: Brak konfiguracji SMTP select_file: Wybierz plik delete_marked: Usuń zaznaczone send_file: Wyślij plik send: Wyślij save_as_draft: Zapisz w katalogu roboczym + no_attach: Nie wybrano żadnego pliku show: reply: Odpowiedz diff --git a/themes/olive/images/key.png b/themes/olive/images/key.png new file mode 100755 index 0000000000000000000000000000000000000000..61c34b36210f3e70d1692e2dc2ed05ae791fb3d0 GIT binary patch literal 1475 zcmV;!1w8tRP)z>%33NqRbVF}#ZDnqB004<9jRpV!1z<@;K~#90wO3nD8&?qa6S1+q z#<-zKmHJY(Y9Aw2ZJ#S4^3Y$zVA=zCkqPzed7wy6?Apn(7Z%*`d3OCSLyB{XVO z8w?nXF}AS-B*Bz`b0eW7OlQvSSs$BS%B8h5mc4uSoA1ngGiTNS0EY5gMkiVs+8O#& zdS%7}?I8)SMr`bES!AOf=wb(6qzfh06S+`7WrpTiD;N|EdcKT)8yW%@XboDy9hRUs zmIsC!zZoWz73xL9d0#Hn;>AW>>6%k8Zr*c1A1?2W=E1;X9$Z_r!_8#}RNgkq4(iY& zVG|XCy0h{*48>2Sc@nM2Mi&IuerC`_kKjA!CD}#As1bS>tk8qzS&*PFD#38v2KcbL zk0QPo!E)HXXw~S713Xb1^v7g^LkTV17>MNST5CXdjppTXDz3Vl z%iL0~XcLq#+6d{2HbXL?T~qETJfxG6dv=v#8HK4{NqA#G8z}HsDLi`N%K%aVYW%Xs z>au`ZW^F*9j!+@I+TCKJ78$7klnaU?fkZdm41}T?So@J}jo7p(Y}yo%uCSB_s2Vr1 zRFEt=&@Yo_6^Phq0das6^rHq@P`P9SUD5%%GHoJ&6icH}-f%$ML^HB93II9O8#L-d zG;&hJpHTrw6ogD7*-u0yG7_7@qL2&8N!9=7Y5`nN|tW^d}m2uA^_+KCb)hM5|6v#M*LG4P84NrM*t927v1cHwz+pO zz`JmL@$^115dcWKbPNo~zfddE`|vy6(v~aIng+Nqo~weyQv=XG_a3Z0_wCysI_Cud zDk2d?t2gWg5dhA4O@{_)m|{XIA%IlF)Zsu}K?|>k69izQKh4u-7*g7|e2mF$+@rK{ zvTHF3Qz`)+chv61YBVY}e$am4%qVA}Cm5BQKMdGmnvjz>qU?S`VerwyO5C0&YzN<3 z0gSJ`nYN_1`3_*-WC80%m7^*d@@3-fgnDv{ZuFw#TT2e;LZMQ&c@=Q!@M_><=2gLu z8D6LS+~S>s4#GhkDt^Psrzf1pNu;<4N?13Yk?XfHkgjDeyZ@3%e>@M`X04n=37_+z zVLIJRxMYt?Na!brrYvw3K+zW5P%F})}34|Vw<8x55bG&`FI3fr~g8@a`cJX$m-SL^%u3 z{$550No?0`IP-o2tIx);VZVa$)o(H)GLkrr1RN|i9l9FPAi(D%kwj>1 z>U=h71@D9JVSQ^Fo@~cqZoLj#XWu?%#bgpFWfAbn=Ncanvx#WwcDOv(81i8QfyObc{}E#StTSESDaXZCbl z$cJ3AAAUDM{e&4@Gx*jP)VHpnq-*W?Y=hszu!K{Qd=zRP$62E~y~3U;Prue5#heNT dVdZG~`Ugkm>MqjUfIt8M002ovPDHLkV1n^Fnc@Hd literal 0 HcmV?d00001 diff --git a/themes/olive/views/messages/_header.html.erb b/themes/olive/views/messages/_header.html.erb index 14a31f3..ad6af09 100755 --- a/themes/olive/views/messages/_header.html.erb +++ b/themes/olive/views/messages/_header.html.erb @@ -1,9 +1,6 @@
<%= raw show_param_view(@message,"from_addr",address_formatter(@from,:show)) %> <%= raw show_param_view(@message,"to_addr",address_formatter(@to,:show)) %> - <% if @to.size > 1 %> - <%= raw show_param_view(@message,"to_addr","To dodatkowe jest") %> - <% end %> <% if not @cc.nil? %> <%= raw show_param_view(@message,"cc_addr","CC jest") %> <% end %> diff --git a/themes/olive/views/messages/_new.html.erb b/themes/olive/views/messages/_new.html.erb index d977b42..34b40fb 100755 --- a/themes/olive/views/messages/_new.html.erb +++ b/themes/olive/views/messages/_new.html.erb @@ -1,11 +1,25 @@ <%= form_tag(sendout_or_save_path)%>
- <%= raw form_field(@message,"to_addr",nil,"joe@domain.com"+', '+t(:not_contain_at,:scope=>:compose),@message.to_addr) %> - <% if not @reply.nil? %> - <% @message.subject = t(:reply_string,:scope=>:compose) + @message.subject %> - <% end %> - <%= raw form_field(@message,"subject",nil,t(:subject_of_the_message,:scope=>:compose),@message.subject) %> - <%= raw area_field(@message,"body",nil,t(:write_your_message_here,:scope=>:compose),@message.body,80,20) %> +<%= raw form_field( @message, + "to_addr", + nil, + "joe@domain.com"+', '+ t(:not_contain_at,:scope=>:compose), + address_formatter(@message.to_addr,@operation) + ) %> +<%= raw form_field( @message, + "subject", + nil, + t(:subject_of_the_message,:scope=>:compose), + subject_formatter(@message.subject,@operation) + ) %> +<%= raw area_field( @message, + "body", + nil, + t(:write_your_message_here,:scope=>:compose), + body_formatter(@message.body,@operation), + 80, + 20 + ) %>
<%= raw group_action(@buttons) %> <%= render :partial=> 'messages/file_attachs' %> diff --git a/themes/olive/views/user/login.html.erb b/themes/olive/views/user/login.html.erb index 2a839d9..324a4f8 100755 --- a/themes/olive/views/user/login.html.erb +++ b/themes/olive/views/user/login.html.erb @@ -35,7 +35,7 @@