From 2afeebad53c72f7e921a840186b86d12bb7034ff Mon Sep 17 00:00:00 2001 From: Wojciech Todryk Date: Fri, 16 Sep 2011 19:44:29 +0200 Subject: [PATCH] devel --- app/controllers/contacts_controller.rb | 44 +++++++++++++++++- app/controllers/events_controller.rb | 2 - app/controllers/folders_controller.rb | 2 +- app/controllers/internal_controller.rb | 7 +++ app/controllers/messages_controller.rb | 18 ++++++- app/controllers/messages_ops_controller.rb | 34 +++++++++----- app/helpers/application_helper.rb | 13 +++++- app/models/contact.rb | 21 ++++++++- app/models/user.rb | 2 + config/application.rb | 2 +- config/defaults.yml | 8 ++-- config/locales/pl.yml | 15 ++++-- config/routes.rb | 11 +++-- db/migrate/20110906094129_create_events.rb | 19 -------- db/schema.rb | 25 +++++----- lib/mail_plugin_extension.rb | 15 ++++++ test/fixtures/events.yml | 19 -------- test/unit/helpers/events_helper_test.rb | 4 -- themes/olive/images/left.png | Bin 0 -> 781 bytes themes/olive/images/right.png | Bin 0 -> 798 bytes themes/olive/stylesheets/style.css | 13 ++++-- themes/olive/views/contacts/_contact.html.erb | 7 +++ .../olive/views/contacts/_external.html.erb | 7 +++ themes/olive/views/contacts/_left.html.erb | 4 +- themes/olive/views/contacts/_list.html.erb | 42 +++++++---------- themes/olive/views/contacts/_ops.html.erb | 4 +- themes/olive/views/contacts/_row.html.erb | 7 --- themes/olive/views/contacts/index.html.erb | 32 ++++++------- themes/olive/views/events/_calendar.html.erb | 3 -- themes/olive/views/internal/_version.html.erb | 2 +- themes/olive/views/internal/about.html.erb | 27 +++++++++++ .../olive/views/layouts/application.html.erb | 3 +- themes/olive/views/layouts/simple.html.erb | 2 +- .../views/messages/_file_select.html.erb | 2 +- themes/olive/views/messages/_message.html.erb | 2 +- themes/olive/views/messages/_new.html.erb | 3 ++ .../views/sidebar/_calendar_view.html.erb | 3 ++ themes/olive/views/sidebar/_logo.html.erb | 1 + themes/olive/views/user/setup.html.erb | 2 +- vendor/plugins/calendar_view/MIT-LICENSE | 20 ++++++++ vendor/plugins/calendar_view/README | 13 ++++++ vendor/plugins/calendar_view/Rakefile | 23 +++++++++ vendor/plugins/calendar_view/init.rb | 1 + vendor/plugins/calendar_view/install.rb | 1 + .../lib/app/helpers/calendar_view_helper.rb | 9 ++-- .../calendar_view/lib/calendar_view.rb | 2 + .../calendar_view/test/calendar_view_test.rb | 2 +- .../plugins/calendar_view/test/test_helper.rb | 3 ++ vendor/plugins/calendar_view/uninstall.rb | 1 + 49 files changed, 342 insertions(+), 160 deletions(-) delete mode 100755 app/controllers/events_controller.rb delete mode 100755 db/migrate/20110906094129_create_events.rb delete mode 100755 test/fixtures/events.yml delete mode 100755 test/unit/helpers/events_helper_test.rb create mode 100755 themes/olive/images/left.png create mode 100755 themes/olive/images/right.png create mode 100755 themes/olive/views/contacts/_contact.html.erb create mode 100755 themes/olive/views/contacts/_external.html.erb delete mode 100755 themes/olive/views/contacts/_row.html.erb delete mode 100755 themes/olive/views/events/_calendar.html.erb create mode 100755 themes/olive/views/internal/about.html.erb create mode 100755 themes/olive/views/sidebar/_calendar_view.html.erb create mode 100755 themes/olive/views/sidebar/_logo.html.erb create mode 100755 vendor/plugins/calendar_view/MIT-LICENSE create mode 100755 vendor/plugins/calendar_view/README create mode 100755 vendor/plugins/calendar_view/Rakefile create mode 100755 vendor/plugins/calendar_view/init.rb create mode 100755 vendor/plugins/calendar_view/install.rb rename app/helpers/events_helper.rb => vendor/plugins/calendar_view/lib/app/helpers/calendar_view_helper.rb (93%) create mode 100755 vendor/plugins/calendar_view/lib/calendar_view.rb rename test/functional/events_controller_test.rb => vendor/plugins/calendar_view/test/calendar_view_test.rb (66%) create mode 100755 vendor/plugins/calendar_view/test/test_helper.rb create mode 100755 vendor/plugins/calendar_view/uninstall.rb diff --git a/app/controllers/contacts_controller.rb b/app/controllers/contacts_controller.rb index 5ade327..002c5dc 100755 --- a/app/controllers/contacts_controller.rb +++ b/app/controllers/contacts_controller.rb @@ -1,10 +1,12 @@ +require 'tempfile' + class ContactsController < ApplicationController before_filter :check_current_user,:selected_folder, :get_current_folders before_filter :get_contacts, :only => [:index] - before_filter :prepare_ops_buttons, :only => [:index] + before_filter :prepare_ops_buttons, :prepare_export_import_buttons,:only => [:index] theme :theme_resolver @@ -67,6 +69,40 @@ class ContactsController < ApplicationController end end + def external + if params["export"] + redirect_to :action => 'export' + return + elsif params["import"] + begin + raise t(:no_file_chosen,:scope=>:common) if not params[:upload] + raise t(:no_tmp_dir,:scope=>:common) if not File.exists?($defaults["msg_upload_dir"]) + tmp_file = Tempfile.new($defaults["contact_tmp_filename"],$defaults["msg_upload_dir"]) + tmp_file.write(params[:upload][:datafile].read) + tmp_file.flush + tmp_file.rewind + tmp_file.readlines.each do |line| + Contact.import(@current_user,line) + end + rescue Exception => e + flash[:error] = e.to_s + end + end + flash[:notice] = t(:were_imported,:scope=>:contact) if not flash[:error] + redirect_to :action => 'index' + end + + def export + contacts = @current_user.contacts + s = "" + contacts.each do |c| + s += c.export + "\r\n" + end + headers['Content-type'] = "text/csv" + headers['Content-Disposition'] = %(attachment; filename="contacts.csv") + render :text => s + end + ####################################### protected section ################################ protected @@ -78,6 +114,12 @@ class ContactsController < ApplicationController @buttons << {:text => 'delete_selected',:scope=>'contact',:image => 'minus.png'} end + def prepare_export_import_buttons + @ei_buttons = [] + @ei_buttons << {:text => 'import',:scope=>'contact',:image => 'right.png'} + @ei_buttons << {:text => 'export',:scope=>'contact',:image => 'left.png'} + end + ####################################### private section ################################## private diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb deleted file mode 100755 index 5175242..0000000 --- a/app/controllers/events_controller.rb +++ /dev/null @@ -1,2 +0,0 @@ -class EventsController < ApplicationController -end diff --git a/app/controllers/folders_controller.rb b/app/controllers/folders_controller.rb index 17984ab..f661d77 100755 --- a/app/controllers/folders_controller.rb +++ b/app/controllers/folders_controller.rb @@ -144,7 +144,7 @@ class FoldersController < ApplicationController trash_folder.messages.destroy_all trash_folder.update_attributes(:unseen => 0, :total => 0) rescue Exception => e - flash[:error] = "#{t(:imap_error)} (#{e.to_s})" + flash[:error] = "#{t(:imap_error,:scope=>:common)} (#{e.to_s})" end redirect_to :controller => 'messages', :action => 'index' end diff --git a/app/controllers/internal_controller.rb b/app/controllers/internal_controller.rb index c90dc45..c22b586 100755 --- a/app/controllers/internal_controller.rb +++ b/app/controllers/internal_controller.rb @@ -1,8 +1,11 @@ class InternalController < ApplicationController + before_filter :check_current_user ,:selected_folder, :get_current_folders, :only => [:about] + theme :theme_resolver layout "simple" + ERRORS = [ :internal_server_error, :not_found, @@ -43,4 +46,8 @@ class InternalController < ApplicationController redirect_to :controller=>'user', :action => 'login' end + def about + render 'internal/about', :layout => 'application' + end + end diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index d50c72b..a7da6d9 100755 --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -65,9 +65,23 @@ class MessagesController < ApplicationController end def compose - #before filter + #before filter :prepare_compose_buttons, :create_message_with_params @operation = :new - logger.custom('m',@message.inspect) + if params["cid"].present? + contact = @current_user.contacts.find_by_id(params["cid"]) + if not contact.nil? + @message.to_addr = contact.email + end + elsif params["cids"].present? + contacts = [] + params["cids"].each do |c| + contact = @current_user.contacts.find_by_id(c) + if not contact.nil? + contacts << contact.email + end + end + @message.to_addr = contacts.join(';') + end end def show diff --git a/app/controllers/messages_ops_controller.rb b/app/controllers/messages_ops_controller.rb index 3548eee..b675bc9 100755 --- a/app/controllers/messages_ops_controller.rb +++ b/app/controllers/messages_ops_controller.rb @@ -2,6 +2,7 @@ require 'imap_session' require 'imap_mailbox' require 'imap_message' require 'mail' +require 'mail_plugin_extension' class MessagesOpsController < ApplicationController @@ -128,7 +129,7 @@ class MessagesOpsController < ApplicationController @operation = :upload create_message_with_params if not params[:upload] - flash[:error] = t(:no_attach,:scope=>:compose) + flash[:error] = t(:no_file_chosen,:scope=>:common) else name = params[:upload][:datafile].original_filename upload_dir = $defaults["msg_upload_dir"] @@ -188,11 +189,12 @@ class MessagesOpsController < ApplicationController mail = Mail.new mail.subject = params[:message][:subject] mail.from = @current_user.full_address + #TODO check if email address is valid if not get address from contacts mail.to = params[:message][:to_addr] mail.body = params[:message][:body] attachments = Dir.glob(File.join($defaults["msg_upload_dir"],@current_user.username + "*")) - logger.custom('attach',attachments.inspect) + #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 @@ -221,7 +223,7 @@ class MessagesOpsController < ApplicationController @mailbox.append(@sent_folder.full_name,mail.to_s,[:Seen]) rescue Exception => e - flash[:error] = "#{t(:imap_error)} (#{e.to_s})" + flash[:error] = "#{t(:imap_err,:scope=>:internal)} (#{e.to_s})" redirect_to :controller => 'messages', :action => 'index' return end @@ -238,10 +240,13 @@ class MessagesOpsController < ApplicationController if @drafts_folder.nil? raise t(:not_configured_drafts,:scope=>:compose) end - # TODO delete old one if was edit @mailbox.append(@drafts_folder.full_name,mail.to_s,[:Seen]) + if params[:olduid].present? + @mailbox.move_message(params[:olduid],@trash_folder.full_name) + @mailbox.expunge + end rescue Exception => e - flash[:error] = "#{t(:imap_error)} (#{e.to_s})" + flash[:error] = "#{t(:imap_error,:scope=>:internal)} (#{e.to_s})" redirect_to :controller => 'messages', :action => 'index' return end @@ -250,24 +255,24 @@ class MessagesOpsController < ApplicationController end end - ###################################### protected section ####################################### - - protected + #FIXME edit does not support attachments def edit - old_message = @current_user.messages.find(params[:id].first) + old_message = @current_user.messages.find(params[:id]) @message = Message.new @message.to_addr = old_message.to_addr @message.subject = 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 + @message.body = mail.text_part.decoded_and_charseted.gsub(/<\/?[^>]*>/, "") else - @message.body = mail.decoded_and_charseted + @message.body = mail.decoded_and_charseted.gsub(/<\/?[^>]*>/, "") end @attachments = [] @operation = :edit + @olduid = old_message.uid render 'messages/compose' end @@ -280,7 +285,7 @@ class MessagesOpsController < ApplicationController imap_message = @mailbox.fetch_body(old_message.uid) mail = Mail.new(imap_message) if mail.multipart? - @message.body = mail.text_part.decoded_and_charseted + @message.body = mail.text_part.decoded_and_charseted.gsub(/<\/?[^>]*>/, "") else @message.body = mail.decoded_and_charseted.gsub(/<\/?[^>]*>/, "") end @@ -288,6 +293,11 @@ class MessagesOpsController < ApplicationController @operation = :reply render 'messages/compose' end + ###################################### protected section ####################################### + + protected + + ############################################ set_mail_defaults #################################### diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index c6ccba4..6dbc0f6 100755 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -252,6 +252,14 @@ end # link_to( t(:prefs,:scope=>:prefs), prefs_look_path ) #end +def single_navigation(label,scope) + s = "" + s += "" +end + def main_navigation(active) instance_variable_set("@#{active}", "active") s = "" @@ -310,8 +318,9 @@ def force_charset(text) end def content_for_sidebar - s = render :partial => 'folders/list' - s += render :partial => 'events/calendar' + s = render :partial => 'sidebar/logo' + s += render :partial => 'folders/list' + s += render :partial => 'sidebar/calendar_view' s += render :partial => 'internal/version' s end diff --git a/app/models/contact.rb b/app/models/contact.rb index 6f5c693..4291ba8 100755 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -5,7 +5,7 @@ class Contact < ActiveRecord::Base validates_length_of :email, :within => 5..50 validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i validates_length_of :info, :maximum => 50 - validate_on_create :check_unique_nick + validate :check_unique_nick, :on => :create belongs_to :user @@ -32,4 +32,23 @@ class Contact < ActiveRecord::Base end end + def export + fields = [] + fields << nick.presence || "" + fields << first_name || "" + fields << last_name || "" + fields << email || "" + fields << info || "" + fields.join(';') + end + + def self.import(user,line) + fields = line.split(/;/) + contact = user.contacts.build( :nick => fields[0], + :first_name => fields[1], + :last_name => fields[2], + :email => fields[3], + :info => fields[4]) + contact.save! + end end diff --git a/app/models/user.rb b/app/models/user.rb index 1374cf0..a184b16 100755 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -2,6 +2,8 @@ require 'ezcrypto' class User < ActiveRecord::Base + #acts_as_notes_owner + validates_presence_of :first_name,:last_name validates_uniqueness_of :email has_many :servers, :dependent => :destroy diff --git a/config/application.rb b/config/application.rb index 2619d4b..ff7faab 100755 --- a/config/application.rb +++ b/config/application.rb @@ -17,7 +17,7 @@ module Mailr # Only load the plugins named here, in the order given (default is alphabetical). # :all can be used as a placeholder for all plugins not explicitly named. - # config.plugins = [ :exception_notification, :ssl_requirement, :all ] + #config.plugins = [ :acts_as_notes_owner, :all ] config.action_view.javascript_expansions[:defaults] = %w(jquery rails) diff --git a/config/defaults.yml b/config/defaults.yml index cc6a0e8..93ff98a 100755 --- a/config/defaults.yml +++ b/config/defaults.yml @@ -1,4 +1,4 @@ -version: Build 2011-09-10 +version: 0.8.3 theme: olive locale: pl @@ -25,10 +25,12 @@ msg_address_length: 35 msg_search_fields: [subject, from, to] msg_upload_dir: "tmp/uploads" +contact_tmp_filename: contact_import + # if encoding can not be get from data msg_unknown_charset: ISO-8859-2 -imap_debug: false +imap_debug: true imap_use_ssl: 'false' imap_port: 143 imap_ssl_port: 993 @@ -43,4 +45,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: [some_login] +only_can_logins: [wtodryk] diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 615a01a..999e71c 100755 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -14,6 +14,7 @@ pl: invalid: "ma niepoprawny format " not_unique: "musi być unikalny " taken: "musi być unikalny" + record_invalid: Nieprawidłowy format danych models: contact: Kontakt attributes: @@ -60,6 +61,10 @@ pl: no_entries: Brak kontaktów was_created: Kontakt został utworzony are_you_sure_to_delete_contact: Czy na pewno chcesz usunąć kontakt? + export: Export + import: Import + were_imported: Kontakty zostały zaimportowane + format_error: Nieprawidłowy format kontaktu prefs: prefs: Ustawienia @@ -138,7 +143,6 @@ pl: send_file: Wyślij plik send: Wyślij save_as_draft: Zapisz w katalogu roboczym - no_attach: Nie wybrano żadnego pliku show: reply: Odpowiedz @@ -166,15 +170,17 @@ pl: not_found: Nie znaleziono żądanej strony internal_server_error: Błąd aplikacji unprocessable_entity: Błąd procesowania + about: Informacje o programie + current_version: Aktualna wersja common: + file_format_error: Błędny format pliku + no_tmp_dir: Brak katalogu tymczasowego must_be_unique: musi być unikalny some_add_info: jakieś dodatkowe informacje example: przykład - create: Utwórz delete: Usuń - mailr: MailR save: Zapisz copy: Skopiuj @@ -186,11 +192,10 @@ pl: 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 + no_file_chosen: Nie wybrano żadnego pliku diff --git a/config/routes.rb b/config/routes.rb index c22d4fd..6f6d2f6 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -10,9 +10,10 @@ Mailr::Application.routes.draw do match "prefs/identity" => "prefs#identity", :as => :prefs_identity match "prefs/servers" => "prefs#servers", :as => :prefs_servers - resources :contacts post "contacts/ops" - + get "contacts/export" + match "contacts/external" => "contacts#external", :as => :contacts_external + resources :contacts #resources :folders match "folders/index" => 'folders#index', :as => :folders @@ -30,15 +31,18 @@ Mailr::Application.routes.draw do get "internal/imaperror" get "internal/loginfailure" get "internal/onlycanlogins" + match "internal/about" => 'internal#about' ,:as => :about 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 + match "messages_ops/edit/:id" => 'messages_ops#edit', :as => :messages_ops_edit root :to => "messages#index" match "messages/index" => 'messages#index', :as => :messages match "messages/compose" => 'messages#compose', :as => :compose + match "messages/compose/:cid" => 'messages#compose', :as => :compose_contact #get "messages/refresh_status" #get "messages/emptybin" #match "messages/select/:id" => 'messages#select', :as => :messages_select @@ -64,8 +68,9 @@ Mailr::Application.routes.draw do get "user/unknown" themes_for_rails + #acts_as_notes_owner - match '*a', :to => 'internal#not_found' + #match '*a', :to => 'internal#not_found' # The priority is based upon order of creation: # first created -> highest priority. diff --git a/db/migrate/20110906094129_create_events.rb b/db/migrate/20110906094129_create_events.rb deleted file mode 100755 index 864a22e..0000000 --- a/db/migrate/20110906094129_create_events.rb +++ /dev/null @@ -1,19 +0,0 @@ -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/schema.rb b/db/schema.rb index a821e49..8dfce34 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 => 20110908094506) do +ActiveRecord::Schema.define(:version => 20110913114841) do create_table "contacts", :force => true do |t| t.string "nick" @@ -23,18 +23,6 @@ ActiveRecord::Schema.define(:version => 20110908094506) 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" @@ -66,6 +54,17 @@ ActiveRecord::Schema.define(:version => 20110908094506) do t.datetime "updated_at" end + create_table "notes", :force => true do |t| + t.integer "owner_id" + t.string "owner_type" + t.string "title" + t.text "content" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "notes", ["owner_id", "owner_type"], :name => "index_notes_on_owner_id_and_owner_type" + create_table "prefs", :force => true do |t| t.string "theme" t.string "locale" diff --git a/lib/mail_plugin_extension.rb b/lib/mail_plugin_extension.rb index 3a464fd..3f71520 100755 --- a/lib/mail_plugin_extension.rb +++ b/lib/mail_plugin_extension.rb @@ -40,6 +40,21 @@ module Mail body.raw_source.size end + def decoded_and_charseted + begin + if not charset.upcase == 'UTF-8' + charset.nil? ? source_charset = $defaults["msg_unknown_charset"] : source_charset = charset + charseted = Iconv.iconv("UTF-8",source_charset,decoded).first + else + charseted = decoded + end + rescue + decoded + end + + end + + end class Field diff --git a/test/fixtures/events.yml b/test/fixtures/events.yml deleted file mode 100755 index 2364e8b..0000000 --- a/test/fixtures/events.yml +++ /dev/null @@ -1,19 +0,0 @@ -# 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/unit/helpers/events_helper_test.rb b/test/unit/helpers/events_helper_test.rb deleted file mode 100755 index 2e7567e..0000000 --- a/test/unit/helpers/events_helper_test.rb +++ /dev/null @@ -1,4 +0,0 @@ -require 'test_helper' - -class EventsHelperTest < ActionView::TestCase -end diff --git a/themes/olive/images/left.png b/themes/olive/images/left.png new file mode 100755 index 0000000000000000000000000000000000000000..7a2be54f15ce0c65d3f6cb752f2b5a8e31f3e3b8 GIT binary patch literal 781 zcmV+o1M>WdP)z>%33NqRbVF}#ZDnqB004<9jRpV!0;)+wK~#90g;dK8Ov} z7A;I<=8yE7`UNszf^h^XRP2M-E!A29iE$!Wz=(#n+ILY9l@b|<4;o@r=<=+6?gc{{ zJ;_dc&sle!z1Q0N8UT#pRre5oesRTB?@D*V1mbT zG+i|@-|!>%CWzUJUsFyLy*TUs#B9xv*{V-AT|BTOY@{kCthyiB?Esc`f{OH&4_vLI zDDEpRBUTk^iKKx{mcV=48n~!rRiGP2OeISRj($|6vZj)lGS@y23s6AgMGs;n9}YSz0($>_ z5&Or>*!h|iMgc{)JfKdu6|miT0=mcspp$F@0gbG=F}CGB2l8qMn6CRE{(;6H;HV)+i=bp#LJ+VJ4<-W8>%)|5F@u6bMAtSwv4 z)|g$n{H_lxA4A}~PTE6Lsvbvk#*8AHQ)HQDpPG*eX&A=?r_1OCO=Gu-NFWXI@5m}#09M2>fyq1I6f|6843yXS;#?F*uU_IJXzj`K&K_3BEw z)79SkS=w45ij2P0J-}JHOt|-LLFOi9Yj~OPPRXO2+x}?eM>jpNYFz>%33NqRbVF}#ZDnqB004<9jRpV!0=r2>K~#90g;YyVQ&AYa>8kC$ zZ81P%g5u7-zo5UV@dwDlO^q9Q3oXwU5acBxE{s?p0SUCy2Q38=A`eLfu}Z`eb^PX> zdqIR~lN0DUbLY-CGp7asf zq#G2*0i)@FEX~Y8!!vGe9f5xg>nytHa?DQ5eW+HVU+qwMl^TM39Ed=pbNQT_^FI-x z6g?`UpKVkS6f&Y|6CD{1jES8G-xe@f)W9*ZRY3QQRuMb5dlxHWuVeA?>DC!gftr&Z zr1rxy{scBlqYCutWLdqMKm}@A^ngA+PMM&ohXP;$m?TS}K;daO8Wz15fQ*~Kz7-QH ze^x6jA;u(7CseLTQn4hIPqvvg++gBSIUL9Z{<(-Dme256$ME38Sr49XUK2mHr_{{h z`fYEAY&V8&kJ-wJcNKW~z7l-akzLm%^EjS6t%})Xg~LZun(JrQIxS-s42^A5CXuKu zzkP{tpkSR7F}qfAdhhEr{`c8CexWMu5VG3mL`yo~7CSoL zKdNKRk59K10W%*g)L!y0uA@~%q51{g0p69r3D=MM5zF0Bo#43L*^7a+r#!mc_K!xQ ze%^z4&Wo-LFP#@1vO3fJZlXtiU6^PrXQ@%>%kZj&hWWD!xKxkqF1hT>8M@+vUUgxE c&ZXu04UR7^6^xt$mjD0&07*qoM6N<$f`y=IS^xk5 literal 0 HcmV?d00001 diff --git a/themes/olive/stylesheets/style.css b/themes/olive/stylesheets/style.css index 1a6d24c..6e8a6a8 100755 --- a/themes/olive/stylesheets/style.css +++ b/themes/olive/stylesheets/style.css @@ -342,11 +342,6 @@ ul.list li .item .avatar { -webkit-border-bottom-right-radius: 4px; } -.block #logo { - height: 65; - background-color: #EFF3E4; -} - div.block div.actions-bar { margin: 5px; } @@ -580,3 +575,11 @@ div.actiongroup { margin: 5px 0; padding: 2px 0; } + +div.logo { + text-align: center; +} + +div#logo { + background-color: #EFF3E4; +} diff --git a/themes/olive/views/contacts/_contact.html.erb b/themes/olive/views/contacts/_contact.html.erb new file mode 100755 index 0000000..1a85802 --- /dev/null +++ b/themes/olive/views/contacts/_contact.html.erb @@ -0,0 +1,7 @@ +<%= check_box_tag "cids[]", contact.id %> +<%= link_to contact.nick,edit_contact_path(contact) %> +<%= contact.first_name %> +<%= contact.last_name %> +<%= link_to contact.email, compose_contact_path(contact.id) %> +<%= contact.info %> + diff --git a/themes/olive/views/contacts/_external.html.erb b/themes/olive/views/contacts/_external.html.erb new file mode 100755 index 0000000..0145a2a --- /dev/null +++ b/themes/olive/views/contacts/_external.html.erb @@ -0,0 +1,7 @@ +
+<%= form_tag(contacts_external_path, :multipart => true) %> +:  +<%= file_field 'upload', 'datafile' %> +<%= raw group_action(@ei_buttons) %> + +
diff --git a/themes/olive/views/contacts/_left.html.erb b/themes/olive/views/contacts/_left.html.erb index 9b9fa45..bfe4c88 100755 --- a/themes/olive/views/contacts/_left.html.erb +++ b/themes/olive/views/contacts/_left.html.erb @@ -1,9 +1,9 @@
-<%= raw form_field(@contact,"nick",nil,"joe"+', '+t(:must_be_unique),@contact.nick) %> +<%= raw form_field(@contact,"nick",nil,"joe"+', '+t(:must_be_unique,:scope=>:common),@contact.nick) %> <%= raw form_field(@contact,"first_name",nil,"Joe",@contact.first_name) %> <%= raw form_field(@contact,"last_name",nil,"Doe",@contact.last_name) %> <%= 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_field(@contact,"info",nil,t(:some_add_info,:scope=>:common),@contact.info) %>
<%= 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 2ffd494..55d192d 100755 --- a/themes/olive/views/contacts/_list.html.erb +++ b/themes/olive/views/contacts/_list.html.erb @@ -1,31 +1,25 @@ -
-
- <%= t(:total_entries,:scope=>:contact) %>: <%= @contacts.total_entries %> -
- <%= will_paginate @contacts %> + <%= t(:total_entries,:scope=>:contact) %>: <%= @contacts.total_entries %> +<%= will_paginate @contacts %>
- - - - - <%= raw contacts_table_header %> - - - <% trclass = :even %> - <% @contacts.each do |c| %> - - <%= render :partial => 'contacts/row', :object => c %> - - <% trclass == :even ? trclass = :odd : trclass = :even %> - <% end %> - -
- + + + +<%= raw contacts_table_header %> + + +<% trclass = :even %> +<% @contacts.each do |c| %> + +<%= render :partial => 'contacts/contact', :object => c %> + +<% trclass == :even ? trclass = :odd : trclass = :even %> +<% end %> + +
- <%= will_paginate @contacts %> +<%= will_paginate @contacts %>
- diff --git a/themes/olive/views/contacts/_ops.html.erb b/themes/olive/views/contacts/_ops.html.erb index af7f154..eba864f 100755 --- a/themes/olive/views/contacts/_ops.html.erb +++ b/themes/olive/views/contacts/_ops.html.erb @@ -1,5 +1,3 @@
-

