nippo_core 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/nippo_core/application_controller.rb +1 -1
  3. data/app/controllers/nippo_core/group_member_relations_controller.rb +13 -2
  4. data/app/controllers/nippo_core/groups/users_controller.rb +11 -0
  5. data/app/controllers/nippo_core/groups_controller.rb +9 -2
  6. data/app/controllers/nippo_core/users/registrations_controller.rb +1 -0
  7. data/app/controllers/nippo_core/users/sessions_controller.rb +1 -0
  8. data/app/models/nippo_core/group.rb +13 -7
  9. data/app/models/nippo_core/group_member_relation.rb +2 -0
  10. data/app/models/nippo_core/user.rb +24 -0
  11. data/app/views/layouts/nippo_core/application.slim +27 -17
  12. data/app/views/nippo_core/application/_link_to_join.slim +4 -0
  13. data/app/views/nippo_core/group_member_relations/accept.js.erb +2 -0
  14. data/app/views/nippo_core/group_member_relations/new.slim +4 -3
  15. data/app/views/nippo_core/group_member_relations/unaccepted.slim +6 -0
  16. data/app/views/nippo_core/groups/index.slim +3 -3
  17. data/app/views/nippo_core/groups/new.slim +6 -5
  18. data/app/views/nippo_core/groups/request_join.js.erb +2 -0
  19. data/app/views/nippo_core/groups/show.slim +29 -9
  20. data/app/views/nippo_core/reports/index.slim +2 -2
  21. data/app/views/nippo_core/reports/new.slim +5 -3
  22. data/app/views/nippo_core/reports/show.slim +6 -4
  23. data/app/views/nippo_core/users/registrations/new.slim +14 -13
  24. data/app/views/nippo_core/users/sessions/new.slim +7 -6
  25. data/app/views/nippo_core/users/show.slim +10 -8
  26. data/config/routes.rb +9 -1
  27. data/db/migrate/20170420155712_create_nippo_core_group_member_relations.rb +3 -1
  28. data/lib/nippo_core/version.rb +1 -1
  29. metadata +9 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8377e6389fa4c8f4a6bf7f2671cf80a46b78c0fb
4
- data.tar.gz: 6526438189d1fcd30e4dba596ad7c2ac336e9662
3
+ metadata.gz: 2bb048e8542f800f97507d2c5159631bcf63920a
4
+ data.tar.gz: dff7e64c3afa052e464fd48cb2b9933f758b2ba6
5
5
  SHA512:
6
- metadata.gz: 117027c5f86fd9e34266fd763fe96dc3afb435f1c1e917cc2765a1bec0ccd9eec9180c6f453fff6a0e04f30e836ecdd7724a776b770d32ef085b33e55693f95d
7
- data.tar.gz: 00f96001be8c7578d3377a552043b6c219988189672c8fd87686306a3278bc7aff06b695b59fb287f03b11cc3573ca14dc3e8f7b513d5954c8eb2dc14ea39df2
6
+ metadata.gz: a14ddbf89456e67c8d8837719e965bc7d0e15e893fbc4d921af9a982e5d583d6f200ce3f8e655ba4998f94f6970a83f2962863b1f496cc15e18fa76ae7babc3c
7
+ data.tar.gz: 3fa1aba815dca42db8a5e6f0bb0d041dd066cf9b6283bf0bc1ae00ccadcf8e5ea910abc5dc08a27be3ad8fdb69ac364482e554a31fa1977a8839a0a0aed1f105
@@ -5,7 +5,7 @@ module NippoCore
5
5
 
6
6
  private
7
7
  def find_group
8
- @group = NippoCore::Group.find(params[:group_id])
8
+ @group = NippoCore::Group.find(params[:group_id] || params[:id])
9
9
  end
10
10
  end
11
11
  end
@@ -1,6 +1,6 @@
1
1
  module NippoCore
2
2
  class GroupMemberRelationsController < ApplicationController
3
- before_action :find_group
3
+ before_action :find_group, except: :accept
4
4
 
5
5
  def new
