foreman_remote_execution 9.0.1 → 10.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release.yml +14 -0
  3. data/.tx/config +3 -1
  4. data/app/assets/javascripts/foreman_remote_execution/locale/de/foreman_remote_execution.js +1 -0
  5. data/app/assets/javascripts/foreman_remote_execution/locale/en/foreman_remote_execution.js +1 -0
  6. data/app/assets/javascripts/foreman_remote_execution/locale/en_GB/foreman_remote_execution.js +1 -0
  7. data/app/assets/javascripts/foreman_remote_execution/locale/es/foreman_remote_execution.js +1 -0
  8. data/app/assets/javascripts/foreman_remote_execution/locale/fr/foreman_remote_execution.js +1 -0
  9. data/app/assets/javascripts/foreman_remote_execution/locale/ja/foreman_remote_execution.js +1 -0
  10. data/app/assets/javascripts/foreman_remote_execution/locale/ko/foreman_remote_execution.js +1 -0
  11. data/app/assets/javascripts/foreman_remote_execution/locale/pt_BR/foreman_remote_execution.js +1 -0
  12. data/app/assets/javascripts/foreman_remote_execution/locale/ru/foreman_remote_execution.js +1 -0
  13. data/app/assets/javascripts/foreman_remote_execution/locale/zh_CN/foreman_remote_execution.js +1 -0
  14. data/app/assets/javascripts/foreman_remote_execution/locale/zh_TW/foreman_remote_execution.js +1 -0
  15. data/app/assets/javascripts/foreman_remote_execution/template_invocation.js +10 -1
  16. data/app/controllers/api/v2/job_invocations_controller.rb +1 -0
  17. data/app/controllers/job_invocations_controller.rb +30 -1
  18. data/app/controllers/ui_job_wizard_controller.rb +3 -1
  19. data/app/helpers/remote_execution_helper.rb +1 -1
  20. data/app/lib/actions/remote_execution/run_host_job.rb +1 -1
  21. data/app/lib/actions/remote_execution/run_hosts_job.rb +28 -2
  22. data/app/models/remote_execution_feature.rb +11 -8
  23. data/app/views/api/v2/job_invocations/base.json.rabl +1 -1
  24. data/app/views/job_invocations/_form.html.erb +1 -1
  25. data/app/views/job_invocations/show.html.erb +1 -1
  26. data/app/views/job_invocations/welcome.html.erb +1 -1
  27. data/app/views/templates/script/run_command.erb +1 -0
  28. data/config/routes.rb +2 -0
  29. data/db/migrate/20210816100932_rex_setting_category_to_dsl.rb +1 -1
  30. data/db/migrate/20220426145007_add_unique_feature_label_index.rb +14 -0
  31. data/lib/foreman_remote_execution/engine.rb +9 -9
  32. data/lib/foreman_remote_execution/tasks/explain_proxy_selection.rake +12 -3
  33. data/lib/foreman_remote_execution/version.rb +1 -1
  34. data/locale/Makefile +6 -3
  35. data/locale/action_names.rb +1 -1
  36. data/locale/de/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  37. data/locale/de/foreman_remote_execution.po +67 -19
  38. data/locale/en/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  39. data/locale/en/foreman_remote_execution.po +56 -8
  40. data/locale/en_GB/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  41. data/locale/en_GB/foreman_remote_execution.po +58 -10
  42. data/locale/es/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  43. data/locale/es/foreman_remote_execution.po +71 -23
  44. data/locale/foreman_remote_execution.pot +216 -141
  45. data/locale/fr/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  46. data/locale/fr/foreman_remote_execution.po +104 -56
  47. data/locale/ja/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  48. data/locale/ja/foreman_remote_execution.po +72 -24
  49. data/locale/ko/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  50. data/locale/ko/foreman_remote_execution.po +63 -15
  51. data/locale/pt_BR/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  52. data/locale/pt_BR/foreman_remote_execution.po +68 -20
  53. data/locale/ru/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  54. data/locale/ru/foreman_remote_execution.po +63 -15
  55. data/locale/zh_CN/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  56. data/locale/zh_CN/foreman_remote_execution.po +71 -23
  57. data/locale/zh_TW/LC_MESSAGES/foreman_remote_execution.mo +0 -0
  58. data/locale/zh_TW/foreman_remote_execution.po +63 -15
  59. data/package.json +6 -6
  60. data/webpack/JobWizard/Footer.js +104 -0
  61. data/webpack/JobWizard/JobWizard.js +105 -32
  62. data/webpack/JobWizard/JobWizard.scss +6 -17
  63. data/webpack/JobWizard/JobWizardConstants.js +1 -1
  64. data/webpack/JobWizard/JobWizardPageRerun.js +2 -0
  65. data/webpack/JobWizard/StartsBeforeErrorAlert.js +17 -0
  66. data/webpack/JobWizard/__tests__/__snapshots__/integration.test.js.snap +8 -0
  67. data/webpack/JobWizard/__tests__/fixtures.js +13 -1
  68. data/webpack/JobWizard/__tests__/integration.test.js +15 -0
  69. data/webpack/JobWizard/__tests__/validation.test.js +36 -0
  70. data/webpack/JobWizard/autofill.js +1 -0
  71. data/webpack/JobWizard/steps/AdvancedFields/__tests__/AdvancedFields.test.js +29 -10
  72. data/webpack/JobWizard/steps/AdvancedFields/__tests__/__snapshots__/AdvancedFields.test.js.snap +8 -0
  73. data/webpack/JobWizard/steps/HostsAndInputs/HostPreviewModal.js +5 -0
  74. data/webpack/JobWizard/steps/HostsAndInputs/SelectedChips.js +28 -14
  75. data/webpack/JobWizard/steps/HostsAndInputs/__tests__/HostsAndInputs.test.js +41 -4
  76. data/webpack/JobWizard/steps/HostsAndInputs/buildHostQuery.js +16 -10
  77. data/webpack/JobWizard/steps/HostsAndInputs/index.js +51 -3
  78. data/webpack/JobWizard/steps/ReviewDetails/ReviewDetails.test.js +117 -0
  79. data/webpack/JobWizard/steps/ReviewDetails/helpers.js +43 -0
  80. data/webpack/JobWizard/steps/ReviewDetails/index.js +169 -18
  81. data/webpack/JobWizard/steps/Schedule/QueryType.js +1 -1
  82. data/webpack/JobWizard/steps/Schedule/RepeatHour.js +0 -1
  83. data/webpack/JobWizard/steps/Schedule/RepeatWeek.js +1 -1
  84. data/webpack/JobWizard/steps/Schedule/__tests__/Schedule.test.js +52 -18
  85. data/webpack/JobWizard/steps/form/DateTimePicker.js +1 -2
  86. data/webpack/JobWizard/steps/form/GroupedSelectField.js +0 -1
  87. data/webpack/JobWizard/steps/form/SelectField.js +0 -1
  88. data/webpack/JobWizard/submit.js +14 -3
  89. data/webpack/react_app/components/RecentJobsCard/RecentJobsCard.js +4 -4
  90. data/webpack/react_app/components/RecentJobsCard/RecentJobsTable.js +2 -2
  91. data/webpack/react_app/components/RecentJobsCard/constants.js +2 -2
  92. data/webpack/react_app/components/RegistrationExtension/RexPull.js +0 -2
  93. metadata +23 -6
@@ -5,7 +5,7 @@
5
5
  # Translators:
6
6
  msgid ""
7
7
  msgstr ""
8
- "Project-Id-Version: foreman_remote_execution 8.1.1\n"
8
+ "Project-Id-Version: foreman_remote_execution 9.0.1\n"
9
9
  "Report-Msgid-Bugs-To: \n"
10
10
  "PO-Revision-Date: 2016-02-15 13:54+0000\n"
11
11
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
@@ -26,6 +26,9 @@ msgstr "%s 前"
26
26
  msgid "%s job has been invoked"
27
27
  msgstr "%s 任务已被调用"
28
28
 
29
+ msgid "%s more"
30
+ msgstr ""
31
+
29
32
  msgid "%{description} on %{host}"
30
33
  msgstr "%{host} 的 %{description}"
31
34
 
@@ -35,9 +38,6 @@ msgstr ""
35
38
  msgid "'Starts before' date must in the future"
36
39
  msgstr ""
37
40
 
38
- msgid ", and %s more"
39
- msgstr ", 和 %s 个更多"
40
-
41
41
  msgid "...and %s more"
42
42
  msgstr "...和 %s 个更多"
43
43
 
@@ -84,6 +84,9 @@ msgstr "有子计划的操作"
84
84
  msgid "Actions"
85
85
  msgstr "操作"
86
86
 
87
+ msgid "Active Filters:"
88
+ msgstr ""
89
+
87
90
  msgid "Add Foreign Input Set"
88
91
  msgstr "添加外部输入集"
89
92
 
@@ -93,6 +96,9 @@ msgstr "高级项"
93
96
  msgid "After"
94
97
  msgstr ""
95
98
 
99
+ msgid "After %s occurences"
100
+ msgstr ""
101
+
96
102
  msgid "All fields are required."
97
103
  msgstr "各个项都需要。"
98
104
 
@@ -150,8 +156,8 @@ msgstr "无法同时指定 bookmark_id 和 search_query"
150
156
  msgid "Categories list failed with:"
151
157
  msgstr "类别列表失败并带有:"
152
158
 
153
- msgid "Category and Template"
154
- msgstr "类别和模板"
159
+ msgid "Category and template"
160
+ msgstr ""
155
161
 
156
162
  msgid "Choose a job template that is pre-selected in job invocation form"
157
163
  msgstr "选择在作业调用表单中预先选择的作业模板"
@@ -162,8 +168,8 @@ msgstr "在外部输入设置中发现了循环的依赖关系 '%{template}' ->
162
168
  msgid "Cleanup working directories"
163
169
  msgstr "清理工作目录"
164
170
 
165
- msgid "Clear filters"
166
- msgstr "清除过滤器"
171
+ msgid "Clear all filters"
172
+ msgstr ""
167
173
 
168
174
  msgid "Clear input"
169
175
  msgstr ""
@@ -208,7 +214,7 @@ msgid "Could not use any template used in the job invocation"
208
214
  msgstr "无法使用作业调用中使用的任何模板"
209
215
 
210
216
  msgid "Create"
211
- msgstr ""
217
+ msgstr "创建"
212
218
 
213
219
  msgid "Create Report"
214
220
  msgstr "创建报告"
@@ -328,7 +334,7 @@ msgid "Edit job description template"
328
334
  msgstr "编辑作业描述模板"
329
335
 
330
336
  msgid "Effective User"
331
- msgstr ""
337
+ msgstr "有效用户"
332
338
 
333
339
  msgid "Effective User Method"
334
340
  msgstr "有效用户方法"
@@ -372,6 +378,18 @@ msgstr "错误:"
372
378
  msgid "Evaluated at:"
373
379
  msgstr "评估于:"
374
380
 
381
+ msgid "Every day at %s"
382
+ msgstr ""
383
+
384
+ msgid "Every hour at minute %s"
385
+ msgstr ""
386
+
387
+ msgid "Every month on %s at %s"
388
+ msgstr ""
389
+
390
+ msgid "Every week on %s at %s"
391
+ msgstr ""
392
+
375
393
  msgid "Execute the job later, at a scheduled time."
376
394
  msgstr ""
377
395
 
@@ -520,7 +538,7 @@ msgid "Indicates that the action should be cancelled if it cannot be started bef
520
538
  msgstr "这代表,如果操作无法在这个时间前开始则操作应该被取消。"
521
539
 
522
540
  msgid "Inherit from host parameter"
523
- msgstr ""
541
+ msgstr "从主机参数继承"
524
542
 
525
543
  msgid "Input"
526
544
  msgstr "输入"
@@ -685,13 +703,13 @@ msgid "Name"
685
703
  msgstr "名称"
686
704
 
687
705
  msgid "Never"
688
- msgstr ""
706
+ msgstr "决不"
689
707
 
690
708
  msgid "New Job Template"
691
709
  msgstr "新作业模板"
692
710
 
693
711
  msgid "No (override)"
694
- msgstr ""
712
+ msgstr "否(覆盖)"
695
713
 
696
714
  msgid "No Target Hosts"
697
715
  msgstr "没有目标主机"
@@ -718,7 +736,7 @@ msgid "Now"
718
736
  msgstr ""
719
737
 
720
738
  msgid "On"
721
- msgstr ""
739
+ msgstr ""
722
740
 
723
741
  msgid "Only one of feature or job_template_id can be specified"
724
742
  msgstr "只能指定一个功能或 job_template_id"
@@ -732,6 +750,9 @@ msgstr "机构"
732
750
  msgid "Override the description format from the template for this invocation only"
733
751
  msgstr "只为此调用覆盖来自模板的描述格式"
734
752
 
753
+ msgid "Override the global time to pickup interval for this invocation only"
754
+ msgstr ""
755
+
735
756
  msgid "Override the timeout interval from the template for this invocation only"
736
757
  msgstr "只为此调用使用该模板覆盖超时间隔"
737
758
 
@@ -759,9 +780,24 @@ msgstr "执行一个单独 Puppet 运行"
759
780
  msgid "Perform no more executions after this time"
760
781
  msgstr "在此时间后不再执行"
761
782
 
783
+ msgid "Please enter a search query"
784
+ msgstr ""
785
+
786
+ msgid "Please go back to \\\"Schedule\\\" - \\\"Future execution\\\" step to fix the error"
787
+ msgstr ""
788
+
762
789
  msgid "Please refine your search."
763
790
  msgstr "请重新调整您的搜索。"
764
791
 
792
+ msgid "Please select at least one host"
793
+ msgstr ""
794
+
795
+ msgid "Please select at least one host collection"
796
+ msgstr ""
797
+
798
+ msgid "Please select at least one host group"
799
+ msgstr ""
800
+
765
801
  msgid "Port to use for SSH communication. Default port 22. You may override per host by setting a parameter called remote_execution_ssh_port."
766
802
  msgstr "要用于 SSH 通信的端口。默认端口 22。您可以通过设置名为 remote_execution_ssh_port 的参数来按主机进行覆盖。"
767
803
 
@@ -862,7 +898,7 @@ msgid "Repeat amount can only be a positive number"
862
898
  msgstr "重复数量只能是一个正数"
863
899
 
864
900
  msgid "Repeats"
865
- msgstr ""
901
+ msgstr "重复"
866
902
 
867
903
  msgid "Rerun"
868
904
  msgstr "重新运行"
@@ -883,7 +919,7 @@ msgid "Rerun the job"
883
919
  msgstr "重新运行作业"
884
920
 
885
921
  msgid "Reset to default"
886
- msgstr ""
922
+ msgstr "重置为默认"
887
923
 
888
924
  msgid "Resolves to"
889
925
  msgstr "解析到"
@@ -903,6 +939,12 @@ msgstr "运行作业"
903
939
  msgid "Run Puppet Once"
904
940
  msgstr "运行 Puppet 一次"
905
941
 
942
+ msgid "Run Script"
943
+ msgstr ""
944
+
945
+ msgid "Run a script"
946
+ msgstr ""
947
+
906
948
  msgid "Run at most N tasks at a time"
907
949
  msgstr "一次最多运行 N 个任务"
908
950
 
@@ -1051,6 +1093,9 @@ msgid "Started"
1051
1093
  msgstr "已启动"
1052
1094
 
1053
1095
  msgid "Starts"
1096
+ msgstr "开始"
1097
+
1098
+ msgid "Starts Before"
1054
1099
  msgstr ""
1055
1100
 
1056
1101
  msgid "Starts at"
@@ -1234,8 +1279,8 @@ msgstr "类型"
1234
1279
  msgid "Type has impact on when is the query evaluated to hosts."
1235
1280
  msgstr "类型会影响到什么时候会评估到主机。"
1236
1281
 
