duodealer_app 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.!66854!duodealer_app.gemspec +0 -0
- data/.babelrc +5 -0
- data/.gitignore +16 -0
- data/.nvmrc +1 -0
- data/.rubocop.yml +263 -0
- data/.ruby-version +1 -0
- data/.travis.yml +27 -0
- data/Gemfile +8 -0
- data/LICENSE +19 -0
- data/README.md +553 -0
- data/Rakefile +6 -0
- data/app/assets/images/storage_access.svg +2 -0
- data/app/assets/javascripts/duodealer_app/enable_cookies.js +3 -0
- data/app/assets/javascripts/duodealer_app/itp_helper.js +40 -0
- data/app/assets/javascripts/duodealer_app/partition_cookies.js +8 -0
- data/app/assets/javascripts/duodealer_app/redirect.js +33 -0
- data/app/assets/javascripts/duodealer_app/request_storage_access.js +3 -0
- data/app/assets/javascripts/duodealer_app/storage_access.js +153 -0
- data/app/assets/javascripts/duodealer_app/storage_access_redirect.js +17 -0
- data/app/assets/javascripts/duodealer_app/top_level.js +2 -0
- data/app/assets/javascripts/duodealer_app/top_level_interaction.js +11 -0
- data/app/controllers/concerns/duodealer_app/authenticated.rb +15 -0
- data/app/controllers/concerns/duodealer_app/authenticated.rb-e +15 -0
- data/app/controllers/duodealer_app/authenticated_controller.rb +9 -0
- data/app/controllers/duodealer_app/authenticated_controller.rb-e +9 -0
- data/app/controllers/duodealer_app/callback_controller.rb +104 -0
- data/app/controllers/duodealer_app/callback_controller.rb-e +104 -0
- data/app/controllers/duodealer_app/extension_verification_controller.rb +19 -0
- data/app/controllers/duodealer_app/extension_verification_controller.rb-e +19 -0
- data/app/controllers/duodealer_app/sessions_controller.rb +159 -0
- data/app/controllers/duodealer_app/sessions_controller.rb-e +159 -0
- data/app/controllers/duodealer_app/webhooks_controller.rb +37 -0
- data/app/controllers/duodealer_app/webhooks_controller.rb-e +37 -0
- data/app/views/duodealer_app/partials/_button_styles.html.erb +104 -0
- data/app/views/duodealer_app/partials/_button_styles.html.erb-e +104 -0
- data/app/views/duodealer_app/partials/_card_styles.html.erb +33 -0
- data/app/views/duodealer_app/partials/_card_styles.html.erb-e +33 -0
- data/app/views/duodealer_app/partials/_empty_state_styles.html.erb +129 -0
- data/app/views/duodealer_app/partials/_empty_state_styles.html.erb-e +129 -0
- data/app/views/duodealer_app/partials/_layout_styles.html.erb +167 -0
- data/app/views/duodealer_app/partials/_layout_styles.html.erb-e +167 -0
- data/app/views/duodealer_app/partials/_typography_styles.html.erb +35 -0
- data/app/views/duodealer_app/partials/_typography_styles.html.erb-e +35 -0
- data/app/views/duodealer_app/sessions/enable_cookies.html.erb +75 -0
- data/app/views/duodealer_app/sessions/enable_cookies.html.erb-e +75 -0
- data/app/views/duodealer_app/sessions/new.html.erb +123 -0
- data/app/views/duodealer_app/sessions/new.html.erb-e +123 -0
- data/app/views/duodealer_app/sessions/request_storage_access.html.erb +68 -0
- data/app/views/duodealer_app/sessions/request_storage_access.html.erb-e +68 -0
- data/app/views/duodealer_app/sessions/top_level_interaction.html.erb +64 -0
- data/app/views/duodealer_app/sessions/top_level_interaction.html.erb-e +64 -0
- data/app/views/duodealer_app/shared/redirect.html.erb +23 -0
- data/app/views/duodealer_app/shared/redirect.html.erb-e +23 -0
- data/config/locales/cs.yml +23 -0
- data/config/locales/da.yml +20 -0
- data/config/locales/de.yml +22 -0
- data/config/locales/en.yml +15 -0
- data/config/locales/es.yml +22 -0
- data/config/locales/fi.yml +20 -0
- data/config/locales/fr.yml +23 -0
- data/config/locales/hi.yml +23 -0
- data/config/locales/it.yml +21 -0
- data/config/locales/ja.yml +17 -0
- data/config/locales/ko.yml +19 -0
- data/config/locales/ms.yml +22 -0
- data/config/locales/nb.yml +21 -0
- data/config/locales/nl.yml +21 -0
- data/config/locales/pl.yml +21 -0
- data/config/locales/pt-BR.yml +21 -0
- data/config/locales/pt-PT.yml +22 -0
- data/config/locales/sv.yml +21 -0
- data/config/locales/th.yml +20 -0
- data/config/locales/tr.yml +22 -0
- data/config/locales/zh-CN.yml +16 -0
- data/config/locales/zh-TW.yml +16 -0
- data/config/routes.rb +22 -0
- data/docs/.!20385!test-your-app.png +0 -0
- data/docs/.!20388!install-on-dev-shop.png +0 -0
- data/docs/.!62511!test-your-app.png +0 -0
- data/docs/.!62512!install-on-dev-shop.png +0 -0
- data/docs/.!62763!test-your-app.png +0 -0
- data/docs/.!62765!install-on-dev-shop.png +0 -0
- data/docs/.!63018!test-your-app.png +0 -0
- data/docs/.!63020!install-on-dev-shop.png +0 -0
- data/docs/.!63289!test-your-app.png +0 -0
- data/docs/.!63291!install-on-dev-shop.png +0 -0
- data/docs/.!63562!test-your-app.png +0 -0
- data/docs/.!63564!install-on-dev-shop.png +0 -0
- data/docs/.!63872!test-your-app.png +0 -0
- data/docs/.!63874!install-on-dev-shop.png +0 -0
- data/docs/.!64151!test-your-app.png +0 -0
- data/docs/.!64153!install-on-dev-shop.png +0 -0
- data/docs/.!64428!test-your-app.png +0 -0
- data/docs/.!64431!install-on-dev-shop.png +0 -0
- data/docs/.!64737!test-your-app.png +0 -0
- data/docs/.!64740!install-on-dev-shop.png +0 -0
- data/docs/.!65025!test-your-app.png +0 -0
- data/docs/.!65028!install-on-dev-shop.png +0 -0
- data/docs/.!65324!test-your-app.png +0 -0
- data/docs/.!65327!install-on-dev-shop.png +0 -0
- data/docs/.!65626!test-your-app.png +0 -0
- data/docs/.!65629!install-on-dev-shop.png +0 -0
- data/docs/.!65942!test-your-app.png +0 -0
- data/docs/.!65945!install-on-dev-shop.png +0 -0
- data/docs/.!66760!test-your-app.png +0 -0
- data/docs/.!66763!install-on-dev-shop.png +0 -0
- data/docs/.!67028!test-your-app.png +0 -0
- data/docs/.!67031!install-on-dev-shop.png +0 -0
- data/docs/.!67657!test-your-app.png +0 -0
- data/docs/.!67660!install-on-dev-shop.png +0 -0
- data/docs/.!68031!test-your-app.png +0 -0
- data/docs/.!68034!install-on-dev-shop.png +0 -0
- data/docs/.!68363!test-your-app.png +0 -0
- data/docs/.!68366!install-on-dev-shop.png +0 -0
- data/docs/Quickstart.md +103 -0
- data/docs/Releasing.md +17 -0
- data/docs/Troubleshooting.md +16 -0
- data/docs/install-on-dev-shop.png +0 -0
- data/docs/test-your-app.png +0 -0
- data/duodealer_app.gemspec +34 -0
- data/images/.!20334!app-proxy-screenshot.png +0 -0
- data/images/.!62504!app-proxy-screenshot.png +0 -0
- data/images/.!62754!app-proxy-screenshot.png +0 -0
- data/images/.!63008!app-proxy-screenshot.png +0 -0
- data/images/.!63277!app-proxy-screenshot.png +0 -0
- data/images/.!63548!app-proxy-screenshot.png +0 -0
- data/images/.!63855!app-proxy-screenshot.png +0 -0
- data/images/.!64132!app-proxy-screenshot.png +0 -0
- data/images/.!64407!app-proxy-screenshot.png +0 -0
- data/images/.!64714!app-proxy-screenshot.png +0 -0
- data/images/.!65000!app-proxy-screenshot.png +0 -0
- data/images/.!65296!app-proxy-screenshot.png +0 -0
- data/images/.!65594!app-proxy-screenshot.png +0 -0
- data/images/.!65908!app-proxy-screenshot.png +0 -0
- data/images/.!66724!app-proxy-screenshot.png +0 -0
- data/images/.!66989!app-proxy-screenshot.png +0 -0
- data/images/.!67614!app-proxy-screenshot.png +0 -0
- data/images/.!67986!app-proxy-screenshot.png +0 -0
- data/images/.!68314!app-proxy-screenshot.png +0 -0
- data/images/app-proxy-screenshot.png +0 -0
- data/karma.conf.js +44 -0
- data/lib/duodealer_app.rb +54 -0
- data/lib/duodealer_app/configuration.rb +85 -0
- data/lib/duodealer_app/controller_concerns/app_proxy_verification.rb +39 -0
- data/lib/duodealer_app/controller_concerns/embedded_app.rb +20 -0
- data/lib/duodealer_app/controller_concerns/itp.rb +44 -0
- data/lib/duodealer_app/controller_concerns/localization.rb +23 -0
- data/lib/duodealer_app/controller_concerns/login_protection.rb +180 -0
- data/lib/duodealer_app/controller_concerns/webhook_verification.rb +39 -0
- data/lib/duodealer_app/engine.rb +22 -0
- data/lib/duodealer_app/jobs/scripttags_manager_job.rb +17 -0
- data/lib/duodealer_app/jobs/webhooks_manager_job.rb +17 -0
- data/lib/duodealer_app/managers/scripttags_manager.rb +78 -0
- data/lib/duodealer_app/managers/webhooks_manager.rb +62 -0
- data/lib/duodealer_app/middleware/same_site_cookie_middleware.rb +69 -0
- data/lib/duodealer_app/session/in_memory_session_store.rb +29 -0
- data/lib/duodealer_app/session/session_repository.rb +33 -0
- data/lib/duodealer_app/session/session_storage.rb +31 -0
- data/lib/duodealer_app/session/storage_strategies/shop_storage_strategy.rb +25 -0
- data/lib/duodealer_app/session/storage_strategies/user_storage_strategy.rb +26 -0
- data/lib/duodealer_app/utils.rb +24 -0
- data/lib/duodealer_app/version.rb +5 -0
- data/lib/generators/duodealer_app/add_after_authenticate_job/add_after_authenticate_job_generator.rb +46 -0
- data/lib/generators/duodealer_app/add_after_authenticate_job/templates/after_authenticate_job.rb +10 -0
- data/lib/generators/duodealer_app/add_marketing_activity_extension/add_marketing_activity_extension_generator.rb +40 -0
- data/lib/generators/duodealer_app/add_marketing_activity_extension/templates/marketing_activities_controller.rb +62 -0
- data/lib/generators/duodealer_app/add_webhook/add_webhook_generator.rb +69 -0
- data/lib/generators/duodealer_app/add_webhook/templates/webhook_job.rb +8 -0
- data/lib/generators/duodealer_app/app_proxy_controller/app_proxy_controller_generator.rb +27 -0
- data/lib/generators/duodealer_app/app_proxy_controller/templates/app_proxy_controller.rb +9 -0
- data/lib/generators/duodealer_app/app_proxy_controller/templates/app_proxy_route.rb +10 -0
- data/lib/generators/duodealer_app/app_proxy_controller/templates/index.html.erb +19 -0
- data/lib/generators/duodealer_app/authenticated_controller/authenticated_controller_generator.rb +15 -0
- data/lib/generators/duodealer_app/authenticated_controller/templates/authenticated_controller.rb +5 -0
- data/lib/generators/duodealer_app/controllers/controllers_generator.rb +30 -0
- data/lib/generators/duodealer_app/duodealer_app_generator.rb +19 -0
- data/lib/generators/duodealer_app/home_controller/home_controller_generator.rb +27 -0
- data/lib/generators/duodealer_app/home_controller/templates/home_controller.rb +8 -0
- data/lib/generators/duodealer_app/home_controller/templates/index.html.erb +21 -0
- data/lib/generators/duodealer_app/install/install_generator.rb +83 -0
- data/lib/generators/duodealer_app/install/templates/_flash_messages.html.erb +3 -0
- data/lib/generators/duodealer_app/install/templates/duodealer_app.js +15 -0
- data/lib/generators/duodealer_app/install/templates/duodealer_app.rb +15 -0
- data/lib/generators/duodealer_app/install/templates/duodealer_app_index.js +2 -0
- data/lib/generators/duodealer_app/install/templates/duodealer_provider.rb +20 -0
- data/lib/generators/duodealer_app/install/templates/embedded_app.html.erb +41 -0
- data/lib/generators/duodealer_app/install/templates/flash_messages.js +26 -0
- data/lib/generators/duodealer_app/install/templates/omniauth.rb +2 -0
- data/lib/generators/duodealer_app/install/templates/session_store.rb +4 -0
- data/lib/generators/duodealer_app/install/templates/user_agent.rb +5 -0
- data/lib/generators/duodealer_app/rotate_duodealer_token_job/rotate_duodealer_token_job_generator.rb +16 -0
- data/lib/generators/duodealer_app/rotate_duodealer_token_job/templates/rotate_duodealer_token.rake +17 -0
- data/lib/generators/duodealer_app/rotate_duodealer_token_job/templates/rotate_duodealer_token_job.rb +42 -0
- data/lib/generators/duodealer_app/routes/routes_generator.rb +32 -0
- data/lib/generators/duodealer_app/routes/templates/routes.rb +11 -0
- data/lib/generators/duodealer_app/shop_model/shop_model_generator.rb +39 -0
- data/lib/generators/duodealer_app/shop_model/templates/db/migrate/create_shops.erb +15 -0
- data/lib/generators/duodealer_app/shop_model/templates/shop.rb +7 -0
- data/lib/generators/duodealer_app/shop_model/templates/shops.yml +3 -0
- data/lib/generators/duodealer_app/user_model/templates/db/migrate/create_users.erb +16 -0
- data/lib/generators/duodealer_app/user_model/templates/user.rb +7 -0
- data/lib/generators/duodealer_app/user_model/templates/users.yml +4 -0
- data/lib/generators/duodealer_app/user_model/user_model_generator.rb +39 -0
- data/lib/generators/duodealer_app/views/views_generator.rb +30 -0
- data/package-lock.json +7224 -0
- data/package.json +28 -0
- data/shipit.rubygems.yml +4 -0
- data/translation.yml +7 -0
- data/webpack.config.js +24 -0
- data/yarn.lock +5263 -0
- metadata +447 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="<%= I18n.locale %>">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<base target="_top">
|
|
7
|
+
<title>Redirecting…</title>
|
|
8
|
+
<%= render 'duodealer_app/partials/layout_styles' %>
|
|
9
|
+
<%= render 'duodealer_app/partials/typography_styles' %>
|
|
10
|
+
<%= render 'duodealer_app/partials/card_styles' %>
|
|
11
|
+
<%= render 'duodealer_app/partials/button_styles' %>
|
|
12
|
+
<style>
|
|
13
|
+
#RequestStorageAccess {
|
|
14
|
+
display: none;
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
<body>
|
|
19
|
+
<%=
|
|
20
|
+
content_tag(:div, nil,
|
|
21
|
+
id: 'redirection-target',
|
|
22
|
+
data: {
|
|
23
|
+
target: {
|
|
24
|
+
duodealerUrl: "https://#{current_duodealer_domain}",
|
|
25
|
+
hasStorageAccessUrl: "#{has_storage_access_url}",
|
|
26
|
+
doesNotHaveStorageAccessUrl: "#{does_not_have_storage_access_url}",
|
|
27
|
+
appTargetUrl: "#{app_target_url}"
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
)
|
|
31
|
+
%>
|
|
32
|
+
<main id="RequestStorageAccess">
|
|
33
|
+
<div class="Polaris-Page">
|
|
34
|
+
<div class="Polaris-Page__Content">
|
|
35
|
+
<div class="Polaris-Layout">
|
|
36
|
+
<div class="Polaris-Layout__Section">
|
|
37
|
+
<div class="Polaris-Stack Polaris-Stack--vertical">
|
|
38
|
+
<div class="Polaris-Stack__Item">
|
|
39
|
+
<div class="Polaris-Card">
|
|
40
|
+
<div class="Polaris-Card__Header">
|
|
41
|
+
<h1 class="Polaris-Heading"><%= I18n.t('request_storage_access_heading', app: DuodealerApp.configuration.application_name) %></h1>
|
|
42
|
+
</div>
|
|
43
|
+
<div class="Polaris-Card__Section">
|
|
44
|
+
<p><%= I18n.t('request_storage_access_body', app: DuodealerApp.configuration.application_name) %></p>
|
|
45
|
+
</div>
|
|
46
|
+
<div class="Polaris-Card__Section Polaris-Card__Section--subdued">
|
|
47
|
+
<p><%= I18n.t('request_storage_access_footer') %></p>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
<div class="Polaris-Stack__Item">
|
|
52
|
+
<div class="Polaris-Stack Polaris-Stack--distributionTrailing">
|
|
53
|
+
<div class="Polaris-Stack__Item">
|
|
54
|
+
<button type="button" class="Polaris-Button Polaris-Button--primary" id="TriggerAllowCookiesPrompt">
|
|
55
|
+
<span class="Polaris-Button__Content"><span><%= I18n.t('request_storage_access_action') %></span></span>
|
|
56
|
+
</button>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
</main>
|
|
66
|
+
<%= javascript_include_tag('duodealer_app/request_storage_access', crossorigin: 'anonymous', integrity: true) %>
|
|
67
|
+
</body>
|
|
68
|
+
</html>
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="<%= I18n.locale %>">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<base target="_top">
|
|
7
|
+
<title>Redirecting…</title>
|
|
8
|
+
<%= render 'duodealer_app/partials/layout_styles' %>
|
|
9
|
+
<%= render 'duodealer_app/partials/typography_styles' %>
|
|
10
|
+
<%= render 'duodealer_app/partials/card_styles' %>
|
|
11
|
+
<%= render 'duodealer_app/partials/button_styles' %>
|
|
12
|
+
<style>
|
|
13
|
+
#RequestStorageAccess {
|
|
14
|
+
display: none;
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
<body>
|
|
19
|
+
<%=
|
|
20
|
+
content_tag(:div, nil,
|
|
21
|
+
id: 'redirection-target',
|
|
22
|
+
data: {
|
|
23
|
+
target: {
|
|
24
|
+
duodealerUrl: "https://#{current_duodealer_domain}",
|
|
25
|
+
hasStorageAccessUrl: "#{has_storage_access_url}",
|
|
26
|
+
doesNotHaveStorageAccessUrl: "#{does_not_have_storage_access_url}",
|
|
27
|
+
appTargetUrl: "#{app_target_url}"
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
)
|
|
31
|
+
%>
|
|
32
|
+
<main id="RequestStorageAccess">
|
|
33
|
+
<div class="Polaris-Page">
|
|
34
|
+
<div class="Polaris-Page__Content">
|
|
35
|
+
<div class="Polaris-Layout">
|
|
36
|
+
<div class="Polaris-Layout__Section">
|
|
37
|
+
<div class="Polaris-Stack Polaris-Stack--vertical">
|
|
38
|
+
<div class="Polaris-Stack__Item">
|
|
39
|
+
<div class="Polaris-Card">
|
|
40
|
+
<div class="Polaris-Card__Header">
|
|
41
|
+
<h1 class="Polaris-Heading"><%= I18n.t('request_storage_access_heading', app: DuodealerApp.configuration.application_name) %></h1>
|
|
42
|
+
</div>
|
|
43
|
+
<div class="Polaris-Card__Section">
|
|
44
|
+
<p><%= I18n.t('request_storage_access_body', app: DuodealerApp.configuration.application_name) %></p>
|
|
45
|
+
</div>
|
|
46
|
+
<div class="Polaris-Card__Section Polaris-Card__Section--subdued">
|
|
47
|
+
<p><%= I18n.t('request_storage_access_footer') %></p>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
<div class="Polaris-Stack__Item">
|
|
52
|
+
<div class="Polaris-Stack Polaris-Stack--distributionTrailing">
|
|
53
|
+
<div class="Polaris-Stack__Item">
|
|
54
|
+
<button type="button" class="Polaris-Button Polaris-Button--primary" id="TriggerAllowCookiesPrompt">
|
|
55
|
+
<span class="Polaris-Button__Content"><span><%= I18n.t('request_storage_access_action') %></span></span>
|
|
56
|
+
</button>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
</main>
|
|
66
|
+
<%= javascript_include_tag('duodealer_app/request_storage_access', crossorigin: 'anonymous', integrity: true) %>
|
|
67
|
+
</body>
|
|
68
|
+
</html>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="<%= I18n.locale %>">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<base target="_top">
|
|
7
|
+
<title>Redirecting…</title>
|
|
8
|
+
<%= render 'duodealer_app/partials/layout_styles' %>
|
|
9
|
+
<%= render 'duodealer_app/partials/typography_styles' %>
|
|
10
|
+
<%= render 'duodealer_app/partials/button_styles' %>
|
|
11
|
+
<%= render 'duodealer_app/partials/empty_state_styles' %>
|
|
12
|
+
<style>
|
|
13
|
+
#TopLevelInteractionContent {
|
|
14
|
+
display: none;
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
|
|
18
|
+
<script>
|
|
19
|
+
window.apiKey = "<%= DuodealerApp.configuration.api_key %>";
|
|
20
|
+
window.shopOrigin = "https://<%= @shop %>";
|
|
21
|
+
window.redirectUrl = "<%= @url %>";
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<%= javascript_include_tag('duodealer_app/top_level', crossorigin: 'anonymous', integrity: true) %>
|
|
25
|
+
</head>
|
|
26
|
+
<body>
|
|
27
|
+
<main id="TopLevelInteractionContent">
|
|
28
|
+
<div class="Polaris-Page">
|
|
29
|
+
<div class="Polaris-Page__Content">
|
|
30
|
+
<div class="Polaris-Layout">
|
|
31
|
+
<div class="Polaris-Layout__Section">
|
|
32
|
+
<div class="Polaris-Stack Polaris-Stack--vertical">
|
|
33
|
+
<div class="Polaris-Stack__Item">
|
|
34
|
+
<div class="Polaris-EmptyState">
|
|
35
|
+
<div class="Polaris-EmptyState__Section">
|
|
36
|
+
<div class="Polaris-EmptyState__DetailsContainer">
|
|
37
|
+
<div class="Polaris-EmptyState__Details">
|
|
38
|
+
<div class="Polaris-TextContainer">
|
|
39
|
+
<h1 class="Polaris-DisplayText Polaris-DisplayText--sizeMedium"><%= I18n.t('top_level_interaction_heading', app: DuodealerApp.configuration.application_name) %></h1>
|
|
40
|
+
<div class="Polaris-EmptyState__Content">
|
|
41
|
+
<p><%= I18n.t('top_level_interaction_body', app: DuodealerApp.configuration.application_name) %></p>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="Polaris-EmptyState__Actions">
|
|
45
|
+
<div class="Polaris-Stack Polaris-Stack--alignmentCenter">
|
|
46
|
+
<div class="Polaris-Stack__Item"><button type="button" id="TopLevelInteractionButton" class="Polaris-Button Polaris-Button--primary Polaris-Button--sizeLarge"><span class="Polaris-Button__Content"><span class="Polaris-Button__Icon"></span><span><%= I18n.t('top_level_interaction_action') %></span></span></button></div>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
<div class="Polaris-EmptyState__ImageContainer">
|
|
52
|
+
<%= image_tag 'storage_access.svg', role: "presentation", alt: "", class: "Polaris-EmptyState__Image" %>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</main>
|
|
63
|
+
</body>
|
|
64
|
+
</html>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="<%= I18n.locale %>">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<base target="_top">
|
|
7
|
+
<title>Redirecting…</title>
|
|
8
|
+
<%= render 'duodealer_app/partials/layout_styles' %>
|
|
9
|
+
<%= render 'duodealer_app/partials/typography_styles' %>
|
|
10
|
+
<%= render 'duodealer_app/partials/button_styles' %>
|
|
11
|
+
<%= render 'duodealer_app/partials/empty_state_styles' %>
|
|
12
|
+
<style>
|
|
13
|
+
#TopLevelInteractionContent {
|
|
14
|
+
display: none;
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
|
|
18
|
+
<script>
|
|
19
|
+
window.apiKey = "<%= DuodealerApp.configuration.api_key %>";
|
|
20
|
+
window.shopOrigin = "https://<%= @shop %>";
|
|
21
|
+
window.redirectUrl = "<%= @url %>";
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<%= javascript_include_tag('duodealer_app/top_level', crossorigin: 'anonymous', integrity: true) %>
|
|
25
|
+
</head>
|
|
26
|
+
<body>
|
|
27
|
+
<main id="TopLevelInteractionContent">
|
|
28
|
+
<div class="Polaris-Page">
|
|
29
|
+
<div class="Polaris-Page__Content">
|
|
30
|
+
<div class="Polaris-Layout">
|
|
31
|
+
<div class="Polaris-Layout__Section">
|
|
32
|
+
<div class="Polaris-Stack Polaris-Stack--vertical">
|
|
33
|
+
<div class="Polaris-Stack__Item">
|
|
34
|
+
<div class="Polaris-EmptyState">
|
|
35
|
+
<div class="Polaris-EmptyState__Section">
|
|
36
|
+
<div class="Polaris-EmptyState__DetailsContainer">
|
|
37
|
+
<div class="Polaris-EmptyState__Details">
|
|
38
|
+
<div class="Polaris-TextContainer">
|
|
39
|
+
<h1 class="Polaris-DisplayText Polaris-DisplayText--sizeMedium"><%= I18n.t('top_level_interaction_heading', app: DuodealerApp.configuration.application_name) %></h1>
|
|
40
|
+
<div class="Polaris-EmptyState__Content">
|
|
41
|
+
<p><%= I18n.t('top_level_interaction_body', app: DuodealerApp.configuration.application_name) %></p>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="Polaris-EmptyState__Actions">
|
|
45
|
+
<div class="Polaris-Stack Polaris-Stack--alignmentCenter">
|
|
46
|
+
<div class="Polaris-Stack__Item"><button type="button" id="TopLevelInteractionButton" class="Polaris-Button Polaris-Button--primary Polaris-Button--sizeLarge"><span class="Polaris-Button__Content"><span class="Polaris-Button__Icon"></span><span><%= I18n.t('top_level_interaction_action') %></span></span></button></div>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
<div class="Polaris-EmptyState__ImageContainer">
|
|
52
|
+
<%= image_tag 'storage_access.svg', role: "presentation", alt: "", class: "Polaris-EmptyState__Image" %>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</main>
|
|
63
|
+
</body>
|
|
64
|
+
</html>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<base target="_top">
|
|
7
|
+
<title>Redirecting…</title>
|
|
8
|
+
<%= javascript_include_tag('duodealer_app/redirect', crossorigin: 'anonymous', integrity: true) %>
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<%=
|
|
12
|
+
content_tag(:div, nil,
|
|
13
|
+
id: 'redirection-target',
|
|
14
|
+
data: {
|
|
15
|
+
target: {
|
|
16
|
+
duodealerUrl: "https://#{current_duodealer_domain}",
|
|
17
|
+
url: url,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
)
|
|
21
|
+
%>
|
|
22
|
+
</body>
|
|
23
|
+
</html>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<base target="_top">
|
|
7
|
+
<title>Redirecting…</title>
|
|
8
|
+
<%= javascript_include_tag('duodealer_app/redirect', crossorigin: 'anonymous', integrity: true) %>
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<%=
|
|
12
|
+
content_tag(:div, nil,
|
|
13
|
+
id: 'redirection-target',
|
|
14
|
+
data: {
|
|
15
|
+
target: {
|
|
16
|
+
duodealerUrl: "https://#{current_duodealer_domain}",
|
|
17
|
+
url: url,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
)
|
|
21
|
+
%>
|
|
22
|
+
</body>
|
|
23
|
+
</html>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
cs:
|
|
3
|
+
logged_out: Odhlášení proběhlo úspěšně
|
|
4
|
+
could_not_log_in: Nelze se přihlásit do obchodu Duo Dealer
|
|
5
|
+
invalid_shop_url: Neplatná doména obchodu
|
|
6
|
+
enable_cookies_heading: Zapnout soubory cookie z aplikace %{app}
|
|
7
|
+
enable_cookies_body: Pokud chcete v Duo Dealer používat aplikaci %{app}, musíte soubory
|
|
8
|
+
cookie v tomto prohlížeči povolit ručně.
|
|
9
|
+
enable_cookies_footer: Soubory cookie umožňují, aby vás aplikace ověřila pomocí
|
|
10
|
+
dočasného uchování preferencí a osobních údajů. Jejich platnost vyprší po 30 dnech.
|
|
11
|
+
enable_cookies_action: Povolit soubory cookie
|
|
12
|
+
top_level_interaction_heading: Váš prohlížeč potřebuje ověřit aplikaci %{app}
|
|
13
|
+
top_level_interaction_body: Váš prohlížeč vyžaduje, aby si od vás aplikace, jako
|
|
14
|
+
je %{app}, nejdřív vyžádaly přístup k souborům cookie, než je pro vás Duo Dealer
|
|
15
|
+
otevře.
|
|
16
|
+
top_level_interaction_action: Pokračovat
|
|
17
|
+
request_storage_access_heading: Aplikace %{app} potřebuje získat přístup k souborům
|
|
18
|
+
cookie
|
|
19
|
+
request_storage_access_body: Tato aplikace vám umožní ověření prostřednictvím dočasného
|
|
20
|
+
uchování vašich osobních údajů. Pokud chcete používat tuto aplikaci, klikněte
|
|
21
|
+
na tlačítko Pokračovat a povolte soubory cookie.
|
|
22
|
+
request_storage_access_footer: Platnost souborů cookie vyprší po 30 dnech.
|
|
23
|
+
request_storage_access_action: Pokračovat
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
da:
|
|
3
|
+
logged_out: Logget ud
|
|
4
|
+
could_not_log_in: Kunne ikke logge ind på Duo Dealer-butik
|
|
5
|
+
invalid_shop_url: Ugyldig butiksdomæne
|
|
6
|
+
enable_cookies_heading: Aktivér cookies fra %{app}
|
|
7
|
+
enable_cookies_body: Du skal manuelt aktivere cookies i denne browser for at kunne
|
|
8
|
+
bruge %{app} i Duo Dealer.
|
|
9
|
+
enable_cookies_footer: Cookies lader appen godkende dig ved at gemme dine præferencer
|
|
10
|
+
og personlige oplysninger midlertidigt. De udløber efter 30 dage.
|
|
11
|
+
enable_cookies_action: Aktivér cookies
|
|
12
|
+
top_level_interaction_heading: Din browser skal godkende %{app}
|
|
13
|
+
top_level_interaction_body: Din browser kræver, at apps som f.eks. %{app} spørger
|
|
14
|
+
dig om adgang til cookies, inden Duo Dealer kan åbne den for dig.
|
|
15
|
+
top_level_interaction_action: Fortsæt
|
|
16
|
+
request_storage_access_heading: "%{app} skal have adgang til cookies"
|
|
17
|
+
request_storage_access_body: Det lader appen godkende dig ved at gemme dine personlige
|
|
18
|
+
oplysninger midlertidigt. Klik på forsæt, og tillad cookies for at bruge appen.
|
|
19
|
+
request_storage_access_footer: Cookies udløber efter 30 dage.
|
|
20
|
+
request_storage_access_action: Fortsæt
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
de:
|
|
3
|
+
logged_out: Erfolgreich ausgelogt
|
|
4
|
+
could_not_log_in: Duo Dealer Store Login fehlgeschlagen
|
|
5
|
+
invalid_shop_url: Ungültige Shop-Domain
|
|
6
|
+
enable_cookies_heading: Cookies von %{app} aktivieren
|
|
7
|
+
enable_cookies_body: Sie müssen Cookies in diesem Browser manuell aktivieren, um
|
|
8
|
+
%{app} in Duo Dealer verwenden zu können.
|
|
9
|
+
enable_cookies_footer: Mithilfe von Cookies kann die App Sie authentifizieren, indem
|
|
10
|
+
Ihre Einstellungen und personenbezogenen Daten vorübergehend gespeichert werden.
|
|
11
|
+
Sie laufen nach 30 Tagen ab.
|
|
12
|
+
enable_cookies_action: Cookies aktivieren
|
|
13
|
+
top_level_interaction_heading: Ihr Browser muss %{app} authentifizieren
|
|
14
|
+
top_level_interaction_body: Ihr Browser verlangt, dass Apps wie %{app} Sie um Zugriff
|
|
15
|
+
auf Cookies bitten, bevor Duo Dealer sie für Sie öffnen kann.
|
|
16
|
+
top_level_interaction_action: Weiter
|
|
17
|
+
request_storage_access_heading: "%{app} braucht Zugriff auf Cookies"
|
|
18
|
+
request_storage_access_body: Damit kann die App Sie authentifizieren, indem Ihre
|
|
19
|
+
Einstellungen und personenbezogenen Daten vorübergehend gespeichert werden. Klicken
|
|
20
|
+
Sie auf "Weiter" und erlauben Sie den Cookies, die App zu verwenden.
|
|
21
|
+
request_storage_access_footer: Cookies laufen nach 30 Tagen ab.
|
|
22
|
+
request_storage_access_action: Weiter
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
en:
|
|
2
|
+
logged_out: 'Successfully logged out'
|
|
3
|
+
could_not_log_in: 'Could not log in to Duo Dealer store'
|
|
4
|
+
invalid_shop_url: 'Invalid shop domain'
|
|
5
|
+
enable_cookies_heading: "Enable cookies from %{app}"
|
|
6
|
+
enable_cookies_body: "You must manually enable cookies in this browser in order to use %{app} within Duo Dealer."
|
|
7
|
+
enable_cookies_footer: 'Cookies let the app authenticate you by temporarily storing your preferences and personal information. They expire after 30 days.'
|
|
8
|
+
enable_cookies_action: 'Enable cookies'
|
|
9
|
+
top_level_interaction_heading: "Your browser needs to authenticate %{app}"
|
|
10
|
+
top_level_interaction_body: "Your browser requires apps like %{app} to ask you for access to cookies before Duo Dealer can open it for you."
|
|
11
|
+
top_level_interaction_action: 'Continue'
|
|
12
|
+
request_storage_access_heading: "%{app} needs access to cookies"
|
|
13
|
+
request_storage_access_body: "This lets the app authenticate you by temporarily storing your personal information. Click continue and allow cookies to use the app."
|
|
14
|
+
request_storage_access_footer: 'Cookies expire after 30 days.'
|
|
15
|
+
request_storage_access_action: 'Continue'
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
es:
|
|
3
|
+
logged_out: Cerrar sesión
|
|
4
|
+
could_not_log_in: No se pudo iniciar sesión en tu tienda Duo Dealer
|
|
5
|
+
invalid_shop_url: Dominio de tienda inválido
|
|
6
|
+
enable_cookies_heading: Habilitar cookies de %{app}
|
|
7
|
+
enable_cookies_body: Debes habilitar manualmente las cookies en este navegador para
|
|
8
|
+
usar %{app} en Duo Dealer.
|
|
9
|
+
enable_cookies_footer: Las cookies permiten que la aplicación te autentique almacenando
|
|
10
|
+
temporalmente tus preferencias y datos personales. Las cookies expiran al cabo
|
|
11
|
+
de 30 días.
|
|
12
|
+
enable_cookies_action: Habilitar cookies
|
|
13
|
+
top_level_interaction_heading: Tu navegador necesita autenticar %{app}
|
|
14
|
+
top_level_interaction_body: Tu navegador requiere aplicaciones como %{app} para
|
|
15
|
+
solicitarte acceso a cookies antes de que Duo Dealer pueda abrirlo por ti.
|
|
16
|
+
top_level_interaction_action: Continuar
|
|
17
|
+
request_storage_access_heading: "%{app} necesita acceso a las cookies"
|
|
18
|
+
request_storage_access_body: Esto permite que la aplicación te autentique almacenando
|
|
19
|
+
temporalmente tus datos personales. Haz clic en continuar y permite que las cookies
|
|
20
|
+
utilicen la aplicación.
|
|
21
|
+
request_storage_access_footer: Las cookies expiran a los 30 días.
|
|
22
|
+
request_storage_access_action: Continuar
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
fi:
|
|
3
|
+
logged_out: Olet kirjautunut ulos
|
|
4
|
+
could_not_log_in: Kirjautuminen Duo Dealer-kauppaan ei onnistunut
|
|
5
|
+
invalid_shop_url: Virheellinen kaupan verkkotunnus
|
|
6
|
+
enable_cookies_heading: Ota käyttöön sovelluksen %{app} evästeet
|
|
7
|
+
enable_cookies_body: Sinun on otettava evästeet käyttöön manuaalisesti tässä selaimessa,
|
|
8
|
+
jotta voit käyttää sovellusta %{app} Duo Dealerssa.
|
|
9
|
+
enable_cookies_footer: Evästeiden avulla sovellus voi todentaa sinut tallentamalla
|
|
10
|
+
asetuksesi ja henkilötietosi tilapäisesti. Ne vanhenevat 30 päivän kuluttua.
|
|
11
|
+
enable_cookies_action: Ota evästeet käyttöön
|
|
12
|
+
top_level_interaction_heading: Selaimesi täytyy todentaa %{app}
|
|
13
|
+
top_level_interaction_body: Selaimesi vaatii sovelluksia, kuten %{app}, pyytämään
|
|
14
|
+
sinulta luvan evästeiden käyttöön, ennen kuin Duo Dealer voi avata sovelluksen.
|
|
15
|
+
top_level_interaction_action: Jatka
|
|
16
|
+
request_storage_access_heading: "%{app} edellyttää evästeiden käyttöä"
|
|
17
|
+
request_storage_access_body: Näin sovellus voi todentaa sinut tallentamalla henkilötietosi
|
|
18
|
+
tilapäisesti. Napsauta Jatka ja salli evästeet sovelluksen käyttämiseksi.
|
|
19
|
+
request_storage_access_footer: Evästeet vanhenevat 30 päivän kuluttua.
|
|
20
|
+
request_storage_access_action: Jatka
|