katello 4.8.4 → 4.9.0.rc1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of katello might be problematic. Click here for more details.

Files changed (481) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/hosts/host_and_hostgroup_edit.js +40 -4
  3. data/app/assets/javascripts/katello/locale/bn/katello.js +1 -0
  4. data/app/assets/javascripts/katello/locale/cs/katello.js +1 -0
  5. data/app/assets/javascripts/katello/locale/de/katello.js +1 -0
  6. data/app/assets/javascripts/katello/locale/en/katello.js +1 -0
  7. data/app/assets/javascripts/katello/locale/es/katello.js +1 -0
  8. data/app/assets/javascripts/katello/locale/fr/katello.js +1 -0
  9. data/app/assets/javascripts/katello/locale/gu/katello.js +1 -0
  10. data/app/assets/javascripts/katello/locale/hi/katello.js +1 -0
  11. data/app/assets/javascripts/katello/locale/it/katello.js +1 -0
  12. data/app/assets/javascripts/katello/locale/ja/katello.js +1 -0
  13. data/app/assets/javascripts/katello/locale/ka/katello.js +1 -0
  14. data/app/assets/javascripts/katello/locale/kn/katello.js +1 -0
  15. data/app/assets/javascripts/katello/locale/ko/katello.js +1 -0
  16. data/app/assets/javascripts/katello/locale/locale/katello.js +1 -0
  17. data/app/assets/javascripts/katello/locale/mr/katello.js +1 -0
  18. data/app/assets/javascripts/katello/locale/or/katello.js +1 -0
  19. data/app/assets/javascripts/katello/locale/pa/katello.js +1 -0
  20. data/app/assets/javascripts/katello/locale/pt/katello.js +1 -0
  21. data/app/assets/javascripts/katello/locale/pt_BR/katello.js +1 -0
  22. data/app/assets/javascripts/katello/locale/ru/katello.js +1 -0
  23. data/app/assets/javascripts/katello/locale/ta/katello.js +1 -0
  24. data/app/assets/javascripts/katello/locale/te/katello.js +1 -0
  25. data/app/assets/javascripts/katello/locale/zh_CN/katello.js +1 -0
  26. data/app/assets/javascripts/katello/locale/zh_TW/katello.js +1 -0
  27. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +10 -0
  28. data/app/controllers/katello/api/v2/activation_keys_controller.rb +1 -0
  29. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +2 -0
  30. data/app/controllers/katello/api/v2/content_views_controller.rb +22 -12
  31. data/app/controllers/katello/api/v2/environments_controller.rb +5 -1
  32. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +1 -1
  33. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +1 -2
  34. data/app/controllers/katello/api/v2/organizations_controller.rb +11 -0
  35. data/app/controllers/katello/api/v2/repositories_controller.rb +4 -3
  36. data/app/controllers/katello/api/v2/repository_sets_controller.rb +13 -4
  37. data/app/controllers/katello/api/v2/simple_content_access_controller.rb +1 -3
  38. data/app/controllers/katello/concerns/api/api_controller.rb +2 -2
  39. data/app/controllers/katello/concerns/content_facet_hosts_controller_extensions.rb +1 -1
  40. data/app/helpers/katello/hosts_and_hostgroups_helper.rb +6 -4
  41. data/app/lib/actions/candlepin/product/content_add.rb +13 -1
  42. data/app/lib/actions/candlepin/product/content_update.rb +2 -1
  43. data/app/lib/actions/katello/agent_action.rb +3 -4
  44. data/app/lib/actions/katello/bulk_agent_action.rb +1 -4
  45. data/app/lib/actions/katello/content_view/publish.rb +1 -0
  46. data/app/lib/actions/katello/content_view_version/incremental_update.rb +1 -0
  47. data/app/lib/actions/katello/host/update_content_view.rb +2 -4
  48. data/app/lib/actions/katello/organization/simple_content_access/enable.rb +0 -10
  49. data/app/lib/actions/katello/organization/simple_content_access/toggle.rb +2 -12
  50. data/app/lib/actions/katello/product/content_create.rb +2 -2
  51. data/app/lib/actions/katello/repository/destroy.rb +15 -7
  52. data/app/lib/actions/katello/repository/update.rb +23 -1
  53. data/app/lib/actions/pulp3/abstract_async_task.rb +2 -0
  54. data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +5 -12
  55. data/app/lib/katello/concerns/base_template_scope_extensions.rb +34 -2
  56. data/app/lib/katello/event_daemon/runner.rb +8 -4
  57. data/app/lib/katello/repo_discovery.rb +3 -1
  58. data/app/lib/katello/resources/cdn/katello_cdn.rb +4 -8
  59. data/app/lib/katello/util/default_enablement_migrator.rb +183 -0
  60. data/app/models/katello/activation_key.rb +4 -0
  61. data/app/models/katello/alternate_content_source.rb +13 -8
  62. data/app/models/katello/candlepin/repository_mapper.rb +0 -1
  63. data/app/models/katello/concerns/content_view_filter_rule_common.rb +42 -0
  64. data/app/models/katello/concerns/host_managed_extensions.rb +9 -40
  65. data/app/models/katello/concerns/smart_proxy_extensions.rb +24 -23
  66. data/app/models/katello/content.rb +9 -0
  67. data/app/models/katello/content_view.rb +99 -4
  68. data/app/models/katello/content_view_environment_content_facet.rb +12 -0
  69. data/app/models/katello/content_view_filter.rb +5 -1
  70. data/app/models/katello/content_view_package_filter_rule.rb +0 -1
  71. data/app/models/katello/content_view_repository.rb +0 -1
  72. data/app/models/katello/content_view_version.rb +26 -0
  73. data/app/models/katello/docker_meta_tag.rb +4 -0
  74. data/app/models/katello/host/content_facet.rb +2 -0
  75. data/app/models/katello/kt_environment.rb +13 -3
  76. data/app/models/katello/ping.rb +1 -1
  77. data/app/models/katello/product.rb +1 -1
  78. data/app/models/katello/product_content.rb +13 -15
  79. data/app/models/katello/root_repository.rb +21 -2
  80. data/app/models/katello/sync_plan.rb +2 -6
  81. data/app/presenters/katello/host_package_presenter.rb +5 -3
  82. data/app/services/katello/product_content_finder.rb +6 -1
  83. data/app/services/katello/pulp3/alternate_content_source.rb +5 -0
  84. data/app/services/katello/pulp3/module_stream.rb +2 -12
  85. data/app/services/katello/pulp3/repository/yum.rb +3 -0
  86. data/app/views/foreman/job_templates/install_errata.erb +4 -4
  87. data/app/views/foreman/job_templates/install_errata_-_katello_ansible_default.erb +4 -7
  88. data/app/views/foreman/job_templates/install_errata_by_search_query.erb +5 -6
  89. data/app/views/katello/api/v2/activation_keys/base.json.rabl +6 -0
  90. data/app/views/katello/api/v2/common/destroy.json.rabl +2 -1
  91. data/app/views/katello/api/v2/content_credentials/show.json.rabl +1 -1
  92. data/app/views/katello/api/v2/content_facet/base.json.rabl +10 -9
  93. data/app/views/katello/api/v2/content_view_repositories/show_all.json.rabl +6 -0
  94. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +11 -1
  95. data/app/views/katello/api/v2/content_views/base.json.rabl +3 -0
  96. data/app/views/katello/api/v2/docker_tags/_base.json.rabl +4 -0
  97. data/app/views/katello/api/v2/environments/show.json.rabl +10 -0
  98. data/app/views/katello/api/v2/host_subscriptions/show.json.rabl +1 -0
  99. data/app/views/katello/api/v2/repositories/index.json.rabl +6 -0
  100. data/app/views/katello/api/v2/repositories/show.json.rabl +1 -0
  101. data/app/views/katello/api/v2/repository_sets/show.json.rabl +8 -2
  102. data/app/views/overrides/activation_keys/_host_environment_select.html.erb +22 -15
  103. data/app/views/smart_proxies/_disk_usage.html.erb +2 -0
  104. data/ca/redhat-uep.pem +53 -53
  105. data/db/migrate/20220228173251_remove_drpm_from_ignorable_content.rb +0 -1
  106. data/db/migrate/20230328180352_add_applied_filters_to_katello_content_view_versions.rb +5 -0
  107. data/db/migrate/20230503190626_add_metadata_expire_to_root.rb +5 -0
  108. data/db/seeds.d/111-upgrade_tasks.rb +2 -1
  109. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-associations.controller.js +4 -2
  110. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-repository-sets.controller.js +16 -0
  111. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-associations-content-hosts.html +4 -3
  112. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-repository-sets.html +15 -1
  113. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-subscriptions.html +1 -1
  114. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/katello-agent-notice.html +1 -1
  115. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/views/content-credentials.html +1 -1
  116. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-errata-modal.controller.js +4 -2
  117. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-host-bulk-module-streams-modal.html +1 -1
  118. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-environment-modal.html +1 -1
  119. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +10 -4
  120. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-host-collections-modal.html +1 -1
  121. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-repository-sets-modal.html +1 -1
  122. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-subscriptions-modal.html +2 -2
  123. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-traces-modal.html +1 -1
  124. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +2 -0
  125. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-actions.html +1 -0
  126. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-applicable.html +1 -0
  127. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-installed.html +2 -0
  128. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +2 -4
  129. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +2 -4
  130. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-details.html +0 -1
  131. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +0 -4
  132. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb.controller.js +4 -2
  133. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-info.html +12 -3
  134. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/docker-tag-repositories.controller.js +43 -0
  135. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-details.html +7 -0
  136. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-environments.html +0 -1
  137. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-info.html +0 -7
  138. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-repositories.html +60 -0
  139. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.controller.js +0 -8
  140. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.routes.js +10 -0
  141. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/views/docker-tags.html +0 -4
  142. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/apply-errata.controller.js +1 -1
  143. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/erratum-content-hosts.controller.js +4 -2
  144. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-content-hosts.html +5 -4
  145. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-info.html +2 -2
  146. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-packages.html +2 -2
  147. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/apply-errata-confirm.html +7 -0
  148. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata.html +1 -1
  149. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-add-hosts.controller.js +4 -2
  150. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-hosts.controller.js +4 -2
  151. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-add-hosts.html +4 -3
  152. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-hosts-list.html +4 -3
  153. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +590 -175
  154. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn.po +5157 -0
  155. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn_IN.po +5157 -0
  156. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ca.po +5157 -0
  157. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/cs_CZ.po +5204 -0
  158. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_AT.po +5153 -0
  159. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_DE.po +5159 -0
  160. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/el.po +5157 -0
  161. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_GB.po +5158 -0
  162. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_US.po +5153 -0
  163. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/et_EE.po +5153 -0
  164. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gl.po +5157 -0
  165. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gu.po +5157 -0
  166. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/he_IL.po +5191 -0
  167. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/hi.po +5157 -0
  168. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/id.po +5136 -0
  169. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +5303 -0
  170. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ka.po +34 -14
  171. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/kn.po +5157 -0
  172. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ml_IN.po +5153 -0
  173. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/mr.po +5157 -0
  174. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/nl_NL.po +5161 -0
  175. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/or.po +5157 -0
  176. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pa.po +5157 -0
  177. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl.po +5192 -0
  178. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl_PL.po +5187 -0
  179. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt.po +5174 -0
  180. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro.po +5170 -0
  181. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro_RO.po +5170 -0
  182. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +5279 -0
  183. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sl.po +5191 -0
  184. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sv_SE.po +5158 -0
  185. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta.po +5157 -0
  186. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta_IN.po +5157 -0
  187. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/te.po +5157 -0
  188. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/tr.po +5157 -0
  189. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi.po +5136 -0
  190. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi_VN.po +5136 -0
  191. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh.po +5136 -0
  192. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +38 -1
  193. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/organizations/views/organization-selector.html +1 -1
  194. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/package.controller.js +8 -2
  195. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-info.html +12 -3
  196. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-advanced-sync-modal.html +1 -1
  197. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-http-proxy-modal.html +1 -1
  198. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-sync-plan-modal.html +1 -1
  199. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +13 -4
  200. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +1 -1
  201. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +12 -2
  202. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details-reclaim-space-modal.html +1 -1
  203. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +6 -0
  204. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +17 -0
  205. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-manifest-lists.html +1 -1
  206. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-manifests.html +1 -1
  207. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-tags.html +0 -4
  208. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +6 -4
  209. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +20 -1
  210. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository.factory.js +1 -0
  211. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories-reclaim-space-modal.html +1 -1
  212. data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/activation_keys.scss +13 -0
  213. data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/bastion_katello.scss +1 -0
  214. data/lib/katello/engine.rb +0 -7
  215. data/lib/katello/plugin.rb +18 -15
  216. data/lib/katello/tasks/upgrades/4.9/update_custom_products_enablement.rake +11 -0
  217. data/lib/katello/version.rb +1 -1
  218. data/locale/action_names.rb +1 -2
  219. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  220. data/locale/bn/katello.po +215 -183
  221. data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
  222. data/locale/bn_IN/katello.po +8901 -0
  223. data/locale/ca/LC_MESSAGES/katello.mo +0 -0
  224. data/locale/ca/katello.po +8900 -0
  225. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  226. data/locale/cs/katello.po +216 -185
  227. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  228. data/locale/cs_CZ/katello.po +8906 -0
  229. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  230. data/locale/de/katello.po +223 -191
  231. data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
  232. data/locale/de_AT/katello.po +8897 -0
  233. data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
  234. data/locale/de_DE/katello.po +8906 -0
  235. data/locale/el/LC_MESSAGES/katello.mo +0 -0
  236. data/locale/el/katello.po +8900 -0
  237. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  238. data/locale/en/katello.po +215 -183
  239. data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
  240. data/locale/en_GB/katello.po +8902 -0
  241. data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
  242. data/locale/en_US/katello.po +8897 -0
  243. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  244. data/locale/es/katello.po +218 -187
  245. data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
  246. data/locale/et_EE/katello.po +8897 -0
  247. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  248. data/locale/fr/katello.po +233 -204
  249. data/locale/gl/LC_MESSAGES/katello.mo +0 -0
  250. data/locale/gl/katello.po +8900 -0
  251. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  252. data/locale/gu/katello.po +215 -183
  253. data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
  254. data/locale/he_IL/katello.po +8902 -0
  255. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  256. data/locale/hi/katello.po +215 -183
  257. data/locale/id/LC_MESSAGES/katello.mo +0 -0
  258. data/locale/id/katello.po +8896 -0
  259. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  260. data/locale/it/katello.po +216 -185
  261. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  262. data/locale/ja/katello.po +233 -202
  263. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  264. data/locale/ka/katello.po +223 -191
  265. data/locale/katello.pot +1844 -1796
  266. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  267. data/locale/kn/katello.po +215 -183
  268. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  269. data/locale/ko/katello.po +216 -183
  270. data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
  271. data/locale/ml_IN/katello.po +8897 -0
  272. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  273. data/locale/mr/katello.po +215 -183
  274. data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
  275. data/locale/nl_NL/katello.po +8907 -0
  276. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  277. data/locale/or/katello.po +215 -183
  278. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  279. data/locale/pa/katello.po +215 -183
  280. data/locale/pl/LC_MESSAGES/katello.mo +0 -0
  281. data/locale/pl/katello.po +8903 -0
  282. data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
  283. data/locale/pl_PL/katello.po +8899 -0
  284. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  285. data/locale/pt/katello.po +215 -183
  286. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  287. data/locale/pt_BR/katello.po +218 -187
  288. data/locale/ro/LC_MESSAGES/katello.mo +0 -0
  289. data/locale/ro/katello.po +8897 -0
  290. data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
  291. data/locale/ro_RO/katello.po +8898 -0
  292. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  293. data/locale/ru/katello.po +216 -184
  294. data/locale/sl/LC_MESSAGES/katello.mo +0 -0
  295. data/locale/sl/katello.po +8901 -0
  296. data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
  297. data/locale/sv_SE/katello.po +8903 -0
  298. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  299. data/locale/ta/katello.po +215 -183
  300. data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
  301. data/locale/ta_IN/katello.po +8901 -0
  302. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  303. data/locale/te/katello.po +215 -183
  304. data/locale/tr/LC_MESSAGES/katello.mo +0 -0
  305. data/locale/tr/katello.po +8900 -0
  306. data/locale/vi/LC_MESSAGES/katello.mo +0 -0
  307. data/locale/vi/katello.po +8896 -0
  308. data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
  309. data/locale/vi_VN/katello.po +8897 -0
  310. data/locale/zh/LC_MESSAGES/katello.mo +0 -0
  311. data/locale/zh/katello.po +8896 -0
  312. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  313. data/locale/zh_CN/katello.po +233 -202
  314. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  315. data/locale/zh_TW/katello.po +216 -183
  316. data/package.json +1 -0
  317. data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +1 -0
  318. data/webpack/components/Bookmark/AddBookmarkModal.js +8 -2
  319. data/webpack/components/Content/ContentTable.js +1 -0
  320. data/webpack/components/Content/Details/ContentDetailInfo.js +1 -1
  321. data/webpack/components/Content/Details/ContentDetails.js +3 -3
  322. data/webpack/components/Content/Details/__tests__/__snapshots__/ContentDetailInfo.test.js.snap +1 -0
  323. data/webpack/components/Content/Details/__tests__/__snapshots__/ContentDetails.test.js.snap +4 -0
  324. data/webpack/components/Content/__tests__/__snapshots__/ContentTable.test.js.snap +1 -0
  325. data/webpack/components/RoutedTabs/index.js +1 -1
  326. data/webpack/components/SelectOrg/SetOrganization.js +7 -1
  327. data/webpack/components/Table/EmptyStateMessage.js +8 -3
  328. data/webpack/components/Table/MainTable.js +8 -2
  329. data/webpack/components/TooltipButton/TooltipButton.js +2 -2
  330. data/webpack/components/TooltipButton/__snapshots__/TooltipButton.test.js.snap +3 -0
  331. data/webpack/components/extensions/HostDetails/ActionsBar/index.js +2 -0
  332. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +81 -24
  333. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.scss +3 -0
  334. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +10 -3
  335. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/HostContentViewActions.js +8 -0
  336. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +3 -2
  337. data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +3 -1
  338. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +1 -1
  339. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +0 -4
  340. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErratumExpansionDetail.js +2 -2
  341. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +1 -5
  342. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +20 -0
  343. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +1 -0
  344. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsConstants.js +16 -0
  345. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +54 -8
  346. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesEnabler.js +1 -0
  347. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/ActivationKeys.test.js.snap +8 -1
  348. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/Force.test.js.snap +1 -0
  349. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/IgnoreSubmanErrors.test.js.snap +1 -0
  350. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/LifeCycleEnvironment.test.js.snap +1 -0
  351. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +2 -1
  352. data/webpack/components/extensions/RegistrationCommands/fields/Force.js +1 -0
  353. data/webpack/components/extensions/RegistrationCommands/fields/IgnoreSubmanErrors.js +1 -0
  354. data/webpack/components/extensions/RegistrationCommands/fields/LifecycleEnvironment.js +1 -0
  355. data/webpack/components/extensions/about/index.js +2 -2
  356. data/webpack/components/pf3Table/components/Table.js +1 -0
  357. data/webpack/scenes/AlternateContentSources/ACSIndexPage.js +6 -1
  358. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCredentials.js +15 -2
  359. data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +6 -1
  360. data/webpack/scenes/AlternateContentSources/Details/ACSExpandableDetails.js +4 -1
  361. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +9 -0
  362. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditURLPaths.js +1 -0
  363. data/webpack/scenes/Content/Details/ContentDetails.js +4 -2
  364. data/webpack/scenes/Content/Details/ContentRepositories.js +1 -1
  365. data/webpack/scenes/Content/GenericContentPage.js +1 -1
  366. data/webpack/scenes/Content/Table/ContentTable.js +2 -2
  367. data/webpack/scenes/ContentViews/ContentViewsConstants.js +4 -0
  368. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignActivationKeysForm.js +26 -13
  369. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +27 -13
  370. data/webpack/scenes/ContentViews/Delete/__tests__/cvVersionsData.fixtures.json +8 -4
  371. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +3 -2
  372. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentEnvironments.js +1 -1
  373. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +25 -24
  374. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +1 -1
  375. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +19 -3
  376. data/webpack/scenes/ContentViews/Details/ContentViewDetailReducer.js +6 -0
  377. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +2 -0
  378. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +2 -2
  379. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +15 -2
  380. data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +5 -1
  381. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +13 -9
  382. data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +19 -6
  383. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +5 -1
  384. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +50 -51
  385. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +45 -44
  386. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +45 -44
  387. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +13 -8
  388. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +4 -3
  389. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +5 -2
  390. data/webpack/scenes/ContentViews/Details/Filters/FilterRuleConstants.js +6 -0
  391. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVDebMatchContentModal.js +3 -2
  392. data/webpack/scenes/ContentViews/Details/Filters/Rules/ContainerTag/AddEditContainerTagRuleModal.js +10 -2
  393. data/webpack/scenes/ContentViews/Details/Filters/Rules/DebPackage/AddEditDebPackageRuleModal.js +5 -1
  394. data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +7 -0
  395. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +37 -24
  396. data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +3 -3
  397. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +1 -1
  398. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +78 -8
  399. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +27 -8
  400. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailNoReposAdded.fixtures.json +13 -0
  401. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/ActionSummary.js +1 -1
  402. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignActivationKeys.js +16 -16
  403. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignHosts.js +16 -16
  404. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/BulkDeleteVersions.fixtures.json +6 -3
  405. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/contentViewVersion.fixtures.json +10 -5
  406. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareConfig.js +9 -2
  407. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareTable.js +1 -0
  408. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionOneDetials.fixtures.json +2 -1
  409. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionThreeDetails.fixtures.json +2 -1
  410. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionTwoDetails.fixtures.json +2 -1
  411. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersions.fixtures.json +12 -6
  412. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionOneDetails.fixtures.json +2 -1
  413. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionTwoDetails.fixtures.json +2 -1
  414. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +25 -4
  415. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +4 -2
  416. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +26 -13
  417. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +30 -17
  418. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +1 -0
  419. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/versionsResponseData.fixtures.json +6 -3
  420. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +1 -1
  421. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +2 -2
  422. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +8 -1
  423. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +1 -1
  424. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +55 -6
  425. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionComponent.fixtures.json +6 -3
  426. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.fixtures.json +2 -1
  427. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.fixtures.json +8 -4
  428. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +1 -1
  429. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersionsWithTask.fixtures.json +4 -2
  430. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetails.fixtures.json +1 -0
  431. data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +4 -2
  432. data/webpack/scenes/ContentViews/Publish/CVPublishForm.js +30 -3
  433. data/webpack/scenes/ContentViews/Publish/CVPublishReview.js +24 -2
  434. data/webpack/scenes/ContentViews/Publish/cvPublishForm.scss +4 -0
  435. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +2 -2
  436. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +1 -3
  437. data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +2 -1
  438. data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelect.js +2 -1
  439. data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelectOption.js +3 -2
  440. data/webpack/scenes/ContentViews/components/ContentViewSelect/helpers.js +32 -0
  441. data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +52 -42
  442. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +1 -0
  443. data/webpack/scenes/ContentViews/components/FiltersAppliedIcon.js +17 -0
  444. data/webpack/scenes/ContentViews/components/NeedsPublishIcon.js +45 -0
  445. data/webpack/scenes/ContentViews/components/NeedsPublishIcon.scss +9 -0
  446. data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +1 -1
  447. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +49 -22
  448. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceTemplate.js +7 -1
  449. data/webpack/scenes/Hosts/ChangeContentSource/components/FormField.js +1 -0
  450. data/webpack/scenes/Hosts/ChangeContentSource/components/HostsModal.js +2 -0
  451. data/webpack/scenes/Hosts/ChangeContentSource/index.js +2 -0
  452. data/webpack/scenes/ModuleStreams/Details/__tests__/__snapshots__/ModuleStreamDetailInfo.test.js.snap +1 -0
  453. data/webpack/scenes/ModuleStreams/__tests__/__snapshots__/ModuleStreamsTable.test.js.snap +1 -0
  454. data/webpack/scenes/RedHatRepositories/RedHatRepositoriesPage.js +2 -0
  455. data/webpack/scenes/RedHatRepositories/__tests__/__snapshots__/RedHatRepositoriesPage.test.js.snap +2 -0
  456. data/webpack/scenes/RedHatRepositories/components/RecommendedRepositorySetsToggler.js +6 -1
  457. data/webpack/scenes/RedHatRepositories/components/RepositorySetRepositories.js +1 -1
  458. data/webpack/scenes/RedHatRepositories/components/__tests__/__snapshots__/RecommendedRepositorySetsToggler.test.js.snap +1 -0
  459. data/webpack/scenes/RedHatRepositories/components/__tests__/__snapshots__/RepositorySetRepositories.test.js.snap +1 -0
  460. data/webpack/scenes/RedHatRepositories/helpers.js +2 -0
  461. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailAssociations.js +1 -1
  462. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailInfo.js +2 -2
  463. data/webpack/scenes/Subscriptions/Details/SubscriptionDetails.js +4 -4
  464. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetailAssociations.test.js.snap +1 -0
  465. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetailInfo.test.js.snap +2 -0
  466. data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetails.test.js.snap +4 -0
  467. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/NetworkSyncForm.js +2 -1
  468. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +5 -4
  469. data/webpack/scenes/Subscriptions/Manifest/SimpleContentAccess.js +1 -0
  470. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +1 -1
  471. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsPage.js +3 -1
  472. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/__snapshots__/UpstreamSubscriptionsPage.test.js.snap +3 -0
  473. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +1 -0
  474. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTable.js +1 -1
  475. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.js +5 -6
  476. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/__snapshots__/SubscriptionsToolbar.test.js.snap +60 -5
  477. data/webpack/utils/useKatelloDocUrl.js +18 -0
  478. metadata +163 -22
  479. data/app/lib/actions/katello/organization/simple_content_access/prepare_content_overrides.rb +0 -36
  480. data/app/lib/katello/util/content_overrides_migrator.rb +0 -98
  481. data/webpack/components/extensions/HostDetails/common/KatelloAgentDeprecationAlert.js +0 -23
