decidim-core 0.0.1.alpha2 → 0.0.1.alpha3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +11 -6
- data/app/assets/config/decidim_core_manifest.js +1 -0
- data/app/assets/images/decidim/badge-ajuntament-footer.png +0 -0
- data/app/assets/images/decidim/badge-ajuntament-header.svg +60 -0
- data/app/assets/images/decidim/cc-badge.png +0 -0
- data/app/assets/images/decidim/hero-home.jpg +0 -0
- data/app/assets/images/decidim/icons.svg +1 -0
- data/app/assets/javascripts/decidim.js +12 -1
- data/app/assets/stylesheets/{decidim.css → decidim.scss} +2 -1
- data/app/assets/stylesheets/decidim/application.sass +7 -0
- data/app/assets/stylesheets/decidim/layouts/_home.scss +244 -0
- data/app/assets/stylesheets/decidim/layouts/_user.scss +24 -0
- data/app/assets/stylesheets/decidim/layouts/_view.scss +22 -0
- data/app/assets/stylesheets/decidim/modules/_address.scss +26 -0
- data/app/assets/stylesheets/decidim/modules/_author-avatar.scss +119 -0
- data/app/assets/stylesheets/decidim/modules/_buttons.scss +120 -0
- data/app/assets/stylesheets/decidim/modules/_callout.scss +25 -0
- data/app/assets/stylesheets/decidim/modules/_card-grid.scss +22 -0
- data/app/assets/stylesheets/decidim/modules/_cards.scss +520 -0
- data/app/assets/stylesheets/decidim/modules/_comments.scss +119 -0
- data/app/assets/stylesheets/decidim/modules/_defintion-data.scss +54 -0
- data/app/assets/stylesheets/decidim/modules/_extra.scss +43 -0
- data/app/assets/stylesheets/decidim/modules/_filters.scss +96 -0
- data/app/assets/stylesheets/decidim/modules/_flag.scss +9 -0
- data/app/assets/stylesheets/decidim/modules/_footer.scss +90 -0
- data/app/assets/stylesheets/decidim/modules/_forms.scss +30 -0
- data/app/assets/stylesheets/decidim/modules/_help.scss +14 -0
- data/app/assets/stylesheets/decidim/modules/_icons.scss +32 -0
- data/app/assets/stylesheets/decidim/modules/_layout.scss +58 -0
- data/app/assets/stylesheets/decidim/modules/_list-docs.scss +30 -0
- data/app/assets/stylesheets/decidim/modules/_main-container.scss +70 -0
- data/app/assets/stylesheets/decidim/modules/_map.scss +72 -0
- data/app/assets/stylesheets/decidim/modules/_navbar.scss +258 -0
- data/app/assets/stylesheets/decidim/modules/_opinion-toggle.scss +30 -0
- data/app/assets/stylesheets/decidim/modules/_order-by.scss +66 -0
- data/app/assets/stylesheets/decidim/modules/_owl-carousel.scss +72 -0
- data/app/assets/stylesheets/decidim/modules/_phase-nav.scss +177 -0
- data/app/assets/stylesheets/decidim/modules/_popularity.scss +74 -0
- data/app/assets/stylesheets/decidim/modules/_process-header.scss +125 -0
- data/app/assets/stylesheets/decidim/modules/_process-info.scss +44 -0
- data/app/assets/stylesheets/decidim/modules/_process-nav.scss +99 -0
- data/app/assets/stylesheets/decidim/modules/_reference.scss +6 -0
- data/app/assets/stylesheets/decidim/modules/_reveal.scss +20 -0
- data/app/assets/stylesheets/decidim/modules/_share.scss +28 -0
- data/app/assets/stylesheets/decidim/modules/_signup.scss +39 -0
- data/app/assets/stylesheets/decidim/modules/_static-pages.scss +46 -0
- data/app/assets/stylesheets/decidim/modules/_status-labels.scss +14 -0
- data/app/assets/stylesheets/decidim/modules/_tags.scss +29 -0
- data/app/assets/stylesheets/decidim/modules/_timeline.scss +189 -0
- data/app/assets/stylesheets/decidim/modules/_title-action.scss +28 -0
- data/app/assets/stylesheets/decidim/modules/_typography.scss +116 -0
- data/app/assets/stylesheets/decidim/modules/_user-form.scss +14 -0
- data/app/assets/stylesheets/decidim/modules/_video.scss +18 -0
- data/app/assets/stylesheets/decidim/utils/_fontface.scss +1 -0
- data/app/assets/stylesheets/decidim/utils/_helpers.sass +21 -0
- data/app/assets/stylesheets/decidim/utils/_keyframes.sass +13 -0
- data/app/assets/stylesheets/decidim/utils/_mixins.sass +33 -0
- data/app/assets/stylesheets/decidim/utils/_settings.scss +570 -0
- data/app/assets/stylesheets/decidim/utils/_toggle-expand.scss +8 -0
- data/app/assets/stylesheets/decidim/utils/_variables.scss +25 -0
- data/app/controllers/concerns/decidim/needs_organization.rb +31 -0
- data/app/controllers/decidim/application_controller.rb +1 -0
- data/app/controllers/decidim/devise/confirmations_controller.rb +10 -0
- data/app/controllers/decidim/devise/invitations_controller.rb +20 -0
- data/app/controllers/decidim/devise/passwords_controller.rb +10 -0
- data/app/controllers/decidim/devise/registrations_controller.rb +19 -0
- data/app/controllers/decidim/devise/sessions_controller.rb +10 -0
- data/app/helpers/decidim/application_helper.rb +3 -0
- data/app/helpers/decidim/layout_helper.rb +27 -0
- data/app/helpers/decidim/translations_helper.rb +16 -0
- data/app/mailers/decidim/decidim_devise_mailer.rb +11 -0
- data/app/middleware/decidim/current_organization.rb +28 -0
- data/app/models/decidim/organization.rb +9 -0
- data/app/models/decidim/participatory_process.rb +14 -0
- data/app/models/decidim/user.rb +28 -4
- data/app/views/decidim/devise/confirmations/new.html.erb +15 -0
- data/app/views/decidim/devise/invitations/edit.html.erb +14 -0
- data/app/views/decidim/devise/passwords/edit.html.erb +20 -0
- data/app/views/decidim/devise/passwords/new.html.erb +15 -0
- data/app/views/decidim/devise/registrations/edit.html.erb +35 -0
- data/app/views/decidim/devise/registrations/new.html.erb +23 -0
- data/app/views/decidim/devise/sessions/new.html.erb +23 -0
- data/app/views/decidim/devise/shared/_links.html.erb +25 -0
- data/app/views/decidim/home/show.html.erb +16 -4
- data/app/views/devise/mailer/confirmation_instructions.html.erb +4 -0
- data/app/views/devise/mailer/organization_admin_invitation_instructions.html.erb +10 -0
- data/app/views/devise/mailer/organization_admin_invitation_instructions.text.erb +11 -0
- data/app/views/devise/mailer/password_change.html.erb +3 -0
- data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/layouts/decidim/_footer.html.erb +28 -2
- data/app/views/layouts/decidim/_header.html.erb +59 -2
- data/config/i18n-tasks.yml +120 -0
- data/config/initializers/devise.rb +58 -8
- data/config/locales/en.yml +35 -0
- data/config/routes.rb +12 -1
- data/db/migrate/20160919104837_create_decidim_organizations.rb +13 -0
- data/db/migrate/20160920140207_devise_invitable_add_to_decidim_users.rb +23 -0
- data/db/migrate/20160920141039_user_belongs_to_organization.rb +5 -0
- data/db/migrate/20160920141151_user_has_roles.rb +5 -0
- data/db/migrate/20161005130108_add_participatory_processes.rb +17 -0
- data/db/migrate/20161005153007_add_description_to_organizations.rb +9 -0
- data/db/migrate/20161006085629_add_confirmable_to_devise.rb +14 -0
- data/db/seeds.rb +35 -0
- data/lib/decidim/core.rb +0 -1
- data/lib/decidim/core/engine.rb +30 -0
- data/lib/decidim/core/version.rb +1 -1
- data/lib/decidim/devise_failure_app.rb +36 -0
- data/lib/decidim/form_builder.rb +38 -0
- data/lib/decidim/translatable_attributes.rb +86 -0
- data/lib/devise/models/decidim_validatable.rb +67 -0
- data/lib/tasks/factory_girl.rake +16 -0
- metadata +254 -9
- data/config/locales/devise.en.yml +0 -62
- data/lib/decidim/testing_support/common_rake.rb +0 -13
- data/lib/generators/decidim/dummy_generator.rb +0 -58
- data/lib/generators/decidim/install_generator.rb +0 -76
- data/lib/generators/decidim/templates/initializer.rb +0 -4
@@ -0,0 +1,25 @@
|
|
1
|
+
// Variables
|
2
|
+
|
3
|
+
$primary: map-get($foundation-palette, primary);
|
4
|
+
$secondary: map-get($foundation-palette, secondary);
|
5
|
+
$success: map-get($foundation-palette, success);
|
6
|
+
$warning: map-get($foundation-palette, warning);
|
7
|
+
$alert: map-get($foundation-palette, alert);
|
8
|
+
|
9
|
+
$light-gray-dark: darken($light-gray, 2.5);
|
10
|
+
|
11
|
+
$proposals: #238FF7;
|
12
|
+
$actions: #57D685;
|
13
|
+
$debates: #FA6C96;
|
14
|
+
$meetings: #FABC6C;
|
15
|
+
|
16
|
+
$twitter: #55acee;
|
17
|
+
$facebook: #3b5998;
|
18
|
+
$google: #dd4b39;
|
19
|
+
|
20
|
+
$muted: lighten($body-font-color, 30);
|
21
|
+
|
22
|
+
$border: 1px solid $medium-gray;
|
23
|
+
|
24
|
+
|
25
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "active_support/concern"
|
4
|
+
|
5
|
+
module Decidim
|
6
|
+
# Shared behaviour for controllers that need an organization present in order
|
7
|
+
# to work. The origanization is injected via the CurrentOrganization
|
8
|
+
# middleware.
|
9
|
+
module NeedsOrganization
|
10
|
+
extend ActiveSupport::Concern
|
11
|
+
|
12
|
+
included do
|
13
|
+
before_action :verify_organization
|
14
|
+
helper_method :current_organization
|
15
|
+
|
16
|
+
# The current organization for the request.
|
17
|
+
#
|
18
|
+
# Returns an Organization.
|
19
|
+
def current_organization
|
20
|
+
@current_organization ||= request.env["decidim.current_organization"]
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
# Raises a 404 if no organization is present.
|
26
|
+
def verify_organization
|
27
|
+
raise ActionController::RoutingError, "Not Found" unless current_organization
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
module Devise
|
4
|
+
# Custom Devise ConfirmationsController to avoid namespace problems.
|
5
|
+
class ConfirmationsController < ::Devise::ConfirmationsController
|
6
|
+
include Decidim::NeedsOrganization
|
7
|
+
layout "application"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
module Devise
|
4
|
+
# This controller customizes the behaviour of Devise::Invitiable.
|
5
|
+
class InvitationsController < ::Devise::InvitationsController
|
6
|
+
# We don't users to create invitations, so we just redirect them to the
|
7
|
+
# homepage.
|
8
|
+
def authenticate_inviter!
|
9
|
+
redirect_to root_path
|
10
|
+
end
|
11
|
+
|
12
|
+
# Overwrite the method that returns the path after a user accepts an
|
13
|
+
# invitation. Using the param `invite_redirect` we can redirect the user
|
14
|
+
# to a custom path after it has accepted the invitation.
|
15
|
+
def after_accept_path_for(resource)
|
16
|
+
params[:invite_redirect] || after_sign_in_path_for(resource)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
module Devise
|
4
|
+
# Custom Devise PasswordsController to avoid namespace problems.
|
5
|
+
class PasswordsController < ::Devise::PasswordsController
|
6
|
+
include Decidim::NeedsOrganization
|
7
|
+
layout "application"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
module Devise
|
4
|
+
# This controller customizes the behaviour of Devise's
|
5
|
+
# RegistrationsController so we can specify a custom layout.
|
6
|
+
class RegistrationsController < ::Devise::RegistrationsController
|
7
|
+
include Decidim::NeedsOrganization
|
8
|
+
layout "application"
|
9
|
+
|
10
|
+
protected
|
11
|
+
|
12
|
+
# Called before resource.save
|
13
|
+
def build_resource(hash = nil)
|
14
|
+
super(hash)
|
15
|
+
resource.organization = current_organization
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
module Devise
|
4
|
+
# Custom Devise SessionsController to avoid namespace problems.
|
5
|
+
class SessionsController < ::Devise::SessionsController
|
6
|
+
include Decidim::NeedsOrganization
|
7
|
+
layout "application"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -5,5 +5,32 @@ module Decidim
|
|
5
5
|
def decidim_page_title
|
6
6
|
Decidim.config.application_name
|
7
7
|
end
|
8
|
+
|
9
|
+
# Outputs an SVG-based icon.
|
10
|
+
#
|
11
|
+
# name - The String with the icon name.
|
12
|
+
# options - The Hash options used to customize the icon (default {}):
|
13
|
+
# :width - The Number of width in pixels (optional).
|
14
|
+
# :height - The Number of height in pixels (optional).
|
15
|
+
# :aria_label - The String to set as aria label (optional).
|
16
|
+
# :aria_hidden - The Truthy value to enable aria_hidden (optional).
|
17
|
+
# :role - The String to set as the role (optional).
|
18
|
+
# :class - The String to add as a CSS class (optional).
|
19
|
+
#
|
20
|
+
# Returns a String.
|
21
|
+
def icon(name, options = {})
|
22
|
+
html_properties = {}
|
23
|
+
|
24
|
+
html_properties["width"] = options[:width]
|
25
|
+
html_properties["height"] = options[:height]
|
26
|
+
html_properties["aria-label"] = options[:aria_label]
|
27
|
+
html_properties["role"] = options[:role]
|
28
|
+
html_properties["aria-hidden"] = options[:aria_hidden]
|
29
|
+
html_properties["class"] = "icon icon--#{name} #{options[:class]}"
|
30
|
+
|
31
|
+
content_tag :svg, html_properties do
|
32
|
+
content_tag :use, nil, "xlink:href" => "#{asset_url("decidim/icons.svg")}#icon-#{name}"
|
33
|
+
end
|
34
|
+
end
|
8
35
|
end
|
9
36
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
# Helper that provides convenient methods to deal with translated attributes.
|
4
|
+
module TranslationsHelper
|
5
|
+
# Public: Returns the translation of an attribute using the current locale,
|
6
|
+
# if available.
|
7
|
+
#
|
8
|
+
# attribute - A Hash where keys (strings) are locales, and their values are
|
9
|
+
# the translation for each locale.
|
10
|
+
#
|
11
|
+
# Returns a String with the translation.
|
12
|
+
def translated_attribute(attribute)
|
13
|
+
attribute.try(:[], I18n.locale.to_s)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
# A custom mailer for Devise so we can tweak the invitation instructions for
|
4
|
+
# each role.
|
5
|
+
class DecidimDeviseMailer < Devise::Mailer
|
6
|
+
def invitation_instructions(record, token, opts = {})
|
7
|
+
@token = token
|
8
|
+
devise_mail(record, opts[:invitation_instructions] || :invitation_instructions, opts)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
# A middleware that enhances the request with the current organization based
|
4
|
+
# on the hostname.
|
5
|
+
class CurrentOrganization
|
6
|
+
# Initializes the Rack Middleware.
|
7
|
+
#
|
8
|
+
# app - The Rack application
|
9
|
+
def initialize(app)
|
10
|
+
@app = app
|
11
|
+
end
|
12
|
+
|
13
|
+
# Main entry point for a Rack Middleware.
|
14
|
+
#
|
15
|
+
# env - A Hash.
|
16
|
+
def call(env)
|
17
|
+
env["decidim.current_organization"] = detect_current_organization(env)
|
18
|
+
@app.call(env)
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def detect_current_organization(env)
|
24
|
+
host = Rack::Request.new(env).host.downcase
|
25
|
+
Decidim::Organization.where(host: host).first
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
# Organizations are one of the main models of Decidim. In a single Decidim
|
4
|
+
# installation we can find many organizations and each of them can start
|
5
|
+
# their own participatory processes.
|
6
|
+
class Organization < ApplicationRecord
|
7
|
+
validates :name, :host, uniqueness: true
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
# Interaction between a user and an organization is done via a
|
4
|
+
# ParticipatoryProcess. It's a unit of action from the Organization point of
|
5
|
+
# view that groups several features (proposals, debates...) distributed in
|
6
|
+
# steps that get enabled or disabled depending on which step is currently
|
7
|
+
# active.
|
8
|
+
class ParticipatoryProcess < ApplicationRecord
|
9
|
+
belongs_to :organization, foreign_key: "decidim_organization_id", class_name: Decidim::Organization
|
10
|
+
|
11
|
+
validates :title, :slug, :subtitle, :short_description, :description, presence: true
|
12
|
+
validates :slug, uniqueness: true
|
13
|
+
end
|
14
|
+
end
|
data/app/models/decidim/user.rb
CHANGED
@@ -1,10 +1,34 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
require_dependency "devise/models/decidim_validatable"
|
3
|
+
|
2
4
|
module Decidim
|
3
5
|
# A User is a citizen that wants to join the platform to participate.
|
4
6
|
class User < ApplicationRecord
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
devise :invitable, :database_authenticatable, :registerable, :confirmable,
|
8
|
+
:recoverable, :rememberable, :trackable, :decidim_validatable
|
9
|
+
|
10
|
+
belongs_to :organization, foreign_key: "decidim_organization_id", class_name: Decidim::Organization
|
11
|
+
|
12
|
+
ROLES = %w(admin moderator official).freeze
|
13
|
+
|
14
|
+
validates :organization, presence: true
|
15
|
+
validate :all_roles_are_valid
|
16
|
+
|
17
|
+
# Public: Allows customizing the invitation instruction email content when
|
18
|
+
# inviting a user.
|
19
|
+
#
|
20
|
+
# Returns a String.
|
21
|
+
attr_accessor :invitation_instructions
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def all_roles_are_valid
|
26
|
+
errors.add(:roles, :invalid) unless roles.all? { |role| ROLES.include?(role) }
|
27
|
+
end
|
28
|
+
|
29
|
+
# Changes default Devise behaviour to use ActiveJob to send async emails.
|
30
|
+
def send_devise_notification(notification, *args)
|
31
|
+
devise_mailer.send(notification, self, *args).deliver_later
|
32
|
+
end
|
9
33
|
end
|
10
34
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<h2><%= t("devise.confirmations.new.resend_confirmation_instructions") %></h2>
|
2
|
+
|
3
|
+
<%= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f| %>
|
4
|
+
<%= devise_error_messages! %>
|
5
|
+
|
6
|
+
<div class="field">
|
7
|
+
<%= f.email_field :email, autofocus: true, value: (resource.pending_reconfirmation? ? resource.unconfirmed_email : resource.email) %>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<div class="actions">
|
11
|
+
<%= f.submit t("devise.confirmations.new.resend_confirmation_instructions") %>
|
12
|
+
</div>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<%= render "decidim/devise/shared/links" %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<h2><%= t "devise.invitations.edit.header" %></h2>
|
2
|
+
|
3
|
+
<%= form_for resource, as: resource_name, url: invitation_path(resource_name, invite_redirect: params[:invite_redirect]), html: { method: :put } do |f| %>
|
4
|
+
<%= devise_error_messages! %>
|
5
|
+
<%= f.hidden_field :invitation_token %>
|
6
|
+
|
7
|
+
<% if f.object.class.require_password_on_accepting %>
|
8
|
+
<%= f.password_field :password %></p>
|
9
|
+
|
10
|
+
<%= f.password_field :password_confirmation %></p>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<p><%= f.submit t("devise.invitations.edit.submit_button") %></p>
|
14
|
+
<% end %>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<h2><%= t("devise.passwords.edit.change_your_password") %></h2>
|
2
|
+
|
3
|
+
<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| %>
|
4
|
+
<%= devise_error_messages! %>
|
5
|
+
<%= f.hidden_field :reset_password_token %>
|
6
|
+
|
7
|
+
<div class="field">
|
8
|
+
<%= f.password_field :password, autocomplete: "off" %>
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<div class="field">
|
12
|
+
<%= f.password_field :password_confirmation, autocomplete: "off" %>
|
13
|
+
</div>
|
14
|
+
|
15
|
+
<div class="actions">
|
16
|
+
<%= f.submit t("devise.passwords.edit.change_my_password") %>
|
17
|
+
</div>
|
18
|
+
<% end %>
|
19
|
+
|
20
|
+
<%= render "decidim/devise/shared/links" %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<h2><%= t("devise.passwords.new.forgot_your_password") %></h2>
|
2
|
+
|
3
|
+
<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %>
|
4
|
+
<%= devise_error_messages! %>
|
5
|
+
|
6
|
+
<div class="field">
|
7
|
+
<%= f.email_field :email, autofocus: true %>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<div class="actions">
|
11
|
+
<%= f.submit t("devise.passwords.new.send_me_reset_password_instructions") %>
|
12
|
+
</div>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<%= render "decidim/devise/shared/links" %>
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<h2><%= t("devise.registrations.edit.title", resource: resource_class.model_name.human) %></h2>
|
2
|
+
|
3
|
+
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
|
4
|
+
<%= devise_error_messages! %>
|
5
|
+
|
6
|
+
<div class="field">
|
7
|
+
<%= f.email_field :email %>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
|
11
|
+
<p>
|
12
|
+
<%= t("devise.registrations.edit.currently_waiting_confirmation_for_email", email: resource.unconfirmed_email) %>
|
13
|
+
</p>
|
14
|
+
<% end %>
|
15
|
+
|
16
|
+
<div class="field">
|
17
|
+
<%= f.password_field :password, autocomplete: "off" %>
|
18
|
+
</div>
|
19
|
+
|
20
|
+
<div class="field">
|
21
|
+
<%= f.password_field :password_confirmation %>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div class="field">
|
25
|
+
<%= f.password_field :current_password %>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<div><%= f.submit t("devise.registrations.edit.update") %></div>
|
29
|
+
<% end %>
|
30
|
+
|
31
|
+
<h3><%= t("devise.registrations.edit.cancel_my_account") %></h3>
|
32
|
+
|
33
|
+
<p><%= t("devise.registrations.edit.unhappy") %> <%= link_to t("devise.registrations.edit.cancel_my_account"), registration_path(resource_name), data: { confirm: t("devise.registrations.edit.are_you_sure") }, method: :delete %>.</p>
|
34
|
+
|
35
|
+
<%= link_to t("devise.shared.links.back"), :back %>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<h2><%= t("devise.registrations.new.sign_up") %></h2>
|
2
|
+
|
3
|
+
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
|
4
|
+
<%= devise_error_messages! %>
|
5
|
+
|
6
|
+
<div class="field">
|
7
|
+
<%= f.email_field :email, autofocus: true %>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<div class="field">
|
11
|
+
<%= f.password_field :password, autocomplete: "off" %>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class="field">
|
15
|
+
<%= f.password_field :password_confirmation, autocomplete: "off" %>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<div class="actions">
|
19
|
+
<%= f.submit t("devise.registrations.new.sign_up") %>
|
20
|
+
</div>
|
21
|
+
<% end %>
|
22
|
+
|
23
|
+
<%= render "decidim/devise/shared/links" %>
|