Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 15 additions & 45 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,45 +1,15 @@
# See https://docs.docker.com/engine/reference/builder/#dockerignore-file for more about ignoring files.

# Ignore git directory.
/.git/

# Ignore bundler config.
/.bundle

# Ignore documentation
/docs/
/README.md
/CLAUDE.md
/AGENTS.md
/STYLE.md
/CONTRIBUTING.md

# Ignore all environment files (except templates).
/.env*
!/.env*.erb

# Ignore all default key files.
/config/master.key
/config/credentials/*.key

# Ignore all logfiles and tempfiles.
/log/*
/tmp/*
!/log/.keep
!/tmp/.keep

# Ignore pidfiles, but keep the directory.
/tmp/pids/*
!/tmp/pids/.keep

# Ignore storage (uploaded files in development and any SQLite databases).
/storage/*
!/storage/.keep
/tmp/storage/*
!/tmp/storage/.keep

# Ignore assets.
/node_modules/
/app/assets/builds/*
!/app/assets/builds/.keep
/public/assets
.git
.bundle
log/*
tmp/*
!tmp/keep
public/assets
storage/*
!storage/keep
node_modules
.DS_Store
Dockerfile
Dockerfile.dev
docker-compose.yml
.dockerignore
vendor/bundle
1 change: 0 additions & 1 deletion Dockerfile.dev
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ RUN apt-get update -qq && \
# Install application gems
COPY Gemfile Gemfile.lock .ruby-version ./
COPY lib/fizzy.rb ./lib/fizzy.rb
COPY gems ./gems/
RUN --mount=type=secret,id=GITHUB_TOKEN --mount=type=cache,id=fizzy-devbundle-${RUBY_VERSION},sharing=locked,target=/devbundle \
gem install bundler foreman && \
BUNDLE_PATH=/devbundle BUNDLE_GITHUB__COM="$(cat /run/secrets/GITHUB_TOKEN):x-oauth-basic" bundle install && \
Expand Down
7 changes: 6 additions & 1 deletion app/controllers/boards/columns/closeds_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,12 @@ class Boards::Columns::ClosedsController < ApplicationController
include BoardScoped

def show
set_page_and_extract_portion_from @board.cards.closed.recently_closed_first.preloaded
cards = if @board.manual_sorting_enabled?
@board.cards.closed.ordered_by_position(Arel.sql("closures.created_at DESC, cards.id DESC")).preloaded
else
@board.cards.closed.recently_closed_first.preloaded
end
set_page_and_extract_portion_from cards
fresh_when etag: @page.records
end
end
7 changes: 6 additions & 1 deletion app/controllers/boards/columns/not_nows_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,12 @@ class Boards::Columns::NotNowsController < ApplicationController
include BoardScoped

def show
set_page_and_extract_portion_from @board.cards.postponed.latest.preloaded
cards = if @board.manual_sorting_enabled?
@board.cards.postponed.ordered_by_position(last_active_at: :desc, id: :desc).preloaded
else
@board.cards.postponed.latest.preloaded
end
set_page_and_extract_portion_from cards
fresh_when etag: @page.records
end
end
7 changes: 6 additions & 1 deletion app/controllers/boards/columns/streams_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,12 @@ class Boards::Columns::StreamsController < ApplicationController
include BoardScoped

def show
set_page_and_extract_portion_from @board.cards.awaiting_triage.latest.with_golden_first.preloaded
cards = if @board.manual_sorting_enabled?
@board.cards.awaiting_triage.with_golden_first.ordered_by_position(last_active_at: :desc, id: :desc).preloaded
else
@board.cards.awaiting_triage.latest.with_golden_first.preloaded
end
set_page_and_extract_portion_from cards
fresh_when etag: @page.records
end
end
7 changes: 6 additions & 1 deletion app/controllers/boards/columns_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,12 @@ def index
end

def show
set_page_and_extract_portion_from @column.cards.active.latest.with_golden_first.preloaded
cards = if @board.manual_sorting_enabled?
@column.cards.active.with_golden_first.ordered_by_position(last_active_at: :desc, id: :desc).preloaded
else
@column.cards.active.latest.with_golden_first.preloaded
end
set_page_and_extract_portion_from cards
fresh_when etag: @page.records
end

Expand Down
14 changes: 14 additions & 0 deletions app/controllers/boards/manual_sortings_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
class Boards::ManualSortingsController < ApplicationController
include BoardScoped

before_action :ensure_permission_to_admin_board

def create
@board.update!(manual_sorting_enabled: true)
end

def destroy
@board.update!(manual_sorting_enabled: false)
end
end

6 changes: 5 additions & 1 deletion app/controllers/boards_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,11 @@ def show_filtered_cards
end

def show_columns
cards = @board.cards.awaiting_triage.latest.with_golden_first.preloaded
cards = if @board.manual_sorting_enabled?
@board.cards.awaiting_triage.with_golden_first.ordered_by_position(last_active_at: :desc, id: :desc).preloaded
else
@board.cards.awaiting_triage.latest.with_golden_first.preloaded
end
set_page_and_extract_portion_from cards
fresh_when etag: [ @board, @page.records, @user_filtering, Current.account ]
end
Expand Down
32 changes: 30 additions & 2 deletions app/controllers/cards/closures_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,13 @@ class Cards::ClosuresController < ApplicationController
include CardScoped

def create
@card.close
ActiveRecord::Base.transaction do
@card.close

Card::Positioner
.new(relation: @board.cards.closed, fallback_order: Arel.sql("closures.created_at DESC, cards.id DESC"))
.reposition!(card: @card, before_number: nil, after_number: nil)
end

respond_to do |format|
format.turbo_stream { render_card_replacement }
Expand All @@ -11,7 +17,29 @@ def create
end

def destroy
@card.reopen
ActiveRecord::Base.transaction do
@card.reopen

relation = if @card.postponed?
@board.cards.postponed
elsif @card.triaged?
@card.column.cards.active
else
@board.cards.awaiting_triage
end

if @card.active?
relation = if @card.golden?
relation.joins(:goldness)
else
relation.where.missing(:goldness)
end
end

Card::Positioner
.new(relation: relation, fallback_order: { last_active_at: :desc, id: :desc })
.reposition!(card: @card, before_number: nil, after_number: nil)
end

respond_to do |format|
format.turbo_stream { render_card_replacement }
Expand Down
8 changes: 7 additions & 1 deletion app/controllers/cards/not_nows_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,13 @@ class Cards::NotNowsController < ApplicationController
include CardScoped

def create
@card.postpone
ActiveRecord::Base.transaction do
@card.postpone

Card::Positioner
.new(relation: @board.cards.postponed, fallback_order: { last_active_at: :desc, id: :desc })
.reposition!(card: @card, before_number: nil, after_number: nil)
end

respond_to do |format|
format.turbo_stream { render_card_replacement }
Expand Down
20 changes: 19 additions & 1 deletion app/controllers/cards/publishes_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,25 @@ class Cards::PublishesController < ApplicationController
include CardScoped

def create
@card.publish
ActiveRecord::Base.transaction do
@card.publish

relation = if @card.triaged?
@card.column.cards.active
else
@board.cards.awaiting_triage
end

relation = if @card.golden?
relation.joins(:goldness)
else
relation.where.missing(:goldness)
end

Card::Positioner
.new(relation: relation, fallback_order: { last_active_at: :desc, id: :desc })
.reposition!(card: @card, before_number: nil, after_number: nil)
end

if add_another_param?
redirect_to @board.cards.create!, notice: "Card added"
Expand Down
30 changes: 28 additions & 2 deletions app/controllers/cards/triages_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,20 @@ class Cards::TriagesController < ApplicationController

def create
column = @card.board.columns.find(params[:column_id])
@card.triage_into(column)
ActiveRecord::Base.transaction do
@card.triage_into(column)

relation = column.cards.active
relation = if @card.golden?
relation.joins(:goldness)
else
relation.where.missing(:goldness)
end

Card::Positioner
.new(relation: relation, fallback_order: { last_active_at: :desc, id: :desc })
.reposition!(card: @card, before_number: nil, after_number: nil)
end

respond_to do |format|
format.html { redirect_to @card }
Expand All @@ -12,7 +25,20 @@ def create
end

def destroy
@card.send_back_to_triage
ActiveRecord::Base.transaction do
@card.send_back_to_triage

relation = @board.cards.awaiting_triage
relation = if @card.golden?
relation.joins(:goldness)
else
relation.where.missing(:goldness)
end

Card::Positioner
.new(relation: relation, fallback_order: { last_active_at: :desc, id: :desc })
.reposition!(card: @card, before_number: nil, after_number: nil)
end

respond_to do |format|
format.html { redirect_to @card }
Expand Down
13 changes: 12 additions & 1 deletion app/controllers/columns/cards/drops/closures_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,17 @@ class Columns::Cards::Drops::ClosuresController < ApplicationController
include CardScoped

def create
@card.close
if @card.closed?
return unless @board.manual_sorting_enabled?
else
@card.close
end

before_id = @board.manual_sorting_enabled? ? params[:before_id] : nil
after_id = @board.manual_sorting_enabled? ? params[:after_id] : nil

Card::Positioner
.new(relation: @board.cards.closed, fallback_order: Arel.sql("closures.created_at DESC, cards.id DESC"))
.reposition!(card: @card, before_number: before_id, after_number: after_id)
end
end
25 changes: 24 additions & 1 deletion app/controllers/columns/cards/drops/columns_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,29 @@ class Columns::Cards::Drops::ColumnsController < ApplicationController

def create
@column = @card.board.columns.find(params[:column_id])
@card.triage_into(@column)

ActiveRecord::Base.transaction do
already_in_target = @card.active? && @card.column == @column

if already_in_target
return unless @board.manual_sorting_enabled?
else
@card.triage_into(@column)
end

relation = @column.cards.active
relation = if @card.golden?
relation.joins(:goldness)
else
relation.where.missing(:goldness)
end

before_id = @board.manual_sorting_enabled? ? params[:before_id] : nil
after_id = @board.manual_sorting_enabled? ? params[:after_id] : nil

Card::Positioner
.new(relation: relation, fallback_order: { last_active_at: :desc, id: :desc })
.reposition!(card: @card, before_number: before_id, after_number: after_id)
end
end
end
15 changes: 14 additions & 1 deletion app/controllers/columns/cards/drops/not_nows_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,19 @@ class Columns::Cards::Drops::NotNowsController < ApplicationController
include CardScoped

def create
@card.postpone
ActiveRecord::Base.transaction do
if @card.postponed?
return unless @board.manual_sorting_enabled?
else
@card.postpone
end

before_id = @board.manual_sorting_enabled? ? params[:before_id] : nil
after_id = @board.manual_sorting_enabled? ? params[:after_id] : nil

Card::Positioner
.new(relation: @board.cards.postponed, fallback_order: { last_active_at: :desc, id: :desc })
.reposition!(card: @card, before_number: before_id, after_number: after_id)
end
end
end
27 changes: 25 additions & 2 deletions app/controllers/columns/cards/drops/streams_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,30 @@ class Columns::Cards::Drops::StreamsController < ApplicationController
include CardScoped

def create
@card.send_back_to_triage
set_page_and_extract_portion_from @board.cards.awaiting_triage.latest.with_golden_first
ActiveRecord::Base.transaction do
unless @card.awaiting_triage?
@card.send_back_to_triage
end

relation = @board.cards.awaiting_triage
relation = if @card.golden?
relation.joins(:goldness)
else
relation.where.missing(:goldness)
end

if @board.manual_sorting_enabled?
Card::Positioner
.new(relation: relation, fallback_order: { last_active_at: :desc, id: :desc })
.reposition!(card: @card, before_number: params[:before_id], after_number: params[:after_id])
end
end

cards = if @board.manual_sorting_enabled?
@board.cards.awaiting_triage.with_golden_first.ordered_by_position(last_active_at: :desc, id: :desc)
else
@board.cards.awaiting_triage.latest.with_golden_first
end
set_page_and_extract_portion_from cards
end
end
Loading