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
|
||||
|
||||
def update
|
||||
unless @contract_template.editable?
|
||||
redirect_to([@project, :contract_templates], alert: t('.error')) and return
|
||||
end
|
||||
|
||||
@contract_template.attributes = contract_template_params
|
||||
|
||||
if @contract_template.save
|
||||
|
||||
@@ -24,13 +24,17 @@ class ContractTemplatePolicy < ApplicationPolicy
|
||||
end
|
||||
|
||||
def edit?
|
||||
create?
|
||||
record.editable? && create?
|
||||
end
|
||||
|
||||
def update?
|
||||
edit?
|
||||
end
|
||||
|
||||
def duplicate?
|
||||
create?
|
||||
end
|
||||
|
||||
def import?
|
||||
if user.account_manager?
|
||||
record.project.account = user.account
|
||||
|
||||
@@ -19,9 +19,12 @@
|
||||
<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 } %>
|
||||
<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" %>
|
||||
<% 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? %>
|
||||
<%= link_to fa_icon("qrcode", text: t(".actions.qr_code")), [contract_template, :qr_codes], class: "dropdown-item", target: :_blank %>
|
||||
<% end %>
|
||||
|
||||
@@ -254,6 +254,7 @@ en:
|
||||
manage: Manage
|
||||
qr_code: QR Code
|
||||
sign: Sign
|
||||
duplicate: Duplicate
|
||||
no_fee: No Fee
|
||||
create:
|
||||
notice: The release template has been created
|
||||
@@ -302,7 +303,11 @@ en:
|
||||
releases_automatically_organized: Releases are automatically organized as they’re submitted
|
||||
update:
|
||||
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:
|
||||
for_office_use_only:
|
||||
description_labels:
|
||||
|
||||
@@ -106,6 +106,7 @@ es:
|
||||
contract_template:
|
||||
actions:
|
||||
edit: Edit (ES)
|
||||
duplicate: Duplicate (ES)
|
||||
edit:
|
||||
heading: Edit Contract Template (ES)
|
||||
form:
|
||||
@@ -136,7 +137,11 @@ es:
|
||||
releases_automatically_organized: Releases are automatically organized as they’re submitted (ES)
|
||||
update:
|
||||
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:
|
||||
for_office_use_only:
|
||||
description_labels:
|
||||
|
||||
@@ -59,6 +59,7 @@ Rails.application.routes.draw do
|
||||
resources :contract_templates, only: [:index, :new, :create, :edit, :update, :destroy] do
|
||||
resource :qr_codes, only: [:show], controller: "contract_templates/qr_codes"
|
||||
resource :blank_contracts, only: [:show, :new, :create], controller: "contract_templates/blank_contracts"
|
||||
resource :duplicates, only: [:create], controller: "contract_templates/duplicates"
|
||||
end
|
||||
resource :release_template_imports, only: [:new, :create]
|
||||
resources :project_memberships, only: [:index, :create, :destroy]
|
||||
|
||||
Reference in New Issue
Block a user