diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/registrations_controller.rb | 2 | ||||
| -rw-r--r-- | app/helpers/routes_helper.rb | 1 | ||||
| -rw-r--r-- | app/helpers/rule_parameter_sets_helper.rb | 18 | ||||
| -rw-r--r-- | app/helpers/users_helper.rb | 26 | ||||
| -rw-r--r-- | app/models/rule_parameter_set.rb | 120 | ||||
| -rw-r--r-- | app/views/devise/mailer/invitation_instructions.fr.html.erb | 2 | ||||
| -rw-r--r-- | app/views/devise/passwords/edit.html.erb | 4 | ||||
| -rw-r--r-- | app/views/devise/passwords/new.html.erb | 4 | ||||
| -rw-r--r-- | app/views/layouts/_user_links.erb | 2 | ||||
| -rw-r--r-- | app/views/layouts/mailer.html.erb | 2 | ||||
| -rw-r--r-- | app/views/rule_parameter_sets/_column_fields.html.erb | 11 | ||||
| -rw-r--r-- | app/views/rule_parameter_sets/_form.html.erb | 33 | ||||
| -rw-r--r-- | app/views/rule_parameter_sets/show.html.erb | 71 |
13 files changed, 249 insertions, 47 deletions
diff --git a/app/controllers/registrations_controller.rb b/app/controllers/registrations_controller.rb index b02d3217a..f563fbb03 100644 --- a/app/controllers/registrations_controller.rb +++ b/app/controllers/registrations_controller.rb @@ -6,7 +6,7 @@ def accept_user_creation if !Rails.application.config.accept_user_creation - redirect_to root_path + redirect_to unauthenticated_root_path return false else return true diff --git a/app/helpers/routes_helper.rb b/app/helpers/routes_helper.rb index bbb611506..b3d79262e 100644 --- a/app/helpers/routes_helper.rb +++ b/app/helpers/routes_helper.rb @@ -14,4 +14,3 @@ module RoutesHelper end end - diff --git a/app/helpers/rule_parameter_sets_helper.rb b/app/helpers/rule_parameter_sets_helper.rb new file mode 100644 index 000000000..8485b63ca --- /dev/null +++ b/app/helpers/rule_parameter_sets_helper.rb @@ -0,0 +1,18 @@ +module RuleParameterSetsHelper + + def unique( value) + return t("true") if value == "1" + t "false" + end + + def pattern(value) + return t("rule_parameter_sets.labels.free_char") if value == "0" + return t("rule_parameter_sets.labels.num_char") if value == "1" + return t("rule_parameter_sets.labels.alpha_char") if value == "2" + return t("rule_parameter_sets.labels.upper_char") if value == "3" + return t("rule_parameter_sets.labels.lower_char") if value == "4" + end + +end + + diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb index 0dfc1552f..ea5f41fb7 100644 --- a/app/helpers/users_helper.rb +++ b/app/helpers/users_helper.rb @@ -4,25 +4,13 @@ module UsersHelper image_tag user_image(user), :alt => "", :class => "preview", :width => size, :height => size end - def gravatar_hash(user) - Digest::MD5.hexdigest( user.email) - end - def gravatar_url( user) - "http://www.gravatar.com/avatar/#{gravatar_hash(user)}?d=404" - end - def user_image(user) - begin - gravatar_resource = RestClient.get( gravatar_url( user)){|response, request, result| response } - rescue - # Happens if network is not available - return 'icons/user.png' - end - if gravatar_resource.code == 404 - # Happens if user has not registered to gravatar - 'icons/user.png' - else - gravatar_url( user) - end + def user_default_avatar + return "#{authenticated_root_url}#{image_path('icons/user.png')}" if Rails.application.config.relative_url_root.blank? + + relative_url_root = Rails.application.config.relative_url_root.gsub( /\//, '') + "#{authenticated_root_url}#{image_path('icons/user.png')}". + sub( Regexp.new("/#{relative_url_root}/#{relative_url_root}/"), "/#{relative_url_root}/"). + sub( Regexp.new("/#{relative_url_root}//#{relative_url_root}/"), "/#{relative_url_root}/") end end diff --git a/app/models/rule_parameter_set.rb b/app/models/rule_parameter_set.rb index 0c7a98300..01c2e48a6 100644 --- a/app/models/rule_parameter_set.rb +++ b/app/models/rule_parameter_set.rb @@ -16,8 +16,43 @@ class RuleParameterSet < ActiveRecord::Base inter_connection_link_distance_max walk_default_speed_max walk_occasional_traveller_speed_max walk_frequent_traveller_speed_max walk_mobility_restricted_traveller_speed_max inter_access_link_distance_max inter_stop_duration_max facility_stop_area_distance_max - vehicle_journey_number_max vehicle_journey_number_min check_allowed_transport_modes) + check_allowed_transport_modes check_lines_in_groups check_line_routes + check_stop_parent check_connection_link_on_physical) end + + def self.validable_objects + [Chouette::Network,Chouette::Company,Chouette::GroupOfLine, + Chouette::StopArea,Chouette::AccessPoint,Chouette::AccessLink,Chouette::ConnectionLink, + Chouette::TimeTable,Chouette::Line,Chouette::Route, + Chouette::JourneyPattern,Chouette::VehicleJourney] + end + + def self.validable_object_names + ["network","company","group_of_line", + "stop_area","access_point","access_link","connection_link", + "time_table","line","route", + "journey_pattern","vehicle_journey"] + end + + def self.validable_columns + {"network" => ['objectid','name','registration_number'], + "company" => ['objectid','name','registration_number'], + "group_of_line" => ['objectid','name','registration_number'], + "stop_area" => ['objectid','name','registration_number','city_name','country_code','zip_code'], + "access_point" => ['objectid','name','city_name','country_code','zip_code'], + "access_link" => ['objectid','name','link_distance','default_duration'], + "connection_link" => ['objectid','name','link_distance','default_duration'], + "time_table" => ['objectid','comment','version'], + "line" => ['objectid','name','registration_number','number','published_name'], + "route" => ['objectid','name','number','published_name'], + "journey_pattern" => ['objectid','name','registration_number','published_name'], + "vehicle_journey" => ['objectid','published_journey_name','published_journey_identifier','number'] } + end + + def self.column_attribute_prefixes + %w( unique pattern min_size max_size ) + end + def self.all_modes Chouette::TransportMode.all.map { |m| m.to_s} end @@ -28,6 +63,14 @@ class RuleParameterSet < ActiveRecord::Base mode_attribute_prefixes.include?( $1) && self.class.all_modes.include?( $2) end + + def self.column_attribute?( method_name ) + pattern = /(\w+)_column_(\w+)_object_(\w+)/ + return false unless method_name.match( pattern) + return false unless validable_object_names.include?($3) + column_attribute_prefixes.include?( $1) && validable_columns[$3].include?( $2) + end + def self.mode_of_mode_attribute( method_name ) method_name.match( /(\w+)_mode_(\w+)/) $2 @@ -37,6 +80,20 @@ class RuleParameterSet < ActiveRecord::Base $1 end + def self.object_of_column_attribute( method_name ) + method_name.match( /(\w+)_column_(\w+)_object_(\w+)/) + $3 + end + def self.column_of_column_attribute( method_name ) + method_name.match( /(\w+)_column_(\w+)_object_(\w+)/) + $2 + end + def self.attribute_of_column_attribute( method_name ) + method_name.match( /(\w+)_column_(\w+)_object_(\w+)/) + $1 + end + + def self.mode_parameter(name) name = name.to_s attr_accessible name @@ -52,6 +109,37 @@ class RuleParameterSet < ActiveRecord::Base ((self.parameters ||= {})["mode_#{mode}"] ||= {})[attribute_name] = prefix end end + + def self.column_parameter(obj,column,prefix) + name = "#{prefix}_column_#{column}_object_#{obj}" + attr_accessible name + define_method(name) do + attribute_name, column, obj = prefix, column, obj + self.parameters and self.parameters[obj] and + self.parameters[obj][column] and self.parameters[obj][column][attribute_name] + end + + define_method("#{name}=") do |key| + attribute_name, column, obj = prefix, column, obj + (((self.parameters ||= {})[obj] ||= {})[column]||= {})[attribute_name] = key + end + + end + + def self.object_parameter(clazz) + name = clazz.table_name.singularize + attr_accessible name + + parameter "check_#{clazz.table_name.singularize}" + validable_columns[name].each do |column| + column_attribute_prefixes.each do |prefix| + column_parameter name,column,prefix + end + + end + + end + def self.parameter(name) name = name.to_s attr_accessible name @@ -77,7 +165,11 @@ class RuleParameterSet < ActiveRecord::Base :inter_access_link_distance_max => 300, :inter_stop_duration_max => 40, :facility_stop_area_distance_max => 300, - :check_allowed_transport_modes => false + :check_allowed_transport_modes => false, + :check_lines_in_groups => false, + :check_line_routes => false, + :check_stop_parent => false, + :check_connection_link_on_physical => false } if mode && self.mode_default_params[ mode.to_sym] base.merge!( self.mode_default_params[ mode.to_sym]) @@ -231,21 +323,41 @@ class RuleParameterSet < ActiveRecord::Base def allowed(mode) return true unless self.check_allowed_transport_modes - puts "#{mode} = "+self.send("allowed_transport_mode_#{mode}").to_s + # puts "#{mode} = "+self.send("allowed_transport_mode_#{mode}").to_s return self.send("allowed_transport_mode_#{mode}") == "1" end + + def selected(object) + # puts "#{mode} = "+self.send("allowed_transport_mode_#{mode}").to_s + return self.send("check_#{object}") == "1" + end + + def selected_column(object,column) + # puts "#{mode} = "+self.send("allowed_transport_mode_#{mode}").to_s + return self.send("unique_column_#{column}_object_#{object}") == "1" || + self.send("pattern_column_#{column}_object_#{object}") != "0" || + !self.send("min_size_column_#{column}_object_#{object}").empty? || + !self.send("max_size_column_#{column}_object_#{object}").empty? + end + all_modes.each do |mode| mode_attribute_prefixes.each do |prefix| mode_parameter "#{prefix}_mode_#{mode}".to_sym end end - + general_attributes.each do |attribute| parameter attribute.to_sym unless attribute == "stop_areas_area" || attribute == "check_allowed_transport_modes" validates attribute.to_sym, :numericality => true, :allow_nil => true, :allow_blank => true end end + + + validable_objects.each do |obj| + object_parameter obj + end + end diff --git a/app/views/devise/mailer/invitation_instructions.fr.html.erb b/app/views/devise/mailer/invitation_instructions.fr.html.erb index 7ef4e6c99..c932763f2 100644 --- a/app/views/devise/mailer/invitation_instructions.fr.html.erb +++ b/app/views/devise/mailer/invitation_instructions.fr.html.erb @@ -1,6 +1,6 @@ <p>Bonjour <%= @resource.email %>,</p> -<p>Ce message est une invitation pour accéder à <%= link_to nil, root_url %>, vous pouvez l'accepter en cliquant sur le lien suivant :</p> +<p>Ce message est une invitation pour accéder à <%= link_to nil, unauthenticated_root_url %>, vous pouvez l'accepter en cliquant sur le lien suivant :</p> <p><%= link_to "Accepter l'invitation", accept_invitation_url(@resource, :invitation_token => @resource.invitation_token) %></p> diff --git a/app/views/devise/passwords/edit.html.erb b/app/views/devise/passwords/edit.html.erb index e0cad44a2..0c5ba77cf 100644 --- a/app/views/devise/passwords/edit.html.erb +++ b/app/views/devise/passwords/edit.html.erb @@ -8,8 +8,8 @@ <%= f.input :password, :as => :password %> <%= f.input :password_confirmation, :as => :password %> - <div class="submit"> - <%= link_to t("cancel"), root_path, :class => "btn btn-default" %> + <div class="col-md-offset-2"> + <%= link_to t("cancel"), unauthenticated_root_path, :class => "btn btn-default" %> <%= f.button :submit, :value => t("devise.passwords.edit.commit"), :class => "btn-info" %> </div> <% end %> diff --git a/app/views/devise/passwords/new.html.erb b/app/views/devise/passwords/new.html.erb index 8f5ec0f10..498e24c4c 100644 --- a/app/views/devise/passwords/new.html.erb +++ b/app/views/devise/passwords/new.html.erb @@ -5,8 +5,8 @@ <%= simple_form_for(resource, :as => resource_name, :url => password_path(resource_name)) do |form| %> <%= form.input :email, :as => :email, placeholder: 'user@domain.com' %> - <div class="submit"> - <%= link_to t("cancel"), root_path, :class => "btn btn-default" %> + <div class="col-md-offset-2"> + <%= link_to t("cancel"), unauthenticated_root_path, :class => "btn btn-default" %> <%= form.button :submit, :value => t("devise.passwords.new.commit"), :class => "btn-info" %> </div> <% end %> diff --git a/app/views/layouts/_user_links.erb b/app/views/layouts/_user_links.erb index 404f52172..bd9196b3f 100644 --- a/app/views/layouts/_user_links.erb +++ b/app/views/layouts/_user_links.erb @@ -1,5 +1,5 @@ <ul class="user"> - <li class="home"><%= link_to t('layouts.home'), root_path %></li> + <li class="home"><%= link_to t('layouts.home'), authenticated_root_path %></li> <% if user_signed_in? %> <li> | </li> diff --git a/app/views/layouts/mailer.html.erb b/app/views/layouts/mailer.html.erb index 387221103..ac00bdfea 100644 --- a/app/views/layouts/mailer.html.erb +++ b/app/views/layouts/mailer.html.erb @@ -18,7 +18,7 @@ </div> <div style="color: #333333; text-align:center; font-size: 10px;"> - Envoyé par <%= link_to root_url, "Chouette" %> + Envoyé par <%= link_to "Chouette", unauthenticated_root_url %> </div> </body> </html> diff --git a/app/views/rule_parameter_sets/_column_fields.html.erb b/app/views/rule_parameter_sets/_column_fields.html.erb new file mode 100644 index 000000000..abb2af4a8 --- /dev/null +++ b/app/views/rule_parameter_sets/_column_fields.html.erb @@ -0,0 +1,11 @@ + <td></td> + <td><%= t("activerecord.attributes.#{obj.table_name.singularize}.#{column}") %></td> + <% suffix = "column_#{column}_object_#{obj.table_name.singularize}"%> + <td> <%= f.check_box "unique_#{suffix}".to_sym, :class => "special" %></td> + <% if obj.columns_hash[column].type == :string %> + <td><%= f.select "pattern_#{suffix}".to_sym, options_for_select([[t("rule_parameter_sets.labels.free_char"), "0"], [t("rule_parameter_sets.labels.num_char"), "1"], [t("rule_parameter_sets.labels.alpha_char"), "2"], [t("rule_parameter_sets.labels.upper_char"), "3"], [t("rule_parameter_sets.labels.lower_char"), "4"]]) %></td> + <% else %> + <td><%= t "rule_parameter_sets.labels.num_char" %></td> + <% end %> + <td><%= f.number_field "min_size_#{suffix}".to_sym, :class => "special" %></td> + <td><%= f.number_field "max_size_#{suffix}".to_sym, :class => "special" %></td> diff --git a/app/views/rule_parameter_sets/_form.html.erb b/app/views/rule_parameter_sets/_form.html.erb index 90d6850fb..905e7f691 100644 --- a/app/views/rule_parameter_sets/_form.html.erb +++ b/app/views/rule_parameter_sets/_form.html.erb @@ -17,9 +17,15 @@ <%= form.input :vehicle_journey_number_min, :as => :number %> <%= form.input :vehicle_journey_number_max, :as => :number %> + + <%= form.input :check_lines_in_groups, :as => :boolean %> + <%= form.input :check_line_routes, :as => :boolean %> + <%= form.input :check_stop_parent, :as => :boolean %> + <%= form.input :check_connection_link_on_physical, :as => :boolean %> <%= form.input :check_allowed_transport_modes, :as => :boolean %> <table class="table table-striped table-condensed"> + <thead> <tr> <th><%= t("transport_modes.name") %></th> <% RuleParameterSet.mode_attribute_prefixes.each do |prefix| %> @@ -31,12 +37,39 @@ <% end %> <% end %> </tr> + </thead> + <tbody> <% Chouette::Line.transport_modes.map(&:to_s).each do |mode| %> <tr> <%= render :partial => "mode_fields", :locals => { :f => form, :mode => mode} %> </tr> <% end %> + </tbody> + </table> + + <%= t("rule_parameter_sets.labels.columns_restrictions") %> + <table class="table table-bordered table-condensed"> + <% RuleParameterSet.validable_objects.each do |obj| %> + <thead> + <tr> + <th> <%= form.check_box "check_#{obj.table_name.singularize}".to_sym, :class => "special" %> <%= t("activerecord.models.#{obj.table_name.singularize}.one") %></th> + <th><%= RuleParameterSet.human_attribute_name("attribute") %></th> + <th><%= RuleParameterSet.human_attribute_name("unique") %></th> + <th><%= RuleParameterSet.human_attribute_name("string_type") %></th> + <th><%= RuleParameterSet.human_attribute_name("min_size") %></th> + <th><%= RuleParameterSet.human_attribute_name("max_size") %></th> + </tr> + </thead> + <tbody> + <% RuleParameterSet.validable_columns[obj.table_name.singularize].each do |col| %> + <tr class="<%= "columns_for_#{obj.table_name}" %>"> + <%= render :partial => "column_fields", :locals => { :f => form, :obj => obj, :column => col} %> + </tr> + <% end %> + </tbody> + <% end %> </table> + <% end %> <%= form.actions do %> diff --git a/app/views/rule_parameter_sets/show.html.erb b/app/views/rule_parameter_sets/show.html.erb index 66e002b94..810730e50 100644 --- a/app/views/rule_parameter_sets/show.html.erb +++ b/app/views/rule_parameter_sets/show.html.erb @@ -68,26 +68,33 @@ <label><%= t(".inter_stop_duration_max") %>: </label> <%= @rule_parameter_set.inter_stop_duration_max %> </p> - <% if @rule_parameter_set.vehicle_journey_number_min.present? && @rule_parameter_set.vehicle_journey_number_max.present? %> - <div class="attributes_group" > - <span class="title"><%= t(".vehicle_journey_number_bounds") %></span> - <div class="columns"> - <div class="two_columns"> - <label><%= t(".min_value") %> : </label> - <span class="value"><%= @rule_parameter_set.vehicle_journey_number_min %></span> - </div> - <div class="two_columns"> - <label><%= t(".max_value") %> : </label> - <span class="value"><%= @rule_parameter_set.vehicle_journey_number_max %></span> - </div> - </div> - </div> - <% end %> + + <p> + <label><%= RuleParameterSet.human_attribute_name("check_lines_in_groups") %>: </label> + <%= @rule_parameter_set.check_lines_in_groups ? t("true") : t("false") %> + </p> + + <p> + <label><%= RuleParameterSet.human_attribute_name("check_line_routes") %>: </label> + <%= @rule_parameter_set.check_line_routes ? t("true") : t("false") %> + </p> + + <p> + <label><%= RuleParameterSet.human_attribute_name("check_stop_parent") %>: </label> + <%= @rule_parameter_set.check_stop_parent ? t("true") : t("false") %> + </p> + <p> + <label><%= RuleParameterSet.human_attribute_name("check_connection_link_on_physical") %>: </label> + <%= @rule_parameter_set.check_allowed_transport_modes ? t("true") : t("false") %> + </p> + + </p> <label><%= RuleParameterSet.human_attribute_name("check_allowed_transport_modes") %>: </label> <%= @rule_parameter_set.check_allowed_transport_modes ? t("true") : t("false") %> </p> + <div class="rule_parameter_by_mode"> <label><%= t(".rule_parameter_by_mode") %> <%= t(".modes_allowed") if @rule_parameter_set.check_allowed_transport_modes %> @@ -116,6 +123,40 @@ <% end %> </table> </div> + <div class="rule_parameter_by_object"> + <label><%= t("rule_parameter_sets.labels.columns_restrictions") %> </label> + <table class="table table-bordered table-condensed"> + <% RuleParameterSet.validable_objects.each do |obj| %> + <% if @rule_parameter_set.selected(obj.table_name.singularize) %> + <thead> + <tr> + <th> <%= t("activerecord.models.#{obj.table_name.singularize}.one") %></th> + <th><%= RuleParameterSet.human_attribute_name("attribute") %></th> + <th><%= RuleParameterSet.human_attribute_name("unique") %></th> + <th><%= RuleParameterSet.human_attribute_name("string_type") %></th> + <th><%= RuleParameterSet.human_attribute_name("min_size") %></th> + <th><%= RuleParameterSet.human_attribute_name("max_size") %></th> + </tr> + </thead> + <tbody> + <% RuleParameterSet.validable_columns[obj.table_name.singularize].each do |col| %> + <% if @rule_parameter_set.selected_column(obj.table_name.singularize,col)%> + <tr> + <td></td> + <td><%= t("activerecord.attributes.#{obj.table_name.singularize}.#{col}") %></td> + <% suffix = "column_#{col}_object_#{obj.table_name.singularize}"%> + <td><%= unique(@rule_parameter_set.send "unique_#{suffix}".to_sym) %></td> + <td><%= pattern(@rule_parameter_set.send "pattern_#{suffix}".to_sym) %></td> + <td><%= @rule_parameter_set.send "min_size_#{suffix}".to_sym %></td> + <td><%= @rule_parameter_set.send "max_size_#{suffix}".to_sym %></td> + </tr> + <% end %> + <% end %> + </tbody> + <% end %> + <% end %> + </table> + </div> </div> </div> |