1237
- msgid "Type has impact on when is the query evaluated to hosts.<br><ul><li><b>Static</b> - evaluates just after you submit this form</li><li><b>Dynamic</b> - evaluates just before the execution is started, so if it's planed in future, targeted hosts set may change before it</li></ul>"
1238
- msgstr "类型会对何时评估主机查询产生影响。<br><ul><li><b>静态</b> - 提交此表格后立即评估</li><li><b>动态</b> - 开始执行前进行评估,因此,如果以后计划,则目标主机集可能会在它之前发生变化</li></ul>"
1282
+ msgid "Type has impact on when is the query evaluated to hosts.<br><ul><li><b>Static</b> - evaluates just after you submit this form</li><li><b>Dynamic</b> - evaluates just before the execution is started, so if it's planned in future, targeted hosts set may change before it</li></ul>"
1283
+ msgstr ""
1239
1284
 
1240
1285
  msgid "Type of execution"
1241
1286
  msgstr ""
@@ -1361,7 +1406,7 @@ msgid "Workers pool size"
1361
1406
  msgstr "工作节点池的大小"
1362
1407
 
1363
1408
  msgid "Yes (override)"
1364
- msgstr ""
1409
+ msgstr "是(覆盖)"
1365
1410
 
1366
1411
  msgid "You are not allowed to see the currently assigned template. Saving the form now would unassign the template."
1367
1412
  msgstr "您没有权限查看当前分配的模板。现在保存表单将取消分配模板。"
@@ -1390,8 +1435,8 @@ msgstr "呈现时出错:%s"
1390
1435
  msgid "evaluates just after you submit this form"
1391
1436
  msgstr "提交此表单后评估"
1392
1437
 
1393
- msgid "evaluates just before the execution is started, so if it's planed in future, targeted hosts set may change before it"
1394
- msgstr "在执行启动前进行评估,因此如果将来需要它,则目标主机设置可能会在它之前改变。"
1438
+ msgid "evaluates just before the execution is started, so if it's planned in future, targeted hosts set may change before it"
1439
+ msgstr ""
1395
1440
 
1396
1441
  msgid "failed"
1397
1442
  msgstr "失败"
@@ -1430,7 +1475,7 @@ msgid "is month (range: 1-12)"
1430
1475
  msgstr "月份(范围:1-12)"
1431
1476
 
1432
1477
  msgid "no"
1433
- msgstr ""
1478
+ msgstr ""
1434
1479
 
1435
1480
  msgid "occurences"
1436
1481
  msgstr ""
@@ -1474,5 +1519,8 @@ msgstr "使用 "
1474
1519
  msgid "using Smart Proxy"
1475
1520
  msgstr "使用智能代理"
1476
1521
 
1477
- msgid "yes"
1522
+ msgid "view host names"
1478
1523
  msgstr ""
1524
+
1525
+ msgid "yes"
1526
+ msgstr "是"
@@ -5,7 +5,7 @@
5
5
  # Translators:
6
6
  msgid ""
7
7
  msgstr ""
8
- "Project-Id-Version: foreman_remote_execution 8.1.1\n"
8
+ "Project-Id-Version: foreman_remote_execution 9.0.1\n"
9
9
  "Report-Msgid-Bugs-To: \n"
10
10
  "PO-Revision-Date: 2016-02-15 13:54+0000\n"
11
11
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
@@ -26,6 +26,9 @@ msgstr "%s 之前"
26
26
  msgid "%s job has been invoked"
27
27
  msgstr ""
28
28
 
29
+ msgid "%s more"
30
+ msgstr ""
31
+
29
32
  msgid "%{description} on %{host}"
30
33
  msgstr "%{description} 於 %{host} 之上"
31
34
 
@@ -35,9 +38,6 @@ msgstr ""
35
38
  msgid "'Starts before' date must in the future"
36
39
  msgstr ""
37
40
 
38
- msgid ", and %s more"
39
- msgstr ""
40
-
41
41
  msgid "...and %s more"
42
42
  msgstr ""
43
43
 
@@ -85,6 +85,9 @@ msgstr "有子計畫的動作"
85
85
  msgid "Actions"
86
86
  msgstr "動作"
87
87
 
88
+ msgid "Active Filters:"
89
+ msgstr ""
90
+
88
91
  msgid "Add Foreign Input Set"
89
92
  msgstr "新增外部輸入集"
90
93
 
@@ -94,6 +97,9 @@ msgstr ""
94
97
  msgid "After"
95
98
  msgstr ""
96
99
 
100
+ msgid "After %s occurences"
101
+ msgstr ""
102
+
97
103
  msgid "All fields are required."
98
104
  msgstr ""
99
105
 
@@ -151,7 +157,7 @@ msgstr "無法指定 bookmark_id 和 search_query"
151
157
  msgid "Categories list failed with:"
152
158
  msgstr ""
153
159
 
154
- msgid "Category and Template"
160
+ msgid "Category and template"
155
161
  msgstr ""
156
162
 
157
163
  msgid "Choose a job template that is pre-selected in job invocation form"
@@ -163,7 +169,7 @@ msgstr "在外部輸入集偵測到環狀相依性: '%{template}' -> '%{target
163
169
  msgid "Cleanup working directories"
164
170
  msgstr ""
165
171
 
166
- msgid "Clear filters"
172
+ msgid "Clear all filters"
167
173
  msgstr ""
168
174
 
169
175
  msgid "Clear input"
@@ -209,7 +215,7 @@ msgid "Could not use any template used in the job invocation"
209
215
  msgstr "無法使用任何用於這工作祈願的範本"
210
216
 
211
217
  msgid "Create"
212
- msgstr ""
218
+ msgstr "建立"
213
219
 
214
220
  msgid "Create Report"
215
221
  msgstr ""
@@ -373,6 +379,18 @@ msgstr ""
373
379
  msgid "Evaluated at:"
374
380
  msgstr "評量於:"
375
381
 
382
+ msgid "Every day at %s"
383
+ msgstr ""
384
+
385
+ msgid "Every hour at minute %s"
386
+ msgstr ""
387
+
388
+ msgid "Every month on %s at %s"
389
+ msgstr ""
390
+
391
+ msgid "Every week on %s at %s"
392
+ msgstr ""
393
+
376
394
  msgid "Execute the job later, at a scheduled time."
377
395
  msgstr ""
378
396
 
@@ -686,7 +704,7 @@ msgid "Name"
686
704
  msgstr "名稱"
687
705
 
688
706
  msgid "Never"
689
- msgstr ""
707
+ msgstr "永不"
690
708
 
691
709
  msgid "New Job Template"
692
710
  msgstr "新工作範本"
@@ -719,7 +737,7 @@ msgid "Now"
719
737
  msgstr ""
720
738
 
721
739
  msgid "On"
722
- msgstr ""
740
+ msgstr "開啟"
723
741
 
724
742
  msgid "Only one of feature or job_template_id can be specified"
725
743
  msgstr ""
@@ -733,6 +751,9 @@ msgstr "組織"
733
751
  msgid "Override the description format from the template for this invocation only"
734
752
  msgstr "僅為這祈願從範本覆寫描述格式"
735
753
 
754
+ msgid "Override the global time to pickup interval for this invocation only"
755
+ msgstr ""
756
+
736
757
  msgid "Override the timeout interval from the template for this invocation only"
737
758
  msgstr ""
738
759
 
@@ -760,9 +781,24 @@ msgstr ""
760
781
  msgid "Perform no more executions after this time"
761
782
  msgstr "此時間之後不再進行任何執行"
762
783
 
784
+ msgid "Please enter a search query"
785
+ msgstr ""
786
+
787
+ msgid "Please go back to \\\"Schedule\\\" - \\\"Future execution\\\" step to fix the error"
788
+ msgstr ""
789
+
763
790
  msgid "Please refine your search."
764
791
  msgstr ""
765
792
 
793
+ msgid "Please select at least one host"
794
+ msgstr ""
795
+
796
+ msgid "Please select at least one host collection"
797
+ msgstr ""
798
+
799
+ msgid "Please select at least one host group"
800
+ msgstr ""
801
+
766
802
  msgid "Port to use for SSH communication. Default port 22. You may override per host by setting a parameter called remote_execution_ssh_port."
767
803
  msgstr ""
768
804
 