- <%= raw group_action(@buttons) %> -

+<%= raw group_action(@buttons) %>
diff --git a/themes/olive/views/contacts/_row.html.erb b/themes/olive/views/contacts/_row.html.erb deleted file mode 100755 index 706229f..0000000 --- a/themes/olive/views/contacts/_row.html.erb +++ /dev/null @@ -1,7 +0,0 @@ -<%= check_box_tag "cids[]", row.id %> -<%= 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} %> -<%= row.info %> - diff --git a/themes/olive/views/contacts/index.html.erb b/themes/olive/views/contacts/index.html.erb index 61be703..86b8e62 100755 --- a/themes/olive/views/contacts/index.html.erb +++ b/themes/olive/views/contacts/index.html.erb @@ -7,21 +7,21 @@ <% end %>
-
- <%= raw main_navigation(:contacts_tab) %> -
-
- <%= form_tag(contacts_ops_path,{:name=>'contacts'})%> - - <% if @contacts.size.zero? %> -

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

- <%= raw single_action('create_new','contact','plus.png') %> - <% else %> - <%= render :partial => 'ops' %> - <%= render :partial => 'list' %> - <% end %> - - -
+
+<%= raw main_navigation(:contacts_tab) %> +
+
+<%= form_tag(contacts_ops_path,{:name=>'contacts'})%> +<% if @contacts.size.zero? %> +

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

