mirror of
https://github.com/TracksApp/tracks.git
synced 2025-12-16 23:30:12 +01:00
get the first cucumber feature running: calendar
This commit is contained in:
parent
393eae1937
commit
c9d64e6f4b
28 changed files with 400 additions and 418 deletions
|
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 2 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
|
@ -9,18 +9,14 @@ class ContextsController < ApplicationController
|
||||||
prepend_before_filter :login_or_feed_token_required, :only => [:index]
|
prepend_before_filter :login_or_feed_token_required, :only => [:index]
|
||||||
|
|
||||||
def index
|
def index
|
||||||
# #true is passed here to force an immediate load so that size and empty?
|
@active_contexts = current_user.contexts.active
|
||||||
# checks later don't result in separate SQL queries
|
@hidden_contexts = current_user.contexts.hidden
|
||||||
@active_contexts = current_user.contexts.active(true)
|
|
||||||
@hidden_contexts = current_user.contexts.hidden(true)
|
|
||||||
@new_context = current_user.contexts.build
|
@new_context = current_user.contexts.build
|
||||||
|
|
||||||
# save all contexts here as @new_context will add an empty one to current_user.contexts
|
# save all contexts here as @new_context will add an empty one to current_user.contexts
|
||||||
@all_contexts = @active_contexts + @hidden_contexts
|
@all_contexts = @active_contexts + @hidden_contexts
|
||||||
@count = @all_contexts.size
|
@count = @all_contexts.size
|
||||||
|
|
||||||
init_not_done_counts(['context'])
|
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html &render_contexts_html
|
format.html &render_contexts_html
|
||||||
format.m &render_contexts_mobile
|
format.m &render_contexts_mobile
|
||||||
|
|
@ -200,6 +196,7 @@ class ContextsController < ApplicationController
|
||||||
@no_hidden_contexts = @hidden_contexts.empty?
|
@no_hidden_contexts = @hidden_contexts.empty?
|
||||||
@active_count = @active_contexts.size
|
@active_count = @active_contexts.size
|
||||||
@hidden_count = @hidden_contexts.size
|
@hidden_count = @hidden_contexts.size
|
||||||
|
init_not_done_counts(['context'])
|
||||||
render
|
render
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -8,60 +8,38 @@ class LoginController < ApplicationController
|
||||||
|
|
||||||
protect_from_forgery :except => [:check_expiry, :login]
|
protect_from_forgery :except => [:check_expiry, :login]
|
||||||
|
|
||||||
if ( SITE_CONFIG['authentication_schemes'].include? 'cas')
|
|
||||||
# This will allow the user to view the index page without authentication
|
|
||||||
# but will process CAS authentication data if the user already
|
|
||||||
# has an SSO session open.
|
|
||||||
if defined? CASClient
|
|
||||||
# Only require sub-library if gem is installed and loaded
|
|
||||||
require 'casclient/frameworks/rails/filter'
|
|
||||||
before_filter CASClient::Frameworks::Rails::GatewayFilter, :only => :login_cas
|
|
||||||
|
|
||||||
# This requires the user to be authenticated for viewing all other pages.
|
|
||||||
before_filter CASClient::Frameworks::Rails::Filter, :only => [:login_cas ]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def login
|
def login
|
||||||
if cas_enabled?
|
@page_title = "TRACKS::Login"
|
||||||
@username = session[:cas_user]
|
cookies[:preferred_auth] = prefered_auth? unless cookies[:preferred_auth]
|
||||||
@login_url = CASClient::Frameworks::Rails::Filter.login_url(self)
|
case request.method
|
||||||
|
when 'POST'
|
||||||
|
if @user = User.authenticate(params['user_login'], params['user_password'])
|
||||||
|
session['user_id'] = @user.id
|
||||||
|
# If checkbox on login page checked, we don't expire the session after 1 hour
|
||||||
|
# of inactivity and we remember this user for future browser sessions
|
||||||
|
session['noexpiry'] = params['user_noexpiry']
|
||||||
|
msg = (should_expire_sessions?) ? "will expire after 1 hour of inactivity." : "will not expire."
|
||||||
|
notify :notice, "Login successful: session #{msg}"
|
||||||
|
cookies[:tracks_login] = { :value => @user.login, :expires => Time.now + 1.year, :secure => SITE_CONFIG['secure_cookies'] }
|
||||||
|
unless should_expire_sessions?
|
||||||
|
@user.remember_me
|
||||||
|
cookies[:auth_token] = { :value => @user.remember_token , :expires => @user.remember_token_expires_at, :secure => SITE_CONFIG['secure_cookies'] }
|
||||||
|
end
|
||||||
|
redirect_back_or_home
|
||||||
|
return
|
||||||
|
else
|
||||||
|
@login = params['user_login']
|
||||||
|
notify :warning, t('login.unsuccessful')
|
||||||
|
end
|
||||||
|
when 'GET'
|
||||||
|
if User.no_users_yet?
|
||||||
|
redirect_to signup_path
|
||||||
|
return
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if cas_enabled? && session[:cas_user]
|
respond_to do |format|
|
||||||
login_cas
|
format.html
|
||||||
else
|
format.m { render :action => 'login_mobile.html.erb', :layout => 'mobile' }
|
||||||
@page_title = "TRACKS::Login"
|
|
||||||
cookies[:preferred_auth] = prefered_auth? unless cookies[:preferred_auth]
|
|
||||||
case request.method
|
|
||||||
when 'POST'
|
|
||||||
if @user = User.authenticate(params['user_login'], params['user_password'])
|
|
||||||
session['user_id'] = @user.id
|
|
||||||
# If checkbox on login page checked, we don't expire the session after 1 hour
|
|
||||||
# of inactivity and we remember this user for future browser sessions
|
|
||||||
session['noexpiry'] = params['user_noexpiry']
|
|
||||||
msg = (should_expire_sessions?) ? "will expire after 1 hour of inactivity." : "will not expire."
|
|
||||||
notify :notice, "Login successful: session #{msg}"
|
|
||||||
cookies[:tracks_login] = { :value => @user.login, :expires => Time.now + 1.year, :secure => SITE_CONFIG['secure_cookies'] }
|
|
||||||
unless should_expire_sessions?
|
|
||||||
@user.remember_me
|
|
||||||
cookies[:auth_token] = { :value => @user.remember_token , :expires => @user.remember_token_expires_at, :secure => SITE_CONFIG['secure_cookies'] }
|
|
||||||
end
|
|
||||||
redirect_back_or_home
|
|
||||||
return
|
|
||||||
else
|
|
||||||
@login = params['user_login']
|
|
||||||
notify :warning, t('login.unsuccessful')
|
|
||||||
end
|
|
||||||
when 'GET'
|
|
||||||
if User.no_users_yet?
|
|
||||||
redirect_to signup_path
|
|
||||||
return
|
|
||||||
end
|
|
||||||
end
|
|
||||||
respond_to do |format|
|
|
||||||
format.html
|
|
||||||
format.m { render :action => 'login_mobile.html.erb', :layout => 'mobile' }
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -108,32 +86,6 @@ class LoginController < ApplicationController
|
||||||
format.js
|
format.js
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def login_cas
|
|
||||||
# If checkbox on login page checked, we don't expire the session after 1 hour
|
|
||||||
# of inactivity and we remember this user for future browser sessions
|
|
||||||
|
|
||||||
session['noexpiry'] ||= params['user_noexpiry']
|
|
||||||
if session[:cas_user]
|
|
||||||
if @user = User.find_by_login(session[:cas_user])
|
|
||||||
session['user_id'] = @user.id
|
|
||||||
msg = (should_expire_sessions?) ? t('login.session_will_expire', :hours => 1) : t('login.session_will_not_expire')
|
|
||||||
notify :notice, (t('login.successful_with_session_info') + msg)
|
|
||||||
cookies[:tracks_login] = { :value => @user.login, :expires => Time.now + 1.year, :secure => SITE_CONFIG['secure_cookies'] }
|
|
||||||
unless should_expire_sessions?
|
|
||||||
@user.remember_me
|
|
||||||
cookies[:auth_token] = { :value => @user.remember_token, :expires => @user.remember_token_expires_at, :secure => SITE_CONFIG['secure_cookies'] }
|
|
||||||
end
|
|
||||||
else
|
|
||||||
notify :warning, t('login.cas_username_not_found', :username => session[:cas_user])
|
|
||||||
redirect_to signup_url ; return
|
|
||||||
end
|
|
||||||
else
|
|
||||||
notify :warning, result.message
|
|
||||||
end
|
|
||||||
redirect_back_or_home
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
|
@ -141,32 +93,4 @@ class LoginController < ApplicationController
|
||||||
session['noexpiry'] != "on"
|
session['noexpiry'] != "on"
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
|
||||||
|
|
||||||
def login_openid
|
|
||||||
# If checkbox on login page checked, we don't expire the session after 1 hour
|
|
||||||
# of inactivity and we remember this user for future browser sessions
|
|
||||||
session['noexpiry'] ||= params['user_noexpiry']
|
|
||||||
authenticate_with_open_id do |result, identity_url|
|
|
||||||
if result.successful?
|
|
||||||
if @user = User.find_by_open_id_url(identity_url)
|
|
||||||
session['user_id'] = @user.id
|
|
||||||
msg = (should_expire_sessions?) ? t('login.session_will_expire', :hours => 1) : t('login.session_will_not_expire')
|
|
||||||
notify :notice, (t('login.successful_with_session_info') + msg)
|
|
||||||
cookies[:tracks_login] = { :value => @user.login, :expires => Time.now + 1.year, :secure => SITE_CONFIG['secure_cookies'] }
|
|
||||||
unless should_expire_sessions?
|
|
||||||
@user.remember_me
|
|
||||||
cookies[:auth_token] = { :value => @user.remember_token , :expires => @user.remember_token_expires_at, :secure => SITE_CONFIG['secure_cookies'] }
|
|
||||||
end
|
|
||||||
redirect_back_or_home
|
|
||||||
else
|
|
||||||
notify :warning, t('login.openid_identity_url_not_found', :identity_url => identity_url)
|
|
||||||
end
|
|
||||||
else
|
|
||||||
notify :warning, result.message
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -108,8 +108,7 @@ class TodosController < ApplicationController
|
||||||
includes(:project, :context, :tags)
|
includes(:project, :context, :tags)
|
||||||
else
|
else
|
||||||
@todos = current_user.todos.includes(Todo::DEFAULT_INCLUDES)
|
@todos = current_user.todos.includes(Todo::DEFAULT_INCLUDES)
|
||||||
@not_done_todos = current_user.todos.
|
@not_done_todos = current_user.todos.active.not_hidden.
|
||||||
where('contexts.hide = ? AND (projects.state = ? OR todos.project_id IS NULL)', false, 'active').
|
|
||||||
reorder("todos.due IS NULL, todos.due ASC, todos.created_at ASC").
|
reorder("todos.due IS NULL, todos.due ASC, todos.created_at ASC").
|
||||||
includes(Todo::DEFAULT_INCLUDES)
|
includes(Todo::DEFAULT_INCLUDES)
|
||||||
end
|
end
|
||||||
|
|
@ -360,7 +359,7 @@ class TodosController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
def edit
|
||||||
@todo = current_user.todos.find_by_id(params['id']).includes(Todo::DEFAULT_INCLUDES)
|
@todo = current_user.todos.find(params['id'])
|
||||||
@source_view = params['_source_view'] || 'todo'
|
@source_view = params['_source_view'] || 'todo'
|
||||||
@tag_name = params['_tag_name']
|
@tag_name = params['_tag_name']
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
|
|
|
||||||
|
|
@ -447,7 +447,7 @@ module TodosHelper
|
||||||
}
|
}
|
||||||
page.todo { container_id = "c#{@original_item_context_id}empty-nd" if @remaining_in_context == 0 }
|
page.todo { container_id = "c#{@original_item_context_id}empty-nd" if @remaining_in_context == 0 }
|
||||||
end
|
end
|
||||||
return container_id.blank? ? "" : "$(\"##{container_id}\").slideDown(100);"
|
return container_id.blank? ? "" : "$(\"##{container_id}\").slideDown(100);".html_safe
|
||||||
end
|
end
|
||||||
|
|
||||||
def render_animation(animation)
|
def render_animation(animation)
|
||||||
|
|
|
||||||
|
|
@ -433,7 +433,7 @@ class RecurringTodo < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if self.every_other2>1
|
if self.every_other2>1
|
||||||
n_months = "#{self.every_other2} " + I18n.t('common.months')
|
n_months = "#{self.every_other2} #{I18n.t('common.months')}"
|
||||||
else
|
else
|
||||||
n_months = I18n.t('common.month')
|
n_months = I18n.t('common.month')
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
<%= stylesheet_link_tag "scaffold" %>
|
<%= stylesheet_link_tag "scaffold" %>
|
||||||
<%= javascript_include_tag 'jquery-1.7.1.min', 'jquery.cookie' %>
|
|
||||||
|
|
||||||
<title><%= @page_title -%></title>
|
<title><%= @page_title -%></title>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
setup_periodic_check("<%=check_deferred_todos_path(:format => 'js')%>", 10*60, 'POST');
|
setup_periodic_check("<%=check_deferred_todos_path(:format => 'js')%>", 10*60, 'POST');
|
||||||
<%= generate_i18n_strings %>
|
<%= generate_i18n_strings %>
|
||||||
</script>
|
</script>
|
||||||
<link rel="shortcut icon" href="<%= url_for(:controller => 'favicon.ico') %>" />
|
<link rel="shortcut icon" href="<%= image_path ('favicon.ico') %>" />
|
||||||
<%= auto_discovery_link_tag(:rss, {:controller => "todos", :action => "index", :format => 'rss', :token => "#{current_user.token}"}, {:title => t('layouts.next_actions_rss_feed')}) %>
|
<%= auto_discovery_link_tag(:rss, {:controller => "todos", :action => "index", :format => 'rss', :token => "#{current_user.token}"}, {:title => t('layouts.next_actions_rss_feed')}) %>
|
||||||
<link rel="search" type="application/opensearchdescription+xml" title="Tracks" href="<%= search_plugin_path %>" />
|
<link rel="search" type="application/opensearchdescription+xml" title="Tracks" href="<%= search_plugin_path %>" />
|
||||||
<title><%= @page_title %></title>
|
<title><%= @page_title %></title>
|
||||||
|
|
@ -48,7 +48,7 @@
|
||||||
|
|
|
|
||||||
<%= link_to(t('layouts.toggle_notes'), "#", {:accesskey => "S", :title => t('layouts.toggle_notes_title'), :id => "toggle-notes-nav"}) %>
|
<%= link_to(t('layouts.toggle_notes'), "#", {:accesskey => "S", :title => t('layouts.toggle_notes_title'), :id => "toggle-notes-nav"}) %>
|
||||||
|
|
|
|
||||||
<%= link_to( t('common.logout') + " (#{current_user.display_name}) »", logout_path) %>
|
<%= link_to("#{t('common.logout')} (#{current_user.display_name}) »".html_safe, logout_path) %>
|
||||||
</div>
|
</div>
|
||||||
<div id="navcontainer">
|
<div id="navcontainer">
|
||||||
<ul class="sf-menu">
|
<ul class="sf-menu">
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,9 @@
|
||||||
<% auth_schemes = Tracks::Config.auth_schemes
|
|
||||||
show_database_form = auth_schemes.include?('database') || auth_schemes.include?('ldap')
|
|
||||||
show_openid_form = auth_schemes.include?('open_id')
|
|
||||||
show_cas_form = auth_schemes.include?('cas')
|
|
||||||
-%>
|
|
||||||
|
|
||||||
<div title="<%= t('login.account_login') %>" id="loginform" class="form">
|
<div title="<%= t('login.account_login') %>" id="loginform" class="form">
|
||||||
|
|
||||||
<%= render_flash %>
|
<%= render_flash %>
|
||||||
|
|
||||||
<h3><%= t('login.please_login') %>:</h3>
|
<h3><%= t('login.please_login') %>:</h3>
|
||||||
<% if show_database_form %>
|
<div id="database_auth_form" style="display:block">
|
||||||
<div id="database_auth_form" style="display:<%=(@prefered_auth.eql?('database')) ? "block" : "none"%>">
|
|
||||||
<%= form_tag :action=> 'login' do %>
|
<%= form_tag :action=> 'login' do %>
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -27,111 +20,9 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td><input type="submit" name="login" value="<%= t('login.sign_in') %> »" class="primary" /></td>
|
<td><input type="submit" name="login" value="<%= t('login.sign_in') %>" class="primary" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
</div>
|
||||||
|
|
||||||
<% if show_openid_form %>
|
|
||||||
<div id="openid_auth_form" style="display:<%=(@prefered_auth.eql?('openid')) ? "block" : "none"%>">
|
|
||||||
<%= form_tag :action=> 'login' do %>
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<td><label for="openid_url"><%= User.human_attribute_name('open_id_url') %>:</label></td>
|
|
||||||
<td><input type="text" name="openid_url" id="openid_url" value="<%= @openid_url %>" class="login_text open_id" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><label for="user_noexpiry"><%= t('login.user_no_expiry') %>:</label></td>
|
|
||||||
<td><input type="checkbox" name="user_noexpiry" id="user_noexpiry" checked /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td><input type="submit" name="login" value="<%= t('login.sign_in') %> »" class="primary" /></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<% end %>
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<% if show_cas_form %>
|
|
||||||
<div id="cas_auth_form" style="display:<%=(@prefered_auth.eql?('cas')) ? "block" : "none"%>">
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<% if @username && @user%>
|
|
||||||
<p><%= t('login.cas_logged_in_greeting', :username => @username) %></p>
|
|
||||||
<% elsif @username %>
|
|
||||||
<p><%= t('login.cas_no_user_found', :username => @username) %>
|
|
||||||
<%if SITE_CONFIG['open_signups']%>
|
|
||||||
<%= t('login.cas_create_account', :signup_link => link_to(t('login.cas_signup_link'), signup_url)) %>
|
|
||||||
<%end%>
|
|
||||||
</p>
|
|
||||||
<% else %>
|
|
||||||
<p><%= link_to(t('login.cas_login'), login_cas_url) %> </p>
|
|
||||||
<% end %>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<% if show_openid_form %><p id="alternate_auth_openid" class="alternate_auth"><%= t('login.option_separator') %> <a href="#" onclick="Login.showOpenid();return false;"><%= t('login.login_with_openid') %></a></p><% end %>
|
|
||||||
<% if show_database_form %><p id="alternate_auth_database" class="alternate_auth"><%= t('login.option_separator') %> <a href="#" onclick="Login.showDatabase();return false;"><%= t('login.login_standard') %></a></p><% end %>
|
|
||||||
<% if show_cas_form %><p id="alternate_auth_cas" class="alternate_auth"><%= t('login.option_separator') %> <a href="#" onclick="Login.showCAS();return false;"><%= t('login.login_cas')%></a></p><% end %>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
function showPreferredAuth() {
|
|
||||||
var preferredAuth = $.cookie('preferred_auth');
|
|
||||||
var casEnabled = <%= show_cas_form ? 'true' : 'false' %>;
|
|
||||||
var databaseEnabled = <%= show_database_form ? 'true' : 'false' %>;
|
|
||||||
var openidEnabled = <%= show_openid_form ? 'true' : 'false' %>;
|
|
||||||
if (preferredAuth && preferredAuth == 'openid' && openidEnabled) {
|
|
||||||
Login.showOpenid();
|
|
||||||
}
|
|
||||||
else if (preferredAuth && preferredAuth == 'database' && databaseEnabled) {
|
|
||||||
Login.showDatabase();
|
|
||||||
}
|
|
||||||
else if (preferredAuth && preferredAuth == 'cas' && casEnabled) {
|
|
||||||
Login.showCAS();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$(document).ready(showPreferredAuth);
|
|
||||||
|
|
||||||
var Login = {
|
|
||||||
showOpenid: function() {
|
|
||||||
$('#database_auth_form').hide();
|
|
||||||
$('#openid_auth_form').show();
|
|
||||||
$('#alternate_auth_openid').hide();
|
|
||||||
$('#alternate_auth_database').show(); ;
|
|
||||||
$('#alternate_auth_cas').show();
|
|
||||||
$('#openid_url').focus();
|
|
||||||
$('#openid_url').select();
|
|
||||||
$.cookie('preferred_auth', 'openid');
|
|
||||||
},
|
|
||||||
|
|
||||||
showDatabase: function(container) {
|
|
||||||
$('#openid_auth_form').hide();
|
|
||||||
$('#database_auth_form').show();
|
|
||||||
$('#alternate_auth_database').hide();
|
|
||||||
$('#alternate_auth_openid').show();
|
|
||||||
$('#alternate_auth_cas').show();
|
|
||||||
$('#user_login').focus();
|
|
||||||
$('#user_login').select();
|
|
||||||
$.cookie('preferred_auth', 'database');
|
|
||||||
},
|
|
||||||
showCAS: function(container) {
|
|
||||||
$('#database_auth_form').hide();
|
|
||||||
$('#openid_auth_form').hide();
|
|
||||||
$('#cas_auth_form').show();
|
|
||||||
$('#alternate_auth_cas').hide();
|
|
||||||
$('#alternate_auth_openid').show();
|
|
||||||
$('#alternate_auth_database').show();
|
|
||||||
$.cookie('preferred_auth', 'cas');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h2><%= t('todos.calendar.due_today') %></h2>
|
<h2><%= t('todos.calendar.due_today') %></h2>
|
||||||
<div id="empty_due_today" <%= "style=\"display:none\"" unless @due_today.empty? %>>
|
<div id="empty_due_today" <%= raw "style=\"display:none\"" unless @due_today.empty? %>>
|
||||||
<%= t('todos.calendar.no_actions_due_today') %>
|
<%= t('todos.calendar.no_actions_due_today') %>
|
||||||
</div>
|
</div>
|
||||||
<div id="due_today">
|
<div id="due_today">
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h2><%= t('todos.calendar.due_this_week') %></h2>
|
<h2><%= t('todos.calendar.due_this_week') %></h2>
|
||||||
<div id="empty_due_this_week" <%= "style=\"display:none\"" unless @due_this_week.empty? %>>
|
<div id="empty_due_this_week" <%= raw "style=\"display:none\"" unless @due_this_week.empty? %>>
|
||||||
<%= t('todos.no_actions_due_this_week') %>
|
<%= t('todos.no_actions_due_this_week') %>
|
||||||
</div>
|
</div>
|
||||||
<div id="due_this_week">
|
<div id="due_this_week">
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h2><%= t('todos.calendar.due_next_week') %></h2>
|
<h2><%= t('todos.calendar.due_next_week') %></h2>
|
||||||
<div id="empty_due_next_week" <%= "style=\"display:none\"" unless @due_next_week.empty? %>>
|
<div id="empty_due_next_week" <%= raw "style=\"display:none\"" unless @due_next_week.empty? %>>
|
||||||
<%= t('todos.calendar.no_actions_due_next_week') %>
|
<%= t('todos.calendar.no_actions_due_next_week') %>
|
||||||
</div>
|
</div>
|
||||||
<div id="due_next_week">
|
<div id="due_next_week">
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h2><%= t('todos.calendar.due_this_month', :month => l(Time.zone.now, :format => "%B")) %></h2>
|
<h2><%= t('todos.calendar.due_this_month', :month => l(Time.zone.now, :format => "%B")) %></h2>
|
||||||
<div id="empty_due_this_month" <%= "style=\"display:none\"" unless @due_this_month.empty? %>>
|
<div id="empty_due_this_month" <%= raw "style=\"display:none\"" unless @due_this_month.empty? %>>
|
||||||
<%= t('todos.calendar.no_actions_due_this_month') %>
|
<%= t('todos.calendar.no_actions_due_this_month') %>
|
||||||
</div>
|
</div>
|
||||||
<div id="due_this_month">
|
<div id="due_this_month">
|
||||||
|
|
@ -42,7 +42,7 @@
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h2><%= t('todos.calendar.due_next_month_and_later', :month => l(Time.zone.now+1.month, :format => "%B")) %></h2>
|
<h2><%= t('todos.calendar.due_next_month_and_later', :month => l(Time.zone.now+1.month, :format => "%B")) %></h2>
|
||||||
<div id="empty_due_after_this_month" <%= "style=\"display:none\"" unless @due_after_this_month.empty? %>>
|
<div id="empty_due_after_this_month" <%= raw "style=\"display:none\"" unless @due_after_this_month.empty? %>>
|
||||||
<%= t('todos.calendar.no_actions_due_after_this_month') %>
|
<%= t('todos.calendar.no_actions_due_after_this_month') %>
|
||||||
</div>
|
</div>
|
||||||
<div id="due_after_this_month">
|
<div id="due_after_this_month">
|
||||||
|
|
@ -52,6 +52,6 @@
|
||||||
|
|
||||||
</div><!-- End of display_box -->
|
</div><!-- End of display_box -->
|
||||||
<div class="input_box" id="input_box">
|
<div class="input_box" id="input_box">
|
||||||
<p><%= link_to('<span class="feed">iCal</span>', {:format => 'ics', :token => current_user.token}, :title => "iCal feed" ) %>
|
<p><%= link_to('<span class="feed">iCal</span>'.html_safe, {:format => 'ics', :token => current_user.token}, :title => "iCal feed" ) %>
|
||||||
- <%= t('todos.calendar.get_in_ical_format') %></p>
|
- <%= t('todos.calendar.get_in_ical_format') %></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ function update_predecessors() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function html_for_error_messages() {
|
function html_for_error_messages() {
|
||||||
return "<%= escape_javascript(error_messages_for('todo', :object_name => 'action')) %>";
|
return "<%= escape_javascript(get_list_of_error_messages_for(@todo)) %>";
|
||||||
}
|
}
|
||||||
|
|
||||||
function html_for_new_context() {
|
function html_for_new_context() {
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,15 @@
|
||||||
<div id="display_box">
|
<div id="display_box">
|
||||||
<div id="no_todos_in_view" class="container context" style="display:<%= @not_done_todos.empty? ? "block" : "none" %>">
|
<div id="no_todos_in_view" class="container context" style="display:<%= @not_done_todos.empty? ? "block" : "none" %>">
|
||||||
<h2><%= t('todos.no_actions_found_title')%></h2>
|
<h2><%= t('todos.no_actions_found_title')%></h2>
|
||||||
<div class="message"><p><%= t('todos.no_actions_found') %></p></div>
|
<div class="message"><p><%= t('todos.no_actions_found') %></p></div>
|
||||||
</div>
|
</div>
|
||||||
<%= render(:partial => @contexts_to_show, :locals => { :collapsible => true }) -%>
|
<%= render(:partial => @contexts_to_show, :locals => { :collapsible => true }) -%>
|
||||||
<% unless @done.nil? -%>
|
<% unless @done.nil? -%>
|
||||||
<%= render(
|
<%= render(:partial => "todos/completed", :object => @done,
|
||||||
:partial => "todos/completed",
|
:locals => { :collapsible => true, :append_descriptor => nil }) -%>
|
||||||
:object => @done,
|
|
||||||
:locals => { :collapsible => true, :append_descriptor => nil }) -%>
|
|
||||||
<% end -%>
|
<% end -%>
|
||||||
</div><!-- End of display_box -->
|
</div>
|
||||||
<div id="input_box">
|
<div id="input_box">
|
||||||
<%= render :partial => "shared/add_new_item_form" %>
|
<%= render :partial => "shared/add_new_item_form" %>
|
||||||
<%= render :file => "sidebar/sidebar" %>
|
<%= render :file => "sidebar/sidebar" %>
|
||||||
</div><!-- End of input box -->
|
</div>
|
||||||
70
backup.rails2.3/env.rb
Normal file
70
backup.rails2.3/env.rb
Normal file
|
|
@ -0,0 +1,70 @@
|
||||||
|
# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
|
||||||
|
# It is recommended to regenerate this file in the future when you upgrade to a
|
||||||
|
# newer version of cucumber-rails. Consider adding your own code to a new file
|
||||||
|
# instead of editing this one. Cucumber will automatically load all features/**/*.rb
|
||||||
|
# files.
|
||||||
|
|
||||||
|
ENV["RAILS_ENV"] ||= "cucumber"
|
||||||
|
require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
|
||||||
|
|
||||||
|
require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
|
||||||
|
# require 'cucumber/rails/rspec'
|
||||||
|
require 'cucumber/rails/world'
|
||||||
|
require 'cucumber/rails/active_record'
|
||||||
|
require 'cucumber/web/tableish'
|
||||||
|
require 'aruba/cucumber'
|
||||||
|
|
||||||
|
require 'capybara/rails'
|
||||||
|
require 'capybara/cucumber'
|
||||||
|
require 'capybara/session'
|
||||||
|
# BUG in this version of cucumber/capybara: require 'cucumber/rails/capybara_javascript_emulation' # Lets you click links with onclick javascript handlers without using @culerity or @javascript
|
||||||
|
|
||||||
|
Capybara.default_wait_time = 5
|
||||||
|
Capybara.javascript_driver = ENV["JS_DRIVER"] ? ENV["JS_DRIVER"].to_sym : :selenium
|
||||||
|
|
||||||
|
if Capybara.javascript_driver == :webkit
|
||||||
|
require 'capybara/webkit'
|
||||||
|
end
|
||||||
|
|
||||||
|
# Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
|
||||||
|
# order to ease the transition to Capybara we set the default here. If you'd
|
||||||
|
# prefer to use XPath just remove this line and adjust any selectors in your
|
||||||
|
# steps to use the XPath syntax.
|
||||||
|
Capybara.default_selector = :css
|
||||||
|
|
||||||
|
Capybara.prefer_visible_elements = true
|
||||||
|
|
||||||
|
# If you set this to false, any error raised from within your app will bubble
|
||||||
|
# up to your step definition and out to cucumber unless you catch it somewhere
|
||||||
|
# on the way. You can make Rails rescue errors and render error pages on a
|
||||||
|
# per-scenario basis by tagging a scenario or feature with the @allow-rescue tag.
|
||||||
|
#
|
||||||
|
# If you set this to true, Rails will rescue all errors and render error
|
||||||
|
# pages, more or less in the same way your application would behave in the
|
||||||
|
# default production environment. It's not recommended to do this for all
|
||||||
|
# of your scenarios, as this makes it hard to discover errors in your application.
|
||||||
|
ActionController::Base.allow_rescue = false
|
||||||
|
|
||||||
|
# If you set this to true, each scenario will run in a database transaction.
|
||||||
|
# You can still turn off transactions on a per-scenario basis, simply tagging
|
||||||
|
# a feature or scenario with the @no-txn tag. If you are using Capybara,
|
||||||
|
# tagging with @culerity or @javascript will also turn transactions off.
|
||||||
|
#
|
||||||
|
# If you set this to false, transactions will be off for all scenarios,
|
||||||
|
# regardless of whether you use @no-txn or not.
|
||||||
|
#
|
||||||
|
# Beware that turning transactions off will leave data in your database
|
||||||
|
# after each scenario, which can lead to hard-to-debug failures in
|
||||||
|
# subsequent scenarios. If you do this, we recommend you create a Before
|
||||||
|
# block that will explicitly put your database in a known state.
|
||||||
|
Cucumber::Rails::World.use_transactional_fixtures = true
|
||||||
|
|
||||||
|
# How to clean your database when transactions are turned off. See
|
||||||
|
# http://github.com/bmabey/database_cleaner for more info.
|
||||||
|
if defined?(ActiveRecord::Base)
|
||||||
|
begin
|
||||||
|
require 'database_cleaner'
|
||||||
|
DatabaseCleaner.strategy = :truncation
|
||||||
|
rescue LoadError => ignore_if_database_cleaner_not_present
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -69,5 +69,6 @@ module Tracksapp
|
||||||
|
|
||||||
# allow onenote:// and message:// as protocols for urls
|
# allow onenote:// and message:// as protocols for urls
|
||||||
config.action_view.sanitized_allowed_protocols = 'onenote', 'message'
|
config.action_view.sanitized_allowed_protocols = 'onenote', 'message'
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
<%
|
<%
|
||||||
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
|
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
|
||||||
rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
|
rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
|
||||||
std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} --strict --tags ~@wip"
|
std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip"
|
||||||
%>
|
%>
|
||||||
default: <%= std_opts %> features
|
default: <%= std_opts %> features
|
||||||
wip: --tags @wip:15 --wip features
|
wip: --tags @wip:3 --wip features
|
||||||
rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip
|
rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
# Load the rails application
|
# Load the rails application
|
||||||
require File.expand_path('../application', __FILE__)
|
require File.expand_path('../application', __FILE__)
|
||||||
|
|
||||||
|
Encoding.default_external = Encoding::UTF_8
|
||||||
|
Encoding.default_internal = Encoding::UTF_8
|
||||||
|
|
||||||
# Initialize the rails application
|
# Initialize the rails application
|
||||||
Tracksapp::Application.initialize!
|
Tracksapp::Application.initialize!
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
---
|
---
|
||||||
he:
|
he:
|
||||||
will_paginate:
|
will_paginate:
|
||||||
page_entries_info:
|
page_entries_info:
|
||||||
multi_page: !binary |
|
multi_page: !binary |
|
||||||
157XpteZ15IgJXttb2RlbH0gJXtmcm9tfSAtICV7dG99INee16rXldeaICV7
|
157XpteZ15IgJXttb2RlbH0gJXtmcm9tfSAtICV7dG99INee16rXldeaICV7
|
||||||
Y291bnR9INeR16HXmiDXlNeb15w=
|
Y291bnR9INeR16HXmiDXlNeb15w=
|
||||||
|
|
||||||
single_page:
|
single_page:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
157XpteZ15Ig15DXqiDXm9ecICV7Y291bnR9ICV7bW9kZWx9
|
157XpteZ15Ig15DXqiDXm9ecICV7Y291bnR9ICV7bW9kZWx9
|
||||||
|
|
||||||
|
|
@ -20,7 +20,7 @@ he:
|
||||||
157XpteZ15IgJXttb2RlbH0gPGI+JXtmcm9tfSZuYnNwOy0mbmJzcDsle3Rv
|
157XpteZ15IgJXttb2RlbH0gPGI+JXtmcm9tfSZuYnNwOy0mbmJzcDsle3Rv
|
||||||
fTwvYj4g157XqteV15ogPGI+JXtjb3VudH08L2I+INeR16HXmiDXlNeb15w=
|
fTwvYj4g157XqteV15ogPGI+JXtjb3VudH08L2I+INeR16HXmiDXlNeb15w=
|
||||||
|
|
||||||
single_page_html:
|
single_page_html:
|
||||||
other: "\xD7\x9E\xD7\xA6\xD7\x99\xD7\x92 <b>\xD7\x9B\xD7\x9C %{count}</b> %{model}"
|
other: "\xD7\x9E\xD7\xA6\xD7\x99\xD7\x92 <b>\xD7\x9B\xD7\x9C %{count}</b> %{model}"
|
||||||
zero: !binary |
|
zero: !binary |
|
||||||
15zXkCDXoNee16bXkCAle21vZGVsfQ==
|
15zXkCDXoNee16bXkCAle21vZGVsfQ==
|
||||||
|
|
@ -33,7 +33,7 @@ he:
|
||||||
next_label: !binary |
|
next_label: !binary |
|
||||||
15TXkdeQICZyYXF1bzs=
|
15TXkdeQICZyYXF1bzs=
|
||||||
|
|
||||||
integrations:
|
integrations:
|
||||||
applescript_success_before_id: !binary |
|
applescript_success_before_id: !binary |
|
||||||
16TXoteV15zXqiDXlNee16nXmiDXotedINeW15nXlNeV15k=
|
16TXoteV15zXqiDXlNee16nXmiDXotedINeW15nXlNeV15k=
|
||||||
|
|
||||||
|
|
@ -50,7 +50,7 @@ he:
|
||||||
opensearch_description: !binary |
|
opensearch_description: !binary |
|
||||||
15fXmdek15XXqSDXkdee16HXnNeV15zXmded
|
15fXmdek15XXqSDXkdee16HXnNeV15zXmded
|
||||||
|
|
||||||
projects:
|
projects:
|
||||||
edit_project_settings: !binary |
|
edit_project_settings: !binary |
|
||||||
16LXqNeZ15vXqiDXlNeS15PXqNeV16og16TXqNeV15nXmden15g=
|
16LXqNeZ15vXqiDXlNeS15PXqNeV16og16TXqNeV15nXmden15g=
|
||||||
|
|
||||||
|
|
@ -233,14 +233,14 @@ he:
|
||||||
list_reviews: !binary |
|
list_reviews: !binary |
|
||||||
157Xodec15XXnNeZ1506Oteh16fXmdeo15Q=
|
157Xodec15XXnNeZ1506Oteh16fXmdeo15Q=
|
||||||
|
|
||||||
errors:
|
errors:
|
||||||
user_unauthorized: !binary |
|
user_unauthorized: !binary |
|
||||||
NDAxINec15Ag157XkNeV16nXqDog16jXpyDXntep16rXntep15nXnSDXkdeT
|
NDAxINec15Ag157XkNeV16nXqDog16jXpyDXntep16rXntep15nXnSDXkdeT
|
||||||
16jXkteqINee16DXlNecINeo16nXkNeZ150g15zXlNek16LXmdecINek16LX
|
16jXkteqINee16DXlNecINeo16nXkNeZ150g15zXlNek16LXmdecINek16LX
|
||||||
ldec15Qg15bXlQ==
|
ldec15Qg15bXlQ==
|
||||||
|
|
||||||
support:
|
support:
|
||||||
array:
|
array:
|
||||||
words_connector: ","
|
words_connector: ","
|
||||||
last_word_connector: !binary |
|
last_word_connector: !binary |
|
||||||
LCDXlS0=
|
LCDXlS0=
|
||||||
|
|
@ -248,11 +248,11 @@ he:
|
||||||
two_words_connector: !binary |
|
two_words_connector: !binary |
|
||||||
15Ut
|
15Ut
|
||||||
|
|
||||||
select:
|
select:
|
||||||
prompt: !binary |
|
prompt: !binary |
|
||||||
15nXqSDXnNeR16bXoiDXkdeX15nXqNeU
|
15nXqSDXnNeR16bXoiDXkdeX15nXqNeU
|
||||||
|
|
||||||
login:
|
login:
|
||||||
log_in_again: !binary |
|
log_in_again: !binary |
|
||||||
15vXoNeZ16HXlCDXnteX15XXk9ep16o=
|
15vXoNeZ16HXlCDXnteX15XXk9ep16o=
|
||||||
|
|
||||||
|
|
@ -333,7 +333,7 @@ he:
|
||||||
user_no_expiry: !binary |
|
user_no_expiry: !binary |
|
||||||
15TXqdeQ16jXqiDXl9eZ15HXldeo
|
15TXqdeQ16jXqiDXl9eZ15HXldeo
|
||||||
|
|
||||||
sidebar:
|
sidebar:
|
||||||
list_name_active_contexts: !binary |
|
list_name_active_contexts: !binary |
|
||||||
15TXp9ep16jXmdedINek16LXmdec15nXnQ==
|
15TXp9ep16jXmdedINek16LXmdec15nXnQ==
|
||||||
|
|
||||||
|
|
@ -352,16 +352,16 @@ he:
|
||||||
list_empty: !binary |
|
list_empty: !binary |
|
||||||
15DXmdef
|
15DXmdef
|
||||||
|
|
||||||
datetime:
|
datetime:
|
||||||
distance_in_words:
|
distance_in_words:
|
||||||
about_x_years:
|
about_x_years:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
15stJXtjb3VudH0g16nXoNeZ150=
|
15stJXtjb3VudH0g16nXoNeZ150=
|
||||||
|
|
||||||
one: !binary |
|
one: !binary |
|
||||||
15vXqdeg15Q=
|
15vXqdeg15Q=
|
||||||
|
|
||||||
less_than_x_seconds:
|
less_than_x_seconds:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
16TXl9eV16og154tJXtjb3VudH0g16nXoNeZ15XXqg==
|
16TXl9eV16og154tJXtjb3VudH0g16nXoNeZ15XXqg==
|
||||||
|
|
||||||
|
|
@ -371,7 +371,7 @@ he:
|
||||||
one: !binary |
|
one: !binary |
|
||||||
16TXl9eV16og157Xqdeg15nXmdeU
|
16TXl9eV16og157Xqdeg15nXmdeU
|
||||||
|
|
||||||
less_than_x_minutes:
|
less_than_x_minutes:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
16TXl9eV16og154tJXtjb3VudH0g15PXp9eV16o=
|
16TXl9eV16og154tJXtjb3VudH0g15PXp9eV16o=
|
||||||
|
|
||||||
|
|
@ -381,56 +381,56 @@ he:
|
||||||
one: !binary |
|
one: !binary |
|
||||||
16TXl9eV16og157Xk9en15Q=
|
16TXl9eV16og157Xk9en15Q=
|
||||||
|
|
||||||
x_minutes:
|
x_minutes:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
JXtjb3VudH0g15PXp9eV16o=
|
JXtjb3VudH0g15PXp9eV16o=
|
||||||
|
|
||||||
one: !binary |
|
one: !binary |
|
||||||
15PXp9eU
|
15PXp9eU
|
||||||
|
|
||||||
almost_x_years:
|
almost_x_years:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
15vXntei15ggJXtjb3VudH0g16nXoNeZ150=
|
15vXntei15ggJXtjb3VudH0g16nXoNeZ150=
|
||||||
|
|
||||||
one: !binary |
|
one: !binary |
|
||||||
15vXntei15gg16nXoNeU
|
15vXntei15gg16nXoNeU
|
||||||
|
|
||||||
about_x_months:
|
about_x_months:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
15stJXtjb3VudH0g15fXldeT16nXmded
|
15stJXtjb3VudH0g15fXldeT16nXmded
|
||||||
|
|
||||||
one: !binary |
|
one: !binary |
|
||||||
15vXl9eV15PXqQ==
|
15vXl9eV15PXqQ==
|
||||||
|
|
||||||
x_seconds:
|
x_seconds:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
JXtjb3VudH0g16nXoNeZ15XXqg==
|
JXtjb3VudH0g16nXoNeZ15XXqg==
|
||||||
|
|
||||||
one: !binary |
|
one: !binary |
|
||||||
16nXoNeZ15nXlA==
|
16nXoNeZ15nXlA==
|
||||||
|
|
||||||
over_x_years:
|
over_x_years:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
157XotecICV7Y291bnR9INep16DXmded
|
157XotecICV7Y291bnR9INep16DXmded
|
||||||
|
|
||||||
one: !binary |
|
one: !binary |
|
||||||
157Xotec15Qg15zXqdeg15Q=
|
157Xotec15Qg15zXqdeg15Q=
|
||||||
|
|
||||||
about_x_hours:
|
about_x_hours:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
15stJXtjb3VudH0g16nXoteV16o=
|
15stJXtjb3VudH0g16nXoteV16o=
|
||||||
|
|
||||||
one: !binary |
|
one: !binary |
|
||||||
15vXqdei15Q=
|
15vXqdei15Q=
|
||||||
|
|
||||||
x_months:
|
x_months:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
JXtjb3VudH0g15fXldeT16nXmded
|
JXtjb3VudH0g15fXldeT16nXmded
|
||||||
|
|
||||||
one: !binary |
|
one: !binary |
|
||||||
15fXldeT16k=
|
15fXldeT16k=
|
||||||
|
|
||||||
x_days:
|
x_days:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
JXtjb3VudH0g15nXnteZ150=
|
JXtjb3VudH0g15nXnteZ150=
|
||||||
|
|
||||||
|
|
@ -440,7 +440,7 @@ he:
|
||||||
half_a_minute: !binary |
|
half_a_minute: !binary |
|
||||||
15fXpteZINeT16fXlA==
|
15fXpteZINeT16fXlA==
|
||||||
|
|
||||||
prompts:
|
prompts:
|
||||||
hour: !binary |
|
hour: !binary |
|
||||||
16nXoteU
|
16nXoteU
|
||||||
|
|
||||||
|
|
@ -459,13 +459,13 @@ he:
|
||||||
year: !binary |
|
year: !binary |
|
||||||
16nXoNeU
|
16nXoNeU
|
||||||
|
|
||||||
activerecord:
|
activerecord:
|
||||||
errors:
|
errors:
|
||||||
template:
|
template:
|
||||||
body: !binary |
|
body: !binary |
|
||||||
15HXoteZ15XXqiDXkdep15PXldeqINeU15HXkNeZ1506
|
15HXoteZ15XXqiDXkdep15PXldeqINeU15HXkNeZ1506
|
||||||
|
|
||||||
header:
|
header:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
16nXkteZ15DXldeqINee16DXoteVINee157XldeT15wgJXttb2RlbH0g15zX
|
16nXkteZ15DXldeqINee16DXoteVINee157XldeT15wgJXttb2RlbH0g15zX
|
||||||
lNeZ16nXnteo
|
lNeZ16nXnteo
|
||||||
|
|
@ -474,7 +474,7 @@ he:
|
||||||
16nXkteZ15DXlCDXnteg16LXlCDXntee15XXk9ecICV7bW9kZWx9INec15TX
|
16nXkteZ15DXlCDXnteg16LXlCDXntee15XXk9ecICV7bW9kZWx9INec15TX
|
||||||
mdep157XqA==
|
mdep157XqA==
|
||||||
|
|
||||||
messages:
|
messages:
|
||||||
greater_than: !binary |
|
greater_than: !binary |
|
||||||
15fXmdeZ15Eg15zXlNeZ15XXqiDXkteT15XXnCDXniAle2NvdW50fQ==
|
15fXmdeZ15Eg15zXlNeZ15XXqiDXkteT15XXnCDXniAle2NvdW50fQ==
|
||||||
|
|
||||||
|
|
@ -541,10 +541,10 @@ he:
|
||||||
empty: !binary |
|
empty: !binary |
|
||||||
15zXkCDXmdeb15XXnCDXnNeU15nXldeqINeo15nXpw==
|
15zXkCDXmdeb15XXnCDXnNeU15nXldeqINeo15nXpw==
|
||||||
|
|
||||||
models:
|
models:
|
||||||
project:
|
project:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
too_long: !binary |
|
too_long: !binary |
|
||||||
16LXnCDXqdedINeU16TXqNeV15nXmden15gg15zXlNeb15nXnCDXpNeX15XX
|
16LXnCDXqdedINeU16TXqNeV15nXmden15gg15zXlNeb15nXnCDXpNeX15XX
|
||||||
qiDXni0yNTYg16rXldeV15nXnQ==
|
qiDXni0yNTYg16rXldeV15nXnQ==
|
||||||
|
|
@ -555,10 +555,10 @@ he:
|
||||||
taken: !binary |
|
taken: !binary |
|
||||||
15vXkdeoINen15nXmded
|
15vXkdeoINen15nXmded
|
||||||
|
|
||||||
full_messages:
|
full_messages:
|
||||||
format: "%{attribute} %{message}"
|
format: "%{attribute} %{message}"
|
||||||
attributes:
|
attributes:
|
||||||
todo:
|
todo:
|
||||||
description: !binary |
|
description: !binary |
|
||||||
16rXmdeQ15XXqA==
|
16rXmdeQ15XXqA==
|
||||||
|
|
||||||
|
|
@ -583,21 +583,21 @@ he:
|
||||||
notes: !binary |
|
notes: !binary |
|
||||||
16TXqten15nXldeq
|
16TXqten15nXldeq
|
||||||
|
|
||||||
note:
|
note:
|
||||||
created_at: !binary |
|
created_at: !binary |
|
||||||
16DXldem16gg15E=
|
16DXldem16gg15E=
|
||||||
|
|
||||||
updated_at: !binary |
|
updated_at: !binary |
|
||||||
16LXldeT15vXnyDXkQ==
|
16LXldeT15vXnyDXkQ==
|
||||||
|
|
||||||
user:
|
user:
|
||||||
first_name: !binary |
|
first_name: !binary |
|
||||||
16nXnSDXpNeo15jXmQ==
|
16nXnSDXpNeo15jXmQ==
|
||||||
|
|
||||||
last_name: !binary |
|
last_name: !binary |
|
||||||
16nXnSDXntep16TXl9eU
|
16nXnSDXntep16TXl9eU
|
||||||
|
|
||||||
project:
|
project:
|
||||||
name: !binary |
|
name: !binary |
|
||||||
16nXnQ==
|
16nXnQ==
|
||||||
|
|
||||||
|
|
@ -610,7 +610,7 @@ he:
|
||||||
default_tags: !binary |
|
default_tags: !binary |
|
||||||
16rXkteZ15XXqiDXkdeo15nXqNeqINee15fXk9ec
|
16rXkteZ15XXqiDXkdeo15nXqNeqINee15fXk9ec
|
||||||
|
|
||||||
preference:
|
preference:
|
||||||
review_period: !binary |
|
review_period: !binary |
|
||||||
16rXk9eZ16jXldeqINeo16LXoNeV158g16TXqNeV15nXmden15g=
|
16rXk9eZ16jXldeqINeo16LXoNeV158g16TXqNeV15nXmden15g=
|
||||||
|
|
||||||
|
|
@ -676,20 +676,20 @@ he:
|
||||||
time_zone: !binary |
|
time_zone: !binary |
|
||||||
15DXlteV16gg15bXntef
|
15DXlteV16gg15bXntef
|
||||||
|
|
||||||
data:
|
data:
|
||||||
import_successful: !binary |
|
import_successful: !binary |
|
||||||
15nXkdeV15Ag15HXldem16Ig15HXlNem15zXl9eU
|
15nXkdeV15Ag15HXldem16Ig15HXlNem15zXl9eU
|
||||||
|
|
||||||
import_errors: !binary |
|
import_errors: !binary |
|
||||||
16nXkteZ15DXldeqINeR15nXkdeV15A=
|
16nXkteZ15DXldeqINeR15nXkdeV15A=
|
||||||
|
|
||||||
date:
|
date:
|
||||||
formats:
|
formats:
|
||||||
short: "%b %d "
|
short: "%b %d "
|
||||||
longer: "%A %B %d, %Y"
|
longer: "%A %B %d, %Y"
|
||||||
default: "%Y-%m-%d "
|
default: "%Y-%m-%d "
|
||||||
long: "%B %d, %Y "
|
long: "%B %d, %Y "
|
||||||
shared:
|
shared:
|
||||||
toggle_single_title: !binary |
|
toggle_single_title: !binary |
|
||||||
15TXldeh16TXqiDXpNei15XXnNeqINeU157XqdeaINeX15PXqdeU
|
15TXldeh16TXqiDXpNei15XXnNeqINeU157XqdeaINeX15PXqdeU
|
||||||
|
|
||||||
|
|
@ -738,11 +738,11 @@ he:
|
||||||
add_context: !binary |
|
add_context: !binary |
|
||||||
15TXldeh16TXqiDXlNen16nXqA==
|
15TXldeh16TXqiDXlNen16nXqA==
|
||||||
|
|
||||||
time:
|
time:
|
||||||
pm: !binary |
|
pm: !binary |
|
||||||
15DXl9eUItem
|
15DXl9eUItem
|
||||||
|
|
||||||
formats:
|
formats:
|
||||||
short: "%d %b %H:%M "
|
short: "%d %b %H:%M "
|
||||||
stats: "%a %d-%m"
|
stats: "%a %d-%m"
|
||||||
default: "%a, %d %b %Y %H:%M:%S %z "
|
default: "%a, %d %b %Y %H:%M:%S %z "
|
||||||
|
|
@ -751,7 +751,7 @@ he:
|
||||||
am: !binary |
|
am: !binary |
|
||||||
15zXpNeg15Qi16Y=
|
15zXpNeg15Qi16Y=
|
||||||
|
|
||||||
todos:
|
todos:
|
||||||
added_new_project: !binary |
|
added_new_project: !binary |
|
||||||
16DXldeh16Mg16TXqNeV15nXmden15gg15fXk9ep
|
16DXldeh16Mg16TXqNeV15nXmden15gg15fXk9ep
|
||||||
|
|
||||||
|
|
@ -771,7 +771,7 @@ he:
|
||||||
16rXnNeV15kg15EtICjXmdepINec15TXpNeo15nXkyDXkdek16HXmden15nX
|
16rXnNeV15kg15EtICjXmdepINec15TXpNeo15nXkyDXkdek16HXmden15nX
|
||||||
nSg=
|
nSg=
|
||||||
|
|
||||||
next_actions_description_additions:
|
next_actions_description_additions:
|
||||||
due_date: !binary |
|
due_date: !binary |
|
||||||
16LXnSDXqteQ16jXmdeaINeZ16LXkyAle2R1ZV9kYXRlfSDXkNeVINee15XX
|
16LXnSDXqteQ16jXmdeaINeZ16LXkyAle2R1ZV9kYXRlfSDXkNeVINee15XX
|
||||||
p9eT150g15nXldeq16gg
|
p9eT150g15nXldeq16gg
|
||||||
|
|
@ -785,7 +785,7 @@ he:
|
||||||
calendar_page_title: !binary |
|
calendar_page_title: !binary |
|
||||||
157Xodec15XXnNeZ1506Otec15XXlyDXqdeg15Q=
|
157Xodec15XXnNeZ1506Otec15XXlyDXqdeg15Q=
|
||||||
|
|
||||||
calendar:
|
calendar:
|
||||||
no_actions_due_after_this_month: !binary |
|
no_actions_due_after_this_month: !binary |
|
||||||
15DXmdefINek16LXldec15XXqiDXnNeR15nXpteV16Ig15zXkNeX16gg15fX
|
15DXmdefINek16LXldec15XXqiDXnNeR15nXpteV16Ig15zXkNeX16gg15fX
|
||||||
ldeT16kg15bXlA==
|
ldeT16kg15bXlA==
|
||||||
|
|
@ -840,7 +840,7 @@ he:
|
||||||
show_from: !binary |
|
show_from: !binary |
|
||||||
15TXpteS15Qg154t
|
15TXpteS15Qg154t
|
||||||
|
|
||||||
next_actions_due_date:
|
next_actions_due_date:
|
||||||
due_tomorrow: !binary |
|
due_tomorrow: !binary |
|
||||||
15zXnteX16g=
|
15zXnteX16g=
|
||||||
|
|
||||||
|
|
@ -938,7 +938,7 @@ he:
|
||||||
feed_title_in_project: !binary |
|
feed_title_in_project: !binary |
|
||||||
15HXpNeo15XXmdeZ16fXmCAnJXtwcm9qZWN0fSc=
|
15HXpNeo15XXmdeZ16fXmCAnJXtwcm9qZWN0fSc=
|
||||||
|
|
||||||
next_actions_title_additions:
|
next_actions_title_additions:
|
||||||
completed: !binary |
|
completed: !binary |
|
||||||
16TXoteV15zXldeqINep15TXodeq15nXnteV
|
16TXoteV15zXldeqINep15TXodeq15nXnteV
|
||||||
|
|
||||||
|
|
@ -965,7 +965,7 @@ he:
|
||||||
15nXqSDXnNeU15bXmdefINec16TXl9eV16og16TXoteV15zXqiDXlNee16nX
|
15nXqSDXnNeU15bXmdefINec16TXl9eV16og16TXoteV15zXqiDXlNee16nX
|
||||||
miDXkNeX16o=
|
miDXkNeX16o=
|
||||||
|
|
||||||
tickler_items_due:
|
tickler_items_due:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
JXtjb3VudH0g157XlNee1rTXltaw15vWuNa816jXmdedINeU15LXmdei15Ug
|
JXtjb3VudH0g157XlNee1rTXltaw15vWuNa816jXmdedINeU15LXmdei15Ug
|
||||||
15zXqteQ16jXmdeaINeU15nXoteTIC0g15nXqSDXnNeo16LXoNefINeU16LX
|
15zXqteQ16jXmdeaINeU15nXoteTIC0g15nXqSDXnNeo16LXoNefINeU16LX
|
||||||
|
|
@ -996,7 +996,7 @@ he:
|
||||||
add_another_dependency: !binary |
|
add_another_dependency: !binary |
|
||||||
15TXldeh16TXqiDXqtec15XXqiDXoNeV16HXpNeq
|
15TXldeh16TXqiDXqtec15XXqiDXoNeV16HXpNeq
|
||||||
|
|
||||||
defer_x_days:
|
defer_x_days:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
15PXl9eZ15Qg15EtJXtjb3VudH0g15nXnteZ150=
|
15PXl9eZ15Qg15EtJXtjb3VudH0g15nXnteZ150=
|
||||||
|
|
||||||
|
|
@ -1057,7 +1057,7 @@ he:
|
||||||
157XqdeZ157XlCDXl9eT16nXlCDXlNeV16HXpNeUINec157XqdeZ157XlCDX
|
157XqdeZ157XlCDXl9eT16nXlCDXlNeV16HXpNeUINec157XqdeZ157XlCDX
|
||||||
nteX15bXldeo15nXqiDXlteV
|
nteX15bXldeo15nXqiDXlteV
|
||||||
|
|
||||||
completed_in_archive:
|
completed_in_archive:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
16fXmdeZ157XldeqICV7Y291bnR9INek16LXldec15XXqiDXqdeU16HXqteZ
|
16fXmdeZ157XldeqICV7Y291bnR9INek16LXldec15XXqiDXqdeU16HXqteZ
|
||||||
15nXnteVINeR15DXqNeb15nXldefLg==
|
15nXnteVINeR15DXqNeb15nXldefLg==
|
||||||
|
|
@ -1150,7 +1150,7 @@ he:
|
||||||
157Xodec15XXnNeZ1506INee16nXmdee15XXqiDXqdeU16HXqteZ15nXnteV
|
157Xodec15XXnNeZ1506INee16nXmdee15XXqiDXqdeU16HXqteZ15nXnteV
|
||||||
INeU15XXoteR16jXlSDXnNeQ16jXm9eZ15XXnw==
|
INeU15XXoteR16jXlSDXnNeQ16jXm9eZ15XXnw==
|
||||||
|
|
||||||
completed_today:
|
completed_today:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
16LXkyDXoteq15Qg15TXodeq15nXmdee15UgJXtjb3VudH0g16TXoteV15zX
|
16LXkyDXoteq15Qg15TXodeq15nXmdee15UgJXtjb3VudH0g16TXoteV15zX
|
||||||
qiDXlNeZ15XXnS4=
|
qiDXlNeZ15XXnS4=
|
||||||
|
|
@ -1192,7 +1192,7 @@ he:
|
||||||
15DXmdefINek16LXldec15XXqiDXqdeU16HXqteZ15nXnteVINei15wg15TX
|
15DXmdefINek16LXldec15XXqiDXqdeU16HXqteZ15nXnteVINei15wg15TX
|
||||||
qteS15nXqiAnJXt0YWdfbmFtZX0n
|
qteS15nXqiAnJXt0YWdfbmFtZX0n
|
||||||
|
|
||||||
feeds:
|
feeds:
|
||||||
completed: !binary |
|
completed: !binary |
|
||||||
15TXodeq15nXmdedOiAle2RhdGV9
|
15TXodeq15nXmdedOiAle2RhdGV9
|
||||||
|
|
||||||
|
|
@ -1214,7 +1214,7 @@ he:
|
||||||
16jXqdeZ157XqiDXpNei15XXnNeV16og15TXntep15og16nXnNeQINeU16HX
|
16jXqdeZ157XqiDXpNei15XXnNeV16og15TXntep15og16nXnNeQINeU16HX
|
||||||
qteZ15nXnteV
|
qteZ15nXnteV
|
||||||
|
|
||||||
recurrence:
|
recurrence:
|
||||||
recurrence_on_options: !binary |
|
recurrence_on_options: !binary |
|
||||||
15TXkteT16jXqiDXnteX15bXldeo15nXldeqINec16TXmQ==
|
15TXkteT16jXqiDXnteX15bXldeo15nXldeqINec16TXmQ==
|
||||||
|
|
||||||
|
|
@ -1287,7 +1287,7 @@ he:
|
||||||
day_x_on_every_x_month: !binary |
|
day_x_on_every_x_month: !binary |
|
||||||
15HXmdeV150gJXtkYXl9INeR15vXnCAle21vbnRofSAg15fXldeT16k=
|
15HXmdeV150gJXtkYXl9INeR15vXnCAle21vbnRofSAg15fXldeT16k=
|
||||||
|
|
||||||
pattern:
|
pattern:
|
||||||
on_day_n: !binary |
|
on_day_n: !binary |
|
||||||
15HXmdeV150gJXtufQ==
|
15HXmdeV150gJXtufQ==
|
||||||
|
|
||||||
|
|
@ -1415,7 +1415,7 @@ he:
|
||||||
INeU15PXktep16og15TXntep15nXnteUINeU157Xl9eW15XXqNeZ16ogIFwn
|
INeU15PXktep16og15TXntep15nXnteUINeU157Xl9eW15XXqNeZ16ogIFwn
|
||||||
JXtkZXNjcmlwdGlvbn1cJyDXnNeQINem15zXl9eU
|
JXtkZXNjcmlwdGlvbn1cJyDXnNeQINem15zXl9eU
|
||||||
|
|
||||||
has_x_pending:
|
has_x_pending:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
157Xm9eZ15wgJXtjb3VudH0g16TXoteV15zXqiDXntee16rXmdeg15XXqg==
|
157Xm9eZ15wgJXtjb3VudH0g16TXoteV15zXqiDXntee16rXmdeg15XXqg==
|
||||||
|
|
||||||
|
|
@ -1457,7 +1457,7 @@ he:
|
||||||
next_actions_description: !binary |
|
next_actions_description: !binary |
|
||||||
157Xodeg1586
|
157Xodeg1586
|
||||||
|
|
||||||
stats:
|
stats:
|
||||||
actions_avg_completed_30days: !binary |
|
actions_avg_completed_30days: !binary |
|
||||||
15XXlNeh16rXmdeZ157XlSDXkdee157Xldem16IgJXtjb3VudH0g16TXoteV
|
15XXlNeh16rXmdeZ157XlSDXkdee157Xldem16IgJXtjb3VudH0g16TXoteV
|
||||||
15zXldeqINec15nXlded
|
15zXldeqINec15nXlded
|
||||||
|
|
@ -1465,7 +1465,7 @@ he:
|
||||||
projects: !binary |
|
projects: !binary |
|
||||||
16TXqNeV15nXmden15jXmded
|
16TXqNeV15nXmden15jXmded
|
||||||
|
|
||||||
actions_dow_30days_legend:
|
actions_dow_30days_legend:
|
||||||
number_of_actions: !binary |
|
number_of_actions: !binary |
|
||||||
157Xodek16gg16TXoteV15zXldeq
|
157Xodek16gg16TXoteV15zXldeq
|
||||||
|
|
||||||
|
|
@ -1489,7 +1489,7 @@ he:
|
||||||
totals_context_count: !binary |
|
totals_context_count: !binary |
|
||||||
16fXmdeZ157XmdedICV7Y291bnR9INeU16fXqdeo15nXnS4=
|
16fXmdeZ157XmdedICV7Y291bnR9INeU16fXqdeo15nXnS4=
|
||||||
|
|
||||||
running_time_legend:
|
running_time_legend:
|
||||||
percentage: !binary |
|
percentage: !binary |
|
||||||
15DXl9eV15Y=
|
15DXl9eV15Y=
|
||||||
|
|
||||||
|
|
@ -1528,7 +1528,7 @@ he:
|
||||||
15bXntefINeh15nXldedICjXm9ecINeU16TXoteV15zXldeqINep15TXodeq
|
15bXntefINeh15nXldedICjXm9ecINeU16TXoteV15zXldeqINep15TXodeq
|
||||||
15nXmdee15Up
|
15nXmdee15Up
|
||||||
|
|
||||||
open_per_week_legend:
|
open_per_week_legend:
|
||||||
weeks: !binary |
|
weeks: !binary |
|
||||||
16nXkdeV16LXldeqINen15XXk9edINec15vXnw==
|
16nXkdeV16LXldeqINen15XXk9edINec15vXnw==
|
||||||
|
|
||||||
|
|
@ -1559,7 +1559,7 @@ he:
|
||||||
15nXldedINeR16nXkdeV16IgKDMwINeU15nXnteZ150g15TXkNeX16jXldeg
|
15nXldedINeR16nXkdeV16IgKDMwINeU15nXnteZ150g15TXkNeX16jXldeg
|
||||||
15nXnSg=
|
15nXnSg=
|
||||||
|
|
||||||
legend:
|
legend:
|
||||||
number_of_actions: !binary |
|
number_of_actions: !binary |
|
||||||
157Xodek16gg16TXoteV15zXldeq
|
157Xodek16gg16TXoteV15zXldeq
|
||||||
|
|
||||||
|
|
@ -1581,7 +1581,7 @@ he:
|
||||||
actions: !binary |
|
actions: !binary |
|
||||||
16TXoteV15zXldeq
|
16TXoteV15zXldeq
|
||||||
|
|
||||||
actions_last_year_legend:
|
actions_last_year_legend:
|
||||||
number_of_actions: !binary |
|
number_of_actions: !binary |
|
||||||
157Xodek16gg15TXpNei15XXnNeV16o=
|
157Xodek16gg15TXpNei15XXnNeV16o=
|
||||||
|
|
||||||
|
|
@ -1609,7 +1609,7 @@ he:
|
||||||
totals: !binary |
|
totals: !binary |
|
||||||
16HXmdeb15XXnteZ150=
|
16HXmdeb15XXnteZ150=
|
||||||
|
|
||||||
time_of_day_legend:
|
time_of_day_legend:
|
||||||
number_of_actions: !binary |
|
number_of_actions: !binary |
|
||||||
157Xodek16gg16TXoteV15zXldeq
|
157Xodek16gg16TXoteV15zXldeq
|
||||||
|
|
||||||
|
|
@ -1642,7 +1642,7 @@ he:
|
||||||
totals_hidden_context_count: !binary |
|
totals_hidden_context_count: !binary |
|
||||||
15UtJXtjb3VudH0g15HXlNen16nXqNeZ150g157Xldeh16rXqNeZ150u
|
15UtJXtjb3VudH0g15HXlNen16nXqNeZ150g157Xldeh16rXqNeZ150u
|
||||||
|
|
||||||
actions_day_of_week_legend:
|
actions_day_of_week_legend:
|
||||||
number_of_actions: !binary |
|
number_of_actions: !binary |
|
||||||
157Xodek16gg16TXoteV15zXldeq
|
157Xodek16gg16TXoteV15zXldeq
|
||||||
|
|
||||||
|
|
@ -1703,7 +1703,7 @@ he:
|
||||||
time_of_day: !binary |
|
time_of_day: !binary |
|
||||||
15bXntefINeR15nXldedICjXm9ecINeU16TXoteV15zXldeqKQ==
|
15bXntefINeR15nXldedICjXm9ecINeU16TXoteV15zXldeqKQ==
|
||||||
|
|
||||||
labels:
|
labels:
|
||||||
avg_created: !binary |
|
avg_created: !binary |
|
||||||
16DXldem16jXlSDXkdee157Xldem16I=
|
16DXldem16jXlSDXkdee157Xldem16I=
|
||||||
|
|
||||||
|
|
@ -1729,7 +1729,7 @@ he:
|
||||||
tag_cloud_title: !binary |
|
tag_cloud_title: !binary |
|
||||||
16LXoNefINeq15LXmdeV16og15zXm9ecINeU16TXoteV15zXldeq
|
16LXoNefINeq15LXmdeV16og15zXm9ecINeU16TXoteV15zXldeq
|
||||||
|
|
||||||
running_time_all_legend:
|
running_time_all_legend:
|
||||||
percentage: !binary |
|
percentage: !binary |
|
||||||
15DXl9eV15Y=
|
15DXl9eV15Y=
|
||||||
|
|
||||||
|
|
@ -1759,7 +1759,7 @@ he:
|
||||||
click_to_return_link: !binary |
|
click_to_return_link: !binary |
|
||||||
15vXkNef
|
15vXkNef
|
||||||
|
|
||||||
tod30_legend:
|
tod30_legend:
|
||||||
number_of_actions: !binary |
|
number_of_actions: !binary |
|
||||||
157Xodek16gg16TXoteV15zXldeq
|
157Xodek16gg16TXoteV15zXldeq
|
||||||
|
|
||||||
|
|
@ -1792,7 +1792,7 @@ he:
|
||||||
15EtMzAg15TXmdee15nXnSDXlNeQ15fXqNeV16DXmdedINeg15XXpteo15Ug
|
15EtMzAg15TXmdee15nXnSDXlNeQ15fXqNeV16DXmdedINeg15XXpteo15Ug
|
||||||
15HXntee15XXpteiICV7Y291bnR9INek16LXldec15XXqg==
|
15HXntee15XXpteiICV7Y291bnR9INek16LXldec15XXqg==
|
||||||
|
|
||||||
search:
|
search:
|
||||||
no_results: !binary |
|
no_results: !binary |
|
||||||
15TXl9eZ16TXldepINec15Ag15TXoNeZ15Eg16rXldem15DXldeq
|
15TXl9eZ16TXldepINec15Ag15TXoNeZ15Eg16rXldem15DXldeq
|
||||||
|
|
||||||
|
|
@ -1811,7 +1811,7 @@ he:
|
||||||
notes_matching_query: !binary |
|
notes_matching_query: !binary |
|
||||||
16TXqten15nXldeqINeq15XXkNee15XXqiDXqdeQ15nXnNeq15A=
|
16TXqten15nXldeqINeq15XXkNee15XXqiDXqdeQ15nXnNeq15A=
|
||||||
|
|
||||||
contexts:
|
contexts:
|
||||||
last_completed_in_context: !binary |
|
last_completed_in_context: !binary |
|
||||||
15HXlNen16nXqCDXlteUICAo15DXl9eo15XXoNeV16ogJXtudW1iZXJ9KQ==
|
15HXlNen16nXqCDXlteUICAo15DXl9eo15XXoNeV16ogJXtudW1iZXJ9KQ==
|
||||||
|
|
||||||
|
|
@ -1901,12 +1901,12 @@ he:
|
||||||
show_form_title: !binary |
|
show_form_title: !binary |
|
||||||
15TXldeh16TXqiDXlNen16nXqA==
|
15TXldeh16TXqiDXlNen16nXqA==
|
||||||
|
|
||||||
models:
|
models:
|
||||||
todo:
|
todo:
|
||||||
error_date_must_be_future: !binary |
|
error_date_must_be_future: !binary |
|
||||||
15fXmdeZ15Eg15zXlNeZ15XXqiDXqteQ16jXmdeaINei16rXmdeT15k=
|
15fXmdeZ15Eg15zXlNeZ15XXqiDXqteQ16jXmdeaINei16rXmdeT15k=
|
||||||
|
|
||||||
user:
|
user:
|
||||||
error_project_not_associated: !binary |
|
error_project_not_associated: !binary |
|
||||||
157XlteU15Qg16TXqNeV15nXmden15ggJXtwcm9qZWN0fSDXkNeZ16DXlSDX
|
157XlteU15Qg16TXqNeV15nXmden15ggJXtwcm9qZWN0fSDXkNeZ16DXlSDX
|
||||||
ntep15XXmdeZ15og16LXnSDXnteW15Qg157Xqdeq157XqSAle3VzZXJ9Lg==
|
ntep15XXmdeZ15og16LXnSDXnteW15Qg157Xqdeq157XqSAle3VzZXJ9Lg==
|
||||||
|
|
@ -1915,7 +1915,7 @@ he:
|
||||||
157XlteU15Qg15TXp9ep16ggJXtjb250ZXh0fSDXkNeZ16DXlSDXntep15XX
|
157XlteU15Qg15TXp9ep16ggJXtjb250ZXh0fSDXkNeZ16DXlSDXntep15XX
|
||||||
mdeZ15og16LXnSDXnteW15Qg157Xqdeq157XqSAle3VzZXJ9Lg==
|
mdeZ15og16LXnSDXnteW15Qg157Xqdeq157XqSAle3VzZXJ9Lg==
|
||||||
|
|
||||||
project:
|
project:
|
||||||
feed_title: !binary |
|
feed_title: !binary |
|
||||||
16TXqNeV15nXmden15jXmdedINeR157Xodec15XXnNeZ150=
|
16TXqNeV15nXmden15jXmdedINeR157Xodec15XXnNeZ150=
|
||||||
|
|
||||||
|
|
@ -1923,14 +1923,14 @@ he:
|
||||||
16jXqdeZ157XqiDXm9ecINeU16TXqNeV15nXmden15jXmdedINei15HXldeo
|
16jXqdeZ157XqiDXm9ecINeU16TXqNeV15nXmden15jXmdedINei15HXldeo
|
||||||
ICV7dXNlcm5hbWV9
|
ICV7dXNlcm5hbWV9
|
||||||
|
|
||||||
preference:
|
preference:
|
||||||
due_on: !binary |
|
due_on: !binary |
|
||||||
LSDXmdei15Mg15Ele2RhdGV9
|
LSDXmdei15Mg15Ele2RhdGV9
|
||||||
|
|
||||||
due_in: !binary |
|
due_in: !binary |
|
||||||
16rXkNeo15nXmiDXmdei15Mg15HXoteV15MgJXtkYXlzfSDXmdee15nXnQ==
|
16rXkNeo15nXmiDXmdei15Mg15HXoteV15MgJXtkYXlzfSDXmdee15nXnQ==
|
||||||
|
|
||||||
users:
|
users:
|
||||||
total_notes: !binary |
|
total_notes: !binary |
|
||||||
15vXnCDXlNek16rXp9eZ15XXqg==
|
15vXnCDXlNek16rXp9eZ15XXqg==
|
||||||
|
|
||||||
|
|
@ -2081,7 +2081,7 @@ he:
|
||||||
successfully_deleted_user: !binary |
|
successfully_deleted_user: !binary |
|
||||||
157Xqdeq157XqSAgJXt1c2VybmFtZX0g16DXnteX16cg15HXlNem15zXl9eU
|
157Xqdeq157XqSAgJXt1c2VybmFtZX0g16DXnteX16cg15HXlNem15zXl9eU
|
||||||
|
|
||||||
preferences:
|
preferences:
|
||||||
page_title_edit: !binary |
|
page_title_edit: !binary |
|
||||||
157Xodec15XXnNeZ1506Otei16jXmdeb16og15TXoteT16TXldeq
|
157Xodec15XXnNeZ1506Otei16jXmdeb16og15TXoteT16TXldeq
|
||||||
|
|
||||||
|
|
@ -2126,7 +2126,7 @@ he:
|
||||||
is_false: !binary |
|
is_false: !binary |
|
||||||
16nXnNeZ15zXmQ==
|
16nXnNeZ15zXmQ==
|
||||||
|
|
||||||
tabs:
|
tabs:
|
||||||
authentication: !binary |
|
authentication: !binary |
|
||||||
15DXmdee15XXqg==
|
15DXmdee15XXqg==
|
||||||
|
|
||||||
|
|
@ -2165,7 +2165,7 @@ he:
|
||||||
title: !binary |
|
title: !binary |
|
||||||
15TXlNeS15PXqNeV16og16nXnNeZ
|
15TXlNeS15PXqNeV16og16nXnNeZ
|
||||||
|
|
||||||
common:
|
common:
|
||||||
numbered_step: !binary |
|
numbered_step: !binary |
|
||||||
16bXoteTICV7bnVtYmVyfQ==
|
16bXoteTICV7bnVtYmVyfQ==
|
||||||
|
|
||||||
|
|
@ -2217,7 +2217,7 @@ he:
|
||||||
weeks: !binary |
|
weeks: !binary |
|
||||||
16nXkdeV16LXldeq
|
16nXkdeV16LXldeq
|
||||||
|
|
||||||
days_midsentence:
|
days_midsentence:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
15nXnteZ150=
|
15nXnteZ150=
|
||||||
|
|
||||||
|
|
@ -2230,7 +2230,7 @@ he:
|
||||||
cancel: !binary |
|
cancel: !binary |
|
||||||
15HXmNec
|
15HXmNec
|
||||||
|
|
||||||
sort:
|
sort:
|
||||||
sort: !binary |
|
sort: !binary |
|
||||||
157XmdeZ158=
|
157XmdeZ158=
|
||||||
|
|
||||||
|
|
@ -2274,7 +2274,7 @@ he:
|
||||||
email: !binary |
|
email: !binary |
|
||||||
15PXldeQItec
|
15PXldeQItec
|
||||||
|
|
||||||
note:
|
note:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
JXtjb3VudH0g16TXqten15nXldeq
|
JXtjb3VudH0g16TXqten15nXldeq
|
||||||
|
|
||||||
|
|
@ -2356,7 +2356,7 @@ he:
|
||||||
ok: !binary |
|
ok: !binary |
|
||||||
15DXlden15k=
|
15DXlden15k=
|
||||||
|
|
||||||
actions_midsentence:
|
actions_midsentence:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
16TXoteV15zXldeq
|
16TXoteV15zXldeq
|
||||||
|
|
||||||
|
|
@ -2366,11 +2366,11 @@ he:
|
||||||
one: !binary |
|
one: !binary |
|
||||||
16TXoteV15zXlA==
|
16TXoteV15zXlA==
|
||||||
|
|
||||||
layouts:
|
layouts:
|
||||||
toggle_notes_title: !binary |
|
toggle_notes_title: !binary |
|
||||||
15fXqdeZ16TXqiDXm9ecINeU16TXqten15nXldeq
|
15fXqdeZ16TXqiDXm9ecINeU16TXqten15nXldeq
|
||||||
|
|
||||||
mobile_navigation:
|
mobile_navigation:
|
||||||
home: !binary |
|
home: !binary |
|
||||||
MS3XkdeZ16o=
|
MS3XkdeZ16o=
|
||||||
|
|
||||||
|
|
@ -2395,7 +2395,7 @@ he:
|
||||||
logout: !binary |
|
logout: !binary |
|
||||||
16bXkA==
|
16bXkA==
|
||||||
|
|
||||||
navigation:
|
navigation:
|
||||||
home: !binary |
|
home: !binary |
|
||||||
15HXmdeq
|
15HXmdeq
|
||||||
|
|
||||||
|
|
@ -2506,7 +2506,7 @@ he:
|
||||||
toggle_notes: !binary |
|
toggle_notes: !binary |
|
||||||
15fXqdeZ16TXqiDXpNeq16fXmdeV16o=
|
15fXqdeZ16TXqiDXpNeq16fXmdeV16o=
|
||||||
|
|
||||||
feedlist:
|
feedlist:
|
||||||
actions_due_today: !binary |
|
actions_due_today: !binary |
|
||||||
16TXoteV15zXldeqINec15HXmdem15XXoiDXlNeZ15XXnSDXkNeVINee15XX
|
16TXoteV15zXldeqINec15HXmdem15XXoiDXlNeZ15XXnSDXkNeVINee15XX
|
||||||
p9eT150g15nXldeq16g=
|
p9eT150g15nXldeq16g=
|
||||||
|
|
@ -2593,18 +2593,18 @@ he:
|
||||||
15HXl9eZ16jXqiDXlNeU15bXoNeUINei15HXldeoINeU15TXp9ep16gg15TX
|
15HXl9eZ16jXqiDXlNeU15bXoNeUINei15HXldeoINeU15TXp9ep16gg15TX
|
||||||
oNeq15XXnw==
|
oNeq15XXnw==
|
||||||
|
|
||||||
number:
|
number:
|
||||||
currency:
|
currency:
|
||||||
format:
|
format:
|
||||||
unit: !binary |
|
unit: !binary |
|
||||||
4oKq
|
4oKq
|
||||||
|
|
||||||
separator: .
|
separator: .
|
||||||
delimiter: ","
|
delimiter: ","
|
||||||
format: "%u%n "
|
format: "%u%n "
|
||||||
human:
|
human:
|
||||||
storage_units:
|
storage_units:
|
||||||
units:
|
units:
|
||||||
tb: !binary |
|
tb: !binary |
|
||||||
15jXqNeUINeR15nXmdeY
|
15jXqNeUINeR15nXmdeY
|
||||||
|
|
||||||
|
|
@ -2617,7 +2617,7 @@ he:
|
||||||
mb: !binary |
|
mb: !binary |
|
||||||
157XkteUINeR15nXmdeY
|
157XkteUINeR15nXmdeY
|
||||||
|
|
||||||
byte:
|
byte:
|
||||||
other: !binary |
|
other: !binary |
|
||||||
15HXqteZ150=
|
15HXqteZ150=
|
||||||
|
|
||||||
|
|
@ -2625,15 +2625,15 @@ he:
|
||||||
15HXmdeZ15g=
|
15HXmdeZ15g=
|
||||||
|
|
||||||
format: "%u%n"
|
format: "%u%n"
|
||||||
format:
|
format:
|
||||||
separator: .
|
separator: .
|
||||||
delimiter: ","
|
delimiter: ","
|
||||||
footer:
|
footer:
|
||||||
send_feedback: !binary |
|
send_feedback: !binary |
|
||||||
16nXnNeZ15fXqiDXntep15XXkSDXotecINeS15nXqNeh15AgJXt2ZXJzaW9u
|
16nXnNeZ15fXqiDXntep15XXkSDXotecINeS15nXqNeh15AgJXt2ZXJzaW9u
|
||||||
fQ==
|
fQ==
|
||||||
|
|
||||||
notes:
|
notes:
|
||||||
delete_item_title: !binary |
|
delete_item_title: !binary |
|
||||||
157Xl9eZ16fXqiDXpNeo15nXmA==
|
157Xl9eZ16fXqiDXpNeo15nXmA==
|
||||||
|
|
||||||
|
|
@ -2673,7 +2673,7 @@ he:
|
||||||
delete_note_title: !binary |
|
delete_note_title: !binary |
|
||||||
157Xl9eZ16fXqiDXlNek16rXp9eZ16ogJyV7aWR9Jw==
|
157Xl9eZ16fXqiDXlNek16rXp9eZ16ogJyV7aWR9Jw==
|
||||||
|
|
||||||
states:
|
states:
|
||||||
stalled_plural: !binary |
|
stalled_plural: !binary |
|
||||||
16LXpteV16jXmded
|
16LXpteV16jXmded
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ end
|
||||||
Given /^there exists an active context called "([^"]*)" for user "([^"]*)"$/ do |context_name, login|
|
Given /^there exists an active context called "([^"]*)" for user "([^"]*)"$/ do |context_name, login|
|
||||||
user = User.find_by_login(login)
|
user = User.find_by_login(login)
|
||||||
user.should_not be_nil
|
user.should_not be_nil
|
||||||
@context = user.contexts.find_or_create(:name => context_name, :hide => false)
|
@context = user.contexts.find_or_create_by_name(:name => context_name, :hide => false)
|
||||||
end
|
end
|
||||||
|
|
||||||
Given /^there exists a context called "([^"]*)" for user "([^"]*)"$/ do |context_name, login|
|
Given /^there exists a context called "([^"]*)" for user "([^"]*)"$/ do |context_name, login|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ Given /^I have logged in as "(.*)" with password "(.*)"$/ do |username, password
|
||||||
fill_in "Login", :with => username
|
fill_in "Login", :with => username
|
||||||
fill_in "Password", :with => password
|
fill_in "Password", :with => password
|
||||||
uncheck "Stay logged in:"
|
uncheck "Stay logged in:"
|
||||||
click_button "Sign in »"
|
click_button "Sign in"
|
||||||
|
|
||||||
logout_regexp = @mobile_interface ? "Logout" : "Logout \(#{username}\)"
|
logout_regexp = @mobile_interface ? "Logout" : "Logout \(#{username}\)"
|
||||||
page.should have_content(logout_regexp)
|
page.should have_content(logout_regexp)
|
||||||
|
|
@ -14,7 +14,7 @@ When /^I submit the login form as user "([^\"]*)" with password "([^\"]*)"$/ do
|
||||||
fill_in 'Login', :with => username
|
fill_in 'Login', :with => username
|
||||||
fill_in 'Password', :with => password
|
fill_in 'Password', :with => password
|
||||||
uncheck "Stay logged in:"
|
uncheck "Stay logged in:"
|
||||||
click_button "Sign in »"
|
click_button "Sign in"
|
||||||
end
|
end
|
||||||
|
|
||||||
When /^my session expires$/ do
|
When /^my session expires$/ do
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ Given /^I have a todo "([^"]*)" in context "([^"]*)" with tags "([^"]*)"$/ do |d
|
||||||
end
|
end
|
||||||
|
|
||||||
Given /^I have a todo "([^"]*)" in the context "([^"]*)" which is due tomorrow$/ do |description, context_name|
|
Given /^I have a todo "([^"]*)" in the context "([^"]*)" which is due tomorrow$/ do |description, context_name|
|
||||||
context = @current_user.contexts.find_or_create(:name => context_name)
|
context = @current_user.contexts.find_or_create_by_name(context_name)
|
||||||
@todo = @current_user.todos.create!(:context_id => context.id, :description => description)
|
@todo = @current_user.todos.create!(:context_id => context.id, :description => description)
|
||||||
@todo.due = @todo.created_at + 1.day
|
@todo.due = @todo.created_at + 1.day
|
||||||
@todo.save!
|
@todo.save!
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
Given /^the following user records?$/ do |table|
|
Given /^the following user records?$/ do |table|
|
||||||
User.delete_all
|
User.delete_all
|
||||||
table.hashes.each do |hash|
|
table.hashes.each do |hash|
|
||||||
user = Factory(:user, hash)
|
user = FactoryGirl.create(:user, hash)
|
||||||
user.create_preference({:locale => 'en'})
|
user.create_preference({:locale => 'en'})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -1,30 +1,10 @@
|
||||||
# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
|
# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
|
||||||
# It is recommended to regenerate this file in the future when you upgrade to a
|
# It is recommended to regenerate this file in the future when you upgrade to a
|
||||||
# newer version of cucumber-rails. Consider adding your own code to a new file
|
# newer version of cucumber-rails. Consider adding your own code to a new file
|
||||||
# instead of editing this one. Cucumber will automatically load all features/**/*.rb
|
# instead of editing this one. Cucumber will automatically load all features/**/*.rb
|
||||||
# files.
|
# files.
|
||||||
|
|
||||||
ENV["RAILS_ENV"] ||= "cucumber"
|
require 'cucumber/rails'
|
||||||
require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
|
|
||||||
|
|
||||||
require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
|
|
||||||
require 'cucumber/rails/rspec'
|
|
||||||
require 'cucumber/rails/world'
|
|
||||||
require 'cucumber/rails/active_record'
|
|
||||||
require 'cucumber/web/tableish'
|
|
||||||
require 'aruba/cucumber'
|
|
||||||
|
|
||||||
require 'capybara/rails'
|
|
||||||
require 'capybara/cucumber'
|
|
||||||
require 'capybara/session'
|
|
||||||
# BUG in this version of cucumber/capybara: require 'cucumber/rails/capybara_javascript_emulation' # Lets you click links with onclick javascript handlers without using @culerity or @javascript
|
|
||||||
|
|
||||||
Capybara.default_wait_time = 5
|
|
||||||
Capybara.javascript_driver = ENV["JS_DRIVER"] ? ENV["JS_DRIVER"].to_sym : :selenium
|
|
||||||
|
|
||||||
if Capybara.javascript_driver == :webkit
|
|
||||||
require 'capybara/webkit'
|
|
||||||
end
|
|
||||||
|
|
||||||
# Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
|
# Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
|
||||||
# order to ease the transition to Capybara we set the default here. If you'd
|
# order to ease the transition to Capybara we set the default here. If you'd
|
||||||
|
|
@ -32,39 +12,48 @@ end
|
||||||
# steps to use the XPath syntax.
|
# steps to use the XPath syntax.
|
||||||
Capybara.default_selector = :css
|
Capybara.default_selector = :css
|
||||||
|
|
||||||
Capybara.prefer_visible_elements = true
|
# By default, any exception happening in your Rails application will bubble up
|
||||||
|
# to Cucumber so that your scenario will fail. This is a different from how
|
||||||
# If you set this to false, any error raised from within your app will bubble
|
# your application behaves in the production environment, where an error page will
|
||||||
# up to your step definition and out to cucumber unless you catch it somewhere
|
# be rendered instead.
|
||||||
# on the way. You can make Rails rescue errors and render error pages on a
|
#
|
||||||
# per-scenario basis by tagging a scenario or feature with the @allow-rescue tag.
|
# Sometimes we want to override this default behaviour and allow Rails to rescue
|
||||||
|
# exceptions and display an error page (just like when the app is running in production).
|
||||||
|
# Typical scenarios where you want to do this is when you test your error pages.
|
||||||
|
# There are two ways to allow Rails to rescue exceptions:
|
||||||
|
#
|
||||||
|
# 1) Tag your scenario (or feature) with @allow-rescue
|
||||||
|
#
|
||||||
|
# 2) Set the value below to true. Beware that doing this globally is not
|
||||||
|
# recommended as it will mask a lot of errors for you!
|
||||||
#
|
#
|
||||||
# If you set this to true, Rails will rescue all errors and render error
|
|
||||||
# pages, more or less in the same way your application would behave in the
|
|
||||||
# default production environment. It's not recommended to do this for all
|
|
||||||
# of your scenarios, as this makes it hard to discover errors in your application.
|
|
||||||
ActionController::Base.allow_rescue = false
|
ActionController::Base.allow_rescue = false
|
||||||
|
|
||||||
# If you set this to true, each scenario will run in a database transaction.
|
# Remove/comment out the lines below if your app doesn't have a database.
|
||||||
# You can still turn off transactions on a per-scenario basis, simply tagging
|
# For some databases (like MongoDB and CouchDB) you may need to use :truncation instead.
|
||||||
# a feature or scenario with the @no-txn tag. If you are using Capybara,
|
begin
|
||||||
# tagging with @culerity or @javascript will also turn transactions off.
|
DatabaseCleaner.strategy = :transaction
|
||||||
#
|
rescue NameError
|
||||||
# If you set this to false, transactions will be off for all scenarios,
|
raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
|
||||||
# regardless of whether you use @no-txn or not.
|
|
||||||
#
|
|
||||||
# Beware that turning transactions off will leave data in your database
|
|
||||||
# after each scenario, which can lead to hard-to-debug failures in
|
|
||||||
# subsequent scenarios. If you do this, we recommend you create a Before
|
|
||||||
# block that will explicitly put your database in a known state.
|
|
||||||
Cucumber::Rails::World.use_transactional_fixtures = true
|
|
||||||
|
|
||||||
# How to clean your database when transactions are turned off. See
|
|
||||||
# http://github.com/bmabey/database_cleaner for more info.
|
|
||||||
if defined?(ActiveRecord::Base)
|
|
||||||
begin
|
|
||||||
require 'database_cleaner'
|
|
||||||
DatabaseCleaner.strategy = :truncation
|
|
||||||
rescue LoadError => ignore_if_database_cleaner_not_present
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# You may also want to configure DatabaseCleaner to use different strategies for certain features and scenarios.
|
||||||
|
# See the DatabaseCleaner documentation for details. Example:
|
||||||
|
#
|
||||||
|
# Before('@no-txn,@selenium,@culerity,@celerity,@javascript') do
|
||||||
|
# # { :except => [:widgets] } may not do what you expect here
|
||||||
|
# # as tCucumber::Rails::Database.javascript_strategy overrides
|
||||||
|
# # this setting.
|
||||||
|
# DatabaseCleaner.strategy = :truncation
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# Before('~@no-txn', '~@selenium', '~@culerity', '~@celerity', '~@javascript') do
|
||||||
|
# DatabaseCleaner.strategy = :transaction
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
|
||||||
|
# Possible values are :truncation and :transaction
|
||||||
|
# The :transaction strategy is faster, but might give you threading problems.
|
||||||
|
# See https://github.com/cucumber/cucumber-rails/blob/master/features/choose_javascript_database_strategy.feature
|
||||||
|
Cucumber::Rails::Database.javascript_strategy = :truncation
|
||||||
|
|
||||||
|
|
|
||||||
23
features/support/factories/factories.rb
Normal file
23
features/support/factories/factories.rb
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
FactoryGirl.define do
|
||||||
|
factory :user do
|
||||||
|
sequence(:login) { |n| "testuser#{n}" }
|
||||||
|
password "secret"
|
||||||
|
password_confirmation { |user| user.password }
|
||||||
|
is_admin false
|
||||||
|
end
|
||||||
|
|
||||||
|
factory :context do
|
||||||
|
sequence(:name) { |n| "testcontext#{n}" }
|
||||||
|
hide false
|
||||||
|
created_at Time.now.utc
|
||||||
|
end
|
||||||
|
|
||||||
|
factory :project do
|
||||||
|
sequence(:name) { |n| "testproject#{n}" }
|
||||||
|
end
|
||||||
|
|
||||||
|
factory :todo do
|
||||||
|
sequence(:description) { |n| "testtodo#{n}" }
|
||||||
|
association :context
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
require 'factory_girl'
|
# require 'factory_girl'
|
||||||
Dir.glob(File.join(File.dirname(__FILE__), '../../spec/factories/*.rb')).each {|f| require f }
|
# Dir.glob(File.join(File.dirname(__FILE__), 'factories/*.rb')).each {|f| require f }
|
||||||
13
features/support/tracks_cucumber_settings.rb
Normal file
13
features/support/tracks_cucumber_settings.rb
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
require 'aruba/cucumber'
|
||||||
|
|
||||||
|
require 'capybara/rails'
|
||||||
|
require 'capybara/cucumber'
|
||||||
|
require 'capybara/session'
|
||||||
|
# BUG in this version of cucumber/capybara: require 'cucumber/rails/capybara_javascript_emulation' # Lets you click links with onclick javascript handlers without using @culerity or @javascript
|
||||||
|
|
||||||
|
Capybara.default_wait_time = 5
|
||||||
|
Capybara.javascript_driver = ENV["JS_DRIVER"] ? ENV["JS_DRIVER"].to_sym : :selenium
|
||||||
|
|
||||||
|
if Capybara.javascript_driver == :webkit
|
||||||
|
require 'capybara/webkit'
|
||||||
|
end
|
||||||
65
lib/tasks/cucumber.rake
Normal file
65
lib/tasks/cucumber.rake
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
|
||||||
|
# It is recommended to regenerate this file in the future when you upgrade to a
|
||||||
|
# newer version of cucumber-rails. Consider adding your own code to a new file
|
||||||
|
# instead of editing this one. Cucumber will automatically load all features/**/*.rb
|
||||||
|
# files.
|
||||||
|
|
||||||
|
|
||||||
|
unless ARGV.any? {|a| a =~ /^gems/} # Don't load anything when running the gems:* tasks
|
||||||
|
|
||||||
|
vendored_cucumber_bin = Dir["#{Rails.root}/vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
|
||||||
|
$LOAD_PATH.unshift(File.dirname(vendored_cucumber_bin) + '/../lib') unless vendored_cucumber_bin.nil?
|
||||||
|
|
||||||
|
begin
|
||||||
|
require 'cucumber/rake/task'
|
||||||
|
|
||||||
|
namespace :cucumber do
|
||||||
|
Cucumber::Rake::Task.new({:ok => 'db:test:prepare'}, 'Run features that should pass') do |t|
|
||||||
|
t.binary = vendored_cucumber_bin # If nil, the gem's binary is used.
|
||||||
|
t.fork = true # You may get faster startup if you set this to false
|
||||||
|
t.profile = 'default'
|
||||||
|
end
|
||||||
|
|
||||||
|
Cucumber::Rake::Task.new({:wip => 'db:test:prepare'}, 'Run features that are being worked on') do |t|
|
||||||
|
t.binary = vendored_cucumber_bin
|
||||||
|
t.fork = true # You may get faster startup if you set this to false
|
||||||
|
t.profile = 'wip'
|
||||||
|
end
|
||||||
|
|
||||||
|
Cucumber::Rake::Task.new({:rerun => 'db:test:prepare'}, 'Record failing features and run only them if any exist') do |t|
|
||||||
|
t.binary = vendored_cucumber_bin
|
||||||
|
t.fork = true # You may get faster startup if you set this to false
|
||||||
|
t.profile = 'rerun'
|
||||||
|
end
|
||||||
|
|
||||||
|
desc 'Run all features'
|
||||||
|
task :all => [:ok, :wip]
|
||||||
|
|
||||||
|
task :statsetup do
|
||||||
|
require 'rails/code_statistics'
|
||||||
|
::STATS_DIRECTORIES << %w(Cucumber\ features features) if File.exist?('features')
|
||||||
|
::CodeStatistics::TEST_TYPES << "Cucumber features" if File.exist?('features')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
desc 'Alias for cucumber:ok'
|
||||||
|
task :cucumber => 'cucumber:ok'
|
||||||
|
|
||||||
|
task :default => :cucumber
|
||||||
|
|
||||||
|
task :features => :cucumber do
|
||||||
|
STDERR.puts "*** The 'features' task is deprecated. See rake -T cucumber ***"
|
||||||
|
end
|
||||||
|
|
||||||
|
# In case we don't have ActiveRecord, append a no-op task that we can depend upon.
|
||||||
|
task 'db:test:prepare' do
|
||||||
|
end
|
||||||
|
|
||||||
|
task :stats => 'cucumber:statsetup'
|
||||||
|
rescue LoadError
|
||||||
|
desc 'cucumber rake task not available (cucumber not installed)'
|
||||||
|
task :cucumber do
|
||||||
|
abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
||||||
|
|
||||||
class TodosControllerTest < ActionController::TestCase
|
class TodosControllerTest < ActionController::TestCase
|
||||||
fixtures :users, :preferences, :projects, :contexts, :todos, :tags, :taggings, :recurring_todos
|
|
||||||
|
|
||||||
def setup
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_get_index_when_not_logged_in
|
def test_get_index_when_not_logged_in
|
||||||
get :index
|
get :index
|
||||||
|
|
@ -129,6 +125,20 @@ class TodosControllerTest < ActionController::TestCase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_create_todo_via_xhr
|
||||||
|
login_as(:admin_user)
|
||||||
|
assert_difference 'Todo.count' do
|
||||||
|
xhr :put, :create, "context_name"=>"library", "project_name"=>"Build a working time machine", "todo"=>{"notes"=>"", "description"=>"Call Warren Buffet to find out how much he makes per day", "due"=>"30/11/2006"}, "tag_list"=>"foo bar"
|
||||||
|
assert_response 200
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_get_edit_form_using_xhr
|
||||||
|
login_as(:admin_user)
|
||||||
|
xhr :get, :edit, :id => todos(:call_bill).id
|
||||||
|
assert_response 200
|
||||||
|
end
|
||||||
|
|
||||||
def test_fail_to_create_todo_via_xml
|
def test_fail_to_create_todo_via_xml
|
||||||
login_as(:admin_user)
|
login_as(:admin_user)
|
||||||
# try to create with no context, which is not valid
|
# try to create with no context, which is not valid
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue