mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-13 00:24:42 +08:00
Merge pull request #8120 from artoscinote/ma_SCI_11435
Disable unpublished button if form is in use [SCI-11435]
This commit is contained in:
commit
6c007705b1
5 changed files with 13 additions and 5 deletions
|
@ -70,6 +70,8 @@ class FormsController < ApplicationController
|
|||
end
|
||||
|
||||
def publish
|
||||
render_403 and return unless can_publish_form?(@form)
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
@form.update!(
|
||||
published_by: current_user,
|
||||
|
@ -82,6 +84,8 @@ class FormsController < ApplicationController
|
|||
end
|
||||
|
||||
def unpublish
|
||||
render_403 and return unless can_unpublish_form?(@form)
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
@form.update!(
|
||||
published_by: nil,
|
||||
|
@ -208,7 +212,6 @@ class FormsController < ApplicationController
|
|||
end
|
||||
|
||||
def check_manage_permissions
|
||||
|
||||
render_403 unless @form && can_manage_form?(@form)
|
||||
end
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
<button v-if="form.attributes.urls.publish" class="btn btn-primary" @click="publishForm">
|
||||
{{ i18n.t('forms.show.publish') }}
|
||||
</button>
|
||||
<button v-if="form.attributes.urls.unpublish" class="btn btn-secondary" @click="unpublishForm">
|
||||
<button v-if="form.attributes.published_on" :disabled="!form.attributes.urls.unpublish" class="btn btn-secondary" @click="unpublishForm">
|
||||
{{ i18n.t('forms.show.unpublish') }}
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -32,6 +32,10 @@ class Form < ApplicationRecord
|
|||
|
||||
enum :visibility, { hidden: 0, visible: 1 }
|
||||
|
||||
def unused?
|
||||
form_responses.none?
|
||||
end
|
||||
|
||||
def permission_parent
|
||||
nil
|
||||
end
|
||||
|
|
|
@ -40,6 +40,6 @@ Canaid::Permissions.register_for(Form) do
|
|||
end
|
||||
|
||||
can :unpublish_form do |user, form|
|
||||
form.published? && form.permission_granted?(user, FormPermissions::MANAGE)
|
||||
form.published? && form.permission_granted?(user, FormPermissions::MANAGE) && form.unused?
|
||||
end
|
||||
end
|
||||
|
|
|
@ -9,6 +9,7 @@ describe FormsController, type: :controller do
|
|||
|
||||
let!(:form) { create :form, team: team, created_by: user }
|
||||
let!(:form2) { create :form, team: team, created_by: user }
|
||||
let!(:published_form) { create :form, team: team, created_by: user, published_by: user, published_on: DateTime.parse('1-1-2000') }
|
||||
let!(:form_field) { create :form_field, form: form2, created_by: user }
|
||||
|
||||
describe '#index' do
|
||||
|
@ -20,7 +21,7 @@ describe FormsController, type: :controller do
|
|||
|
||||
response_body = JSON.parse(response.body)
|
||||
|
||||
expect(response_body['data'].length).to eq 2
|
||||
expect(response_body['data'].length).to eq 3
|
||||
expect(response.body).to include(form.name)
|
||||
expect(response.body).to include(form2.name)
|
||||
expect(response.body).not_to include(form_field.name)
|
||||
|
@ -110,7 +111,7 @@ describe FormsController, type: :controller do
|
|||
let(:action) { put :unpublish, params: params, format: :json }
|
||||
let(:params) do
|
||||
{
|
||||
id: form.id,
|
||||
id: published_form.id,
|
||||
}
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue