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
@@ -1,121 +1,89 @@
1
1
  <span page-title ng-model="contentView">{{ 'Repositories for Content View:' | translate }} {{ contentView.name }}</span>
2
2
 
3
- <div class="details details-full">
3
+ <header data-block="sub-header">
4
+ <h3 translate>File Repositories</h3>
5
+ </header>
4
6
 
5
- <h3 translate>
6
- Repository Selection
7
- </h3>
8
-
9
- <nav>
10
- <ul class="nav nav-tabs" ng-show="permitted('edit_content_views', contentView)">
11
- <li ng-class="{active: isState('content-views.details.repositories.file.list')}">
12
- <a ui-sref="content-views.details.repositories.file.list">
13
- <span translate>
14
- List/Remove
15
- </span>
16
- </a>
17
- </li>
18
-
19
- <li ng-class="{active: isState('content-views.details.repositories.file.available')}" ng-show="!contentView.permissions.editable">
20
- <a ui-sref="content-views.details.repositories.file.available" translate>
21
- Add
22
- </a>
23
- </li>
24
- </ul>
25
- </nav>
26
-
27
- <div class="details-header row">
28
- <div class="col-sm-8">
29
- <div class="input-group">
30
-
31
- <span class="input-group-addon">
32
- <select ng-model="product" ng-options="product.name for (id, product) in products">
33
- </select>
7
+ <nav data-block="navigation">
8
+ <ul class="nav nav-tabs" ng-show="permitted('edit_content_views', contentView)">
9
+ <li ng-class="{active: isState('content-view.repositories.file.list')}">
10
+ <a ui-sref="content-view.repositories.file.list">
11
+ <span translate>
12
+ List/Remove
34
13
  </span>
14
+ </a>
15
+ </li>
35
16
 
36
- <input type="text"
37
- class="form-control filter-input"
38
- placeholder="{{ 'Filter' | translate }}"
39
- ng-model="repositorySearch"/>
17
+ <li ng-class="{active: isState('content-view.repositories.file.available')}" ng-show="!contentView.permissions.editable">
18
+ <a ui-sref="content-view.repositories.file.available" translate>
19
+ Add
20
+ </a>
21
+ </li>
22
+ </ul>
23
+ </nav>
40
24
 
41
- </div>
42
- </div>
43
-
44
- <div class="col-sm-4">
45
- <button class="btn btn-primary fr"
46
- ng-disabled="repositoriesTable.numSelected === 0"
47
- ng-show="isState('content-views.details.repositories.file.list') && permitted('edit_content_views', contentView)"
48
- ng-click="removeRepositories(contentView)">
49
- <i class="fa fa-trash-o"></i>
50
- <span translate>Remove Repositories</span>
51
- </button>
52
- <button class="btn btn-primary fr"
53
- ng-disabled="repositoriesTable.numSelected === 0"
54
- ng-show="isState('content-views.details.repositories.file.available') && permitted('edit_content_views', contentView)"
55
- ng-click="addRepositories(contentView)">
56
- <i class="fa fa-plus"></i>
57
- <span translate>Add Repositories</span>
58
- </button>
59
- </div>
25
+ <div data-extend-template="layouts/partials/table.html">
26
+ <div data-block="list-actions">
27
+ <button class="btn btn-primary"
28
+ ng-disabled="table.numSelected === 0"
29
+ ng-show="isState('content-view.repositories.file.list') && permitted('edit_content_views', contentView)"
30
+ ng-click="removeRepositories(contentView)">
31
+ <span translate>Remove Repositories</span>
32
+ </button>
33
+ <button class="btn btn-primary"
34
+ ng-disabled="table.numSelected === 0"
35
+ ng-show="isState('content-view.repositories.file.available') && permitted('edit_content_views', contentView)"
36
+ ng-click="addRepositories(contentView)">
37
+ <span translate>Add Repositories</span>
38
+ </button>
60
39
  </div>
61
40
 
62
- <div bst-table="repositoriesTable" class="nutupane">
63
-
64
- <div ng-show="repositoriesTable.rows.length === 0 && !repositoriesTable.working">
65
- <p bst-alert="info" ng-show="isState('content-views.details.repositories.file.list')">
66
- <span translate>
67
- There are currently no repositories associated with this Content View, you can add some by clicking on the "Add" tab above.
68
- </span>
69
- </p>
70
- <p bst-alert="info" ng-show="isState('content-views.details.repositories.file.available')">
71
- <span translate>There are currently no repositories to add to this Content View,</span>
72
- <a ui-sref="products.index" translate>add some repositories.</a>
73
- </p>
74
- </div>
75
-
76
- <div class="loading-mask loading-mask-panel" ng-show="repositoriesTable.working">
77
- <i class="fa fa-spinner fa-spin"></i>
78
- {{ "Loading..." | translate }}
79
- </div>
80
-
81
- <table ng-show="repositoriesTable.rows.length > 0" class="table table-bordered table-striped">
82
- <thead>
83
- <tr bst-table-head row-select>
84
- <th bst-table-column translate>Name</th>
85
- <th bst-table-column translate>Product</th>
86
- <th bst-table-column translate>Last Sync</th>
87
- <th bst-table-column translate>Sync State</th>
88
- </tr>
89
- </thead>
41
+ <span data-block="no-rows-message">
42
+ <span ng-show="isState('content-view.repositories.file.list')" translate>
43
+ There are currently no File Repositories associated with this Content View, you can add some by clicking on the "Add" tab above.
44
+ </span>
45
+ <span ng-show="isState('content-view.repositories.file.available')">
46
+ <span translate>There are currently no File Repositories to add to this Content View,</span>
47
+ <a ui-sref="products" translate>add some repositories.</a>
48
+ </span>
49
+ </span>
90
50
 
91
- <tbody>
92
- <tr bst-table-row
93
- row-select="repository"
94
- ng-repeat="repository in repositoriesTable.rows | filter:repositorySearch | filter:repositoryFilter as filteredItems">
95
- <td bst-table-cell>
96
- <a ui-sref="products.details.repositories.info({productId: repository.product.id, repositoryId: repository.id})">
97
- {{ repository.name }}
98
- </a>
99
- </td>
100
- <td bst-table-cell>{{ repository.product.name }}</td>
101
- <td bst-table-cell>
102
- <span ng-show="repository.url && repository.last_sync == null" translate>
103
- Not Synced
104
- </span>
105
- <span ng-show="repository.url">
106
- {{ repository.last_sync.ended_at | date:"short" }}
107
- </span>
108
- <span ng-hide="repository.url" translate>N/A</span>
109
- </td>
110
- <td bst-table-cell>
111
- <span ng-show="repository.url">
112
- <a href="/foreman_tasks/tasks/{{repository.last_sync.id}}">{{ repository.last_sync.result | capitalize }}</a>
113
- </span>
114
- <span ng-hide="repository.url" translate>N/A</span>
115
- </td>
116
- </tr>
117
- </tbody>
118
- </table>
119
- </div>
51
+ <table data-block="table" class="table table-bordered table-striped">
52
+ <thead>
53
+ <tr bst-table-head row-select>
54
+ <th bst-table-column translate>Name</th>
55
+ <th bst-table-column translate>Product</th>
56
+ <th bst-table-column translate>Last Sync</th>
57
+ <th bst-table-column translate>Sync State</th>
58
+ </tr>
59
+ </thead>
120
60
 
61
+ <tbody>
62
+ <tr bst-table-row
63
+ row-select="repository"
64
+ ng-repeat="repository in table.rows | filter:repositorySearch | filter:repositoryFilter as filteredItems">
65
+ <td bst-table-cell>
66
+ <a ui-sref="products.details.repositories.info({productId: repository.product.id, repositoryId: repository.id})">
67
+ {{ repository.name }}
68
+ </a>
69
+ </td>
70
+ <td bst-table-cell>{{ repository.product.name }}</td>
71
+ <td bst-table-cell>
72
+ <span ng-show="repository.url && repository.last_sync == null" translate>
73
+ Not Synced
74
+ </span>
75
+ <span ng-show="repository.url">
76
+ {{ repository.last_sync.ended_at | date:"short" }}
77
+ </span>
78
+ <span ng-hide="repository.url" translate>N/A</span>
79
+ </td>
80
+ <td bst-table-cell>
81
+ <span ng-show="repository.url">
82
+ <a href="/foreman_tasks/tasks/{{repository.last_sync.id}}">{{ repository.last_sync.result | capitalize }}</a>
83
+ </span>
84
+ <span ng-hide="repository.url" translate>N/A</span>
85
+ </td>
86
+ </tr>
87
+ </tbody>
88
+ </table>
121
89
  </div>
@@ -1,48 +1,41 @@
1
1
  <span page-title ng-model="contentView">{{ 'Details for Content View:' | translate }} {{ contentView.name }}</span>
2
+ <header data-block="sub-header">
3
+ <h3 translate>Details for {{ contentView.name }}</h3>
4
+ </header>
2
5
 
3
- <div class="details">
4
-
5
- <div class="detail">
6
- <span class="info-label" translate>Name</span>
7
- <span class="info-value"
8
- bst-edit-text="contentView.name"
6
+ <div class="row">
7
+ <div class="col-sm-6">
8
+ <dl class="dl-horizontal dl-horizontal-left">
9
+ <dt translate>Name</dt>
10
+ <dd bst-edit-text="contentView.name"
9
11
  on-save="save(contentView)"
10
12
  readonly="denied('edit_content_views', contentView)">
11
- </span>
12
- </div>
13
+ </dd>
13
14
 
14
- <div class="detail">
15
- <span class="info-label" translate>Label</span>
16
- <span class="info-value">{{ contentView.label }}</span>
17
- </div>
15
+ <dt translate>Label</dt>
16
+ <dd>{{ contentView.label }}</dd>
18
17
 
19
- <div class="detail">
20
- <span class="info-label" translate>Description</span>
21
- <span class="info-value"
22
- bst-edit-textarea="contentView.description"
18
+ <dt translate>Description</dt>
19
+ <dd bst-edit-textarea="contentView.description"
23
20
  on-save="save(contentView)"
24
21
  readonly="denied('edit_content_views', contentView)">
25
- </span>
26
- </div>
22
+ </dd>
27
23
 
28
- <div class="detail">
29
- <span class="info-label" translate>Composite?</span>
30
- <span class="info-value" ng-show="contentView.composite" translate>Yes</span>
31
- <span class="info-value" ng-hide="contentView.composite" translate>No</span>
32
- </div>
24
+ <dt translate>Composite?</dt>
25
+ <dd ng-show="contentView.composite" translate>Yes</dd>
26
+ <dd ng-hide="contentView.composite" translate>No</dd>
33
27
 
34
- <div class="detail">
35
- <span class="info-label" translate>
36
- Force Puppet Environment
37
- </span>
38
- <span class="info-value"
39
- bst-edit-checkbox="contentView.force_puppet_environment"
40
- formatter="booleanToYesNo"
41
- on-save="save(contentView)"
42
- readonly="denied('edit_content_views', contentView)">
43
- </span>
28
+ <dt translate>Force Puppet Environment</dt>
29
+ <dd>
30
+ <div bst-edit-checkbox="contentView.force_puppet_environment"
31
+ formatter="booleanToYesNo"
32
+ on-save="save(contentView)"
33
+ readonly="denied('edit_content_views', contentView)">
34
+ </div>
35
+ <p class="help-text">
36
+ With this option selected, a puppet environment will be created during publish and promote even if no puppet modules have been added to the Content View
37
+ </p>
38
+ </dd>
39
+ </dl>
44
40
  </div>
45
- <h6 translate>
46
- With this option selected, a puppet environment will be created during publish and promote even if no puppet modules have been added to the Content View
47
- </h6>
48
41
  </div>
@@ -1,121 +1,89 @@
1
1
  <span page-title ng-model="contentView">{{ 'Repositories for Content View:' | translate }} {{ contentView.name }}</span>
2
2
 
3
- <div class="details details-full">
3
+ <header data-block="sub-header">
4
+ <h3 translate>OSTree Repositories</h3>
5
+ </header>
4
6
 
