Browse Source

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

Martin Edenhofer 8 years ago
parent
commit
57a7e25cf1

+ 1 - 0
app/assets/javascripts/app/controllers/_channel/form.coffee

@@ -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')

+ 5 - 0
app/controllers/form_controller.rb

@@ -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

+ 11 - 2
public/assets/form/form.js

@@ -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
   }

+ 113 - 37
test/browser/form_test.rb

@@ -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