From 7967e6d5c8089f1b9f495419888e31c4117571cc Mon Sep 17 00:00:00 2001 From: Wojciech Todryk Date: Fri, 29 Jul 2011 20:05:47 +0200 Subject: [PATCH] a lot of stuff added --- README.markdown | 17 ++- app/controllers/contacts_controller.rb | 22 ++++ app/controllers/folders_controller.rb | 89 +++++++++++++++ app/controllers/internal_controller.rb | 9 +- app/controllers/messages_controller.rb | 7 ++ app/controllers/prefs_controller.rb | 13 +++ app/controllers/user_controller.rb | 21 ++-- app/helpers/application_helper.rb | 104 +++++++++++++++++- app/helpers/contacts_helper.rb | 2 + app/helpers/folder_helper.rb | 25 +++++ app/helpers/messages_helper.rb | 14 --- app/helpers/prefs_helper.rb | 2 + app/models/folder.rb | 16 +++ config/defaults.yml | 9 +- config/locales/en.yml | 13 +++ config/routes.rb | 15 +++ lib/imap_mailbox.rb | 15 +++ lib/imap_session.rb | 2 +- lib/tasks/clear_db.rake | 10 ++ test/functional/contacts_controller_test.rb | 9 ++ test/functional/folder_controller_test.rb | 19 ++++ test/functional/prefs_controller_test.rb | 9 ++ test/unit/helpers/contacts_helper_test.rb | 4 + test/unit/helpers/folder_helper_test.rb | 4 + test/unit/helpers/prefs_helper_test.rb | 4 + themes/olive/images/cross.png | Bin 0 -> 655 bytes themes/olive/stylesheets/base.css | 6 +- themes/olive/views/contacts/index.html.erb | 18 +++ themes/olive/views/folders/_list.html.erb | 12 ++ themes/olive/views/folders/index.html.erb | 36 ++++++ .../olive/views/layouts/application.html.erb | 21 +++- themes/olive/views/messages/compose.html.erb | 19 ++++ themes/olive/views/messages/index.html.erb | 37 +++---- themes/olive/views/prefs/index.html.erb | 18 +++ themes/olive/views/user/setup.html.erb | 2 +- 35 files changed, 559 insertions(+), 64 deletions(-) create mode 100755 app/controllers/contacts_controller.rb create mode 100755 app/controllers/folders_controller.rb create mode 100755 app/controllers/prefs_controller.rb create mode 100755 app/helpers/contacts_helper.rb create mode 100755 app/helpers/folder_helper.rb create mode 100755 app/helpers/prefs_helper.rb create mode 100644 lib/tasks/clear_db.rake create mode 100755 test/functional/contacts_controller_test.rb create mode 100755 test/functional/folder_controller_test.rb create mode 100755 test/functional/prefs_controller_test.rb create mode 100755 test/unit/helpers/contacts_helper_test.rb create mode 100755 test/unit/helpers/folder_helper_test.rb create mode 100755 test/unit/helpers/prefs_helper_test.rb create mode 100755 themes/olive/images/cross.png create mode 100755 themes/olive/views/contacts/index.html.erb create mode 100755 themes/olive/views/folders/_list.html.erb create mode 100755 themes/olive/views/folders/index.html.erb create mode 100755 themes/olive/views/messages/compose.html.erb create mode 100755 themes/olive/views/prefs/index.html.erb diff --git a/README.markdown b/README.markdown index 4cb73d5..49cab78 100755 --- a/README.markdown +++ b/README.markdown @@ -11,17 +11,28 @@ In _Rails 3_ all dependencies should be defined in file _Gemfile_. All needed ge * Checkout the source code. -* Install all dependiences. Use _bundler_ for that. +* Install all dependiences. Check if proper gems (sqlite3/mysql/postgresql) are defined in _Gemfile_ and installed. Use _bundler_ for that: + +```shell +bundle install +``` + +* Check _config/defaults.yml_ for proper values. * Prepare config/database.yml file (see _config/database.yml.example_). - Check if proper gems (sqlite3/mysql/postgresql) are defined in _Gemfile_ and installed. * Migrate database (rake db:migrate) * Start rails server if applicable -* Point Your browser to application URL: +* Point your browser to application URL: For local access: http://localhost:3000 For remote access: http://some_url/mailr +* Using browser do basic setup. If You make a mistake delete all data from DB using rake task: + +```shell +rake db:clear_data +``` + * Use it. diff --git a/app/controllers/contacts_controller.rb b/app/controllers/contacts_controller.rb new file mode 100755 index 0000000..0a6ded9 --- /dev/null +++ b/app/controllers/contacts_controller.rb @@ -0,0 +1,22 @@ +require 'imap_session' +require 'imap_mailbox' + +class ContactsController < ApplicationController + + include ImapMailboxModule + include ImapSessionModule + + before_filter :check_current_user,:selected_folder + + before_filter :open_imap_session + after_filter :close_imap_session + + theme :theme_resolver + + def index + @folders = @current_user.folders.order("name asc") + @current_folder = @current_user.folders.current(@selected_folder) + flash[:notice] = 'Not implemented yet' + end + +end diff --git a/app/controllers/folders_controller.rb b/app/controllers/folders_controller.rb new file mode 100755 index 0000000..a94ce49 --- /dev/null +++ b/app/controllers/folders_controller.rb @@ -0,0 +1,89 @@ +class FoldersController < ApplicationController + + include ImapMailboxModule + include ImapSessionModule + + before_filter :check_current_user ,:selected_folder + + before_filter :open_imap_session + after_filter :close_imap_session + + before_filter :get_folders, :except => :manage + + theme :theme_resolver + + def index + + end + + def create + if params["folder"].empty? + flash[:warning] = t(:folder_to_create_empty) + render "index" + else + begin + if params["parent_folder"].empty? + @mailbox.create_folder(params[:folder]) + else + parent_folder = Folder.find(params["parent_folder"]) + if parent_folder.depth >= $defaults["mailbox_max_parent_folder_depth"].to_i + raise Exception, t(:folder_max_depth) + end + @mailbox.create_folder(parent_folder.full_name + parent_folder.delim + params[:folder]) + end + rescue Exception => e + flash[:error] = t(:can_not_create_folder) + ' (' + e.to_s + ')' + render 'index' + return + end + redirect_to :action => 'manage', :flash => t(:folder_was_created), :type => :notice + end + end + # FIXME if you delete folder you should change current folder because if you go to messages/index you got nil + def delete + if params["folder"].empty? + flash[:warning] = t(:folder_to_delete_empty) + render "index" + else + begin + folder = Folder.find(params["folder"]) + system_folders = Array.new + system_folders << $defaults["mailbox_inbox"] + system_folders << $defaults["mailbox_trash"] + system_folders << $defaults["mailbox_sent"] + system_folders << $defaults["mailbox_drafts"] + if system_folders.include?(folder.full_name.downcase) + raise Exception, t(:system_folder) + end + @mailbox.delete_folder(Folder.find(params["folder"]).full_name) + rescue Exception => e + flash[:error] = t(:can_not_delete_folder) + ' (' + e.to_s + ')' + render 'index' + return + end + redirect_to :action => 'manage', :flash => t(:folder_was_deleted), :type => :notice + end + end + + def sub_un_scribe + redirect_to :action => 'manage' + end + + def manage + @current_user.folders.destroy_all + folders=@mailbox.folders + Folder.createBulk(@current_user,folders) + if params[:flash] + flash[params[:type]] = params[:flash] + end + redirect_to :action => 'index' + end + + protected + + def get_folders + @folders = @current_user.folders.order("name asc") + @current_folder = @current_user.folders.current(@selected_folder) + end + +end diff --git a/app/controllers/internal_controller.rb b/app/controllers/internal_controller.rb index 1d38b2d..25d4bdd 100755 --- a/app/controllers/internal_controller.rb +++ b/app/controllers/internal_controller.rb @@ -13,7 +13,14 @@ class InternalController < ApplicationController @title = t(:imap_error) @error = params[:error] || t(:unspecified_error) logger.error "!!! InternalControllerImapError: " + @error - render 'error' + render 'error' + end + + def loginfailure + reset_session + flash[:error] = t(:login_failure) + @current_user = nil + redirect_to :controller=>'user', :action => 'login' end end diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index 52b277a..f1c7f99 100755 --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -16,6 +16,7 @@ class MessagesController < ApplicationController def index @folders = @current_user.folders.order("name asc") @current_folder = @current_user.folders.current(@selected_folder) + flash[:notice] = 'Not implemented yet' end def refresh @@ -30,4 +31,10 @@ class MessagesController < ApplicationController redirect_to :action => 'index' end + def compose + @folders = @current_user.folders.order("name asc") + @current_folder = @current_user.folders.current(@selected_folder) + flash[:notice] = 'Not impelented yet' + end + end diff --git a/app/controllers/prefs_controller.rb b/app/controllers/prefs_controller.rb new file mode 100755 index 0000000..2109370 --- /dev/null +++ b/app/controllers/prefs_controller.rb @@ -0,0 +1,13 @@ +class PrefsController < ApplicationController + + before_filter :check_current_user,:selected_folder + + theme :theme_resolver + + def index + @folders = @current_user.folders.order("name asc") + @current_folder = @current_user.folders.current(@selected_folder) + flash[:notice] = 'Not implemented yet' + end + +end diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index 83f7c98..5844412 100755 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -17,23 +17,16 @@ class UserController < ApplicationController if user.nil? redirect_to :action => 'unknown' ,:email=> params[:user][:email] else - auten = true - if auten == true - session[:user_id] = user.id - user.set_cached_password(session,params[:user][:password]) - - if session["return_to"] - redirect_to(session["return_to"]) - session["return_to"] = nil - else - redirect_to :controller=> 'messages', :action=> 'refresh' - end - + session[:user_id] = user.id + user.set_cached_password(session,params[:user][:password]) + if session["return_to"] + redirect_to(session["return_to"]) + session["return_to"] = nil else - flash[:error] = t(:login_failure) - redirect_to :action => 'login' + redirect_to :controller=> 'messages', :action=> 'refresh' end + end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 95146e9..2c88042 100755 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -36,12 +36,12 @@ def form_field(object,field,flabel,example,val) end -def form_button(text) +def form_button(text,image) html = "" html << "
" html << "
" end +def form_button_value(text,image,onclick) + html = "" + html << "
" + html << "
" +end + +def simple_input_field(name,label,value) + html = "" + html << "
" + html << "" + html << "" + html << "
" +end + +def select_field(name,object,label,blank) + html = "" + html << "
" + html << "" + html << select(name, name, object.all.collect {|p| [ p.name, p.id ] }, { :include_blank => (blank == true ? true : false)}) + html << "
" +end + +#def form_simle_field(name,label,value) +# html = "" +# html << "
" +# html << "" +# html << "" +# html << "
" +#end + +def nav_to_folders + link_to( t(:folders), :controller=>:folders, :action=>:manage ) +end + +def nav_to_messages + link_to( t(:messages), :controller=>:messages, :action=>:index ) +end + +def nav_to_compose + link_to( t(:compose), :controller=>:messages, :action=>:compose ) +end + +def nav_to_contacts + link_to( t(:contacts), :controller=>:contacts, :action=>:index ) +end + +def nav_to_prefs + link_to( t(:preferences), :controller=>:prefs, :action=>:index ) +end + +def main_navigation(active) + s = "" + s += "" +end + +def multi_select(id, name, objects, selected_objects, label, value,joiner,content = {}) + options = "" + objects.each do |o| + selected = selected_objects.include?(o) ? " selected=\"selected\"" : "" + option_value = escape_once(o.send(value)) + text = [option_value] + unless content[:text].nil? + text = [] + content[:text].each do |t| + text << o.send(t) + end + text = text.join(joiner) + end + text.gsub!(/^\./,'') + bracket = [] + unless content[:bracket].nil? + content[:bracket].each do |b| + bracket << o.send(b) + end + bracket = bracket.join(joiner) + end + option_content = bracket.empty? ? "#{text}" : "#{text} (#{bracket})" + options << "\n" + end + "
" +end + + end diff --git a/app/helpers/contacts_helper.rb b/app/helpers/contacts_helper.rb new file mode 100755 index 0000000..593025b --- /dev/null +++ b/app/helpers/contacts_helper.rb @@ -0,0 +1,2 @@ +module ContactsHelper +end diff --git a/app/helpers/folder_helper.rb b/app/helpers/folder_helper.rb new file mode 100755 index 0000000..1ac593b --- /dev/null +++ b/app/helpers/folder_helper.rb @@ -0,0 +1,25 @@ +module FolderHelper + + def folder_link(folder) + folder.parent.empty? ? name = folder.name : name = folder.parent.gsub(/\./,'#') + "#" + folder.name + s = link_to folder.name.capitalize, :controller => 'messages', :action => 'folder', :id => name + if !folder.unseen.zero? + s += ' (' + folder.unseen.to_s + ')' + end + s + end + + def pretty_folder_name(folder) + #folder = folder.gsub(/#/,".") + folder.name.capitalize + end + + def select_for_folders(name,id,object,label,blank) + html = "" + html << "
" + html << "" + html << select(name, id, object.all.collect {|p| [ p.parent.empty? ? p.name : p.parent+p.delim+p.name, p.id ] }, { :include_blank => (blank == true ? true : false)}) + html << "
" + end + +end diff --git a/app/helpers/messages_helper.rb b/app/helpers/messages_helper.rb index cca40f3..5db34d2 100755 --- a/app/helpers/messages_helper.rb +++ b/app/helpers/messages_helper.rb @@ -1,18 +1,4 @@ module MessagesHelper - def folder_link(folder) - folder.parent.empty? ? name = folder.name : name = folder.parent.gsub(/\./,'#') + "#" + folder.name - s = link_to folder.name.capitalize, :controller => 'messages', :action => 'folder', :id => name - if !folder.unseen.zero? - s += ' (' + folder.unseen.to_s + ')' - end - s - end - - def pretty_folder_name(folder) - #folder = folder.gsub(/#/,".") - folder.name.capitalize - end - end diff --git a/app/helpers/prefs_helper.rb b/app/helpers/prefs_helper.rb new file mode 100755 index 0000000..a28d430 --- /dev/null +++ b/app/helpers/prefs_helper.rb @@ -0,0 +1,2 @@ +module PrefsHelper +end diff --git a/app/models/folder.rb b/app/models/folder.rb index 513eaca..970ff45 100755 --- a/app/models/folder.rb +++ b/app/models/folder.rb @@ -4,6 +4,18 @@ class Folder < ActiveRecord::Base validates_presence_of :name, :on => :create before_save :check_fill_params, :on => :create + def full_name + if parent.empty? + name + else + parent + delim + name + end + end + + def depth + parent.split('.').size + end + private def check_fill_params @@ -25,6 +37,8 @@ class Folder < ActiveRecord::Base parent = "" end + logger.info "******************* #{name}, #{parent} " + user.folders.create(:name=>name,:parent=>parent,:haschildren=>has_children,:delim=>data.delim,:messages => data.messages,:unseen => data.unseen) end end @@ -38,4 +52,6 @@ class Folder < ActiveRecord::Base end end + + end diff --git a/config/defaults.yml b/config/defaults.yml index a0941f2..c87a3bb 100755 --- a/config/defaults.yml +++ b/config/defaults.yml @@ -1,15 +1,22 @@ theme: olive locale: en + msgs_per_page: 20 msgs_refresh_time: 300 msg_send_type: html + imap_debug: true imap_use_ssl: 'false' imap_port: 143 imap_ssl_port: 993 imap_bye_timeout_retry_seconds: 2 -imap_inbox_folder: inbox + session_encryption: true session_password: asDD3s2@sAdc983# +mailbox_max_parent_folder_depth: 3 +mailbox_inbox: inbox +mailbox_trash: inbox.trash +mailbox_sent: inbox.sent +mailbox_drafts: inbox.drafts diff --git a/config/locales/en.yml b/config/locales/en.yml index 4d37c1c..d1f3036 100755 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -79,3 +79,16 @@ en: general_error: General error unspecified_error: Unspecified error occured imap_error: Imap Error + folder_to_create: Folder to create + create: Create + subscribe_unsubscribe: (Un)Subscribe + folders_subscribed_selected: Folders subscribed + messages: Messages + folder_to_create_empty: Folder to create is empty + folder_was_created: Folder was created + can_not_create_folder: Can not create folder + folder_max_depth: Maximum folder depth reached + folder_to_delete_empty: Folder to delete empty + folder_was_deleted: Folder was deleted + can_not_delete_folder: Can not delete folder + system_folder: System folder diff --git a/config/routes.rb b/config/routes.rb index 05fcc84..df77aef 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,12 +1,27 @@ Mailr::Application.routes.draw do + get "prefs/index" + + get "contacts/index" + + get "folders/index" + + post "folders/create" + post "folders/delete" + post "folders/sub_un_scribe" + + get "folders/manage" + get "internal/error" get "internal/imaperror" + get "internal/loginfailure" root :to => "messages#index" get "messages/index" get "messages/refresh" match 'messages/folder/:id' => 'messages#folder' + post "messages/ops" + get "messages/compose" get "user/logout" post "user/authenticate" diff --git a/lib/imap_mailbox.rb b/lib/imap_mailbox.rb index c9a8606..ce7840c 100755 --- a/lib/imap_mailbox.rb +++ b/lib/imap_mailbox.rb @@ -72,6 +72,21 @@ class IMAPMailbox @folders end + def create_folder(name) + begin + @imap.create(Net::IMAP.encode_utf7(name)) + rescue Exception => e + raise e + end + end + + def delete_folder(name) + begin + @imap.delete(Net::IMAP.decode_utf7(name)) + rescue Exception => e + raise e + end + end end end diff --git a/lib/imap_session.rb b/lib/imap_session.rb index 3e1af87..a6386aa 100755 --- a/lib/imap_session.rb +++ b/lib/imap_session.rb @@ -8,7 +8,7 @@ def open_imap_session @mailbox = ImapMailboxModule::IMAPMailbox.new(logger) @mailbox.connect(@current_user.servers.primary,@current_user.email, @current_user.get_cached_password(session)) rescue Exception => ex - redirect_to :controller => 'internal', :action => 'imaperror' , :error => ex.inspect + redirect_to :controller => 'internal', :action => 'loginfailure' end end diff --git a/lib/tasks/clear_db.rake b/lib/tasks/clear_db.rake new file mode 100644 index 0000000..a77ada2 --- /dev/null +++ b/lib/tasks/clear_db.rake @@ -0,0 +1,10 @@ +namespace :db do + desc "Clears all date in db" + task :clear_data => :environment do + users = User.all + puts "Number of users in db: #{users.size}" + puts "Deleting data....." + User.destroy_all + puts "Done" + end +end diff --git a/test/functional/contacts_controller_test.rb b/test/functional/contacts_controller_test.rb new file mode 100755 index 0000000..cc51a6a --- /dev/null +++ b/test/functional/contacts_controller_test.rb @@ -0,0 +1,9 @@ +require 'test_helper' + +class ContactsControllerTest < ActionController::TestCase + test "should get index" do + get :index + assert_response :success + end + +end diff --git a/test/functional/folder_controller_test.rb b/test/functional/folder_controller_test.rb new file mode 100755 index 0000000..7e0419b --- /dev/null +++ b/test/functional/folder_controller_test.rb @@ -0,0 +1,19 @@ +require 'test_helper' + +class FolderControllerTest < ActionController::TestCase + test "should get index" do + get :index + assert_response :success + end + + test "should get create" do + get :create + assert_response :success + end + + test "should get delete" do + get :delete + assert_response :success + end + +end diff --git a/test/functional/prefs_controller_test.rb b/test/functional/prefs_controller_test.rb new file mode 100755 index 0000000..bbd96a3 --- /dev/null +++ b/test/functional/prefs_controller_test.rb @@ -0,0 +1,9 @@ +require 'test_helper' + +class PrefsControllerTest < ActionController::TestCase + test "should get index" do + get :index + assert_response :success + end + +end diff --git a/test/unit/helpers/contacts_helper_test.rb b/test/unit/helpers/contacts_helper_test.rb new file mode 100755 index 0000000..c41d1ac --- /dev/null +++ b/test/unit/helpers/contacts_helper_test.rb @@ -0,0 +1,4 @@ +require 'test_helper' + +class ContactsHelperTest < ActionView::TestCase +end diff --git a/test/unit/helpers/folder_helper_test.rb b/test/unit/helpers/folder_helper_test.rb new file mode 100755 index 0000000..a29bca3 --- /dev/null +++ b/test/unit/helpers/folder_helper_test.rb @@ -0,0 +1,4 @@ +require 'test_helper' + +class FolderHelperTest < ActionView::TestCase +end diff --git a/test/unit/helpers/prefs_helper_test.rb b/test/unit/helpers/prefs_helper_test.rb new file mode 100755 index 0000000..4e27f74 --- /dev/null +++ b/test/unit/helpers/prefs_helper_test.rb @@ -0,0 +1,4 @@ +require 'test_helper' + +class PrefsHelperTest < ActionView::TestCase +end diff --git a/themes/olive/images/cross.png b/themes/olive/images/cross.png new file mode 100755 index 0000000000000000000000000000000000000000..1514d51a3cf1b67e1c5b9ada36f1fd474e2d214a GIT binary patch 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# +<%= render :partial => 'folders/list' %> +<% end %> + +<% content_for :title do %> +- <%= t(:contacts) %> +<% end %> + +
+
+ <%= raw main_navigation(:contacts) %> +
+
+ <%= form_tag({:controller=>'messages', :action=>'ops'})%> + + +
+
diff --git a/themes/olive/views/folders/_list.html.erb b/themes/olive/views/folders/_list.html.erb new file mode 100755 index 0000000..e75c88b --- /dev/null +++ b/themes/olive/views/folders/_list.html.erb @@ -0,0 +1,12 @@ +
+

<%=t (:folders) %> <%= link_to t(:refresh), {:controller => 'messages', :action => 'refresh'}, :class=>'minor' %>

+
+ +
+ <%= raw form_button_value(t(:logout),'tick.png',url_for(:controller => :user, :action => :logout)) %> +
+
diff --git a/themes/olive/views/folders/index.html.erb b/themes/olive/views/folders/index.html.erb new file mode 100755 index 0000000..528ab45 --- /dev/null +++ b/themes/olive/views/folders/index.html.erb @@ -0,0 +1,36 @@ +<% content_for :sidebar do %> +<%= render :partial => 'folders/list' %> +<% end %> + +<% content_for :title do %> +- <%= t(:folders) %> +<% end %> + +
+
+ <%= raw main_navigation(:folders) %> +
+
+
+
+
+ <%= form_tag({:controller=>'folders',:action=>'create'},:class=>'form') %> + <%= raw select_for_folders("","parent_folder",@folders,t(:parent_folder),true) %> + <%= raw simple_input_field("folder",t(:folder_to_create),"") %> + <%= raw form_button(t(:create),'tick.png') %> + + <%= form_tag({:controller=>'folders',:action=>'delete'},:class=>'form') %> + <%= raw select_for_folders("","folder",@folders,t(:folder_to_delete),true) %> + <%= raw form_button(t(:delete),'cross.png') %> + +
+
+ <%= form_tag({:controller=>'folders',:action=>'sub_un_scribe'},:class=>'form') %> + <%= raw multi_select("", 'folders_to_subscribe[]', @folders, @folders,t(:folders_subscribed),:id,"",{:text => [:parent,:delim,:name]}) %> + <%= raw form_button(t(:subscribe_unsubscribe),'tick.png') %> + +
+
+
+
+ diff --git a/themes/olive/views/layouts/application.html.erb b/themes/olive/views/layouts/application.html.erb index 65c9dd9..d0a257b 100755 --- a/themes/olive/views/layouts/application.html.erb +++ b/themes/olive/views/layouts/application.html.erb @@ -3,7 +3,10 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - <%= t(:mailr) %> + + <%= t(:mailr) %> + <%= yield :title %> + <%=stylesheet_link_tag current_theme_stylesheet_path('base') %> @@ -12,14 +15,24 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" <%=javascript_include_tag :defaults %> - +
-
<%= yield %>
+
+
+ <% flash.each do |key, msg| %> + <% unless msg.blank? %> + <%= content_tag(:div,(content_tag :p, msg), :class => "message #{key.to_s}" )%> + <%= flash[key.to_sym]='' %> + <% end %> + <% end %> +
+ <%= yield %> +

