katello 3.3.0.rc1.1 → 3.3.0.rc2

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 (155) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +2 -2
  3. data/app/controllers/katello/api/v2/content_view_filters_controller.rb +8 -1
  4. data/app/controllers/katello/api/v2/content_views_controller.rb +30 -7
  5. data/app/controllers/katello/api/v2/host_contents_controller.rb +1 -0
  6. data/app/controllers/katello/products_controller.rb +9 -10
  7. data/app/controllers/katello/providers_controller.rb +3 -2
  8. data/app/helpers/katello/hosts_and_hostgroups_helper.rb +48 -24
  9. data/app/lib/actions/katello/repository/clear.rb +2 -1
  10. data/app/lib/actions/katello/repository/clone_docker_content.rb +13 -7
  11. data/app/lib/actions/katello/repository/clone_to_environment.rb +1 -1
  12. data/app/lib/actions/katello/repository/clone_to_version.rb +1 -1
  13. data/app/lib/katello/util/docker_manifest_clause_generator.rb +44 -0
  14. data/app/lib/katello/util/package_filter.rb +24 -5
  15. data/app/models/katello/concerns/content_facet_host_extensions.rb +3 -1
  16. data/app/models/katello/concerns/host_managed_extensions.rb +0 -7
  17. data/app/models/katello/concerns/smart_proxy_extensions.rb +1 -1
  18. data/app/models/katello/content_view_docker_filter.rb +37 -0
  19. data/app/models/katello/content_view_docker_filter_rule.rb +23 -0
  20. data/app/models/katello/content_view_filter.rb +17 -4
  21. data/app/models/katello/content_view_puppet_environment.rb +6 -0
  22. data/app/models/katello/content_view_puppet_module.rb +5 -0
  23. data/app/models/katello/docker_manifest.rb +1 -1
  24. data/app/models/katello/glue/pulp/repo.rb +1 -1
  25. data/app/models/katello/host/content_facet.rb +2 -0
  26. data/app/views/dashboard/_content_views_widget.html.erb +1 -1
  27. data/app/views/dashboard/_subscription_status_widget.html.erb +1 -1
  28. data/app/views/dashboard/_subscription_widget.html.erb +1 -1
  29. data/app/views/foreman/job_templates/install_errata.erb +1 -1
  30. data/app/views/foreman/unattended/kickstart-katello-atomic.erb +10 -1
  31. data/app/views/foreman/unattended/kickstart-katello.erb +1 -1
  32. data/app/views/katello/api/v2/content_facet/base.json.rabl +5 -0
  33. data/app/views/katello/api/v2/content_facet/show.json.rabl +1 -1
  34. data/app/views/katello/api/v2/content_view_filters/base.json.rabl +5 -0
  35. data/app/views/katello/api/v2/docker_tags/show.json.rabl +1 -1
  36. data/app/views/katello/api/v2/gpg_keys/show.json.rabl +2 -4
  37. data/app/views/katello/providers/redhat/_repos.html.erb +4 -0
  38. data/app/views/overrides/activation_keys/_host_environment_select.html.erb +12 -10
  39. data/db/migrate/20160924213020_change_katello_widget_names.rb +21 -0
  40. data/db/migrate/20161102194100_create_content_view_docker_filter_rules.rb +13 -0
  41. data/db/migrate/20161214151548_move_content_source_id_to_content_facets.rb +38 -0
  42. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-details.html +11 -6
  43. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-view.factory.js +9 -10
  44. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.controller.js +1 -5
  45. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.routes.js +349 -221
  46. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-deletion.controller.js +5 -14
  47. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-activation-keys.controller.js +2 -2
  48. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-confirm.controller.js +8 -5
  49. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-content-hosts.controller.js +2 -2
  50. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion.controller.js +5 -5
  51. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/content-view-deletion.html +12 -17
  52. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-activation-keys.html +3 -5
  53. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-confirm.html +1 -3
  54. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-content-hosts.html +67 -71
  55. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-environments.html +1 -3
  56. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-available-content-views.controller.js +3 -2
  57. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-content-views-list.controller.js +2 -1
  58. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-available-content-views.html +19 -15
  59. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-content-views-list.html +65 -63
  60. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite.html +4 -4
  61. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-docker-repositories.controller.js +2 -2
  62. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-file-repositories.controller.js +1 -1
  63. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-ostree-repositories.controller.js +2 -2
  64. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-repositories.controller.js +1 -1
  65. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-details.controller.js +8 -124
  66. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-docker-repositories-list.controller.js +29 -20
  67. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-file-repositories-list.controller.js +1 -1
  68. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-ostree-repositories-list.controller.js +29 -20
  69. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-promotion.controller.js +6 -5
  70. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-publish.controller.js +4 -3
  71. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-repositories-list.controller.js +1 -1
  72. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-repositories.service.js +1 -1
  73. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-versions.controller.js +133 -25
  74. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-errata-filter.controller.js +6 -5
  75. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-package-group-filter.controller.js +8 -5
  76. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/date-type-errata-filter.controller.js +6 -3
  77. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/edit-filter.controller.js +4 -6
  78. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/errata-filter-list.controller.js +6 -5
  79. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/errata-filter.controller.js +0 -4
  80. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-repositories.controller.js +11 -10
  81. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filters.controller.js +11 -9
  82. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/new-filter.controller.js +7 -6
  83. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-filter.controller.js +8 -8
  84. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-group-list-filter.controller.js +6 -5
  85. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/date-type-errata-filter.html +1 -3
  86. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/edit-filter.html +0 -1
  87. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/errata-filter-details.html +16 -21
  88. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/errata-filter.html +10 -10
  89. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-details.html +5 -45
  90. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-repositories.html +98 -104
  91. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filters.html +12 -21
  92. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/new-filter.html +53 -62
  93. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter-details.html +187 -179
  94. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter.html +26 -35
  95. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-group-filter-details.html +10 -13
  96. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-group-filter.html +8 -11
  97. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/content-view-history.controller.js +1 -1
  98. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/views/content-view-history.html +9 -7
  99. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-module-names.controller.js +3 -3
  100. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-module-versions.controller.js +15 -21
  101. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/content-view-puppet-modules.controller.js +8 -9
  102. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/views/content-view-puppet-module-names.html +28 -41
  103. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/views/content-view-puppet-module-versions.html +31 -28
  104. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/puppet-modules/views/content-view-puppet-modules.html +6 -9
  105. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-copy.html +18 -0
  106. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details-tasks.html +1 -3
  107. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details.html +133 -160
  108. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-docker-repositories.html +40 -64
  109. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-file-repositories.html +78 -110
  110. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-info.html +29 -36
  111. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-ostree-repositories.html +78 -110
  112. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-promotion.html +1 -7
  113. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-publish.html +32 -36
  114. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-repositories.html +93 -123
  115. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-versions.html +71 -75
  116. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/content-view-new.controller.js +2 -3
  117. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/views/content-view-new.html +16 -20
  118. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version-content.controller.js +1 -1
  119. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-components.html +3 -9
  120. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-docker.html +2 -7
  121. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-errata.html +39 -44
  122. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-file.html +2 -7
  123. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-ostree-branches.html +2 -6
  124. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-package-groups.html +8 -13
  125. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-packages.html +2 -7
  126. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-puppet-modules.html +2 -7
  127. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-yum.html +2 -7
  128. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version.html +60 -75
  129. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/views/content-views.html +50 -5
  130. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/docker-tag-details.controller.js +1 -1
  131. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/details/views/docker-tag-environments.html +9 -1
  132. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-content-views.html +1 -1
  133. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/views/apply-errata-confirm.html +2 -2
  134. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/gpg-keys/details/views/gpg-key-details.html +3 -13
  135. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-details.html +9 -4
  136. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +9 -3
  137. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/views/product-details.html +17 -13
  138. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/puppet-modules/details/views/puppet-modules-details-content-views.html +1 -1
  139. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/details/views/sync-plan-details.html +8 -3
  140. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/tasks-table.directive.js +2 -2
  141. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/tasks-index.html +1 -1
  142. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/views/tasks-table.html +35 -34
  143. data/engines/bastion_katello/app/assets/stylesheets/bastion_katello/tasks.scss +0 -8
  144. data/lib/katello/engine.rb +7 -0
  145. data/lib/katello/plugin.rb +9 -8
  146. data/lib/katello/tasks/clean_published_repo_directories.rake +52 -0
  147. data/lib/katello/tasks/reimport.rake +2 -1
  148. data/lib/katello/tasks/upgrades/2.4/import_puppet_modules.rake +1 -0
  149. data/lib/katello/tasks/upgrades/3.0/update_subscription_facet_backend_data.rake +1 -1
  150. data/lib/katello/version.rb +1 -1
  151. metadata +11 -7
  152. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-breadcrumb.html +0 -18
  153. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-group-filter.controller.js +0 -16
  154. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/views/content-views-table-collapsed.html +0 -21
  155. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/views/content-views-table-full.html +0 -46
@@ -0,0 +1,38 @@
1
+ class MoveContentSourceIdToContentFacets < ActiveRecord::Migration
2
+ def up
3
+ add_column :katello_content_facets, :content_source_id, :integer
4
+ add_index :katello_content_facets, :content_source_id
5
+ add_foreign_key :katello_content_facets, :smart_proxies, :name => "katello_content_facets_content_source_id_fk", :column => "content_source_id"
6
+
7
+ Host.find_each do |host|
8
+ content_facet = host.content_facet
9
+ if content_facet && host.content_source_id
10
+ content_facet.content_source_id = host.content_source_id
11
+ content_facet.save!
12
+ end
13
+ end
14
+
15
+ remove_foreign_key :hosts, :name => "hosts_content_source_id_fk"
16
+ remove_index :hosts, :content_source_id
17
+ remove_column :hosts, :content_source_id
18
+ end
19
+
20
+ def down
21
+ add_column :hosts, :content_source_id, :integer
22
+ add_index :hosts, :content_source_id
23
+ add_foreign_key :hosts, :smart_proxies, :name => "hosts_content_source_id_fk", :column => "content_source_id"
24
+
25
+ Host.find_each do |host|
26
+ if host.content_facet
27
+ host.content_source_id = host.content_facet.content_source_id
28
+ if host.content_facet.content_source
29
+ host.save!
30
+ end
31
+ end
32
+ end
33
+
34
+ remove_foreign_key :katello_content_facets, :name => "katello_content_facets_content_source_id_fk"
35
+ remove_index :katello_content_facets, :content_source_id
36
+ remove_column :katello_content_facets, :content_source_id
37
+ end
38
+ end
@@ -6,9 +6,14 @@
6
6
  </header>
7
7
 
8
8
  <div data-block="item-actions">
9
- <div class="dropdown dropdown-kebab-pf pull-right" uib-dropdown keyboard-nav bst-feature-flag="custom_products">
10
- <button class="btn btn-link" uib-dropdown-toggle>
11
- <span class="fa fa-ellipsis-v"></span>
9
+ <div class="btn-group" uib-dropdown keyboard-nav bst-feature-flag="custom_products">
10
+ <button class="btn btn-default" ng-disabled="denied('create_activation_key')" ui-sref="activation-key.copy">
11
+ <span translate>Copy Activation Key</span>
12
+ </button>
13
+
14
+ <button type="button" class="btn btn-default" uib-dropdown-toggle>
15
+ <span class="caret"></span>
16
+ <span class="sr-only" translate>Toggle Dropdown</span>
12
17
  </button>
13
18
 
14
19
  <ul class="dropdown-menu dropdown-menu-right" uib-dropdown-menu role="menu">
@@ -27,9 +32,9 @@
27
32
  </li>
28
33
  </ul>
29
34
 
30
- <div bst-modal="removeHostCollection(hostCollection)" model="hostCollection">
31
- <div data-block="modal-header" translate>Remove Host Collection "{{ hostCollection.name }}"?</div>
32
- <div data-block="modal-body" translate>Are you sure you want to remove Host Collection "{{ hostCollection.name }}"?</div>
35
+ <div bst-modal="removeActivationKey(activationKey)" model="activationKey">
36
+ <div data-block="modal-header" translate>Remove Activation Key "{{ activationKey.name }}"?</div>
37
+ <div data-block="modal-body" translate>Are you sure you want to remove Activation Key "{{ activationKey.name }}"?</div>
33
38
  </div>
34
39
  </div>
35
40
  </div>