@@ -15,6 +15,7 @@ import { selectCVFilterDetails } from '../ContentViewDetailSelectors';
15
15
  import AffectedRepositoryTable from './AffectedRepositories/AffectedRepositoryTable';
16
16
  import { editCVFilterRule } from '../ContentViewDetailActions';
17
17
  import { hasPermission } from '../../helpers';
18
+ import { CONTENT_VIEW_NEEDS_PUBLISH } from '../../ContentViewsConstants';
18
19
 
19
20
  export const dateFormat = date => `${(date.getMonth() + 1).toString().padStart(2, '0')}/${date.getDate().toString().padStart(2, '0')}/${date.getFullYear()}`;
20
21
 
@@ -68,7 +69,10 @@ const CVErrataDateFilterContent = ({
68
69
  types: selectedTypes,
69
70
  date_type: dateType,
70
71
  },
71
- () => push('/filters'),
72
+ () => {
73
+ dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH });
74
+ push('/filters');
75
+ },
72
76
  ));
73
77
  };
74
78
 
@@ -55,7 +55,6 @@ const CVErrataIDFilterContent = ({
55
55
  const filterLoaded = filterLoad === 'RESOLVED';
56
56
  const loading = status === STATUS.PENDING;
57
57
  const [bulkActionOpen, setBulkActionOpen] = useState(false);
58
- const deselectAll = () => setRows(rows.map(row => ({ ...row, selected: false })));
59
58
  const toggleBulkAction = () => setBulkActionOpen(prevState => !prevState);
60
59
  const hasAddedSelected = rows.some(({ selected, added }) => selected && added);
61
60
  const hasNotAddedSelected = rows.some(({ selected, added }) => selected && !added);
@@ -137,7 +136,6 @@ const CVErrataIDFilterContent = ({
137
136
  selected && !added).map(({ erratumId }) => ({ errata_ids: [erratumId] })); // eslint-disable-line max-len
138
137
  dispatch(addContentViewFilterRules(filterId, addData, () =>
139
138
  dispatch(getContentViewDetails(cvId))));
140
- deselectAll();
141
139
  };
142
140
 
143
141
  const bulkRemove = () => {
@@ -147,7 +145,6 @@ const CVErrataIDFilterContent = ({
147
145
  selected && added).map(({ erratumRuleId }) => erratumRuleId);
148
146
  dispatch(deleteContentViewFilterRules(filterId, erratumRuleIds, () =>
149
147
  dispatch(getContentViewDetails(cvId))));
150
- deselectAll();
151
148
  };
152
149
 
153
150
  useEffect(() => {
@@ -204,6 +201,7 @@ const CVErrataIDFilterContent = ({
204
201
  if (selectedTypes.length === 1) return;
205
202
  setSelectedTypes(selectedTypes.filter(e => e !== selection));
206
203
  } else setSelectedTypes([...selectedTypes, selection]);
204
+ setTypeSelectOpen(false);
207
205
  };
208
206
 
209
207
  const setValidStartDate = (e, value) => {
@@ -239,8 +237,8 @@ const CVErrataIDFilterContent = ({
239
237
  dateType === 'issued' &&
240
238
  statusSelected === ALL_STATUSES;
241
239
 
242
- const emptyContentTitle = __('No errata available to add to this filter.');
243
- const emptyContentBody = __('No errata available for this content view.');
240
+ const emptyContentTitle = __('No errata filter rules yet');
241
+ const emptyContentBody = __('No errata to add yet');
244
242
  const emptySearchTitle = __('No matching filter rules found.');
245
243
  const emptySearchBody = __('Try changing your search settings.');
246
244
 
@@ -283,56 +281,57 @@ const CVErrataIDFilterContent = ({
283
281
  dateType, apiStartDate, apiEndDate]}
284
282
  fetchItems={useCallback(params =>
285
283
  getCVFilterErrataWithOptions(params), [getCVFilterErrataWithOptions])}
286
- actionButtons={
287
- <Split hasGutter>
288
- <SplitItem data-testid="allAddedNotAdded">
289
- <SelectableDropdown
290
- items={[ALL_STATUSES, ADDED, NOT_ADDED]}
291
- title=""
292
- selected={statusSelected}
293
- setSelected={setStatusSelected}
294
- placeholderText={__('Status')}
295
- aria-label="status_selector"
296
- ouiaId="status-selector"
297
- />
298
- </SplitItem>
299
- <SplitItem>
300
- <Select
301
- aria-label="errata_type_selector"
302
- ouiaId="errata_type_selector"
303
- variant={SelectVariant.checkbox}
304
- onToggle={setTypeSelectOpen}
305
- onSelect={(_event, selection) => onTypeSelect(selection)}
306
- selections={selectedTypes}
307
- isOpen={typeSelectOpen}
308
- placeholderText={__('Errata type')}
309
- isCheckboxSelectionBadgeHidden
310
- >
311
- <SelectOption aria-label="security_selection" isDisabled={singleSelection('security')} key="security" value="security">
312
- <p style={{ marginTop: '4px' }}>
313
- {__('Security')}
314
- </p>
315
- </SelectOption>
316
- <SelectOption isDisabled={singleSelection('enhancement')} key="enhancement" value="enhancement">
317
- <p style={{ marginTop: '4px' }}>
318
- {__('Enhancement')}
319
- </p>
320
- </SelectOption>
321
- <SelectOption isDisabled={singleSelection('bugfix')} key="bugfix" value="bugfix">
322
- <p style={{ marginTop: '4px' }}>
323
- {__('Bugfix')}
324
- </p>
325
- </SelectOption>
326
- </Select>
327
- </SplitItem>
328
- {hasPermission(permissions, 'edit_content_views') &&
284
+ actionButtons={hasPermission(permissions, 'edit_content_views') &&
285
+ status === STATUS.RESOLVED && rows.length !== 0 &&
286
+ <Split hasGutter>
287
+ <SplitItem data-testid="allAddedNotAdded">
288
+ <SelectableDropdown
289
+ items={[ALL_STATUSES, ADDED, NOT_ADDED]}
290
+ title=""
291
+ selected={statusSelected}
292
+ setSelected={setStatusSelected}
293
+ placeholderText={__('Status')}
294
+ aria-label="status_selector"
295
+ ouiaId="status-selector"
296
+ />
297
+ </SplitItem>
298
+ <SplitItem>
299
+ <Select
300
+ aria-label="errata_type_selector"
301
+ ouiaId="errata_type_selector"
302
+ variant={SelectVariant.checkbox}
303
+ onToggle={setTypeSelectOpen}
304
+ onSelect={(_event, selection) => onTypeSelect(selection)}
305
+ selections={selectedTypes}
306
+ isOpen={typeSelectOpen}
307
+ placeholderText={__('Errata type')}
308
+ isCheckboxSelectionBadgeHidden
309
+ >
310
+ <SelectOption aria-label="security_selection" isDisabled={singleSelection('security')} key="security" value="security">
311
+ <p style={{ marginTop: '4px' }}>
312
+ {__('Security')}
313
+ </p>
314
+ </SelectOption>
315
+ <SelectOption isDisabled={singleSelection('enhancement')} key="enhancement" value="enhancement">
316
+ <p style={{ marginTop: '4px' }}>
317
+ {__('Enhancement')}
318
+ </p>
319
+ </SelectOption>
320
+ <SelectOption isDisabled={singleSelection('bugfix')} key="bugfix" value="bugfix">
321
+ <p style={{ marginTop: '4px' }}>
322
+ {__('Bugfix')}
323
+ </p>
324
+ </SelectOption>
325
+ </Select>
326
+ </SplitItem>
327
+ {hasPermission(permissions, 'edit_content_views') &&
329
328
  <SplitItem>
330
329
  <Button ouiaId="add-errata-id-button" isDisabled={!hasNotAddedSelected} onClick={bulkAdd} variant="primary" aria-label="add_filter_rule">
331
330
  {__('Add errata')}
332
331
  </Button>
333
332
  </SplitItem>
334
333
  }
335
- {hasPermission(permissions, 'edit_content_views') &&
334
+ {hasPermission(permissions, 'edit_content_views') &&
336
335
  <SplitItem>
337
336
  <Dropdown
338
337
  toggle={<KebabToggle aria-label="bulk_actions" onToggle={toggleBulkAction} />}
@@ -347,9 +346,9 @@ const CVErrataIDFilterContent = ({
347
346
  />
348
347
  </SplitItem>
349
348
  }
350
- </Split>
349
+ </Split>
351
350
  }
352
- nodesBelowSearch={
351
+ nodesBelowSearch={status === STATUS.RESOLVED && rows.length !== 0 &&
353
352
  <>
354
353
  <Flex>
355
354
  <FlexItem span={2} spacer={{ default: 'spacerNone' }}>
@@ -194,8 +194,8 @@ const CVModuleStreamFilterContent = ({
194
194
  },
195
195
  ];
196
196
 
197
- const emptyContentTitle = __('No rules have been added to this filter.');
198
- const emptyContentBody = __("Add to this filter using the 'Add filter rule' button.");
197
+ const emptyContentTitle = __('No module stream filter rules yet');
198
+ const emptyContentBody = __('No module streams to add yet.');
199
199
  const emptySearchTitle = __('No matching filter rules found.');
200
200
  const emptySearchBody = __('Try changing your search settings.');
201
201
 
@@ -236,49 +236,50 @@ const CVModuleStreamFilterContent = ({
236
236
  actionResolver={hasPermission(permissions, 'edit_content_views') ? actionResolver : null}
237
237
  onSelect={hasPermission(permissions, 'edit_content_views') ? onSelect(rows, setRows) : null}
238
238
  actionButtons={hasPermission(permissions, 'edit_content_views') &&
239
- <Split hasGutter>
240
- <SplitItem data-testid="allAddedNotAdded">
241
- <Select
242
- variant={SelectVariant.single}
243
- onToggle={setSelectOpen}
244
- ouiaId="added-notAdded-selector"
245
- onSelect={(_event, selection) => {
246
- setSelectedIndex(allAddedNotAdded.indexOf(selection));
247
- setSelectOpen(false);
248
- }}
249
- selections={selectedAdded}
250
- isOpen={selectOpen}
251
- isCheckboxSelectionBadgeHidden
252
- >
253
- {allAddedNotAdded.map(item =>
254
- <SelectOption aria-label={item} key={item} value={item} />)}
255
- </Select>
256
- </SplitItem>
257
- <SplitItem>
258
- <Button
259
- ouiaId="add-module-stream-rule-button"
260
- isDisabled={!hasNotAddedSelected}
261
- onClick={bulkAdd}
262
- variant="primary"
263
- aria-label="add_filter_rule"
264
- >
265
- {__('Add filter rule')}
266
- </Button>
267
- </SplitItem>
268
- <SplitItem>
269
- <Dropdown
270
- toggle={<KebabToggle aria-label="bulk_actions" onToggle={toggleBulkAction} />}
271
- isOpen={bulkActionOpen}
272
- ouiaId="bulk-actions-dropdown"
273
- isPlain
274
- dropdownItems={[
275
- <DropdownItem ouiaId="bulk-remove" aria-label="bulk_remove" key="bulk_remove" isDisabled={!hasAddedSelected} component="button" onClick={bulkRemove}>
276
- {__('Remove')}
277
- </DropdownItem>]
239
+ status === STATUS.RESOLVED && rows.length !== 0 &&
240
+ <Split hasGutter>
241
+ <SplitItem data-testid="allAddedNotAdded">
242
+ <Select
243
+ variant={SelectVariant.single}
244
+ onToggle={setSelectOpen}
245
+ ouiaId="added-notAdded-selector"
246
+ onSelect={(_event, selection) => {
247
+ setSelectedIndex(allAddedNotAdded.indexOf(selection));
248
+ setSelectOpen(false);
249
+ }}
250
+ selections={selectedAdded}
251
+ isOpen={selectOpen}
252
+ isCheckboxSelectionBadgeHidden
253
+ >
254
+ {allAddedNotAdded.map(item =>
255
+ <SelectOption aria-label={item} key={item} value={item} />)}
256
+ </Select>
257
+ </SplitItem>
258
+ <SplitItem>
259
+ <Button
260
+ ouiaId="add-module-stream-rule-button"
261
+ isDisabled={!hasNotAddedSelected}
262
+ onClick={bulkAdd}
263
+ variant="primary"
264
+ aria-label="add_filter_rule"
265
+ >
266
+ {__('Add filter rule')}
267
+ </Button>
268
+ </SplitItem>
269
+ <SplitItem>
270
+ <Dropdown
271
+ toggle={<KebabToggle aria-label="bulk_actions" onToggle={toggleBulkAction} />}
272
+ isOpen={bulkActionOpen}
273
+ ouiaId="bulk-actions-dropdown"
274
+ isPlain
275
+ dropdownItems={[
276
+ <DropdownItem ouiaId="bulk-remove" aria-label="bulk_remove" key="bulk_remove" isDisabled={!hasAddedSelected} component="button" onClick={bulkRemove}>
277
+ {__('Remove')}
278
+ </DropdownItem>]
278
279
  }
279
- />
280
- </SplitItem>
281
- </Split>
280
+ />
281
+ </SplitItem>
282
+ </Split>
282
283
  }
283
284
  />
284
285
  </div>
@@ -184,8 +184,8 @@ const CVPackageGroupFilterContent = ({
184
184
  },
185
185
  ];
186
186
 
187
- const emptyContentTitle = __('No rules have been added to this filter.');
188
- const emptyContentBody = __("Add to this filter using the 'Add filter rule' button.");
187
+ const emptyContentTitle = __('No package groups yet');
188
+ const emptyContentBody = __('Add repositories with package groups to content view to select them here.');
189
189
  const emptySearchTitle = __('No matching filter rules found.');
190
190
  const emptySearchBody = __('Try changing your search settings.');
191
191
  const resetFilters = () => setSelectedIndex(0);
@@ -226,49 +226,50 @@ const CVPackageGroupFilterContent = ({
226
226
  actionResolver={hasPermission(permissions, 'edit_content_views') ? actionResolver : null}
227
227
  onSelect={hasPermission(permissions, 'edit_content_views') ? onSelect(rows, setRows) : null}
228
228
  actionButtons={hasPermission(permissions, 'edit_content_views') &&
229
- <Split hasGutter>
230
- <SplitItem data-testid="allAddedNotAdded">
231
- <Select
232
- variant={SelectVariant.single}
233
- onToggle={setSelectOpen}
234
- ouiaId="allAddedNotAdded"
235
- onSelect={(_event, selection) => {
236
- setSelectedIndex(allAddedNotAdded.indexOf(selection));
237
- setSelectOpen(false);
238
- }}
239
- selections={allAddedNotAdded[selectedIndex]}
240
- isOpen={selectOpen}
241
- isCheckboxSelectionBadgeHidden
242
- >
243
- {allAddedNotAdded.map(item =>
244
- <SelectOption aria-label={item} key={item} value={item} />)}
245
- </Select>
246
- </SplitItem>
247
- <SplitItem>
248
- <Button
249
- ouiaId="add-package-group-filter-rule-button"
250
- isDisabled={!hasNotAddedSelected}
251
- onClick={bulkAdd}
252
- variant="primary"
253
- aria-label="add_filter_rule"
254
- >
255
- {__('Add filter rule')}
256
- </Button>
257
- </SplitItem>
258
- <SplitItem>
259
- <Dropdown
260
- toggle={<KebabToggle aria-label="bulk_actions" onToggle={toggleBulkAction} />}
261
- isOpen={bulkActionOpen}
262
- ouiaId="cv-package-group-filter-bulk-actions-dropdown"
263
- isPlain
264
- dropdownItems={[
265
- <DropdownItem ouiaId="bulk_remove" aria-label="bulk_remove" key="bulk_remove" isDisabled={!hasAddedSelected} component="button" onClick={bulkRemove}>
266
- {__('Remove')}
267
- </DropdownItem>]
229
+ status === STATUS.RESOLVED && rows.length !== 0 &&
230
+ <Split hasGutter>
231
+ <SplitItem data-testid="allAddedNotAdded">
232
+ <Select
233
+ variant={SelectVariant.single}
234
+ onToggle={setSelectOpen}
235
+ ouiaId="allAddedNotAdded"
236
+ onSelect={(_event, selection) => {
237
+ setSelectedIndex(allAddedNotAdded.indexOf(selection));
238
+ setSelectOpen(false);
239
+ }}
240
+ selections={allAddedNotAdded[selectedIndex]}
241
+ isOpen={selectOpen}
242
+ isCheckboxSelectionBadgeHidden
243
+ >
244
+ {allAddedNotAdded.map(item =>
245
+ <SelectOption aria-label={item} key={item} value={item} />)}
246
+ </Select>
247
+ </SplitItem>
248
+ <SplitItem>
249
+ <Button
250
+ ouiaId="add-package-group-filter-rule-button"
251
+ isDisabled={!hasNotAddedSelected}
252
+ onClick={bulkAdd}
253
+ variant="primary"
254
+ aria-label="add_filter_rule"
255
+ >
256
+ {__('Add filter rule')}
257
+ </Button>
258
+ </SplitItem>
259
+ <SplitItem>
260
+ <Dropdown
261
+ toggle={<KebabToggle aria-label="bulk_actions" onToggle={toggleBulkAction} />}
262
+ isOpen={bulkActionOpen}
263
+ ouiaId="cv-package-group-filter-bulk-actions-dropdown"
264
+ isPlain
265
+ dropdownItems={[
266
+ <DropdownItem ouiaId="bulk_remove" aria-label="bulk_remove" key="bulk_remove" isDisabled={!hasAddedSelected} component="button" onClick={bulkRemove}>
267
+ {__('Remove')}
268
+ </DropdownItem>]
268
269
  }
269
- />
270
- </SplitItem>
271
- </Split>
270
+ />
271
+ </SplitItem>
272
+ </Split>
272
273
  }
273
274
  />
274
275
  </div>
@@ -18,6 +18,11 @@ import CVRpmMatchContentModal from './MatchContentModal/CVRpmMatchContentModal';
18
18
  import AddEditPackageRuleModal from './Rules/Package/AddEditPackageRuleModal';
19
19
  import AffectedRepositoryTable from './AffectedRepositories/AffectedRepositoryTable';
20
20
  import { hasPermission } from '../../helpers';
21
+ import { emptyContentTitle,
22
+ emptyContentBody,
23
+ emptySearchTitle,
24
+ emptySearchBody } from './FilterRuleConstants';
25
+ import { CONTENT_VIEW_NEEDS_PUBLISH } from '../../ContentViewsConstants';
21
26
 
22
27
  const CVRpmFilterContent = ({
23
28
  cvId, filterId, inclusion, showAffectedRepos, setShowAffectedRepos, details,
@@ -104,10 +109,6 @@ const CVRpmFilterContent = ({
104
109
  }
105
110
  }, [showAffectedRepos, repositories.length]);
106
111
 
107
- const emptyContentTitle = __('No rules have been added to this filter.');
108
- const emptyContentBody = __('Items will appear here when a filter rule is added.');
109
- const emptySearchTitle = __('No matching rules found.');
110
- const emptySearchBody = __('Try changing your search settings.');
111
112
  const tabTitle = (inclusion ? __('Included') : __('Excluded')) + __(' RPMs');
112
113
 
113
114
 
@@ -115,8 +116,10 @@ const CVRpmFilterContent = ({
115
116
  {
116
117
  title: __('Remove'),
117
118
  onClick: (_event, _rowId, { id }) => {
118
- dispatch(removeCVFilterRule(filterId, id, () =>
119
- dispatch(getCVFilterRules(filterId))));
119
+ dispatch(removeCVFilterRule(filterId, id, () => {
120
+ dispatch(getCVFilterRules(filterId));
121
+ dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH });
122
+ }));
120
123
  },
121
124
  },
122
125
  {
@@ -139,8 +142,10 @@ const CVRpmFilterContent = ({
139
142
  setBulkActionOpen(false);
140
143
  const rpmFilterIds =
141
144
  rows.filter(row => row.selected).map(selected => selected.id);
142
- dispatch(deleteContentViewFilterRules(filterId, rpmFilterIds, () =>
143
- dispatch(getCVFilterRules(filterId))));
145
+ dispatch(deleteContentViewFilterRules(filterId, rpmFilterIds, () => {
146
+ dispatch(getCVFilterRules(filterId));
147
+ dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH });
148
+ }));
144
149
  deselectAll();
145
150
  };
146
151
 
@@ -20,8 +20,7 @@ import {
20
20
  } from '@patternfly/react-core';
21
21
  import { translate as __ } from 'foremanReact/common/I18n';
22
22
  import { useDispatch } from 'react-redux';
23
- import {
24
- getCVFilterDetails,
23
+ import getContentViewDetails, {
25
24
  editCVFilter,
26
25
  deleteContentViewFilter,
27
26
  } from '../ContentViewDetailActions';
@@ -32,6 +31,7 @@ import { hasPermission } from '../../helpers';
32
31
  import { typeName } from './ContentType';
33
32
  import ActionableDetail from '../../../../components/ActionableDetail';
34
33
  import { ArtifactsWithNoErrataRenderer } from './ArtifactsWithNoErrata';
34
+ import { CONTENT_VIEW_NEEDS_PUBLISH } from '../../ContentViewsConstants';
35
35
 
36
36
  const ContentViewFilterDetailsHeader = ({
37
37
  cvId, filterId, filterDetails, setShowAffectedRepos, details,
@@ -58,7 +58,7 @@ const ContentViewFilterDetailsHeader = ({
58
58
  { [attribute]: val },
59
59
  () => {
60
60
  setLoading(false);
61
- dispatch(getCVFilterDetails(cvId, filterId));
61
+ dispatch(getContentViewDetails(cvId));
62
62
  },
63
63
  () => setLoading(false),
64
64
  ));
@@ -70,6 +70,7 @@ const ContentViewFilterDetailsHeader = ({
70
70
  ouiaId="cv-filter-delete"
71
71
  onClick={() => {
72
72
  dispatch(deleteContentViewFilter(filterId, () => {
73
+ dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH });
73
74
  push(`/content_views/${cvId}#/filters/`);
74
75
  }));
75
76
  }}
@@ -22,6 +22,7 @@ import ContentType from './ContentType';
22
22
  import CVFilterAddModal from './Add/CVFilterAddModal';
23
23
  import { hasPermission } from '../../helpers';
24
24
  import InactiveText from '../../components/InactiveText';
25
+ import { CONTENT_VIEW_NEEDS_PUBLISH } from '../../ContentViewsConstants';
25
26
 
26
27
  const ContentViewFilters = ({ cvId, details }) => {
27
28
  const dispatch = useDispatch();
@@ -83,6 +84,7 @@ const ContentViewFilters = ({ cvId, details }) => {
83
84
  const filterIds = rows.filter(({ selected }) => selected).map(({ id }) => id);
84
85
  dispatch(deleteContentViewFilters(cvId, filterIds, () =>
85
86
  dispatch(getContentViewFilters(cvId, {}))));
87
+ dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH });
86
88
  };
87
89
 
88
90
  useEffect(() => {
@@ -103,12 +105,13 @@ const ContentViewFilters = ({ cvId, details }) => {
103
105
  onClick: (_event, _rowId, { id }) => {
104
106
  dispatch(deleteContentViewFilter(id, () =>
105
107
  dispatch(getContentViewFilters(cvId, {}))));
108
+ dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH });
106
109
  },
107
110
  },
108
111
  ];
109
112
 
110
- const emptyContentTitle = __("You currently don't have any filters for this content view.");
111
- const emptyContentBody = __('Filters will appear here when the filter is created.'); // needs link
113
+ const emptyContentTitle = __('No filters yet');
114
+ const emptyContentBody = __('To include or exclude specific content from the content view, create a filter. Without filters, the content view includes everything from the added repositories.');
112
115
  const emptySearchTitle = __('No matching filters found');
113
116
  const emptySearchBody = __('Try changing your search settings.');
114
117
  const showPrimaryAction = true;
@@ -0,0 +1,6 @@
1
+ import { translate as __ } from 'foremanReact/common/I18n';
2
+
3
+ export const emptyContentTitle = __('No rules yet');
4
+ export const emptyContentBody = __('To get started, add a filter rule to this filter');
5
+ export const emptySearchTitle = __('No matching filter rules found.');
6
+ export const emptySearchBody = __('Try changing your search settings.');
@@ -35,6 +35,7 @@ const CVDebMatchContentModal = ({ filterId, onClose, filterRuleId }) => {
35
35
 
36
36
  return (
37
37
  <Modal
38
+ ouiaId="cv-deb-match-content-modal"
38
39
  title={__('Matching content')}
39
40
  variant={ModalVariant.medium}
40
41
  isOpen
@@ -58,7 +59,7 @@ const CVDebMatchContentModal = ({ filterId, onClose, filterRuleId }) => {
58
59
  variant={TableVariant.compact}
59
60
  >
60
61
  <Thead>
61
- <Tr>
62
+ <Tr ouiaId="content-view-deb-match-content-tr">
62
63
  {columnHeaders.map(col =>
63
64
  <Th key={col}>{col}</Th>)}
64
65
  </Tr>
@@ -69,7 +70,7 @@ const CVDebMatchContentModal = ({ filterId, onClose, filterRuleId }) => {
69
70
  nva, description = '-', id,
70
71
  } = result;
71
72
  return (
72
- <Tr key={`${nva}_${description}_${id}`}>
73
+ <Tr key={`${nva}_${description}_${id}`} ouiaId={`${nva}-${id}-tr`}>
73
74
  <Td>
74
75
  <a rel="noreferrer" target="_blank" href={urlBuilder(`debs/${id}`, '')}>{nva}</a>
75
76
  </Td>
@@ -6,6 +6,7 @@ import { Modal, ModalVariant, Form, FormGroup, ActionGroup, Button } from '@patt
6
6
  import { addCVFilterRule, editCVFilterRule, getCVFilterRules } from '../../../ContentViewDetailActions';
7
7
  import { orgId } from '../../../../../../services/api';
8
8
  import SearchText from '../../../../../../components/Search/SearchText';
9
+ import { CONTENT_VIEW_NEEDS_PUBLISH } from '../../../../ContentViewsConstants';
9
10
 
10
11
  const AddEditContainerTagRuleModal = ({
11
12
  onClose, filterId, selectedFilterRuleData, repositoryIds,
@@ -24,13 +25,19 @@ const AddEditContainerTagRuleModal = ({
24
25
  dispatch(editCVFilterRule(
25
26
  filterId,
26
27
  { id, name: tagName },
27
- () => dispatch(getCVFilterRules(filterId)),
28
+ () => {
29
+ dispatch(getCVFilterRules(filterId));
30
+ dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH });
31
+ },
28
32
  ));
29
33
  } else {
30
34
  dispatch(addCVFilterRule(
31
35
  filterId,
32
36
  { name: tagName },
33
- () => dispatch(getCVFilterRules(filterId)),
37
+ () => {
38
+ dispatch(getCVFilterRules(filterId));
39
+ dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH });
40
+ },
34
41
  ));
35
42
  }
36
43
  onClose();
@@ -44,6 +51,7 @@ const AddEditContainerTagRuleModal = ({
44
51
 
45
52
  return (
46
53
  <Modal
54
+ ouiaId="add-edit-container-tag-rule-modal"
47
55
  title={isEditing ? __('Edit filter rule') : __('Add filter rule')}
48
56
  variant={ModalVariant.small}
49
57
  isOpen
@@ -60,6 +60,7 @@ const AddEditDebPackageRuleModal = ({ filterId, onClose, selectedFilterRuleData
60
60
 
61
61
  return (
62
62
  <Modal
63
+ ouiaId="add-edit-deb-filter-rule-modal"
63
64
  title={selectedFilterRuleData ? __('Edit package filter rule') : __('Create package filter rule')}
64
65
  variant={ModalVariant.small}
65
66
  isOpen
@@ -73,6 +74,7 @@ const AddEditDebPackageRuleModal = ({ filterId, onClose, selectedFilterRuleData
73
74
  >
74
75
  <FormGroup label={__('DEB name')} isRequired fieldId="name">
75
76
  <TextInput
77
+ ouiaId="input-name"
76
78
  isRequired
77
79
  type="text"
78
80
  id="name"
@@ -84,6 +86,7 @@ const AddEditDebPackageRuleModal = ({ filterId, onClose, selectedFilterRuleData
84
86
  </FormGroup>
85
87
  <FormGroup label={__('Architecture')} fieldId="architecture">
86
88
  <TextInput
89
+ ouiaId="input-architecture"
87
90
  type="text"
88
91
  id="architecture"
89
92
  aria-label="input_architecture"
@@ -94,6 +97,7 @@ const AddEditDebPackageRuleModal = ({ filterId, onClose, selectedFilterRuleData
94
97
  </FormGroup>
95
98
  <ActionGroup>
96
99
  <Button
100
+ ouiaId="create-deb-package-filter-rule"
97
101
  aria-label="create_deb_package_filter_rule"
98
102
  variant="primary"
99
103
  isDisabled={saving || submitDisabled}
@@ -101,7 +105,7 @@ const AddEditDebPackageRuleModal = ({ filterId, onClose, selectedFilterRuleData
101
105
  >
102
106
  {selectedFilterRuleData ? __('Edit rule') : __('Create rule')}
103
107
  </Button>
104
- <Button variant="link" onClick={onClose}>
108
+ <Button ouiaId="cancel-button" variant="link" onClick={onClose}>
105
109
  {__('Cancel')}
106
110
  </Button>
107
111
  </ActionGroup>