diff --git a/themes/olive/views/messages/compose.html.erb b/themes/olive/views/messages/compose.html.erb new file mode 100755 index 0000000..12e8795 --- /dev/null +++ b/themes/olive/views/messages/compose.html.erb @@ -0,0 +1,19 @@ +<% content_for :sidebar do %> +<%= render :partial => 'folders/list' %> +<% end %> + +<% content_for :title do %> +- <%= t(:compose) %> +<% end %> + +
+
+ <%= raw main_navigation(:compose) %> +
+
+ <%= form_tag({:controller=>'messages', :action=>'ops'})%> + + +
+
+ diff --git a/themes/olive/views/messages/index.html.erb b/themes/olive/views/messages/index.html.erb index 74660c5..96a1c17 100755 --- a/themes/olive/views/messages/index.html.erb +++ b/themes/olive/views/messages/index.html.erb @@ -1,26 +1,23 @@ +<% content_for :sidebar do %> +<%= render :partial => 'folders/list' %> +<% end %> -<%= link_to t(:refresh), :controller => 'messages', :action => 'refresh' %> +<% content_for :title do %> +- <%= t(:messages) %> +<% end %> + +
+
+ <%= raw main_navigation(:messages) %> +
+
+ <%= form_tag({:controller=>'messages', :action=>'ops'})%> + + +
+

Current: <%= pretty_folder_name(@current_folder) %>

<%= @current_folder.inspect %> <%= Time.now - @current_folder.msgs_updated_at %> - -

Folders

-<% if @folders.size.zero? %> -No folders. -<% else %> -
    -<% @folders.each do |f|%> -<% if @selected_folder.upcase == f.name.upcase %> -
  • <%= folder_link(f) %>
  • -<% else %> -
  • <%= folder_link(f) %>
  • -<% end %> -<% end %> -
-<% end %> - -<%= link_to t(:logout), :controller => 'user', :action => 'logout' %> - - diff --git a/themes/olive/views/prefs/index.html.erb b/themes/olive/views/prefs/index.html.erb new file mode 100755 index 0000000..de2d8dc --- /dev/null +++ b/themes/olive/views/prefs/index.html.erb @@ -0,0 +1,18 @@ +<% content_for :sidebar do %> +<%= render :partial => 'folders/list' %> +<% end %> + +<% content_for :title do %> +- <%= t(:preferences) %> +<% end %> + +
+
+ <%= raw main_navigation(:prefs) %> +
+
+ <%= form_tag({:controller=>'messages', :action=>'ops'})%> + + +
+
diff --git a/themes/olive/views/user/setup.html.erb b/themes/olive/views/user/setup.html.erb index 6c17f5f..4791ae7 100755 --- a/themes/olive/views/user/setup.html.erb +++ b/themes/olive/views/user/setup.html.erb @@ -13,7 +13,7 @@ <%= raw form_field(@user,"first_name",nil,"Joe","") %> <%= raw form_field(@user,"last_name",nil,"Doe","") %> <%= raw form_field(@server,"name","server_name","domain.domain","") %> - <%= raw form_button("send") %> + <%= raw form_button(t(:send),"tick.png") %>