@@ -21,22 +21,21 @@ angular.module('Bastion.content-views').factory('ContentView',
21
21
  publish: {method: 'POST', params: {action: 'publish'}},
22
22
  removeAssociations: {method: 'PUT', params: {action: 'remove'}},
23
23
  versions: {method: 'GET', isArray: false, params: {action: 'content_view_versions'}},
24
+ conflictingVersions: {method: 'GET', isArray: true, params: {action: 'content_view_versions'},
25
+ transformResponse: function (data) {
26
+ var response = angular.fromJson(data);
27
+ return _.reject(response.results, function (version) {
28
+ return version.environments.length === 0;
29
+ });
30
+ }
31
+ },
24
32
  contentViewComponents: {method: 'GET', transformResponse: function (data) {
25
33
  var contentView = angular.fromJson(data);
26
34
  return {results: contentView.content_view_components};
27
35
  }},
28
36
  availablePuppetModules: {method: 'GET', params: {action: 'available_puppet_modules'},
29
37
  transformResponse: function (data) {
30
- var response = angular.fromJson(data);
31
-
32
- angular.forEach(_.groupBy(response.results, 'author'), function (puppetModules) {
33
- var latest = angular.copy(puppetModules[0]);
34
- latest.version = translate('Always Use Latest (currently %s)').replace('%s', latest.version);
35
- latest.useLatest = true;
36
- response.results.push(latest);
37
- });
38
-
39
- return response;
38
+ return angular.fromJson(data);
40
39
  }
41
40
  },
42
41
  availablePuppetModuleNames: {method: 'GET', params: {action: 'available_puppet_module_names'}},
@@ -22,13 +22,9 @@ angular.module('Bastion.content-views').controller('ContentViewsController',
22
22
  'sort_by': 'name',
23
23
  'sort_order': 'ASC'
24
24
  });
25
+ nutupane.masterOnly = true;
25
26
 
26
27
  $scope.table = nutupane.table;
27
- $scope.removeRow = nutupane.removeRow;
28
28
  $scope.controllerName = 'katello_content_views';
29
-
30
- $scope.table.closeItem = function () {
31
- $scope.transitionTo('content-views.index');
32
- };
33
29
  }]
34
30
  );
@@ -9,493 +9,621 @@
9
9
  */
