implement duplication
This commit is contained in:
33
app/controllers/contract_templates/duplicates_controller.rb
Normal file
33
app/controllers/contract_templates/duplicates_controller.rb
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class ContractTemplates::DuplicatesController < ApplicationController
|
||||||
|
before_action :set_contract_template
|
||||||
|
|
||||||
|
def create
|
||||||
|
authorize(ContractTemplate)
|
||||||
|
new_contract_template = @contract_template.dup
|
||||||
|
new_contract_template.name = I18n.t('contract_templates.duplicate.name_prefix', template_name: @contract_template.name)
|
||||||
|
|
||||||
|
# Duplicate rich text fields
|
||||||
|
|
||||||
|
new_contract_template.body = @contract_template.body
|
||||||
|
new_contract_template.guardian_clause = @contract_template.guardian_clause
|
||||||
|
new_contract_template.signature_legal_text = @contract_template.signature_legal_text
|
||||||
|
|
||||||
|
if new_contract_template.save
|
||||||
|
redirect_to [:edit, new_contract_template]
|
||||||
|
else
|
||||||
|
redirect_to [@contract_template.project, :contract_templates], alert: t('.error')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def contract_templates
|
||||||
|
policy_scope(ContractTemplate)
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_contract_template
|
||||||
|
@contract_template = contract_templates.find(params[:contract_template_id])
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -38,10 +38,6 @@ class ContractTemplatesController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
unless @contract_template.editable?
|
|
||||||
redirect_to([@project, :contract_templates], alert: t('.error')) and return
|
|
||||||
end
|
|
||||||
|
|
||||||
@contract_template.attributes = contract_template_params
|
@contract_template.attributes = contract_template_params
|
||||||
|
|
||||||
if @contract_template.save
|
if @contract_template.save
|
||||||
|
|||||||
@@ -24,13 +24,17 @@ class ContractTemplatePolicy < ApplicationPolicy
|
|||||||
end
|
end
|
||||||
|
|
||||||
def edit?
|
def edit?
|
||||||
create?
|
record.editable? && create?
|
||||||
end
|
end
|
||||||
|
|
||||||
def update?
|
def update?
|
||||||
edit?
|
edit?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def duplicate?
|
||||||
|
create?
|
||||||
|
end
|
||||||
|
|
||||||
def import?
|
def import?
|
||||||
if user.account_manager?
|
if user.account_manager?
|
||||||
record.project.account = user.account
|
record.project.account = user.account
|
||||||
|
|||||||
@@ -19,9 +19,12 @@
|
|||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<%= button_tag t(".actions.manage"), class: "btn btn-light btn-sm dropdown-toggle border", data: { toggle: "dropdown", boundary: "window" }, aria: { haspopup: true, expanded: false } %>
|
<%= button_tag t(".actions.manage"), class: "btn btn-light btn-sm dropdown-toggle border", data: { toggle: "dropdown", boundary: "window" }, aria: { haspopup: true, expanded: false } %>
|
||||||
<div class="dropdown-menu dropdown-menu-right">
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
<% if policy(ContractTemplate).edit? && contract_template.editable? %>
|
<% if policy(contract_template).edit? %>
|
||||||
<%= link_to fa_icon("pencil fw", text: t(".actions.edit")), [:edit, contract_template], class: "dropdown-item" %>
|
<%= link_to fa_icon("pencil fw", text: t(".actions.edit")), [:edit, contract_template], class: "dropdown-item" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<% if policy(ContractTemplate).duplicate? %>
|
||||||
|
<%= link_to fa_icon("clone fw", text: t(".actions.duplicate")), contract_template_duplicates_path(contract_template), method: :post, class: "dropdown-item" %>
|
||||||
|
<% end %>
|
||||||
<% if policy(QrCode).show? %>
|
<% if policy(QrCode).show? %>
|
||||||
<%= link_to fa_icon("qrcode", text: t(".actions.qr_code")), [contract_template, :qr_codes], class: "dropdown-item", target: :_blank %>
|
<%= link_to fa_icon("qrcode", text: t(".actions.qr_code")), [contract_template, :qr_codes], class: "dropdown-item", target: :_blank %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -254,6 +254,7 @@ en:
|
|||||||
manage: Manage
|
manage: Manage
|
||||||
qr_code: QR Code
|
qr_code: QR Code
|
||||||
sign: Sign
|
sign: Sign
|
||||||
|
duplicate: Duplicate
|
||||||
no_fee: No Fee
|
no_fee: No Fee
|
||||||
create:
|
create:
|
||||||
notice: The release template has been created
|
notice: The release template has been created
|
||||||
@@ -302,7 +303,11 @@ en:
|
|||||||
releases_automatically_organized: Releases are automatically organized as they’re submitted
|
releases_automatically_organized: Releases are automatically organized as they’re submitted
|
||||||
update:
|
update:
|
||||||
notice: The release template has been updated
|
notice: The release template has been updated
|
||||||
error: The release template cannot be updated
|
duplicate:
|
||||||
|
name_prefix: Copy of %{template_name}
|
||||||
|
duplicates:
|
||||||
|
create:
|
||||||
|
error: Failed to duplicate release template
|
||||||
contracts:
|
contracts:
|
||||||
for_office_use_only:
|
for_office_use_only:
|
||||||
description_labels:
|
description_labels:
|
||||||
|
|||||||
@@ -106,6 +106,7 @@ es:
|
|||||||
contract_template:
|
contract_template:
|
||||||
actions:
|
actions:
|
||||||
edit: Edit (ES)
|
edit: Edit (ES)
|
||||||
|
duplicate: Duplicate (ES)
|
||||||
edit:
|
edit:
|
||||||
heading: Edit Contract Template (ES)
|
heading: Edit Contract Template (ES)
|
||||||
form:
|
form:
|
||||||
@@ -136,7 +137,11 @@ es:
|
|||||||
releases_automatically_organized: Releases are automatically organized as they’re submitted (ES)
|
releases_automatically_organized: Releases are automatically organized as they’re submitted (ES)
|
||||||
update:
|
update:
|
||||||
notice: The release template has been updated (ES)
|
notice: The release template has been updated (ES)
|
||||||
error: The release template cannot be updated (ES)
|
duplicate:
|
||||||
|
name_prefix: Copy of %{template_name} (ES)
|
||||||
|
duplicates:
|
||||||
|
create:
|
||||||
|
error: Failed to duplicate release template (ES)
|
||||||
contracts:
|
contracts:
|
||||||
for_office_use_only:
|
for_office_use_only:
|
||||||
description_labels:
|
description_labels:
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ Rails.application.routes.draw do
|
|||||||
resources :contract_templates, only: [:index, :new, :create, :edit, :update, :destroy] do
|
resources :contract_templates, only: [:index, :new, :create, :edit, :update, :destroy] do
|
||||||
resource :qr_codes, only: [:show], controller: "contract_templates/qr_codes"
|
resource :qr_codes, only: [:show], controller: "contract_templates/qr_codes"
|
||||||
resource :blank_contracts, only: [:show, :new, :create], controller: "contract_templates/blank_contracts"
|
resource :blank_contracts, only: [:show, :new, :create], controller: "contract_templates/blank_contracts"
|
||||||
|
resource :duplicates, only: [:create], controller: "contract_templates/duplicates"
|
||||||
end
|
end
|
||||||
resource :release_template_imports, only: [:new, :create]
|
resource :release_template_imports, only: [:new, :create]
|
||||||
resources :project_memberships, only: [:index, :create, :destroy]
|
resources :project_memberships, only: [:index, :create, :destroy]
|
||||||
|
|||||||
Reference in New Issue
Block a user