From 7879dd49a26c9b64089e65f389c220954694d1d9 Mon Sep 17 00:00:00 2001 From: Wojciech Todryk Date: Fri, 9 Sep 2011 22:10:25 +0200 Subject: [PATCH] devel --- app/controllers/application_controller.rb | 23 ++- app/controllers/contacts_controller.rb | 21 ++- app/controllers/events_controller.rb | 2 + app/controllers/folders_controller.rb | 4 +- app/controllers/messages_controller.rb | 49 ++++-- app/controllers/messages_ops_controller.rb | 82 +++++++++- app/controllers/prefs_controller.rb | 1 + app/helpers/application_helper.rb | 150 +++++++++++++----- app/helpers/events_helper.rb | 55 +++++++ app/helpers/messages_helper.rb | 58 ++++--- app/models/event.rb | 2 + app/models/message.rb | 31 ++-- app/models/user.rb | 4 + config/defaults.yml | 7 +- config/locales/pl.yml | 79 +++++---- config/routes.rb | 5 +- db/migrate/20110906094129_create_events.rb | 19 +++ .../20110908094506_add_msg_params_to_prefs.rb | 11 ++ db/schema.rb | 16 +- lib/imap_message.rb | 2 +- lib/mail_plugin_extension.rb | 54 +++++++ test/fixtures/events.yml | 19 +++ test/functional/events_controller_test.rb | 8 + test/unit/event_test.rb | 8 + test/unit/helpers/events_helper_test.rb | 4 + themes/olive/images/License.txt | 6 + themes/olive/images/copy.png | Bin 0 -> 726 bytes themes/olive/images/cross.png | Bin 655 -> 0 bytes themes/olive/images/download.png | Bin 0 -> 806 bytes themes/olive/images/email.png | Bin 0 -> 851 bytes themes/olive/images/flag.png | Bin 0 -> 795 bytes themes/olive/images/forward.png | Bin 0 -> 817 bytes themes/olive/images/key.png | Bin 612 -> 0 bytes themes/olive/images/minus.png | Bin 0 -> 738 bytes themes/olive/images/move.png | Bin 0 -> 783 bytes themes/olive/images/plus.png | Bin 0 -> 790 bytes themes/olive/images/power.png | Bin 0 -> 872 bytes themes/olive/images/refresh.png | Bin 0 -> 855 bytes themes/olive/images/reply.png | Bin 0 -> 809 bytes themes/olive/images/save.png | Bin 0 -> 856 bytes themes/olive/images/seen.png | Bin 0 -> 815 bytes themes/olive/images/star.png | Bin 0 -> 816 bytes themes/olive/images/tick.png | Bin 537 -> 0 bytes themes/olive/images/trash.png | Bin 0 -> 891 bytes .../olive/images/ui-icons_222222_256x240.png | Bin 4369 -> 0 bytes themes/olive/images/unseen.png | Bin 0 -> 875 bytes themes/olive/images/up.png | Bin 0 -> 804 bytes themes/olive/images/zoom.png | Bin 0 -> 854 bytes themes/olive/stylesheets/base.css | 8 +- themes/olive/stylesheets/style.css | 70 ++++++-- themes/olive/views/contacts/_left.html.erb | 2 +- themes/olive/views/contacts/_list.html.erb | 2 +- themes/olive/views/contacts/_ops.html.erb | 3 +- themes/olive/views/contacts/_row.html.erb | 2 +- themes/olive/views/contacts/edit.html.erb | 2 +- themes/olive/views/contacts/index.html.erb | 10 +- themes/olive/views/contacts/new.html.erb | 2 +- themes/olive/views/events/_calendar.html.erb | 3 + themes/olive/views/folders/_create.html.erb | 2 +- themes/olive/views/folders/_delete.html.erb | 2 +- themes/olive/views/folders/_list.html.erb | 5 +- themes/olive/views/folders/_refresh.html.erb | 2 +- themes/olive/views/folders/_system.html.erb | 2 +- themes/olive/views/folders/index.html.erb | 4 +- themes/olive/views/internal/_version.html.erb | 4 + .../olive/views/layouts/application.html.erb | 2 +- themes/olive/views/layouts/simple.html.erb | 4 +- .../olive/views/messages/_attachment.html.erb | 4 +- .../views/messages/_file_attach.html.erb | 4 + .../views/messages/_file_attachs.html.erb | 16 ++ .../views/messages/_file_select.html.erb | 11 ++ themes/olive/views/messages/_header.html.erb | 6 +- themes/olive/views/messages/_image.html.erb | 2 +- themes/olive/views/messages/_images.html.erb | 2 +- themes/olive/views/messages/_message.html.erb | 17 ++ .../{_list.html.erb => _messages.html.erb} | 2 +- .../olive/views/messages/_multi_ops.html.erb | 14 +- themes/olive/views/messages/_new.html.erb | 5 +- themes/olive/views/messages/_row.html.erb | 17 -- .../olive/views/messages/_single_ops.html.erb | 10 +- themes/olive/views/messages/compose.html.erb | 13 +- themes/olive/views/messages/index.html.erb | 6 +- themes/olive/views/messages/show.html.erb | 4 +- .../olive/views/prefs/_identity_left.html.erb | 2 +- themes/olive/views/prefs/_look_left.html.erb | 3 +- themes/olive/views/prefs/_look_right.html.erb | 4 + .../olive/views/prefs/_servers_left.html.erb | 2 +- themes/olive/views/prefs/identity.html.erb | 6 +- themes/olive/views/prefs/look.html.erb | 6 +- themes/olive/views/prefs/servers.html.erb | 6 +- 90 files changed, 756 insertions(+), 257 deletions(-) create mode 100755 app/controllers/events_controller.rb create mode 100755 app/helpers/events_helper.rb create mode 100755 app/models/event.rb create mode 100755 db/migrate/20110906094129_create_events.rb create mode 100755 db/migrate/20110908094506_add_msg_params_to_prefs.rb create mode 100755 test/fixtures/events.yml create mode 100755 test/functional/events_controller_test.rb create mode 100755 test/unit/event_test.rb create mode 100755 test/unit/helpers/events_helper_test.rb create mode 100755 themes/olive/images/License.txt create mode 100755 themes/olive/images/copy.png delete mode 100755 themes/olive/images/cross.png create mode 100755 themes/olive/images/download.png create mode 100755 themes/olive/images/email.png create mode 100755 themes/olive/images/flag.png create mode 100755 themes/olive/images/forward.png delete mode 100755 themes/olive/images/key.png create mode 100755 themes/olive/images/minus.png create mode 100755 themes/olive/images/move.png create mode 100755 themes/olive/images/plus.png create mode 100755 themes/olive/images/power.png create mode 100755 themes/olive/images/refresh.png create mode 100755 themes/olive/images/reply.png create mode 100755 themes/olive/images/save.png create mode 100755 themes/olive/images/seen.png create mode 100755 themes/olive/images/star.png delete mode 100755 themes/olive/images/tick.png create mode 100755 themes/olive/images/trash.png delete mode 100755 themes/olive/images/ui-icons_222222_256x240.png create mode 100755 themes/olive/images/unseen.png create mode 100755 themes/olive/images/up.png create mode 100755 themes/olive/images/zoom.png create mode 100755 themes/olive/views/events/_calendar.html.erb create mode 100755 themes/olive/views/internal/_version.html.erb create mode 100755 themes/olive/views/messages/_file_attach.html.erb create mode 100755 themes/olive/views/messages/_file_attachs.html.erb create mode 100755 themes/olive/views/messages/_file_select.html.erb create mode 100755 themes/olive/views/messages/_message.html.erb rename themes/olive/views/messages/{_list.html.erb => _messages.html.erb} (93%) delete mode 100755 themes/olive/views/messages/_row.html.erb diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 778a7ef..8cdf6cb 100755 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -108,13 +108,22 @@ class ApplicationController < ActionController::Base def prepare_compose_buttons @buttons = [] - @buttons << {:text => 'send',:image => 'tick.png'} - @buttons << {:text => 'save_as_draft',:image => 'tick.png'} + @buttons << {:text => 'send',:scope=>:compose,:image => 'email.png'} + @buttons << {:text => 'save_as_draft',:scope=>:compose,:image => 'save.png'} end - ##################################### protected section ######################################## - - protected + def create_message_with_params + @message = Message.new + if params[:message] + @message.update_attributes(params[:message]) + end + files = Dir.glob(File.join($defaults["msg_upload_dir"],@current_user.username + "*")) + @attachments = [] + 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 @drafts_folder = @current_user.folders.drafts.first @@ -128,8 +137,8 @@ class ApplicationController < ActionController::Base private def plugins_configuration - WillPaginate::ViewHelpers.pagination_options[:previous_label] = t(:previous_page) - WillPaginate::ViewHelpers.pagination_options[:next_label] = t(:next_page) + WillPaginate::ViewHelpers.pagination_options[:previous_label] = t(:previous_page,:scope=>:common) + WillPaginate::ViewHelpers.pagination_options[:next_label] = t(:next_page,:scope=>:common) end end diff --git a/app/controllers/contacts_controller.rb b/app/controllers/contacts_controller.rb index 9c2e149..5ade327 100755 --- a/app/controllers/contacts_controller.rb +++ b/app/controllers/contacts_controller.rb @@ -4,6 +4,8 @@ class ContactsController < ApplicationController before_filter :get_contacts, :only => [:index] + before_filter :prepare_ops_buttons, :only => [:index] + theme :theme_resolver def index @@ -11,14 +13,18 @@ class ContactsController < ApplicationController end def ops + if params["create_new"] + redirect_to(new_contact_path) + return + end if !params["cids"] flash[:warning] = t(:no_selected,:scope=>:contact) else - if params["delete"] + if params["delete_selected"] params["cids"].each do |id| @current_user.contacts.find_by_id(id).destroy end - elsif params["compose"] + elsif params["compose_to_selected"] redirect_to :controller=>'messages',:action=>'compose',:cids=>params["cids"] return end @@ -61,6 +67,17 @@ class ContactsController < ApplicationController end end + ####################################### protected section ################################ + + protected + + def prepare_ops_buttons + @buttons = [] + @buttons << {:text => 'compose_to_selected',:scope=> 'contact', :image => 'email.png'} + @buttons << {:text => 'create_new',:scope=> 'contact', :image => 'plus.png'} + @buttons << {:text => 'delete_selected',:scope=>'contact',:image => 'minus.png'} + end + ####################################### private section ################################## private diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb new file mode 100755 index 0000000..5175242 --- /dev/null +++ b/app/controllers/events_controller.rb @@ -0,0 +1,2 @@ +class EventsController < ApplicationController +end diff --git a/app/controllers/folders_controller.rb b/app/controllers/folders_controller.rb index f183acc..17984ab 100755 --- a/app/controllers/folders_controller.rb +++ b/app/controllers/folders_controller.rb @@ -17,8 +17,8 @@ class FoldersController < ApplicationController def index @buttons = [] - @buttons << {:text => 'show_hide',:image => 'tick.png'} - @buttons << {:text => 'refresh',:image => 'tick.png'} + @buttons << {:text => 'show_hide',:scope=>'folder',:image => 'flag.png'} + @buttons << {:text => 'refresh',:scope=>'folder',:image => 'refresh.png'} end def create diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index a03be34..bb1ca64 100755 --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -12,15 +12,13 @@ class MessagesController < ApplicationController include MessagesHelper before_filter :check_current_user ,:selected_folder,:get_current_folders - before_filter :open_imap_session, :select_imap_folder - before_filter :prepare_compose_buttons, :only => [:compose] - - #before_filter :mail_defaults, :only => [:sendout_or_save] - before_filter :get_system_folders, :only => [:index] - + before_filter :create_message_with_params, :only => [:compose] + before_filter :prepare_multi1_buttons, :only => [:index,:show] + before_filter :prepare_multi2_buttons, :only => [:index] + before_filter :prepare_multi3_buttons, :only => [:show] after_filter :close_imap_session theme :theme_resolver @@ -67,10 +65,7 @@ class MessagesController < ApplicationController end def compose - @message = Message.new - if params[:message] - @message = update_attributes(params[:message]) - end + #before_filter end def show @@ -89,7 +84,7 @@ class MessagesController < ApplicationController @to = mail.To.addrs @cc = mail.Cc @bcc = mail.Bcc - @subject = mail.Subject + #@subject = mail.Subject @date = mail.date if mail.multipart? == true @@ -118,7 +113,7 @@ class MessagesController < ApplicationController part.parent_id = @message.uid if part.isText? @text_part = part.decoded_and_charseted - elsif part.isImage? + elsif part.isImage? and @current_user.prefs.msg_image_view_as.to_sym == :thumbnail @images << part elsif part.isHtml? @html_part = part.decoded_and_charseted @@ -136,8 +131,18 @@ class MessagesController < ApplicationController else @body = mail.decoded_and_charseted end + if @body.nil? @body = t(:no_body,:scope=>:message) + else + if @body=~/cid:([\w@\.]+)/ + attachments = mail.attachments + if not attachments.size.zero? + for idx in 0..attachments.size - 1 + @body.gsub!(/cid:#{attachments[idx].cid}/,messages_attachment_download_path(message.uid,idx)) + end + end + end end render 'html_body',:layout => 'html_body' end @@ -157,8 +162,28 @@ class MessagesController < ApplicationController render :text => a.decoded end + ############################################# protected section ########################################## protected + def prepare_multi2_buttons + @multi2_buttons = [] + @multi2_buttons << {:text => 'delete',:scope=>:message,:image => 'trash.png'} + @multi2_buttons << {:text => 'set_unread',:scope=>:message,:image => 'unseen.png'} + @multi2_buttons << {:text => 'set_read',:scope=>:message,:image => 'seen.png'} + end + + def prepare_multi1_buttons + @multi1_buttons = [] + @multi1_buttons << {:text => 'copy',:scope=>:message,:image => 'copy.png'} + @multi1_buttons << {:text => 'move',:scope=>:message,:image => 'move.png'} + end + + def prepare_multi3_buttons + @multi3_buttons = [] + @multi3_buttons << {:text => 'show_header',:scope=>:show,:image => 'zoom.png'} + @multi3_buttons << {:text => 'delete',:scope=>:show,:image => 'trash.png'} + @multi3_buttons << {:text => 'reply',:scope=>:show,:image => 'reply.png'} + end end diff --git a/app/controllers/messages_ops_controller.rb b/app/controllers/messages_ops_controller.rb index 112f3f0..181001c 100755 --- a/app/controllers/messages_ops_controller.rb +++ b/app/controllers/messages_ops_controller.rb @@ -14,6 +14,7 @@ class MessagesOpsController < ApplicationController before_filter :open_imap_session, :select_imap_folder before_filter :prepare_compose_buttons before_filter :get_system_folders, :only => [:sendout_or_save,:single,:multi] + before_filter :create_message_with_params , :only => [:sendout_or_save] after_filter :close_imap_session theme :theme_resolver @@ -26,6 +27,10 @@ class MessagesOpsController < ApplicationController return elsif params[:trash] trash + elsif params[:move] + move + elsif params[:copy] + copy end redirect_to :controller => 'messages', :action => 'index' end @@ -40,7 +45,7 @@ class MessagesOpsController < ApplicationController set_unread elsif params[:set_read] set_read - elsif params[:trash] + elsif params[:delete] trash elsif params[:copy] copy @@ -53,6 +58,9 @@ class MessagesOpsController < ApplicationController redirect_to :controller => 'messages', :action => 'index' end + ############################################### ################################################ + + def set_unread params["uids"].each do |uid| @mailbox.set_unread(uid) @@ -115,26 +123,76 @@ class MessagesOpsController < ApplicationController end 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' + end + +# Files uploaded from Internet Explorer: +# +#Internet Explorer includes the entire path of a file in the filename sent, so the original_filename routine will return something like: +# +#C:\Documents and Files\user_name\Pictures\My File.jpg +# +#instead of just: +# +#My File.jpg +# +#This is easily handled by File.basename, which strips out everything before the filename. +# +#def sanitize_filename(file_name) +# # get only the filename, not the whole path (from IE) +# just_filename = File.basename(file_name) +# # replace all none alphanumeric, underscore or perioids +# # with underscore +# just_filename.sub(/[^\w\.\-]/,'_') +#end +# +#Deleting an existing File: +# +#If you want to delete any existing file then its simple and need to write following code: +# +# def cleanup +# File.delete("#{RAILS_ROOT}/dirname/#{@filename}") +# if File.exist?("#{RAILS_ROOT}/dirname/#{@filename}") +# end + + ############################################### sendout_or_save ############################ def sendout_or_save + 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 + render 'messages/compose' + return + end + mail = Mail.new mail.subject = params[:message][:subject] mail.from = @current_user.full_address mail.to = params[:message][:to_addr] mail.body = params[:message][:body] - #mail.add_file :filename => 'somefile.png', :content => File.read('/tmp/script_monitor_20110810143216.log') + + attachments = Dir.glob(File.join($defaults["msg_upload_dir"],@current_user.username + "*")) + logger.custom('attach',attachments.inspect) + attachments.each do |a| + mail.add_file :filename => File.basename(a.gsub(/#{@current_user.username}_/,"")), :content => File.read(a) + end if params[:send] smtp_server = @current_user.servers.primary_for_smtp if smtp_server.nil? flash[:error] = t(:not_configured_smtp,:scope => :compose) - @message = Message.new - if params[:message] - @message = update_attributes(params[:message]) - end render 'messages/compose' return end @@ -157,6 +215,12 @@ class MessagesOpsController < ApplicationController redirect_to :controller => 'messages', :action => 'index' return end + + attachments.each do |filename| + path = File.join(Rails.root,filename) + File.delete(path) if File.exist?(path) + end + flash[:notice] = t(:was_sent,:scope => :compose) redirect_to :controller => 'messages', :action => 'index' elsif params[:save_as_draft] @@ -194,6 +258,7 @@ class MessagesOpsController < ApplicationController else @message.body = mail.decoded_and_charseted end + @attachments = [] render 'messages/compose' end @@ -201,15 +266,16 @@ class MessagesOpsController < ApplicationController old_message = @current_user.messages.find(params[:uids].first) @message = Message.new @message.to_addr = address_formatter(old_message.from_addr,:raw) - @message.subject = old_message.subject + @message.subject = t(:reply_string,:scope=>:show) + old_message.subject imap_message = @mailbox.fetch_body(old_message.uid) mail = Mail.new(imap_message) if mail.multipart? @message.body = mail.text_part.decoded_and_charseted else - @message.body = mail.decoded_and_charseted + @message.body = mail.decoded_and_charseted.gsub(/<\/?[^>]*>/, "") end + @attachments = [] render 'messages/compose' end diff --git a/app/controllers/prefs_controller.rb b/app/controllers/prefs_controller.rb index d1bfc38..cdb0b6d 100755 --- a/app/controllers/prefs_controller.rb +++ b/app/controllers/prefs_controller.rb @@ -12,6 +12,7 @@ class PrefsController < ApplicationController if params[:prefs] @prefs.update_attributes(params[:prefs]) end + flash[:notice] = t(:were_saved,:scope=>:prefs) redirect_to :action => 'look' end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 01ac0a2..0034dd7 100755 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -92,6 +92,67 @@ def form_button(text,image) html << "" end +def single_action(text,scope,image) + html = "" + html << "
" + html << "
" +end + +def single_action_onclick(text,scope,image,onclick) + html = "" + html << "
" + html << "
" +end + +def group_action(buttons) + html = "" + html << "
" + buttons.each do |b| + html << " " + end + html << "
" +end + +def group_action_text(buttons,text) + html = "" + html << "
" + buttons.each do |b| + html << " " + end + html << text + html << "
" +end + def form_buttons(buttons) html = "" html << "
" @@ -150,6 +211,19 @@ def select_field_table(object,field,table_choices,choice,blank) html << "
" end +def select_field_table_t(object,field,table_choices,choice,blank) + model_name = eval(object.class.model_name) + html = "" + html << "
" + html << "" + t = [] + table_choices.each do |c| + t << [t(c.to_sym,:scope=>:prefs),c.to_s] + end + html << select(object.class.to_s.downcase, field, options_for_select(t,choice), {:include_blank => blank}) + html << "
" +end + #def form_simle_field(name,label,value) # html = "" # html << "
" @@ -158,56 +232,45 @@ end # html << "
" #end -def nav_to_folders - link_to( t(:folders,:scope=>:folder), :controller=>:folders, :action=>:index ) -end - -def nav_to_messages - link_to( t(:messages,:scope=>:message), :controller=>:messages, :action=>:index ) -end - -def nav_to_compose - link_to( t(:compose,:scope=>:compose), :controller=>:messages, :action=>:compose ) -end - -def nav_to_contacts - link_to( t(:contacts,:scope=>:contact), contacts_path ) -end - -def nav_to_prefs - link_to( t(:prefs,:scope=>:prefs), prefs_look_path ) -end +#def nav_to_folders +# link_to( t(:folders,:scope=>:folder), :controller=>:folders, :action=>:index ) +#end +# +#def nav_to_messages +# link_to( t(:messages,:scope=>:message), :controller=>:messages, :action=>:index ) +#end +# +#def nav_to_compose +# link_to( t(:compose,:scope=>:compose), :controller=>:messages, :action=>:compose ) +#end +# +#def nav_to_contacts +# link_to( t(:contacts,:scope=>:contact), contacts_path ) +#end +# +#def nav_to_prefs +# link_to( t(:prefs,:scope=>:prefs), prefs_look_path ) +#end def main_navigation(active) + instance_variable_set("@#{active}", "active") s = "" s += "" end def prefs_navigation(active) - look_active = "" - identity_active = "" - servers_active = "" - case active - when :look - look_active = "active" - when :identity - identity_active ="active" - when :servers - servers_active ="active" - end + instance_variable_set("@#{active}", "active") s = "" s += "" end @@ -246,5 +309,12 @@ def force_charset(text) end end +def content_for_sidebar + s = render :partial => 'folders/list' + s += render :partial => 'events/calendar' + s += render :partial => 'internal/version' + s +end + end diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb new file mode 100755 index 0000000..dadac86 --- /dev/null +++ b/app/helpers/events_helper.rb @@ -0,0 +1,55 @@ +module EventsHelper + #DAYNAMES = [:mon, :tue, :wed, :thu, :fri, :sat, :sun] + def calendar(yeard,monthd,addMonths) + now = DateTime.now + first = Date.new(now.year,now.month,1) + last = Date.new(now.year,now.month,-1) + curr_week = first.cweek + html = "

