Fixed issue #2170 by moving channel setting to the model
This commit is contained in:
parent
768fdf08a0
commit
428c68d06a
3 changed files with 67 additions and 57 deletions
|
@ -60,68 +60,23 @@ class App.ChannelEmailFilter extends App.Controller
|
||||||
|
|
||||||
new: (e) =>
|
new: (e) =>
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
new App.ChannelEmailFilterEdit(
|
new App.ControllerGenericNew(
|
||||||
|
pageData:
|
||||||
|
object: 'Postmaster Filter'
|
||||||
|
genericObject: 'PostmasterFilter'
|
||||||
container: @el.closest('.content')
|
container: @el.closest('.content')
|
||||||
|
callback: @load
|
||||||
)
|
)
|
||||||
|
|
||||||
edit: (id, e) =>
|
edit: (id, e) =>
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
new App.ChannelEmailFilterEdit(
|
new App.ControllerGenericEdit(
|
||||||
object: App.PostmasterFilter.find(id)
|
id: id,
|
||||||
|
pageData:
|
||||||
|
object: 'Postmaster Filter'
|
||||||
|
genericObject: 'PostmasterFilter'
|
||||||
container: @el.closest('.content')
|
container: @el.closest('.content')
|
||||||
)
|
callback: @load
|
||||||
|
|
||||||
class App.ChannelEmailFilterEdit extends App.ControllerModal
|
|
||||||
buttonClose: true
|
|
||||||
buttonCancel: true
|
|
||||||
buttonSubmit: true
|
|
||||||
head: 'Postmaster Filter'
|
|
||||||
|
|
||||||
content: =>
|
|
||||||
if @object
|
|
||||||
@form = new App.ControllerForm(
|
|
||||||
model: App.PostmasterFilter,
|
|
||||||
params: @object,
|
|
||||||
autofocus: true,
|
|
||||||
)
|
|
||||||
else
|
|
||||||
@form = new App.ControllerForm(
|
|
||||||
model: App.PostmasterFilter,
|
|
||||||
autofocus: true,
|
|
||||||
)
|
|
||||||
|
|
||||||
@form.form
|
|
||||||
|
|
||||||
onSubmit: (e) =>
|
|
||||||
e.preventDefault()
|
|
||||||
|
|
||||||
# get params
|
|
||||||
params = @formParam(e.target)
|
|
||||||
params['channel'] = 'email'
|
|
||||||
|
|
||||||
object = @object || new App.PostmasterFilter
|
|
||||||
object.load(params)
|
|
||||||
|
|
||||||
# validate form
|
|
||||||
errors = @form.validate(params)
|
|
||||||
|
|
||||||
# show errors in form
|
|
||||||
if errors
|
|
||||||
@log 'error', errors
|
|
||||||
@formValidate(form: e.target, errors: errors)
|
|
||||||
return false
|
|
||||||
|
|
||||||
# disable form
|
|
||||||
@formDisable(e)
|
|
||||||
|
|
||||||
# save object
|
|
||||||
object.save(
|
|
||||||
done: =>
|
|
||||||
@close()
|
|
||||||
fail: (settings, details) =>
|
|
||||||
@log 'errors', details
|
|
||||||
@formEnable(e)
|
|
||||||
@form.showAlert(details.error_human || details.error || 'Unable to create object!')
|
|
||||||
)
|
)
|
||||||
|
|
||||||
class App.ChannelEmailSignature extends App.Controller
|
class App.ChannelEmailSignature extends App.Controller
|
||||||
|
|
|
@ -21,3 +21,6 @@ class App.PostmasterFilter extends App.Model
|
||||||
'name',
|
'name',
|
||||||
]
|
]
|
||||||
@configure_clone = true
|
@configure_clone = true
|
||||||
|
|
||||||
|
@on 'create', (newRecord) ->
|
||||||
|
newRecord.channel = 'email'
|
|
@ -128,4 +128,56 @@ class AdminChannelEmailTest < TestCase
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# test the creation and cloning of Postmaster filters
|
||||||
|
# confirm fix for issue #2170 - Cannot clone PostmasterFilter
|
||||||
|
def test_filter_clone
|
||||||
|
filter_name = "Test Filter #{rand(999_999)}"
|
||||||
|
|
||||||
|
@browser = browser_instance
|
||||||
|
login(
|
||||||
|
username: 'master@example.com',
|
||||||
|
password: 'test',
|
||||||
|
url: browser_url,
|
||||||
|
)
|
||||||
|
tasks_close_all()
|
||||||
|
|
||||||
|
click(css: 'a[href="#manage"]')
|
||||||
|
click(css: '.content.active a[href="#channels/email"]')
|
||||||
|
|
||||||
|
click(css: '.content.active a[href="#c-filter"]')
|
||||||
|
|
||||||
|
# create a new email filter
|
||||||
|
click(css: '.content.active a[data-type="new"]')
|
||||||
|
|
||||||
|
modal_ready()
|
||||||
|
set(
|
||||||
|
css: '.modal input[name="name"]',
|
||||||
|
value: filter_name,
|
||||||
|
)
|
||||||
|
set(
|
||||||
|
css: '.modal input[name="match::from::value"]',
|
||||||
|
value: 'target',
|
||||||
|
)
|
||||||
|
click(css: '.modal .js-submit')
|
||||||
|
modal_disappear()
|
||||||
|
|
||||||
|
watch_for(
|
||||||
|
css: '.content.active .table',
|
||||||
|
value: filter_name,
|
||||||
|
)
|
||||||
|
|
||||||
|
# now clone filter that we just created
|
||||||
|
click(css: '.content.active .table #tableActions')
|
||||||
|
click(css: '.content.active .table .dropdown .js-clone')
|
||||||
|
|
||||||
|
modal_ready()
|
||||||
|
click(css: '.modal .js-submit')
|
||||||
|
modal_disappear()
|
||||||
|
|
||||||
|
# confirm the clone exists in the table
|
||||||
|
watch_for(
|
||||||
|
css: '.content.active .table',
|
||||||
|
value: "Clone: #{filter_name}",
|
||||||
|
)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue