bastion 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. checksums.yaml +15 -0
  2. data/.jshintrc +35 -0
  3. data/Gruntfile.js +24 -0
  4. data/LICENSE +339 -0
  5. data/README.md +8 -0
  6. data/Rakefile +53 -0
  7. data/app/assets/javascripts/bastion/auth/auth.module.js +87 -0
  8. data/app/assets/javascripts/bastion/auth/authorization.service.js +48 -0
  9. data/app/assets/javascripts/bastion/bastion-bootstrap.js +32 -0
  10. data/app/assets/javascripts/bastion/bastion-resource.factory.js +39 -0
  11. data/app/assets/javascripts/bastion/bastion.js +52 -0
  12. data/app/assets/javascripts/bastion/bastion.module.js +213 -0
  13. data/app/assets/javascripts/bastion/i18n/README +9 -0
  14. data/app/assets/javascripts/bastion/i18n/i18n.module.js +24 -0
  15. data/app/assets/javascripts/bastion/i18n/katello.pot +968 -0
  16. data/app/assets/javascripts/bastion/i18n/locale/README +1 -0
  17. data/app/assets/javascripts/bastion/i18n/translate.service.js +14 -0
  18. data/app/assets/javascripts/bastion/i18n/translations.js +3 -0
  19. data/app/assets/javascripts/bastion/i18n/zanata.xml +28 -0
  20. data/app/assets/javascripts/bastion/incubator/alch-alert.directive.js +67 -0
  21. data/app/assets/javascripts/bastion/incubator/alch-container-scroll.directive.js +44 -0
  22. data/app/assets/javascripts/bastion/incubator/alch-dropdown.directive.js +28 -0
  23. data/app/assets/javascripts/bastion/incubator/alch-edit.directive.js +361 -0
  24. data/app/assets/javascripts/bastion/incubator/alch-flyout.directive.js +19 -0
  25. data/app/assets/javascripts/bastion/incubator/alch-form-buttons.directive.js +60 -0
  26. data/app/assets/javascripts/bastion/incubator/alch-form-group.directive.js +87 -0
  27. data/app/assets/javascripts/bastion/incubator/alch-infinite-scroll.directive.js +84 -0
  28. data/app/assets/javascripts/bastion/incubator/alch-menu.directive.js +56 -0
  29. data/app/assets/javascripts/bastion/incubator/alch-modal.directive.js +80 -0
  30. data/app/assets/javascripts/bastion/incubator/alch-save-control.directive.js +42 -0
  31. data/app/assets/javascripts/bastion/incubator/alch-table.directive.js +295 -0
  32. data/app/assets/javascripts/bastion/incubator/format/alch-format.module.js +21 -0
  33. data/app/assets/javascripts/bastion/incubator/format/array-to-string.filter.js +30 -0
  34. data/app/assets/javascripts/bastion/incubator/format/boolean-to-yes-no.filter.js +34 -0
  35. data/app/assets/javascripts/bastion/incubator/format/capitalize.filter.js +32 -0
  36. data/app/assets/javascripts/bastion/incubator/format/key-value-to-string.filter.js +40 -0
  37. data/app/assets/javascripts/bastion/incubator/format/unlimitedFilter.filter.js +35 -0
  38. data/app/assets/javascripts/bastion/incubator/stylesheets/alch-edit.scss +34 -0
  39. data/app/assets/javascripts/bastion/incubator/stylesheets/header.scss +207 -0
  40. data/app/assets/javascripts/bastion/incubator/views/alch-alert.html +6 -0
  41. data/app/assets/javascripts/bastion/incubator/views/alch-dropdown.html +19 -0
  42. data/app/assets/javascripts/bastion/incubator/views/alch-edit-add-item.html +21 -0
  43. data/app/assets/javascripts/bastion/incubator/views/alch-edit-add-remove-cancel.html +28 -0
  44. data/app/assets/javascripts/bastion/incubator/views/alch-edit-checkbox.html +6 -0
  45. data/app/assets/javascripts/bastion/incubator/views/alch-edit-custom.html +8 -0
  46. data/app/assets/javascripts/bastion/incubator/views/alch-edit-multiselect.html +17 -0
  47. data/app/assets/javascripts/bastion/incubator/views/alch-edit-save-cancel.html +20 -0
  48. data/app/assets/javascripts/bastion/incubator/views/alch-edit-select.html +10 -0
  49. data/app/assets/javascripts/bastion/incubator/views/alch-edit-text.html +6 -0
  50. data/app/assets/javascripts/bastion/incubator/views/alch-edit-textarea.html +6 -0
  51. data/app/assets/javascripts/bastion/incubator/views/alch-edit.html +18 -0
  52. data/app/assets/javascripts/bastion/incubator/views/alch-flyout.html +10 -0
  53. data/app/assets/javascripts/bastion/incubator/views/alch-form-buttons.html +10 -0
  54. data/app/assets/javascripts/bastion/incubator/views/alch-form-group.html +9 -0
  55. data/app/assets/javascripts/bastion/incubator/views/alch-menu.html +18 -0
  56. data/app/assets/javascripts/bastion/incubator/views/alch-modal-remove.html +13 -0
  57. data/app/assets/javascripts/bastion/incubator/views/alch-save-control.html +18 -0
  58. data/app/assets/javascripts/bastion/layouts/details-nutupane.html +73 -0
  59. data/app/assets/javascripts/bastion/layouts/nutupane.html +63 -0
  60. data/app/assets/javascripts/bastion/layouts/select-all-results.html +9 -0
  61. data/app/assets/javascripts/bastion/menu/menu-expander.service.js +51 -0
  62. data/app/assets/javascripts/bastion/menu/menu.module.js +26 -0
  63. data/app/assets/javascripts/bastion/utils/as.filter.js +33 -0
  64. data/app/assets/javascripts/bastion/utils/form-utils.service.js +53 -0
  65. data/app/assets/javascripts/bastion/utils/utils.module.js +21 -0
  66. data/app/assets/javascripts/bastion/widgets/current-tasks.directive.js +67 -0
  67. data/app/assets/javascripts/bastion/widgets/nutupane-table.directive.js +59 -0
  68. data/app/assets/javascripts/bastion/widgets/nutupane.factory.js +316 -0
  69. data/app/assets/javascripts/bastion/widgets/page-title.directive.js +61 -0
  70. data/app/assets/javascripts/bastion/widgets/page-title.service.js +42 -0
  71. data/app/assets/javascripts/bastion/widgets/path-selector.directive.js +109 -0
  72. data/app/assets/javascripts/bastion/widgets/views/current-tasks.html +23 -0
  73. data/app/assets/javascripts/bastion/widgets/views/path-selector.html +11 -0
  74. data/app/assets/javascripts/bastion/widgets/widgets.module.js +24 -0
  75. data/app/assets/stylesheets/bastion/animations.less +15 -0
  76. data/app/assets/stylesheets/bastion/bastion.less +160 -0
  77. data/app/assets/stylesheets/bastion/forms.less +41 -0
  78. data/app/assets/stylesheets/bastion/gpg-keys.less +36 -0
  79. data/app/assets/stylesheets/bastion/helpers.less +6 -0
  80. data/app/assets/stylesheets/bastion/mixins.less +15 -0
  81. data/app/assets/stylesheets/bastion/nutupane.less +382 -0
  82. data/app/assets/stylesheets/bastion/overrides.less +54 -0
  83. data/app/assets/stylesheets/bastion/path-selector.less +123 -0
  84. data/app/assets/stylesheets/bastion/systems.less +35 -0
  85. data/app/assets/stylesheets/bastion/tasks.less +23 -0
  86. data/app/assets/stylesheets/bastion/typography.less +31 -0
  87. data/app/assets/stylesheets/bastion/variables.less +3 -0
  88. data/app/controllers/bastion/bastion_controller.rb +24 -0
  89. data/app/views/bastion/layouts/application.html.erb +32 -0
  90. data/app/views/bastion/layouts/application_ie.html.erb +5 -0
  91. data/bastion.js +26 -0
  92. data/bower.json +94 -0
  93. data/config/routes.rb +25 -0
  94. data/config/routes/mount_engine.rb +3 -0
  95. data/grunt/bower.js +20 -0
  96. data/grunt/htmlhint.js +15 -0
  97. data/grunt/jshint.js +9 -0
  98. data/grunt/karma.js +83 -0
  99. data/lib/bastion.rb +17 -0
  100. data/lib/bastion/engine.rb +37 -0
  101. data/lib/bastion/version.rb +3 -0
  102. data/package.json +29 -0
  103. data/test/auth/authorization.service.test.js +63 -0
  104. data/test/bastion/bastion-resource.factory.test.js +31 -0
  105. data/test/bastion/test-constants.js +30 -0
  106. data/test/i18n/translate.service.test.js +31 -0
  107. data/test/incubator/alch-alert.directive.test.js +84 -0
  108. data/test/incubator/alch-container-scroll.directive.test.js +68 -0
  109. data/test/incubator/alch-dropdown.directive.test.js +113 -0
  110. data/test/incubator/alch-edit.directive.test.js +320 -0
  111. data/test/incubator/alch-flyout.directive.test.js +73 -0
  112. data/test/incubator/alch-form-buttons.directive.test.js +55 -0
  113. data/test/incubator/alch-form-group.directive.test.js +76 -0
  114. data/test/incubator/alch-infinite-scroll.directive.test.js +123 -0
  115. data/test/incubator/alch-menu.directive.test.js +94 -0
  116. data/test/incubator/alch-modal.directive.test.js +81 -0
  117. data/test/incubator/alch-table.directive.test.js +270 -0
  118. data/test/incubator/format/array-to-string.filter.test.js +38 -0
  119. data/test/incubator/format/boolean-to-yes-no.filter.test.js +41 -0
  120. data/test/incubator/format/capitalize.filter.test.js +35 -0
  121. data/test/incubator/format/key-value-to-string.filter.test.js +60 -0
  122. data/test/incubator/format/unlimited-filter.filter.test.js +31 -0
  123. data/test/incubator/nutupane-table.directive.test.js +69 -0
  124. data/test/incubator/nutupane.factory.test.js +307 -0
  125. data/test/menu/menu-expander.service.test.js +74 -0
  126. data/test/test-mocks.module.js +268 -0
  127. data/test/utils/as.filter.test.js +33 -0
  128. data/test/utils/form-utils.service.test.js +52 -0
  129. data/test/widgets/page-title.directive.test.js +54 -0
  130. data/test/widgets/page-title.service.test.js +51 -0
  131. data/test/widgets/path-selector.directive.test.js +136 -0
  132. data/vendor/assets/fonts/bastion/bootstrap/glyphicons-halflings-regular.eot +0 -0
  133. data/vendor/assets/fonts/bastion/bootstrap/glyphicons-halflings-regular.svg +229 -0
  134. data/vendor/assets/fonts/bastion/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  135. data/vendor/assets/fonts/bastion/bootstrap/glyphicons-halflings-regular.woff +0 -0
  136. data/vendor/assets/fonts/bastion/font-awesome/FontAwesome.otf +0 -0
  137. data/vendor/assets/fonts/bastion/font-awesome/fontawesome-webfont.eot +0 -0
  138. data/vendor/assets/fonts/bastion/font-awesome/fontawesome-webfont.svg +399 -0
  139. data/vendor/assets/fonts/bastion/font-awesome/fontawesome-webfont.ttf +0 -0
  140. data/vendor/assets/fonts/bastion/font-awesome/fontawesome-webfont.woff +0 -0
  141. data/vendor/assets/fonts/bastion/rcue/OpenSans-Bold-webfont.eot +0 -0
  142. data/vendor/assets/fonts/bastion/rcue/OpenSans-Bold-webfont.svg +146 -0
  143. data/vendor/assets/fonts/bastion/rcue/OpenSans-Bold-webfont.ttf +0 -0
  144. data/vendor/assets/fonts/bastion/rcue/OpenSans-Bold-webfont.woff +0 -0
  145. data/vendor/assets/fonts/bastion/rcue/OpenSans-BoldItalic-webfont.eot +0 -0
  146. data/vendor/assets/fonts/bastion/rcue/OpenSans-BoldItalic-webfont.svg +146 -0
  147. data/vendor/assets/fonts/bastion/rcue/OpenSans-BoldItalic-webfont.ttf +0 -0
  148. data/vendor/assets/fonts/bastion/rcue/OpenSans-BoldItalic-webfont.woff +0 -0
  149. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBold-webfont.eot +0 -0
  150. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBold-webfont.svg +146 -0
  151. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBold-webfont.ttf +0 -0
  152. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBold-webfont.woff +0 -0
  153. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBoldItalic-webfont.eot +0 -0
  154. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBoldItalic-webfont.svg +146 -0
  155. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBoldItalic-webfont.ttf +0 -0
  156. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBoldItalic-webfont.woff +0 -0
  157. data/vendor/assets/fonts/bastion/rcue/OpenSans-Italic-webfont.eot +0 -0
  158. data/vendor/assets/fonts/bastion/rcue/OpenSans-Italic-webfont.svg +146 -0
  159. data/vendor/assets/fonts/bastion/rcue/OpenSans-Italic-webfont.ttf +0 -0
  160. data/vendor/assets/fonts/bastion/rcue/OpenSans-Italic-webfont.woff +0 -0
  161. data/vendor/assets/fonts/bastion/rcue/OpenSans-Light-webfont.eot +0 -0
  162. data/vendor/assets/fonts/bastion/rcue/OpenSans-Light-webfont.svg +146 -0
  163. data/vendor/assets/fonts/bastion/rcue/OpenSans-Light-webfont.ttf +0 -0
  164. data/vendor/assets/fonts/bastion/rcue/OpenSans-Light-webfont.woff +0 -0
  165. data/vendor/assets/fonts/bastion/rcue/OpenSans-LightItalic-webfont.eot +0 -0
  166. data/vendor/assets/fonts/bastion/rcue/OpenSans-LightItalic-webfont.svg +146 -0
  167. data/vendor/assets/fonts/bastion/rcue/OpenSans-LightItalic-webfont.ttf +0 -0
  168. data/vendor/assets/fonts/bastion/rcue/OpenSans-LightItalic-webfont.woff +0 -0
  169. data/vendor/assets/fonts/bastion/rcue/OpenSans-Regular-webfont.eot +0 -0
  170. data/vendor/assets/fonts/bastion/rcue/OpenSans-Regular-webfont.svg +146 -0
  171. data/vendor/assets/fonts/bastion/rcue/OpenSans-Regular-webfont.ttf +0 -0
  172. data/vendor/assets/fonts/bastion/rcue/OpenSans-Regular-webfont.woff +0 -0
  173. data/vendor/assets/fonts/bastion/rcue/OpenSans-Semibold-webfont.eot +0 -0
  174. data/vendor/assets/fonts/bastion/rcue/OpenSans-Semibold-webfont.svg +146 -0
  175. data/vendor/assets/fonts/bastion/rcue/OpenSans-Semibold-webfont.ttf +0 -0
  176. data/vendor/assets/fonts/bastion/rcue/OpenSans-Semibold-webfont.woff +0 -0
  177. data/vendor/assets/fonts/bastion/rcue/OpenSans-SemiboldItalic-webfont.eot +0 -0
  178. data/vendor/assets/fonts/bastion/rcue/OpenSans-SemiboldItalic-webfont.svg +146 -0
  179. data/vendor/assets/fonts/bastion/rcue/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  180. data/vendor/assets/fonts/bastion/rcue/OpenSans-SemiboldItalic-webfont.woff +0 -0
  181. data/vendor/assets/fonts/bastion/rcue/Overpass-Bold-webfont.eot +0 -0
  182. data/vendor/assets/fonts/bastion/rcue/Overpass-Bold-webfont.svg +454 -0
  183. data/vendor/assets/fonts/bastion/rcue/Overpass-Bold-webfont.ttf +0 -0
  184. data/vendor/assets/fonts/bastion/rcue/Overpass-Bold-webfont.woff +0 -0
  185. data/vendor/assets/fonts/bastion/rcue/Overpass-Regular-webfont.eot +0 -0
  186. data/vendor/assets/fonts/bastion/rcue/Overpass-Regular-webfont.svg +454 -0
  187. data/vendor/assets/fonts/bastion/rcue/Overpass-Regular-webfont.ttf +0 -0
  188. data/vendor/assets/fonts/bastion/rcue/Overpass-Regular-webfont.woff +0 -0
  189. data/vendor/assets/javascripts/bastion/alchemy/alchemy.js +20 -0
  190. data/vendor/assets/javascripts/bastion/angular-animate/angular-animate.js +1226 -0
  191. data/vendor/assets/javascripts/bastion/angular-blocks/angular-blocks.js +79 -0
  192. data/vendor/assets/javascripts/bastion/angular-bootstrap/ui-bootstrap-tpls.js +3677 -0
  193. data/vendor/assets/javascripts/bastion/angular-bootstrap/ui-bootstrap.js +3427 -0
  194. data/vendor/assets/javascripts/bastion/angular-gettext/angular-gettext.js +345 -0
  195. data/vendor/assets/javascripts/bastion/angular-resource/angular-resource.js +594 -0
  196. data/vendor/assets/javascripts/bastion/angular-route/angular-route.js +920 -0
  197. data/vendor/assets/javascripts/bastion/angular-sanitize/angular-sanitize.js +622 -0
  198. data/vendor/assets/javascripts/bastion/angular-ui-bootstrap/datepicker.js +447 -0
  199. data/vendor/assets/javascripts/bastion/angular-ui-bootstrap/timepicker.js +232 -0
  200. data/vendor/assets/javascripts/bastion/angular-ui-router/angular-ui-router.js +3223 -0
  201. data/vendor/assets/javascripts/bastion/angular-uuid4/angular-uuid4.js +21 -0
  202. data/vendor/assets/javascripts/bastion/angular/angular.js +20560 -0
  203. data/vendor/assets/javascripts/bastion/es5-shim/es5-shim.js +1216 -0
  204. data/vendor/assets/javascripts/bastion/json3/json3.js +861 -0
  205. data/vendor/assets/javascripts/bastion/ngUpload/ng-upload.js +205 -0
  206. data/vendor/assets/javascripts/bastion/underscore/underscore.js +1276 -0
  207. data/vendor/assets/stylesheets/bastion/alchemy/_colors.scss +99 -0
  208. data/vendor/assets/stylesheets/bastion/alchemy/_media_object.scss +22 -0
  209. data/vendor/assets/stylesheets/bastion/alchemy/_mixins.scss +24 -0
  210. data/vendor/assets/stylesheets/bastion/alchemy/_normalize.scss +396 -0
  211. data/vendor/assets/stylesheets/bastion/alchemy/_vars.scss +31 -0
  212. data/vendor/assets/stylesheets/bastion/alchemy/alchemy.scss +8 -0
  213. data/vendor/assets/stylesheets/bastion/bootstrap/alerts.less +67 -0
  214. data/vendor/assets/stylesheets/bastion/bootstrap/badges.less +51 -0
  215. data/vendor/assets/stylesheets/bastion/bootstrap/bootstrap.less +49 -0
  216. data/vendor/assets/stylesheets/bastion/bootstrap/breadcrumbs.less +23 -0
  217. data/vendor/assets/stylesheets/bastion/bootstrap/button-groups.less +227 -0
  218. data/vendor/assets/stylesheets/bastion/bootstrap/buttons.less +155 -0
  219. data/vendor/assets/stylesheets/bastion/bootstrap/carousel.less +232 -0
  220. data/vendor/assets/stylesheets/bastion/bootstrap/close.less +33 -0
  221. data/vendor/assets/stylesheets/bastion/bootstrap/code.less +53 -0
  222. data/vendor/assets/stylesheets/bastion/bootstrap/component-animations.less +29 -0
  223. data/vendor/assets/stylesheets/bastion/bootstrap/dropdowns.less +187 -0
  224. data/vendor/assets/stylesheets/bastion/bootstrap/forms.less +375 -0
  225. data/vendor/assets/stylesheets/bastion/bootstrap/glyphicons.less +237 -0
  226. data/vendor/assets/stylesheets/bastion/bootstrap/grid.less +79 -0
  227. data/vendor/assets/stylesheets/bastion/bootstrap/input-groups.less +136 -0
  228. data/vendor/assets/stylesheets/bastion/bootstrap/jumbotron.less +46 -0
  229. data/vendor/assets/stylesheets/bastion/bootstrap/labels.less +64 -0
  230. data/vendor/assets/stylesheets/bastion/bootstrap/list-group.less +88 -0
  231. data/vendor/assets/stylesheets/bastion/bootstrap/media.less +56 -0
  232. data/vendor/assets/stylesheets/bastion/bootstrap/mixins.less +845 -0
  233. data/vendor/assets/stylesheets/bastion/bootstrap/modals.less +129 -0
  234. data/vendor/assets/stylesheets/bastion/bootstrap/navbar.less +612 -0
  235. data/vendor/assets/stylesheets/bastion/bootstrap/navs.less +242 -0
  236. data/vendor/assets/stylesheets/bastion/bootstrap/normalize.less +406 -0
  237. data/vendor/assets/stylesheets/bastion/bootstrap/pager.less +55 -0
  238. data/vendor/assets/stylesheets/bastion/bootstrap/pagination.less +85 -0
  239. data/vendor/assets/stylesheets/bastion/bootstrap/panels.less +182 -0
  240. data/vendor/assets/stylesheets/bastion/bootstrap/popovers.less +133 -0
  241. data/vendor/assets/stylesheets/bastion/bootstrap/print.less +105 -0
  242. data/vendor/assets/stylesheets/bastion/bootstrap/progress-bars.less +80 -0
  243. data/vendor/assets/stylesheets/bastion/bootstrap/responsive-utilities.less +209 -0
  244. data/vendor/assets/stylesheets/bastion/bootstrap/scaffolding.less +119 -0
  245. data/vendor/assets/stylesheets/bastion/bootstrap/tables.less +231 -0
  246. data/vendor/assets/stylesheets/bastion/bootstrap/theme.less +247 -0
  247. data/vendor/assets/stylesheets/bastion/bootstrap/thumbnails.less +36 -0
  248. data/vendor/assets/stylesheets/bastion/bootstrap/tooltip.less +95 -0
  249. data/vendor/assets/stylesheets/bastion/bootstrap/type.less +281 -0
  250. data/vendor/assets/stylesheets/bastion/bootstrap/utilities.less +56 -0
  251. data/vendor/assets/stylesheets/bastion/bootstrap/variables.less +642 -0
  252. data/vendor/assets/stylesheets/bastion/bootstrap/wells.less +29 -0
  253. data/vendor/assets/stylesheets/bastion/font-awesome/less/bootstrap.less +84 -0
  254. data/vendor/assets/stylesheets/bastion/font-awesome/less/core.less +129 -0
  255. data/vendor/assets/stylesheets/bastion/font-awesome/less/extras.less +93 -0
  256. data/vendor/assets/stylesheets/bastion/font-awesome/less/font-awesome-ie7.less +1953 -0
  257. data/vendor/assets/stylesheets/bastion/font-awesome/less/font-awesome.less +33 -0
  258. data/vendor/assets/stylesheets/bastion/font-awesome/less/icons.less +381 -0
  259. data/vendor/assets/stylesheets/bastion/font-awesome/less/mixins.less +48 -0
  260. data/vendor/assets/stylesheets/bastion/font-awesome/less/path.less +14 -0
  261. data/vendor/assets/stylesheets/bastion/font-awesome/less/variables.less +735 -0
  262. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_bootstrap.scss +84 -0
  263. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_core.scss +129 -0
  264. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_extras.scss +93 -0
  265. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_icons.scss +381 -0
  266. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_mixins.scss +48 -0
  267. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_path.scss +14 -0
  268. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_variables.scss +734 -0
  269. data/vendor/assets/stylesheets/bastion/font-awesome/scss/font-awesome-ie7.scss +1953 -0
  270. data/vendor/assets/stylesheets/bastion/font-awesome/scss/font-awesome.scss +33 -0
  271. data/vendor/assets/stylesheets/bastion/rcue/buttons.less +44 -0
  272. data/vendor/assets/stylesheets/bastion/rcue/fonts.less +52 -0
  273. data/vendor/assets/stylesheets/bastion/rcue/forms.less +19 -0
  274. data/vendor/assets/stylesheets/bastion/rcue/mixins.less +50 -0
  275. data/vendor/assets/stylesheets/bastion/rcue/navbar.less +481 -0
  276. data/vendor/assets/stylesheets/bastion/rcue/rcue.less +15 -0
  277. data/vendor/assets/stylesheets/bastion/rcue/variables.less +47 -0
  278. metadata +376 -0
@@ -0,0 +1,87 @@
1
+ /**
2
+ Copyright 2014 Red Hat, Inc.
3
+
4
+ This software is licensed to you under the GNU General Public
5
+ License as published by the Free Software Foundation; either version
6
+ 2 of the License (GPLv2) or (at your option) any later version.
7
+ There is NO WARRANTY for this software, express or implied,
8
+ including the implied warranties of MERCHANTABILITY,
9
+ NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ have received a copy of GPLv2 along with this software; if not, see
11
+ http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+ **/
13
+
14
+ /**
15
+ * @ngdoc module
16
+ * @name Bastion.auth
17
+ *
18
+ * @description
19
+ * Module for auth functionality.
20
+ */
21
+ angular.module('Bastion.auth', ['Bastion']);
22
+
23
+ /**
24
+ * @ngdoc object
25
+ * @name Bastion.auth.config
26
+ *
27
+ * @requires $httpProvider
28
+ * @requires $provide
29
+ *
30
+ * @description
31
+ * Set up the UnauthorizedInterceptor
32
+ */
33
+ angular.module('Bastion.auth').config(['$httpProvider', '$provide',
34
+ function ($httpProvider, $provide) {
35
+ $provide.factory('UnauthorizedInterceptor', ['$injector',
36
+ function ($injector) {
37
+ return {
38
+ responseError: function (response) {
39
+ var message,
40
+ $q = $injector.get('$q'),
41
+ $window = $injector.get('$window'),
42
+ translate = $injector.get('translate');
43
+
44
+ if (response.status === 401) {
45
+ $window.location.href = '/users/login';
46
+ } else if (response.status === 403) {
47
+ // Add unauthorized display message to response
48
+ message = translate('You are not authorized to perform this action.');
49
+ response.data.errors = [message];
50
+ response.data.displayMessage = message;
51
+ return $q.reject(response);
52
+ } else {
53
+ return $q.reject(response);
54
+ }
55
+ }
56
+ };
57
+ }]
58
+ );
59
+
60
+ $httpProvider.interceptors.push('UnauthorizedInterceptor');
61
+ }
62
+ ]);
63
+
64
+ /**
65
+ * @ngdoc run
66
+ * @name Bastion.auth.run
67
+ *
68
+ * @requires $rootScope
69
+ * @requires $window
70
+ * @requires Authorization
71
+ *
72
+ * @description
73
+ * Check current user permissions and redirect to the 403 page if appropriate
74
+ */
75
+ angular.module('Bastion.auth').run(['$rootScope', '$window', 'Authorization',
76
+ function ($rootScope, $window, Authorization) {
77
+ $rootScope.$on('$stateChangeStart', function (event, toState) {
78
+ var permission = toState.permission;
79
+ if (permission !== false && (permission === undefined || Authorization.denied(permission))) {
80
+ $window.location.href = '/katello/403';
81
+ }
82
+ });
83
+
84
+ $rootScope.permitted = Authorization.permitted;
85
+ $rootScope.denied = Authorization.denied;
86
+ }
87
+ ]);
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Copyright 2014 Red Hat, Inc.
3
+ *
4
+ * This software is licensed to you under the GNU General Public
5
+ * License as published by the Free Software Foundation; either version
6
+ * 2 of the License (GPLv2) or (at your option) any later version.
7
+ * There is NO WARRANTY for this software, express or implied,
8
+ * including the implied warranties of MERCHANTABILITY,
9
+ * NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ * have received a copy of GPLv2 along with this software; if not, see
11
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+ **/
13
+
14
+ /**
15
+ * @ngdoc service
16
+ * @name Bastion.auth:Authorization
17
+ *
18
+ * @requires CurrentUser
19
+ * @requires Permissions
20
+ *
21
+ * @description
22
+ * A service for authorization related functionality.
23
+ */
24
+ angular.module('Bastion.auth').service('Authorization', ['CurrentUser', 'Permissions', function (CurrentUser, Permissions) {
25
+
26
+ this.permitted = function (permissionName, model) {
27
+ var allowedTo = false;
28
+
29
+ if (CurrentUser.admin) {
30
+ allowedTo = true;
31
+ } else {
32
+ if (model && model.hasOwnProperty('permissions') && model.permissions.hasOwnProperty(permissionName)) {
33
+ allowedTo = model.permissions[permissionName];
34
+ } else {
35
+ angular.forEach(Permissions, function (permission) {
36
+ if (permission.permission.name === permissionName) {
37
+ allowedTo = true;
38
+ }
39
+ });
40
+ }
41
+ }
42
+ return allowedTo;
43
+ };
44
+
45
+ this.denied = function (permissionName, model) {
46
+ return !this.permitted(permissionName, model);
47
+ };
48
+ }]);
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Copyright 2014 Red Hat, Inc.
3
+ *
4
+ * This software is licensed to you under the GNU General Public
5
+ * License as published by the Free Software Foundation; either version
6
+ * 2 of the License (GPLv2) or (at your option) any later version.
7
+ * There is NO WARRANTY for this software, express or implied,
8
+ * including the implied warranties of MERCHANTABILITY,
9
+ * NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ * have received a copy of GPLv2 along with this software; if not, see
11
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+ */
13
+
14
+ angular.element(document).ready(function () {
15
+ angular.bootstrap(document, BASTION_MODULES);
16
+ });
17
+
18
+ BASTION_MODULES = [
19
+ 'alchemy',
20
+ 'alchemy.format',
21
+ 'alch-templates',
22
+ 'angular-blocks',
23
+ 'ngAnimate',
24
+ 'ngSanitize',
25
+ 'templates',
26
+ 'ui.bootstrap',
27
+ 'ui.bootstrap.tpls',
28
+ 'Bastion.auth',
29
+ 'Bastion.menu',
30
+ 'Bastion.i18n',
31
+ 'Bastion.widgets'
32
+ ];
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Copyright 2014 Red Hat, Inc.
3
+ *
4
+ * This software is licensed to you under the GNU General Public
5
+ * License as published by the Free Software Foundation; either version
6
+ * 2 of the License (GPLv2) or (at your option) any later version.
7
+ * There is NO WARRANTY for this software, express or implied,
8
+ * including the implied warranties of MERCHANTABILITY,
9
+ * NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ * have received a copy of GPLv2 along with this software; if not, see
11
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+ */
13
+
14
+ /**
15
+ * @ngdoc factory
16
+ * @name Bastion.factory:BastionResource
17
+ *
18
+ * @requires BastionResource
19
+ *
20
+ * @description
21
+ * Base module that defines the Katello module namespace and includes any thirdparty
22
+ * modules used by the application.
23
+ */
24
+ angular.module('Bastion').factory('BastionResource', ['$resource', function ($resource) {
25
+
26
+ return function (url, paramDefaults, actions) {
27
+ var defaultActions;
28
+
29
+ defaultActions = {
30
+ queryPaged: {method: 'GET', isArray: false},
31
+ queryUnpaged: {method: 'GET', isArray: false, params: {'full_result': true}}
32
+ };
33
+
34
+ actions = angular.extend({}, defaultActions, actions);
35
+
36
+ return $resource(url, paramDefaults, actions);
37
+ };
38
+
39
+ }]);
@@ -0,0 +1,52 @@
1
+ /* Copyright 2014 Red Hat, Inc.
2
+ *
3
+ * This software is licensed to you under the GNU General Public
4
+ * License as published by the Free Software Foundation; either version
5
+ * 2 of the License (GPLv2) or (at your option) any later version.
6
+ * There is NO WARRANTY for this software, express or implied,
7
+ * including the implied warranties of MERCHANTABILITY,
8
+ * NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
9
+ * have received a copy of GPLv2 along with this software; if not, see
10
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
11
+ */
12
+
13
+ //= require "bastion/underscore/underscore"
14
+
15
+ //= require "bastion/angular/angular"
16
+ //= require "bastion/angular-resource/angular-resource"
17
+ //= require "bastion/angular-sanitize/angular-sanitize"
18
+ //= require "bastion/angular-ui-router/angular-ui-router"
19
+ //= require "bastion/angular-uuid4/angular-uuid4.js"
20
+ //= require "bastion/ngUpload/ng-upload"
21
+ //= require "bastion/angular-gettext/angular-gettext"
22
+ //= require "bastion/angular-blocks/angular-blocks"
23
+ //= require_tree "../../../../vendor/assets/javascripts/bastion/angular-bootstrap"
24
+ //= require "bastion/angular-animate/angular-animate"
25
+ //= require "bastion/alchemy/alchemy"
26
+
27
+ //= require "bastion/bastion.module"
28
+ //= require "bastion/bastion-resource.factory"
29
+
30
+ //= require_tree "./incubator"
31
+
32
+ //= require "bastion/incubator/format/alch-format.module.js"
33
+ //= require "bastion/incubator/format/array-to-string.filter.js"
34
+ //= require "bastion/incubator/format/key-value-to-string.filter.js"
35
+
36
+ //= require "bastion/i18n/i18n.module"
37
+ //= require "bastion/i18n/translate.service.js"
38
+ //= require "bastion/i18n/translations"
39
+
40
+ //= require "bastion/auth/auth.module"
41
+ //= require_tree "./auth"
42
+
43
+ //= require "bastion/menu/menu.module"
44
+ //= require_tree "./menu"
45
+
46
+ //= require "bastion/widgets/widgets.module"
47
+ //= require_tree "./widgets"
48
+
49
+ //= require "bastion/utils/utils.module"
50
+ //= require_tree "./utils"
51
+
52
+ //= require "bastion/bastion-bootstrap"
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Copyright 2014 Red Hat, Inc.
3
+ *
4
+ * This software is licensed to you under the GNU General Public
5
+ * License as published by the Free Software Foundation; either version
6
+ * 2 of the License (GPLv2) or (at your option) any later version.
7
+ * There is NO WARRANTY for this software, express or implied,
8
+ * including the implied warranties of MERCHANTABILITY,
9
+ * NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ * have received a copy of GPLv2 along with this software; if not, see
11
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+ */
13
+
14
+ /**
15
+ * @ngdoc module
16
+ * @name Bastion
17
+ *
18
+ * @description
19
+ * Base module that defines the Katello module namespace and includes any thirdparty
20
+ * modules used by the application.
21
+ */
22
+ angular.module('Bastion', [
23
+ 'ui.router',
24
+ 'ngResource',
25
+ 'Bastion.i18n',
26
+ 'Bastion.widgets'
27
+ ]);
28
+
29
+ /**
30
+ * @ngdoc constant
31
+ * @name Bastion.constant:RootURL
32
+ *
33
+ * @description
34
+ * Provides a configurable URL root for all requests.
35
+ */
36
+ angular.module('Bastion').constant('RootURL', '/katello');
37
+
38
+ /**
39
+ * @ngdoc config
40
+ * @name Bastion.config
41
+ *
42
+ * @requires $httpProvider
43
+ * @requires $urlRouterProvider
44
+ * @requires $locationProvider
45
+ * @requires $provide
46
+ * @requires BastionConfig
47
+ * @requires RootURL
48
+ *
49
+ * @description
50
+ * Used for establishing application wide configuration such as adding the Rails CSRF token
51
+ * to every request and adding Xs to translated strings.
52
+ */
53
+ angular.module('Bastion').config(
54
+ ['$httpProvider', '$urlRouterProvider', '$locationProvider', '$provide', 'BastionConfig', 'RootURL',
55
+ function ($httpProvider, $urlRouterProvider, $locationProvider, $provide, BastionConfig, RootURL) {
56
+ var oldBrowserBastionPath = '/bastion#';
57
+
58
+ $httpProvider.defaults.headers.common = {
59
+ Accept: 'application/json, text/plain, version=2; */*',
60
+ 'X-CSRF-TOKEN': $('meta[name=csrf-token]').attr('content')
61
+ };
62
+
63
+ $urlRouterProvider.rule(function ($injector, $location) {
64
+ var $sniffer = $injector.get('$sniffer'),
65
+ $window = $injector.get('$window'),
66
+ path = $location.path();
67
+
68
+ if (!$sniffer.history) {
69
+ $window.location.href = oldBrowserBastionPath + $location.path();
70
+ }
71
+
72
+ if (path.slice(0, '/katello'.length) === '/katello') {
73
+ $window.location.href = $location.url();
74
+ $window.location.reload();
75
+ }
76
+
77
+ // removing trailing slash to prevent endless redirect
78
+ if (path[path.length - 1] === '/') {
79
+ return path.slice(0, -1);
80
+ }
81
+ });
82
+
83
+ $urlRouterProvider.otherwise(function ($injector, $location) {
84
+ var $window = $injector.get('$window');
85
+ $window.location.href = $location.absUrl().replace(oldBrowserBastionPath, '');
86
+ });
87
+
88
+ $locationProvider.html5Mode(true);
89
+
90
+ $provide.factory('PrefixInterceptor', ['$q', '$templateCache', function ($q, $templateCache) {
91
+ return {
92
+ request: function (config) {
93
+ if (config.url.indexOf('.html') !== -1) {
94
+ if ($templateCache.get(config.url) === undefined) {
95
+ config.url = '/' + config.url;
96
+ }
97
+ } else if (!config.url.match(/^\/foreman_tasks/)) {
98
+ config.url = RootURL + config.url;
99
+ }
100
+
101
+ return config || $q.when(config);
102
+ }
103
+ };
104
+ }]);
105
+
106
+ // Add Xs around translated strings if the config value mark_translated is set.
107
+ if (BastionConfig.markTranslated) {
108
+ $provide.decorator('gettextCatalog', ["$delegate", function ($delegate) {
109
+ var getString = $delegate.getString;
110
+
111
+ $delegate.getString = function (string, n) {
112
+ return 'X' + getString.apply($delegate, [string, n]) + 'X';
113
+ };
114
+ return $delegate;
115
+ }]);
116
+ }
117
+
118
+ $httpProvider.interceptors.push('PrefixInterceptor');
119
+ }]
120
+ );
121
+
122
+
123
+ /**
124
+ * @ngdoc run
125
+ * @name Bastion.run
126
+ *
127
+ * @requires $rootScope
128
+ * @requires $state
129
+ * @requires $stateParams
130
+ * @requires gettextCatalog
131
+ * @requires currentLocale
132
+ * @requires $location
133
+ * @requires $window
134
+ * @requires PageTitle
135
+ * @requires markActiveMenu
136
+ * @requires RootURL
137
+ *
138
+ * @description
139
+ * Set up some common state related functionality and set the current language.
140
+ */
141
+ angular.module('Bastion').run(['$rootScope', '$state', '$stateParams', 'gettextCatalog', 'currentLocale', '$location', '$window', 'PageTitle', 'markActiveMenu', 'RootURL',
142
+ function ($rootScope, $state, $stateParams, gettextCatalog, currentLocale, $location, $window, PageTitle, markActiveMenu, RootURL) {
143
+ var fromState, fromParams, orgSwitcherRegex;
144
+
145
+ $rootScope.$state = $state;
146
+ $rootScope.$stateParams = $stateParams;
147
+ $rootScope.transitionTo = $state.transitionTo;
148
+ $rootScope.RootURL = RootURL;
149
+
150
+ $rootScope.isState = function (stateName) {
151
+ return $state.is(stateName);
152
+ };
153
+
154
+ $rootScope.stateIncludes = function (state, params) {
155
+ if (params !== undefined) {
156
+ angular.forEach(params, function (value, key) {
157
+ params[key] = value.toString();
158
+ });
159
+ }
160
+
161
+ return $state.includes(state, params);
162
+ };
163
+
164
+ $rootScope.transitionBack = function () {
165
+ if (fromState) {
166
+ $state.transitionTo(fromState, fromParams);
167
+ }
168
+ };
169
+
170
+ $rootScope.taskUrl = function (taskId) {
171
+ return "/foreman_tasks/tasks/" + taskId;
172
+ };
173
+
174
+ // Set the current language
175
+ gettextCatalog.currentLanguage = currentLocale;
176
+
177
+ $rootScope.$on('$stateChangeStart',
178
+ function () {
179
+ //save location.search so we can add it back after transition is done
180
+ this.locationSearch = $location.search();
181
+ });
182
+
183
+ $rootScope.$on('$stateChangeSuccess',
184
+ function (event, toState, toParams, fromStateIn, fromParamsIn) {
185
+ //restore all query string parameters back to $location.search
186
+ $location.search(this.locationSearch);
187
+
188
+ //Record our from state, so we can transition back there
189
+ if (!fromStateIn.abstract) {
190
+ fromState = fromStateIn;
191
+ fromParams = fromParamsIn;
192
+ }
193
+
194
+ //Pop the last page title if it's not the outermost title (i.e. parent state)
195
+ if (PageTitle.titles.length > 1) {
196
+ PageTitle.resetToFirst();
197
+ }
198
+
199
+ //Set the active menu item in Foreman
200
+ markActiveMenu();
201
+ }
202
+ );
203
+
204
+ // Prevent angular from handling org/location switcher URLs
205
+ orgSwitcherRegex = new RegExp("/(organizations|locations)/(.+/)*(select|clear)");
206
+ $rootScope.$on('$locationChangeStart', function (event, newUrl) {
207
+ if (newUrl.match(orgSwitcherRegex)) {
208
+ event.preventDefault();
209
+ $window.location.href = newUrl;
210
+ }
211
+ });
212
+ }
213
+ ]);