10
10
  angular.module('Bastion.content-views').config(['$stateProvider', function ($stateProvider) {
11
11
  $stateProvider.state('content-views', {
12
- abstract: true,
13
- controller: 'ContentViewsController',
14
- templateUrl: 'content-views/views/content-views.html'
15
- })
16
- .state('content-views.index', {
17
12
  url: '/content_views',
18
13
  permission: 'view_content_views',
19
14
  views: {
20
- 'table': {
21
- templateUrl: 'content-views/views/content-views-table-full.html'
15
+ '@': {
16
+ controller: 'ContentViewsController',
17
+ templateUrl: 'content-views/views/content-views.html'
22
18
  }
19
+ },
20
+ ncyBreadcrumb: {
21
+ label: '{{ "Content Views" | translate }}'
23
22
  }
24
23
  })
25
-
26
24
  .state('content-views.new', {
27
- collapsed: true,
28
- url: '/content_views/new',
25
+ url: '/new',
29
26
  permission: 'create_content_views',
30
27
  views: {
31
- 'table': {
32
- templateUrl: 'content-views/views/content-views-table-collapsed.html'
33
- },
34
- 'action-panel': {
28
+ '@': {
35
29
  controller: 'NewContentViewController',
36
30
  templateUrl: 'content-views/new/views/content-view-new.html'
37
31
  }
32
+ },
33
+ ncyBreadcrumb: {
34
+ label: '{{ "New Content View" | translate }}',
35
+ parent: 'content-views'
38
36
  }
39
- })
37
+ });
40
38
 
41
- .state('content-views.details', {
39
+ $stateProvider.state('content-view', {
42
40
  abstract: true,
43
41
  url: '/content_views/:contentViewId',
44
42
  permission: 'view_content_views',
45
- views: {
46
- 'table': {
47
- templateUrl: 'content-views/views/content-views-table-collapsed.html'
48
- },
49
- 'action-panel': {
50
- controller: 'ContentViewDetailsController',
51
- templateUrl: 'content-views/details/views/content-view-details.html'
52
- }
53
- }
43
+ controller: 'ContentViewDetailsController',
44
+ templateUrl: 'content-views/details/views/content-view-details.html'
54
45
  })
55
46
 
56
- .state('content-views.details.versions', {
57
- collapsed: true,
47
+ .state('content-view.versions', {
58
48
  url: '/versions',
59
49
  permission: 'view_content_views',
60
50
  controller: 'ContentViewVersionsController',
61
- templateUrl: 'content-views/details/views/content-view-versions.html'
51
+ templateUrl: 'content-views/details/views/content-view-versions.html',
52
+ ncyBreadcrumb: {
53
+ label: '{{ "Versions" | translate }}',
54
+ parent: 'content-view.info'
55
+ }
62
56
  })
63
- .state('content-views.details.version', {
64
- collapsed: true,
57
+ .state('content-view.version', {
65
58
  abstract: true,
66
59
  url: '/versions/:versionId',
67
60
  controller: 'ContentViewVersionController',
68
61
  templateUrl: 'content-views/versions/views/content-view-version.html'
69
62
  })
70
- .state('content-views.details.version.details', {
71
- collapsed: true,
72
- url: '/details',
63
+ .state('content-view.version.details', {
64
+ url: '',
73
65
  permission: 'view_content_views',
74
- templateUrl: 'content-views/versions/views/content-view-version-details.html'
66
+ templateUrl: 'content-views/versions/views/content-view-version-details.html',
67
+ ncyBreadcrumb: {
68
+ label: '{{ version.name }}',
69
+ parent: 'content-view.versions'
70
+ }
75
71
  })
76
- .state('content-views.details.version.components', {
77
- collapsed: true,
72
+ .state('content-view.version.components', {
78
73
  url: '/components',
79
74
  permission: 'view_content_views',
80
75
  controller: 'ContentViewVersionContentController',
81
- templateUrl: 'content-views/versions/views/content-view-version-components.html'
76
+ templateUrl: 'content-views/versions/views/content-view-version-components.html',
77
+ ncyBreadcrumb: {
78
+ label: '{{ "Components" | translate }}',
79
+ parent: 'content-view.version.details'
80
+ }
82
81
  })
83
- .state('content-views.details.version.yum', {
84
- collapsed: true,
82
+ .state('content-view.version.yum', {
85
83
  url: '/yum',
86
84
  permission: 'view_content_views',
87
85
  controller: 'ContentViewVersionContentController',
88
- templateUrl: 'content-views/versions/views/content-view-version-yum.html'
86
+ templateUrl: 'content-views/versions/views/content-view-version-yum.html',
87
+ ncyBreadcrumb: {
88
+ label: '{{ "Yum Content" | translate }}',
89
+ parent: 'content-view.version.details'
90
+ }
89
91
  })
90
- .state('content-views.details.version.docker', {
91
- collapsed: true,
92
+ .state('content-view.version.docker', {
92
93
  url: '/docker',
93
94
  permission: 'view_content_views',
94
95
  controller: 'ContentViewVersionContentController',
95
- templateUrl: 'content-views/versions/views/content-view-version-docker.html'
96
+ templateUrl: 'content-views/versions/views/content-view-version-docker.html',
97
+ ncyBreadcrumb: {
98
+ label: '{{ "Docker" | translate }}',
99
+ parent: 'content-view.version.details'
100
+ }
96
101
  })
97
- .state('content-views.details.version.packages', {
98
- collapsed: true,
102
+ .state('content-view.version.packages', {
99
103
  url: '/packages',
100
104
  permission: 'view_content_views',
101
105
  controller: 'ContentViewVersionContentController',
102
- templateUrl: 'content-views/versions/views/content-view-version-packages.html'
106
+ templateUrl: 'content-views/versions/views/content-view-version-packages.html',
107
+ ncyBreadcrumb: {
108
+ label: '{{ "Packages" | translate }}',
109
+ parent: 'content-view.version.details'
110
+ }
103
111
  })
104
- .state('content-views.details.version.package-groups', {
105
- collapsed: true,
112
+ .state('content-view.version.package-groups', {
106
113
  url: '/package_groups',
107
114
  permission: 'view_content_views',
108
115
  controller: 'ContentViewVersionContentController',
109
- templateUrl: 'content-views/versions/views/content-view-version-package-groups.html'
116
+ templateUrl: 'content-views/versions/views/content-view-version-package-groups.html',
117
+ ncyBreadcrumb: {
118
+ label: '{{ "Package Groups" | translate }}',
119
+ parent: 'content-view.version.details'
120
+ }
110
121
  })
111
- .state('content-views.details.version.errata', {
112
- collapsed: true,
122
+ .state('content-view.version.errata', {
113
123
  url: '/errata',
114
124
  permission: 'view_content_views',
115
125
  controller: 'ContentViewVersionContentController',
116
- templateUrl: 'content-views/versions/views/content-view-version-errata.html'
126
+ templateUrl: 'content-views/versions/views/content-view-version-errata.html',
127
+ ncyBreadcrumb: {
128
+ label: '{{ "Errata" | translate }}',
129
+ parent: 'content-view.version.details'
130
+ }
117
131
  })
118
- .state('content-views.details.version.puppet-modules', {
119
- collapsed: true,
132
+ .state('content-view.version.puppet-modules', {
120
133
  url: '/puppet_modules',
121
134
  permission: 'view_content_views',
122
135
  controller: 'ContentViewVersionContentController',
123
- templateUrl: 'content-views/versions/views/content-view-version-puppet-modules.html'
136
+ templateUrl: 'content-views/versions/views/content-view-version-puppet-modules.html',
137
+ ncyBreadcrumb: {
138
+ label: '{{ "Puppet Modules" | translate }}',
139
+ parent: 'content-view.version.details'
140
+ }
124
141
  })
125
- .state('content-views.details.version.ostree-branches', {
126
- collapsed: true,
142
+ .state('content-view.version.ostree-branches', {
127
143
  url: '/ostree_branches',
128
144
  permission: 'view_content_views',
129
145
  controller: 'ContentViewVersionContentController',
130
- templateUrl: 'content-views/versions/views/content-view-version-ostree-branches.html'
146
+ templateUrl: 'content-views/versions/views/content-view-version-ostree-branches.html',
147
+ ncyBreadcrumb: {
148
+ label: '{{ "OSTree Branches" | translate }}',
149
+ parent: 'content-view.version.details'
150
+ }
131
151
  })
132
- .state('content-views.details.version.file', {
133
- collapsed: true,
152
+ .state('content-view.version.file', {
134
153
  url: '/file',
135
154
  permission: 'view_content_views',
136
155
  controller: 'ContentViewVersionContentController',
137
- templateUrl: 'content-views/versions/views/content-view-version-file.html'
138
- })
156
+ templateUrl: 'content-views/versions/views/content-view-version-file.html',
157
+ ncyBreadcrumb: {
158
+ label: '{{ "File" | translate }}',
159
+ parent: 'content-view.version.details'
160
+ }
161
+ });
139
162
 
140
- .state('content-views.details.promotion', {
141
- collapsed: true,
163
+ $stateProvider.state('content-view.promotion', {
142
164
  url: '/versions/:versionId/promotion',
143
165
  permission: 'promote_or_remove_content_views',
144
166
  controller: 'ContentViewPromotionController',
145
- templateUrl: 'content-views/details/views/content-view-promotion.html'
167
+ templateUrl: 'content-views/details/views/content-view-promotion.html',
168
+ ncyBreadcrumb: {
169
+ label: '{{ "Promotion" | translate }}',
170
+ parent: 'content-view.info'
171
+ }
146
172
  })
147
- .state('content-views.details.version-deletion', {
148
- collapsed: true,
173
+ .state('content-view.version-deletion', {
149
174
  abstract: true,
150
175
  controller: 'ContentViewVersionDeletionController',
151
176
  template: '<div ui-view></div>'
152
177
  })
153
- .state('content-views.details.version-deletion.environments', {
154
- collapsed: true,
178
+ .state('content-view.version-deletion.environments', {
155
179
  url: '/versions/:versionId/delete/environments',
156
180
  permission: 'promote_or_remove_content_views',
157
181
  controller: 'ContentViewVersionDeletionEnvironmentsController',
158
- templateUrl: 'content-views/deletion/views/version-deletion-environments.html'
182
+ templateUrl: 'content-views/deletion/views/version-deletion-environments.html',
183
+ ncyBreadcrumb: {
184
+ label: '{{ "Deletion" | translate }}',
185
+ parent: 'content-view.info'
186
+ }
159
187
  })
160
- .state('content-views.details.version-deletion.content-hosts', {
188
+ .state('content-view.version-deletion.content-hosts', {
161
189
  url: '/versions/:versionId/delete/content-hosts',
162
190
  permission: 'promote_or_remove_content_views',
163
- collapsed: true,
164
191
  controller: 'ContentViewVersionDeletionContentHostsController',
165
- templateUrl: 'content-views/deletion/views/version-deletion-content-hosts.html'
192
+ templateUrl: 'content-views/deletion/views/version-deletion-content-hosts.html',
193
+ ncyBreadcrumb: {
194
+ label: '{{ "Deletion" | translate }}',
195
+ parent: 'content-view.info'
196
+ }
166
197
  })
167
- .state('content-views.details.version-deletion.activation-keys', {
198
+ .state('content-view.version-deletion.activation-keys', {
168
199
  url: '/versions/:versionId/delete/activation-keys',
169
200
  permission: 'promote_or_remove_content_views',
170
- collapsed: true,
171
201
  controller: 'ContentViewVersionDeletionActivationKeysController',
172
- templateUrl: 'content-views/deletion/views/version-deletion-activation-keys.html'
202
+ templateUrl: 'content-views/deletion/views/version-deletion-activation-keys.html',
203
+ ncyBreadcrumb: {
204
+ label: '{{ "Deletion" | translate }}',
205
+ parent: 'content-view.info'
206
+ }
173
207
  })
174
- .state('content-views.details.version-deletion.confirm', {
208
+ .state('content-view.version-deletion.confirm', {
175
209
  url: '/versions/:versionId/delete/confirm',
176
210
  permission: 'promote_or_remove_content_views',
177
- collapsed: true,
178
211
  controller: 'ContentViewVersionDeletionConfirmController',
179
- templateUrl: 'content-views/deletion/views/version-deletion-confirm.html'
212
+ templateUrl: 'content-views/deletion/views/version-deletion-confirm.html',
213
+ ncyBreadcrumb: {
214
+ label: '{{ "Deletion" | translate }}',
215
+ parent: 'content-view.info'
216
+ }
180
217
  })
181
- .state('content-views.details.deletion', {
182
- collapsed: true,
218
+ .state('content-view.deletion', {
183
219
  url: '/delete',
184
220
  permission: 'promote_or_remove_content_views',
185
221
  controller: 'ContentViewDeletionController',
186
- templateUrl: 'content-views/deletion/views/content-view-deletion.html'
222
+ templateUrl: 'content-views/deletion/views/content-view-deletion.html',
223
+ ncyBreadcrumb: {
224
+ label: '{{ "Deletion" | translate }}',
225
+ parent: 'content-view.info'
226
+ }
187
227
  })
188
- .state('content-views.details.repositories', {
228
+ .state('content-view.repositories', {
189
229
  abstract: true,
190
- collapsed: true,
191
230
  template: '<div ui-view></div>'
192
231
  })
193
- .state('content-views.details.repositories.yum', {
232
+ .state('content-view.repositories.yum', {
194
233
  abstract: true,
195
- collapsed: true,
196
234
  template: '<div ui-view></div>'
197
235
  })
198
- .state('content-views.details.repositories.yum.list', {
199
- collapsed: true,
236
+ .state('content-view.repositories.yum.list', {
200
237
  url: '/repositories/yum',
201
238
  permission: 'view_content_views',
202
239
  controller: 'ContentViewRepositoriesListController',
203
- templateUrl: 'content-views/details/views/content-view-repositories.html'
240
+ templateUrl: 'content-views/details/views/content-view-repositories.html',
241
+ ncyBreadcrumb: {
242
+ label: '{{ "Yum Repositories" | translate }}',
243
+ parent: 'content-view.info'
244
+ }
204
245
  })
205
- .state('content-views.details.repositories.yum.available', {
206
- collapsed: true,
246
+ .state('content-view.repositories.yum.available', {
207
247
  url: '/repositories/yum/available',
208
248
  permission: 'view_content_views',
209
249
  controller: 'ContentViewAvailableRepositoriesController',
210
- templateUrl: 'content-views/details/views/content-view-repositories.html'
250
+ templateUrl: 'content-views/details/views/content-view-repositories.html',
251
+ ncyBreadcrumb: {
252
+ label: '{{ "Add Yum Repositories" | translate }}',
253
+ parent: 'content-view.info'
254
+ }
211
255
  })
212
- .state('content-views.details.repositories.file', {
256
+ .state('content-view.repositories.file', {
213
257
  abstract: true,
214
- collapsed: true,
215
258
  template: '<div ui-view></div>'
216
259
  })
217
- .state('content-views.details.repositories.file.list', {
218
- collapsed: true,
260
+ .state('content-view.repositories.file.list', {
219
261
  url: '/repositories/file',
220
262
  permission: 'view_content_views',
221
263
  controller: 'ContentViewFileRepositoriesListController',
222
- templateUrl: 'content-views/details/views/content-view-file-repositories.html'
264
+ templateUrl: 'content-views/details/views/content-view-file-repositories.html',
265
+ ncyBreadcrumb: {
266
+ label: '{{ "File Repositories" | translate }}',
267
+ parent: 'content-view.info'
268
+ }
223
269
  })
224
- .state('content-views.details.repositories.file.available', {
225
- collapsed: true,
270
+ .state('content-view.repositories.file.available', {
226
271
  url: '/repositories/file/available',
227
272
  permission: 'view_content_views',
228
273
  controller: 'ContentViewAvailableFileRepositoriesController',
229
- templateUrl: 'content-views/details/views/content-view-file-repositories.html'
274
+ templateUrl: 'content-views/details/views/content-view-file-repositories.html',
275
+ ncyBreadcrumb: {
276
+ label: '{{ "Add File Repositories" | translate }}',
277
+ parent: 'content-view.info'
278
+ }
230
279
  })
231
- .state('content-views.details.repositories.docker', {
280
+ .state('content-view.repositories.docker', {
232
281
  abstract: true,
233
- collapsed: true,
234
282
  template: '<div ui-view></div>'
235
283
  })
236
- .state('content-views.details.repositories.docker.list', {
237
- collapsed: true,
284
+ .state('content-view.repositories.docker.list', {
238
285
  url: '/repositories/docker',
239
286
  permission: 'view_content_views',
240
287
  controller: 'ContentViewDockerRepositoriesListController',
241
- templateUrl: 'content-views/details/views/content-view-docker-repositories.html'
288
+ templateUrl: 'content-views/details/views/content-view-docker-repositories.html',
289
+ ncyBreadcrumb: {
290
+ label: '{{ "Docker Repositories" | translate }}',
291
+ parent: 'content-view.info'
292
+ }
242
293
  })
243
- .state('content-views.details.repositories.docker.available', {
244
- collapsed: true,
294
+ .state('content-view.repositories.docker.available', {
245
295
  url: '/repositories/docker/available',
246
296
  permission: 'view_content_views',
247
297
  controller: 'ContentViewAvailableDockerRepositoriesController',
248
- templateUrl: 'content-views/details/views/content-view-docker-repositories.html'
298
+ templateUrl: 'content-views/details/views/content-view-docker-repositories.html',
299
+ ncyBreadcrumb: {
300
+ label: '{{ "Add Docker Repositories" | translate }}',
301
+ parent: 'content-view.info'
302
+ }
249
303
  })
250
- .state('content-views.details.repositories.ostree', {
304
+ .state('content-view.repositories.ostree', {
251
305
  abstract: true,
252
- collapsed: true,
253
306
  template: '<div ui-view></div>'
254
307
  })
255
- .state('content-views.details.repositories.ostree.list', {
256
- collapsed: true,
308
+ .state('content-view.repositories.ostree.list', {
257
309
  url: '/repositories/ostree',
258
310
  permission: 'view_content_views',
259
311
  controller: 'ContentViewOstreeRepositoriesListController',
260
- templateUrl: 'content-views/details/views/content-view-ostree-repositories.html'
312
+ templateUrl: 'content-views/details/views/content-view-ostree-repositories.html',
313
+ ncyBreadcrumb: {
314
+ label: '{{ "OSTree Repositories" | translate }}',
315
+ parent: 'content-view.info'
316
+ }
261
317
  })
262
- .state('content-views.details.repositories.ostree.available', {
263
- collapsed: true,
318
+ .state('content-view.repositories.ostree.available', {
264
319
  url: '/repositories/ostree/available',
265
320
  permission: 'view_content_views',
266
321
  controller: 'ContentViewAvailableOstreeRepositoriesController',
267
- templateUrl: 'content-views/details/views/content-view-ostree-repositories.html'
268
- })
269
- .state('content-views.details.history', {
270
- collapsed: true,
271
- url: '/history',
272
- permission: 'view_content_views',
273
- controller: 'ContentViewHistoryController',
274
- templateUrl: 'content-views/details/histories/views/content-view-history.html'
322
+ templateUrl: 'content-views/details/views/content-view-ostree-repositories.html',
323
+ ncyBreadcrumb: {
324
+ label: '{{ "Add OSTree Repositories" | translate }}',
325
+ parent: 'content-view.info'
326
+ }
275
327
  })
276
- .state('content-views.details.components', {
328
+ .state('content-view.components', {
277
329
  abstract: true,
278
- template: '<div ui-view></div>',
279
- collapsed: true
330
+ template: '<div ui-view></div>'
280
331
  })
281
- .state('content-views.details.components.composite-content-views', {
332
+ .state('content-view.components.composite-content-views', {
282
333
  abstract: true,
283
- collapsed: true,
284
334
  templateUrl: 'content-views/details/components/views/content-view-composite.html'
285
335
  })
286
- .state('content-views.details.components.composite-content-views.list', {
287
- collapsed: true,
336
+ .state('content-view.components.composite-content-views.list', {
288
337
  url: '/content-views',
289
338
  permission: 'view_content_views',
290
339
  controller: 'ContentViewCompositeContentViewsListController',
291
- templateUrl: 'content-views/details/components/views/content-view-composite-content-views-list.html'
340
+ templateUrl: 'content-views/details/components/views/content-view-composite-content-views-list.html',
341
+ ncyBreadcrumb: {
342
+ label: '{{ "Content Views" | translate }}',
343
+ parent: 'content-view.info'
344
+ }
292
345
  })
293
- .state('content-views.details.components.composite-content-views.available', {
294
- collapsed: true,
346
+ .state('content-view.components.composite-content-views.available', {
295
347
  url: '/content-views/available',
296
348
  permission: 'edit_content_views',
297
349
  controller: 'ContentViewCompositeAvailableContentViewsController',
298
- templateUrl: 'content-views/details/components/views/content-view-composite-available-content-views.html'
350
+ templateUrl: 'content-views/details/components/views/content-view-composite-available-content-views.html',
351
+ ncyBreadcrumb: {
352
+ label: '{{ "Add Content Views" | translate }}',
353
+ parent: 'content-view.info'
354
+ }
299
355
  })
300
- .state('content-views.details.puppet-modules', {
356
+ .state('content-view.puppet-modules', {
301
357
  abstract: true,
302
- collapsed: true,
303
358
  template: '<div ui-view></div>'
304
359
  })
305
- .state('content-views.details.puppet-modules.list', {
306
- collapsed: true,
360
+ .state('content-view.puppet-modules.list', {
307
361
  url: '/puppet_modules',
308
362
  permission: 'view_content_views',
309
363
  controller: 'ContentViewPuppetModulesController',
310
- templateUrl: 'content-views/details/puppet-modules/views/content-view-puppet-modules.html'
364
+ templateUrl: 'content-views/details/puppet-modules/views/content-view-puppet-modules.html',
365
+ ncyBreadcrumb: {
366
+ label: '{{ "Puppet Modules" | translate }}',
367
+ parent: 'content-view.info'
368
+ }
311
369
  })
312
- .state('content-views.details.puppet-modules.names', {
313
- collapsed: true,
370
+ .state('content-view.puppet-modules.names', {
314
371
  url: '/puppet_modules/names',
315
372
  permission: 'edit_content_views',
316
373
  controller: 'ContentViewPuppetModuleNamesController',
317
- templateUrl: 'content-views/details/puppet-modules/views/content-view-puppet-module-names.html'
374
+ templateUrl: 'content-views/details/puppet-modules/views/content-view-puppet-module-names.html',
375
+ ncyBreadcrumb: {
376
+ label: '{{ "Add Puppet Module" | translate }}',
377
+ parent: 'content-view.puppet-modules.list'
378
+ }
318
379
  })
319
- .state('content-views.details.puppet-modules.versions', {
320
- collapsed: true,
380
+ .state('content-view.puppet-modules.versions', {
321
381
  url: '/puppet_modules/:moduleName/versions',
322
382
  permission: 'edit_content_views',
323
383
  controller: 'ContentViewPuppetModuleVersionsController',
324
- templateUrl: 'content-views/details/puppet-modules/views/content-view-puppet-module-versions.html'
384
+ templateUrl: 'content-views/details/puppet-modules/views/content-view-puppet-module-versions.html',
385
+ ncyBreadcrumb: {
386
+ label: '{{ "Version for Module:" | translate }} {{ }}',
387
+ parent: 'content-view.puppet-modules.names'
388
+ }
325
389
  })
326
390
  // Necessary until ui-router supports optional parameters, see https://github.com/angular-ui/ui-router/issues/108
327
- .state('content-views.details.puppet-modules.versionsForModule', {
391
+ .state('content-view.puppet-modules.versionsForModule', {
328
392
  collapsed: true,
329
393
  url: '/puppet_modules/:moduleName/versions/:moduleId',
330
394
  permission: 'edit_content_views',
331
395
  controller: 'ContentViewPuppetModuleVersionsController',
332
- templateUrl: 'content-views/details/puppet-modules/views/content-view-puppet-module-versions.html'
396
+ templateUrl: 'content-views/details/puppet-modules/views/content-view-puppet-module-versions.html',
397
+ ncyBreadcrumb: {
398
+ label: '{{ "Versions for Module" | translate }}',
399
+ parent: 'content-view.puppet-modules.versions'
400
+ }
333
401
  })
334
- .state('content-views.details.info', {
335
- collapsed: true,
402
+ .state('content-view.history', {
403
+ url: '/history',
404
+ permission: 'view_content_views',
405
+ controller: 'ContentViewHistoryController',
406
+ templateUrl: 'content-views/details/histories/views/content-view-history.html',
407
+ ncyBreadcrumb: {
408
+ label: '{{ "History" | translate }}',
409
+ parent: 'content-view.info'
410
+ }
411
+ })
412
+ .state('content-view.info', {
336
413
  url: '/info',
337
414
  permission: 'view_content_views',
338
- templateUrl: 'content-views/details/views/content-view-info.html'
415
+ templateUrl: 'content-views/details/views/content-view-info.html',
416
+ ncyBreadcrumb: {
417
+ label: '{{ contentView.name }}',
418
+ parent: 'content-views'
419
+ }
339
420
  })
340
- .state('content-views.details.publish', {
341
- collapsed: true,
421
+ .state('content-view.publish', {
342
422
  url: '/publish',
343
423
  permission: 'publish_content_views',
344
424
  controller: 'ContentViewPublishController',
345
- templateUrl: 'content-views/details/views/content-view-publish.html'
425
+ templateUrl: 'content-views/details/views/content-view-publish.html',
426
+ ncyBreadcrumb: {
427
+ label: '{{ "Publish" | translate }}',
428
+ parent: 'content-view.info'
429
+ }
346
430
  })
347
431
 
348
- .state('content-views.details.filters', {
349
- abstract: true,
350
- collapsed: true,
351
- controller: 'FiltersController',
352
- template: '<div ui-view></div>'
353
- })
354
- .state('content-views.details.filters.list', {
355
- collapsed: true,
432
+ .state('content-view.filters', {
356
433
  url: '/filters',
357
434
  permission: 'view_content_views',
358
- templateUrl: 'content-views/details/filters/views/filters.html'
435
+ controller: 'FiltersController',
436
+ templateUrl: 'content-views/details/filters/views/filters.html',
437
+ ncyBreadcrumb: {
438
+ label: '{{ "Filters" | translate }}',
439
+ parent: 'content-view.info'
440
+ }
441
+
359
442
  })
360
- .state('content-views.details.filters.new', {
361
- collapsed: true,
362
- url: '/filters/new',
443
+ .state('content-view.filters.new', {
444
+ url: '/new',
363
445
  permission: 'edit_content_views',
364
- controller: 'NewFilterController',
365
- templateUrl: 'content-views/details/filters/views/new-filter.html'
366
- })
367
- .state('content-views.details.filters.details', {
446
+ views: {
447
+ '@content-view': {
448
+ controller: 'NewFilterController',
449
+ templateUrl: 'content-views/details/filters/views/new-filter.html'
450
+ }
451
+ },
452
+ ncyBreadcrumb: {
453
+ label: '{{ "Create Filter" | translate }}',
454
+ parent: 'content-view.filters'
455
+ }
456
+ });
457
+
458
+ $stateProvider.state('content-view.filter', {
368
459
  abstract: true,
369
- collapsed: true,
370
460
  controller: 'FilterDetailsController',
371
461
  templateUrl: 'content-views/details/filters/views/filter-details.html'
372
462
  })
373
463
 
374
- .state('content-views.details.filters.details.rpm', {
464
+ .state('content-view.filter.rpm', {
375
465
  abstract: true,
376
- collapsed: true,
377
466
  url: '/filters/:filterId/package',
378
467
  permission: 'view_content_views',
379
468
  controller: 'PackageFilterController',
380
469
  templateUrl: 'content-views/details/filters/views/package-filter.html'
381
470
  })
382
- .state('content-views.details.filters.details.rpm.details', {
471
+ .state('content-view.filter.rpm.details', {
383
472
  url: '/details',
384
473
  permission: 'view_content_views',
385
- collapsed: true,
386
474
  controller: 'PackageFilterController',
387
- templateUrl: 'content-views/details/filters/views/package-filter-details.html'
475
+ templateUrl: 'content-views/details/filters/views/package-filter-details.html',
476
+ ncyBreadcrumb: {
477
+ label: '{{ filter.name }}',
478
+ parent: 'content-view.filters'
479
+ }
388
480
  })
389
- .state('content-views.details.filters.details.rpm.edit', {
481
+ .state('content-view.filter.rpm.edit', {
390
482
  url: '/edit',
391
- collapsed: true,
392
483
  controller: 'FilterEditController',
393
484
  permission: 'edit_content_views',
394
- templateUrl: 'content-views/details/filters/views/edit-filter.html'
485
+ templateUrl: 'content-views/details/filters/views/edit-filter.html',
486
+ ncyBreadcrumb: {
487
+ label: '{{ "Edit" | translate}} {{ filter.name }}',
488
+ parent: 'content-view.filters'
489
+ }
395
490
  })
396
- .state('content-views.details.filters.details.rpm.repositories', {
397
- collapsed: true,
491
+ .state('content-view.filter.rpm.repositories', {
398
492
  url: '/repositories',
399
493
  permission: 'view_content_views',
400
494
  controller: 'FilterRepositoriesController',
401
- templateUrl: 'content-views/details/filters/views/filter-repositories.html'
495
+ templateUrl: 'content-views/details/filters/views/filter-repositories.html',
496
+ ncyBreadcrumb: {
497
+ label: '{{ "Repositories" | translate }}',
498
+ parent: 'content-view.filter.rpm.edit'
499
+ }
402
500
  })
403
501
 
404
- .state('content-views.details.filters.details.package_group', {
502
+ .state('content-view.filter.package_group', {
405
503
  abstract: true,
406
- collapsed: true,
407
- controller: 'PackageGroupFilterController',
408
504
  url: '/filters/:filterId/package-group',
409
505
  templateUrl: 'content-views/details/filters/views/package-group-filter.html'
410
506
  })
411
- .state('content-views.details.filters.details.package_group.edit', {
507
+ .state('content-view.filter.package_group.edit', {
412
508
  url: '/edit',
413
- collapsed: true,
414
509
  controller: 'FilterEditController',
415
510
  permission: 'edit_content_views',
416
- templateUrl: 'content-views/details/filters/views/edit-filter.html'
511
+ templateUrl: 'content-views/details/filters/views/edit-filter.html',
512
+ ncyBreadcrumb: {
513
+ label: '{{ "Edit" | translate }} {{ filter.name }}',
514
+ parent: 'content-view.filters'
515
+ }
417
516
  })
418
- .state('content-views.details.filters.details.package_group.list', {
419
- collapsed: true,
517
+ .state('content-view.filter.package_group.list', {
420
518
  url: '/list',
421
519
  permission: 'view_content_views',
422
520
  controller: 'PackageGroupFilterListController',
423
- templateUrl: 'content-views/details/filters/views/package-group-filter-details.html'
521
+ templateUrl: 'content-views/details/filters/views/package-group-filter-details.html',
522
+ ncyBreadcrumb: {
523
+ label: '{{ "Package Groups" | translate }}',
524
+ parent: 'content-view.filter.package_group.edit'
525
+ }
424
526
  })
425
- .state('content-views.details.filters.details.package_group.available', {
426
- collapsed: true,
527
+ .state('content-view.filter.package_group.available', {
427
528
  url: '/available',
428
529
  permission: 'edit_content_views',
429
530
  controller: 'AvailablePackageGroupFilterController',
430
- templateUrl: 'content-views/details/filters/views/package-group-filter-details.html'
531
+ templateUrl: 'content-views/details/filters/views/package-group-filter-details.html',
532
+ ncyBreadcrumb: {
533
+ label: '{{ "Add Package Groups" | translate }}',
534
+ parent: 'content-view.filter.package_group.edit'
535
+ }
431
536
  })
432
- .state('content-views.details.filters.details.package_group.repositories', {
433
- collapsed: true,
537
+ .state('content-view.filter.package_group.repositories', {
434
538
  url: '/repositories',
435
539
  permission: 'view_content_views',
436
540
  controller: 'FilterRepositoriesController',
437
- templateUrl: 'content-views/details/filters/views/filter-repositories.html'
541
+ templateUrl: 'content-views/details/filters/views/filter-repositories.html',
542
+ ncyBreadcrumb: {
543
+ label: '{{ "Repositories | translate }}',
544
+ parent: 'content-view.filter.package_group.edit'
545
+ }
438
546
  })
439
547
 
440
- .state('content-views.details.filters.details.erratum', {
548
+ .state('content-view.filter.erratum', {
441
549
  abstract: true,
442
- collapsed: true,
443
550
  url: '/filters/:filterId/errata',
444
551
  controller: 'ErrataFilterController',
445
552
  templateUrl: 'content-views/details/filters/views/errata-filter.html'
446
553
  })
447
- .state('content-views.details.filters.details.erratum.edit', {
554
+ .state('content-view.filter.erratum.edit', {
448
555
  url: '/edit',
449
- collapsed: true,
450
556
  controller: 'FilterEditController',
451
557
  permission: 'edit_content_views',
452
- templateUrl: 'content-views/details/filters/views/edit-filter.html'
558
+ templateUrl: 'content-views/details/filters/views/edit-filter.html',
559
+ ncyBreadcrumb: {
560
+ label: '{{ "Edit" | translate }} {{ filter.name }}',
561
+ parent: 'content-view.filters'
562
+ }
453
563
  })
454
- .state('content-views.details.filters.details.erratum.list', {
455
- collapsed: true,
564
+ .state('content-view.filter.erratum.list', {
456
565
  url: '/list',
457
566
  permission: 'view_content_views',
458
567
  controller: 'ErrataFilterListController',
459
- templateUrl: 'content-views/details/filters/views/errata-filter-details.html'
568
+ templateUrl: 'content-views/details/filters/views/errata-filter-details.html',
569
+ ncyBreadcrumb: {
570
+ label: '{{ "Erratum" | translate }}',
571
+ parent: 'content-view.filter.erratum.edit'
572
+ }
460
573
  })
461
- .state('content-views.details.filters.details.erratum.available', {
462
- collapsed: true,
574
+ .state('content-view.filter.erratum.available', {
463
575
  url: '/available',
464
576
  permission: 'edit_content_views',
465
577
  controller: 'AvailableErrataFilterController',
466
- templateUrl: 'content-views/details/filters/views/errata-filter-details.html'
578
+ templateUrl: 'content-views/details/filters/views/errata-filter-details.html',
579
+ ncyBreadcrumb: {
580
+ label: '{{ "Add Erratum" | translate }}',
581
+ parent: 'content-view.filter.erratum.edit'
582
+ }
467
583
  })
468
- .state('content-views.details.filters.details.erratum.dateType', {
469
- collapsed: true,
584
+ .state('content-view.filter.erratum.dateType', {
470
585
  url: '/date_type',
471
586
  permission: 'view_content_views',
472
587
  controller: 'DateTypeErrataFilterController',
473
- templateUrl: 'content-views/details/filters/views/date-type-errata-filter.html'
588
+ templateUrl: 'content-views/details/filters/views/date-type-errata-filter.html',
589
+ ncyBreadcrumb: {
590
+ label: '{{ filter.name }}',
591
+ parent: 'content-view.filters'
592
+ }
593
+
474
594
  })
475
- .state('content-views.details.filters.details.erratum.repositories', {
476
- collapsed: true,
595
+ .state('content-view.filter.erratum.repositories', {
477
596
  url: '/repositories',
478
597
  permission: 'view_content_views',
479
598
  controller: 'FilterRepositoriesController',
480
- templateUrl: 'content-views/details/filters/views/filter-repositories.html'
599
+ templateUrl: 'content-views/details/filters/views/filter-repositories.html',
600
+ ncyBreadcrumb: {
601
+ label: '{{ "Repositories" | translate }}',
602
+ parent: 'content-view.filter.erratum.edit'
603
+ }
481
604
  })
482
605
 
483
- .state('content-views.details.tasks', {
606
+ .state('content-view.tasks', {
484
607
  abstract: true,
485
- collapsed: true,
486
608
  template: '<div ui-view></div>'
487
609
  })
488
- .state('content-views.details.tasks.index', {
610
+ .state('content-view.tasks.index', {
489
611
  url: '/tasks',
490
612
  permission: 'view_content_views',
491
- collapsed: true,
492
- templateUrl: 'content-views/details/views/content-view-details-tasks.html'
613
+ templateUrl: 'content-views/details/views/content-view-details-tasks.html',
614
+ ncyBreadcrumb: {
615
+ label: '{{ "Tasks" | translate }}',
616
+ parent: 'content-view.info'
617
+ }
493
618
  })
494
- .state('content-views.details.tasks.details', {
619
+ .state('content-view.task', {
495
620
  url: '/tasks/:taskId',
496
621
  permission: 'view_content_views',
497
- collapsed: true,
498
622
  controller: 'TaskDetailsController',
499
- templateUrl: 'tasks/views/task-details.html'
623
+ templateUrl: 'tasks/views/task-details.html',
624
+ ncyBreadcrumb: {
625
+ label: '{{ task.id }}',
626
+ parent: 'content-view.tasks'
627
+ }
500
628
  });
501
629
  }]);