@@ -863,7 +899,7 @@ msgid "Repeat amount can only be a positive number"
863
899
  msgstr ""
864
900
 
865
901
  msgid "Repeats"
866
- msgstr ""
902
+ msgstr "重複"
867
903
 
868
904
  msgid "Rerun"
869
905
  msgstr "重新執行"
@@ -884,7 +920,7 @@ msgid "Rerun the job"
884
920
  msgstr "重新執行工作"
885
921
 
886
922
  msgid "Reset to default"
887
- msgstr ""
923
+ msgstr "重設為預設值"
888
924
 
889
925
  msgid "Resolves to"
890
926
  msgstr "解析至"
@@ -904,6 +940,12 @@ msgstr "執行工作"
904
940
  msgid "Run Puppet Once"
905
941
  msgstr ""
906
942
 
943
+ msgid "Run Script"
944
+ msgstr ""
945
+
946
+ msgid "Run a script"
947
+ msgstr ""
948
+
907
949
  msgid "Run at most N tasks at a time"
908
950
  msgstr "一次最多執行 N 個任務"
909
951
 
@@ -1052,6 +1094,9 @@ msgid "Started"
1052
1094
  msgstr ""
1053
1095
 
1054
1096
  msgid "Starts"
1097
+ msgstr "起始"
1098
+
1099
+ msgid "Starts Before"
1055
1100
  msgstr ""
1056
1101
 
1057
1102
  msgid "Starts at"
@@ -1236,7 +1281,7 @@ msgstr "類型"
1236
1281
  msgid "Type has impact on when is the query evaluated to hosts."
1237
1282
  msgstr ""
1238
1283
 
1239
- msgid "Type has impact on when is the query evaluated to hosts.<br><ul><li><b>Static</b> - evaluates just after you submit this form</li><li><b>Dynamic</b> - evaluates just before the execution is started, so if it's planed in future, targeted hosts set may change before it</li></ul>"
1284
+ msgid "Type has impact on when is the query evaluated to hosts.<br><ul><li><b>Static</b> - evaluates just after you submit this form</li><li><b>Dynamic</b> - evaluates just before the execution is started, so if it's planned in future, targeted hosts set may change before it</li></ul>"
1240
1285
  msgstr ""
1241
1286
 
1242
1287
  msgid "Type of execution"
@@ -1392,7 +1437,7 @@ msgstr "處理時發生錯誤:%s"
1392
1437
  msgid "evaluates just after you submit this form"
1393
1438
  msgstr ""
1394
1439
 
1395
- msgid "evaluates just before the execution is started, so if it's planed in future, targeted hosts set may change before it"
1440
+ msgid "evaluates just before the execution is started, so if it's planned in future, targeted hosts set may change before it"
1396
1441
  msgstr ""
1397
1442
 
1398
1443
  msgid "failed"
@@ -1432,7 +1477,7 @@ msgid "is month (range: 1-12)"
1432
1477
  msgstr "是月份(範圍:1-12)"
1433
1478
 
1434
1479
  msgid "no"
1435
- msgstr ""
1480
+ msgstr ""
1436
1481
 
1437
1482
  msgid "occurences"
1438
1483
  msgstr ""
@@ -1476,5 +1521,8 @@ msgstr ""
1476
1521
  msgid "using Smart Proxy"
1477
1522
  msgstr ""
1478
1523
 
1479
- msgid "yes"
1524
+ msgid "view host names"
1480
1525
  msgstr ""
1526
+
1527
+ msgid "yes"
1528
+ msgstr "是"
data/package.json CHANGED
@@ -21,11 +21,11 @@
21
21
  },
22
22
  "devDependencies": {
23
23
  "@babel/core": "^7.7.0",
24
- "@theforeman/builder": "^10.1.0",
25
- "@theforeman/eslint-plugin-foreman": "^10.1.0",
26
- "@theforeman/stories": "^10.1.0",
27
- "@theforeman/test": "^10.1.0",
28
- "@theforeman/vendor-dev": "^10.1.0",
24
+ "@theforeman/builder": "^12.0.1",
25
+ "@theforeman/eslint-plugin-foreman": "^12.0.1",
26
+ "@theforeman/stories": "^12.0.1",
27
+ "@theforeman/test": "^12.0.1",
28
+ "@theforeman/vendor-dev": "^12.0.1",
29
29
  "babel-eslint": "^10.0.0",
30
30
  "eslint": "^6.8.0",
31
31
  "prettier": "^1.19.1",
@@ -34,6 +34,6 @@
34
34
  "graphql": "^15.5.0"
35
35
  },
