diff --git a/app/assets/javascripts/app/controllers/import_otrs.coffee b/app/assets/javascripts/app/controllers/import_otrs.coffee index 4ee161748..4d4aadf34 100644 --- a/app/assets/javascripts/app/controllers/import_otrs.coffee +++ b/app/assets/javascripts/app/controllers/import_otrs.coffee @@ -44,11 +44,6 @@ class Index extends App.ControllerContent if data.import_mode == true @showImportState() @updateMigration() - else - showDownload = => - @$('[data-slide=otrs-prepare]').toggleClass('hide') - @$('[data-slide=otrs-plugin]').toggleClass('hide') - @delay( showDownload, 2500 ) ) render: -> @@ -64,7 +59,6 @@ class Index extends App.ControllerContent @$('[data-slide=otrs-link]').toggleClass('hide') showImportState: => - @$('[data-slide=otrs-prepare]').addClass('hide') @$('[data-slide=otrs-plugin]').addClass('hide') @$('[data-slide=otrs-link]').addClass('hide') @$('[data-slide=otrs-import]').removeClass('hide') diff --git a/app/assets/javascripts/app/views/import/otrs.jst.eco b/app/assets/javascripts/app/views/import/otrs.jst.eco index 0f88fefea..2fe5bd78e 100644 --- a/app/assets/javascripts/app/views/import/otrs.jst.eco +++ b/app/assets/javascripts/app/views/import/otrs.jst.eco @@ -1,24 +1,13 @@
<%- @Icon('full-logo', 'wizard-logo') %>
-
-

<%- @T('Create OTRS Migration Plugin') %>

-
-

- <%- @T('Personalise Migration Plugin ...') %> -

-
- -
-
+

<%- @T('Download OTRS Migration Plugin') %>

- <%- @T('Download and install your personalised OTRS Migration Plugin on your OTRS System') %>: + <%- @T('Download and install the OTRS Migration Plugin on your OTRS System') %>:

- <%- @Icon('download') %> <%- @T('Personal Migration Plugin') %> + <%- @Icon('download') %> <%- @T('Migration Plugin') %>
<%- @T('Go Back') %> @@ -34,7 +23,7 @@
- +
<%- @Icon('diagonal-cross', 'icon-error') %> diff --git a/app/controllers/import_otrs_controller.rb b/app/controllers/import_otrs_controller.rb index 197073a75..5219e44d0 100644 --- a/app/controllers/import_otrs_controller.rb +++ b/app/controllers/import_otrs_controller.rb @@ -9,7 +9,7 @@ class ImportOtrsController < ApplicationController if !params[:url] || params[:url] !~ %r{^(http|https)://.+?$} render json: { result: 'invalid', - message: 'Invalid!', + message: 'Invalid URL!', } return end @@ -22,8 +22,10 @@ class ImportOtrsController < ApplicationController 'Connection refused' => 'Connection refused!', } - # try connecting to otrs - response = UserAgent.request(params[:url]) + url_parts = params[:url].split(';') + + response = UserAgent.request( url_parts[0] ) + if !response.success? && response.code.to_s !~ /^40.$/ message_human = '' translation_map.each {|key, message| @@ -39,34 +41,32 @@ class ImportOtrsController < ApplicationController return end - message_human = 'Host found, but it seems to be no OTRS installation!' - suffixes = ['/public.pl', '/otrs/public.pl'] - suffixes.each {|suffix| - url = params[:url] + suffix + '?Action=ZammadMigrator' - # strip multiple / in url - url.gsub!(%r{([^:])(/+/)}, '\\1/') - response = UserAgent.request( url ) + result = {} + if response.body =~ /zammad migrator/ + + key_parts = url_parts[1].split('=') - #Setting.set('import_mode', true) Setting.set('import_backend', 'otrs') - Setting.set('import_otrs_endpoint', url) - Setting.set('import_otrs_endpoint_key', '01234567899876543210') - if response.body =~ /zammad migrator/ - render json: { - url: url, - result: 'ok', - } - return # rubocop:disable Lint/NonLocalExitFromIterator - elsif response.body =~ /(otrs\sag|otrs.com|otrs.org)/i - message_human = 'Host found, but no OTRS migrator is installed!' - end - } + Setting.set('import_otrs_endpoint', url_parts[0]) + Setting.set('import_otrs_endpoint_key', key_parts[1]) - # return result - render json: { - result: 'invalid', - message_human: message_human, - } + result = { + result: 'ok', + url: params[:url], + } + elsif response.body =~ /(otrs\sag|otrs\.com|otrs\.org)/i + result = { + result: 'invalid', + message_human: 'Host found, but no OTRS migrator is installed!' + } + else + result = { + result: 'invalid', + message_human: 'Host found, but it seems to be no OTRS installation!', + } + end + + render json: result end def import_start @@ -91,7 +91,7 @@ class ImportOtrsController < ApplicationController end def import_status - return if setup_done_response + # return if setup_done_response state = Import::OTRS.current_state diff --git a/test/integration/otrs_import_browser_test.rb b/test/integration/otrs_import_browser_test.rb index 7ca777e46..816f56d47 100644 --- a/test/integration/otrs_import_browser_test.rb +++ b/test/integration/otrs_import_browser_test.rb @@ -3,9 +3,28 @@ require 'browser_test_helper' class OtrsImportBrowserTest < TestCase def test_import + + if !ENV['IMPORT_BT_OTRS_ENDPOINT'] + fail "ERROR: Need IMPORT_BT_OTRS_ENDPOINT - hint IMPORT_BT_OTRS_ENDPOINT='http://vz305.demo.znuny.com/otrs/public.pl?Action=ZammadMigrator'" + end + if !ENV['IMPORT_BT_OTRS_ENDPOINT_KEY'] + fail "ERROR: Need IMPORT_BT_OTRS_ENDPOINT_KEY - hint IMPORT_BT_OTRS_ENDPOINT_KEY='01234567899876543210'" + end + + import_url = "#{ENV['IMPORT_BT_OTRS_ENDPOINT']};Key=#{ENV['IMPORT_BT_OTRS_ENDPOINT_KEY']}" + @browser = browser_instance location(url: browser_url) + click(css: 'a[href="#import"]') + + click(css: 'a[href="#import/otrs"]') + + set( + css: '#otrs-link', + value: import_url + ) + watch_for( css: 'body', value: 'xxxx',