" + html << t(:month_names,:scope=>:date)[now.month] + html << "

" + html << "" + html << "" + + 1.upto(6) do |i| + html << "" + end + html << "" + html << "" + html << "" + html << "" + + (first.wday-1).downto(1) do |i| + prev = first - i + html << "" + end + + (first.day).upto(last.day) do |i| + curr = Date.new(now.year,now.month,i) + if curr.wday == 1 + html << "" + html << "" + curr_week += 1 + html << "" + end + if now.day == i + html << "" + else + if curr.wday == 0 || curr.wday == 6 + html << "" + else + html << "" + end + end + end + + 1.upto(7-last.wday) do |i| + post = last + i + html << "" + end + + html << "" + html << "
#{t(:abbr_day_names,:scope=>:date)[i]}#{t(:abbr_day_names,:scope=>:date)[0]}
#{first.cweek}#{prev.day}
#{curr_week}#{i}#{i}#{i}#{post.day}
" + html + end +end diff --git a/app/helpers/messages_helper.rb b/app/helpers/messages_helper.rb index d97b0ca..35e7bc1 100755 --- a/app/helpers/messages_helper.rb +++ b/app/helpers/messages_helper.rb @@ -2,11 +2,11 @@ module MessagesHelper def size_formatter(size) if size <= 2**10 - "#{size} #{t(:bytes)}" + "#{size} #{t(:bytes,:scope=>:common)}" elsif size <= 2**20 - sprintf("%.1f #{t(:kbytes)}",size.to_f/2**10) + sprintf("%.1f #{t(:kbytes,:scope=>:common)}",size.to_f/2**10) else - sprintf("%.1f #{t(:mbytes)}",size.to_f/2**20) + sprintf("%.1f #{t(:mbytes,:scope=>:common)}",size.to_f/2**20) end end @@ -15,51 +15,57 @@ module MessagesHelper end def address_formatter(addr,mode) + s = "" length = $defaults["msg_address_length"].to_i - fs = addr.split(/= length ? s = s[0,length]+"..." : s return h(s) - when :message - fs[0].size.zero? ? s = "<" + fs[1] + ">" : s << fs[0] + " <" + fs[1] + ">" - return h(s) + when :show + addr = addr[0].charseted.gsub(/\"/,"") + return h(addr) when :raw - fs[0].size.zero? ? s = fs[1] : s << fs[0] + " <" + fs[1] + ">" - return s + #fs = addr.gsub(/\"/,"").split(/" + return addr end - end end - def show_addr_formatter(addrs) - return h(force_charset(addrs[0].decoded)) - end +# def show_addr_formatter(addrs) +# return h(force_charset(addrs[0].decoded)) +# 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 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) + def subject_formatter(message,mode) if message.subject.size.zero? s = t(:no_subject,:scope=>:message) else - length = $defaults["msg_subject_length"].to_i - message.subject.length >= length ? s = message.subject[0,length]+"..." : s = message.subject + case mode + when :index + length = $defaults["msg_subject_length"].to_i + message.subject.length >= length ? s = message.subject[0,length]+"..." : s = message.subject + link_to s,{:controller => 'messages', :action => 'show', :id => message.uid} , :title => message.subject + when :show + message.subject + end end - link_to s,{:controller => 'messages', :action => 'show', :id => message.uid} , :title => message.subject + end def attachment_formatter(message) - message.content_type == 'text' ? "" : "A" + message.content_type =~ /^text\/plain/ ? "" : image_tag(current_theme_image_path('star.png')) end def headers_links diff --git a/app/models/event.rb b/app/models/event.rb new file mode 100755 index 0000000..3a829fd --- /dev/null +++ b/app/models/event.rb @@ -0,0 +1,2 @@ +class Event < ActiveRecord::Base +end diff --git a/app/models/message.rb b/app/models/message.rb index 3169452..1751c8c 100755 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -1,4 +1,5 @@ require 'iconv' +require 'mail' class Message < ActiveRecord::Base @@ -30,26 +31,28 @@ class Message < ActiveRecord::Base Message.paginate :page => page , :per_page => user.prefs.msgs_per_page.to_i, :conditions=> ['user_id = ? and folder_id = ?', user.id,folder.id],:order => order end - def self.createForUser(user,folder,imap_message) + def self.createForUser(user,folder,message) - envelope = imap_message.attr['ENVELOPE'] +# envelope = imap_message.attr['ENVELOPE'] +# +# envelope.from.nil? ? from = "" : from = addr_to_db(envelope.from[0]) +# envelope.to.nil? ? to = "" : to = addr_to_db(envelope.to[0]) +# envelope.subject.nil? ? subject = "" : subject = ApplicationController.decode_quoted(envelope.subject) - envelope.from.nil? ? from = "" : from = addr_to_db(envelope.from[0]) - envelope.to.nil? ? to = "" : to = addr_to_db(envelope.to[0]) - envelope.subject.nil? ? subject = "" : subject = ApplicationController.decode_quoted(envelope.subject) + mail = Mail.new(message.attr['RFC822.HEADER']) create( :user_id => user.id, :folder_id => folder.id, - :msg_id => envelope.message_id, - :uid => imap_message.attr['UID'].to_i, - :from_addr => from, - :to_addr => to, - :subject => subject, - :content_type => imap_message.attr['BODYSTRUCTURE'].media_type.downcase, - :date => envelope.date, - :unseen => !(imap_message.attr['FLAGS'].member? :Seen), - :size => imap_message.attr['RFC822.SIZE'] + :msg_id => mail.message_id, + :uid => message.attr['UID'].to_i, + :from_addr => mail.From.charseted, + :to_addr => mail.To.charseted, + :subject => mail.Subject.charseted, + :content_type => mail.content_type, + :date => mail.date.to_s(:db), + :unseen => !(message.attr['FLAGS'].member? :Seen), + :size => message.attr['RFC822.SIZE'] ) end diff --git a/app/models/user.rb b/app/models/user.rb index 9a72af4..cafa7d4 100755 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -43,4 +43,8 @@ class User < ActiveRecord::Base end end + def username + email.gsub(/\@/,"_").gsub(/\./,"_") + end + end diff --git a/config/defaults.yml b/config/defaults.yml index d8557fd..d8e98b2 100755 --- a/config/defaults.yml +++ b/config/defaults.yml @@ -1,3 +1,5 @@ +version: Build 2011-09-09 + theme: olive locale: pl @@ -5,6 +7,8 @@ themes: [olive] locales: [en, pl] msgs_per_page_table: [15, 20, 25, 30, 35, 40, 45, 50] msg_send_type: [html, text] +msg_image_view_as: [attachment, thumbnail] +msg_image_thumbnail_size: [128x128, 128x96, 192x192, 192x144, 256x256, 256x192] contacts_table_fields: [nick, first_name, last_name, email, info] contacts_per_page: 25 @@ -16,9 +20,10 @@ msgs_update_time: 600 msgs_inbox_view_fields: [from_addr, subject, date, size] msgs_sent_view_fields: [to_addr, subject, date, size] -msg_subject_length: 45 +msg_subject_length: 50 msg_address_length: 35 msg_search_fields: [subject, from, to] +msg_upload_dir: "tmp/uploads" # if encoding can not be get from data msg_unknown_charset: ISO-8859-2 diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 42aab28..74ceeee 100755 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -1,4 +1,10 @@ pl: + date: + day_names: [Niedziela, Poniedziałek, Wtorek, Środa, Czwartek, Piątek, Sobota] + abbr_day_names: [Ni, Po, Wt, Śr, Cz, Pi, So] + month_names: [~, Styczeń, Luty, Marzec, Kwiecień, Maj, Czerwiec, Lipiec, Sierpień, Wrzesień, Październik, Listopad, Grudzień] + abbr_month_names: [~, Sty, Lut, Mar, Kwi, Maj, Czer, Lip, Sier, Wrze, Paź, Lis, Grudz] + order: [ :year, :month, :day ] activerecord: errors: messages: @@ -22,6 +28,8 @@ pl: locale: Ustawienia językowe msgs_per_page: Ilość wiadomości wyświetlanych na stronie msg_send_type: Format wysyłanej wiadomości + msg_image_view_as: Prezentuj obraz jako + msg_image_thumbnail_size: Rozmiar miniaturki obrazu message: from_addr: Od to_addr: Do @@ -58,6 +66,9 @@ pl: look: Wygląd identity: Tożsamość servers: Serwery + were_saved: Ustawienia zostały zapisane + thumbnail: Miniaturka + attachment: Załącznik folder: folder: Folder @@ -88,6 +99,8 @@ pl: not_configured_sent: Folder Wysłany nie został przypisany not_configured_trash: Folder Kosz nie został przypisany not_configured_inbox: Folder Odebrane nie został przypisany + show_hide: Pokaż/Ukryj + refresh: Odśwież message: messages: Wiadomości @@ -105,6 +118,9 @@ pl: show_header: Pokaż nagłówek edit: Edycja images: Obrazy + delete: Usuń zaznaczone + move: Przenieś + copy: Skopiuj compose: compose: Nowa wiadomość @@ -114,11 +130,19 @@ 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 - reply_string: "Odp: " + 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 show: - replay_to: Odpowiedz + reply: Odpowiedz + show_header: Pokaż nagłówek + delete: Usuń + reply_string: "Odp: " user: login_failure: Nieudane logowanie. Podano błędny e-mail lub hasło. @@ -140,31 +164,30 @@ pl: internal_server_error: Błąd aplikacji unprocessable_entity: Błąd procesowania - must_be_unique: musi być unikalny - some_add_info: jakieś dodatkowe informacje - example: przykład - refresh: Odśwież - create: Utwórz - delete: Usuń - show_hide: Pokaż/Ukryj - mailr: MailR - save: Zapisz + common: + must_be_unique: musi być unikalny + some_add_info: jakieś dodatkowe informacje + example: przykład - copy: Skopiuj - move: Przenieś - to: do - previous_page: Poprzednia - next_page: Następna - bytes: B - kbytes: kB - mbytes: MB - site_link: https://github.com/lmanolov/mailr - send: Wyślij - no_data: Brak danych - logout: Wyloguj - download: Pobierz - view: Pokaż - version: Wersja - save_as_draft: Zapisz w katalogu roboczym - set: Ustaw + create: Utwórz + delete: Usuń + mailr: MailR + save: Zapisz + copy: Skopiuj + move: Przenieś + to: do + previous_page: Poprzednia + next_page: Następna + bytes: B + kbytes: kB + mbytes: MB + site_link: https://github.com/lmanolov/mailr + + no_data: Brak danych + download: Pobierz + view: Pokaż + version: Wersja + + set: Ustaw + logout: Wyloguj diff --git a/config/routes.rb b/config/routes.rb index 311bf9c..c22d4fd 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -34,8 +34,11 @@ Mailr::Application.routes.draw do match "messages_ops/single" => 'messages_ops#single' match "messages_ops/multi" => 'messages_ops#multi' match "messages_ops/sendout_or_save" => 'messages_ops#sendout_or_save' ,:as =>:sendout_or_save + match "messages_ops/upload" => 'messages_ops#upload',:as => :upload root :to => "messages#index" + match "messages/index" => 'messages#index', :as => :messages + match "messages/compose" => 'messages#compose', :as => :compose #get "messages/refresh_status" #get "messages/emptybin" #match "messages/select/:id" => 'messages#select', :as => :messages_select @@ -43,7 +46,7 @@ Mailr::Application.routes.draw do #match 'messages/folder/:id' => 'messages#folder', :as => :messages_folder #post "messages/ops" #post "messages/msgops" - match "messages/compose" => 'messages#compose' + #match "messages/edit/:id" => 'messages#edit' ,:as => :messages_edit #match "messages/reply/:id" => 'messages#reply' diff --git a/db/migrate/20110906094129_create_events.rb b/db/migrate/20110906094129_create_events.rb new file mode 100755 index 0000000..864a22e --- /dev/null +++ b/db/migrate/20110906094129_create_events.rb @@ -0,0 +1,19 @@ +class CreateEvents < ActiveRecord::Migration + def self.up + create_table :events do |t| + t.integer :user_id + t.integer :priority + t.text :description + t.string :category + t.datetime :start + t.datetime :stop + t.boolean :allday + + t.timestamps + end + end + + def self.down + drop_table :events + end +end diff --git a/db/migrate/20110908094506_add_msg_params_to_prefs.rb b/db/migrate/20110908094506_add_msg_params_to_prefs.rb new file mode 100755 index 0000000..6c533f0 --- /dev/null +++ b/db/migrate/20110908094506_add_msg_params_to_prefs.rb @@ -0,0 +1,11 @@ +class AddMsgParamsToPrefs < ActiveRecord::Migration + def self.up + add_column :prefs, :msg_image_view_as, :string + add_column :prefs, :msg_image_thumbnail_size, :string + end + + def self.down + remove_column :prefs, :msg_image_thumbnail_size + remove_column :prefs, :msg_image_view_as + end +end diff --git a/db/schema.rb b/db/schema.rb index fd6d2d5..a821e49 100755 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20110901120826) do +ActiveRecord::Schema.define(:version => 20110908094506) do create_table "contacts", :force => true do |t| t.string "nick" @@ -23,6 +23,18 @@ ActiveRecord::Schema.define(:version => 20110901120826) do t.datetime "updated_at" end + create_table "events", :force => true do |t| + t.integer "user_id" + t.integer "priority" + t.text "description" + t.string "category" + t.datetime "start" + t.datetime "stop" + t.boolean "allday" + t.datetime "created_at" + t.datetime "updated_at" + end + create_table "folders", :force => true do |t| t.string "name" t.string "delim" @@ -62,6 +74,8 @@ ActiveRecord::Schema.define(:version => 20110901120826) do t.datetime "updated_at" t.string "msgs_per_page" t.string "msg_send_type" + t.string "msg_image_view_as" + t.string "msg_image_thumbnail_size" end create_table "servers", :force => true do |t| diff --git a/lib/imap_message.rb b/lib/imap_message.rb index fc71b47..44ca826 100755 --- a/lib/imap_message.rb +++ b/lib/imap_message.rb @@ -45,7 +45,7 @@ end class IMAPMessage - @@fetch_attr = ['ENVELOPE','BODYSTRUCTURE', 'FLAGS', 'UID', 'RFC822.SIZE'] + @@fetch_attr = ['RFC822.HEADER', 'FLAGS', 'UID', 'RFC822.SIZE'] #@@fetch_attr = ['RFC822','FLAGS', 'UID', 'RFC822.SIZE'] # attr_accessor :envelope,:uid,:content_type,:size,:unseen,:from,:message_id,:to,:from,:subject,:date diff --git a/lib/mail_plugin_extension.rb b/lib/mail_plugin_extension.rb index 4959332..f1a2e85 100755 --- a/lib/mail_plugin_extension.rb +++ b/lib/mail_plugin_extension.rb @@ -42,4 +42,58 @@ module Mail end + class Field + def charseted + begin + if encoded =~ /\=\?([\w\-]+)\?/ + source_charset = $1 + if source_charset.upcase == 'UTF-8' + return decoded + end + else + source_charset = $defaults["msg_unknown_charset"] + end + Iconv.iconv("UTF-8",source_charset,decoded).first + rescue + decoded + end + end + end + + class Address + def charseted + begin + if encoded =~ /\=\?([\w\-]+)\?/ + source_charset = $1 + if source_charset.upcase == 'UTF-8' + return decoded + end + else + source_charset = $defaults["msg_unknown_charset"] + end + Iconv.iconv("UTF-8",source_charset,decoded).first + rescue + decoded + end + end + end + + class Part + def filename_charseted + begin + if content_type =~ /\=\?([\w\-]+)\?/ + source_charset = $1 + if source_charset.upcase == 'UTF-8' + return filename + end + else + source_charset = $defaults["msg_unknown_charset"] + end + Iconv.iconv("UTF-8",source_charset,filename).first + rescue + filename + end + end + end + end diff --git a/test/fixtures/events.yml b/test/fixtures/events.yml new file mode 100755 index 0000000..2364e8b --- /dev/null +++ b/test/fixtures/events.yml @@ -0,0 +1,19 @@ +# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html + +one: + user_id: 1 + priority: 1 + description: MyText + category: MyString + start: 2011-09-06 11:41:29 + stop: 2011-09-06 11:41:29 + allday: false + +two: + user_id: 1 + priority: 1 + description: MyText + category: MyString + start: 2011-09-06 11:41:29 + stop: 2011-09-06 11:41:29 + allday: false diff --git a/test/functional/events_controller_test.rb b/test/functional/events_controller_test.rb new file mode 100755 index 0000000..313df4b --- /dev/null +++ b/test/functional/events_controller_test.rb @@ -0,0 +1,8 @@ +require 'test_helper' + +class EventsControllerTest < ActionController::TestCase + # Replace this with your real tests. + test "the truth" do + assert true + end +end diff --git a/test/unit/event_test.rb b/test/unit/event_test.rb new file mode 100755 index 0000000..c2b9b78 --- /dev/null +++ b/test/unit/event_test.rb @@ -0,0 +1,8 @@ +require 'test_helper' + +class EventTest < ActiveSupport::TestCase + # Replace this with your real tests. + test "the truth" do + assert true + end +end diff --git a/test/unit/helpers/events_helper_test.rb b/test/unit/helpers/events_helper_test.rb new file mode 100755 index 0000000..2e7567e --- /dev/null +++ b/test/unit/helpers/events_helper_test.rb @@ -0,0 +1,4 @@ +require 'test_helper' + +class EventsHelperTest < ActionView::TestCase +end diff --git a/themes/olive/images/License.txt b/themes/olive/images/License.txt new file mode 100755 index 0000000..2248798 --- /dev/null +++ b/themes/olive/images/License.txt @@ -0,0 +1,6 @@ +This icons pack made by Freeiconsdownload from http://www.freeiconsdownload.com +These icons are free for personal,non-commercial use. +if you wish to these icons for Commercial website,software or commercial project. +You must indicate the icons Author "Icons are from http://www.freeiconsdownload.com" in your projects. +Thanks +Matt. diff --git a/themes/olive/images/copy.png b/themes/olive/images/copy.png new file mode 100755 index 0000000000000000000000000000000000000000..1841280c68aa7dd5fd99252d0124c43ba0a32ff3 GIT binary patch literal 726 zcmV;{0xA88P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L09-}@09-}^6qG|j00007bV*G`2ipk= z3nBu6+@o3m00LG?L_t(I%dM0>ZxcZfhM(CxpT8hBIM_iE65tAgg5*S^icBa$A_&nz z6+T)dgwh1Mqy+u|Eq{R`i5#r7Q3?u_0)$Zjp#($h;5hc(?NY3rFXU95G}7&}JMYfy zXhw`N0L(7N6)*-AfD}i6HDCo;njUXz05QfeyBHq?-gvGQGf9_ZR2`|(XlbgAfOcTY zz}@Nb<~Nxs#S~D=_PNDNgK+|F2(*n-1jPO!`__&Ul)(G1P1fr{8Mx*GW3h-7&txKe zsx|?8sOzLucWuR#bW92PY?OL4EbjPbOaX<=afcsUKIhVRxX}LyCH7X=5ga9)PTuBh z-vio#rX3pEp`jHR8h%JF)u=&2#wwo(gt*= zQrrGIbCv6CwmvXA@QQqTvM1NZ`tAvJQtQHPe}nIT<^edLzSoljbhC52Ioh1<6OIf# z<6`D9)twbeUvBLR9p=d18(AU4ZW#)>=M0~k;%9T2g~|kh-s;IcS31rep>BA?*(Y4i zPO;HkX8!X8zOExjaILL%g=(QTh!QHBZ^DDafQb0DIuMO{d^ zhH72o2b6)O17jrOO7TR(A>par77+P&jBK|JzYdR)|25eD0+y^$CAoxk&j0`b07*qo IM6N<$g1YlMdH?_b literal 0 HcmV?d00001 diff --git a/themes/olive/images/cross.png b/themes/olive/images/cross.png deleted file mode 100755 index 1514d51a3cf1b67e1c5b9ada36f1fd474e2d214a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 655 zcmV;A0&x9_P)uEoyT++I zn$b9r%cFfhHe2K68PkBu*@^<$y+7xQ$wJ~;c5aBx$R=xq*41Wo zhwQus_VOgm0hughj}MhOvs#{>Vg09Y8WxjWUJY5YW zJ?&8eG!59Cz=|E%Ns@013KLWOLV)CObIIj_5{>{#k%TEAMs_GbdDV`x-iYsGH z#=Z{USAQA>NY(}X7=3{K8#1KIqEP)z>%33NqRbVF}#ZDnqB004<9jRpV!0>eo}K~#90eN; zBGBVK-<><45+}K7JNL|)^PO{UEdbX234aAY%@=fkaA5IHcRCDpvy3}2?pjTY4tkcu zuo~tZa9g(8(+6vt2N~yz7)dP#w84` zM-=IM8*PefBzGD8ip#2*3!-ts#_aYTrAiYg;;FE_`oUB{lTypnRtY9P7bB4`#$>(( z)9Uxzol?qAh#V>>cZZV0Yb=H_Oys|d7-IPhpEZU@A5I4_zIjghsXe7;4oBTjR0;ZA zHwIjf*~;OKBE0-m3_fdQSG2iS(sR?QE=4w!z34eNzNs5#TE;9G8rvo&k*Hx_=hE~S zVgKrRkBG;C4K!I9!k%U4gveya`VM8I*gM?CQQ<%mG}lpK4~NI!uz$3R7ay;Bgsk=n z(VWh=&W(;0AI;rR5B|XEYi8^AKmNsav_cfCdZ#z>%33NqRbVF}#ZDnqB004<9jRpV!0`N&hK~#90eN;(P6HyqP$|=cA z5|mJi{0mRs@(UEa`VTzDlQ%ecK|QgFKv)b3$RZ-HRf1Pc-%2?-HoGsvPsTv!T$ z_Vt^YpjDKq`YJQ;ebdulcfU~pD7Oaf75tYM8#^Nir!**B2`AhTizVFgb60t>PzwH( zh6xSamRoHJ4IL>LdOvs&jJpiTdr>C>(;9+F7lH{@F50+ZmQQJkYY5G_(4BFkf8HZN zCsm1_*{Va2z*1@_oM@a<(JEdLP8q;@DDIZ8z8!HGpyU!+^ICQK^Ov!)Gn#K&$OX}vb_=GOZ1UAd z?I1A@NOByK1UYDB#BNB(#=nNOiYnSHvGsRrMUwQ}EQx#N5M1LxY*bpNPM|seLqU|n z^a;{WJ{GXauLP!5Gz%%C>*aaU2S?j@xpWbag{-2fT&WjiDS;tx0NJ0<$PAap$Rx;TaXu ze@3fPnAk21wM=C-MJ0+Zbuz^);Q}2Gh|SKV=fA}s_VO7%YYFbVJM6%V#WO-rLsN35 zt{tYfOd{3jH8o}`2NnwOW~C5()}md}D(0c)G=~*Rc|}Ohqifcvo=mYwRx$Y1r|$NZzAkjMJ*ml2s7vpxhU(FL1Z*-#W|nN`;q;$!Kuz>%33NqRbVF}#ZDnqB004<9jRpV!0=P*;K~#90eN@{{6HyeM^r`Jk zTL|Te_#5hz{S|+qKcGDLQsavdpaSJ0v{bMv67@+OAOQ^&>4mlkh@lvb0ow#kv0j#E z?KvZ$jg#!ObIzJIYp=D>7yyhL^WJX$x_^)=SunVgDg>bxySNkOt}&dm@TK_<#^9O- zZp+qq!NOE2fXtf^Ch`G?av`q9LzBW-i zDN+OOD=wpN&5xlC6JzQHsggr%C-Xsh_02_}LrN`+@57j{cECR9z`{WoOX~jR$4<(( zMGlpdrv9yh=Fd8EpRVDsv5W`XA#} zjP{sQIrp{=&-XjPXI0C9V-^gJ(kVY+Oc61mxNeBGcwHwrC@j+;B@6mqmriPoHa2Xu5K zB4I*D$ad4E3z*yt{o`NKiB^cBJ+GV@;8`Kzbor7H^342AI9@m($k4ja8E*a2uzOZ~ zNEZDV%k!(^$B3%Y9PdrsRbLk-I$5-&75b8?Sm<5(GXfr&BRxwVeK?~n4rr?b8*vXU Z>o;K&GS`<_vAX~O002ovPDHLkV1lU+ZgKzs literal 0 HcmV?d00001 diff --git a/themes/olive/images/forward.png b/themes/olive/images/forward.png new file mode 100755 index 0000000000000000000000000000000000000000..d5b3150d5ee79b7ee5d116c71d72643699c747a7 GIT binary patch literal 817 zcmV-11J3-3P)z>%33NqRbVF}#ZDnqB004<9jRpV!0?tW9K~#90eN@X%Q&AMX>8S0! zZ6SpbCdR~1Fityg>Mv+wj33Z1kbx77BM6A41%$TZqlnh%K*dX&0EV{E2QLd6poobf zzEBaQ+r9R=2O2`W$w_<9S!bQS*IMTqL}c6;cemqL|Doi9MFwV)Wk2y`8&<+tHKIj} zraxXIBa*WS%d&L0Y|*_1AEn*}Xt?B4l#$tHiZOh+;-lfRDU&WNI3r{Xlq^cj`)I7% zMo(4(Ogd{)o&KT*dc<5tcg{f;3TU zp)9{oe`-bfwv>a)K{LeVtbHGqGt#SPXtWxjhfAuF_MSY>^U>#Dc>!lPuE@C~i+--u z5>Ti&?JFkk1Im~FZBjZ-m0oc&29#GMx#kME6TBYbWH5A?=O<)cU0cZ@&9Z{o> zt(})5%wsP4>1q=|VIx*FslTLv>6LTR*_Yj-0LNHX23Z1n=^r%ng-VA(G~ z0rliP)LSs=puWfLp5os>6rWc|11O;G84p3HwQtXb5iTMCa1tR9P{)Lux@K4-X1l|q z5ty7eN&H8&I@rWG8>&skh~|aG7M&b1+b{vgW4t(03H)~e11$DnuNFLXE9;>bADUTD zrD?)x4t3w>5R6t^MU9lBF;ba+-$bw1gM_`h?Dj$KM{BNArIo_iukXqiPbws4S!yN)y?Z+$G^mDI9OWP5# z8-`DAUOkMoHXqSGBFZU$5$|~AtZYmzpO=`!LVNv^*m#nD31zJig*)G>4B)PSFkQVU zS-_n^g_;m8A1CZ9cvQHZkA~ej<)K8yOM@jZZ}d_>kAWiIO&a2_3mlDCENKP0q?Rn| vnmUYtOLF97$>m(m@Cg_6qzfC;mloq6vmhxJLdM=d00000NkvXXu0mjfoc?XV literal 0 HcmV?d00001 diff --git a/themes/olive/images/key.png b/themes/olive/images/key.png deleted file mode 100755 index 4ec1a928140311ff30a0a9120e958096c77f446e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 612 zcmV-q0-ODbP)nmX^MrbE*gmZ6|p*GkKoxa?X?hD9M+@sRvFH{EqYA??u6x z2pu{uGnrwz*>rh zfvUA@7b#acN?M*mBG3rQV?e^+0R5m3YXWyRZL5Bt@3vAw{9JaEW$}=f4bXO52yBH{ z;G~ZN|GLn>k~{On3Swd-Sy(gFkOdyw-RP%&exwl01RJRp))TI*SsngruhZksQ*NT%!X?K0000z>%33NqRbVF}#ZDnqB004<9jRpV!0)I(FK~#90om5M655BG z#DbjiWB3XB1N3aJoH@wB3zny(l3)UX1eTzPuN*87;D)Fq1~5EBe5H&K;#u#XU(X}a zDzr+enqqgRx3{OeXAL4UZdbi={ELg%<9R9!Y%(xY=mv-<=dcpRs*!5jX@=)|e#&(%G3mjA8WAJYvB~NCsdOBmryqk%`p%+P zqnosMHctL7MAJs~5hi`B=JcDPo;gP$$COtp7!hT9m9c9;+^0uVhC@YWA%I(iHR5=Y1 zp4GDBS>BKKT(?SluiK@q)h$C72n}r$CV^7 z-w09dOQMF%cSS{qii0q%B80k)?sWeg8Lc3SF6_$=;H>;B;aba-z>%33NqRbVF}#ZDnqB004<9jRpV!0<1|yK~#90eN;XhPumWay z80dz&(cj>nzv532-75Mb|TnS5-pALJufNC zHI1;%TWcMSHo6`vz4cM1?U9sAbvNz(ty0GDP^P2uq5~V&3@fR&M$ZT5skrN<2k(7? z^o>es!G&>0a48ElH@zNS=EYoB5|{P1mtTFo;*zA$Qu!97&94C}4+69`2-3EAemRe}cM-R?`#_k`$&AN&AC zlw?b#)wTrwKI~C-7@@+h1l||63eXiLF2tfL8~E$c6u=8(AcGd`E{ZqQF%YBBKg|{Z z$e@L)i{R5O0mRVF5TOBd)5A@`pxBm^=Bw^85R8Z$z?`WP=a1Hki4e0QP&-u2M4eg6 z?2~2YEEbS>Qf%f8-+w1Cz~T(f+J=X3Y`f^mr&GdD=_xd$IOvAAMazwn-lQyrYn|hPtTbG*xvh^zd2Yu=y5XjD+bs^dX;sWr z3(qR8i?0h3%^Dh)0$)mfjpld8E#TljvUhV4s>`47rs8eiF?uG N002ovPDHLkV1j`;YlQ#+ literal 0 HcmV?d00001 diff --git a/themes/olive/images/plus.png b/themes/olive/images/plus.png new file mode 100755 index 0000000000000000000000000000000000000000..5bc8a30f8382817d7cdabb665836292450509a68 GIT binary patch literal 790 zcmV+x1L^#UP)z>%33NqRbVF}#ZDnqB004<9jRpV!0<%d(K~#90eN;db;xbwm{ODXX(WeebopnD>;0I3qd*K$yx{_E4q-zR;8ID=60jXhZCgsqe{>X0mpNefWqx5 zFDQ%!Qe3yg%tB*HueOfBzlwDSUG%tS+i&;kMfB?;h1W?DoMS-*8oi5UYS#a7MT>r_ zL_goCAt+*WFPZ4cXka`a#J8h79<6HNGi9p+-8R~lSX%IE>#A6M_(j;@rj*y598W&nLZDJCM zI?}o?T~!GAd@mJ*lnJaP94=U8BDZ&pFUfWeCh)Ik@8{$>LPonxw4nRj=CqCxCm~~g za$3TV(x$YrntyTKS|N%w&FKvAu2d3^uV2B~+GWWE%dI5rO#5`WosWjyG~+`&>qlS4 zuax-Fqekx%-%a$ZuM0amn6;!7`ZBs=p?T&k0v^eclO>OHIU`jrXtfI)b}uc*A5mN% U#vj6Q2LJ#707*qoM6N<$g31_XF#rGn literal 0 HcmV?d00001 diff --git a/themes/olive/images/power.png b/themes/olive/images/power.png new file mode 100755 index 0000000000000000000000000000000000000000..e3c6bd763e5dc33c2f1c57c86ccc6851c8409393 GIT binary patch literal 872 zcmV-u1DE`XP)z>%33NqRbVF}#ZDnqB004<9jRpV!0|iM$K~#90eN;Y27#FWZq!e(}JcwxcIv)hHW6X2f!}=u4bHPt+ot20q9yr_vEo(Hpm7AZ5eD zWjm3+u@L+u39w?2xRkm%GZFjo?bn)YGDn~{Vv|=_O`0@P)-w6tf$_Cs1lEf&vF^YW z-3K>ISbjj{w1!o5lFr?|oM?^YZsXbNMLbxtV<4#&Qdv)$+rq~&l)fzB?wA$(_zmBp zjg+baayEvHU}0Qf%Yua-(3pD&?4C4g)-mucVQl3X`Kfuzn%P&@J(@jVaKoSXn7eW$TZ9+yiowt7vMW2O9^E0m zQT(ZLjAbuLcf~2F=Wnm#arU$ja+h%y92$3B<$!l*zcY z4~XWpd>iu7#d3A{@I6R=l}dz6=uMQ8(jb!C^#%X>lRP7q0+FkFM(Y8dmBWN1OV{vv z<0fWljb^S3VOR9uKw9QaT65<=8iDF*6MAE2bVhhW&1k395$1afy6Nk}iF#tHl)}FF ylPYSa3oT%fKFar!AwQh1BL?)SfpzLb%j+*iVI|}?B$Vd>0000z>%33NqRbVF}#ZDnqB004<9jRpV!0`y5lK~#90eN;(LQ&AXw>8itP zi)mT0(O=*nFzL#@8x!Nw#2?U|J6Y%g;tB$kp-i2aRn!<`D6e2Z1Fg`37Q`Z@$Y6*v zsaWKA&wcL!Mq-njw)cMbyz`xNzNY|C9>lG+{FXm@vra@8R4CkuW?T@PH9Yb2ROy&k z@x8JRrEOLPkL6KMMn!DFiQy$TLTRTCnb~f^&*L401Y#)Tkee1B7|W-0rBy_7P7E%( z@O0TNK;JviEwB!Ltzt-EDNVC>WVRbHvUF9j(t))|+9e-dKVj2B$z@{Qi};!cTG@j{ z*^5c>|LtZq>1&b>nG-vdbK&^p2h7jN2R8-_dLy;XNjq|10`ee~^I)KGMLxGL?-EQ^ zS>y{Otst=$QQSV~K+r@Mjn++Ab?I1mu32+YMT;r6HnmYLNspIF+$)>l9vfnz(lvJm zO&@MDWEDmCm4F~i3CzMbmxxFOI#VB1(JD!2r-nhCmk8 zC9G(ivCG0%fyhVGZWcy!4oLqQtvX?1SQu)W%GHsSD4NvC5VM9GbUY{y`?Bu;F4nM? zcX-zn-1lhGhLmJtjM^W7E#nk6p$n887UIe5UG>vJKA`z%9rTcQ;o7bOiAijDNvAkEX@(L>^ zPvc5c$&j(_%d2NVrgxm7MCmS;zsAIhiWSCq>Gml@wrfUuz-X7zJ_DN7{bjtf#w_r2 zf(q96$FOmrVfScJv|96zei7YT3FL2hr)Pk(GE}%G*r_rLoEf$oG%~@Kdoq6;(w?&E z;Wl0xTEnyrk*povX}h>+N2gd_^Zf5XuXwxA(QsCktx%WYf{MoJ(+F5(j*Ki>jN$ZO hFrXI=tj`=;u0M7tE?CBfmN@_b002ovPDHLkV1nfLjz0hZ literal 0 HcmV?d00001 diff --git a/themes/olive/images/reply.png b/themes/olive/images/reply.png new file mode 100755 index 0000000000000000000000000000000000000000..7d7a36362fcb51c836b638bd3ff5e4fc90b637d5 GIT binary patch literal 809 zcmV+^1J?YBP)z>%33NqRbVF}#ZDnqB004<9jRpV!0>(*1K~#90eN;77yyhXQ{FoMx_^*ZHDPcikqbf=Yq%5TuF;V(G5Prp zjJA{sZtGT0&cwm-1cui`=*w2vkS%FHI;FjIG>*PpKo>pSa4KTNvL@my6&NZ8@p>~P zpdSM$FD4nE<*(%4Fe&PPTJ2g2AHQI4ZJA(_^Dm$a1Qgy+?4bGJc*nYEyIC zht?%~d~5fCzWVD)8UuxpHfmGTq7T&Rxzk7&8GvLVi~;dTo9bu0Xk7GP*_c=fK>cU5 z>czxdOLcO@tl!yre&@`q^ zMIun!lI@Ef&q|4B4u4){oML|e{$GH}f_VYtdgsPh&E9?JoToC1hwb=wT2jD+-sDwg4W0KM{cp`-nIQ%9jL!)qoQ7tSN#(HuEh n@;HYxdc^^~>cB?aL(BRF`O_&0;ThUz00000NkvXXu0mjfR3CWv literal 0 HcmV?d00001 diff --git a/themes/olive/images/save.png b/themes/olive/images/save.png new file mode 100755 index 0000000000000000000000000000000000000000..90bac2694d69ececeded401b3db528214c4fd03b GIT binary patch literal 856 zcmV-e1E>6nP)z>%33NqRbVF}#ZDnqB004<9jRpV!0`*BmK~#90eN@X%Q&AMX>8Ov} z76T?GjLC6tCppGCs779|@Cb!HK8KMd*q<4aoYa9elcyPIM(4YSF?CvpiZ`T!(+&iM}Nl z2Gece{-khrqi@j|#8)SrNrKN%xZ-}p5VeBDI3UTj2y(k9z(K1ftcG-K{B77mQAJBZ?9k+=^NRHA9Eq2xA-KkY*r>J5 zo>&(JuOz%2eYK4)8o(D&=O=J*`2=8WLQ^!O?dd z<4{n_(I;p`R84hJ8yaE`Ot0U?%2rU0yM&*|dkXQ%lFMkSow0#BJywl(VH5`P-f6tfxO zHvcq2)l)Y3lXkSn?Q-GlXq9T4<8KE#<==&lb|-Z;3UwJ+)KN2a5&?_Kk(ninc{#mj iT+p*Ftfz2kS-${4SS##7yp~e{0000Px#24YJ`L;wH)0002_L%V+f000SaNLh0L09-}@09-}^6qG|j00007bV*G`2ipk= z3n?kil!MU#00OT`L_t(I%dM2pYZFlr$3OG(c9S$UF_u=PsEAdR)=RyJP^0}1#Dj>x z(1Qo@>P0;&h&RErAR-FtQSekLt$M3JPz2G6Six3nnrNCdyZgq&OH%8>lMe>=?Y{lY zd}rp3s44)LA7>3P0t^EM{=F)|6fkjNf87Cys&e^pwja11S}FD9EV;D#C#AOJn6Je& zV;u*MT-aa#BA3Q81{mwh+tN^fme?t=^HGX`_$TC#eaZ+%;MGi>xoSKPj9OqM6G&-8 zPr!%yI^Ykre=?@M_b?+ZGs2d>G}U@iYD79>fZ?81DZc)UNEDnZPC*qEKn>QcMpaS3 zY0I2aixSorEWoe@3L@a}5ok-(mf~@?7Eh72>xom|GyoY}WZRn4?A!2&$u9?qUAgTR00WRD{)JQ6*?W#gJjd9l z!&H{0Y2}?pT;}z+t9)3v!LGH}I}#Ih%b>PqfWEFhOfNhD;Mialr*L>j6@WwAD@-rk zrYEzTFjefpmO*F-HoN$Yb-BGbg`2Ne;Z(WxCXZ9N^EOX+Fo4r0OGz2K5mgeWh!Jqg)0y+F4i=1oMm*o?Xc1a+#OFky5jlXW0jBB=2#j0N(N4X$KRbHG zHwD!36HBz>%33NqRbVF}#ZDnqB004<9jRpV!0?kQ8K~#90eN@X%Q&AMX>8OuO z3jz*gY-0QZXPx^I{zLr%8JHMQClDS2r99eN#0qMRPJ~ht(9j}%07V3hU_b(j0|GI~ za<6^wDL#lzcG{k^?mla;wa&EwShpv<&HOe$kX*81aV1#_LKd626XCAaSFka<(g>?3 zXM@|iHCVDSzIqwy_aO`yYn+x{c|W28A1>EmxD?Pu4>#NjTd|^z#A1y!4C3jBkTiW4 zKymjjIpDGMvO02pq?WE?Kn_SQIgK-kVo;B6&H9|CKRW~Ll~_%gEV&vXOieIhVb>MgrBEB^jv}yi?)Ko-FYua zj05&A1awGt=AbQEuOl6SzYS}ODte6AnVIcIB|W)C;te_k*EkS?R&3#{HF><+xTd7X zg!HquT7n{0v_QfRFfMX_J1*nViZk7~$SR;)R=1F)1Thf~I8}+)4u+~g1$E|q=$;QK z@c3j8Uk+z5Qn{o@6R4n$IUlIg0|7?GY`XY(<%&A_P=E?*new82&R+%U(E?;rl8XVT z|BP0Pm>3sBjj61@ymrZ`POg|uT%hAo*-Vu~|1DyOb7l$<#n zd5=g4MqM@1uEtE|^YvQ1{!|Y>YiKtQ$UH`Kld8DeY;OA|%6oUJ(wdaf3!28XsYq