+<%= raw single_action('create_new','contact','plus.png') %> + +<% else %> +<%= render :partial => 'ops' %> +<%= render :partial => 'list' %> + +<% end %> +<%= render :partial => 'external' %> +
diff --git a/themes/olive/views/events/_calendar.html.erb b/themes/olive/views/events/_calendar.html.erb deleted file mode 100755 index 2d2417f..0000000 --- a/themes/olive/views/events/_calendar.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -
-<%= raw calendar(1,2,3) %> -
diff --git a/themes/olive/views/internal/_version.html.erb b/themes/olive/views/internal/_version.html.erb index b32cad9..881c09d 100755 --- a/themes/olive/views/internal/_version.html.erb +++ b/themes/olive/views/internal/_version.html.erb @@ -1,4 +1,4 @@

-<%= t(:version) %>: <%= $defaults["version"] %> +<%= link_to (t(:version,:scope=>:common) + " " + $defaults["version"]),about_path %>

diff --git a/themes/olive/views/internal/about.html.erb b/themes/olive/views/internal/about.html.erb new file mode 100755 index 0000000..19336c1 --- /dev/null +++ b/themes/olive/views/internal/about.html.erb @@ -0,0 +1,27 @@ +<% content_for :title do %> +- <%= t(:about,:scope=>:internal) %> +<% end %> + +<% content_for :sidebar do %> +<%= content_for_sidebar %> +<% end %> + +
+
+ <%= raw single_navigation(:about,:internal) %> +
+
+
+
+<%= t(:current_version,:scope=>:internal) + ": " + $defaults["version"] %> +
+
+
+<%= render :file => 'config/about.txt' %>
+<%= render :text => "To do:\n" %>
+<%= render :file => 'config/todo.txt' %>
+
+
+
+
+ diff --git a/themes/olive/views/layouts/application.html.erb b/themes/olive/views/layouts/application.html.erb index 2f83eaa..9951d00 100755 --- a/themes/olive/views/layouts/application.html.erb +++ b/themes/olive/views/layouts/application.html.erb @@ -25,8 +25,7 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
diff --git a/themes/olive/views/layouts/simple.html.erb b/themes/olive/views/layouts/simple.html.erb index 6d06595..a4bd2a8 100755 --- a/themes/olive/views/layouts/simple.html.erb +++ b/themes/olive/views/layouts/simple.html.erb @@ -11,6 +11,6 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" <%= yield %> - + diff --git a/themes/olive/views/messages/_file_select.html.erb b/themes/olive/views/messages/_file_select.html.erb index 1f67932..0405f62 100755 --- a/themes/olive/views/messages/_file_select.html.erb +++ b/themes/olive/views/messages/_file_select.html.erb @@ -1,5 +1,5 @@
-<%= form_tag(upload_path, :multipart => true) %> +<%= form_tag(contact_import_path, :multipart => true) %> :  <%= file_field 'upload', 'datafile' %> <%= raw single_action('send_file','compose','up.png') %> diff --git a/themes/olive/views/messages/_message.html.erb b/themes/olive/views/messages/_message.html.erb index 1f9e81c..51af893 100755 --- a/themes/olive/views/messages/_message.html.erb +++ b/themes/olive/views/messages/_message.html.erb @@ -11,7 +11,7 @@ <%= 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)) %> +<%= link_to(t(:edit,:scope=>:message),messages_ops_edit_path(message.uid)) %> <% else %> <%= raw(' ') %> <% end %> diff --git a/themes/olive/views/messages/_new.html.erb b/themes/olive/views/messages/_new.html.erb index 34b40fb..eaaae30 100755 --- a/themes/olive/views/messages/_new.html.erb +++ b/themes/olive/views/messages/_new.html.erb @@ -21,6 +21,9 @@ 20 ) %>
+<% if !@olduid.nil? %> +<%= hidden_field_tag 'olduid', @olduid %> +<% end %> <%= raw group_action(@buttons) %> <%= render :partial=> 'messages/file_attachs' %> diff --git a/themes/olive/views/sidebar/_calendar_view.html.erb b/themes/olive/views/sidebar/_calendar_view.html.erb new file mode 100755 index 0000000..6b5cc10 --- /dev/null +++ b/themes/olive/views/sidebar/_calendar_view.html.erb @@ -0,0 +1,3 @@ +
+ <%= raw calendar_small %> +
diff --git a/themes/olive/views/sidebar/_logo.html.erb b/themes/olive/views/sidebar/_logo.html.erb new file mode 100755 index 0000000..f449fb5 --- /dev/null +++ b/themes/olive/views/sidebar/_logo.html.erb @@ -0,0 +1 @@ + diff --git a/themes/olive/views/user/setup.html.erb b/themes/olive/views/user/setup.html.erb index d577809..74a3c98 100755 --- a/themes/olive/views/user/setup.html.erb +++ b/themes/olive/views/user/setup.html.erb @@ -4,7 +4,7 @@
-