6
6
  @group_member_relations = @group.group_member_relations.new
@@ -10,9 +10,20 @@ module NippoCore
10
10
  def create
11
11
  redirect_to home_path and return unless @group.member?(current_user)
12
12
  user = NippoCore::User.find(params[:group_member_relation][:user_id])
13
- @group.add_member(user)
13
+ current_user.add_member(user, @group)
14
14
 
15
15
  redirect_to group_path(@group)
16
16
  end
17
+
18
+ def accept
19
+ @request = NippoCore::GroupMemberRelation.find(params[:group_member_relation_id])
20
+ current_user.accept_request(@request)
21
+
22
+ render layout: nil
23
+ end
24
+
25
+ def unaccepted
26
+ @requests = @group.unaccepted_requests.limit(5)
27
+ end
17
28
  end
18
29
  end
@@ -0,0 +1,11 @@
1
+ module NippoCore
2
+ module Groups
3
+ class UsersController < ApplicationController
4
+ before_action :find_group
5
+
6
+ def unaccepted
7
+ @requests = @group.unaccepted_requests.limit(5)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,6 +1,7 @@
1
1
  module NippoCore
2
2
  class GroupsController < ApplicationController
3
3
  before_action :initialize_group, only: [:new, :create]
4
+ before_action :find_group, only: [:show, :request_join]
4
5
 
5
6
  def index
6
7
  @groups = NippoCore::Group.order(created_at: :desc).page(params[:page]).per(10)
@@ -10,19 +11,25 @@ module NippoCore
10
11
  end
11
12
 
12
13
  def show
13
- @group = NippoCore::Group.find(params[:id])
14
14
  @reports = @group.reports.order(reported_at: :desc).limit(5)
15
+ @requests = @group.unaccepted_requests.limit(5)
16
+ @members = @group.members
15
17
  end
16
18
 
17
19
  def create
18
20
  if @group.save
19
- @group.add_member(current_user)
21
+ current_user.add_member(current_user, @group)
20
22
  redirect_to root_path
21
23
  else
22
24
  render 'new', status: 400
23
25
  end
24
26
  end
25
27
 
28
+ def request_join
29
+ result = current_user.send_request(@group)
30
+ render layout: nil
31
+ end
32
+
26
33
  private
27
34
  def initialize_group
28
35
  @group = NippoCore::Group.new(group_params.merge(creator: current_user))
@@ -1,5 +1,6 @@
1
1
  class NippoCore::Users::RegistrationsController < Devise::RegistrationsController
2
2
  before_action :configure_sign_up_params, only: [:create]
3
+ layout 'nippo_core/application'
3
4
  # before_action :configure_account_update_params, only: [:update]
4
5
 
5
6
  # GET /resource/sign_up
@@ -1,4 +1,5 @@
1
1
  class NippoCore::Users::SessionsController < Devise::SessionsController
2
+ layout 'nippo_core/application'
2
3
  # before_action :configure_sign_in_params, only: [:create]
3
4
 
4
5
  # GET /resource/sign_in
@@ -2,20 +2,26 @@ module NippoCore
2
2
  class Group < ApplicationRecord
3
3
  belongs_to :creator, class_name: 'NippoCore::User'
4
4
  has_many :reports, dependent: :destroy
5
- has_many :members, through: :group_member_relations, source: :user
5
+ has_many :users, through: :group_member_relations
6
6
  has_many :group_member_relations, dependent: :destroy
7
7
 
8
8
  validates :creator, presence: true
9
9
  validates :name, presence: true
10
10
 
11
- def add_member(user)
12
- relation = group_member_relations.find_or_initialize_by(user: user, status: false)
13
- relation.status = true
14
- relation.save
11
+ def member?(user)
12
+ group_member_relations.where.not(accepted_at: nil).exists?(user_id: user.id)
15
13
  end
16
14
 
