bullet_train 1.2.19 → 1.2.21
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.
- checksums.yaml +4 -4
- data/app/models/concerns/records/base.rb +1 -5
- data/app/views/account/invitations/new.html.erb +5 -10
- data/app/views/account/invitations/show.html.erb +3 -3
- data/app/views/account/memberships/_index.html.erb +5 -5
- data/app/views/account/memberships/_menu_item.html.erb +2 -2
- data/app/views/account/memberships/_tombstones.html.erb +4 -4
- data/app/views/account/memberships/edit.html.erb +9 -15
- data/app/views/account/memberships/index.html.erb +3 -3
- data/app/views/account/memberships/show.html.erb +11 -14
- data/app/views/account/onboarding/user_details/edit.html.erb +3 -3
- data/app/views/account/onboarding/user_email/edit.html.erb +3 -3
- data/app/views/account/teams/_form.html.erb +0 -1
- data/app/views/account/teams/_menu_item.html.erb +2 -2
- data/app/views/account/teams/_team.html.erb +2 -2
- data/app/views/account/teams/edit.html.erb +5 -10
- data/app/views/account/teams/index.html.erb +4 -6
- data/app/views/account/teams/new.html.erb +3 -3
- data/app/views/account/users/edit.html.erb +9 -12
- data/app/views/devise/passwords/edit.html.erb +3 -3
- data/app/views/devise/passwords/new.html.erb +3 -3
- data/app/views/devise/registrations/_two_factor.html.erb +5 -6
- data/app/views/devise/registrations/new.html.erb +3 -3
- data/app/views/devise/sessions/new.html.erb +3 -3
- data/app/views/layouts/docs.html.erb +36 -36
- data/lib/bullet_train/version.rb +1 -1
- data/lib/tasks/bullet_train_tasks.rake +24 -12
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: aded6e1793584701eb001f64681e06d155528f81465185b23bc3f5265c3bcec7
|
|
4
|
+
data.tar.gz: e496895bf0a74a0470b3aae6954dbeb19240467892fa4b9d655318faf17b93e1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6770a9c6974333bc0c21e3aaa7d8ef07dbb7d7f89dd34f857304f36df0357ccffe56b977247c028531277ae12e2a87b793aa0ccae31691fed7a7a2ae293c8a01
|
|
7
|
+
data.tar.gz: 382f88ff873e58f3ca8bb4b4d491b5fec91d99a2e317279d381fa61e165f2afaa0cd50db132ffc86be241b3fd802ded9dd9b1d6e29a9768c7c09ed0caf6a5942
|
|
@@ -73,11 +73,7 @@ module Records::Base
|
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
def seeding?
|
|
76
|
-
|
|
77
|
-
return false if rake_tasks.count.zero?
|
|
78
|
-
|
|
79
|
-
db_seed_task = rake_tasks.find { |task| task.name.match?(/^db:seed$/) }
|
|
80
|
-
db_seed_task.already_invoked
|
|
76
|
+
Rake::Task.task_defined?("db:seed") && Rake::Task["db:seed"].already_invoked
|
|
81
77
|
end
|
|
82
78
|
|
|
83
79
|
# TODO This should really be in the API package and included from there.
|
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
<%= render 'account/shared/page' do |
|
|
2
|
-
<%
|
|
3
|
-
<%
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
<% p.content_for :description, t('.description') %>
|
|
7
|
-
<% p.content_for :body do %>
|
|
8
|
-
<%= render 'form', invitation: @invitation %>
|
|
9
|
-
<% end %>
|
|
10
|
-
<% end %>
|
|
1
|
+
<%= render 'account/shared/page' do |page| %>
|
|
2
|
+
<% page.title t('.section') %>
|
|
3
|
+
<% page.body.render 'account/shared/box', divider: true do |box| %>
|
|
4
|
+
<% box.t :description, title: '.header' %>
|
|
5
|
+
<% box.body.render 'form', invitation: @invitation %>
|
|
11
6
|
<% end %>
|
|
12
7
|
<% end %>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
<%= render 'account/shared/workflow/box' do |
|
|
2
|
-
<%
|
|
3
|
-
<%
|
|
1
|
+
<%= render 'account/shared/workflow/box' do |box| %>
|
|
2
|
+
<% box.title t(".join_team") %>
|
|
3
|
+
<% box.body do %>
|
|
4
4
|
<div class="space-y">
|
|
5
5
|
<% if !@invitation.is_for?(current_user) %>
|
|
6
6
|
<p><%= raw t('.has_invited', user_name: @invitation.from_membership.name) %></p>
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
<% hide_back ||= false %>
|
|
4
4
|
|
|
5
5
|
<%= updates_for context, :memberships do %>
|
|
6
|
-
<%= render 'account/shared/box' do |
|
|
7
|
-
<%
|
|
8
|
-
<%
|
|
6
|
+
<%= render 'account/shared/box' do |box| %>
|
|
7
|
+
<% box.title t(".contexts.#{context.class.name.underscore}.header") %>
|
|
8
|
+
<% box.description do %>
|
|
9
9
|
<%= raw t(".contexts.#{context.class.name.underscore}.#{@memberships.any? ? 'description' : 'description_empty'}") %>
|
|
10
10
|
<%= render "shared/limits/index", model: @memberships.model %>
|
|
11
11
|
<% end %>
|
|
12
12
|
|
|
13
|
-
<%
|
|
13
|
+
<% box.table do %>
|
|
14
14
|
<% if @memberships.any? %>
|
|
15
15
|
<table class="table">
|
|
16
16
|
<thead>
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
<% end %>
|
|
30
30
|
|
|
31
31
|
<% unless hide_actions %>
|
|
32
|
-
<%
|
|
32
|
+
<% box.actions do %>
|
|
33
33
|
<%= link_to t('invitations.buttons.new'), new_account_team_invitation_path(@team, cancel_path: account_team_memberships_path(@team)), class: "#{first_button_primary}" %>
|
|
34
34
|
<%= link_to t('global.buttons.back'), [:account, context], class: "#{first_button_primary} back" unless hide_back %>
|
|
35
35
|
<% end %>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<%= render 'account/shared/menu/item', {
|
|
2
2
|
url: main_app.polymorphic_path([:account, current_team, :memberships]),
|
|
3
3
|
label: t('memberships.navigation.label'),
|
|
4
|
-
} do |
|
|
5
|
-
<%
|
|
4
|
+
} do |item| %>
|
|
5
|
+
<% item.icon do %>
|
|
6
6
|
<i class="<%= t('memberships.navigation.icon') %>"></i>
|
|
7
7
|
<% end %>
|
|
8
8
|
<% end %>
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<% context ||= @team %>
|
|
2
2
|
<% hide_actions ||= false %>
|
|
3
3
|
|
|
4
|
-
<%= render 'account/shared/box' do |
|
|
5
|
-
<%
|
|
6
|
-
<%
|
|
4
|
+
<%= render 'account/shared/box' do |box| %>
|
|
5
|
+
<% box.title t("memberships.tombstones.contexts.#{context.class.name.underscore}.header") %>
|
|
6
|
+
<% box.description do %>
|
|
7
7
|
<%= raw t("memberships.tombstones.contexts.#{context.class.name.underscore}.#{memberships.any? ? 'description' : 'description_empty'}") %>
|
|
8
8
|
<% end %>
|
|
9
9
|
|
|
10
|
-
<%
|
|
10
|
+
<% box.body do %>
|
|
11
11
|
<% if memberships.any? %>
|
|
12
12
|
<table class="table">
|
|
13
13
|
<thead>
|
|
@@ -1,21 +1,15 @@
|
|
|
1
|
-
<%= render 'account/shared/page' do |
|
|
2
|
-
<%
|
|
3
|
-
<%
|
|
4
|
-
<%= render 'account/shared/box', divider: true do |
|
|
5
|
-
<%
|
|
6
|
-
<%
|
|
7
|
-
<% p.content_for :body do %>
|
|
8
|
-
<%= render 'form', membership: @membership %>
|
|
9
|
-
<% end %>
|
|
1
|
+
<%= render 'account/shared/page' do |page| %>
|
|
2
|
+
<% page.title t('.section') %>
|
|
3
|
+
<% page.body do %>
|
|
4
|
+
<%= render 'account/shared/box', divider: true do |box| %>
|
|
5
|
+
<% box.t :description, title: '.header' %>
|
|
6
|
+
<% box.body.render 'form', membership: @membership %>
|
|
10
7
|
<% end %>
|
|
11
8
|
|
|
12
9
|
<% if can? :destroy, @membership %>
|
|
13
|
-
<%= render 'account/shared/box', divider: true do |
|
|
14
|
-
<%
|
|
15
|
-
<%
|
|
16
|
-
<% p.content_for :body do %>
|
|
17
|
-
<%= button_to t('.buttons.destroy'), [:account, @membership], method: :delete, data: { confirm: t('.buttons.confirmations.destroy') }, class: 'button' %>
|
|
18
|
-
<% end %>
|
|
10
|
+
<%= render 'account/shared/box', divider: true do |box| %>
|
|
11
|
+
<% box.t title: '.remove_header', description: '.remove_description' %>
|
|
12
|
+
<% box.body.button_to t('.buttons.destroy'), [:account, @membership], method: :delete, data: { confirm: t('.buttons.confirmations.destroy') }, class: 'button' %>
|
|
19
13
|
<% end %>
|
|
20
14
|
<% end %>
|
|
21
15
|
<% end %>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
<%= render 'account/shared/page' do |
|
|
2
|
-
<%
|
|
3
|
-
<%
|
|
1
|
+
<%= render 'account/shared/page' do |page| %>
|
|
2
|
+
<% page.title t('.section') %>
|
|
3
|
+
<% page.body do %>
|
|
4
4
|
<% if @memberships.current_and_invited.any? %>
|
|
5
5
|
<%= render 'index' do %>
|
|
6
6
|
<%= render @memberships.current_and_invited.includes(:user) %>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
<%= render 'account/shared/page' do |
|
|
2
|
-
<%
|
|
3
|
-
<%
|
|
4
|
-
<%= render 'account/shared/box', divider: true do |
|
|
5
|
-
<%
|
|
1
|
+
<%= render 'account/shared/page' do |page| %>
|
|
2
|
+
<% page.title t('.section') %>
|
|
3
|
+
<% page.body do %>
|
|
4
|
+
<%= render 'account/shared/box', divider: true do |box| %>
|
|
5
|
+
<% box.title do %>
|
|
6
6
|
<% if @membership.unclaimed? %>
|
|
7
7
|
<%= t('.invitation_header') %>
|
|
8
8
|
<% elsif @membership.tombstone? %>
|
|
@@ -12,16 +12,14 @@
|
|
|
12
12
|
<% end %>
|
|
13
13
|
<% end %>
|
|
14
14
|
|
|
15
|
-
<%
|
|
16
|
-
<%= t('.description') %>
|
|
17
|
-
<% end %>
|
|
15
|
+
<% box.t :description %>
|
|
18
16
|
|
|
19
|
-
<%
|
|
17
|
+
<% box.body do %>
|
|
20
18
|
<% with_attribute_settings object: @membership, strategy: :label do %>
|
|
21
19
|
<%= render 'shared/attributes/text', attribute: :name %>
|
|
22
|
-
<%= render 'shared/attributes/base' do |
|
|
23
|
-
<%
|
|
24
|
-
<%
|
|
20
|
+
<%= render 'shared/attributes/base' do |base| %>
|
|
21
|
+
<% base.heading t('.fields.role_ids.heading') %>
|
|
22
|
+
<% base.body do %>
|
|
25
23
|
<% if @membership.assignable_roles.any? %>
|
|
26
24
|
<%= @membership.assignable_roles.map { |role| t(".fields.role_ids.options.#{role.key}.label") }.to_sentence %>
|
|
27
25
|
<% else %>
|
|
@@ -33,7 +31,7 @@
|
|
|
33
31
|
<%# 🚅 super scaffolding will insert new fields above this line. %>
|
|
34
32
|
<% end %>
|
|
35
33
|
|
|
36
|
-
<%
|
|
34
|
+
<% box.actions do %>
|
|
37
35
|
<% if @membership.tombstone? %>
|
|
38
36
|
<%= link_to t('.buttons.reinvite'), [:reinvite, :account, @membership], class: first_button_primary, method: :post, data: {confirm: t('.buttons.confirmations.reinvite', membership_name: @membership.name)} if can? :edit, @membership %>
|
|
39
37
|
<% end %>
|
|
@@ -53,7 +51,6 @@
|
|
|
53
51
|
|
|
54
52
|
<%= link_to t('global.buttons.back'), [:account, @team, :memberships], class: first_button_primary %>
|
|
55
53
|
<% end %>
|
|
56
|
-
|
|
57
54
|
<% end %>
|
|
58
55
|
|
|
59
56
|
<%= render 'account/scaffolding/completely_concrete/tangible_things/index', tangible_things: @membership.scaffolding_completely_concrete_tangible_things, context: @membership if @membership.scaffolding_completely_concrete_tangible_things.any? %>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<% @title = t('.header') %>
|
|
2
2
|
|
|
3
|
-
<%= render 'account/shared/workflow/box' do |
|
|
4
|
-
<%
|
|
5
|
-
<%
|
|
3
|
+
<%= render 'account/shared/workflow/box' do |box| %>
|
|
4
|
+
<% box.title @title %>
|
|
5
|
+
<% box.body do %>
|
|
6
6
|
<% within_fields_namespace(:self) do %>
|
|
7
7
|
<%= form_for @user, url: account_onboarding_user_detail_path(@user), method: :put, html: {class: 'form'} do |f| %>
|
|
8
8
|
<%= render 'account/shared/forms/errors', form: f %>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<% @title = t('.header') %>
|
|
2
2
|
|
|
3
|
-
<%= render 'account/shared/workflow/box' do |
|
|
4
|
-
<%
|
|
5
|
-
<%
|
|
3
|
+
<%= render 'account/shared/workflow/box' do |box| %>
|
|
4
|
+
<% box.title @title %>
|
|
5
|
+
<% box.body do %>
|
|
6
6
|
<% within_fields_namespace(:self) do %>
|
|
7
7
|
<%= form_for @user, url: account_onboarding_user_email_path(@user), method: :put, html: {class: 'form'} do |f| %>
|
|
8
8
|
<% if @email_taken %>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<%= render 'account/shared/menu/item', {
|
|
2
2
|
url: main_app.polymorphic_path([:account, current_team]),
|
|
3
3
|
label: t('menus.main.labels.dashboard'),
|
|
4
|
-
} do |
|
|
5
|
-
<%
|
|
4
|
+
} do |item| %>
|
|
5
|
+
<% item.icon do %>
|
|
6
6
|
<i class="fal fa-home-lg-alt ti ti-home"></i>
|
|
7
7
|
<% end %>
|
|
8
8
|
<% end %>
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<%= render 'account/shared/team', link_url: [:account, team], memberships: team.memberships.current_and_invited.first(10)
|
|
2
|
-
<% p.
|
|
1
|
+
<%= render 'account/shared/team', link_url: [:account, team], memberships: team.memberships.current_and_invited.first(10) do |p| %>
|
|
2
|
+
<% p.name team.name %>
|
|
3
3
|
<% end %>
|
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
<%= render 'account/shared/page' do |
|
|
2
|
-
<%
|
|
3
|
-
<%
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
<% p.content_for :description, t('.description') %>
|
|
7
|
-
<% p.content_for :body do %>
|
|
8
|
-
<%= render 'form', team: @team %>
|
|
9
|
-
<% end %>
|
|
10
|
-
<% end %>
|
|
1
|
+
<%= render 'account/shared/page' do |page| %>
|
|
2
|
+
<% page.title t('.section') %>
|
|
3
|
+
<% page.body.render 'account/shared/box', divider: true do |box| %>
|
|
4
|
+
<% box.t :description, title: '.header' %>
|
|
5
|
+
<% box.body.render 'form', team: @team %>
|
|
11
6
|
<% end %>
|
|
12
7
|
<% end %>
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
<%= render 'account/shared/page' do |
|
|
2
|
-
<%
|
|
3
|
-
<%
|
|
4
|
-
<%= render
|
|
5
|
-
<%= render @teams %>
|
|
6
|
-
<% end %>
|
|
1
|
+
<%= render 'account/shared/page' do |page| %>
|
|
2
|
+
<% page.title t('.section') %>
|
|
3
|
+
<% page.body.render 'index', creative_concepts: @creative_concepts do %>
|
|
4
|
+
<%= render @teams %>
|
|
7
5
|
<% end %>
|
|
8
6
|
<% end %>
|
|
@@ -6,9 +6,9 @@ else
|
|
|
6
6
|
end
|
|
7
7
|
%>
|
|
8
8
|
|
|
9
|
-
<%= render 'account/shared/workflow/box' do |
|
|
10
|
-
<%
|
|
11
|
-
<%
|
|
9
|
+
<%= render 'account/shared/workflow/box' do |box| %>
|
|
10
|
+
<% box.title @title %>
|
|
11
|
+
<% box.body do %>
|
|
12
12
|
<%= form_with model: @team, url: [:account, @team], local: true, class: 'form' do |form| %>
|
|
13
13
|
<%= render 'account/shared/notices' %>
|
|
14
14
|
<%= render 'account/shared/forms/errors', form: form %>
|
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
<%= render 'account/shared/page' do |
|
|
2
|
-
<%
|
|
3
|
-
<%
|
|
1
|
+
<%= render 'account/shared/page' do |page| %>
|
|
2
|
+
<% page.title t('.section') %>
|
|
3
|
+
<% page.body do %>
|
|
4
4
|
<%= form_for [:account, @user] do |form| %>
|
|
5
5
|
<%= render 'account/shared/forms/errors', form: form %>
|
|
6
6
|
<% end if @user.errors.any? %>
|
|
7
7
|
|
|
8
8
|
<div class="grid grid-cols-1 gap-y gap-x-8 lg:grid-cols-2">
|
|
9
9
|
<div class="xl:col-span-1 space-y-8">
|
|
10
|
-
<%= render 'account/shared/box', divider: true do |
|
|
11
|
-
<%
|
|
12
|
-
<%
|
|
13
|
-
<% p.content_for :body do %>
|
|
14
|
-
<%= render "account/users/form", user: @user %>
|
|
15
|
-
<% end %>
|
|
10
|
+
<%= render 'account/shared/box', divider: true do |box| %>
|
|
11
|
+
<% box.t title: '.profile.header', description: '.profile.description' %>
|
|
12
|
+
<% box.body.render "account/users/form", user: @user %>
|
|
16
13
|
<% end %>
|
|
17
14
|
|
|
18
15
|
<% if two_factor_authentication_enabled? %>
|
|
@@ -25,9 +22,9 @@
|
|
|
25
22
|
<div class="xl:col-span-1 space-y-8">
|
|
26
23
|
<%= render 'account/users/oauth' %>
|
|
27
24
|
|
|
28
|
-
<%= render 'account/shared/box', divider: true do |
|
|
29
|
-
<%
|
|
30
|
-
<%
|
|
25
|
+
<%= render 'account/shared/box', divider: true do |box| %>
|
|
26
|
+
<% box.title t('.password.header') %>
|
|
27
|
+
<% box.body do %>
|
|
31
28
|
<% within_fields_namespace(:update_self) do %>
|
|
32
29
|
<%= form_for [:account, @user], html: {id: dom_id(@user, :password), class: 'form'} do |form| %>
|
|
33
30
|
<% with_field_settings form: form do %>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<% @title = t('devise.headers.change_password') %>
|
|
2
|
-
<%= render 'account/shared/workflow/box' do |
|
|
3
|
-
<%
|
|
4
|
-
<%
|
|
2
|
+
<%= render 'account/shared/workflow/box' do |box| %>
|
|
3
|
+
<% box.title @title %>
|
|
4
|
+
<% box.body do %>
|
|
5
5
|
<% within_fields_namespace(:update_self) do %>
|
|
6
6
|
<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { class: 'form', method: :put }) do |f| %>
|
|
7
7
|
<%= f.hidden_field :reset_password_token %>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
<%= render 'account/shared/workflow/box' do |
|
|
2
|
-
<%
|
|
3
|
-
<%
|
|
1
|
+
<%= render 'account/shared/workflow/box' do |box| %>
|
|
2
|
+
<% box.title t('devise.titles.reset_password') %>
|
|
3
|
+
<% box.body do %>
|
|
4
4
|
<% within_fields_namespace(:sign_up) do %>
|
|
5
5
|
<%= form_for resource, as: resource_name, url: password_path(resource_name), html: {method: :post, class: 'form'} do |f| %>
|
|
6
6
|
<%= render 'account/shared/forms/errors', form: f %>
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
<%= render 'account/shared/box', divider: @backup_codes do |
|
|
2
|
-
<%
|
|
3
|
-
<%
|
|
1
|
+
<%= render 'account/shared/box', divider: @backup_codes do |box| %>
|
|
2
|
+
<% box.title t("users.edit.two_factor.header") %>
|
|
3
|
+
<% box.description t("users.edit.two_factor.description_#{@user.otp_required_for_login? ? 'enabled' : 'disabled'}") %>
|
|
4
4
|
<% if current_user.otp_secret %>
|
|
5
5
|
<% if @backup_codes %>
|
|
6
|
-
<%
|
|
7
|
-
|
|
6
|
+
<% box.body do %>
|
|
8
7
|
<%= render 'account/shared/alert' do %>
|
|
9
8
|
<%= t('users.edit.two_factor.warning').html_safe %>
|
|
10
9
|
<% end %>
|
|
@@ -38,7 +37,7 @@
|
|
|
38
37
|
<% end %>
|
|
39
38
|
<% end %>
|
|
40
39
|
<% end %>
|
|
41
|
-
<%
|
|
40
|
+
<% box.actions do %>
|
|
42
41
|
<div class="<%= 'hidden' if @backup_codes %> space-y">
|
|
43
42
|
<% if local_assigns.has_key? :verified %>
|
|
44
43
|
<% if verified %>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
<%= render 'account/shared/workflow/box' do |
|
|
2
|
-
<%
|
|
3
|
-
<%
|
|
1
|
+
<%= render 'account/shared/workflow/box' do |box| %>
|
|
2
|
+
<% box.title t('devise.headers.create_account') %>
|
|
3
|
+
<% box.body do %>
|
|
4
4
|
<% within_fields_namespace(:sign_up) do %>
|
|
5
5
|
<%= form_for resource, as: resource_name, url: registration_path(resource_name), html: {class: 'form'} do |f| %>
|
|
6
6
|
<%= render 'account/shared/notices' %>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
<%= render 'account/shared/workflow/box' do |
|
|
2
|
-
<%
|
|
3
|
-
<%
|
|
1
|
+
<%= render 'account/shared/workflow/box' do |box| %>
|
|
2
|
+
<% box.title t('devise.headers.sign_in') %>
|
|
3
|
+
<% box.body do %>
|
|
4
4
|
<% within_fields_namespace(:self) do %>
|
|
5
5
|
<%# TODO: Turbo is set to `false` for now, but we may want to only bypass Turbo for JavaScript-based requests in the future. %>
|
|
6
6
|
<%= form_for resource, as: resource_name, url: two_factor_authentication_enabled? ? users_pre_otp_path : session_path(resource_name), remote: two_factor_authentication_enabled?, html: {class: 'form'}, authenticity_token: true, data: {turbo: false} do |form| %>
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
<meta property="og:url" content="<%= request.base_url + request.path %>" />
|
|
33
33
|
<meta property="og:description" content="<%= description.truncate(200) %>" />
|
|
34
34
|
</head>
|
|
35
|
-
<body class="bg-
|
|
35
|
+
<body class="<%= BulletTrain::Themes::Light.background || "bg-gradient-to-br from-secondary-200 to-primary-400 dark:from-primary-900 dark:to-primary-600" %> text-slate-700 text-sm font-normal dark:text-slate-300">
|
|
36
36
|
<div class="md:p-5">
|
|
37
37
|
<div class="min-h-screen md:h-auto overflow-hidden md:rounded-lg flex shadow"
|
|
38
38
|
data-controller="mobile-menu"
|
|
@@ -60,19 +60,19 @@
|
|
|
60
60
|
|
|
61
61
|
<%= render 'account/shared/menu/section', title: 'Introduction' do %>
|
|
62
62
|
<%= render 'account/shared/menu/item', url: '/docs', label: 'Table of Contents' do |p| %>
|
|
63
|
-
<% p.
|
|
63
|
+
<% p.icon do %>
|
|
64
64
|
<i class="fal fa-home-lg-alt ti ti-list"></i>
|
|
65
65
|
<% end %>
|
|
66
66
|
<% end %>
|
|
67
67
|
|
|
68
68
|
<%= render 'account/shared/menu/item', url: '/docs/getting-started', label: 'Getting Started' do |p| %>
|
|
69
|
-
<% p.
|
|
69
|
+
<% p.icon do %>
|
|
70
70
|
<i class="fal fa-terminal ti ti-flag"></i>
|
|
71
71
|
<% end %>
|
|
72
72
|
<% end %>
|
|
73
73
|
|
|
74
74
|
<%= render 'account/shared/menu/item', url: '/docs/upgrades', label: 'Upgrades' do |p| %>
|
|
75
|
-
<% p.
|
|
75
|
+
<% p.icon do %>
|
|
76
76
|
<i class="fal fa-sparkles ti ti-arrow-up"></i>
|
|
77
77
|
<% end %>
|
|
78
78
|
<% end %>
|
|
@@ -80,37 +80,37 @@
|
|
|
80
80
|
|
|
81
81
|
<%= render 'account/shared/menu/section', title: 'General Topics' do %>
|
|
82
82
|
<%= render 'account/shared/menu/item', url: '/docs/modeling', label: 'Domain Modeling' do |p| %>
|
|
83
|
-
<% p.
|
|
83
|
+
<% p.icon do %>
|
|
84
84
|
<i class="fal fa-bolt ti ti-ruler-pencil"></i>
|
|
85
85
|
<% end %>
|
|
86
86
|
<% end %>
|
|
87
87
|
|
|
88
88
|
<%= render 'account/shared/menu/item', url: '/docs/indirection', label: 'Indirection' do |p| %>
|
|
89
|
-
<% p.
|
|
89
|
+
<% p.icon do %>
|
|
90
90
|
<i class="fal fa-bolt ti ti-direction"></i>
|
|
91
91
|
<% end %>
|
|
92
92
|
<% end %>
|
|
93
93
|
|
|
94
94
|
<%= render 'account/shared/menu/item', url: '/docs/overriding', label: 'Overriding' do |p| %>
|
|
95
|
-
<% p.
|
|
95
|
+
<% p.icon do %>
|
|
96
96
|
<i class="fal fa-bolt ti ti-spray"></i>
|
|
97
97
|
<% end %>
|
|
98
98
|
<% end %>
|
|
99
99
|
|
|
100
100
|
<%= render 'account/shared/menu/item', url: '/docs/tunneling', label: 'Tunneling' do |p| %>
|
|
101
|
-
<% p.
|
|
101
|
+
<% p.icon do %>
|
|
102
102
|
<i class="fal fa-bolt ti ti-bolt"></i>
|
|
103
103
|
<% end %>
|
|
104
104
|
<% end %>
|
|
105
105
|
|
|
106
106
|
<%= render 'account/shared/menu/item', url: '/docs/javascript', label: 'JavaScript' do |p| %>
|
|
107
|
-
<% p.
|
|
107
|
+
<% p.icon do %>
|
|
108
108
|
<i class="fa-brands fa-js ti ti-pulse"></i>
|
|
109
109
|
<% end %>
|
|
110
110
|
<% end %>
|
|
111
111
|
|
|
112
112
|
<%= render 'account/shared/menu/item', url: '/docs/i18n', label: 'Internationalzation' do |p| %>
|
|
113
|
-
<% p.
|
|
113
|
+
<% p.icon do %>
|
|
114
114
|
<i class="fa-brands fa-js ti ti-world"></i>
|
|
115
115
|
<% end %>
|
|
116
116
|
<% end %>
|
|
@@ -118,37 +118,37 @@
|
|
|
118
118
|
|
|
119
119
|
<%= render 'account/shared/menu/section', title: 'Developer Tools' do %>
|
|
120
120
|
<%= render 'account/shared/menu/item', url: '/docs/super-scaffolding', label: 'Super Scaffolding' do |p| %>
|
|
121
|
-
<% p.
|
|
121
|
+
<% p.icon do %>
|
|
122
122
|
<i class="fal fa-magic ti ti-wand"></i>
|
|
123
123
|
<% end %>
|
|
124
124
|
<% end %>
|
|
125
125
|
|
|
126
126
|
<%= render 'account/shared/menu/item', url: '/docs/action-models', label: 'Action Models' do |p| %>
|
|
127
|
-
<% p.
|
|
127
|
+
<% p.icon do %>
|
|
128
128
|
<i class="fal fa-bars-progress ti ti-target"></i>
|
|
129
129
|
<% end %>
|
|
130
130
|
<% end %>
|
|
131
131
|
|
|
132
132
|
<%= render 'account/shared/menu/item', url: '/docs/seeds', label: 'Database Seeds' do |p| %>
|
|
133
|
-
<% p.
|
|
133
|
+
<% p.icon do %>
|
|
134
134
|
<i class="fal fa-seedling ti ti-server"></i>
|
|
135
135
|
<% end %>
|
|
136
136
|
<% end %>
|
|
137
137
|
|
|
138
138
|
<%= render 'account/shared/menu/item', url: '/docs/testing', label: 'Test Suite' do |p| %>
|
|
139
|
-
<% p.
|
|
139
|
+
<% p.icon do %>
|
|
140
140
|
<i class="fal fa-check ti ti-check"></i>
|
|
141
141
|
<% end %>
|
|
142
142
|
<% end %>
|
|
143
143
|
|
|
144
144
|
<%= render 'account/shared/menu/item', url: 'https://github.com/bullet-train-co/magic_test', label: 'Magic Test' do |p| %>
|
|
145
|
-
<% p.
|
|
145
|
+
<% p.icon do %>
|
|
146
146
|
<i class="fal fa-check ti ti-video-camera"></i>
|
|
147
147
|
<% end %>
|
|
148
148
|
<% end %>
|
|
149
149
|
|
|
150
150
|
<%= render 'account/shared/menu/item', url: '/docs/application-options', label: 'Application Options' do |p| %>
|
|
151
|
-
<% p.
|
|
151
|
+
<% p.icon do %>
|
|
152
152
|
<i class="fal fa-gear ti ti-settings"></i>
|
|
153
153
|
<% end %>
|
|
154
154
|
<% end %>
|
|
@@ -156,31 +156,31 @@
|
|
|
156
156
|
|
|
157
157
|
<%= render 'account/shared/menu/section', title: 'Accounts & Teams' do %>
|
|
158
158
|
<%= render 'account/shared/menu/item', url: '/docs/authentication', label: 'Authentication' do |p| %>
|
|
159
|
-
<% p.
|
|
159
|
+
<% p.icon do %>
|
|
160
160
|
<i class="fal fa-fingerprint ti ti-id-badge"></i>
|
|
161
161
|
<% end %>
|
|
162
162
|
<% end %>
|
|
163
163
|
|
|
164
164
|
<%= render 'account/shared/menu/item', url: '/docs/teams', label: 'Teams' do |p| %>
|
|
165
|
-
<% p.
|
|
165
|
+
<% p.icon do %>
|
|
166
166
|
<i class="fal fa-users ti ti-user"></i>
|
|
167
167
|
<% end %>
|
|
168
168
|
<% end %>
|
|
169
169
|
|
|
170
170
|
<%= render 'account/shared/menu/item', url: '/docs/permissions', label: 'Roles & Permissions' do |p| %>
|
|
171
|
-
<% p.
|
|
171
|
+
<% p.icon do %>
|
|
172
172
|
<i class="fal fa-lock-alt ti ti-lock"></i>
|
|
173
173
|
<% end %>
|
|
174
174
|
<% end %>
|
|
175
175
|
|
|
176
176
|
<%= render 'account/shared/menu/item', url: '/docs/onboarding', label: 'Onboarding' do |p| %>
|
|
177
|
-
<% p.
|
|
177
|
+
<% p.icon do %>
|
|
178
178
|
<i class="fal fa-snowboarding ti ti-direction"></i>
|
|
179
179
|
<% end %>
|
|
180
180
|
<% end %>
|
|
181
181
|
|
|
182
182
|
<%= render 'account/shared/menu/item', url: '/docs/namespacing', label: 'Namespacing' do |p| %>
|
|
183
|
-
<% p.
|
|
183
|
+
<% p.icon do %>
|
|
184
184
|
<i class="fal fa-object-group ti ti-widgetized"></i>
|
|
185
185
|
<% end %>
|
|
186
186
|
<% end %>
|
|
@@ -188,19 +188,19 @@
|
|
|
188
188
|
|
|
189
189
|
<%= render 'account/shared/menu/section', title: 'User Interface' do %>
|
|
190
190
|
<%= render 'account/shared/menu/item', url: '/docs/field-partials', label: 'Field Partials' do |p| %>
|
|
191
|
-
<% p.
|
|
191
|
+
<% p.icon do %>
|
|
192
192
|
<i class="fal fa-i-cursor ti ti-text"></i>
|
|
193
193
|
<% end %>
|
|
194
194
|
<% end %>
|
|
195
195
|
|
|
196
196
|
<%= render 'account/shared/menu/item', url: '/docs/themes', label: 'Themes' do |p| %>
|
|
197
|
-
<% p.
|
|
197
|
+
<% p.icon do %>
|
|
198
198
|
<i class="fal fa-swatchbook ti ti-palette"></i>
|
|
199
199
|
<% end %>
|
|
200
200
|
<% end %>
|
|
201
201
|
|
|
202
202
|
<%= render 'account/shared/menu/item', url: 'https://github.com/bullet-train-co/nice_partials', label: 'Nice Partials' do |p| %>
|
|
203
|
-
<% p.
|
|
203
|
+
<% p.icon do %>
|
|
204
204
|
<i class="fal fa-swatchbook ti ti-widget"></i>
|
|
205
205
|
<% end %>
|
|
206
206
|
<% end %>
|
|
@@ -208,7 +208,7 @@
|
|
|
208
208
|
|
|
209
209
|
<%= render 'account/shared/menu/section', title: 'Billing' do %>
|
|
210
210
|
<%= render 'account/shared/menu/item', url: '/docs/billing/stripe', label: 'Stripe' do |p| %>
|
|
211
|
-
<% p.
|
|
211
|
+
<% p.icon do %>
|
|
212
212
|
<i class="fab fa-stripe-s ti ti-money"></i>
|
|
213
213
|
<% end %>
|
|
214
214
|
<% end %>
|
|
@@ -216,31 +216,31 @@
|
|
|
216
216
|
|
|
217
217
|
<%= render 'account/shared/menu/section', title: 'Integration' do %>
|
|
218
218
|
<%= render 'account/shared/menu/item', url: '/docs/api', label: 'REST API' do |p| %>
|
|
219
|
-
<% p.
|
|
219
|
+
<% p.icon do %>
|
|
220
220
|
<i class="fal fa-brackets-curly ti ti-settings"></i>
|
|
221
221
|
<% end %>
|
|
222
222
|
<% end %>
|
|
223
223
|
|
|
224
224
|
<%= render 'account/shared/menu/item', url: '/docs/zapier', label: 'Zapier' do |p| %>
|
|
225
|
-
<% p.
|
|
225
|
+
<% p.icon do %>
|
|
226
226
|
<i class="fal fa-bolt ti ti-bolt"></i>
|
|
227
227
|
<% end %>
|
|
228
228
|
<% end %>
|
|
229
229
|
|
|
230
230
|
<%= render 'account/shared/menu/item', url: '/docs/oauth', label: 'OAuth Providers' do |p| %>
|
|
231
|
-
<% p.
|
|
231
|
+
<% p.icon do %>
|
|
232
232
|
<i class="fal fa-at ti ti-reload"></i>
|
|
233
233
|
<% end %>
|
|
234
234
|
<% end %>
|
|
235
235
|
|
|
236
236
|
<%= render 'account/shared/menu/item', url: '/docs/webhooks/outgoing', label: 'Outgoing Webhooks' do |p| %>
|
|
237
|
-
<% p.
|
|
237
|
+
<% p.icon do %>
|
|
238
238
|
<i class="fal fa-outlet ti ti-pulse"></i>
|
|
239
239
|
<% end %>
|
|
240
240
|
<% end %>
|
|
241
241
|
|
|
242
242
|
<%= render 'account/shared/menu/item', url: '/docs/webhooks/incoming', label: 'Incoming Webhooks' do |p| %>
|
|
243
|
-
<% p.
|
|
243
|
+
<% p.icon do %>
|
|
244
244
|
<i class="fal fa-plug ti ti-plug"></i>
|
|
245
245
|
<% end %>
|
|
246
246
|
<% end %>
|
|
@@ -248,7 +248,7 @@
|
|
|
248
248
|
|
|
249
249
|
<%= render 'account/shared/menu/section', title: 'Internationalization' do %>
|
|
250
250
|
<%= render 'account/shared/menu/item', url: '/docs/i18n', label: 'Translations' do |p| %>
|
|
251
|
-
<% p.
|
|
251
|
+
<% p.icon do %>
|
|
252
252
|
<i class="fal fa-language ti ti-world"></i>
|
|
253
253
|
<% end %>
|
|
254
254
|
<% end %>
|
|
@@ -256,7 +256,7 @@
|
|
|
256
256
|
|
|
257
257
|
<%= render 'account/shared/menu/section', title: 'Add-Ons' do %>
|
|
258
258
|
<%= render 'account/shared/menu/item', url: '/docs/font-awesome-pro', label: 'Font Awesome Pro' do |p| %>
|
|
259
|
-
<% p.
|
|
259
|
+
<% p.icon do %>
|
|
260
260
|
<i class="fal fa-flag ti ti-flag"></i>
|
|
261
261
|
<% end %>
|
|
262
262
|
<% end %>
|
|
@@ -264,13 +264,13 @@
|
|
|
264
264
|
|
|
265
265
|
<%= render 'account/shared/menu/section', title: 'Deployment' do %>
|
|
266
266
|
<%= render 'account/shared/menu/item', url: '/docs/heroku', label: 'Heroku' do |p| %>
|
|
267
|
-
<% p.
|
|
267
|
+
<% p.icon do %>
|
|
268
268
|
<i class="fal fa-cloud ti ti-cloud-up"></i>
|
|
269
269
|
<% end %>
|
|
270
270
|
<% end %>
|
|
271
271
|
|
|
272
272
|
<%= render 'account/shared/menu/item', url: '/docs/desktop', label: 'Desktop Applications' do |p| %>
|
|
273
|
-
<% p.
|
|
273
|
+
<% p.icon do %>
|
|
274
274
|
<i class="fal fa-window-restore ti ti-desktop"></i>
|
|
275
275
|
<% end %>
|
|
276
276
|
<% end %>
|
|
@@ -296,7 +296,7 @@
|
|
|
296
296
|
|
|
297
297
|
class="fixed inset-0" aria-hidden="true"
|
|
298
298
|
>
|
|
299
|
-
<div class="absolute inset-0 bg-
|
|
299
|
+
<div class="absolute inset-0 bg-gradient-to-br from-secondary-200 to-primary-400 opacity-75"></div>
|
|
300
300
|
</button>
|
|
301
301
|
<div
|
|
302
302
|
data-mobile-menu-target="revealable"
|
|
@@ -308,7 +308,7 @@
|
|
|
308
308
|
data-transition-leave-start="translate-x-0"
|
|
309
309
|
data-transition-leave-end="-translate-x-full"
|
|
310
310
|
|
|
311
|
-
class="relative flex-1 flex flex-col max-w-xs w-full pb-4 bg-
|
|
311
|
+
class="relative flex-1 flex flex-col max-w-xs w-full pb-4 bg-gradient-to-br from-primary-900 to-primary-600 shadow-xl"
|
|
312
312
|
>
|
|
313
313
|
<%= menu %>
|
|
314
314
|
</div>
|
data/lib/bullet_train/version.rb
CHANGED
|
@@ -109,14 +109,17 @@ namespace :bullet_train do
|
|
|
109
109
|
flags_with_values.each do |process|
|
|
110
110
|
case process[:flag]
|
|
111
111
|
when "--help"
|
|
112
|
-
puts "
|
|
113
|
-
puts "bin/hack
|
|
114
|
-
puts "bin/hack --
|
|
115
|
-
puts "bin/hack --
|
|
116
|
-
puts "bin/hack --
|
|
112
|
+
puts ""
|
|
113
|
+
puts "bin/hack: " + "Clone bullet_train-core and link up gems (will only link up gems if already cloned).".blue
|
|
114
|
+
puts "bin/hack --link: " + "Link all of your Bullet Train gems to `local/bullet_train-core`.".blue
|
|
115
|
+
puts "bin/hack --link (version-number): " + "Link all of your Bullet Train gems to the version number passed.".blue
|
|
116
|
+
puts "bin/hack --reset: " + "Resets all of your gems to their original definition.".blue
|
|
117
|
+
puts "bin/hack --watch-js: " + "Watches for any changes in JavaScript files gems that have an npm package.".blue
|
|
118
|
+
puts "bin/hack --clean-js: " + "Resets all of your npm packages from `local/bullet_train-core` to their original definition.".blue
|
|
117
119
|
exit
|
|
118
120
|
when "--link", "--reset"
|
|
119
|
-
|
|
121
|
+
version = process[:values].pop
|
|
122
|
+
set_core_gems(process[:flag], version, framework_packages)
|
|
120
123
|
stream "bundle install"
|
|
121
124
|
when "--watch-js", "--clean-js"
|
|
122
125
|
package_name = process[:values].pop
|
|
@@ -185,7 +188,7 @@ namespace :bullet_train do
|
|
|
185
188
|
|
|
186
189
|
# Link all of the local gems to the current Gemfile.
|
|
187
190
|
puts "Now we'll try to link up the Bullet Train core repositories in the `Gemfile`.".blue
|
|
188
|
-
set_core_gems("--link", framework_packages)
|
|
191
|
+
set_core_gems("--link", nil, framework_packages)
|
|
189
192
|
|
|
190
193
|
puts ""
|
|
191
194
|
puts "Now we'll run `bundle install`.".blue
|
|
@@ -215,7 +218,7 @@ namespace :bullet_train do
|
|
|
215
218
|
end
|
|
216
219
|
|
|
217
220
|
# Pass "--link" or "--reset" as a flag to set the gems.
|
|
218
|
-
def set_core_gems(flag, framework_packages)
|
|
221
|
+
def set_core_gems(flag, version, framework_packages)
|
|
219
222
|
packages = framework_packages.keys
|
|
220
223
|
gemfile_lines = File.readlines("./Gemfile")
|
|
221
224
|
|
|
@@ -231,15 +234,20 @@ namespace :bullet_train do
|
|
|
231
234
|
if flag == "--link"
|
|
232
235
|
if `cat Gemfile | grep "gem \\\"#{package}\\\", path: \\\"local/bullet_train-core/#{package}\\\""`.chomp.present?
|
|
233
236
|
puts "#{package} is already linked to a checked out copy in `local` in the `Gemfile`.".green
|
|
234
|
-
|
|
237
|
+
# We can update this later to match a regular expression at the end
|
|
238
|
+
# (git: "...", require: "...", etc.), but this will do for now.
|
|
239
|
+
elsif `cat Gemfile | grep "gem \\\"#{package}\\\", path:"`.chomp.present?
|
|
235
240
|
puts "#{package} already has some sort of alternative source configured in the `Gemfile`.".yellow
|
|
236
241
|
puts "We can't do anything with this. Sorry! We'll proceed, but you have to link this package yourself.".red
|
|
237
242
|
elsif `cat Gemfile | grep "gem \\\"#{package}\\\""`.chomp.present?
|
|
238
243
|
puts "#{package} is directly present in the `Gemfile`, so we'll update that line.".green
|
|
239
|
-
line.gsub
|
|
244
|
+
line = version.present? ? "#{line.chomp}, \"#{version}\"\n" : line.gsub(original_path, local_path)
|
|
240
245
|
end
|
|
241
246
|
elsif flag == "--reset"
|
|
242
|
-
line.
|
|
247
|
+
if line.match?(/bullet_train/)
|
|
248
|
+
line.gsub!(local_path, original_path) # Reset local path
|
|
249
|
+
line.gsub!(/, "[0-9|.]*"$/, "") # Reset specific version
|
|
250
|
+
end
|
|
243
251
|
puts "Resetting '#{package}' package in the Gemfile...".blue
|
|
244
252
|
end
|
|
245
253
|
end
|
|
@@ -250,7 +258,11 @@ namespace :bullet_train do
|
|
|
250
258
|
if flag == "--link"
|
|
251
259
|
unless match_found
|
|
252
260
|
puts "Could not find #{package}. Adding to the end of the Gemfile.".blue
|
|
253
|
-
new_lines <<
|
|
261
|
+
new_lines << if version
|
|
262
|
+
"#{original_path.chomp}, \"#{version}\"\n"
|
|
263
|
+
else
|
|
264
|
+
"#{local_path}\n"
|
|
265
|
+
end
|
|
254
266
|
end
|
|
255
267
|
elsif flag == "--reset"
|
|
256
268
|
gem_regexp = /bullet_train-[a-z|A-Z_-]+/
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bullet_train
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.2.
|
|
4
|
+
version: 1.2.21
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrew Culver
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-03-
|
|
11
|
+
date: 2023-03-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: standard
|
|
@@ -296,14 +296,14 @@ dependencies:
|
|
|
296
296
|
requirements:
|
|
297
297
|
- - "~>"
|
|
298
298
|
- !ruby/object:Gem::Version
|
|
299
|
-
version: '0.
|
|
299
|
+
version: '0.9'
|
|
300
300
|
type: :runtime
|
|
301
301
|
prerelease: false
|
|
302
302
|
version_requirements: !ruby/object:Gem::Requirement
|
|
303
303
|
requirements:
|
|
304
304
|
- - "~>"
|
|
305
305
|
- !ruby/object:Gem::Version
|
|
306
|
-
version: '0.
|
|
306
|
+
version: '0.9'
|
|
307
307
|
- !ruby/object:Gem::Dependency
|
|
308
308
|
name: showcase-rails
|
|
309
309
|
requirement: !ruby/object:Gem::Requirement
|