5
- <h3 translate>
6
- Repository Selection
7
- </h3>
8
-
9
- <nav>
10
- <ul class="nav nav-tabs" ng-show="permitted('edit_content_views', contentView)">
11
- <li ng-class="{active: isState('content-views.details.repositories.ostree.list')}">
12
- <a ui-sref="content-views.details.repositories.ostree.list">
13
- <span translate>
14
- List/Remove
15
- </span>
16
- </a>
17
- </li>
18
-
19
- <li ng-class="{active: isState('content-views.details.repositories.ostree.available')}" ng-show="!contentView.permissions.editable">
20
- <a ui-sref="content-views.details.repositories.ostree.available" translate>
21
- Add
22
- </a>
23
- </li>
24
- </ul>
25
- </nav>
26
-
27
- <div class="details-header row">
28
- <div class="col-sm-8">
29
- <div class="input-group">
30
-
31
- <span class="input-group-addon">
32
- <select ng-model="product" ng-options="product.name for (id, product) in products">
33
- </select>
7
+ <nav data-block="navigation">
8
+ <ul class="nav nav-tabs" ng-show="permitted('edit_content_views', contentView)">
9
+ <li ng-class="{active: isState('content-view.repositories.ostree.list')}">
10
+ <a ui-sref="content-view.repositories.ostree.list">
11
+ <span translate>
12
+ List/Remove
34
13
  </span>
14
+ </a>
15
+ </li>
35
16
 
36
- <input type="text"
37
- class="form-control filter-input"
38
- placeholder="{{ 'Filter' | translate }}"
39
- ng-model="repositorySearch"/>
17
+ <li ng-class="{active: isState('content-view.repositories.ostree.available')}" ng-show="!contentView.permissions.editable">
18
+ <a ui-sref="content-view.repositories.ostree.available" translate>
19
+ Add
20
+ </a>
21
+ </li>
22
+ </ul>
23
+ </nav>
40
24
 
41
- </div>
42
- </div>
43
-
44
- <div class="col-sm-4">
45
- <button class="btn btn-primary fr"
46
- ng-disabled="repositoriesTable.numSelected === 0"
47
- ng-show="isState('content-views.details.repositories.ostree.list') && permitted('edit_content_views', contentView)"
48
- ng-click="removeRepositories(contentView)">
49
- <i class="fa fa-trash-o"></i>
50
- <span translate>Remove Repositories</span>
51
- </button>
52
- <button class="btn btn-primary fr"
53
- ng-disabled="repositoriesTable.numSelected === 0"
54
- ng-show="isState('content-views.details.repositories.ostree.available') && permitted('edit_content_views', contentView)"
55
- ng-click="addRepositories(contentView)">
56
- <i class="fa fa-plus"></i>
57
- <span translate>Add Repositories</span>
58
- </button>
59
- </div>
25
+ <div data-extend-template="layouts/partials/table.html">
26
+ <div data-block="list-actions">
27
+ <button class="btn btn-primary"
28
+ ng-disabled="table.numSelected === 0"
29
+ ng-show="isState('content-view.repositories.ostree.list') && permitted('edit_content_views', contentView)"
30
+ ng-click="removeRepositories(contentView)">
31
+ <span translate>Remove Repositories</span>
32
+ </button>
33
+ <button class="btn btn-primary"
34
+ ng-disabled="table.numSelected === 0"
35
+ ng-show="isState('content-view.repositories.ostree.available') && permitted('edit_content_views', contentView)"
36
+ ng-click="addRepositories(contentView)">
37
+ <span translate>Add Repositories</span>
38
+ </button>
60
39
  </div>
61
40
 
62
- <div bst-table="repositoriesTable" class="nutupane">
63
-
64
- <div ng-show="repositoriesTable.rows.length === 0 && !repositoriesTable.working">
65
- <p bst-alert="info" ng-show="isState('content-views.details.repositories.ostree.list')">
66
- <span translate>
67
- There are currently no repositories associated with this Content View, you can add some by clicking on the "Add" tab above.
68
- </span>
69
- </p>
70
- <p bst-alert="info" ng-show="isState('content-views.details.repositories.ostree.available')">
71
- <span translate>There are currently no repositories to add to this Content View,</span>
72
- <a ui-sref="products" translate>add some repositories.</a>
73
- </p>
74
- </div>
75
-
76
- <div class="loading-mask loading-mask-panel" ng-show="repositoriesTable.working">
77
- <i class="fa fa-spinner fa-spin"></i>
78
- {{ "Loading..." | translate }}
79
- </div>
80
-
81
- <table ng-show="repositoriesTable.rows.length > 0" class="table table-bordered table-striped">
82
- <thead>
83
- <tr bst-table-head row-select>
84
- <th bst-table-column translate>Name</th>
85
- <th bst-table-column translate>Product</th>
86
- <th bst-table-column translate>Last Sync</th>
87
- <th bst-table-column translate>Sync State</th>
88
- </tr>
89
- </thead>
41
+ <span data-block="no-rows-message">
42
+ <span ng-show="isState('content-view.repositories.ostree.list')" translate>
43
+ There are currently no OSTree Repositories associated with this Content View, you can add some by clicking on the "Add" tab above.
44
+ </span>
45
+ <span ng-show="isState('content-view.repositories.ostree.available')">
46
+ <span translate>There are currently no OSTree Repositories to add to this Content View,</span>
47
+ <a ui-sref="products" translate>add some repositories.</a>
48
+ </span>
49
+ </span>
90
50
 
91
- <tbody>
92
- <tr bst-table-row
93
- row-select="repository"
94
- ng-repeat="repository in repositoriesTable.rows | filter:repositorySearch | filter:repositoryFilter as filteredItems">
95
- <td bst-table-cell>
96
- <a ui-sref="product.repository.info({productId: repository.product.id, repositoryId: repository.id})">
97
- {{ repository.name }}
98
- </a>
99
- </td>
100
- <td bst-table-cell>{{ repository.product.name }}</td>
101
- <td bst-table-cell>
102
- <span ng-show="repository.url && repository.last_sync == null" translate>
103
- Not Synced
104
- </span>
105
- <span ng-show="repository.url">
106
- {{ repository.last_sync.ended_at | date:"short" }}
107
- </span>
108
- <span ng-hide="repository.url" translate>N/A</span>
109
- </td>
110
- <td bst-table-cell>
111
- <span ng-show="repository.url">
112
- <a href="/foreman_tasks/tasks/{{repository.last_sync.id}}">{{ repository.last_sync.result | capitalize }}</a>
113
- </span>
114
- <span ng-hide="repository.url" translate>N/A</span>
115
- </td>
116
- </tr>
117
- </tbody>
118
- </table>
119
- </div>
51
+ <table data-block="table" class="table table-bordered table-striped">
52
+ <thead>
53
+ <tr bst-table-head row-select>
54
+ <th bst-table-column translate>Name</th>
55
+ <th bst-table-column translate>Product</th>
56
+ <th bst-table-column translate>Last Sync</th>
57
+ <th bst-table-column translate>Sync State</th>
58
+ </tr>
59
+ </thead>
120
60
 
61
+ <tbody>
62
+ <tr bst-table-row
63
+ row-select="repository"
64
+ ng-repeat="repository in table.rows | filter:repositorySearch | filter:repositoryFilter as filteredItems">
65
+ <td bst-table-cell>
66
+ <a ui-sref="products.details.repositories.info({productId: repository.product.id, repositoryId: repository.id})">
67
+ {{ repository.name }}
68
+ </a>
69
+ </td>
70
+ <td bst-table-cell>{{ repository.product.name }}</td>
71
+ <td bst-table-cell>
72
+ <span ng-show="repository.url && repository.last_sync == null" translate>
73
+ Not Synced
74
+ </span>
75
+ <span ng-show="repository.url">
76
+ {{ repository.last_sync.ended_at | date:"short" }}
77
+ </span>
78
+ <span ng-hide="repository.url" translate>N/A</span>
79
+ </td>
80
+ <td bst-table-cell>
81
+ <span ng-show="repository.url">
82
+ <a href="/foreman_tasks/tasks/{{repository.last_sync.id}}">{{ repository.last_sync.result | capitalize }}</a>
83
+ </span>
84
+ <span ng-hide="repository.url" translate>N/A</span>
85
+ </td>
86
+ </tr>
87
+ </tbody>
88
+ </table>
121
89
  </div>