17
- def member?(user)
18
- group_member_relations.exists?(user_id: user.id, status: true)
15
+ # TODO: implement test
16
+ def unaccepted_requests
17
+ group_member_relations.where(accepted_at: nil).includes(:user)
18
+ end
19
+
20
+ # TODO: implement test
21
+ def members
22
+ NippoCore::User.joins(:group_member_relations)
23
+ .where(nippo_core_group_member_relations: {group_id: self.id})
24
+ .where.not(nippo_core_group_member_relations: {accepted_at: nil})
19
25
  end
20
26
  end
21
27
  end
@@ -2,6 +2,8 @@ module NippoCore
2
2
  class GroupMemberRelation < ApplicationRecord
3
3
  belongs_to :user
4
4
  belongs_to :group
5
+ # TODO: reflect test to optional
6
+ belongs_to :accepter, class_name: 'NippoCore::User', optional: true
5
7
 
6
8
  validates :user, presence: true
7
9
  validates :group, presence: true
@@ -13,5 +13,29 @@ module NippoCore
13
13
  validates :last_name, presence: true
14
14
  validates :first_name, presence: true
15
15
  validates :nickname, presence: true
16
+
17
+ def send_request(group)
18
+ relation = group_member_relations.find_or_initialize_by(group: group)
19
+ relation.save
20
+ end
21
+
22
+ # TODO: had better check!
23
+ def add_member(user, group)
24
+ relation = group.group_member_relations.find_or_initialize_by(user: user, accepted_at: nil)
25
+ relation.accepted_at = Time.now
26
+ relation.accepter = self
27
+ relation.save
28
+ end
29
+
30
+ def accept_request(request)
31
+ return unless request.group.member?(self)
32
+ request.accepted_at = Time.now
33
+ request.accepter = self
34
+ request.save
35
+ end
36
+
37
+ def request_to?(group)
38
+ group_member_relations.exists?(group_id: group.id)
39
+ end
16
40
  end
17
41
  end
@@ -3,24 +3,34 @@ html
3
3
  head
4
4
  title
5
5
  | 日報
6
- = stylesheet_link_tag "nippo_core/application", media: "all"
6
+ / = stylesheet_link_tag "nippo_core/application", media: "all"
7
+ link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"
8
+ link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"
9
+ script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"
10
+ css:
11
+ body {
12
+ padding-top: 70px;
13
+ }
7
14
  = javascript_include_tag "nippo_core/application"
8
15
  = csrf_meta_tags
9
16
  body
10
- header.header
11
- div
12
- = t('daily report')
13
- nav
14
- - if user_signed_in?
15
- div
16
- = current_user.nickname
17
- ul
17
+ header.navbar.navbar-default.navbar-fixed-top
18
+ .container
19
+ .navbar-header
20
+ .navbar-brand
21
+ = t('daily report')
22
+ nav.nav.navbar-nav.navbar-right
18
23
  - if user_signed_in?
19
- li
20
- = link_to t('sign out'), destroy_user_session_path, method: :delete
21
- - else
22
- li
23
- = link_to t('sign in'), new_user_session_path
24
- li
25
- = link_to t('sign up'), new_user_registration_path
26
- = yield
24
+ .navbar-text
25
+ = current_user.nickname
26
+ ul.nav.navbar-nav
27
+ - if user_signed_in?
28
+ li
29
+ = link_to t('sign out'), destroy_user_session_path, method: :delete
30
+ - else
31
+ li
32
+ = link_to t('sign in'), new_user_session_path
33
+ li
34
+ = link_to t('sign up'), new_user_registration_path
35
+ .container
36
+ = yield
@@ -0,0 +1,4 @@
1
+ - if current_user.request_to?(group)
2
+ = link_to 'Requesting...', '#'
3
+ - else
4
+ = link_to 'Join us!', group_request_join_path(group), method: :post, remote: true, id: "link-to-join-group_#{group.id}"
@@ -0,0 +1,2 @@
1
+ $request = $("#request_<%= @request.id %>");
2
+ $request.remove();
@@ -1,4 +1,5 @@
1
1
  = form_for [@group, @group_member_relations] do |f|
