Added support for admin form preview also for admins if feature is disabled.

This commit is contained in:
Martin Edenhofer 2016-10-06 21:01:48 +02:00
parent 0c4bf9f5ca
commit 57a7e25cf1
4 changed files with 130 additions and 39 deletions

View file

@ -48,6 +48,7 @@ class App.ChannelForm extends App.ControllerSubContent
@$('.js-modal-params').html(paramString)
# rebuild preview
params.test = true
if params.modal
@$('.js-formInline').addClass('hide')
@$('.js-formBtn').removeClass('hide')

View file

@ -16,6 +16,10 @@ class FormController < ApplicationController
endpoint: endpoint,
}
if params[:test] && current_user && current_user.permissions?('admin.channel_formular')
config[:enabled] = true
end
render json: config, status: :ok
end
@ -115,6 +119,7 @@ class FormController < ApplicationController
private
def enabled?
return true if params[:test] && current_user && current_user.permissions?('admin.channel_formular')
return true if Setting.get('form_ticket_create')
response_access_deny
false

View file

@ -105,7 +105,8 @@ $(function() {
}
Plugin.prototype.init = function () {
var _this = this
var _this = this,
params = {}
_this.log('debug', 'init', this._src)
@ -117,8 +118,12 @@ $(function() {
_this.log('debug', 'endpoint_submit: ' + _this.endpoint_submit)
// load config
if (this.options.test) {
params.test = true
}
$.ajax({
url: _this.endpoint_config,
data: params
}).done(function(data) {
_this.log('debug', 'config:', data)
_this._config = data
@ -209,13 +214,17 @@ $(function() {
var _this = this,
params = {}
$.each( _this.$form.serializeArray(), function( index, item ) {
$.each( _this.$form.serializeArray(), function(index, item) {
params[item.name] = item.value
})
if (!params.title) {
params.title = this.options.messageTitle
}
if (this.options.test) {
params.test = true
}
_this.log('debug', 'params', params)
return params
}

View file

@ -30,6 +30,82 @@ class FormTest < TestCase
type: 'off',
)
# admin preview test
sleep 1
click(
browser: agent,
css: '.content.active .js-formBtn',
)
sleep 10
set(
browser: agent,
css: 'body div.zammad-form-modal [name="name"]',
value: 'some sender',
)
set(
browser: agent,
css: 'body div.zammad-form-modal [name="body"]',
value: '',
)
click(
browser: agent,
css: 'body div.zammad-form-modal button[type="submit"]',
)
exists(
browser: agent,
css: 'body div.zammad-form-modal .has-error [name="body"]',
)
set(
browser: agent,
css: 'body div.zammad-form-modal [name="body"]',
value: 'new body',
)
set(
browser: agent,
css: 'body div.zammad-form-modal [name="email"]',
value: 'somebody@notexistinginanydomainspacealsonothere.nowhere',
)
click(
browser: agent,
css: 'body div.zammad-form-modal button[type="submit"]',
)
exists(
browser: agent,
css: 'body div.zammad-form-modal .has-error [name="email"]',
)
set(
browser: agent,
css: 'body div.zammad-form-modal [name="email"]',
value: 'notexistinginanydomainspacealsonothere@znuny.com',
)
click(
browser: agent,
css: 'body div.zammad-form-modal button[type="submit"]',
)
exists(
browser: agent,
css: 'body div.zammad-form-modal .has-error [name="email"]',
)
set(
browser: agent,
css: 'body div.zammad-form-modal [name="email"]',
value: 'discard@znuny.com',
)
click(
browser: agent,
css: 'body div.zammad-form-modal button[type="submit"]',
)
watch_for(
browser: agent,
css: 'body div.zammad-form-modal',
value: 'Thank you for your inquiry',
)
# click on backgroud (not on thank you dialog)
element = agent.find_elements({ css: 'body div.zammad-form-modal' })[0]
agent.action.move_to(element, 200, 200).perform
agent.action.click.perform
customer = browser_instance
location(
browser: customer,
@ -59,7 +135,7 @@ class FormTest < TestCase
exists_not(
browser: customer,
css: 'body div.modal',
css: 'body div.zammad-form-modal',
)
# modal dialog
@ -69,28 +145,28 @@ class FormTest < TestCase
)
exists(
browser: customer,
css: 'body div.modal',
css: 'body div.zammad-form-modal',
)
# fill form valid data - but too fast
set(
browser: customer,
css: 'body div.modal [name="name"]',
css: 'body div.zammad-form-modal [name="name"]',
value: 'some name',
)
set(
browser: customer,
css: 'body div.modal [name="email"]',
css: 'body div.zammad-form-modal [name="email"]',
value: 'discard@znuny.com',
)
set(
browser: customer,
css: 'body div.modal [name="body"]',
css: 'body div.zammad-form-modal [name="body"]',
value: "some text\nnew line",
)
click(
browser: customer,
css: 'body div.modal button[type="submit"]',
css: 'body div.zammad-form-modal button[type="submit"]',
)
# check warning
@ -101,54 +177,54 @@ class FormTest < TestCase
# fill form invalid data - within correct time
set(
browser: customer,
css: 'body div.modal [name="name"]',
css: 'body div.zammad-form-modal [name="name"]',
value: 'some name',
)
set(
browser: customer,
css: 'body div.modal [name="email"]',
css: 'body div.zammad-form-modal [name="email"]',
value: 'invalid_email',
)
set(
browser: customer,
css: 'body div.modal [name="body"]',
css: 'body div.zammad-form-modal [name="body"]',
value: "some text\nnew line",
)
click(
browser: customer,
css: 'body div.modal button[type="submit"]',
css: 'body div.zammad-form-modal button[type="submit"]',
)
sleep 10
exists(
browser: customer,
css: 'body div.modal',
css: 'body div.zammad-form-modal',
)
# fill form valid data
set(
browser: customer,
css: 'body div.modal [name="email"]',
css: 'body div.zammad-form-modal [name="email"]',
value: 'discard@znuny.com',
)
click(
browser: customer,
css: 'body div.modal button[type="submit"]',
css: 'body div.zammad-form-modal button[type="submit"]',
)
watch_for(
browser: customer,
css: 'body div.modal',
css: 'body div.zammad-form-modal',
value: 'Thank you for your inquiry',
)
# click on backgroud (not on thank you dialog)
element = customer.find_elements({ css: 'body div.modal' })[0]
element = customer.find_elements({ css: 'body div.zammad-form-modal' })[0]
customer.action.move_to(element, 200, 200).perform
customer.action.click.perform
sleep 1
exists_not(
browser: customer,
css: 'body div.modal',
css: 'body div.zammad-form-modal',
)
# fill form invalid data - within correct time
@ -159,100 +235,100 @@ class FormTest < TestCase
sleep 10
set(
browser: customer,
css: 'body div.modal [name="name"]',
css: 'body div.zammad-form-modal [name="name"]',
value: '',
)
set(
browser: customer,
css: 'body div.modal [name="email"]',
css: 'body div.zammad-form-modal [name="email"]',
value: 'discard@znuny.com',
)
set(
browser: customer,
css: 'body div.modal [name="body"]',
css: 'body div.zammad-form-modal [name="body"]',
value: "some text\nnew line",
)
click(
browser: customer,
css: 'body div.modal button[type="submit"]',
css: 'body div.zammad-form-modal button[type="submit"]',
)
exists(
browser: customer,
css: 'body div.modal .has-error [name="name"]',
css: 'body div.zammad-form-modal .has-error [name="name"]',
)
set(
browser: customer,
css: 'body div.modal [name="name"]',
css: 'body div.zammad-form-modal [name="name"]',
value: 'some sender',
)
set(
browser: customer,
css: 'body div.modal [name="body"]',
css: 'body div.zammad-form-modal [name="body"]',
value: '',
)
click(
browser: customer,
css: 'body div.modal button[type="submit"]',
css: 'body div.zammad-form-modal button[type="submit"]',
)
exists(
browser: customer,
css: 'body div.modal .has-error [name="body"]',
css: 'body div.zammad-form-modal .has-error [name="body"]',
)
set(
browser: customer,
css: 'body div.modal [name="body"]',
css: 'body div.zammad-form-modal [name="body"]',
value: 'new body',
)
set(
browser: customer,
css: 'body div.modal [name="email"]',
css: 'body div.zammad-form-modal [name="email"]',
value: 'somebody@notexistinginanydomainspacealsonothere.nowhere',
)
click(
browser: customer,
css: 'body div.modal button[type="submit"]',
css: 'body div.zammad-form-modal button[type="submit"]',
)
exists(
browser: customer,
css: 'body div.modal .has-error [name="email"]',
css: 'body div.zammad-form-modal .has-error [name="email"]',
)
set(
browser: customer,
css: 'body div.modal [name="email"]',
css: 'body div.zammad-form-modal [name="email"]',
value: 'notexistinginanydomainspacealsonothere@znuny.com',
)
click(
browser: customer,
css: 'body div.modal button[type="submit"]',
css: 'body div.zammad-form-modal button[type="submit"]',
)
exists(
browser: customer,
css: 'body div.modal .has-error [name="email"]',
css: 'body div.zammad-form-modal .has-error [name="email"]',
)
set(
browser: customer,
css: 'body div.modal [name="email"]',
css: 'body div.zammad-form-modal [name="email"]',
value: 'discard@znuny.com',
)
click(
browser: customer,
css: 'body div.modal button[type="submit"]',
css: 'body div.zammad-form-modal button[type="submit"]',
)
watch_for(
browser: customer,
css: 'body div.modal',
css: 'body div.zammad-form-modal',
value: 'Thank you for your inquiry',
)
# click on backgroud (not on thank you dialog)
element = customer.find_elements({ css: 'body div.modal' })[0]
element = customer.find_elements({ css: 'body div.zammad-form-modal' })[0]
customer.action.move_to(element, 200, 200).perform
customer.action.click.perform
sleep 1
exists_not(
browser: customer,
css: 'body div.modal',
css: 'body div.zammad-form-modal',
)
# inline form