master
Wojciech Todryk 2012-03-24 13:23:34 +01:00
parent 7de07db812
commit 0daf487816
125 changed files with 1629 additions and 482 deletions

0
Gemfile Normal file → Executable file
View File

0
Gemfile.lock Normal file → Executable file
View File

0
Rakefile Normal file → Executable file
View File

0
app/assets/images/glyphicons-halflings-white.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

0
app/assets/images/glyphicons-halflings.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

0
app/assets/images/rails.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

0
app/assets/javascripts/application.js Normal file → Executable file
View File

0
app/assets/javascripts/bootstrap.min.js vendored Normal file → Executable file
View File

10
app/assets/javascripts/mailr.js Executable file
View File

@ -0,0 +1,10 @@
$(function() {
console.log("ready");
$("#toggleall").click(function() {
var checked_status = this.checked;
jQuery("input[type='checkbox']").each(function() {
this.checked = checked_status;
});
});
});

0
app/assets/stylesheets/application.css Normal file → Executable file
View File

0
app/assets/stylesheets/bootstrap-responsive.min.css vendored Normal file → Executable file
View File

4
app/assets/stylesheets/bootstrap.min.css vendored Normal file → Executable file
View File

@ -220,8 +220,8 @@ table .span9{float:none;width:684px;margin-left:0;}
table .span10{float:none;width:764px;margin-left:0;}
table .span11{float:none;width:844px;margin-left:0;}
table .span12{float:none;width:924px;margin-left:0;}
[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;*margin-right:.3em;}[class^="icon-"]:last-child,[class*=" icon-"]:last-child{*margin-left:0;}
.icon-white{background-image:url("../img/glyphicons-halflings-white.png");}
[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;line-height:14px;vertical-align:text-top;background-image:url("/assets/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;*margin-right:.3em;}[class^="icon-"]:last-child,[class*=" icon-"]:last-child{*margin-left:0;}
.icon-white{background-image:url("/assets/glyphicons-halflings-white.png");}
.icon-glass{background-position:0 0;}
.icon-music{background-position:-24px 0;}
.icon-search{background-position:-48px 0;}

26
app/assets/stylesheets/mailr.css.sass Normal file → Executable file
View File

@ -1,7 +1,33 @@
body.simple
margin-top: 20px
margin-bottom: 20px
#footer-simple
text-align: center
.top-pix18
margin-top: 18px
body.application
margin-top: 10px
margin-bottom: 10px
#sidebar
.logo
img
margin-bottom: 10px
p.version
text-align: center
tr.unseen
font-weight: bold
.bottom-pix18
margin-bottom: 18px
table.header
td.field_name
text-align: right
font-weight: bold
padding-right: 10px

View File

@ -2,8 +2,9 @@ require 'yaml'
class ApplicationController < ActionController::Base
protect_from_forgery
#logger.custom("session",session.inspect)
#protect_from_forgery
before_filter :load_settings,:current_user,:set_locale
#before_filter :plugins_configuration
@ -32,13 +33,14 @@ class ApplicationController < ActionController::Base
end
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
@current_user ||= User.find(session[:user_id]) if session[:user_id]
logger.custom("current_user",@current_user.inspect)
end
def check_current_user
if @current_user.nil?
session["return_to"] = request.fullpath
redirect_to :controller => 'user', :action => 'login'
redirect_to :controller => 'user', :action => 'login'
return false
end
end

View File

@ -3,16 +3,16 @@ require 'imap_session'
class FoldersController < ApplicationController
include ImapMailboxModule
include ImapMailboxModule
include ImapSessionModule
before_filter :check_current_user,:selected_folder, :get_current_folders
before_filter :check_current_user,:selected_folder, :get_current_folders
before_filter :open_imap_session, :except => [:index,:show_hide,:system]
after_filter :close_imap_session, :except => [:index,:show_hide,:system]
before_filter :get_folders
before_filter :prepare_buttons_to_folders
#before_filter :prepare_buttons_to_folders
#theme :theme_resolver
@ -153,16 +153,16 @@ class FoldersController < ApplicationController
protected
def prepare_buttons_to_folders
@buttons = []
@buttons << {:text => 'show_hide',:scope=>'folder',:image => 'flag.png'}
@buttons << {:text => 'refresh',:scope=>'folder',:image => 'refresh.png'}
end
#def prepare_buttons_to_folders
#@buttons = []
#@buttons << {:text => 'show_hide',:scope=>'folder',:image => 'flag.png'}
#@buttons << {:text => 'refresh',:scope=>'folder',:image => 'refresh.png'}
#end
def get_folders
@folders = @current_user.folders
@folders_shown = @current_user.folders.shown
#@folders_system = @current_user.folders.sys
@folders_system = @current_user.folders.sys
@current_user.folders.inbox.first.nil? ? @folder_inbox = "" : @folder_inbox = @current_user.folders.inbox.first.id
@current_user.folders.drafts.first.nil? ? @folder_drafts = "" : @folder_drafts = @current_user.folders.drafts.first.id
@current_user.folders.sent.first.nil? ? @folder_sent = "" : @folder_sent = @current_user.folders.sent.first.id

View File

@ -9,13 +9,14 @@ class InternalController < ApplicationController
ERRORS = [
:internal_server_error,
:not_found,
:unprocessable_entity
:unprocessable_entity,
:allready_configured
].freeze
ERRORS.each do |e|
define_method e do
@title = t(e,:scope=>:internal)
@error = t(e,:scope=>:internal)
flash[:error] = t(e,:scope=>:internal)
render 'error'
end
end
@ -29,7 +30,7 @@ class InternalController < ApplicationController
@title = t(:imap_error,:scope => :internal)
@error = params[:error] || t(:unspecified_error, :scope => :internal)
logger.error "!!! InternalControllerImapError: " + @error
render 'error'
render 'error'
end
def loginfailure
@ -39,12 +40,19 @@ class InternalController < ApplicationController
redirect_to :controller=>'user', :action => 'login'
end
def onlycanlogins
reset_session
flash[:error] = t(:only_can_logins,:scope=>:user)
@current_user = nil
redirect_to :controller=>'user', :action => 'login'
end
#def onlycanlogins
#reset_session
#flash[:error] = t(:only_can_logins,:scope=>:user)
#@current_user = nil
#redirect_to :controller=>'user', :action => 'login'
#end
#def onlycanlogins
#reset_session
#flash[:error] = t(:allready_configured,:scope=>:user)
#@current_user = nil
#redirect_to :controller=>'user', :action => 'login'
#end
def about
render 'internal/about', :layout => 'application'

View File

@ -16,9 +16,9 @@ class MessagesController < ApplicationController
before_filter :prepare_compose_buttons, :only => [:compose]
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]
#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
@ -129,7 +129,9 @@ class MessagesController < ApplicationController
end
end
else
part = Mail::Part.new(mail)
logger.custom('mail',mail.inspect)
part = mail
#part = Mail::Part.new(mail)
part.idx = 0
part.parent_id = @message.uid
if part.isText?
@ -175,7 +177,8 @@ class MessagesController < ApplicationController
if mail.multipart? == true
attachments = mail.attachments
else
attachments << Mail::Part.new(mail)
#attachments << Mail::Part.new(mail)
attachments << mail
end
a = attachments[params[:idx].to_i]
headers['Content-type'] = a.main_type + "/" + a.sub_type
@ -188,23 +191,23 @@ class MessagesController < ApplicationController
protected
def prepare_multi2_buttons
@multi2_buttons = []
@multi2_buttons << {:text => 'trash',: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_multi2_buttons
#@multi2_buttons = []
#@multi2_buttons << {:text => 'trash',: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_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 => 'trash',:scope=>:show,:image => 'trash.png'}
@multi3_buttons << {:text => 'reply',:scope=>:show,:image => 'reply.png'}
end
#def prepare_multi3_buttons
#@multi3_buttons = []
#@multi3_buttons << {:text => 'show_header',:scope=>:show,:image => 'zoom.png'}
#@multi3_buttons << {:text => 'trash',:scope=>:show,:image => 'trash.png'}
#@multi3_buttons << {:text => 'reply',:scope=>:show,:image => 'reply.png'}
#end
end

View File

@ -4,6 +4,12 @@ class UserController < ApplicationController
layout "simple"
def login
# database empty redirect to setup screen
users = User.all
if users.count.zero?
redirect_to :controller => 'user', :action => 'setup'
return false
end
end
def logout
@ -14,29 +20,31 @@ class UserController < ApplicationController
def authenticate
users = User.all
if users.count.zero?
redirect_to :controller => 'user', :action => 'setup'
return false
end
# check if user can use application
if not $defaults["only_can_logins"].nil?
if not $defaults["only_can_logins"].include?(params[:user][:login])
redirect_to :controller => 'internal', :action => 'onlycanlogins'
flash[:error] = t(:only_can_logins,:scope=>:user)
redirect_to :action => 'login'
return false
end
end
user = User.find_by_login(params[:user][:login])
if user.nil?
redirect_to :action => 'unknown' ,:login=> params[:user][:login]
flash[:error] = t(:login_failure,:scope=>:user)
redirect_to :action => 'login'
return false
else
session[:user_id] = user.id
session[:user_id] = user.id
user.set_cached_password(session,params[:user][:password])
if session["return_to"]
redirect_to(session["return_to"])
redirect = session["return_to"]
session["return_to"] = nil
redirect_to(redirect)
else
redirect_to :controller=> 'messages', :action=> 'index'
end
@ -44,17 +52,19 @@ class UserController < ApplicationController
end
end
def loginfailure
end
#def loginfailure
#end
def setup
users = User.all
if !users.count.zero?
redirect_to :controller => 'internal', :action => 'allready_configured'
return false
end
@user = User.new
@server = Server.new
end
def unknown
end
def create
@user = User.new
@ -62,7 +72,7 @@ class UserController < ApplicationController
@user.first_name = params[:user][:first_name]
@user.last_name = params[:user][:last_name]
@server = Server.new
@server = Server.new
@server.name = params[:server][:name]
if @user.valid? and @server.valid?

View File

@ -2,333 +2,333 @@ require 'iconv'
module ApplicationHelper
def form_field(object,field,flabel,example,val)
model_name = eval(object.class.model_name)
html = ""
html << "<div class=\"param_group\">"
if not object.errors[field.to_sym].empty?
html << "<div class=\"fieldWithErrors\">"
#def form_field(object,field,flabel,example,val)
#model_name = eval(object.class.model_name)
#html = ""
#html << "<div class=\"param_group\">"
#if not object.errors[field.to_sym].empty?
#html << "<div class=\"fieldWithErrors\">"
end
#end
html << "<label class=\"label\">"
flabel.nil? ? html << model_name.human_attribute_name(field) : html << t(flabel.to_sym)
html << "</label>"
#html << "<label class=\"label\">"
#flabel.nil? ? html << model_name.human_attribute_name(field) : html << t(flabel.to_sym)
#html << "</label>"
if not object.errors[field.to_sym].empty?
html << "<span class=\"error\"> "
html << object.errors[field.to_sym].to_s
html << "</span>"
html << "</div>"
end
html << "<input id=\""
html << object.class.name.downcase+"_"+field
html << "\""
html << " name=\"#{object.class.name.downcase}[#{field}]\""
html << " type=\"text\" class=\"text_field\" value=\""
value = val || object.instance_eval(field) || ""
html << value
html << "\"/>"
html << "<span class=\"description\">"
html << t(:example,:scope=>:common)
html << ": "
html << example
html << "</span>"
html << "</div>"
#if not object.errors[field.to_sym].empty?
#html << "<span class=\"error\"> "
#html << object.errors[field.to_sym].to_s
#html << "</span>"
#html << "</div>"
#end
#html << "<input id=\""
#html << object.class.name.downcase+"_"+field
#html << "\""
#html << " name=\"#{object.class.name.downcase}[#{field}]\""
#html << " type=\"text\" class=\"text_field\" value=\""
#value = val || object.instance_eval(field) || ""
#html << value
#html << "\"/>"
#html << "<span class=\"description\">"
#html << t(:example,:scope=>:common)
#html << ": "
#html << example
#html << "</span>"
#html << "</div>"
end
def show_param_view(object,field,value)
model_name = eval(object.class.model_name)
html = ""
html << "<div class=\"group clearfix\">"
html << "<label class=\"label\">#{model_name.human_attribute_name(field)}: </label>"
html << value
html << "</div>"
html
end
def area_field(object,field,flabel,example,val,cols,rows)
model_name = eval(object.class.model_name)
html = ""
html << "<div class=\"group\">"
if not object.errors[field.to_sym].empty?
html << "<div class=\"fieldWithErrors\">"
end
html << "<label class=\"label\">"
flabel.nil? ? html << model_name.human_attribute_name(field) : html << t(flabel.to_sym)
html << "</label>"
if not object.errors[field.to_sym].empty?
html << "<span class=\"error\">"
html << object.errors[field.to_sym].to_s
html << "</span>"
html << "</div>"
end
name = object.class.name.downcase + '[' + field + ']'
id = object.class.name.downcase+"_"+field
value = val || object.instance_eval(field) || ""
html << "<textarea id=\"#{id}\" name=\"#{name}\" class=\"text_area\" cols=\"#{cols}\" rows=\"#{rows}\">#{value}</textarea>"
desc = t(:example,:scope=>:common) + ": " + example
html << "<span class=\"description\">#{desc}</span>"
html << "</div>"
end
def form_button(text,image)
html = ""
html << "<div class=\"group\">"
html << "<button class=\"button\" type=\"submit\">"
html << "<img src=\""
html << current_theme_image_path(image)
html << "\" alt=\""
html << t(text.to_sym)
html << "\" />"
html << t(text.to_sym)
html << "</button></div>"
end
def single_action(text,scope,image)
html = ""
html << "<div class=\"actiongroup clearfix\">"
html << "<button class=\"button\" name=\"#{text}\" type=\"submit\">"
html << "<img src=\""
html << current_theme_image_path(image)
html << "\" alt=\""
html << t(text.to_sym, :scope => scope.to_sym)
html << "\" />"
html << t(text.to_sym, :scope => scope.to_sym)
html << "</button></div>"
end
def single_action_onclick(text,scope,image,onclick)
html = ""
html << "<div class=\"actiongroup clearfix\">"
html << "<button class=\"button\" type=\"submit\" onclick=\"window.location='"
html << onclick
html << "'\">"
html << "<img src=\""
html << current_theme_image_path(image)
html << "\" alt=\""
html << t(text.to_sym, :scope => scope.to_sym)
html << "\" />"
html << t(text.to_sym, :scope => scope.to_sym)
html << "</button>"
html << "</div>"
end
def group_action(buttons)
html = ""
html << "<div class=\"actiongroup clearfix\">"
buttons.each do |b|
html << "<button class=\"button\" type=\"submit\" name=\"#{b[:text]}\">"
html << "<img src=\""
html << current_theme_image_path(b[:image])
html << "\" alt=\""
html << t(b[:text].to_sym,:scope=>b[:scope].to_sym)
html << "\" />"
html << t(b[:text].to_sym,:scope=>b[:scope].to_sym)
html << "</button> "
end
html << "</div>"
end
def group_action_text(buttons,text)
html = ""
html << "<div class=\"group\">"
buttons.each do |b|
html << "<button class=\"button\" type=\"submit\" name=\"#{b[:text]}\">"
html << "<img src=\""
html << current_theme_image_path(b[:image])
html << "\" alt=\""
html << t(b[:text].to_sym,:scope=>b[:scope].to_sym)
html << "\" />"
html << t(b[:text].to_sym,:scope=>b[:scope].to_sym)
html << "</button> "
end
html << text
html << "</div>"
end
def form_buttons(buttons)
html = ""
html << "<div class=\"group\">"
buttons.each do |b|
html << "<button class=\"button\" type=\"submit\" name=\"#{b[:text]}\">"
html << "<img src=\""
html << current_theme_image_path(b[:image])
html << "\" alt=\""
html << t(b[:text].to_sym)
html << "\" />"
html << t(b[:text].to_sym)
html << "</button> "
end
html << "</div>"
end
def form_button_value(text,image,onclick)
html = ""
html << "<div class=\"group\">"
html << "<button class=\"button\" type=\"submit\" onclick=\"window.location='"
html << onclick
html << "'\">"
html << "<img src=\""
html << current_theme_image_path(image)
html << "\" alt=\""
html << text
html << "\" />"
html << t(text.to_sym)
html << "</button></div>"
end
def simple_input_field(name,id,label,value)
html = ""
html << "<div class=\"param_group\">"
html << "<label class=\"label\">#{label}</label>"
html << "<input name=\"#{name}[#{id}]\" id=\"#{name}_#{id} class=\"text_field\" type=\"text\" value=\"#{value}\">"
html << "</div>"
end
def select_field(name,object,label,blank)
html = ""
html << "<div class=\"group\">"
html << "<label class=\"label\">#{label}</label>"
html << select(name, name, object.all.collect {|p| [ p.name, p.id ] }, { :include_blank => (blank == true ? true : false)})
html << "</div>"
end
def select_field_table(object,field,table_choices,choice,blank)
model_name = eval(object.class.model_name)
html = ""
html << "<div class=\"param_group\">"
html << "<label class=\"label\">#{model_name.human_attribute_name(field)}</label>"
html << select(object.class.to_s.downcase, field, options_for_select(table_choices,choice), {:include_blank => blank})
html << "</div>"
end
def select_field_table_t(object,field,table_choices,choice,blank)
model_name = eval(object.class.model_name)
html = ""
html << "<div class=\"param_group\">"
html << "<label class=\"label\">#{model_name.human_attribute_name(field)}</label>"
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 << "</div>"
end
#def form_simle_field(name,label,value)
# html = ""
# html << "<div class=\"group\">"
# html << "<label class=\"label\">#{label}</label>"
# html << "<input class=\"text_field\" type=\"text\" value=\"#{value}\">"
# html << "</div>"
#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 )
#def show_param_view(object,field,value)
#model_name = eval(object.class.model_name)
#html = ""
#html << "<div class=\"group clearfix\">"
#html << "<label class=\"label\">#{model_name.human_attribute_name(field)}: </label>"
#html << value
#html << "</div>"
#html
#end
def single_navigation(label,scope)
s = ""
s += "<ul>"
s += "<li class=\"first active\">#{link_to(t(label,:scope=>scope),'#')}</li>"
s += "<li class=\"last\">&nbsp;</li>"
s += "</ul>"
end
#def area_field(object,field,flabel,example,val,cols,rows)
#model_name = eval(object.class.model_name)
#html = ""
#html << "<div class=\"group\">"
def main_navigation(active)
instance_variable_set("@#{active}", "active")
s = ""
s += "<ul>"
s += "<li class=\"first #{@messages_tab}\">#{link_to( t(:messages,:scope=>:message), messages_path )}</li>"
s += "<li class=\"#{@compose_tab}\">#{link_to( t(:compose,:scope=>:compose), compose_path )}</li>"
s += "<li class=\"#{@folders_tab}\">#{link_to( t(:folders,:scope=>:folder), folders_path )}</li>"
s += "<li class=\"#{@contacts_tab}\">#{link_to( t(:contacts,:scope=>:contact), contacts_path )}</li>"
s += "<li class=\"#{@prefs_tab}\">#{link_to( t(:prefs,:scope=>:prefs), prefs_look_path )}</li>"
s += "<li class=\"last #{@links_tab}\">#{link_to( t(:links,:scope=>:link), links_path )}</li>"
s += "</ul>"
end
#if not object.errors[field.to_sym].empty?
#html << "<div class=\"fieldWithErrors\">"
#end
def prefs_navigation(active)
instance_variable_set("@#{active}", "active")
s = ""
s += "<ul>"
s += "<li class=\"first #{@look_tab}\">#{link_to( t(:look,:scope=>:prefs), prefs_look_path )}</li>"
s += "<li class=\"#{@identity_tab}\">#{link_to( t(:identity,:scope=>:prefs), prefs_identity_path )}</li>"
s += "<li class=\"last #{@servers_tab}\">#{link_to( t(:servers,:scope=>:prefs), prefs_servers_path )}</li>"
s += "</ul>"
end
#html << "<label class=\"label\">"
#flabel.nil? ? html << model_name.human_attribute_name(field) : html << t(flabel.to_sym)
#html << "</label>"
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 << "<option value=\"#{option_value}\"#{selected}>&nbsp;&nbsp;#{option_content}&nbsp;&nbsp;</option>\n"
end
"<div class=\"param_group\"><label class=\"label\">#{label}</label><select multiple=\"multiple\" size=10 id=\"#{id}\" name=\"#{name}\">\n#{options}</select></div>"
end
#if not object.errors[field.to_sym].empty?
#html << "<span class=\"error\">"
#html << object.errors[field.to_sym].to_s
#html << "</span>"
#html << "</div>"
#end
def force_charset(text)
begin
Iconv.iconv("UTF-8",$defaults["msg_unknown_charset"],text)
rescue
text
end
end
#name = object.class.name.downcase + '[' + field + ']'
#id = object.class.name.downcase+"_"+field
#value = val || object.instance_eval(field) || ""
#html << "<textarea id=\"#{id}\" name=\"#{name}\" class=\"text_area\" cols=\"#{cols}\" rows=\"#{rows}\">#{value}</textarea>"
def content_for_sidebar
s = render :partial => 'sidebar/logo'
s += render :partial => 'folders/list'
s += render :partial => 'sidebar/calendar_view'
s += render :partial => 'internal/version'
s
end
#desc = t(:example,:scope=>:common) + ": " + example
#html << "<span class=\"description\">#{desc}</span>"
def boolean_answer(answer)
answer == true ? t(:true_answer,:scope=>:common) : t(:false_answer,:scope=>:common)
end
#html << "</div>"
#end
#def form_button(text,image)
#html = ""
#html << "<div class=\"group\">"
#html << "<button class=\"button\" type=\"submit\">"
#html << "<img src=\""
#html << current_theme_image_path(image)
#html << "\" alt=\""
#html << t(text.to_sym)
#html << "\" />"
#html << t(text.to_sym)
#html << "</button></div>"
#end
#def single_action(text,scope,image)
#html = ""
#html << "<div class=\"actiongroup clearfix\">"
#html << "<button class=\"button\" name=\"#{text}\" type=\"submit\">"
#html << "<img src=\""
#html << current_theme_image_path(image)
#html << "\" alt=\""
#html << t(text.to_sym, :scope => scope.to_sym)
#html << "\" />"
#html << t(text.to_sym, :scope => scope.to_sym)
#html << "</button></div>"
#end
#def single_action_onclick(text,scope,image,onclick)
#html = ""
#html << "<div class=\"actiongroup clearfix\">"
#html << "<button class=\"button\" type=\"submit\" onclick=\"window.location='"
#html << onclick
#html << "'\">"
#html << "<img src=\""
#html << current_theme_image_path(image)
#html << "\" alt=\""
#html << t(text.to_sym, :scope => scope.to_sym)
#html << "\" />"
#html << t(text.to_sym, :scope => scope.to_sym)
#html << "</button>"
#html << "</div>"
#end
#def group_action(buttons)
#html = ""
#html << "<div class=\"actiongroup clearfix\">"
#buttons.each do |b|
#html << "<button class=\"button\" type=\"submit\" name=\"#{b[:text]}\">"
#html << "<img src=\""
#html << current_theme_image_path(b[:image])
#html << "\" alt=\""
#html << t(b[:text].to_sym,:scope=>b[:scope].to_sym)
#html << "\" />"
#html << t(b[:text].to_sym,:scope=>b[:scope].to_sym)
#html << "</button> "
#end
#html << "</div>"
#end
#def group_action_text(buttons,text)
#html = ""
#html << "<div class=\"group\">"
#buttons.each do |b|
#html << "<button class=\"button\" type=\"submit\" name=\"#{b[:text]}\">"
#html << "<img src=\""
#html << current_theme_image_path(b[:image])
#html << "\" alt=\""
#html << t(b[:text].to_sym,:scope=>b[:scope].to_sym)
#html << "\" />"
#html << t(b[:text].to_sym,:scope=>b[:scope].to_sym)
#html << "</button> "
#end
#html << text
#html << "</div>"
#end
#def form_buttons(buttons)
#html = ""
#html << "<div class=\"group\">"
#buttons.each do |b|
#html << "<button class=\"button\" type=\"submit\" name=\"#{b[:text]}\">"
#html << "<img src=\""
#html << current_theme_image_path(b[:image])
#html << "\" alt=\""
#html << t(b[:text].to_sym)
#html << "\" />"
#html << t(b[:text].to_sym)
#html << "</button> "
#end
#html << "</div>"
#end
#def form_button_value(text,image,onclick)
#html = ""
#html << "<div class=\"group\">"
#html << "<button class=\"button\" type=\"submit\" onclick=\"window.location='"
#html << onclick
#html << "'\">"
#html << "<img src=\""
#html << current_theme_image_path(image)
#html << "\" alt=\""
#html << text
#html << "\" />"
#html << t(text.to_sym)
#html << "</button></div>"
#end
#def simple_input_field(name,id,label,value)
#html = ""
#html << "<div class=\"param_group\">"
#html << "<label class=\"label\">#{label}</label>"
#html << "<input name=\"#{name}[#{id}]\" id=\"#{name}_#{id} class=\"text_field\" type=\"text\" value=\"#{value}\">"
#html << "</div>"
#end
#def select_field(name,object,label,blank)
#html = ""
#html << "<div class=\"group\">"
#html << "<label class=\"label\">#{label}</label>"
#html << select(name, name, object.all.collect {|p| [ p.name, p.id ] }, { :include_blank => (blank == true ? true : false)})
#html << "</div>"
#end
#def select_field_table(object,field,table_choices,choice,blank)
#model_name = eval(object.class.model_name)
#html = ""
#html << "<div class=\"param_group\">"
#html << "<label class=\"label\">#{model_name.human_attribute_name(field)}</label>"
#html << select(object.class.to_s.downcase, field, options_for_select(table_choices,choice), {:include_blank => blank})
#html << "</div>"
#end
#def select_field_table_t(object,field,table_choices,choice,blank)
#model_name = eval(object.class.model_name)
#html = ""
#html << "<div class=\"param_group\">"
#html << "<label class=\"label\">#{model_name.human_attribute_name(field)}</label>"
#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 << "</div>"
#end
##def form_simle_field(name,label,value)
## html = ""
## html << "<div class=\"group\">"
## html << "<label class=\"label\">#{label}</label>"
## html << "<input class=\"text_field\" type=\"text\" value=\"#{value}\">"
## html << "</div>"
##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 single_navigation(label,scope)
#s = ""
#s += "<ul>"
#s += "<li class=\"first active\">#{link_to(t(label,:scope=>scope),'#')}</li>"
#s += "<li class=\"last\">&nbsp;</li>"
#s += "</ul>"
#end
#def main_navigation(active)
#instance_variable_set("@#{active}", "active")
#s = ""
#s += "<ul>"
#s += "<li class=\"first #{@messages_tab}\">#{link_to( t(:messages,:scope=>:message), messages_path )}</li>"
#s += "<li class=\"#{@compose_tab}\">#{link_to( t(:compose,:scope=>:compose), compose_path )}</li>"
#s += "<li class=\"#{@folders_tab}\">#{link_to( t(:folders,:scope=>:folder), folders_path )}</li>"
#s += "<li class=\"#{@contacts_tab}\">#{link_to( t(:contacts,:scope=>:contact), contacts_path )}</li>"
#s += "<li class=\"#{@prefs_tab}\">#{link_to( t(:prefs,:scope=>:prefs), prefs_look_path )}</li>"
#s += "<li class=\"last #{@links_tab}\">#{link_to( t(:links,:scope=>:link), links_path )}</li>"
#s += "</ul>"
#end
#def prefs_navigation(active)
#instance_variable_set("@#{active}", "active")
#s = ""
#s += "<ul>"
#s += "<li class=\"first #{@look_tab}\">#{link_to( t(:look,:scope=>:prefs), prefs_look_path )}</li>"
#s += "<li class=\"#{@identity_tab}\">#{link_to( t(:identity,:scope=>:prefs), prefs_identity_path )}</li>"
#s += "<li class=\"last #{@servers_tab}\">#{link_to( t(:servers,:scope=>:prefs), prefs_servers_path )}</li>"
#s += "</ul>"
#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 << "<option value=\"#{option_value}\"#{selected}>&nbsp;&nbsp;#{option_content}&nbsp;&nbsp;</option>\n"
#end
#"<div class=\"param_group\"><label class=\"label\">#{label}</label><select multiple=\"multiple\" size=10 id=\"#{id}\" name=\"#{name}\">\n#{options}</select></div>"
#end
#def force_charset(text)
#begin
#Iconv.iconv("UTF-8",$defaults["msg_unknown_charset"],text)
#rescue
#text
#end
#end
#def content_for_sidebar
#s = render :partial => 'sidebar/logo'
#s += render :partial => 'folders/list'
#s += render :partial => 'sidebar/calendar_view'
#s += render :partial => 'internal/version'
#s
#end
#def boolean_answer(answer)
#answer == true ? t(:true_answer,:scope=>:common) : t(:false_answer,:scope=>:common)
#end
end

17
app/helpers/contacts_helper.rb Executable file
View File

@ -0,0 +1,17 @@
module ContactsHelper
def contacts_table_header
html = ""
$defaults["contacts_table_fields"].each do |f|
html << "<th>"
if params[:sort_field] == f
params[:sort_dir].nil? ? dir = 'desc' : dir = nil
end
html << link_to(Contact.human_attribute_name(f), {:controller => 'contacts',:action => 'index',:sort_field => f,:sort_dir => dir}, {:class=>"header"})
html << "</th>"
end
html
end
end

66
app/helpers/folder_helper.rb Executable file
View File

@ -0,0 +1,66 @@
module FolderHelper
def folder_link(folder)
folder.parent.empty? ? name = folder.name : name = folder.parent.gsub(/\./,'#') + "#" + folder.name
if folder.isInbox?
name_shown = t(:inbox_name,:scope => :folder)
elsif folder.isSent?
name_shown = t(:sent_name,:scope => :folder)
elsif folder.isDrafts?
name_shown = t(:drafts_name,:scope => :folder)
elsif folder.isTrash?
name_shown = t(:trash_name,:scope => :folder)
else
name_shown = folder.name.capitalize
end
if folder.isTrash?
if not folder.total.zero?
name_shown += " <button class=\"btn btn-mini btn-danger\" onclick=\"window.location='#{folders_emptybin_path}'\" href=\"#\">#{t(:emptybin,:scope=>:folder)}</button>"
#name_shown += raw link_to(t(:emptybin,:scope=>:folder),folders_emptybin_path)
#name_shown += ')'
end
else
if !folder.unseen.zero?
name_shown += ' (' + folder.unseen.to_s + ')'
end
end
link_to name_shown.html_safe, folders_select_path(:id => name)
end
def pretty_folder_name(folder)
if folder.nil?
t(:no_selected,:scope=>:folder)
else
if folder.isInbox?
t(:inbox_name,:scope => :folder)
elsif folder.isSent?
t(:sent_name,:scope => :folder)
elsif folder.isDrafts?
t(:drafts_name,:scope => :folder)
elsif folder.isTrash?
t(:trash_name,:scope => :folder)
else
folder.name.capitalize
end
end
end
def select_for_folders(name,id,collection,label,choice,blank)
html = ""
html << "<div class=\"param_group\">"
html << "<label class=\"label\">#{label}</label>"
html << simple_select_for_folders(name,id,collection,choice,blank)
html << "</div>"
end
def simple_select_for_folders(name,id,collection,choice,blank)
html = ""
html << select(name , id, options_from_collection_for_select(collection, 'id', 'full_name', choice),{ :include_blank => (blank == true ? true : false)})
html
end
end

2
app/helpers/internal_helper.rb Executable file
View File

@ -0,0 +1,2 @@
module InternalHelper
end

17
app/helpers/links_helper.rb Executable file
View File

@ -0,0 +1,17 @@
module LinksHelper
def links_table_header
html = ""
$defaults["links_table_fields"].each do |f|
html << "<th>"
if params[:sort_field] == f
params[:sort_dir].nil? ? dir = 'desc' : dir = nil
end
html << link_to(Link.human_attribute_name(f), {:controller => 'links',:action => 'index',:sort_field => f,:sort_dir => dir}, {:class=>"header"})
html << "</th>"
end
html
end
end

118
app/helpers/messages_helper.rb Executable file
View File

@ -0,0 +1,118 @@
module MessagesHelper
def size_formatter(size)
if size <= 2**10
"#{size} #{t(:bytes,:scope=>:common)}"
elsif size <= 2**20
sprintf("%.1f #{t(:kbytes,:scope=>:common)}",size.to_f/2**10)
else
sprintf("%.1f #{t(:mbytes,:scope=>:common)}",size.to_f/2**20)
end
end
def date_formatter(date)
date.nil? ? t(:no_date,:scope=>:message) : date.strftime("%Y-%m-%d %H:%M")
end
def address_formatter(addr,op)
s = ""
return s if addr.nil?
length = $defaults["msg_address_length"].to_i
case op
when :index
fs = addr.gsub(/\"/,"").split(/</)
fs[0].size.zero? ? s = fs[1] : s = fs[0]
s.length >= length ? s = s[0,length]+"..." : s
return h(s)
when :show
#addr = addr[0].charseted.gsub(/\"/,"")
return h(addr.gsub(/\"/,""))
when :raw
#fs = addr.gsub(/\"/,"").split(/</)
#fs[0].size.zero? ? s = fs[1] : s << fs[0] + " <" + fs[1] + ">"
s = h(addr)
return s
when :reply
return h(addr)
end
end
def body_formatter(body,op)
case op
when :reply
s = "\n\n\n"
body.gsub(/^\s+/,"").split(/\n/).each do |line|
s += ">" + line + "\n"
end
s
when :edit
return body
end
end
def subject_formatter(message,op)
case op
when :index
if message.subject.nil? or 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
end
link_to s,{:controller => 'messages', :action => 'show', :id => message.uid} , :title => message.subject
when :show
if message.subject.nil? or message.subject.size.zero?
t(:no_subject,:scope=>:message)
else
message.subject
end
when :reply
if message.nil? or message.size.zero?
t(:reply_string,:scope=>:show)
else
t(:reply_string,:scope=>:show) + " " + message
end
end
end
def attachment_formatter(message)
message.content_type =~ /^text\/plain/ ? "" : "<i class=\"icon-file\"></i>"
end
def headers_links
#if @current_folder.hasFullName?(@folder_sent_name) || @current_folder.hasFullName?(@folder_drafts_name)
if @current_folder == @sent_folder || @current_folder == @drafts_folder
fields = $defaults["msgs_sent_view_fields"]
else
fields = $defaults["msgs_inbox_view_fields"]
end
html = ""
fields.each do |f|
html << "<th>"
if params[:sort_field] == f
params[:sort_dir].nil? ? dir = 'desc' : dir = nil
end
html << link_to(Message.human_attribute_name(f), {:controller => 'messages',:action => 'index',:sort_field => f,:sort_dir => dir}, {:class=>"header"})
html << "</th>"
end
html
end
#def content_text_plain_for_render(text)
#html = "<pre class=\"clearfix\">"
##html << text.gsub!(/\r\n/,"\n")
#html << h(text)
#html << "</pre>"
#html
#end
def humanize_attr(object,attr)
model_name = eval(object.class.model_name)
return model_name.human_attribute_name(attr)
end
end

View File

@ -0,0 +1,2 @@
module MessagesOpsHelper
end

16
app/helpers/prefs_helper.rb Executable file
View File

@ -0,0 +1,16 @@
module PrefsHelper
def servers_table_header
html = ""
$defaults["servers_table_fields"].each do |f|
html << "<th>"
if params[:sort_field] == f
params[:sort_dir].nil? ? dir = 'desc' : dir = nil
end
html << link_to(Server.human_attribute_name(f), {:controller => 'prefs',:action => 'servers',:sort_field => f,:sort_dir => dir}, {:class=>"header"})
html << "</th>"
end
html
end
end

2
app/helpers/user_helper.rb Executable file
View File

@ -0,0 +1,2 @@
module UserHelper
end

0
app/mailers/.gitkeep Normal file → Executable file
View File

0
app/models/.gitkeep Normal file → Executable file
View File

0
app/models/link.rb Normal file → Executable file
View File

View File

@ -4,7 +4,7 @@ class User < ActiveRecord::Base
#acts_as_notes_owner
validates_presence_of :first_name,:last_name
validates_presence_of :first_name,:last_name,:login
validates_uniqueness_of :login
has_many :servers, :dependent => :destroy
has_one :prefs, :dependent => :destroy

View File

@ -0,0 +1,19 @@
- size ||= "btn-small"
- type ||= "btn-primary"
- icon ||= ""
- onclick ||= 'empty'
- def isOnclick(value)
- if value != 'empty'
- {:onclick => "#{value}"}
- else
- {}
%button{isOnclick(onclick),:class=>"btn #{size} #{type}",
:type=>"submit",
:name=>"#{name}"}
- if !icon.empty?
%i{:class=>"#{icon}"}
= caption

View File

@ -0,0 +1,6 @@
- size ||= "btn-small"
- type ||= "btn-primary"
%button{:class=>"btn #{size} #{type}",:type=>"submit",:onclick=>"window.location='#{url}'"}
%i{:class=>"#{icon}"}
= t(text.to_sym, :scope => scope.to_sym)

View File

@ -0,0 +1,6 @@
- size ||= "btn-small"
- type ||= "btn-primary"
%button{:class=>"btn #{size} #{type}",:type=>"submit", :name=>"#{name}"}
%i{:class=>"#{icon_class}"}
= text

View File

@ -1,8 +1,26 @@
- model = eval(object.class.model_name)
- model_string = object.class.model_name.downcase
- label.nil? ? model_label = model.human_attribute_name(attr) : model_label = t(label.to_sym)
.control-group
%label{:class=>"control-label",:for=>"#{attr}"}
= model_label
.controls
%input{:id=>"#{model}_#{attr}",:name=>"#{model}[#{attr}]"}
- val = value || object.instance_eval(attr) || ""
- if object.errors[attr.to_sym].empty?
.control-group
%label{:class=>"control-label",:for=>"#{attr}"}
= model_label
.controls
%input{:id=>"#{model_string}_#{attr}",:name=>"#{model_string}[#{attr}]",:value=>"#{val}"}
%p{:class=>"help-block"}
= t(:example,:scope=>:common)
= example
- else
.control-group.error
%label{:class=>"control-label",:for=>"#{attr}"}
= model_label
.controls
%input{:id=>"#{model_string}_#{attr}",:name=>"#{model_string}[#{attr}]",:value=>"#{val}"}
%span{:class=>"help-inline"}
= object.errors[attr.to_sym].to_s
%p{:class=>"help-block"}
= t(:example,:scope=>:common)
= example
-#= render :partial => "common/input_form_desc_field",:locals => {:object => @user,:attr => 'login',:label => nil,:example => 'joe.doe',:value => params[:user] ? params[:user][:login] : "" }

View File

@ -2,4 +2,7 @@
%label{:class=>"control-label",:for=>"#{attr}"}
= model.capitalize.constantize.human_attribute_name(attr)
.controls
%input{:id=>"#{model}_#{attr}",:name=>"#{model}[#{attr}]"}
%input{:type=>"text",:id=>"#{model}_#{attr}",:name=>"#{model}[#{attr}]"}
-#= render :partial => "common/input_form_field",:locals => { :model => 'user',:attr => 'login'}

View File

@ -0,0 +1,5 @@
.control-group
%label{:class=>"control-label",:for=>"#{attr}"}
= model.capitalize.constantize.human_attribute_name(attr)
.controls
%input{:type=>"password",:id=>"#{model}_#{attr}",:name=>"#{model}[#{attr}]"}

View File

@ -0,0 +1,2 @@
.logo
= link_to image_tag("logo.png",:alt=> t(:mailr,:scope=>:common)), root_path

View File

@ -0,0 +1,22 @@
- messages ||= ""
- compose ||= ""
- folders ||= ""
- contacts ||= ""
- prefs ||= ""
- links ||= ""
%ul{:class=>"nav nav-pills"}
%li{:class=>"#{messages}"}
%a{:href=>messages_path}
= t(:messages,:scope=>:message)
%li{:class=>"#{compose}"}
= link_to( t(:compose,:scope=>:compose), compose_path )
%li{:class=>"#{folders}"}
= link_to( t(:folders,:scope=>:folder), folders_path )
%li{:class=>"#{contacts}"}
= link_to( t(:contacts,:scope=>:contact), contacts_path )
%li{:class=>"#{prefs}"}
= link_to( t(:prefs,:scope=>:prefs), prefs_look_path )
%li{:class=>"#{links}"}
= link_to( t(:links,:scope=>:link), links_path )

View File

@ -0,0 +1,22 @@
%select{:multiple=>"multiple",:class=>"#{style}",:id=>"#{id}",:name=>"#{name}"}
- objects.each do |o|
- option_value = escape_once(o.send(value))
- option_text = [option_value]
- unless text.nil?
- option_text = []
- text.each do |t|
- option_text << o.send(t)
- option_text = option_text.join(joiner)
- option_text.gsub!(/^\./,'')
- if selected_objects.include?(o)
%option{:value=>"#{option_value}",:selected=>"selected"}
= option_text
- else
%option{:value=>"#{option_value}"}
= option_text
-#<%= raw multi_select("", 'folders_to_show[]', @folders, @folders_shown,t(:shown,:scope=>:folder),:id,"",{:text => [:parent,:delim,:name]}) %>
-#def multi_select(id, name, objects, selected_objects, label, value,joiner,content = {})

View File

@ -0,0 +1,5 @@
.control-group
%label{:class=>"control-label"}
= label
.controls
= raw simple_select_for_folders(name,id,collection,choice,blank)

View File

@ -0,0 +1,2 @@
%p{:class=>"version"}
= link_to (t(:version,:scope=>:common) + " " + $defaults["version"]),about_path

View File

@ -0,0 +1,8 @@
= content_for :sidebar do
= render :partial => "sidebar/sidebar"
= content_for :title do
\-
= t(:contacts,:scope=>:contact)
= render :partial => 'common/main_navigation', :locals => { :contacts => :active }

View File

@ -0,0 +1,8 @@
%form{:class=>"form-horizontal",:action=>folders_create_path,:method=>"post"}
%fieldset
= render :partial => "common/select_for_folders",:locals => { :label=> t(:parent,:scope=>:folder), :name => "folder", :id => "parent", :collection => @folders, :choice => "", :blank => true}
= render :partial => "common/input_form_field",:locals => { :model => 'folder',:attr => 'target'}
.control-group
.form-actions
= render :partial => "common/button",:locals => { :name=>:create, :caption => t(:create,:scope=>:common), :icon =>'icon-plus icon-white'}

View File

@ -0,0 +1,6 @@
%form{:class=>"form-horizontal",:action=>folders_delete_path,:method=>"post"}
%fieldset
= render :partial => "common/select_for_folders",:locals => { :label=> t(:to_delete,:scope=>:folder), :name => "folder", :id => "delete", :collection => @folders, :choice => "", :blank => true}
.control-group
.form-actions
= render :partial => "common/button",:locals => { :name=>:delete, :caption => t(:delete,:scope=>:common), :icon =>'icon-minus icon-white'}

View File

@ -0,0 +1,16 @@
.well{:style=>"padding: 8px 3pt;"}
- if @folders_shown.nil? or @folders_shown.size.zero?
%p
= t(:no_shown,:scope=>:folder)
= link_to t(:folders,:scope=>:folder), folders_path
- else
%ul{:class=>"nav nav-list"}
%li{:class=>"nav-header"}
=t(:folders,:scope=>:folder)
- @folders_shown.each do |folder|
- if folder == @current_folder
%li{:class=>"active"}
= folder_link(folder)
- else
%li
= folder_link(folder)

View File

@ -0,0 +1,11 @@
%form{:class=>"form-horizontal",:action=>folders_refresh_path,:method=>"post"}
%fieldset
.control-group
%label{:class=>"control-label"}
= t(:presentation,:scope=>:folder)
.controls
= render :partial=>"common/multiselect",:locals => {:objects => @folders, :selected_objects => @folders_shown,:style=>"",:id=>"multiselect_form",:name=>"folders_to_show[]",:value=>:id,:joiner=>"",:text=>[:parent,:delim,:name]}
.control-group
.form-actions
= render :partial => "common/button",:locals => { :name=>:show_hide, :caption => t(:show_hide,:scope=>:folder), :icon =>'icon-eye-open icon-white'}
= render :partial => "common/button",:locals => { :name=>:refresh, :caption => t(:refresh,:scope=>:folder), :icon =>'icon-refresh icon-white'}

View File

@ -0,0 +1,9 @@
%form{:class=>"form-horizontal",:action=>folders_system_path,:method=>"post"}
%fieldset
= render :partial => "common/select_for_folders",:locals => { :label=> t(:folder,:scope => :folder) + " " + t(:inbox_name,:scope=>:folder), :name => "folder", :id => "mailbox_inbox", :collection => @folders, :choice => @folder_inbox, :blank => true}
= render :partial => "common/select_for_folders",:locals => { :label=> t(:folder,:scope => :folder) + " " + t(:trash_name,:scope=>:folder), :name => "folder", :id => "mailbox_trash", :collection => @folders, :choice => @folder_trash, :blank => true}
= render :partial => "common/select_for_folders",:locals => { :label=> t(:folder,:scope => :folder) + " " + t(:sent_name,:scope=>:folder), :name => "folder", :id => "mailbox_sent", :collection => @folders, :choice => @folder_sent, :blank => true}
= render :partial => "common/select_for_folders",:locals => { :label=> t(:folder,:scope => :folder) + " " + t(:drafts_name,:scope=>:folder), :name => "folder", :id => "mailbox_drafts", :collection => @folders, :choice => @folder_drafts, :blank => true}
.control-group
.form-actions
= render :partial => "common/button",:locals => { :name=>:set, :caption => t(:set,:scope=>:common), :icon =>'icon-cog icon-white'}

View File

@ -0,0 +1,16 @@
= content_for :sidebar do
= render :partial => "sidebar/sidebar"
= content_for :title do
\-
= t(:folders,:scope=>:folder)
= render :partial => 'common/main_navigation', :locals => { :folders => :active }
.row
.span9
= render :partial => "refresh"
= render :partial => "create"
= render :partial => "delete"
= render :partial => "system"

View File

@ -0,0 +1,4 @@
<p class="version">
<%= link_to (t(:version,:scope=>:common) + " " + $defaults["version"]),about_path %>
</p>

View File

@ -0,0 +1,33 @@
<% content_for :title do %>
- <%= t(:about,:scope=>:internal) %>
<% end %>
<% content_for :sidebar do %>
<%= content_for_sidebar %>
<% end %>
<div class="block">
<div class="navigation-tabs clearfix">
<%= raw single_navigation(:about,:internal) %>
</div>
<div class="content">
<h4>
<%= t(:current_version,:scope=>:internal) + ": " + $defaults["version"] %>
</h4>
<div class="md">
<%= raw BlueCloth::new(render :file => 'README.markdown').to_html %>
</div>
<div class="md">
<%= raw BlueCloth::new(render :file => 'CHANGES').to_html %>
</div>
<div class="md">
<%= raw BlueCloth::new(render :file => 'TODO').to_html %>
</div>
</div>

View File

View File

@ -0,0 +1,30 @@
!!!
%html
%head
%title
=t(:mailr,:scope=>:common)
= yield :title
= stylesheet_link_tag "application", :media => "all"
= javascript_include_tag "application"
= csrf_meta_tags
%body{:class=>"application"}
.container
.row
.span3#sidebar
= yield :sidebar
.span9#main
- if flash[:error]
.alert.alert-error
= flash[:error]
- elsif flash[:info]
.alert.alert-info
= flash[:info]
- elsif flash[:success]
.alert.alert-success
= flash[:success]
= yield
%hr/
.row
#footer-simple
%a{:href=>"https://github.com/musashimm/mailr"} MailR
\- open source web mail client

View File

@ -0,0 +1,8 @@
= content_for :sidebar do
= render :partial => "sidebar/sidebar"
= content_for :title do
\-
= t(:links,:scope=>:link)
= render :partial => 'common/main_navigation', :locals => { :links => :active }

View File

@ -0,0 +1,19 @@
<td>
<%= link_to attachment.filename_charseted, attachment_download_path(attachment.parent_id,attachment.idx) %>
</td>
<td>
<%= attachment.main_type %>/<%= attachment.sub_type %>
</td>
<td>
<%= attachment.charset %>
</td>
<td>
<%= attachment.content_transfer_encoding %>
</td>
<td>
<%= size_formatter(attachment.getSize) %>
</td>
<td>
<%= link_to image_tag(current_theme_image_path('download.png')), attachment_download_path(attachment.parent_id,attachment.idx) %>
</td>

View File

@ -0,0 +1,14 @@
%td
= attachment.filename_charseted
%td
= attachment.main_type
\/
= attachment.sub_type
%td
= attachment.charset
%td
= attachment.content_transfer_encoding
%td
= size_formatter(attachment.getSize)
%td
= link_to "<i class=\"icon-download-alt\"></i>".html_safe, attachment_download_path(attachment.parent_id,attachment.idx)

View File

@ -0,0 +1,13 @@
<div class="attachments">
<span class="title"><%= t(:attachments,:scope=>:message) %></span>
<table class="table">
<% trclass = :even %>
<% for idx in 0..@attachments.size-1 %>
<tr class="<%= trclass.to_s %>">
<%= render :partial => 'attachment', :object => @attachments[idx] %>
</tr>
<% trclass == :even ? trclass = :odd : trclass = :even %>
<% end %>
</table>
</div>

View File

@ -0,0 +1,9 @@
%h1
%small
= t(:attachments,:scope=>:message)
%table{:class=>"table table-bordered"}
%tbody
- for idx in 0..@attachments.size-1
%tr
= render :partial => 'attachment', :locals => { :attachment => @attachments[idx] }

View File

@ -0,0 +1,4 @@
<td><%= check_box_tag "files[]", file_attach[:name] %></td>
<td><%= file_attach[:name] %></td>
<td><%= size_formatter(file_attach[:size]) %></td>
<td class="last">&nbsp;</td>

View File

@ -0,0 +1,16 @@
<div class="attachments">
<span class="title"><%= t(:attachments,:scope=>:message) %></span>
<% if not @attachments.size.zero? %>
<% trclass = :even %>
<table class="table">
<% @attachments.each do |a| %>
<tr class="<%= trclass.to_s %>">
<%= render :partial => 'messages/file_attach', :object => a %>
</tr>
<% trclass == :even ? trclass = :odd : trclass = :even %>
<% end %>
</table>
<%= raw single_action('delete_marked','compose','minus.png') %>
<% end %>
</div>

View File

@ -0,0 +1,9 @@
<div class="fileselect clearfix">
<label for="upload_file"><%= t(:select_file,:scope=>:compose) %></label>:&nbsp;
<%= file_field 'file', 'data' %>
<%= raw single_action('upload','compose','up.png') %>
</div>

View File

@ -0,0 +1,14 @@
<div class="msg_header clearfix">
<%= raw show_param_view(@message,"from_addr",address_formatter(@from,:show)) %>
<%= raw show_param_view(@message,"to_addr",address_formatter(@to,:show)) %>
<% if not @cc.nil? %>
<%= raw show_param_view(@message,"cc_addr","CC jest") %>
<% end %>
<% if not @bcc.nil? %>
<%= raw show_param_view(@message,"bcc_addr","BCC jest ") %>
<% end %>
<%= 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' %>
</div>

View File

@ -0,0 +1,39 @@
%table{:class=>"header bottom-pix18"}
%tbody
%tr
%td{:class=>"field_name"}
= humanize_attr(@message,'from_addr') + ':'
%td
= address_formatter(@from,:show)
%tr
%td{:class=>"field_name"}
= humanize_attr(@message,'to_addr') + ':'
%td
= address_formatter(@to,:show)
- if not @cc.nil?
%tr
%td{:class=>"field_name"}
= humanize_attr(@message,'cc_addr') + ':'
%td
"CC jest"
- if not @bcc.nil?
%tr
%td{:class=>"field_name"}
= humanize_attr(@message,'bcc_addr') + ':'
%td
"BCC jest"
%tr
%td{:class=>"field_name"}
= humanize_attr(@message,'subject') + ':'
%td
= subject_formatter(@message,:show)
%tr
%td{:class=>"field_name"}
= humanize_attr(@message,'date') + ':'
%td
= date_formatter(@date)
= hidden_field_tag 'uids[]', @message.uid
= hidden_field_tag 'source', 'show'
%pre{:class=>"header_raw",:style=>"display: none;"}
= @plain_header

View File

@ -0,0 +1,3 @@
<iframe frameborder="0" src="<%= html_body_path(@message.uid) %>">
</iframe>

View File

@ -0,0 +1,8 @@
<div class="image">
<%= image_tag(attachment_download_path(image.parent_id,image.idx), :size => @current_user.prefs.msg_image_thumbnail_size, :alt=>image.filename, :title=>image.filename) %>
<div class="desc">
<span class="name"><%= link_to (image.filename,attachment_download_path(image.parent_id,image.idx)) %></span>
<span class="size"><%= size_formatter(image.getSize) %></span>
</div>
</div>

View File

@ -0,0 +1,8 @@
<div class="images">
<% for idx in 0..@images.size-1 %>
<%= render :partial => 'image', :object => @images[idx] %>
<% end %>
<div class="clear"></div>
</div>

View File

@ -0,0 +1,38 @@
%td
= check_box_tag "uids[]", message.uid
%td
= raw attachment_formatter(message)
%td
- if @current_folder == @sent_folder || @current_folder == @drafts_folder
= address_formatter(message.to_addr,:index)
- else
= address_formatter(message.from_addr,:index)
%td
= subject_formatter(message,:index)
%td
= date_formatter(message.date)
%td
= size_formatter(message.size)
%td
- if @current_folder == @drafts_folder
= link_to(t(:edit,:scope=>:message),edit_path(message.uid))
- else
&nbsp;
-#
<td><%= check_box_tag "uids[]", message.uid %></td>
<td><%= attachment_formatter(message) %></td>
<% if @current_folder == @sent_folder || @current_folder == @drafts_folder %>
<td nowrap="nowrap"><%= address_formatter(message.to_addr,:index) %></td>
<% else %>
<td nowrap="nowrap"><%= address_formatter(message.from_addr,:index) %></td>
<% end %>
<td nowrap="nowrap"><%= subject_formatter(message,:index) %></td>
<td nowrap="nowrap"><%= date_formatter(message.date) %></td>
</td><td nowrap="nowrap"><%= size_formatter(message.size) %></td>
<% if @current_folder == @drafts_folder %>
<td><%= link_to(t(:edit,:scope=>:message),edit_path(message.uid)) %></td>
<% else %>
<td><%= raw('&nbsp;') %></td>
<% end %>

View File

@ -0,0 +1,32 @@
.well{:style=>"padding: 5px 3pt;"}
%h3
= t(:current,:scope=>:folder)
\:
= pretty_folder_name(@current_folder)
%h5
= t(:total,:scope=>:message)
\:
= @messages.total_entries
= will_paginate @messages
%table{:class=>"table table-bordered"}
%thead
%tr
%th
%input{:id=>"toggleall",:type=>"checkbox",:name=>"allbox"}
%th
%i{:class=>"icon-file"}
= raw headers_links
%th
&nbsp;
%tbody
- @messages.each do |m|
- m.unseen == true ? unseen = "unseen" : unseen = ""
%tr{:class=>"#{unseen}"}
= render :partial => 'messages/message', :locals => {:message => m}
= will_paginate @messages

View File

@ -0,0 +1,20 @@
%p
= render :partial => "common/button", :locals => {:name=>'copy',
:caption=>t('copy',:scope=>'message'),
:icon=>'icon-tags icon-white'}
= render :partial => "common/button", :locals => {:name=>'move',
:caption=>t('move',:scope=>'message'),
:icon=>'icon-chevron-right icon-white'}
= t(:to_folder,:scope=>:folder) + " "
= raw simple_select_for_folders("folder","target",@folders_shown,'',true)
%p
= render :partial => "common/button", :locals => {:name=>'trash',
:caption=>t('trash',:scope=>'message'),
:icon=>'icon-trash icon-white'}
= render :partial => "common/button", :locals => {:name=>'set_unread',
:caption=>t('set_unread',:scope=>'message'),
:icon=>'icon-eye-close icon-white'}
= render :partial => "common/button", :locals => {:name=>'set_read',
:caption=>t('set_read',:scope=>'message'),
:icon=>'icon-eye-open icon-white'}

View File

@ -0,0 +1,27 @@
<div class="params">
<%= raw form_field( @message,
"to_addr",
nil,
"joe@domain.com"+', '+ t(:not_contain_at,:scope=>:compose),
address_formatter(@message.to_addr,@operation)
) %>
<%= raw form_field( @message,
"subject",
nil,
t(:subject_of_the_message,:scope=>:compose),
subject_formatter(@message.subject,@operation)
) %>
<%= raw area_field( @message,
"body",
nil,
t(:write_your_message_here,:scope=>:compose),
body_formatter(@message.body,@operation),
80,
20
) %>
</div>
<% if !@olduid.nil? %>
<%= hidden_field_tag 'olduid', @olduid %>
<% end %>
<%= raw group_action(@buttons) %>

View File

@ -0,0 +1,10 @@
<div id="search" class="ops">
<p>
<%= t(:search) %>
<%= t(:in_message_field) %>
<select name="search_field"><%= options_for_select($defaults["msg_search_fields"])%></select>
<%= t(:string) %>
<input type="text" name="search_value" value="" size='16' id='search_value'/>
<%= submit_tag(t(:search), :name=>'search')%>
</p>
</div>

View File

@ -0,0 +1,10 @@
<div class="ops clearfix">
<%= 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) %>
<div id="header_source" title="<%= t(:header_source,:scope=>:message)%>">
<pre>
<%= @plain_header %>
</pre>
</div>
</div>

View File

@ -0,0 +1,25 @@
%p
= render :partial => "common/button", :locals => {:name=>'copy',
:caption=>t('copy',:scope=>'message'),
:icon=>'icon-tags icon-white'}
= render :partial => "common/button", :locals => {:name=>'move',
:caption=>t('move',:scope=>'message'),
:icon=>'icon-chevron-right icon-white'}
= t(:to_folder,:scope=>:folder) + " "
= raw simple_select_for_folders("folder","target",@folders_shown,'',true)
%p
= render :partial => "common/button", :locals => {:name=>'show_header',
:caption=>t('show_header',:scope=>'show'),
:icon=>'icon-zoom-in icon-white'}
= render :partial => "common/button", :locals => {:name=>'trash',
:caption=>t('trash',:scope=>'show'),
:icon=>'icon-trash icon-white'}
= render :partial => "common/button", :locals => {:name=>'reply',
:caption=>t('reply',:scope=>'show'),
:icon=>'icon-arrow-left icon-white'}
= render :partial => "common/button", :locals => {:name=>'forward',
:caption=>t('forward',:scope=>'show'),
:icon=>'icon-arrow-right icon-white'}

View File

@ -0,0 +1,23 @@
<% content_for :sidebar do %>
<%= content_for_sidebar %>
<% end %>
<% content_for :title do %>
- <%= t(:compose,:scope=>:compose) %>
<% end %>
<div class="block">
<div class="navigation-tabs clearfix">
<%= raw main_navigation(:compose_tab) %>
</div>
<div class="content">
<h2><%= t(:new_message,:scope=>:compose) %></h2>
<div class="inner">
<%= form_tag(composed_path, :multipart => true) %>
<%= render :partial => 'messages/new' %>
<%= render :partial=> 'messages/file_attachs' %>
<%= render :partial => 'messages/file_select' %>
</form>
</div>
</div>

View File

@ -0,0 +1,44 @@
= content_for :sidebar do
= render :partial => "sidebar/sidebar"
= content_for :title do
= t(:compose,:scope=>:compose)
= render :partial => 'common/main_navigation', :locals => { :compose => :active }
%form{:multipart => 'true',:class=>"form-horizontal",:action=>composed_path,:method=>"post"}
.well{:style=>"padding: 5px 3pt;"}
%h3
= t(:new_message,:scope=>:compose)
%fieldset
= render :partial => "common/input_form_desc_field",:locals => {:object => @user,:attr => 'login',:label => nil,:example => 'joe.doe',:value => params[:user] ? params[:user][:login] : "" }
-#
<div class="params">
<%= raw form_field( @message,
"to_addr",
nil,
"joe@domain.com"+', '+ t(:not_contain_at,:scope=>:compose),
address_formatter(@message.to_addr,@operation)
) %>
<%= raw form_field( @message,
"subject",
nil,
t(:subject_of_the_message,:scope=>:compose),
subject_formatter(@message.subject,@operation)
) %>
<%= raw area_field( @message,
"body",
nil,
t(:write_your_message_here,:scope=>:compose),
body_formatter(@message.body,@operation),
80,
20
) %>
</div>
<% if !@olduid.nil? %>
<%= hidden_field_tag 'olduid', @olduid %>
<% end %>
<%= raw group_action(@buttons) %>

View File

@ -0,0 +1,2 @@
<%= raw @body -%>

View File

@ -0,0 +1,20 @@
= content_for :sidebar do
= render :partial => "sidebar/sidebar"
= content_for :title do
\-
= t(:messages,:scope=>:message)
= render :partial => 'common/main_navigation', :locals => { :messages => :active }
%form{:class=>"form-horizontal top-pix18",:action=>"#{messages_ops_multi_path}",:method=>"post"}
- if @current_folder.nil?
.alert
= t(:no_selected,:scope=>:folder)
- if @messages.size.zero?
.alert
= t(:no_in,:scope=>:message)
- else
= render :partial => 'multi_ops'
= render :partial => 'messages'

View File

@ -0,0 +1,33 @@
<% content_for :sidebar do %>
<%= content_for_sidebar %>
<% end %>
<% content_for :title do %>
- <%= t(:messages,:scope=>:message) %>
<% end %>
<div class="block">
<div class="navigation-tabs clearfix">
<%= raw main_navigation(:messages_tab) %>
</div>
<div class="content">
<%= form_tag({:controller=>'messages_ops', :action=>'multi'},{:name=>'messages'})%>
<% if @current_folder.nil? %>
<h2><%= t(:no_selected,:scope=>:folder) %></h2>
<% end %>
<% if @messages.size.zero? %>
<div class="actions-bar wat-cf">
<div class="header_info"><%= t(:no_in,:scope=>:message) %></div>
</div>
<% else %>
<%= render :partial => 'multi_ops' %>
<%= render :partial => 'messages' %>
<% end %>
</form>
</div>
</div>

View File

@ -0,0 +1,43 @@
<% content_for :sidebar do %>
<%= content_for_sidebar %>
<% end %>
<% content_for :title do %>
- <%= subject_formatter(@message,:show) %>
<% end %>
<div class="block">
<div class="navigation-tabs clearfix">
<%= raw main_navigation(:show) %>
</div>
<div class="content clearfix">
<%= form_tag(messages_ops_single_path)%>
<%= render :partial => 'header' %>
<%= render :partial => 'single_ops' %>
<% if not @attachments.size.zero? %>
<%= render :partial => 'attachments' %>
<% end %>
<% if not @images.size.zero? %>
<%= render :partial => 'images' %>
<% end %>
<% if not @html_part.nil? %>
<%= render :partial => 'html_part' %>
<% else %>
<div class="render_text clearfix">
<% if @text_part.nil? %>
<p>
<%= t(:no_content,:scope => :message) %>
</p>
<% else %>
<%= raw content_text_plain_for_render(@text_part) %>
<% end %>
</div>
<% end %>
</form>
</div>
</div>

View File

@ -0,0 +1,29 @@
= content_for :sidebar do
= render :partial => "sidebar/sidebar"
= content_for :title do
\-
= subject_formatter(@message,:show)
= render :partial => 'common/main_navigation', :locals => { :show => :active }
%form{:class=>"form-horizontal top-pix18",:action=>"#{messages_ops_multi_path}",:method=>"post"}
= render :partial => 'header'
= render :partial => 'single_ops'
- if not @attachments.size.zero?
= render :partial => 'attachments'
- if not @images.size.zero?
render :partial => 'images'
- if not @html_part.nil?
= render :partial => 'html_part'
- else
- if @text_part.nil?
.alert
= t(:no_content,:scope => :message)
- else
%pre
= @text_part

8
app/views/prefs/look.html.haml Executable file
View File

@ -0,0 +1,8 @@
= content_for :sidebar do
= render :partial => "sidebar/sidebar"
= content_for :title do
\-
= t(:look,:scope=>:prefs)
= render :partial => 'common/main_navigation', :locals => { :prefs => :active }

View File

View File

@ -0,0 +1,11 @@
= render :partial => "common/logo"
= render :partial => "common/version"
= render :partial => "folders/list"
%p
= render :partial => "common/button", :locals => {:name=>'logout',
:type=>"btn-danger",
:caption=>t('logout',:scope=>'user'),
:icon=>'icon-off icon-white',
:onclick=>"window.location='#{user_logout_path}'"}
= render :partial => "sidebar/calendar_view"

6
app/views/user/login.html.haml Normal file → Executable file
View File

@ -5,8 +5,10 @@
%form{:class=>"form-horizontal top-pix18",:action=>"#{url_for(:controller => 'user', :action => 'authenticate')}",:method=>"post"}
%fieldset
= render :partial => "common/input_form_field",:locals => { :model => 'user',:attr => 'login'}
= render :partial => "common/input_form_field",:locals => { :model => 'user',:attr => 'password'}
= render :partial => "common/form_button",:locals => { :text => t(:please_login,:scope=>:user)}
= render :partial => "common/input_password_form_field",:locals => { :model => 'user',:attr => 'password'}
.control-group
.controls
= render :partial => "common/button",:locals => { :name=>'login', :caption => t(:please_login,:scope=>:user), :icon =>'icon-lock icon-white'}

View File

@ -2,8 +2,14 @@
\-
= t(:setup,:scope=>:user)
%div{:class=>"alert alert-info"}
= t(:no_config,:scope=>:user)
%form{:class=>"form-horizontal top-pix18",:action=>"#{url_for(:controller => 'user', :action => 'create')}",:method=>"post"}
%legend
= t(:setup,:scope=>:user)
%fieldset
= render :partial => "common/input_form_desc_field",:locals => {:object => @user,:attr => 'login',:label => nil,:example => 'joe doe',:value => params[:user].nil? ? params[:login] : params[:user][:login]}
= render :partial => "common/input_form_desc_field",:locals => {:object => @user,:attr => 'login',:label => nil,:example => 'joe.doe',:value => params[:user] ? params[:user][:login] : "" }
= render :partial => "common/input_form_desc_field",:locals => {:object => @user,:attr => 'first_name',:label => nil,:example => 'Joe',:value => params[:user] ? params[:user][:first_name] : ""}
= render :partial => "common/input_form_desc_field",:locals => {:object => @user,:attr => 'last_name',:label => nil,:example => 'Doe',:value => params[:user] ? params[:user][:last_name] : ""}
= render :partial => "common/input_form_desc_field",:locals => {:object => @server,:attr => 'name',:label => nil,:example => 'server.domain',:value => params[:server] ? params[:server][:name] : ""}
= render :partial => "common/form_button_icon",:locals => { :text => t(:send_config,:scope=>:user), :icon_class =>'icon-ok icon-white'}

View File

@ -1,16 +0,0 @@
<% content_for :title do %>
<%= t(:unknown_title,:scope=>:user) %>
<% end %>
<div class="box">
<div class="box2">
<div class="logo"><a href="/"><img src="" alt="Mailr"/></a>
</div>
<h2><%= t(:unknown_title,:scope=>:user) %></h2>
<div class="content">
<div class="flash"><div class="message warning"><p><%= t(:unknown_flash,:scope=>:user) %></p></div></div>
<p><%= t(:unknown_login,:scope=>:user) %> -> <%= link_to t(:login,:scope=>:user),user_login_path %></p>
<p><%= t(:unknown_setup,:scope=>:user) %> -> <%= link_to t(:setup,:scope=>:user),:controller => "user",:action => "setup",:login => params[:login] %></p>
</div>
</div>
</div>

0
config.ru Normal file → Executable file
View File

0
config/application.rb Normal file → Executable file
View File

0
config/boot.rb Normal file → Executable file
View File

0
config/environment.rb Normal file → Executable file
View File

0
config/environments/development.rb Normal file → Executable file
View File

0
config/environments/production.rb Normal file → Executable file
View File

0
config/environments/test.rb Normal file → Executable file
View File

0
config/initializers/backtrace_silencers.rb Normal file → Executable file
View File

0
config/initializers/inflections.rb Normal file → Executable file
View File

0
config/initializers/mime_types.rb Normal file → Executable file
View File

0
config/initializers/secret_token.rb Normal file → Executable file
View File

0
config/initializers/session_store.rb Normal file → Executable file
View File

0
config/initializers/wrap_parameters.rb Normal file → Executable file
View File

View File

@ -60,6 +60,9 @@ pl:
for_imap: IMAP?
for_smtp: SMTP?
auth: Metoda autoryzacji
folder:
name: Nazwa folderu
contact:
compose_to_selected: Napisz do wybranych
@ -99,7 +102,7 @@ pl:
folder:
folder: Folder
folders: Foldery
no_shown: Nie prezentowany jest żaden folder. Skonfiguruj widok folderów w zakładce
no_shown: Nie jest prezentowany żaden folder. Skonfiguruj widok folderów w zakładce
parent: Folder nadrzędny
to_create: Folder do utworzenia
to_delete: Folder do usunięcia
@ -127,6 +130,7 @@ pl:
not_configured_inbox: Folder Odebrane nie został przypisany
show_hide: Pokaż/Ukryj
refresh: Odśwież
presentation: Prezentacja folderów
message:
messages: Wiadomości
@ -171,9 +175,10 @@ pl:
delete: Usuń
reply_string: "Odp: "
trash: Usuń
forward: Przekaż
user:
login_failure: Nieudane logowanie. Podano błędny e-mail lub hasło.
login_failure: Nieudane logowanie. Podano błędny login lub hasło.
logged_out: Użytkownik wylogowany
setup_done: Konfiguracja zakończona. Proszę się zalogować.
please_login: Logowanie
@ -186,6 +191,8 @@ pl:
only_can_logins: Podany identyfikator użytkownika nie uprawnia do korzystania z aplikacji
logout: Wyloguj
has_no_domain: Użytkownik nie ma ustawionej domeny
send_config: Wyślij
no_config: W bazie nie znaleziono żadnego użytkownika. Prawdopodobnie aplikacja nie została jeszcze skonfigurowana. Wypełnij poniższy formularz, aby dokonać podtsawowej konfiguracji.
internal:
imap_error: Błąd protokołu IMAP
@ -196,6 +203,7 @@ pl:
about: Informacje o programie
current_version: Aktualna wersja
general_error: Błąd aplikacji
allready_configured: Podstawowe parametry aplikacji zostały już skonfigurowane. Zaloguj się na utworzonego użytkownika i dokonaj dodatkowej konfiguracji.
common:
false_answer: Nie
@ -204,7 +212,7 @@ pl:
no_tmp_dir: Brak katalogu tymczasowego
must_be_unique: musi być unikalny
some_add_info: jakieś dodatkowe informacje
example: przykład
example: "przykład:"
create: Utwórz
delete: Usuń
mailr: MailR

Some files were not shown because too many files have changed in this diff Show More