2
- .field
3
- = f.collection_select :user_id, NippoCore::User.all, :id, :nickname
4
- = f.submit
2
+ .form-group
3
+ = f.collection_select :user_id, NippoCore::User.all, :id, :nickname, {}, class: 'form-control'
4
+ button.btn.btn-default
5
+ | Invite
@@ -0,0 +1,6 @@
1
+ ul
2
+ - @requests.each do |request|
3
+ li id="request_#{request.id}"
4
+ = request.user.nickname
5
+ |
6
+ = link_to 'accept', group_member_relation_accept_path(group_member_relation_id: request.id), method: :post, remote: true
@@ -1,12 +1,12 @@
1
1
  h1
2
2
  | Group index
3
- ul
3
+ ul.list-group
4
4
  - @groups.each do |group|
5
- li
5
+ li.list-group-item
6
6
  = link_to group.name, group
7
7
  p
8
8
  - if group.member?(current_user)
9
9
  | Member
10
10
  - else
11
- = link_to 'Join us!', '#'
11
+ = render 'link_to_join', group: group
12
12
  = paginate @groups
@@ -1,8 +1,9 @@
1
1
  = form_for @group do |f|
2
- .field
2
+ .form-group
3
3
  = f.label :name
4
- = f.text_field :name, placeholder: 'グループ名 (必須)'
5
- .field
4
+ = f.text_field :name, placeholder: 'グループ名 (必須)', class: 'form-control'
5
+ .form-group
6
6
  = f.label :description
7
- = f.text_area :description, placeholoder: '説明'
8
- = f.submit
7
+ = f.text_area :description, placeholder: '説明', class: 'form-control'
8
+ button.btn.btn-default
9
+ | Create Group
@@ -0,0 +1,2 @@
1
+ let $link = $("#link-to-join-group_<%= @group.id %>");
2
+ $link.attr("href", "#").text("Requesting...");
@@ -4,17 +4,37 @@ section
4
4
  h2
5
5
  | something
6
6
  = simple_format @group.description
7
- section
8
- - if @group.member?(current_user)
9
- h2
10
- | recently activity
7
+ section
8
+ h3
9
+ | Member
11
10
  ul
12
- - @reports.each do |report|
11
+ - @members.each do |m|
13
12
  li
14
- = link_to report.title, [@group, report]
15
- = link_to 'more', group_reports_path(group_id: @group.id)
16
- = link_to 'new report', new_group_report_path(group_id: @group.id)
13
+ = m.nickname
14
+ section
15
+ - if @group.member?(current_user)
16
+ section
17
+ h2
18
+ | recently activity
19
+ ul
20
+ - @reports.each do |report|
21
+ li
22
+ = link_to report.title, [@group, report]
23
+ .btn-group
24
+ = link_to 'more', group_reports_path(group_id: @group.id), class: 'btn btn-link'
25
+ = link_to 'new report', new_group_report_path(group_id: @group.id), class: 'btn btn-link'
26
+ section
27
+ h2
28
+ | requests
29
+ ul
30
+ - @requests.each do |request|
31
+ li id="request_#{request.id}"
32
+ = request.user.nickname
33
+ |
34
+ = link_to 'accept', group_member_relation_accept_path(group_member_relation_id: request.id), method: :post, remote: true, id: "link-to-accept-request_#{request.id}"
35
+ = link_to 'more', unaccepted_group_group_member_relations_path(group_id: @group.id), class: 'btn btn-link'
36
+ = link_to 'invite_member', new_group_group_member_relation_path(group_id: @group.id), class: 'btn btn-link'
17
37
  - else
18
38
  h2
19
39
  | Join us?
20
- | please click here!
40
+ = render 'link_to_join', group: @group
@@ -1,5 +1,5 @@
1
- ul
1
+ ul.list-group
2
2
  - @reports.each do |report|
3
- li
3
+ li.list-group-item
4
4
  = link_to report.title, group_report_path(report, group_id: @group.id)
5
5
  = paginate @reports
@@ -3,6 +3,8 @@ h2
3
3
  | &nbsp;
