diff --git a/Capfile b/Capfile index 3e0bb4329..372653a5e 100644 --- a/Capfile +++ b/Capfile @@ -10,6 +10,7 @@ require 'capistrano/rails/assets' require 'capistrano/rails/migrations' #require 'capistrano/passenger' require 'capistrano/delayed-job' +require 'whenever/capistrano' # Load custom tasks from `lib/capistrano/tasks` if you have any defined Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r } diff --git a/Gemfile b/Gemfile index 05d9ec2e9..6840329ff 100644 --- a/Gemfile +++ b/Gemfile @@ -48,6 +48,7 @@ gem 'delayed_job_active_record' gem 'daemons' gem 'devise-async' gem 'newrelic_rpm' +gem 'whenever', require: false gem 'ahoy_matey', '~> 1.2.1' gem 'groupdate' # group temporary data diff --git a/Gemfile.lock b/Gemfile.lock index 6dfcba2b0..4814dc6af 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -87,6 +87,7 @@ GEM rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (~> 2.0) + chronic (0.10.2) ckeditor (4.1.3) cocaine orm_adapter (~> 0.5.0) @@ -392,6 +393,8 @@ GEM websocket-driver (0.6.2) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.2) + whenever (0.9.4) + chronic (>= 0.6.3) xpath (2.0.0) nokogiri (~> 1.3) @@ -457,6 +460,7 @@ DEPENDENCIES uglifier (>= 1.3.0) unicorn web-console (~> 2.0) + whenever BUNDLED WITH 1.10.6 diff --git a/app/assets/stylesheets/debates.scss b/app/assets/stylesheets/debates.scss index 9a59761d2..a2acbea13 100644 --- a/app/assets/stylesheets/debates.scss +++ b/app/assets/stylesheets/debates.scss @@ -305,11 +305,12 @@ .panel { border-radius: 0; box-shadow: 0px 1px 3px 0 $border; - margin-bottom: rem-calc(4); + margin-bottom: rem-calc(12); min-height: rem-calc(192); padding-top: rem-calc(12); @media (min-width: $small-breakpoint) { + margin-bottom: rem-calc(-1); padding-bottom: rem-calc(12); } @@ -373,7 +374,6 @@ .total-votes { display: inline-block; - float: none; line-height: $line-height; margin-left: rem-calc(24); padding-top: rem-calc(12); @@ -381,6 +381,7 @@ @media (min-width: $small-breakpoint) { display: block; + float: none; line-height: $line-height*2; margin-left: 0; padding-top: 0; @@ -399,7 +400,7 @@ .not-logged { line-height: $line-height; - padding-top: rem-calc(36); + padding-top: rem-calc(24); } .anonymous-votes, .organizations-votes { @@ -752,6 +753,14 @@ // 06. Flags // - - - - - - - - - - - - - - - - - - - - - - - - - +.flag-content { + + .button { + background: none; + padding: 0; + } +} + .flag-disable { color: $text-medium; line-height: rem-calc(24); diff --git a/app/assets/stylesheets/participacion.scss b/app/assets/stylesheets/participacion.scss index c6cd8c4a7..5a7d4c6d7 100644 --- a/app/assets/stylesheets/participacion.scss +++ b/app/assets/stylesheets/participacion.scss @@ -301,14 +301,37 @@ header { font-family: inherit; font-size: rem-calc(16); margin-top: 0; + + &.see-more { + width: 100%; + + @media (min-width: $small-breakpoint) { + width: auto; + } + } + } + + .home-page { + text-align: center; + + @media (min-width: $small-breakpoint) { + text-align: left; + } } .more-info { color: white; + display: block; font-size: rem-calc(14); - margin-left: rem-calc(24); + margin-bottom: rem-calc(24); text-decoration: underline; + @media (min-width: $small-breakpoint) { + display: inline-block; + margin-bottom: 0; + margin-left: rem-calc(24); + } + &:hover { opacity: .75; } @@ -330,10 +353,14 @@ header { } .icon-external { + display: inline-block; font-size: rem-calc(12); opacity: .5; + padding-top: rem-calc(3); + vertical-align: top; @media (min-width: $small-breakpoint) { + padding-top: 0; position: absolute; right: -18px; top: 3px; @@ -419,11 +446,6 @@ header { font-size: rem-calc(16); font-weight: lighter; line-height: $line-height*2; - padding-left: rem-calc(12); - - @media (min-width: $small-breakpoint) { - padding-left: 0; - } span { *display: inline; /* IE */ @@ -503,6 +525,18 @@ header { margin-right: rem-calc(24); width: 100%; + ul { + margin-left: 0; + + @media (min-width: $small-breakpoint) { + margin-left:rem-calc(24); + } + } + + ul li { + background: none; + } + ul li > a { font-size: rem-calc(14); @@ -510,13 +544,17 @@ header { border-radius: 0; line-height: $line-height*1.5; text-align: left; + background: none; + padding-left: rem-calc(6); } @media (min-width: $small-breakpoint) { &.button { + background: $brand; border-radius: rem-calc(3); line-height: rem-calc(15); margin-top: rem-calc(24); + padding-left: rem-calc(15); text-align: center; } } @@ -550,7 +588,7 @@ header { li:not(.has-form) a:not(.button) { background: none; color: white; - padding: 0 rem-calc(6); + padding: rem-calc(12) 0; @media (min-width: $small-breakpoint) { line-height: $line-height*4; @@ -608,7 +646,7 @@ header { a { color: $text; - display: block; + display: inline-block; font-size: rem-calc(14); font-weight: bold; line-height: $line-height*2; @@ -616,12 +654,26 @@ header { text-align: left; @media (min-width: $small-breakpoint) { - display: inline-block; line-height: $line-height*3; margin-left: rem-calc(12); margin-right: rem-calc(72); } + &:after { + color: $border; + content: "|"; + padding: 0 rem-calc(12); + + @media (min-width: $small-breakpoint) { + content: none; + padding: 0; + } + } + + &:last-child:after { + content: none; + } + &:hover { color: $link; } @@ -758,7 +810,6 @@ footer { background: #065687 image-url("auth_bg.jpg"); background-repeat: no-repeat; background-size: cover; - padding-top: rem-calc(24); @media (min-width: $small-breakpoint) { padding-top: rem-calc(48); @@ -772,9 +823,8 @@ footer { @include logo; a { - line-height: $line-height; - span { + span.logo-site { vertical-align: middle; } } @@ -1058,7 +1108,11 @@ img.initialjs-avatar { h2 { display: inline-block; font-size: rem-calc(24); - margin-left: rem-calc(-17); + margin: rem-calc(12) 0; + + @media (min-width: $small-breakpoint) { + margin: rem-calc(24) 0; + } } select { @@ -1070,10 +1124,6 @@ img.initialjs-avatar { padding: rem-calc(12); width: auto; - @media (max-width: $small) { - margin-left: rem-calc(-17); - } - @media (min-width: $small-breakpoint) { margin: 0 0 rem-calc(24) rem-calc(12); } diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 625452196..b0bd18e5b 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -23,7 +23,7 @@ class AccountController < ApplicationController def account_params if @account.organization? - params.require(:account).permit(:phone_number, :email_on_debate_comment, :email_on_comment_reply, organization_attributes: [:name]) + params.require(:account).permit(:phone_number, :email_on_debate_comment, :email_on_comment_reply, organization_attributes: [:name, :responsible_name]) else params.require(:account).permit(:username, :email_on_debate_comment, :email_on_comment_reply) end diff --git a/app/controllers/organizations/registrations_controller.rb b/app/controllers/organizations/registrations_controller.rb index 0341ef4ed..c0f69da33 100644 --- a/app/controllers/organizations/registrations_controller.rb +++ b/app/controllers/organizations/registrations_controller.rb @@ -29,7 +29,7 @@ class Organizations::RegistrationsController < Devise::RegistrationsController private def sign_up_params - params.require(:user).permit(:email, :password, :phone_number, :password_confirmation, :captcha, :captcha_key, :terms_of_service, organization_attributes: [:name]) + params.require(:user).permit(:email, :password, :phone_number, :password_confirmation, :captcha, :captcha_key, :terms_of_service, organization_attributes: [:name, :responsible_name]) end end diff --git a/app/controllers/verification_controller.rb b/app/controllers/verification_controller.rb index 6d1945af4..adb3ee345 100644 --- a/app/controllers/verification_controller.rb +++ b/app/controllers/verification_controller.rb @@ -11,7 +11,9 @@ class VerificationController < ApplicationController private def next_step_path(user = current_user) - if user.level_three_verified? + if user.organization? + { path: account_path } + elsif user.level_three_verified? { path: account_path, notice: t('verification.redirect_notices.already_verified') } elsif user.verification_letter_sent? { path: edit_letter_path } diff --git a/app/models/organization.rb b/app/models/organization.rb index 0797849e7..069afc27f 100644 --- a/app/models/organization.rb +++ b/app/models/organization.rb @@ -3,7 +3,9 @@ class Organization < ActiveRecord::Base validates :name, presence: true validates :name, uniqueness: true - validate :validate_name_length + validate :validate_name_length + validates :responsible_name, presence: true + validate :validate_responsible_name_length delegate :email, :phone_number, to: :user @@ -37,6 +39,10 @@ class Organization < ActiveRecord::Base @@name_max_length ||= self.columns.find { |c| c.name == 'name' }.limit || 60 end + def self.responsible_name_max_length + @@responsible_name_max_length ||= self.columns.find { |c| c.name == 'responsible_name' }.limit || 60 + end + private def validate_name_length @@ -46,4 +52,11 @@ class Organization < ActiveRecord::Base validator.validate(self) end + def validate_responsible_name_length + validator = ActiveModel::Validations::LengthValidator.new( + attributes: :responsible_name, + maximum: Organization.responsible_name_max_length) + validator.validate(self) + end + end diff --git a/app/models/user.rb b/app/models/user.rb index 4bbd989f4..a518ec8d4 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -32,7 +32,7 @@ class User < ActiveRecord::Base validates_associated :organization, message: false - accepts_nested_attributes_for :organization + accepts_nested_attributes_for :organization, update_only: true scope :administrators, -> { joins(:administrators) } scope :moderators, -> { joins(:moderator) } diff --git a/app/views/account/show.html.erb b/app/views/account/show.html.erb index d580052e2..e43c424de 100644 --- a/app/views/account/show.html.erb +++ b/app/views/account/show.html.erb @@ -1,22 +1,22 @@
<%= link_to t("account.show.change_credentials_link"), edit_user_registration_path, class: "button radius small secondary right" %> - -
- -
- + <% unless @account.organization? %> +
+ +
+ <% end %>