36
36
  "peerDependencies": {
37
- "@theforeman/vendor": "^10.1.0"
37
+ "@theforeman/vendor": "^12.0.1"
38
38
  }
39
39
  }
@@ -0,0 +1,104 @@
1
+ import React from 'react';
2
+ import { useSelector } from 'react-redux';
3
+ import PropTypes from 'prop-types';
4
+ import {
5
+ Button,
6
+ WizardFooter,
7
+ WizardContextConsumer,
8
+ Tooltip,
9
+ Spinner,
10
+ } from '@patternfly/react-core';
11
+ import { translate as __ } from 'foremanReact/common/I18n';
12
+ import { WIZARD_TITLES } from './JobWizardConstants';
13
+ import { selectIsSubmitting } from './JobWizardSelectors';
14
+
15
+ export const Footer = ({ canSubmit, onSave }) => {
16
+ const isSubmitting = useSelector(selectIsSubmitting);
17
+ return (
18
+ <WizardFooter>
19
+ <WizardContextConsumer>
20
+ {({ activeStep, onNext, onBack, onClose, goToStepByName }) => {
21
+ const isValid =
22
+ activeStep && activeStep.enableNext !== undefined
23
+ ? activeStep.enableNext
24
+ : true;
25
+
26
+ return (
27
+ <>
28
+ <Button
29
+ variant="primary"
30
+ type="submit"
31
+ onClick={onNext}
32
+ isDisabled={!isValid || isSubmitting}
33
+ >
34
+ {activeStep.name === WIZARD_TITLES.review
35
+ ? __('Submit')
36
+ : __('Next')}
37
+ </Button>
38
+ <Button
39
+ variant="secondary"
40
+ onClick={onBack}
41
+ isDisabled={
42
+ activeStep.name === WIZARD_TITLES.categoryAndTemplate
43
+ }
44
+ >
45
+ {__('Back')}
46
+ </Button>
47
+ <Tooltip
48
+ content={
49
+ <div>
50
+ {canSubmit
51
+ ? __('Start job')
52
+ : __('Fill all required fields in all the steps')}
53
+ </div>
54
+ }
55
+ >
56
+ <Button
57
+ variant="tertiary"
58
+ onClick={onSave}
59
+ isAriaDisabled={!canSubmit}
60
+ isDisabled={isSubmitting}
61
+ >
62
+ {__('Run on selected hosts')}
63
+ </Button>
64
+ </Tooltip>
65
+ <Tooltip
66
+ content={
67
+ <div>
68
+ {canSubmit
69
+ ? __('Skip to review step')
70
+ : __(
71
+ 'Fill all required fields in all the steps to start the job'
72
+ )}
73
+ </div>
74
+ }
75
+ >
76
+ <Button
77
+ variant="tertiary"
78
+ onClick={() => goToStepByName(WIZARD_TITLES.review)}
79
+ isAriaDisabled={!canSubmit}
80
+ isDisabled={isSubmitting}
81
+ >
82
+ {__('Skip to review')}
83
+ </Button>
84
+ </Tooltip>
85
+ <Button variant="link" onClick={onClose}>
86
+ {__('Cancel')}
87
+ </Button>
88
+ {isSubmitting && (
89
+ <div>
90
+ <Spinner size="lg" />
91
+ </div>
92
+ )}
93
+ </>
94
+ );
95
+ }}
96
+ </WizardContextConsumer>
97
+ </WizardFooter>
98
+ );
99
+ };
100
+
101
+ Footer.propTypes = {
102
+ canSubmit: PropTypes.bool.isRequired,
103
+ onSave: PropTypes.func.isRequired,
104
+ };