4
4
  = current_user.nickname
5
5
  = form_for [@group, @report] do |f|
6
- = f.label :body
7
- = f.text_area :body
8
- = f.submit
6
+ .form-group
7
+ = f.label :body
8
+ = f.text_area :body, class: 'form-control'
9
+ button.btn.btn-default
10
+ | Create Report
@@ -1,4 +1,6 @@
1
- h2
2
- = @report.title
3
- div
4
- == @report.markdowned_body
1
+ .panel.panel-default
2
+ .panel-heading
3
+ h2.panel-title
4
+ = @report.title
5
+ div.panel-body
6
+ == @report.markdowned_body
@@ -1,20 +1,20 @@
1
1
  h2
2
2
  | Sign up
3
- = form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f|
3
+ = form_for resource, as: resource_name, url: registration_path(resource_name) do |f|
4
4
  = devise_error_messages!
5
- .field
5
+ .form-group
6
6
  = f.label :email
7
7
  br
8
- = f.email_field :email, autofocus: true
9
- .field
8
+ = f.email_field :email, autofocus: true, class: 'form-control'
9
+ .form-group
10
10
  = f.label :last_name
11
- = f.text_field :last_name, placeholder: '苗字 (必須)'
11
+ = f.text_field :last_name, placeholder: '苗字 (必須)', class: 'form-control'
12
12
  = f.label :first_name
13
- = f.text_field :first_name, placeholder: '名前 (必須)'
14
- .field
13
+ = f.text_field :first_name, placeholder: '名前 (必須)', class: 'form-control'
14
+ .form-group
15
15
  = f.label :nickname
16
- = f.text_field :nickname, placeholder: 'ニックネーム (必須)'
17
- .field
16
+ = f.text_field :nickname, placeholder: 'ニックネーム (必須)', class: 'form-control'
17
+ .form-group
18
18
  = f.label :password
19
19
  - if @minimum_password_length
20
20
  em
@@ -22,11 +22,12 @@ h2
22
22
  = @minimum_password_length
23
23
  | characters minimum)
24
24
  br
25
- = f.password_field :password, autocomplete: "off"
26
- .field
25
+ = f.password_field :password, autocomplete: "off", class: 'form-control'
26
+ .form-group
27
27
  = f.label :password_confirmation
28
28
  br
29
- = f.password_field :password_confirmation, autocomplete: "off"
29
+ = f.password_field :password_confirmation, autocomplete: "off", class: 'form-control'
30
30
  .actions
31
- = f.submit "Sign up"
31
+ button.btn.btn-default
32
+ | Sign UP
32
33
  = render "nippo_core/users/shared/links"
@@ -1,18 +1,19 @@
1
1
  h2
2
2
  | Log in
3
3
  = form_for(resource, as: resource_name, url: session_path(resource_name)) do |f|
4
- .field
4
+ .form-group
5
5
  = f.label :email
6
6
  br
7
- = f.email_field :email, autofocus: true
8
- .field
7
+ = f.email_field :email, autofocus: true, class: 'form-control'
8
+ .form-group
9
9
  = f.label :password
10
10
  br
11
- = f.password_field :password, autocomplete: "off"
11
+ = f.password_field :password, autocomplete: "off", class: 'form-control'
12
12
  - if devise_mapping.rememberable?
13
- .field
13
+ .form-group
14
14
  = f.check_box :remember_me
15
15
  = f.label :remember_me
16
16
  .actions
17
- = f.submit "Log in"
17
+ button.btn.btn-default
18
+ | Log in
18
19
  = render "nippo_core/users/shared/links"
@@ -15,18 +15,20 @@ section
15
15
  section
16
16
  h2
17
17
  | Groups you created
18
- ul
18
+ ul.list-group
19
19
  - @created_groups.each do |group|
20
- li
20
+ li.list-group-item
21
21
  = link_to group.name, group
22
- = link_to 'more', '#'
23
- = link_to 'create more', new_group_path
22
+ .btn-group
23
+ = link_to 'more', '#', class: 'btn btn-link'
24
+ = link_to 'create more', new_group_path, class: 'btn btn-link'
24
25
  section