<%= t("account.show.title") %>

<%= form_for @account, as: :account, url: account_path do |f| %> @@ -33,6 +33,7 @@ <% if @account.organization? %> <%= f.fields_for :organization do |fo| %> <%= fo.text_field :name, autofocus: true, maxlength: Organization.name_max_length, placeholder: t("account.show.organization_name_label") %> + <%= fo.text_field :responsible_name, autofocus: true, maxlength: Organization.responsible_name_max_length, placeholder: t("account.show.organization_responsible_name_placeholder") %> <% end %> <%= f.text_field :phone_number, placeholder: t("account.show.phone_number_label") %> diff --git a/app/views/admin/organizations/index.html.erb b/app/views/admin/organizations/index.html.erb index 51a8dd959..aebcbea54 100644 --- a/app/views/admin/organizations/index.html.erb +++ b/app/views/admin/organizations/index.html.erb @@ -25,6 +25,7 @@ <%= organization.name %> <%= organization.email %> <%= organization.phone_number %> + <%= organization.responsible_name %> <% if organization.verified? %> diff --git a/app/views/admin/organizations/search.html.erb b/app/views/admin/organizations/search.html.erb index 3bc8ccedc..99f2a1f81 100644 --- a/app/views/admin/organizations/search.html.erb +++ b/app/views/admin/organizations/search.html.erb @@ -21,6 +21,7 @@ <%= organization.name %> <%= organization.email %> <%= organization.phone_number %> + <%= organization.responsible_name %> <% if organization.verified? %> diff --git a/app/views/comments/_flag_actions.html.erb b/app/views/comments/_flag_actions.html.erb index c056204e7..007ab90b4 100644 --- a/app/views/comments/_flag_actions.html.erb +++ b/app/views/comments/_flag_actions.html.erb @@ -1,23 +1,25 @@ -<% if show_flag_action? comment %> -  |  - - -<% end %> + + <% if show_flag_action? comment %> +  |  + + + <% end %> -<% if show_unflag_action? comment %> -  |  - - -<% end %> + <% if show_unflag_action? comment %> +  |  + + + <% end %> + diff --git a/app/views/debates/_flag_actions.html.erb b/app/views/debates/_flag_actions.html.erb index 20f147df9..9456d82d2 100644 --- a/app/views/debates/_flag_actions.html.erb +++ b/app/views/debates/_flag_actions.html.erb @@ -1,21 +1,23 @@ -<% if show_flag_action? debate %> - - -<% end %> + + <% if show_flag_action? debate %> + + + <% end %> -<% if show_unflag_action? debate %> - - -<% end %> + <% if show_unflag_action? debate %> + + + <% end %> + diff --git a/app/views/debates/index.html.erb b/app/views/debates/index.html.erb index d05cf8313..5e7fafe0e 100644 --- a/app/views/debates/index.html.erb +++ b/app/views/debates/index.html.erb @@ -9,17 +9,17 @@
-
+
<% if @search_terms %> -

- <%= page_entries_info @debates %> - <%= t("debates.index.search_results", count: @debates.size, search_term: @search_terms) %> -

+

+ <%= page_entries_info @debates %> + <%= t("debates.index.search_results", count: @debates.size, search_term: @search_terms) %> +

<% elsif @tag_filter %> -

- <%= page_entries_info @debates %> - <%= t("debates.index.filter_topic", count: @debates.size, topic: @tag_filter) %> -

+

+ <%= page_entries_info @debates %> + <%= t("debates.index.filter_topic", count: @debates.size, topic: @tag_filter) %> +

<% end %>
<% if @tag_filter || @search_terms %> @@ -28,10 +28,10 @@ <%= t("debates.index.select_order") %> <% else %> -
-

- <%= t("debates.index.select_order_long") %> -

+
+

+ <%= t("debates.index.select_order_long") %> +

<% end %> <%= render 'shared/order_selector', i18n_namespace: "debates.index" %>
diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index f478ccfd3..e85fba66b 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -33,7 +33,7 @@