>cHl zp^3C%$Y`H6$~pdaxz;h_FV?PO{U9xxU6fJlP}%Q6cJszR`XwA|wNa$)t&;)XmA@O3 zUDVA4^&2exX-Mz9&k48t(#W*U`j9C5F;L`N#gBfeSb_fo7?QUO9gUZ59fi82D>m9^ us}b;Mj@&GH+{+m`=YpPhVZ-LqvVH+fG9G>LB670;0000et2mB literal 0 HcmV?d00001 diff --git a/themes/olive/images/tick.png b/themes/olive/images/tick.png deleted file mode 100755 index a9925a06ab02db30c1e7ead9c701c15bc63145cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 537 zcmV+!0_OdRP)Hs{AQG2a)rMyf zFQK~pm1x3+7!nu%-M`k}``c>^00{o_1pjWJUTfl8mg=3qGEl8H@}^@w`VUx0_$uy4 z2FhRqKX}xI*?Tv1DJd8z#F#0c%*~rM30HE1@2o5m~}ZyoWhqv>ql{V z1ZGE0lgcoK^lx+eqc*rAX1Ky;Xx3U%u#zG!m-;eD1Qsn@kf3|F9qz~|95=&g3(7!X zB}JAT>RU;a%vaNOGnJ%e1=K6eAh43c(QN8RQ6~GP%O}Jju$~Ld*%`mO1p1BCpEP)z>%33NqRbVF}#ZDnqB004<9jRpV!0~kp}K~#90eN;(LQ(+W+VMPa8 zq>yOXo49sqA_;8W_zUnKm~Pw&EZ88fz%oNAlZ=9ZL1VxI3M#ZfTj)TUOA5#g23Z~N z`CcDjLR{Rm@B8jMJ@=e*s{znT$I?sqslEh%m7`Smp4w{Y7GlkOl?1d zRyS(}uho?&XhrnEg}#^_t$_?3vf5|H(Vs9Tw+hi3w5Y>0UZg5da|f&#U4MeukqhtR zb^)EUAa>}%{9ZA71xs_ynsIu$hW(2Iw-kJY-eL^%K>k~f$>B( zCgu72P7djN6&*4kia)~U=^)lmy0H7(i}-OZ-YwhF6VV4LsS?g45fu`Fy>j?>i}5W{ zh|aJL?Tc2`lvm?R2Z?dO`gsc)1-V%iXbokcY$9Ekj*T~lHHs>x8De{mjsDt zt08#Cf!L_I=dYn7B5>@`g-`1b(J!P2S2Ee;)EXBoXc8&I2Q}C}|EQ+hIPJvf=3@+q ztkP7h)d*QiFuYO#-%gPwBD z0(BaQ=Hu`ph?C2hcoY|XGVoR!Ra4n`Ix1((s5#Tm5GUMVyIy% ztHGyGyh^8(n7KTlnA^IlJyFtT<>^wc#aXAVc+T@r$xlo|{& zHD)S@Rx?FP2l%c*yQEp>q2@G))goa2-Iw^8e2(tOUGzrpVeO<%V)#@6GG+9FrZH_w zBm&j>bzfLr;rjyc0$XPz*f{COmP9piHZ0FWNS=R2=%5rIRv%mec80CjK!$gWub%Y+ zwM#UcQCqr1(d<~DnK{&YuBw+ zK+cLEdIq>F1SGqL`7F^b3+|vpbaRMq4zw=v)Ao-c^?s8c?$n=#w_@6a_K+FP0kbTe z8BJ2|1wLEQBL6OQv`vbmP?x@l6_wLh5lB-xN@Xc6wVcjd7WB4-%`=vk^%wigGCefo RM=<~Z002ovPDHLkV1j&SlP~}P literal 0 HcmV?d00001 diff --git a/themes/olive/images/ui-icons_222222_256x240.png b/themes/olive/images/ui-icons_222222_256x240.png deleted file mode 100755 index ee039dc096a38a3753f92519546eee94bcfbeffa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 diff --git a/themes/olive/images/unseen.png b/themes/olive/images/unseen.png new file mode 100755 index 0000000000000000000000000000000000000000..567c5553acb4c7151e7af7245ff54b5aef0b6264 GIT binary patch literal 875 zcmV-x1C;!UP)z>%33NqRbVF}#ZDnqB004<9jRpV!0|-e(K~#90eN;(LQ&AXw>58_m zr3M-oBSr&qFJlvY{Pm0>O@BEGmA zdxt5s&pL&vu9`fRfh>?%g)~>s*ikFUZ04ZFBUy%YY&zF`6z?3igVu(sW0w z6ta}y_3|}^*b*}k_YczwQ8kqZtf&myv30Pd5ZO4Myn(Ugbv&JS8ck)BR#ZsSMDn(v zoI~HjWiSAAvP}?GQ}J*XN+)fgpiiWkucqB>Y>nBW{AaX^#l#jd)HIb<6Hq9ArBg=C zJTB1jTG?!mX8*U?!(N`@SyOP&!%-_Vb7Ers7QXBSvHN=iKMv-k;^MD_6>(iQl=Kab6w_wpRXuRmKz?YzUAPghUq=QFHTK;DuMMh19S zOh9IVcZTEEW->u`jggavR0pj_xHBIOf62I2*x1kzw#h*o>ZIyJe72)WzAkjMC911Y zs7u$Jj?(de5wNHnWwK<+Tu$#P7xc6X>oG4a>n|>&AA{^beJ20_002ovPDHLkV1ln> Bj~oC1 literal 0 HcmV?d00001 diff --git a/themes/olive/images/up.png b/themes/olive/images/up.png new file mode 100755 index 0000000000000000000000000000000000000000..cb8bd1e1cd3ff50de4d8adde90153e519061c9f8 GIT binary patch literal 804 zcmV+<1Ka$GP)z>%33NqRbVF}#ZDnqB004<9jRpV!0>Mc{K~#90eN;(LQ&AXw>8itP zivd<_jd57%A7~7J!XMxtXyVdD7H%-EAPh23t!0wIM52jUz=#A|p@Rj=kSGL0q6Syc zP!8Yu?t29i;!AGYckj99p6`6;J_~^LeAe5*U-u8<-)&f&iDyHQ$vUn?xoS-nBRDDl zfz`2MgUhC!DLms%F^ti5Q%FOrXr>5)`Ailc=(&kPNR-+NinOP^pfDCl zaor9x3vHbD8tVwWRIEGbqQ^Bm`Q@NiMSt3(@ER?Gb1aBJt9SK+nmSewpQ`8y5k0+K zMNri0UJIZnV}PadKNY@o@K}M9Vyl3jS?wa0RUM!HhWnIJ!p9%=3RF;Q%7^x}DSxG#gaIY)7p-<{@J?9t@GCK8MZb7Mhq^6_~pD3A|GWLQ^W7^at5_P0a zU%DK^ciZ)qCSHEdaEj0SkFF3V3ibt&+dDVD>UcJYv5mVGlIblIXE)L#PPvTs1<{J> zZ=2IPM%)DAc7(5?oNN3t- z!tH!Cl1+;~#BzT0W&CpC{OFOz>%33NqRbVF}#ZDnqB004<9jRpV!0`o~kK~#90eN;(HTTvK&WMu{u zixCP!H{H4_bRFm)Xes>@?WP0@T~6up9_RfcV-pS7bU;S^RnaL^xfs#m`qv+AJaGWN@j;h%*Ft`}l- z-Hma%pV}xQ{h*@LAXK&v!-DTb-*O2;8_(4{K74nfXF(sNv`RRWM0~3P)0r2FdvNWs z8rh$8s3uQMBo8FU0ZEQSHj4sniF}le<>}I~@yf7fQALX>c5vc%ks>{^PU3Dg1lKqa z8?~lc9h$D}97RQ?yNdKjA>Fr9z$UNeo3o=)q})81KzlMDXBS847D?IoNo19#S6Ypb zr3BlDQH98hikgk8sVZVcP1KIAR0&qHT^L9|#L4+?u2D5rhOD4YwbDpLx|rN9M`nKz z@1;>Sm5t`1B4qookxA)D+M)bsw93T9b}`g6mDLbYC_$x@A!acb=(tZdI}@%Oi#_b+ zGkn$*-1BbSivAzB#46n`zsSYm$h%8I&||0(Ff?W=zpNHuXsr-@)}&q9Eb~xvN;!~z zgbSRCv>~i!{i4`kWRK@1S+^CKnKF7o)0j3T5`pTXx-YDwvn|YQzE+^E!j5L{oh)Nv zr&1-*^vVS6OgS!rOz#-qz~X(Jp6}!MJS(=0s6=cYe8Xhs8NROEQzKsmWVA1V!n(iJ zhINcM+4&3$JLZd#*&9*`y1+Ri8!vPE`E_d*khgqV&j8QLO@JJCDE$Q8sXIAC>Z4XY z+{Q;ESUzcmKVd_2j9(QS8l{@%cyC9md|l{hyA(&EE`bFHDkgIgu&5jvS+W?1(|gSU gz3#wz%tOoi2XJL7M(3;p>Hq)$07*qoM6N<$f~I?iK>z>% literal 0 HcmV?d00001 diff --git a/themes/olive/stylesheets/base.css b/themes/olive/stylesheets/base.css index 53eec45..cdd2d2a 100755 --- a/themes/olive/stylesheets/base.css +++ b/themes/olive/stylesheets/base.css @@ -196,7 +196,7 @@ body { .table { width: 100%; border-collapse: collapse; - margin-bottom: 15px; + margin: 5px 0; } .table th { @@ -382,11 +382,11 @@ button.button[type] { } button.button img, a.button img { - margin:0 3px -3px 0 !important; + margin:0 6px -4px 0 !important; padding:0; border:none; - width:16px; - height:16px; + width:18px; + height:18px; } button.button:hover, a.button:hover { diff --git a/themes/olive/stylesheets/style.css b/themes/olive/stylesheets/style.css index 13770ff..5acf7d0 100755 --- a/themes/olive/stylesheets/style.css +++ b/themes/olive/stylesheets/style.css @@ -135,10 +135,10 @@ p { } #sidebar ul li { - border-bottom: 1px solid #F0F0EE; + border-bottom: 1px solid #F0F0EE;Załączniki burnet.tar.gz } -#sidebar ul li a:hover, #sidebar ul li a:active { +#sidebar ul li a:hover, #sidebar ul li a:active {Załączniki burnet.tar.gz background: #ADBFD6; color: #FFF; } @@ -371,12 +371,6 @@ tr.unseen td { font-weight:bold; } -div.ops { - border: 1px solid #DACF77; - padding: 5px; - margin: 3px 0; -} - div.actions-bar div.header_info { float: left; color: #5E634E; @@ -471,13 +465,8 @@ div.attachments span.title { font-size: 14px; } -div.attachments table { - margin-top: 10px; -} -div.attachments table td{ - padding: 8px; -} + div.render_text{ margin: 5px 0 0 0; font-size: 14px; @@ -527,6 +516,7 @@ div.images span.title { div.images div.image { margin: 5px; padding: 2px; + float: left; } div.images div.image div.desc { @@ -535,6 +525,58 @@ div.images div.image div.desc { padding: 2px; } +div.desc span.size { + float: right; +} + div.params input,div.params select,div.params textarea { width: 100% } + +.width100 { + width: 100%; +} + +table.side_calendar td { + text-align: right; + background-color: #EFF3E4; + padding: 2px; +} + +table.side_calendar td.wday, table.side_calendar td.week { + color: white; + background-color: #DACF77; + font-weight: bold; + text-align: center; +} + +table.side_calendar td.weekend { + color: white; + background-color: #5E634E; +} + +table.side_calendar td.off { + background-color: white; +} +table.side_calendar td.today { + color: white; + background-color: red; + font-weight: bold; +} + +p.version { + color: #5E634E; + text-align: center; + font-size: 14px; +} + +div.fileselect { + margin-top: 5px; + padding: 5px 0; +} + +div.actiongroup { + display: block; + margin: 5px 0; + padding: 2px 0; +} diff --git a/themes/olive/views/contacts/_left.html.erb b/themes/olive/views/contacts/_left.html.erb index bb434a6..9b9fa45 100755 --- a/themes/olive/views/contacts/_left.html.erb +++ b/themes/olive/views/contacts/_left.html.erb @@ -6,4 +6,4 @@ <%= raw form_field(@contact,"email",nil,"joe.doe@domain.com",@contact.email) %> <%= raw form_field(@contact,"info",nil,t(:some_add_info),@contact.info) %> -<%= raw form_button('save','tick.png') %> +<%= raw single_action('save','common','save.png') %> diff --git a/themes/olive/views/contacts/_list.html.erb b/themes/olive/views/contacts/_list.html.erb index 40324c0..2ffd494 100755 --- a/themes/olive/views/contacts/_list.html.erb +++ b/themes/olive/views/contacts/_list.html.erb @@ -2,7 +2,7 @@

- <%= t(:total_entries,:scope=>:contact) %>: <%= @contacts.total_entries %> / <%= link_to t(:create_new,:scope=>:contact), new_contact_path %> + <%= t(:total_entries,:scope=>:contact) %>: <%= @contacts.total_entries %>
<%= will_paginate @contacts %>
diff --git a/themes/olive/views/contacts/_ops.html.erb b/themes/olive/views/contacts/_ops.html.erb index d9b1a34..af7f154 100755 --- a/themes/olive/views/contacts/_ops.html.erb +++ b/themes/olive/views/contacts/_ops.html.erb @@ -1,6 +1,5 @@

- <%= submit_tag(t(:compose_to_selected,:scope => :contact), :name=> 'compose')%> - <%= submit_tag(t(:delete_selected,:scope => :contact), :name=>'delete')%> + <%= raw group_action(@buttons) %>

diff --git a/themes/olive/views/contacts/_row.html.erb b/themes/olive/views/contacts/_row.html.erb index a219657..706229f 100755 --- a/themes/olive/views/contacts/_row.html.erb +++ b/themes/olive/views/contacts/_row.html.erb @@ -2,6 +2,6 @@ <%= link_to row.nick,edit_contact_path(row) %> <%= row.first_name %> <%= row.last_name %> -<%= link_to row.email, {:controller => 'messages',:action => 'compose' , :cids => row.id.to_a} %> +<%= link_to row.email, {:controller => 'messages',:action => 'compose' , :cids => row.id} %> <%= row.info %> diff --git a/themes/olive/views/contacts/edit.html.erb b/themes/olive/views/contacts/edit.html.erb index 17c279e..4bd6d0d 100755 --- a/themes/olive/views/contacts/edit.html.erb +++ b/themes/olive/views/contacts/edit.html.erb @@ -1,5 +1,5 @@ <% content_for :sidebar do %> -<%= render :partial => 'folders/list' %> +<%= content_for_sidebar %> <% end %> <% content_for :title do %> diff --git a/themes/olive/views/contacts/index.html.erb b/themes/olive/views/contacts/index.html.erb index 2bd8fbc..61be703 100755 --- a/themes/olive/views/contacts/index.html.erb +++ b/themes/olive/views/contacts/index.html.erb @@ -1,5 +1,5 @@ <% content_for :sidebar do %> -<%= render :partial => 'folders/list' %> +<%= content_for_sidebar %> <% end %> <% content_for :title do %> @@ -8,16 +8,14 @@
- <%= raw main_navigation(:contacts) %> + <%= raw main_navigation(:contacts_tab) %>
<%= form_tag(contacts_ops_path,{:name=>'contacts'})%> <% if @contacts.size.zero? %> -
-
<%= t(:no_entries,:scope=>:contact) %> - <%= content_tag(:span, link_to(raw('('+t(:create_new,:scope=>:contact)+')'),new_contact_path),:class=>"other_info") %> -
+

<%= t(:no_entries,:scope=>:contact) %>

+ <%= raw single_action('create_new','contact','plus.png') %> <% else %> <%= render :partial => 'ops' %> <%= render :partial => 'list' %> diff --git a/themes/olive/views/contacts/new.html.erb b/themes/olive/views/contacts/new.html.erb index a6cd57d..2c02fa6 100755 --- a/themes/olive/views/contacts/new.html.erb +++ b/themes/olive/views/contacts/new.html.erb @@ -1,5 +1,5 @@ <% content_for :sidebar do %> -<%= render :partial => 'folders/list' %> +<%= content_for_sidebar %> <% end %> <% content_for :title do %> diff --git a/themes/olive/views/events/_calendar.html.erb b/themes/olive/views/events/_calendar.html.erb new file mode 100755 index 0000000..2d2417f --- /dev/null +++ b/themes/olive/views/events/_calendar.html.erb @@ -0,0 +1,3 @@ +
+<%= raw calendar(1,2,3) %> +
diff --git a/themes/olive/views/folders/_create.html.erb b/themes/olive/views/folders/_create.html.erb index 627455c..dc9009c 100755 --- a/themes/olive/views/folders/_create.html.erb +++ b/themes/olive/views/folders/_create.html.erb @@ -3,5 +3,5 @@ <%= raw select_for_folders("folder","parent",@folders,t(:parent,:scope=>:folder),"",true) %> <%= raw simple_input_field("folder","target",t(:to_create,:scope=>:folder),"") %>
-<%= raw form_button('create','tick.png') %> +<%= raw single_action('create','common','plus.png') %> diff --git a/themes/olive/views/folders/_delete.html.erb b/themes/olive/views/folders/_delete.html.erb index a8fe90e..85b5c32 100755 --- a/themes/olive/views/folders/_delete.html.erb +++ b/themes/olive/views/folders/_delete.html.erb @@ -1,6 +1,6 @@ <%= form_tag(folders_delete_path) %>
<%= raw select_for_folders("folder","delete",@folders,t(:to_delete,:scope=>:folder),"",true) %> -<%= raw form_button('delete','cross.png') %> +<%= raw single_action('delete','common','minus.png') %>
diff --git a/themes/olive/views/folders/_list.html.erb b/themes/olive/views/folders/_list.html.erb index 459daad..8b7d87e 100755 --- a/themes/olive/views/folders/_list.html.erb +++ b/themes/olive/views/folders/_list.html.erb @@ -15,9 +15,6 @@ <% end %>
- <%= raw form_button_value('logout','tick.png',user_logout_path) %> + <%= raw single_action_onclick('logout','common','power.png',user_logout_path) %>
-

-<%= t(:version) %>: Build 20110901 -

diff --git a/themes/olive/views/folders/_refresh.html.erb b/themes/olive/views/folders/_refresh.html.erb index 5932f29..e3952a7 100755 --- a/themes/olive/views/folders/_refresh.html.erb +++ b/themes/olive/views/folders/_refresh.html.erb @@ -2,6 +2,6 @@
<%= raw multi_select("", 'folders_to_show[]', @folders, @folders_shown,t(:shown,:scope=>:folder),:id,"",{:text => [:parent,:delim,:name]}) %>
-<%= raw form_buttons(@buttons) %> +<%= raw group_action(@buttons) %> diff --git a/themes/olive/views/folders/_system.html.erb b/themes/olive/views/folders/_system.html.erb index c5ea123..e8e9e18 100755 --- a/themes/olive/views/folders/_system.html.erb +++ b/themes/olive/views/folders/_system.html.erb @@ -4,6 +4,6 @@ <%= raw select_for_folders("folder","mailbox_trash",@folders,t(:folder,:scope => :folder) + " " + t(:trash_name,:scope=>:folder),@folder_trash,true) %> <%= raw select_for_folders("folder","mailbox_sent",@folders,t(:folder,:scope => :folder) + " " + t(:sent_name,:scope=>:folder),@folder_sent,true) %> <%= raw select_for_folders("folder","mailbox_drafts",@folders,t(:folder,:scope => :folder) + " " + t(:drafts_name,:scope=>:folder),@folder_drafts,true) %> -<%= raw form_button('set','tick.png') %> +<%= raw single_action('set','common','save.png') %> diff --git a/themes/olive/views/folders/index.html.erb b/themes/olive/views/folders/index.html.erb index 3cd284a..cdd4b56 100755 --- a/themes/olive/views/folders/index.html.erb +++ b/themes/olive/views/folders/index.html.erb @@ -1,5 +1,5 @@ <% content_for :sidebar do %> -<%= render :partial => 'folders/list' %> +<%= content_for_sidebar %> <% end %> <% content_for :title do %> @@ -8,7 +8,7 @@
- <%= raw main_navigation(:folders) %> + <%= raw main_navigation(:folders_tab) %>
diff --git a/themes/olive/views/internal/_version.html.erb b/themes/olive/views/internal/_version.html.erb new file mode 100755 index 0000000..b32cad9 --- /dev/null +++ b/themes/olive/views/internal/_version.html.erb @@ -0,0 +1,4 @@ +

+<%= t(:version) %>: <%= $defaults["version"] %> +

+ diff --git a/themes/olive/views/layouts/application.html.erb b/themes/olive/views/layouts/application.html.erb index 073d13e..2f83eaa 100755 --- a/themes/olive/views/layouts/application.html.erb +++ b/themes/olive/views/layouts/application.html.erb @@ -4,7 +4,7 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - <%= t(:mailr) %> + <%= t(:mailr,:scope=>:common) %> <%= yield :title %> diff --git a/themes/olive/views/layouts/simple.html.erb b/themes/olive/views/layouts/simple.html.erb index 9f3c7bc..6d06595 100755 --- a/themes/olive/views/layouts/simple.html.erb +++ b/themes/olive/views/layouts/simple.html.erb @@ -3,7 +3,7 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - <%=t(:mailr) %> - + <title><%=t(:mailr,:scope=>:common) %> - <%= yield :title %> <%=stylesheet_link_tag current_theme_stylesheet_path('base') %> @@ -11,6 +11,6 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" <%= yield %> - + diff --git a/themes/olive/views/messages/_attachment.html.erb b/themes/olive/views/messages/_attachment.html.erb index 4773864..aa75a35 100755 --- a/themes/olive/views/messages/_attachment.html.erb +++ b/themes/olive/views/messages/_attachment.html.erb @@ -1,5 +1,5 @@ -<%= link_to attachment.filename, messages_attachment_download_path(attachment.parent_id,attachment.idx) %> +<%= link_to attachment.filename_charseted, messages_attachment_download_path(attachment.parent_id,attachment.idx) %> <%= attachment.main_type %>/<%= attachment.sub_type %> @@ -14,6 +14,6 @@ <%= size_formatter(attachment.getSize) %> -<%= link_to t(:download), messages_attachment_download_path(attachment.parent_id,attachment.idx) %> +<%= link_to image_tag(current_theme_image_path('download.png')), messages_attachment_download_path(attachment.parent_id,attachment.idx) %> diff --git a/themes/olive/views/messages/_file_attach.html.erb b/themes/olive/views/messages/_file_attach.html.erb new file mode 100755 index 0000000..a809654 --- /dev/null +++ b/themes/olive/views/messages/_file_attach.html.erb @@ -0,0 +1,4 @@ +<%= check_box_tag "files[]", file_attach[:name] %> +<%= file_attach[:name] %> +<%= size_formatter(file_attach[:size]) %> +  diff --git a/themes/olive/views/messages/_file_attachs.html.erb b/themes/olive/views/messages/_file_attachs.html.erb new file mode 100755 index 0000000..a5cd099 --- /dev/null +++ b/themes/olive/views/messages/_file_attachs.html.erb @@ -0,0 +1,16 @@ +
+<%= t(:attachments,:scope=>:message) %> +<% if not @attachments.size.zero? %> +<% trclass = :even %> + +<% @attachments.each do |a| %> + +<%= render :partial => 'messages/file_attach', :object => a %> + +<% trclass == :even ? trclass = :odd : trclass = :even %> +<% end %> +
+<%= raw single_action('delete_marked','compose','minus.png') %> +<% end %> +
+ diff --git a/themes/olive/views/messages/_file_select.html.erb b/themes/olive/views/messages/_file_select.html.erb new file mode 100755 index 0000000..1f67932 --- /dev/null +++ b/themes/olive/views/messages/_file_select.html.erb @@ -0,0 +1,11 @@ +
+<%= form_tag(upload_path, :multipart => true) %> +:  +<%= file_field 'upload', 'datafile' %> +<%= raw single_action('send_file','compose','up.png') %> + +
+ + + + diff --git a/themes/olive/views/messages/_header.html.erb b/themes/olive/views/messages/_header.html.erb index eda93f0..14a31f3 100755 --- a/themes/olive/views/messages/_header.html.erb +++ b/themes/olive/views/messages/_header.html.erb @@ -1,6 +1,6 @@
- <%= raw show_param_view(@message,"from_addr",show_addr_formatter(@from)) %> - <%= raw show_param_view(@message,"to_addr",show_addr_formatter(@to)) %> + <%= 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 %> @@ -10,7 +10,7 @@ <% if not @bcc.nil? %> <%= raw show_param_view(@message,"bcc_addr","BCC jest ") %> <% end %> - <%= raw show_param_view(@message,"subject",show_subject_formatter(@subject)) %> + <%= raw show_param_view(@message,"subject",subject_formatter(@message,:show)) %> <%= raw show_param_view(@message,"date",date_formatter(@date)) %> <%= hidden_field_tag 'uids[]', @message.uid %> <%= hidden_field_tag 'source', 'show' %> diff --git a/themes/olive/views/messages/_image.html.erb b/themes/olive/views/messages/_image.html.erb index f8b2a93..66623c7 100755 --- a/themes/olive/views/messages/_image.html.erb +++ b/themes/olive/views/messages/_image.html.erb @@ -1,5 +1,5 @@
-<%= image_tag(messages_attachment_download_path(image.parent_id,image.idx), :size => "128x128", :alt=>image.filename, :title=>image.filename) %> +<%= image_tag(messages_attachment_download_path(image.parent_id,image.idx), :size => @current_user.prefs.msg_image_thumbnail_size, :alt=>image.filename, :title=>image.filename) %>
<%= link_to (image.filename,messages_attachment_download_path(image.parent_id,image.idx)) %> <%= size_formatter(image.getSize) %> diff --git a/themes/olive/views/messages/_images.html.erb b/themes/olive/views/messages/_images.html.erb index f841f7c..afeea6d 100755 --- a/themes/olive/views/messages/_images.html.erb +++ b/themes/olive/views/messages/_images.html.erb @@ -1,8 +1,8 @@
-<%= t(:images,:scope=>:message) %> <% for idx in 0..@images.size-1 %> <%= render :partial => 'image', :object => @images[idx] %> <% end %> +
diff --git a/themes/olive/views/messages/_message.html.erb b/themes/olive/views/messages/_message.html.erb new file mode 100755 index 0000000..1f9e81c --- /dev/null +++ b/themes/olive/views/messages/_message.html.erb @@ -0,0 +1,17 @@ +<%= check_box_tag "uids[]", message.uid %> +<%= attachment_formatter(message) %> + +<% if @current_folder == @sent_folder || @current_folder == @drafts_folder %> + <%= address_formatter(message.to_addr,:index) %> +<% else %> + <%= address_formatter(message.from_addr,:index) %> +<% end %> + +<%= subject_formatter(message,:index) %> +<%= date_formatter(message.date) %> +<%= size_formatter(message.size) %> +<% if @current_folder == @drafts_folder %> +<%= link_to(t(:edit,:scope=>:message),messages_ops_single_path(message.uid)) %> +<% else %> +<%= raw(' ') %> +<% end %> diff --git a/themes/olive/views/messages/_list.html.erb b/themes/olive/views/messages/_messages.html.erb similarity index 93% rename from themes/olive/views/messages/_list.html.erb rename to themes/olive/views/messages/_messages.html.erb index 60fef49..c4ecc27 100755 --- a/themes/olive/views/messages/_list.html.erb +++ b/themes/olive/views/messages/_messages.html.erb @@ -19,7 +19,7 @@ <% @messages.each do |m| %> <% m.unseen == true ? unseen = "unseen" : unseen = "" %> - <%= render :partial => 'messages/row', :object => m %> + <%= render :partial => 'messages/message', :object => m %> <% trclass == :even ? trclass = :odd : trclass = :even %> <% end %> diff --git a/themes/olive/views/messages/_multi_ops.html.erb b/themes/olive/views/messages/_multi_ops.html.erb index 6b4f79b..2615222 100755 --- a/themes/olive/views/messages/_multi_ops.html.erb +++ b/themes/olive/views/messages/_multi_ops.html.erb @@ -1,14 +1,4 @@
-

- <%= submit_tag(t(:copy), :name=> 'copy')%> - <%= submit_tag(t(:move), :name=>'move')%> - <%= t(:checked,:scope=>:message) %> - <%= t(:to_folder,:scope=>:folder) %> - <%= raw simple_select_for_folders("folder","target",@folders_shown,'',true) %> -
- <%= submit_tag(t(:delete), :name=>'trash')%> - <%= submit_tag(t(:set_read,:scope=>:message), :name=>'set_read')%> - <%= submit_tag(t(:set_unread,:scope=>:message), :name=>'set_unread')%> - <%= t(:checked,:scope=>:message) %> -

+ <%= raw group_action_text(@multi1_buttons,t(:checked,:scope=>:message) + " " + t(:to_folder,:scope=>:folder)+ " " + simple_select_for_folders("folder","target",@folders_shown,'',true)) %> + <%= raw group_action(@multi2_buttons) %>
diff --git a/themes/olive/views/messages/_new.html.erb b/themes/olive/views/messages/_new.html.erb index 234647a..d977b42 100755 --- a/themes/olive/views/messages/_new.html.erb +++ b/themes/olive/views/messages/_new.html.erb @@ -1,3 +1,4 @@ +<%= 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? %> @@ -6,5 +7,7 @@ <%= 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_buttons(@buttons) %> +<%= raw group_action(@buttons) %> +<%= render :partial=> 'messages/file_attachs' %> + diff --git a/themes/olive/views/messages/_row.html.erb b/themes/olive/views/messages/_row.html.erb deleted file mode 100755 index 75a2cd3..0000000 --- a/themes/olive/views/messages/_row.html.erb +++ /dev/null @@ -1,17 +0,0 @@ -<%= check_box_tag "uids[]", row.uid %> -<%= attachment_formatter(row) %> - -<% if @current_folder == @sent_folder || @current_folder == @drafts_folder %> - <%= address_formatter(row.to_addr,:index) %> -<% else %> - <%= address_formatter(row.from_addr,:index) %> -<% end %> - -<%= subject_formatter(row) %> -<%= date_formatter(row.date) %> -<%= size_formatter(row.size) %> -<% if @current_folder == @drafts_folder %> -<%= link_to(t(:edit,:scope=>:message),messages_ops_single_path(row.uid)) %> -<% else %> -<%= raw(' ') %> -<% end %> diff --git a/themes/olive/views/messages/_single_ops.html.erb b/themes/olive/views/messages/_single_ops.html.erb index 0597063..d1fd09a 100755 --- a/themes/olive/views/messages/_single_ops.html.erb +++ b/themes/olive/views/messages/_single_ops.html.erb @@ -1,11 +1,7 @@
- <%= submit_tag(t(:copy), :name=> 'copy')%> - <%= submit_tag(t(:move), :name=>'move')%> - <%= t(:to_folder,:scope=>:folder) %> - <%= raw simple_select_for_folders("folder","target",@folders_shown,'',true) %>
- <%= submit_tag(t(:show_header,:scope=>:message), :id=>'show_header')%> - <%= submit_tag(t(:delete), :name=>'trash')%> - <%= submit_tag(t(:replay_to,:scope => :show), :name=>'reply')%> +<%= raw group_action_text(@multi1_buttons,t(:to_folder,:scope=>:folder)+ " " + simple_select_for_folders("folder","target",@folders_shown,'',true)) %> +<%= raw group_action(@multi3_buttons) %> +
         <%= @plain_header %>
diff --git a/themes/olive/views/messages/compose.html.erb b/themes/olive/views/messages/compose.html.erb
index 665cf94..960f850 100755
--- a/themes/olive/views/messages/compose.html.erb
+++ b/themes/olive/views/messages/compose.html.erb
@@ -1,5 +1,5 @@
 <% content_for :sidebar do %>
-<%= render :partial => 'folders/list' %>
+<%= content_for_sidebar %>
 <% end %>
 
 <% content_for :title do %>
@@ -8,15 +8,14 @@
 
 
- <%= raw main_navigation(:compose) %> + <%= raw main_navigation(:compose_tab) %>
-

<%= t(:new_message,:scope=>:compose) %>

- <%= form_tag(sendout_or_save_path)%> -
- <%= render :partial => 'messages/new' %> +

<%= t(:new_message,:scope=>:compose) %>

+
+ <%= render :partial => 'messages/new' %> + <%= render :partial => 'messages/file_select' %>
-
diff --git a/themes/olive/views/messages/index.html.erb b/themes/olive/views/messages/index.html.erb index d7da3bc..f470e48 100755 --- a/themes/olive/views/messages/index.html.erb +++ b/themes/olive/views/messages/index.html.erb @@ -1,5 +1,5 @@ <% content_for :sidebar do %> -<%= render :partial => 'folders/list' %> +<%= content_for_sidebar %> <% end %> <% content_for :title do %> @@ -8,7 +8,7 @@
- <%= raw main_navigation(:messages) %> + <%= raw main_navigation(:messages_tab) %>
<%= form_tag({:controller=>'messages_ops', :action=>'multi'},{:name=>'messages'})%> @@ -23,7 +23,7 @@
<% else %> <%= render :partial => 'multi_ops' %> - <%= render :partial => 'list' %> + <%= render :partial => 'messages' %> <% end %> diff --git a/themes/olive/views/messages/show.html.erb b/themes/olive/views/messages/show.html.erb index 44b47a2..56ce6da 100755 --- a/themes/olive/views/messages/show.html.erb +++ b/themes/olive/views/messages/show.html.erb @@ -1,9 +1,9 @@ <% content_for :sidebar do %> -<%= render :partial => 'folders/list' %> +<%= content_for_sidebar %> <% end %> <% content_for :title do %> -- <%= show_subject_formatter(@subject) %> +- <%= subject_formatter(@message,:show) %> <% end %>
diff --git a/themes/olive/views/prefs/_identity_left.html.erb b/themes/olive/views/prefs/_identity_left.html.erb index 8973831..2b601a5 100755 --- a/themes/olive/views/prefs/_identity_left.html.erb +++ b/themes/olive/views/prefs/_identity_left.html.erb @@ -7,4 +7,4 @@ <%= h @current_user.full_address %>

-<%= raw form_button('save','tick.png') %> +<%= raw single_action('save','common','save.png') %> diff --git a/themes/olive/views/prefs/_look_left.html.erb b/themes/olive/views/prefs/_look_left.html.erb index 94505fe..dabe4c1 100755 --- a/themes/olive/views/prefs/_look_left.html.erb +++ b/themes/olive/views/prefs/_look_left.html.erb @@ -1,8 +1,7 @@ -
<%= raw select_field_table(@prefs, "msgs_per_page", $defaults["msgs_per_page_table"],@prefs.msgs_per_page,false) %> <%= raw select_field_table(@prefs, "theme", $defaults["themes"],@prefs.theme,false) %> <%= raw select_field_table(@prefs, "locale", $defaults["locales"],@prefs.locale,false) %> <%= raw select_field_table(@prefs, "msg_send_type", $defaults["msg_send_type"],@prefs.msg_send_type,false) %>
-<%= raw form_button('save','tick.png') %> +<%= raw single_action('save','common','save.png') %> diff --git a/themes/olive/views/prefs/_look_right.html.erb b/themes/olive/views/prefs/_look_right.html.erb index 8b13789..e541699 100755 --- a/themes/olive/views/prefs/_look_right.html.erb +++ b/themes/olive/views/prefs/_look_right.html.erb @@ -1 +1,5 @@ +
+<%= raw select_field_table_t(@prefs, "msg_image_view_as", $defaults["msg_image_view_as"],@prefs.msg_image_view_as,false) %> +<%= raw select_field_table(@prefs, "msg_image_thumbnail_size", $defaults["msg_image_thumbnail_size"],@prefs.msg_image_thumbnail_size,false) %> +
diff --git a/themes/olive/views/prefs/_servers_left.html.erb b/themes/olive/views/prefs/_servers_left.html.erb index 46be605..fee7ab7 100755 --- a/themes/olive/views/prefs/_servers_left.html.erb +++ b/themes/olive/views/prefs/_servers_left.html.erb @@ -2,4 +2,4 @@
<%= h @servers.inspect %>
-<%= raw form_button('save','tick.png') %> +<%= raw single_action('save','common','save.png') %> diff --git a/themes/olive/views/prefs/identity.html.erb b/themes/olive/views/prefs/identity.html.erb index 8e369be..80bd306 100755 --- a/themes/olive/views/prefs/identity.html.erb +++ b/themes/olive/views/prefs/identity.html.erb @@ -1,5 +1,5 @@ <% content_for :sidebar do %> -<%= render :partial => 'folders/list' %> +<%= content_for_sidebar %> <% end %> <% content_for :title do %> @@ -8,10 +8,10 @@
- <%= raw main_navigation(:prefs) %> + <%= raw main_navigation(:prefs_tab) %>
- <%= raw prefs_navigation(:identity) %> + <%= raw prefs_navigation(:identity_tab) %>
<%= form_tag(prefs_update_identity_path,:name=>'prefs') %>
diff --git a/themes/olive/views/prefs/look.html.erb b/themes/olive/views/prefs/look.html.erb index 503831a..1e8931f 100755 --- a/themes/olive/views/prefs/look.html.erb +++ b/themes/olive/views/prefs/look.html.erb @@ -1,5 +1,5 @@ <% content_for :sidebar do %> -<%= render :partial => 'folders/list' %> +<%= content_for_sidebar %> <% end %> <% content_for :title do %> @@ -8,10 +8,10 @@
- <%= raw main_navigation(:prefs) %> + <%= raw main_navigation(:prefs_tab) %>
- <%= raw prefs_navigation(:look) %> + <%= raw prefs_navigation(:look_tab) %>
<%= form_tag(prefs_update_look_path,:name=>'prefs') %>
diff --git a/themes/olive/views/prefs/servers.html.erb b/themes/olive/views/prefs/servers.html.erb index c6e0cd4..273b073 100755 --- a/themes/olive/views/prefs/servers.html.erb +++ b/themes/olive/views/prefs/servers.html.erb @@ -1,5 +1,5 @@ <% content_for :sidebar do %> -<%= render :partial => 'folders/list' %> +<%= content_for_sidebar %> <% end %> <% content_for :title do %> @@ -8,10 +8,10 @@
- <%= raw main_navigation(:prefs) %> + <%= raw main_navigation(:prefs_tab) %>
- <%= raw prefs_navigation(:servers) %> + <%= raw prefs_navigation(:servers_tab) %>
<%= form_tag(prefs_update_servers_path,:name=>'prefs') %>