25
26
  h2
26
27
  | Groups you join
27
- ul
28
+ ul.list-group
28
29
  - @joined_groups.each do |group|
29
- li
30
+ li.list-group-item
30
31
  = link_to group.name, group
31
- = link_to 'more', '#'
32
- = link_to 'join more', '#'
32
+ .btn-group
33
+ = link_to 'more', '#', class: 'btn btn-link'
34
+ = link_to 'join more', groups_path, class: 'btn btn-link'
data/config/routes.rb CHANGED
@@ -2,8 +2,16 @@ NippoCore::Engine.routes.draw do
2
2
  devise_for :users, class_name: "NippoCore::User", module: :'nippo_core/users'
3
3
  resource :users, path: :user, only: :show
4
4
  resources :groups, except: [:edit, :update] do
5
- resources :group_member_relations, path: :group_members, only: [:new, :create]
5
+ # resources :users, module: :groups, only: [] do
6
+ # end
7
+ resources :group_member_relations, path: :group_members, only: [:new, :create] do
8
+ get :unaccepted, on: :collection
9
+ end
6
10
  resources :reports, except: [:edit, :update]
11
+ post :request_join
12
+ end
13
+ resources :group_member_relations, path: :group_members, only: [] do
14
+ post :accept
7
15
  end
8
16
 
9
17
  root 'home#index'
@@ -6,7 +6,9 @@ class CreateNippoCoreGroupMemberRelations < ActiveRecord::Migration[5.0]
6
6
  t.integer :group_id, null: false, index: true
7
7
  t.foreign_key :nippo_core_groups, column: :group_id
8
8
  t.integer :authentication, null: false, default: 0
9
- t.boolean :status, null: false, default: false
9
+ t.integer :accepter_id
10
+ t.foreign_key :nippo_core_users, column: :accepter_id
11
+ t.datetime :accepted_at
10
12
 
11
13
  t.timestamps
12
14
  end
@@ -1,3 +1,3 @@
1
1
  module NippoCore
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nippo_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takumu Uyama
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-22 00:00:00.000000000 Z
11
+ date: 2017-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -164,8 +164,8 @@ dependencies:
164
164
  - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
- description: When you install this gem, you can report and share a daily report among
168
- your company group, club, teammate etc.
167
+ description: This is a web application you can share and stock a daily report. You
168
+ can report and share a daily report among your company group, club, teammate etc.
169
169
  email:
170
170
  - sasurai.usagi3@gmail.com
171
171
  executables: []
@@ -182,6 +182,7 @@ files:
182
182
  - app/assets/stylesheets/nippo_core/style.sass
183
183
  - app/controllers/nippo_core/application_controller.rb
184
184
  - app/controllers/nippo_core/group_member_relations_controller.rb
185
+ - app/controllers/nippo_core/groups/users_controller.rb
185
186
  - app/controllers/nippo_core/groups_controller.rb
186
187
  - app/controllers/nippo_core/home_controller.rb
187
188
  - app/controllers/nippo_core/reports_controller.rb
@@ -205,9 +206,13 @@ files:
205
206
  - app/policies/application_policy.rb
206
207
  - app/policies/nippo_core/report_policy.rb
207
208
  - app/views/layouts/nippo_core/application.slim
209
+ - app/views/nippo_core/application/_link_to_join.slim
210
+ - app/views/nippo_core/group_member_relations/accept.js.erb
208
211
  - app/views/nippo_core/group_member_relations/new.slim
212
+ - app/views/nippo_core/group_member_relations/unaccepted.slim
209
213
  - app/views/nippo_core/groups/index.slim
210
214
  - app/views/nippo_core/groups/new.slim
215
+ - app/views/nippo_core/groups/request_join.js.erb
211
216
  - app/views/nippo_core/groups/show.slim
212
217
  - app/views/nippo_core/home/index.slim
213
218
  - app/views/nippo_core/reports/index.slim