mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-01 02:03:22 +00:00
Merge pull request #9630 from binarygit/remove-angular-from-business-details
Remove angular from business details
This commit is contained in:
@@ -74,9 +74,6 @@ angular.module("admin.enterprises")
|
||||
$scope.removePromoImage = ->
|
||||
$scope.performEnterpriseAction("removePromoImage", "immediate_promo_image_removal_warning", "removed_promo_image_successfully")
|
||||
|
||||
$scope.removeTermsAndConditions = ->
|
||||
$scope.performEnterpriseAction("removeTermsAndConditions", "immediate_terms_and_conditions_removal_warning", "removed_terms_and_conditions_successfully")
|
||||
|
||||
$scope.performEnterpriseAction = (enterpriseActionName, warning_message_key, success_message_key) ->
|
||||
return unless confirm($scope.translation(warning_message_key))
|
||||
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
angular.module("admin.enterprises").directive 'termsAndConditionsWarning', ($rootScope, $compile, $templateCache, DialogDefaults, $timeout) ->
|
||||
restrict: 'A'
|
||||
scope: true
|
||||
|
||||
link: (scope, element, attr) ->
|
||||
# This file input click handler will hold the browser file input dialog and show a warning modal
|
||||
scope.hold_file_input_and_show_warning_modal = (event) ->
|
||||
event.preventDefault()
|
||||
scope.template = $compile($templateCache.get('admin/modals/terms_and_conditions_warning.html'))(scope)
|
||||
if scope.template.dialog
|
||||
scope.template.dialog(DialogDefaults)
|
||||
scope.template.dialog('open')
|
||||
$rootScope.$evalAsync()
|
||||
|
||||
element.bind 'click', scope.hold_file_input_and_show_warning_modal
|
||||
|
||||
# When the user presses continue in the warning modal, we open the browser file input dialog
|
||||
scope.continue = ->
|
||||
scope.template.dialog('close')
|
||||
$rootScope.$evalAsync()
|
||||
|
||||
# unbind warning modal handler and click file input again to open the browser file input dialog
|
||||
element.unbind('click').trigger('click')
|
||||
# afterwards, bind warning modal handler again so that the warning is shown the next time
|
||||
$timeout ->
|
||||
element.bind 'click', scope.hold_file_input_and_show_warning_modal
|
||||
return
|
||||
|
||||
scope.close = ->
|
||||
scope.template.dialog('close')
|
||||
$rootScope.$evalAsync()
|
||||
return
|
||||
@@ -14,7 +14,4 @@ angular.module("admin.resources").factory 'EnterpriseResource', ($resource) ->
|
||||
'removePromoImage':
|
||||
url: '/api/v0/enterprises/:id/promo_image.json'
|
||||
method: 'DELETE'
|
||||
'removeTermsAndConditions':
|
||||
url: '/api/v0/enterprises/:id/terms_and_conditions.json'
|
||||
method: 'DELETE'
|
||||
})
|
||||
|
||||
@@ -63,4 +63,3 @@ angular.module("admin.resources").factory 'Enterprises', ($q, $filter, Enterpris
|
||||
|
||||
removeLogo: performActionOnEnterpriseResource(EnterpriseResource.removeLogo)
|
||||
removePromoImage: performActionOnEnterpriseResource(EnterpriseResource.removePromoImage)
|
||||
removeTermsAndConditions: performActionOnEnterpriseResource(EnterpriseResource.removeTermsAndConditions)
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
%div
|
||||
.margin-bottom-30.text-center
|
||||
.text-big
|
||||
{{ 'js.admin.modals.terms_and_conditions_warning.title' | t }}
|
||||
.margin-bottom-30
|
||||
%p
|
||||
{{ 'js.admin.modals.terms_and_conditions_warning.message_1' | t }}
|
||||
.margin-bottom-30
|
||||
%p
|
||||
{{ 'js.admin.modals.terms_and_conditions_warning.message_2' | t }}
|
||||
|
||||
.text-center
|
||||
%input.button.red{ type: 'button', value: t('js.admin.modals.close'), ng: { click: 'close()' } }
|
||||
%input.button.red{ type: 'button', value: t('js.admin.modals.continue'), ng: { click: 'continue()' } }
|
||||
10
app/reflexes/enterprise_edit_reflex.rb
Normal file
10
app/reflexes/enterprise_edit_reflex.rb
Normal file
@@ -0,0 +1,10 @@
|
||||
# frozen_string_literal: false
|
||||
|
||||
class EnterpriseEditReflex < ApplicationReflex
|
||||
def remove_terms_and_conditions
|
||||
@enterprise = Enterprise.find(element.dataset['enterprise-id'])
|
||||
throw :forbidden unless can?(:remove_terms_and_conditions, @enterprise)
|
||||
|
||||
@enterprise.terms_and_conditions.purge_later
|
||||
end
|
||||
end
|
||||
@@ -31,22 +31,39 @@
|
||||
= f.label :invoice_text, t('.invoice_text')
|
||||
.omega.eight.columns
|
||||
= f.text_area :invoice_text, style: "width: 100%; height: 100px;"
|
||||
|
||||
.row
|
||||
.row{ data: { controller: 'terms-and-conditions', "terms-and-conditions-message-value": t('js.admin.enterprises.form.images.immediate_terms_and_conditions_removal_warning') } }
|
||||
.alpha.three.columns
|
||||
= f.label :terms_and_conditions, t('.terms_and_conditions')
|
||||
%i.text-big.icon-question-sign{ "data-controller": "help-modal-link", "data-action": "click->help-modal-link#open", "data-help-modal-link-target-value": "terms_and_conditions_info_modal" }
|
||||
|
||||
.omega.eight.columns
|
||||
%a{ href: '{{ Enterprise.terms_and_conditions }}', target: '_blank', ng: { if: 'Enterprise.terms_and_conditions' } }
|
||||
= '{{ Enterprise.terms_and_conditions_file_name }}'
|
||||
= t('.uploaded_on')
|
||||
= '{{ Enterprise.terms_and_conditions_updated_at }}'
|
||||
.omega.eight.columns#terms_and_conditions{data: { 'reflex-root': '#terms_and_conditions' } }
|
||||
- if @enterprise.terms_and_conditions.attached?
|
||||
= link_to "#{@enterprise.terms_and_conditions.blob.filename} #{ t('.uploaded_on') } #{@enterprise.terms_and_conditions.blob.created_at}", url_for(@enterprise.terms_and_conditions), target: '_blank'
|
||||
%div
|
||||
%a.icon-trash{ href: '#', data: { action: 'click->terms-and-conditions#remove', "terms-and-conditions-message-value": t('js.admin.enterprises.form.images.immediate_terms_and_conditions_removal_warning'), 'enterprise-id': @enterprise.id}}
|
||||
= t('.remove_terms_and_conditions')
|
||||
.pad-top
|
||||
= f.file_field :terms_and_conditions, accept: 'application/pdf', 'terms-and-conditions-warning' => 'true'
|
||||
.pad-top
|
||||
%a.button.red{ href: '', ng: {click: 'removeTermsAndConditions()', if: 'Enterprise.terms_and_conditions'} }
|
||||
= t('.remove_terms_and_conditions')
|
||||
%div
|
||||
.button.small{ data: { controller: 'help-modal-link', action: 'click->help-modal-link#open', "help-modal-link-target-value": "terms_and_conditions_warning_modal" } }
|
||||
= t('.upload')
|
||||
%span{ data: { "terms-and-conditions-target": "filename" } }
|
||||
= f.file_field :terms_and_conditions, accept: 'application/pdf', style: 'display: none;', data: { "terms-and-conditions-target": "fileinput" }
|
||||
|
||||
= render HelpModalComponent.new(id: "terms_and_conditions_warning_modal", close_button: false ) do
|
||||
%div
|
||||
.margin-bottom-30.text-center
|
||||
.text-big{ style: 'color: red'}
|
||||
= t('js.admin.modals.terms_and_conditions_warning.title')
|
||||
.margin-bottom-30
|
||||
%p
|
||||
= t('js.admin.modals.terms_and_conditions_warning.message_1')
|
||||
.margin-bottom-30
|
||||
%p
|
||||
= t('js.admin.modals.terms_and_conditions_warning.message_2')
|
||||
|
||||
.text-center
|
||||
%input.button.red{ type: 'button', value: t('js.admin.modals.close'), "data-action": "click->help-modal#close"}
|
||||
%input.button.red{ type: 'button', value: t('js.admin.modals.continue'), "data-action": "click->help-modal#close click->terms-and-conditions#add" }
|
||||
|
||||
|
||||
= f.fields_for :business_address, @enterprise.business_address || @enterprise.build_business_address do |bf|
|
||||
@@ -63,13 +80,12 @@
|
||||
%legend= t('.invoice_item_sorting_legend')
|
||||
.three.columns.alpha
|
||||
%label= t('.sort_items_by_supplier?')
|
||||
%div{'ofn-with-tip' => t('.sort_items_by_supplier_tip')}
|
||||
%a= t 'admin.whats_this'
|
||||
= render partial: 'admin/shared/tooltip', locals: {tooltip_text: t('.sort_items_by_supplier_tip')}
|
||||
.three.columns
|
||||
= f.radio_button :preferred_invoice_order_by_supplier, true, 'ng-model' => 'Enterprise.preferred_invoice_order_by_supplier', 'ng-value' => 'true'
|
||||
= f.radio_button :preferred_invoice_order_by_supplier, true
|
||||
= f.label :preffered_invoice_order_by_supplier, t('.enabled'), value: :true
|
||||
.five.columns.omega
|
||||
= f.radio_button :preferred_invoice_order_by_supplier, false, 'ng-model' => 'Enterprise.preferred_invoice_order_by_supplier', 'ng-value' => 'false'
|
||||
= f.radio_button :preferred_invoice_order_by_supplier, false
|
||||
= f.label :preferred_invoice_order_by_name, t('.disabled'), value: :false
|
||||
|
||||
= render HelpModalComponent.new(id: "terms_and_conditions_info_modal") do
|
||||
|
||||
30
app/webpacker/controllers/terms_and_conditions_controller.js
Normal file
30
app/webpacker/controllers/terms_and_conditions_controller.js
Normal file
@@ -0,0 +1,30 @@
|
||||
import ApplicationController from "./application_controller";
|
||||
|
||||
export default class extends ApplicationController {
|
||||
static targets = ["filename", "fileinput"];
|
||||
static values = {
|
||||
message: String,
|
||||
};
|
||||
|
||||
connect() {
|
||||
super.connect();
|
||||
this.fileinputTarget.addEventListener("change", (event) => {
|
||||
this.filenameTarget.innerText = event.target.files[0].name;
|
||||
});
|
||||
}
|
||||
|
||||
remove(event) {
|
||||
let confirmation = confirm(this.messageValue);
|
||||
if (confirmation) {
|
||||
location.hash = "";
|
||||
this.stimulate(
|
||||
"EnterpriseEdit#remove_terms_and_conditions",
|
||||
event.target
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
add() {
|
||||
this.fileinputTarget.click();
|
||||
}
|
||||
}
|
||||
@@ -936,6 +936,7 @@ en:
|
||||
legend: "Address"
|
||||
business_details:
|
||||
legend: "Business Details"
|
||||
upload: 'upload'
|
||||
abn: ABN
|
||||
abn_placeholder: eg. 99 123 456 789
|
||||
acn: ACN
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
describe "termsAndConditionsWarning", ->
|
||||
element = null
|
||||
templatecache = null
|
||||
|
||||
beforeEach ->
|
||||
module('admin.enterprises')
|
||||
|
||||
inject ($rootScope, $compile, $templateCache) ->
|
||||
templatecache = $templateCache
|
||||
el = angular.element("<input terms-and-conditions-warning=\"true\"></input>")
|
||||
element = $compile(el)($rootScope)
|
||||
$rootScope.$digest()
|
||||
|
||||
describe "terms and conditions warning", ->
|
||||
it "should load template", ->
|
||||
spyOn(templatecache, 'get')
|
||||
element.triggerHandler('click');
|
||||
expect(templatecache.get).toHaveBeenCalledWith('admin/modals/terms_and_conditions_warning.html')
|
||||
@@ -31,7 +31,7 @@ describe "Uploading Terms and Conditions PDF" do
|
||||
go_to_business_details
|
||||
|
||||
# Add PDF
|
||||
attach_file "enterprise[terms_and_conditions]", original_terms
|
||||
attach_file "enterprise[terms_and_conditions]", original_terms, make_visible: true
|
||||
|
||||
time = Time.zone.local(2002, 4, 13, 0, 0, 0)
|
||||
Timecop.freeze(run_time = time) do
|
||||
@@ -46,7 +46,7 @@ describe "Uploading Terms and Conditions PDF" do
|
||||
expect(page).to have_content time.strftime("%F %T")
|
||||
|
||||
# Replace PDF
|
||||
attach_file "enterprise[terms_and_conditions]", updated_terms
|
||||
attach_file "enterprise[terms_and_conditions]", updated_terms, make_visible: true
|
||||
click_button "Update"
|
||||
expect(page).
|
||||
to have_content "Enterprise \"#{distributor.name}\" has been successfully updated!"
|
||||
|
||||
Reference in New Issue
Block a user