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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/katello/hosts/host_and_hostgroup_edit.js +40 -4
- data/app/assets/javascripts/katello/locale/bn/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/cs/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/de/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/en/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/es/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/fr/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/gu/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/hi/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/it/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/ja/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/ka/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/kn/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/ko/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/locale/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/mr/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/or/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/pa/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/pt/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/pt_BR/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/ru/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/ta/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/te/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/zh_CN/katello.js +1 -0
- data/app/assets/javascripts/katello/locale/zh_TW/katello.js +1 -0
- data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +10 -0
- data/app/controllers/katello/api/v2/activation_keys_controller.rb +1 -0
- data/app/controllers/katello/api/v2/content_view_versions_controller.rb +2 -0
- data/app/controllers/katello/api/v2/content_views_controller.rb +22 -12
- data/app/controllers/katello/api/v2/environments_controller.rb +5 -1
- data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +1 -1
- data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +1 -2
- data/app/controllers/katello/api/v2/organizations_controller.rb +11 -0
- data/app/controllers/katello/api/v2/repositories_controller.rb +4 -3
- data/app/controllers/katello/api/v2/repository_sets_controller.rb +13 -4
- data/app/controllers/katello/api/v2/simple_content_access_controller.rb +1 -3
- data/app/controllers/katello/concerns/api/api_controller.rb +2 -2
- data/app/controllers/katello/concerns/content_facet_hosts_controller_extensions.rb +1 -1
- data/app/helpers/katello/hosts_and_hostgroups_helper.rb +6 -4
- data/app/lib/actions/candlepin/product/content_add.rb +13 -1
- data/app/lib/actions/candlepin/product/content_update.rb +2 -1
- data/app/lib/actions/katello/agent_action.rb +3 -4
- data/app/lib/actions/katello/bulk_agent_action.rb +1 -4
- data/app/lib/actions/katello/content_view/publish.rb +1 -0
- data/app/lib/actions/katello/content_view_version/incremental_update.rb +1 -0
- data/app/lib/actions/katello/host/update_content_view.rb +2 -4
- data/app/lib/actions/katello/organization/simple_content_access/enable.rb +0 -10
- data/app/lib/actions/katello/organization/simple_content_access/toggle.rb +2 -12
- data/app/lib/actions/katello/product/content_create.rb +2 -2
- data/app/lib/actions/katello/repository/destroy.rb +15 -7
- data/app/lib/actions/katello/repository/update.rb +23 -1
- data/app/lib/actions/pulp3/abstract_async_task.rb +2 -0
- data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +5 -12
- data/app/lib/katello/concerns/base_template_scope_extensions.rb +34 -2
- data/app/lib/katello/event_daemon/runner.rb +8 -4
- data/app/lib/katello/repo_discovery.rb +3 -1
- data/app/lib/katello/resources/cdn/katello_cdn.rb +4 -8
- data/app/lib/katello/util/default_enablement_migrator.rb +183 -0
- data/app/models/katello/activation_key.rb +4 -0
- data/app/models/katello/alternate_content_source.rb +13 -8
- data/app/models/katello/candlepin/repository_mapper.rb +0 -1
- data/app/models/katello/concerns/content_view_filter_rule_common.rb +42 -0
- data/app/models/katello/concerns/host_managed_extensions.rb +9 -40
- data/app/models/katello/concerns/smart_proxy_extensions.rb +24 -23
- data/app/models/katello/content.rb +9 -0
- data/app/models/katello/content_view.rb +99 -4
- data/app/models/katello/content_view_environment_content_facet.rb +12 -0
- data/app/models/katello/content_view_filter.rb +5 -1
- data/app/models/katello/content_view_package_filter_rule.rb +0 -1
- data/app/models/katello/content_view_repository.rb +0 -1
- data/app/models/katello/content_view_version.rb +26 -0
- data/app/models/katello/docker_meta_tag.rb +4 -0
- data/app/models/katello/host/content_facet.rb +2 -0
- data/app/models/katello/kt_environment.rb +13 -3
- data/app/models/katello/ping.rb +1 -1
- data/app/models/katello/product.rb +1 -1
- data/app/models/katello/product_content.rb +13 -15
- data/app/models/katello/root_repository.rb +21 -2
- data/app/models/katello/sync_plan.rb +2 -6
- data/app/presenters/katello/host_package_presenter.rb +5 -3
- data/app/services/katello/product_content_finder.rb +6 -1
- data/app/services/katello/pulp3/alternate_content_source.rb +5 -0
- data/app/services/katello/pulp3/module_stream.rb +2 -12
- data/app/services/katello/pulp3/repository/yum.rb +3 -0
- data/app/views/foreman/job_templates/install_errata.erb +4 -4
- data/app/views/foreman/job_templates/install_errata_-_katello_ansible_default.erb +4 -7
- data/app/views/foreman/job_templates/install_errata_by_search_query.erb +5 -6
- data/app/views/katello/api/v2/activation_keys/base.json.rabl +6 -0
- data/app/views/katello/api/v2/common/destroy.json.rabl +2 -1
- data/app/views/katello/api/v2/content_credentials/show.json.rabl +1 -1
- data/app/views/katello/api/v2/content_facet/base.json.rabl +10 -9
- data/app/views/katello/api/v2/content_view_repositories/show_all.json.rabl +6 -0
- data/app/views/katello/api/v2/content_view_versions/base.json.rabl +11 -1
- data/app/views/katello/api/v2/content_views/base.json.rabl +3 -0
- data/app/views/katello/api/v2/docker_tags/_base.json.rabl +4 -0
- data/app/views/katello/api/v2/environments/show.json.rabl +10 -0
- data/app/views/katello/api/v2/host_subscriptions/show.json.rabl +1 -0
- data/app/views/katello/api/v2/repositories/index.json.rabl +6 -0
- data/app/views/katello/api/v2/repositories/show.json.rabl +1 -0
- data/app/views/katello/api/v2/repository_sets/show.json.rabl +8 -2
- data/app/views/overrides/activation_keys/_host_environment_select.html.erb +22 -15
- data/app/views/smart_proxies/_disk_usage.html.erb +2 -0
- data/ca/redhat-uep.pem +53 -53
- data/db/migrate/20220228173251_remove_drpm_from_ignorable_content.rb +0 -1
- data/db/migrate/20230328180352_add_applied_filters_to_katello_content_view_versions.rb +5 -0
- data/db/migrate/20230503190626_add_metadata_expire_to_root.rb +5 -0
- data/db/seeds.d/111-upgrade_tasks.rb +2 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-associations.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-repository-sets.controller.js +16 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-associations-content-hosts.html +4 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-repository-sets.html +15 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-subscriptions.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/katello-agent-notice.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/views/content-credentials.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-errata-modal.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-host-bulk-module-streams-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-environment-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +10 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-host-collections-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-repository-sets-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-subscriptions-modal.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-traces-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +2 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-actions.html +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-applicable.html +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-installed.html +2 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +2 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +2 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-details.html +0 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +0 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/deb.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/details/views/deb-info.html +12 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/docker-tag-repositories.controller.js +43 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-details.html +7 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-environments.html +0 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-info.html +0 -7
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-repositories.html +60 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.controller.js +0 -8
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.routes.js +10 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/views/docker-tags.html +0 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/apply-errata.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/erratum-content-hosts.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-content-hosts.html +5 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-info.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/details/views/erratum-packages.html +2 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/apply-errata-confirm.html +7 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/errata.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-add-hosts.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/host-collection-hosts.controller.js +4 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-add-hosts.html +4 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-hosts-list.html +4 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +590 -175
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn_IN.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ca.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/cs_CZ.po +5204 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_AT.po +5153 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_DE.po +5159 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/el.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_GB.po +5158 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_US.po +5153 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/et_EE.po +5153 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gl.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gu.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/he_IL.po +5191 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/hi.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/id.po +5136 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +5303 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ka.po +34 -14
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/kn.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ml_IN.po +5153 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/mr.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/nl_NL.po +5161 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/or.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pa.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl.po +5192 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl_PL.po +5187 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt.po +5174 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro.po +5170 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro_RO.po +5170 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +5279 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sl.po +5191 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sv_SE.po +5158 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta_IN.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/te.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/tr.po +5157 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi.po +5136 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi_VN.po +5136 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh.po +5136 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +38 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/organizations/views/organization-selector.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/package.controller.js +8 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/details/views/package-info.html +12 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-advanced-sync-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-http-proxy-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/bulk/views/products-bulk-sync-plan-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +13 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-manage-content.controller.js +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +12 -2
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details-reclaim-space-modal.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +6 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +17 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-manifest-lists.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-manifests.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-manage-docker-tags.html +0 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +6 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +20 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository.factory.js +1 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/views/product-repositories-reclaim-space-modal.html +1 -1
- data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/activation_keys.scss +13 -0
- data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/bastion_katello.scss +1 -0
- data/lib/katello/engine.rb +0 -7
- data/lib/katello/plugin.rb +18 -15
- data/lib/katello/tasks/upgrades/4.9/update_custom_products_enablement.rake +11 -0
- data/lib/katello/version.rb +1 -1
- data/locale/action_names.rb +1 -2
- data/locale/bn/LC_MESSAGES/katello.mo +0 -0
- data/locale/bn/katello.po +215 -183
- data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/bn_IN/katello.po +8901 -0
- data/locale/ca/LC_MESSAGES/katello.mo +0 -0
- data/locale/ca/katello.po +8900 -0
- data/locale/cs/LC_MESSAGES/katello.mo +0 -0
- data/locale/cs/katello.po +216 -185
- data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
- data/locale/cs_CZ/katello.po +8906 -0
- data/locale/de/LC_MESSAGES/katello.mo +0 -0
- data/locale/de/katello.po +223 -191
- data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
- data/locale/de_AT/katello.po +8897 -0
- data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
- data/locale/de_DE/katello.po +8906 -0
- data/locale/el/LC_MESSAGES/katello.mo +0 -0
- data/locale/el/katello.po +8900 -0
- data/locale/en/LC_MESSAGES/katello.mo +0 -0
- data/locale/en/katello.po +215 -183
- data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
- data/locale/en_GB/katello.po +8902 -0
- data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
- data/locale/en_US/katello.po +8897 -0
- data/locale/es/LC_MESSAGES/katello.mo +0 -0
- data/locale/es/katello.po +218 -187
- data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
- data/locale/et_EE/katello.po +8897 -0
- data/locale/fr/LC_MESSAGES/katello.mo +0 -0
- data/locale/fr/katello.po +233 -204
- data/locale/gl/LC_MESSAGES/katello.mo +0 -0
- data/locale/gl/katello.po +8900 -0
- data/locale/gu/LC_MESSAGES/katello.mo +0 -0
- data/locale/gu/katello.po +215 -183
- data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
- data/locale/he_IL/katello.po +8902 -0
- data/locale/hi/LC_MESSAGES/katello.mo +0 -0
- data/locale/hi/katello.po +215 -183
- data/locale/id/LC_MESSAGES/katello.mo +0 -0
- data/locale/id/katello.po +8896 -0
- data/locale/it/LC_MESSAGES/katello.mo +0 -0
- data/locale/it/katello.po +216 -185
- data/locale/ja/LC_MESSAGES/katello.mo +0 -0
- data/locale/ja/katello.po +233 -202
- data/locale/ka/LC_MESSAGES/katello.mo +0 -0
- data/locale/ka/katello.po +223 -191
- data/locale/katello.pot +1844 -1796
- data/locale/kn/LC_MESSAGES/katello.mo +0 -0
- data/locale/kn/katello.po +215 -183
- data/locale/ko/LC_MESSAGES/katello.mo +0 -0
- data/locale/ko/katello.po +216 -183
- data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/ml_IN/katello.po +8897 -0
- data/locale/mr/LC_MESSAGES/katello.mo +0 -0
- data/locale/mr/katello.po +215 -183
- data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
- data/locale/nl_NL/katello.po +8907 -0
- data/locale/or/LC_MESSAGES/katello.mo +0 -0
- data/locale/or/katello.po +215 -183
- data/locale/pa/LC_MESSAGES/katello.mo +0 -0
- data/locale/pa/katello.po +215 -183
- data/locale/pl/LC_MESSAGES/katello.mo +0 -0
- data/locale/pl/katello.po +8903 -0
- data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
- data/locale/pl_PL/katello.po +8899 -0
- data/locale/pt/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt/katello.po +215 -183
- data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
- data/locale/pt_BR/katello.po +218 -187
- data/locale/ro/LC_MESSAGES/katello.mo +0 -0
- data/locale/ro/katello.po +8897 -0
- data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
- data/locale/ro_RO/katello.po +8898 -0
- data/locale/ru/LC_MESSAGES/katello.mo +0 -0
- data/locale/ru/katello.po +216 -184
- data/locale/sl/LC_MESSAGES/katello.mo +0 -0
- data/locale/sl/katello.po +8901 -0
- data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
- data/locale/sv_SE/katello.po +8903 -0
- data/locale/ta/LC_MESSAGES/katello.mo +0 -0
- data/locale/ta/katello.po +215 -183
- data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
- data/locale/ta_IN/katello.po +8901 -0
- data/locale/te/LC_MESSAGES/katello.mo +0 -0
- data/locale/te/katello.po +215 -183
- data/locale/tr/LC_MESSAGES/katello.mo +0 -0
- data/locale/tr/katello.po +8900 -0
- data/locale/vi/LC_MESSAGES/katello.mo +0 -0
- data/locale/vi/katello.po +8896 -0
- data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
- data/locale/vi_VN/katello.po +8897 -0
- data/locale/zh/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh/katello.po +8896 -0
- data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_CN/katello.po +233 -202
- data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
- data/locale/zh_TW/katello.po +216 -183
- data/package.json +1 -0
- data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +1 -0
- data/webpack/components/Bookmark/AddBookmarkModal.js +8 -2
- data/webpack/components/Content/ContentTable.js +1 -0
- data/webpack/components/Content/Details/ContentDetailInfo.js +1 -1
- data/webpack/components/Content/Details/ContentDetails.js +3 -3
- data/webpack/components/Content/Details/__tests__/__snapshots__/ContentDetailInfo.test.js.snap +1 -0
- data/webpack/components/Content/Details/__tests__/__snapshots__/ContentDetails.test.js.snap +4 -0
- data/webpack/components/Content/__tests__/__snapshots__/ContentTable.test.js.snap +1 -0
- data/webpack/components/RoutedTabs/index.js +1 -1
- data/webpack/components/SelectOrg/SetOrganization.js +7 -1
- data/webpack/components/Table/EmptyStateMessage.js +8 -3
- data/webpack/components/Table/MainTable.js +8 -2
- data/webpack/components/TooltipButton/TooltipButton.js +2 -2
- data/webpack/components/TooltipButton/__snapshots__/TooltipButton.test.js.snap +3 -0
- data/webpack/components/extensions/HostDetails/ActionsBar/index.js +2 -0
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +81 -24
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.scss +3 -0
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +10 -3
- data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/HostContentViewActions.js +8 -0
- data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +3 -2
- data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +3 -1
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +1 -1
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +0 -4
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErratumExpansionDetail.js +2 -2
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +1 -5
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +20 -0
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +1 -0
- data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsConstants.js +16 -0
- data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +54 -8
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesEnabler.js +1 -0
- data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/ActivationKeys.test.js.snap +8 -1
- data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/Force.test.js.snap +1 -0
- data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/IgnoreSubmanErrors.test.js.snap +1 -0
- data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/LifeCycleEnvironment.test.js.snap +1 -0
- data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +2 -1
- data/webpack/components/extensions/RegistrationCommands/fields/Force.js +1 -0
- data/webpack/components/extensions/RegistrationCommands/fields/IgnoreSubmanErrors.js +1 -0
- data/webpack/components/extensions/RegistrationCommands/fields/LifecycleEnvironment.js +1 -0
- data/webpack/components/extensions/about/index.js +2 -2
- data/webpack/components/pf3Table/components/Table.js +1 -0
- data/webpack/scenes/AlternateContentSources/ACSIndexPage.js +6 -1
- data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCredentials.js +15 -2
- data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +6 -1
- data/webpack/scenes/AlternateContentSources/Details/ACSExpandableDetails.js +4 -1
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +9 -0
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditURLPaths.js +1 -0
- data/webpack/scenes/Content/Details/ContentDetails.js +4 -2
- data/webpack/scenes/Content/Details/ContentRepositories.js +1 -1
- data/webpack/scenes/Content/GenericContentPage.js +1 -1
- data/webpack/scenes/Content/Table/ContentTable.js +2 -2
- data/webpack/scenes/ContentViews/ContentViewsConstants.js +4 -0
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignActivationKeysForm.js +26 -13
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +27 -13
- data/webpack/scenes/ContentViews/Delete/__tests__/cvVersionsData.fixtures.json +8 -4
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +3 -2
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentEnvironments.js +1 -1
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +25 -24
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +1 -1
- data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +19 -3
- data/webpack/scenes/ContentViews/Details/ContentViewDetailReducer.js +6 -0
- data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +2 -0
- data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +2 -2
- data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +15 -2
- data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +5 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +13 -9
- data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +19 -6
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +5 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +50 -51
- data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +45 -44
- data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +45 -44
- data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +13 -8
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +4 -3
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +5 -2
- data/webpack/scenes/ContentViews/Details/Filters/FilterRuleConstants.js +6 -0
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVDebMatchContentModal.js +3 -2
- data/webpack/scenes/ContentViews/Details/Filters/Rules/ContainerTag/AddEditContainerTagRuleModal.js +10 -2
- data/webpack/scenes/ContentViews/Details/Filters/Rules/DebPackage/AddEditDebPackageRuleModal.js +5 -1
- data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +7 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +37 -24
- data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +3 -3
- data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +1 -1
- data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +78 -8
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +27 -8
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewDetailNoReposAdded.fixtures.json +13 -0
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/ActionSummary.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignActivationKeys.js +16 -16
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignHosts.js +16 -16
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/BulkDeleteVersions.fixtures.json +6 -3
- data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/contentViewVersion.fixtures.json +10 -5
- data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareConfig.js +9 -2
- data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareTable.js +1 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionOneDetials.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionThreeDetails.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionTwoDetails.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersions.fixtures.json +12 -6
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionOneDetails.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionTwoDetails.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +25 -4
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +4 -2
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +26 -13
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +30 -17
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +1 -0
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/versionsResponseData.fixtures.json +6 -3
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +2 -2
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +8 -1
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +55 -6
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionComponent.fixtures.json +6 -3
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.fixtures.json +8 -4
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersionsWithTask.fixtures.json +4 -2
- data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetails.fixtures.json +1 -0
- data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +4 -2
- data/webpack/scenes/ContentViews/Publish/CVPublishForm.js +30 -3
- data/webpack/scenes/ContentViews/Publish/CVPublishReview.js +24 -2
- data/webpack/scenes/ContentViews/Publish/cvPublishForm.scss +4 -0
- data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +2 -2
- data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +1 -3
- data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +2 -1
- data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelect.js +2 -1
- data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelectOption.js +3 -2
- data/webpack/scenes/ContentViews/components/ContentViewSelect/helpers.js +32 -0
- data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +52 -42
- data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +1 -0
- data/webpack/scenes/ContentViews/components/FiltersAppliedIcon.js +17 -0
- data/webpack/scenes/ContentViews/components/NeedsPublishIcon.js +45 -0
- data/webpack/scenes/ContentViews/components/NeedsPublishIcon.scss +9 -0
- data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +1 -1
- data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +49 -22
- data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceTemplate.js +7 -1
- data/webpack/scenes/Hosts/ChangeContentSource/components/FormField.js +1 -0
- data/webpack/scenes/Hosts/ChangeContentSource/components/HostsModal.js +2 -0
- data/webpack/scenes/Hosts/ChangeContentSource/index.js +2 -0
- data/webpack/scenes/ModuleStreams/Details/__tests__/__snapshots__/ModuleStreamDetailInfo.test.js.snap +1 -0
- data/webpack/scenes/ModuleStreams/__tests__/__snapshots__/ModuleStreamsTable.test.js.snap +1 -0
- data/webpack/scenes/RedHatRepositories/RedHatRepositoriesPage.js +2 -0
- data/webpack/scenes/RedHatRepositories/__tests__/__snapshots__/RedHatRepositoriesPage.test.js.snap +2 -0
- data/webpack/scenes/RedHatRepositories/components/RecommendedRepositorySetsToggler.js +6 -1
- data/webpack/scenes/RedHatRepositories/components/RepositorySetRepositories.js +1 -1
- data/webpack/scenes/RedHatRepositories/components/__tests__/__snapshots__/RecommendedRepositorySetsToggler.test.js.snap +1 -0
- data/webpack/scenes/RedHatRepositories/components/__tests__/__snapshots__/RepositorySetRepositories.test.js.snap +1 -0
- data/webpack/scenes/RedHatRepositories/helpers.js +2 -0
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetailAssociations.js +1 -1
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetailInfo.js +2 -2
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetails.js +4 -4
- data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetailAssociations.test.js.snap +1 -0
- data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetailInfo.test.js.snap +2 -0
- data/webpack/scenes/Subscriptions/Details/__tests__/__snapshots__/SubscriptionDetails.test.js.snap +4 -0
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/NetworkSyncForm.js +2 -1
- data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +5 -4
- data/webpack/scenes/Subscriptions/Manifest/SimpleContentAccess.js +1 -0
- data/webpack/scenes/Subscriptions/SubscriptionsPage.js +1 -1
- data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsPage.js +3 -1
- data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/__snapshots__/UpstreamSubscriptionsPage.test.js.snap +3 -0
- data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +1 -0
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTable.js +1 -1
- data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.js +5 -6
- data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/__snapshots__/SubscriptionsToolbar.test.js.snap +60 -5
- data/webpack/utils/useKatelloDocUrl.js +18 -0
- metadata +163 -22
- data/app/lib/actions/katello/organization/simple_content_access/prepare_content_overrides.rb +0 -36
- data/app/lib/katello/util/content_overrides_migrator.rb +0 -98
- data/webpack/components/extensions/HostDetails/common/KatelloAgentDeprecationAlert.js +0 -23
data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import React, { useState, useEffect } from 'react';
|
2
|
-
import { useDispatch } from 'react-redux';
|
2
|
+
import { useDispatch, useSelector } from 'react-redux';
|
3
3
|
import PropTypes from 'prop-types';
|
4
4
|
import {
|
5
5
|
Button,
|
@@ -24,17 +24,25 @@ import getEnvironmentPaths from '../../../components/EnvironmentPaths/Environmen
|
|
24
24
|
import RemoveCVVersionWizard from '../Delete/RemoveCVVersionWizard';
|
25
25
|
import ActionableDetail from '../../../../../components/ActionableDetail';
|
26
26
|
import BulkDeleteModal from '../BulkDelete/BulkDeleteModal';
|
27
|
+
import NeedsPublishIcon from '../../../components/NeedsPublishIcon';
|
28
|
+
import FiltersAppliedIcon from '../../../components/FiltersAppliedIcon';
|
29
|
+
import { selectCVNeedsPublish } from '../../ContentViewDetailSelectors';
|
30
|
+
import { republishCVVRepoMetadata } from '../../ContentViewDetailActions';
|
27
31
|
|
28
32
|
const ContentViewVersionDetailsHeader = ({
|
29
33
|
versionDetails,
|
30
34
|
onEdit,
|
31
|
-
details: {
|
35
|
+
details: {
|
36
|
+
permissions, latest_version_id: latestVersionId, needs_publish: needsPublish, composite,
|
37
|
+
},
|
32
38
|
loading,
|
33
39
|
}) => {
|
34
40
|
const history = useHistory();
|
35
41
|
const {
|
36
|
-
version, description, environments, content_view_id: cvId, id,
|
42
|
+
version, description, environments, filters_applied: filtersApplied, content_view_id: cvId, id,
|
43
|
+
repositories,
|
37
44
|
} = versionDetails;
|
45
|
+
const needsPublishLocal = useSelector(state => selectCVNeedsPublish(state));
|
38
46
|
const dispatch = useDispatch();
|
39
47
|
useEffect(
|
40
48
|
() => {
|
@@ -47,6 +55,15 @@ const ContentViewVersionDetailsHeader = ({
|
|
47
55
|
const [removingFromEnv, setRemovingFromEnv] = useState(false);
|
48
56
|
const [currentStep, setCurrentStep] = useState(1);
|
49
57
|
const [bulkDeleteOpen, setBulkDeleteOpen] = useState(false);
|
58
|
+
|
59
|
+
const handleRepublish = () => {
|
60
|
+
dispatch(republishCVVRepoMetadata({ cvId, id }));
|
61
|
+
setDropdownOpen(false);
|
62
|
+
};
|
63
|
+
|
64
|
+
const anyReposUseCompleteMirroring =
|
65
|
+
repositories.some(repo => repo.mirroring_policy === 'mirror_complete');
|
66
|
+
|
50
67
|
const dropDownItems = [
|
51
68
|
<DropdownItem
|
52
69
|
ouiaId="remove"
|
@@ -57,6 +74,16 @@ const ContentViewVersionDetailsHeader = ({
|
|
57
74
|
>
|
58
75
|
{__('Remove from environment')}
|
59
76
|
</DropdownItem>,
|
77
|
+
<DropdownItem
|
78
|
+
ouiaId="republish"
|
79
|
+
key="republish"
|
80
|
+
isDisabled={anyReposUseCompleteMirroring}
|
81
|
+
onClick={() => {
|
82
|
+
handleRepublish();
|
83
|
+
}}
|
84
|
+
>
|
85
|
+
{__('Republish repository metadata')}
|
86
|
+
</DropdownItem>,
|
60
87
|
<DropdownItem
|
61
88
|
ouiaId="delete"
|
62
89
|
key="delete"
|
@@ -72,7 +99,20 @@ const ContentViewVersionDetailsHeader = ({
|
|
72
99
|
<Grid className="margin-0-24">
|
73
100
|
<GridItem sm={6} >
|
74
101
|
<TextContent>
|
75
|
-
<Text ouiaId="cv-version" component={TextVariants.h2}>
|
102
|
+
<Text ouiaId="cv-version" component={TextVariants.h2}>
|
103
|
+
{__('Version ')}{version}
|
104
|
+
{(latestVersionId === id &&
|
105
|
+
(needsPublish === null || needsPublish || needsPublishLocal)) &&
|
106
|
+
<NeedsPublishIcon
|
107
|
+
composite={composite}
|
108
|
+
determinate={needsPublish !== null || needsPublishLocal}
|
109
|
+
/>
|
110
|
+
}
|
111
|
+
{(filtersApplied) &&
|
112
|
+
<FiltersAppliedIcon />
|
113
|
+
}
|
114
|
+
</Text>
|
115
|
+
|
76
116
|
</TextContent>
|
77
117
|
</GridItem>
|
78
118
|
<GridItem sm={6} style={{ display: 'flex' }}>
|
@@ -111,8 +151,10 @@ const ContentViewVersionDetailsHeader = ({
|
|
111
151
|
/>
|
112
152
|
</TextContent>
|
113
153
|
<Flex>
|
114
|
-
{environments?.map(({ name, id: envId }) =>
|
115
|
-
<FlexItem key={name}
|
154
|
+
{environments?.map(({ name, id: envId }) => (
|
155
|
+
<FlexItem key={name}>
|
156
|
+
<Label isTruncated color="purple" href={`/lifecycle_environments/${envId}`}>{name}</Label>
|
157
|
+
</FlexItem>))}
|
116
158
|
</Flex>
|
117
159
|
</GridItem>
|
118
160
|
{promoting &&
|
@@ -157,6 +199,9 @@ ContentViewVersionDetailsHeader.propTypes = {
|
|
157
199
|
version: PropTypes.string,
|
158
200
|
environments: PropTypes.arrayOf(PropTypes.shape({})),
|
159
201
|
description: PropTypes.string,
|
202
|
+
repositories: PropTypes.arrayOf(PropTypes.shape({
|
203
|
+
mirroring_policy: PropTypes.string,
|
204
|
+
})),
|
160
205
|
content_view_id: PropTypes.oneOfType([
|
161
206
|
PropTypes.string,
|
162
207
|
PropTypes.number,
|
@@ -165,10 +210,14 @@ ContentViewVersionDetailsHeader.propTypes = {
|
|
165
210
|
PropTypes.string,
|
166
211
|
PropTypes.number,
|
167
212
|
]),
|
213
|
+
filters_applied: PropTypes.bool,
|
168
214
|
}).isRequired,
|
169
215
|
onEdit: PropTypes.func.isRequired,
|
170
216
|
details: PropTypes.shape({
|
171
217
|
permissions: PropTypes.shape({}),
|
218
|
+
needs_publish: PropTypes.bool,
|
219
|
+
composite: PropTypes.bool,
|
220
|
+
latest_version_id: PropTypes.number,
|
172
221
|
}).isRequired,
|
173
222
|
loading: PropTypes.bool.isRequired,
|
174
223
|
};
|
@@ -256,7 +256,8 @@
|
|
256
256
|
},
|
257
257
|
"permissions": {
|
258
258
|
"deletable": true
|
259
|
-
}
|
259
|
+
},
|
260
|
+
"filters_applied": true
|
260
261
|
},
|
261
262
|
{
|
262
263
|
"version": "5.0",
|
@@ -458,7 +459,8 @@
|
|
458
459
|
},
|
459
460
|
"permissions": {
|
460
461
|
"deletable": true
|
461
|
-
}
|
462
|
+
},
|
463
|
+
"filters_applied": true
|
462
464
|
},
|
463
465
|
{
|
464
466
|
"version": "2.0",
|
@@ -744,7 +746,8 @@
|
|
744
746
|
},
|
745
747
|
"permissions": {
|
746
748
|
"deletable": true
|
747
|
-
}
|
749
|
+
},
|
750
|
+
"filters_applied": true
|
748
751
|
}
|
749
752
|
]
|
750
753
|
}
|
data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.fixtures.json
CHANGED
@@ -298,7 +298,8 @@
|
|
298
298
|
},
|
299
299
|
"permissions": {
|
300
300
|
"deletable": true
|
301
|
-
}
|
301
|
+
},
|
302
|
+
"filters_applied": true
|
302
303
|
},
|
303
304
|
{
|
304
305
|
"version": "3.0",
|
@@ -451,7 +452,8 @@
|
|
451
452
|
},
|
452
453
|
"permissions": {
|
453
454
|
"deletable": true
|
454
|
-
}
|
455
|
+
},
|
456
|
+
"filters_applied": true
|
455
457
|
},
|
456
458
|
{
|
457
459
|
"version": "2.0",
|
@@ -590,7 +592,8 @@
|
|
590
592
|
},
|
591
593
|
"permissions": {
|
592
594
|
"deletable": true
|
593
|
-
}
|
595
|
+
},
|
596
|
+
"filters_applied": true
|
594
597
|
},
|
595
598
|
{
|
596
599
|
"version": "1.0",
|
@@ -722,7 +725,8 @@
|
|
722
725
|
},
|
723
726
|
"permissions": {
|
724
727
|
"deletable": true
|
725
|
-
}
|
728
|
+
},
|
729
|
+
"filters_applied": true
|
726
730
|
}
|
727
731
|
]
|
728
732
|
}
|
@@ -172,7 +172,7 @@ test('Can load for empty versions', async (done) => {
|
|
172
172
|
|
173
173
|
expect(queryByText(`Version ${firstVersion.version}`)).toBeNull();
|
174
174
|
await patientlyWaitFor(() =>
|
175
|
-
expect(queryByText(
|
175
|
+
expect(queryByText('No versions yet')).toBeInTheDocument());
|
176
176
|
assertNockRequest(autocompleteScope);
|
177
177
|
assertNockRequest(scope);
|
178
178
|
act(done);
|
@@ -558,7 +558,8 @@
|
|
558
558
|
},
|
559
559
|
"permissions": {
|
560
560
|
"deletable": true
|
561
|
-
}
|
561
|
+
},
|
562
|
+
"filters_applied": true
|
562
563
|
},
|
563
564
|
{
|
564
565
|
"version": "10.0",
|
@@ -705,7 +706,8 @@
|
|
705
706
|
},
|
706
707
|
"permissions": {
|
707
708
|
"deletable": true
|
708
|
-
}
|
709
|
+
},
|
710
|
+
"filters_applied": true
|
709
711
|
}
|
710
712
|
]
|
711
713
|
}
|
@@ -20,7 +20,7 @@ import { selectTaskPoll, selectTaskPollStatus } from '../Details/ContentViewDeta
|
|
20
20
|
import { publishContentView } from '../ContentViewsActions';
|
21
21
|
import Loading from '../../../components/Loading';
|
22
22
|
import EmptyStateMessage from '../../../components/Table/EmptyStateMessage';
|
23
|
-
import { cvVersionTaskPollingKey } from '../ContentViewsConstants';
|
23
|
+
import { CONTENT_VIEW_NEEDS_PUBLISH_RESET, cvVersionTaskPollingKey } from '../ContentViewsConstants';
|
24
24
|
import { clearPollTaskData, startPollingTask, stopPollingTask, toastTaskFinished } from '../../Tasks/TaskActions';
|
25
25
|
import getContentViewDetails from '../Details/ContentViewDetailActions';
|
26
26
|
|
@@ -68,6 +68,7 @@ const CVPublishFinish = ({
|
|
68
68
|
setSaving(false);
|
69
69
|
},
|
70
70
|
));
|
71
|
+
dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH_RESET });
|
71
72
|
}, () => { setSaving(false); }));
|
72
73
|
}
|
73
74
|
}, [POLLING_TASK_KEY, currentStep, cvId, description, dispatch, forcePromote,
|
@@ -84,6 +85,7 @@ const CVPublishFinish = ({
|
|
84
85
|
dispatch(clearPollTaskData(POLLING_TASK_KEY));
|
85
86
|
dispatch(getContentViewDetails(cvId));
|
86
87
|
dispatch(toastTaskFinished(pollResponse));
|
88
|
+
dispatch({ type: CONTENT_VIEW_NEEDS_PUBLISH_RESET });
|
87
89
|
history.push(`/content_views/${cvId}#/versions/${cvvID || ''}`);
|
88
90
|
onClose();
|
89
91
|
}
|
@@ -101,7 +103,7 @@ const CVPublishFinish = ({
|
|
101
103
|
<>
|
102
104
|
<EmptyState style={{ marginTop: '10px' }} variant={EmptyStateVariant.large}>
|
103
105
|
<EmptyStateIcon icon={InProgressIcon} />
|
104
|
-
<Title headingLevel="h2" size="lg">
|
106
|
+
<Title headingLevel="h2" size="lg" ouiaId="publish-cv-title">
|
105
107
|
{__('Publishing content view')}
|
106
108
|
</Title>
|
107
109
|
</EmptyState>
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import React, { useState } from 'react';
|
2
|
+
import { useSelector } from 'react-redux';
|
2
3
|
import PropTypes from 'prop-types';
|
3
4
|
import { translate as __ } from 'foremanReact/common/I18n';
|
4
5
|
import {
|
@@ -10,12 +11,13 @@ import EnvironmentPaths from '../components/EnvironmentPaths/EnvironmentPaths';
|
|
10
11
|
import ComponentEnvironments from '../Details/ComponentContentViews/ComponentEnvironments';
|
11
12
|
import './cvPublishForm.scss';
|
12
13
|
import WizardHeader from '../components/WizardHeader';
|
14
|
+
import { selectCVNeedsPublish } from '../Details/ContentViewDetailSelectors';
|
13
15
|
|
14
16
|
const CVPublishForm = ({
|
15
17
|
description,
|
16
18
|
setDescription,
|
17
19
|
details: {
|
18
|
-
name, composite, next_version: nextVersion,
|
20
|
+
name, composite, next_version: nextVersion, needs_publish: needsPublish,
|
19
21
|
},
|
20
22
|
userCheckedItems,
|
21
23
|
setUserCheckedItems,
|
@@ -24,6 +26,8 @@ const CVPublishForm = ({
|
|
24
26
|
forcePromote,
|
25
27
|
}) => {
|
26
28
|
const [alertDismissed, setAlertDismissed] = useState(false);
|
29
|
+
const [needsPublishAlertDismissed, setNeedsPublishAlertDismissed] = useState(false);
|
30
|
+
const needsPublishLocal = useSelector(state => selectCVNeedsPublish(state));
|
27
31
|
|
28
32
|
const checkPromote = (checked) => {
|
29
33
|
if (!checked) {
|
@@ -36,11 +40,33 @@ const CVPublishForm = ({
|
|
36
40
|
<WizardHeader
|
37
41
|
title={__('Publish')}
|
38
42
|
description={
|
39
|
-
<>
|
43
|
+
<>
|
44
|
+
{!needsPublishAlertDismissed &&
|
45
|
+
!(needsPublish === null || needsPublish || needsPublishLocal) &&
|
46
|
+
(
|
47
|
+
<Alert
|
48
|
+
ouiaId="needs-publish-alert"
|
49
|
+
variant="info"
|
50
|
+
isInline
|
51
|
+
title={composite ?
|
52
|
+
__('No available component content view updates') :
|
53
|
+
__('No available repository or filter updates')}
|
54
|
+
actionClose={
|
55
|
+
<AlertActionCloseButton
|
56
|
+
onClose={() => setNeedsPublishAlertDismissed(true)}
|
57
|
+
/>
|
58
|
+
}
|
59
|
+
style={{ marginBottom: '24px' }}
|
60
|
+
>
|
61
|
+
<TextContent>{__('Newly published version will be the same as the previous version.')}</TextContent>
|
62
|
+
</Alert>)
|
63
|
+
}
|
64
|
+
{__('A new version of ')}<b>{composite ? <RegistryIcon /> : <EnterpriseIcon />} {name}</b>
|
40
65
|
{__(' will be created and automatically promoted to the ' +
|
41
66
|
'Library environment. You can promote to other environments as well. ')
|
42
67
|
}
|
43
|
-
</>
|
68
|
+
</>
|
69
|
+
}
|
44
70
|
/>
|
45
71
|
<TextContent>
|
46
72
|
<Text ouiaId="next-version-text" component={TextVariants.h3}>
|
@@ -115,6 +141,7 @@ CVPublishForm.propTypes = {
|
|
115
141
|
PropTypes.number,
|
116
142
|
PropTypes.string,
|
117
143
|
]).isRequired,
|
144
|
+
needs_publish: PropTypes.bool,
|
118
145
|
}).isRequired,
|
119
146
|
};
|
120
147
|
|
@@ -1,4 +1,6 @@
|
|
1
1
|
import React, { useMemo } from 'react';
|
2
|
+
import { Alert } from '@patternfly/react-core';
|
3
|
+
import { Link } from 'react-router-dom';
|
2
4
|
import { useSelector } from 'react-redux';
|
3
5
|
import PropTypes from 'prop-types';
|
4
6
|
import {
|
@@ -16,7 +18,7 @@ import WizardHeader from '../components/WizardHeader';
|
|
16
18
|
|
17
19
|
const CVPublishReview = ({
|
18
20
|
details: {
|
19
|
-
name, composite, next_version: nextVersion,
|
21
|
+
id, name, composite, filtered, next_version: nextVersion,
|
20
22
|
},
|
21
23
|
userCheckedItems,
|
22
24
|
}) => {
|
@@ -40,7 +42,17 @@ const CVPublishReview = ({
|
|
40
42
|
description={
|
41
43
|
<>
|
42
44
|
{__('Review your currently selected changes for ')}<b>{composite ? <RegistryIcon /> : <EnterpriseIcon />} {name}.</b>
|
43
|
-
|
45
|
+
{filtered && (
|
46
|
+
<Alert
|
47
|
+
ouiaId="filters-applied-alert"
|
48
|
+
variant="warning"
|
49
|
+
isInline
|
50
|
+
isPlain
|
51
|
+
title={__('Filters will be applied to this content view version.')}
|
52
|
+
style={{ marginTop: '24px' }}
|
53
|
+
/>)}
|
54
|
+
</>
|
55
|
+
}
|
44
56
|
/>
|
45
57
|
<TableComposable ouiaId="cv-publish-review-table" aria-label="Review Table">
|
46
58
|
<Thead>
|
@@ -48,6 +60,7 @@ const CVPublishReview = ({
|
|
48
60
|
<Th>{__('Content view name')}</Th>
|
49
61
|
<Th>{__('Version')}</Th>
|
50
62
|
<Th>{__('Environments')}</Th>
|
63
|
+
<Th>{__('Filters')}</Th>
|
51
64
|
</Tr>
|
52
65
|
</Thead>
|
53
66
|
<Tbody>
|
@@ -61,6 +74,10 @@ const CVPublishReview = ({
|
|
61
74
|
<Td>
|
62
75
|
<ComponentEnvironments environments={promotedToEnvironments} />
|
63
76
|
</Td>
|
77
|
+
{filtered
|
78
|
+
? <Td><Link to={`/content_views/${id}#/filters`} target="_blank" rel="noopener noreferrer">{__('View Filters')} </Link> </Td>
|
79
|
+
: <Td>-</Td>
|
80
|
+
}
|
64
81
|
</Tr>
|
65
82
|
</Tbody>
|
66
83
|
</TableComposable>
|
@@ -71,8 +88,13 @@ const CVPublishReview = ({
|
|
71
88
|
CVPublishReview.propTypes = {
|
72
89
|
userCheckedItems: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
|
73
90
|
details: PropTypes.shape({
|
91
|
+
id: PropTypes.oneOfType([
|
92
|
+
PropTypes.number,
|
93
|
+
PropTypes.string,
|
94
|
+
]).isRequired,
|
74
95
|
name: PropTypes.string.isRequired,
|
75
96
|
composite: PropTypes.bool.isRequired,
|
97
|
+
filtered: PropTypes.bool.isRequired,
|
76
98
|
next_version: PropTypes.oneOfType([
|
77
99
|
PropTypes.number,
|
78
100
|
PropTypes.string,
|
@@ -129,8 +129,8 @@ const ContentViewTable = () => {
|
|
129
129
|
[apiSortParams],
|
130
130
|
);
|
131
131
|
|
132
|
-
const emptyContentTitle = __(
|
133
|
-
const emptyContentBody = __('
|
132
|
+
const emptyContentTitle = __('No content views yet');
|
133
|
+
const emptyContentBody = __('You currently have no content views to display');
|
134
134
|
const emptySearchTitle = __('No matching content views found');
|
135
135
|
const emptySearchBody = __('Try changing your search settings.');
|
136
136
|
const showPrimaryAction = true;
|
@@ -40,10 +40,8 @@ test('Can call API for CVs and show on screen on page load', async (done) => {
|
|
40
40
|
await patientlyWaitFor(() => {
|
41
41
|
expect(queryByText(firstCV.name)).toBeInTheDocument();
|
42
42
|
expect(queryAllByText('Content views')[0]).toBeInTheDocument();
|
43
|
-
expect(queryByText('Composite content views')).toBeInTheDocument();
|
44
43
|
});
|
45
44
|
|
46
|
-
|
47
45
|
assertNockRequest(autocompleteScope);
|
48
46
|
assertNockRequest(scope, done);
|
49
47
|
});
|
@@ -159,7 +157,7 @@ test('Can handle no Content Views being present', async (done) => {
|
|
159
157
|
const { queryByText } = renderWithRedux(<ContentViewsPage />, renderOptions);
|
160
158
|
|
161
159
|
expect(queryByText(firstCV.name)).toBeNull();
|
162
|
-
await patientlyWaitFor(() => expect(queryByText(
|
160
|
+
await patientlyWaitFor(() => expect(queryByText('You currently have no content views to display')).toBeInTheDocument());
|
163
161
|
assertNockRequest(scope, done);
|
164
162
|
});
|
165
163
|
|
@@ -30,11 +30,12 @@ const ContentViewSelect = ({
|
|
30
30
|
ContentViewSelect.propTypes = {
|
31
31
|
headerText: PropTypes.string,
|
32
32
|
onClear: PropTypes.func.isRequired,
|
33
|
-
children: PropTypes.node
|
33
|
+
children: PropTypes.node,
|
34
34
|
};
|
35
35
|
|
36
36
|
ContentViewSelect.defaultProps = {
|
37
37
|
headerText: __('Select content view'),
|
38
|
+
children: [],
|
38
39
|
};
|
39
40
|
|
40
41
|
export default ContentViewSelect;
|
@@ -44,10 +44,10 @@ export const relevantVersionObjFromCv = (cv, env) => { // returns the entire ver
|
|
44
44
|
export const relevantVersionFromCv = (cv, env) =>
|
45
45
|
relevantVersionObjFromCv(cv, env)?.version; // returns the version text e.g. "1.0"
|
46
46
|
|
47
|
-
const ContentViewSelectOption = ({ cv, env }) => (
|
47
|
+
const ContentViewSelectOption = ({ cv, env, value }) => (
|
48
48
|
<SelectOption
|
49
49
|
key={cv.id}
|
50
|
-
value={
|
50
|
+
value={value}
|
51
51
|
>
|
52
52
|
<Flex
|
53
53
|
direction={{ default: 'row', sm: 'row' }}
|
@@ -82,6 +82,7 @@ ContentViewSelectOption.propTypes = {
|
|
82
82
|
env: PropTypes.shape({
|
83
83
|
id: PropTypes.number.isRequired,
|
84
84
|
}).isRequired,
|
85
|
+
value: PropTypes.string.isRequired,
|
85
86
|
};
|
86
87
|
|
87
88
|
export default ContentViewSelectOption;
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import { STATUS } from 'foremanReact/constants';
|
2
|
+
import { translate as __ } from 'foremanReact/common/I18n';
|
3
|
+
|
4
|
+
export const getCVPlaceholderText = ({
|
5
|
+
contentSourceId = null,
|
6
|
+
environments = [],
|
7
|
+
contentViewsStatus = STATUS.PENDING,
|
8
|
+
cvSelectOptions = [],
|
9
|
+
}) => {
|
10
|
+
if (contentSourceId === '') return __('Select a content source first');
|
11
|
+
if (environments.length === 0) return __('Select an environment first');
|
12
|
+
if (contentViewsStatus === STATUS.PENDING) return __('Loading...');
|
13
|
+
if (contentViewsStatus === STATUS.ERROR) return __('Error loading content views');
|
14
|
+
if (cvSelectOptions.length === 0) return __('No content views available');
|
15
|
+
return __('Select a content view');
|
16
|
+
};
|
17
|
+
|
18
|
+
export const shouldDisableCVSelect = ({
|
19
|
+
contentSourceId = null,
|
20
|
+
environments = [],
|
21
|
+
contentViewsStatus = STATUS.PENDING,
|
22
|
+
cvSelectOptions = [],
|
23
|
+
}) => {
|
24
|
+
if (contentSourceId === '') return true;
|
25
|
+
if (environments.length === 0) return true;
|
26
|
+
if (contentViewsStatus === STATUS.PENDING) return true;
|
27
|
+
if (contentViewsStatus === STATUS.ERROR) return true;
|
28
|
+
if (cvSelectOptions.length === 0) return true;
|
29
|
+
return false;
|
30
|
+
};
|
31
|
+
|
32
|
+
export default getCVPlaceholderText;
|
@@ -12,48 +12,58 @@ const ContentViewsCounter = () => {
|
|
12
12
|
composite_content_views_count: composite,
|
13
13
|
content_view_components_count: component,
|
14
14
|
} = organization;
|
15
|
-
|
16
|
-
|
17
|
-
<
|
18
|
-
<
|
19
|
-
<
|
20
|
-
<
|
21
|
-
<
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
</
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
15
|
+
if (composite || component) {
|
16
|
+
return (
|
17
|
+
<Grid>
|
18
|
+
<GridItem span={12}>
|
19
|
+
<b>
|
20
|
+
<Flex>
|
21
|
+
<FlexItem spacer={{ default: 'spacerXs' }}>
|
22
|
+
<ContentViewIcon
|
23
|
+
composite={false}
|
24
|
+
description={__('Content views')}
|
25
|
+
count={(component || component === 0) ? component : <InProgressIcon />}
|
26
|
+
/>
|
27
|
+
</FlexItem>
|
28
|
+
<FlexItem>
|
29
|
+
<Tooltip
|
30
|
+
position="top"
|
31
|
+
content={
|
32
|
+
__('Consists of repositories')
|
33
|
+
}
|
34
|
+
>
|
35
|
+
<OutlinedQuestionCircleIcon />
|
36
|
+
</Tooltip>
|
37
|
+
</FlexItem>
|
38
|
+
</Flex>
|
39
|
+
</b>
|
40
|
+
</GridItem>
|
41
|
+
<GridItem span={12}>
|
42
|
+
<b>
|
43
|
+
<Flex>
|
44
|
+
<FlexItem spacer={{ default: 'spacerXs' }}>
|
45
|
+
<ContentViewIcon
|
46
|
+
composite
|
47
|
+
description={__('Composite content views')}
|
48
|
+
count={(composite || composite === 0) ? composite : <InProgressIcon />}
|
49
|
+
/>
|
50
|
+
</FlexItem>
|
51
|
+
<FlexItem>
|
52
|
+
<Tooltip
|
53
|
+
position="top"
|
54
|
+
content={
|
55
|
+
__('Consists of content views')
|
56
|
+
}
|
57
|
+
>
|
58
|
+
<OutlinedQuestionCircleIcon />
|
59
|
+
</Tooltip>
|
60
|
+
</FlexItem>
|
61
|
+
</Flex>
|
62
|
+
</b>
|
63
|
+
</GridItem>
|
64
|
+
</Grid>
|
65
|
+
);
|
66
|
+
} return <></>;
|
57
67
|
};
|
58
68
|
|
59
69
|
export default ContentViewsCounter;
|
@@ -54,6 +54,7 @@ const EnvironmentPaths = ({
|
|
54
54
|
envCheckedInList(env, userCheckedItems) ||
|
55
55
|
envCheckedInList(env, promotedEnvironments)}
|
56
56
|
isDisabled={isDisabled || (publishing && env.library)
|
57
|
+
|| env?.content_source?.environment_is_associated === false
|
57
58
|
|| envCheckedInList(env, promotedEnvironments)}
|
58
59
|
className="env-path__labels-with-pointer"
|
59
60
|
key={`${env.id}${index}`}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { translate as __ } from 'foremanReact/common/I18n';
|
3
|
+
import { Tooltip } from '@patternfly/react-core';
|
4
|
+
import { FilterIcon } from '@patternfly/react-icons';
|
5
|
+
|
6
|
+
const FiltersAppliedIcon = () => (
|
7
|
+
<Tooltip
|
8
|
+
position="auto"
|
9
|
+
enableFlip
|
10
|
+
entryDelay={400}
|
11
|
+
content={__('Filters were applied to this version.')}
|
12
|
+
>
|
13
|
+
<FilterIcon size="sm" style={{ color: '#0081db', margin: '0 9px' }} />
|
14
|
+
</Tooltip>
|
15
|
+
);
|
16
|
+
|
17
|
+
export default FiltersAppliedIcon;
|