pact_broker 2.72.0 → 2.76.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (173) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +1 -1
  3. data/.optic/.gitignore +2 -0
  4. data/.optic/api/specification.json +1 -0
  5. data/.optic/ignore +14 -0
  6. data/CHANGELOG.md +66 -0
  7. data/DEVELOPER_SETUP.md +9 -0
  8. data/Dockerfile +1 -0
  9. data/ISSUES.md +3 -3
  10. data/README.md +1 -1
  11. data/config/database.yml +1 -1
  12. data/db/migrations/20210115_add_webhook_foreign_key_indexes.rb +49 -0
  13. data/db/migrations/20210116_add_context_to_triggered_webhook.rb +11 -0
  14. data/db/migrations/migration_helper.rb +8 -0
  15. data/docker-compose-issue-repro-with-pact-broker-docker-image.yml +33 -0
  16. data/docker-compose-test.yml +4 -4
  17. data/lib/db.rb +1 -0
  18. data/lib/pact_broker/api.rb +13 -2
  19. data/lib/pact_broker/api/decorators.rb +3 -7
  20. data/lib/pact_broker/api/decorators/configuration.rb +33 -0
  21. data/lib/pact_broker/api/decorators/decorator_context_creator.rb +13 -0
  22. data/lib/pact_broker/api/decorators/extended_pact_decorator.rb +9 -1
  23. data/lib/pact_broker/api/decorators/extended_verification_decorator.rb +8 -0
  24. data/lib/pact_broker/api/decorators/matrix_decorator.rb +9 -4
  25. data/lib/pact_broker/api/decorators/pact_collection_decorator.rb +1 -0
  26. data/lib/pact_broker/api/decorators/pacticipant_collection_decorator.rb +2 -3
  27. data/lib/pact_broker/api/decorators/reason_decorator.rb +2 -0
  28. data/lib/pact_broker/api/decorators/tag_decorator.rb +0 -3
  29. data/lib/pact_broker/api/decorators/verifiable_pact_decorator.rb +3 -1
  30. data/lib/pact_broker/api/pact_broker_urls.rb +4 -4
  31. data/lib/pact_broker/api/paths.rb +5 -0
  32. data/lib/pact_broker/api/renderers/html_pact_renderer.rb +2 -2
  33. data/lib/pact_broker/api/resources/all_webhooks.rb +3 -3
  34. data/lib/pact_broker/api/resources/can_i_deploy_badge.rb +1 -1
  35. data/lib/pact_broker/api/resources/dashboard.rb +2 -2
  36. data/lib/pact_broker/api/resources/default_base_resource.rb +37 -12
  37. data/lib/pact_broker/api/resources/error_handler.rb +1 -1
  38. data/lib/pact_broker/api/resources/error_response_body_generator.rb +41 -0
  39. data/lib/pact_broker/api/resources/group.rb +1 -1
  40. data/lib/pact_broker/api/resources/integrations.rb +1 -1
  41. data/lib/pact_broker/api/resources/label.rb +1 -1
  42. data/lib/pact_broker/api/resources/latest_pact.rb +2 -2
  43. data/lib/pact_broker/api/resources/latest_pacts.rb +1 -1
  44. data/lib/pact_broker/api/resources/latest_verifications_for_consumer_version.rb +2 -2
  45. data/lib/pact_broker/api/resources/matrix.rb +2 -2
  46. data/lib/pact_broker/api/resources/matrix_for_consumer_and_provider.rb +1 -1
  47. data/lib/pact_broker/api/resources/metadata_resource_methods.rb +2 -1
  48. data/lib/pact_broker/api/resources/pact.rb +2 -2
  49. data/lib/pact_broker/api/resources/pact_triggered_webhooks.rb +1 -1
  50. data/lib/pact_broker/api/resources/pact_versions.rb +1 -1
  51. data/lib/pact_broker/api/resources/pact_webhooks.rb +3 -3
  52. data/lib/pact_broker/api/resources/pact_webhooks_status.rb +2 -2
  53. data/lib/pact_broker/api/resources/pacticipant.rb +1 -1
  54. data/lib/pact_broker/api/resources/pacticipants.rb +3 -3
  55. data/lib/pact_broker/api/resources/pacticipants_for_label.rb +1 -1
  56. data/lib/pact_broker/api/resources/previous_distinct_pact_version.rb +1 -1
  57. data/lib/pact_broker/api/resources/provider_pacts.rb +1 -7
  58. data/lib/pact_broker/api/resources/provider_pacts_for_verification.rb +2 -2
  59. data/lib/pact_broker/api/resources/relationships.rb +1 -1
  60. data/lib/pact_broker/api/resources/tag.rb +1 -1
  61. data/lib/pact_broker/api/resources/tagged_pact_versions.rb +1 -1
  62. data/lib/pact_broker/api/resources/verification.rb +2 -2
  63. data/lib/pact_broker/api/resources/verification_triggered_webhooks.rb +1 -1
  64. data/lib/pact_broker/api/resources/verifications.rb +1 -1
  65. data/lib/pact_broker/api/resources/version.rb +1 -1
  66. data/lib/pact_broker/api/resources/versions.rb +1 -1
  67. data/lib/pact_broker/api/resources/webhook.rb +2 -2
  68. data/lib/pact_broker/api/resources/webhook_execution.rb +4 -4
  69. data/lib/pact_broker/api/resources/webhook_execution_methods.rb +1 -3
  70. data/lib/pact_broker/api/resources/webhooks.rb +3 -3
  71. data/lib/pact_broker/app.rb +14 -3
  72. data/lib/pact_broker/application_context.rb +41 -0
  73. data/lib/pact_broker/configuration.rb +12 -4
  74. data/lib/pact_broker/doc/controllers/app.rb +3 -2
  75. data/lib/pact_broker/domain/version.rb +13 -6
  76. data/lib/pact_broker/domain/webhook_request.rb +1 -1
  77. data/lib/pact_broker/error.rb +0 -2
  78. data/lib/pact_broker/errors.rb +28 -0
  79. data/lib/pact_broker/errors/error_logger.rb +25 -0
  80. data/lib/pact_broker/metrics/service.rb +12 -1
  81. data/lib/pact_broker/pacts/metadata.rb +53 -8
  82. data/lib/pact_broker/pacts/repository.rb +10 -17
  83. data/lib/pact_broker/pacts/selector.rb +22 -0
  84. data/lib/pact_broker/pacts/selectors.rb +4 -0
  85. data/lib/pact_broker/services.rb +106 -31
  86. data/lib/pact_broker/tags/tag_with_latest_flag.rb +2 -0
  87. data/lib/pact_broker/test/http_test_data_builder.rb +83 -21
  88. data/lib/pact_broker/test/test_data_builder.rb +3 -2
  89. data/lib/pact_broker/ui/views/index/_getting-started.haml +1 -1
  90. data/lib/pact_broker/ui/views/index/show-with-tags.haml +16 -16
  91. data/lib/pact_broker/ui/views/index/show.haml +6 -6
  92. data/lib/pact_broker/ui/views/layouts/main.haml +2 -2
  93. data/lib/pact_broker/ui/views/matrix/show.haml +32 -33
  94. data/lib/pact_broker/version.rb +1 -1
  95. data/lib/pact_broker/webhooks/execution_configuration.rb +4 -0
  96. data/lib/pact_broker/webhooks/execution_configuration_creator.rb +14 -0
  97. data/lib/pact_broker/webhooks/repository.rb +3 -2
  98. data/lib/pact_broker/webhooks/service.rb +2 -1
  99. data/lib/pact_broker/webhooks/triggered_webhook.rb +1 -0
  100. data/lib/rack/pact_broker/hal_browser_redirect.rb +42 -0
  101. data/lib/rack/pact_broker/set_base_url.rb +22 -0
  102. data/lib/sequel/extensions/statement_timeout.rb +22 -0
  103. data/optic.yml +5 -0
  104. data/pact_broker.gemspec +1 -1
  105. data/public/css/bootstrap-grid.css +3719 -0
  106. data/public/css/bootstrap-grid.css.map +1 -0
  107. data/public/css/bootstrap-grid.min.css +7 -0
  108. data/public/css/bootstrap-grid.min.css.map +1 -0
  109. data/public/css/bootstrap-reboot.css +331 -0
  110. data/public/css/bootstrap-reboot.css.map +1 -0
  111. data/public/css/bootstrap-reboot.min.css +8 -0
  112. data/public/css/bootstrap-reboot.min.css.map +1 -0
  113. data/public/css/bootstrap.css +8885 -5604
  114. data/public/css/bootstrap.css.map +1 -1
  115. data/public/css/bootstrap.min.css +4 -3
  116. data/public/css/bootstrap.min.css.map +1 -1
  117. data/public/images/alert.svg +1 -0
  118. data/public/images/arrow-switch.svg +1 -0
  119. data/public/images/check.svg +1 -0
  120. data/public/images/clock.svg +1 -0
  121. data/public/images/copy.svg +1 -0
  122. data/public/images/kebab-horizontal.svg +1 -0
  123. data/public/javascripts/clipboard.js +3 -3
  124. data/public/javascripts/{jquery-3.3.1.js → jquery-3.5.1.js} +1150 -642
  125. data/public/javascripts/jquery-3.5.1.min.js +2 -0
  126. data/public/javascripts/jquery-3.5.1.min.map +1 -0
  127. data/public/javascripts/matrix.js +2 -2
  128. data/public/js/bootstrap.bundle.js +7013 -0
  129. data/public/js/bootstrap.bundle.js.map +1 -0
  130. data/public/js/bootstrap.bundle.min.js +7 -0
  131. data/public/js/bootstrap.bundle.min.js.map +1 -0
  132. data/public/js/bootstrap.js +3862 -1804
  133. data/public/js/bootstrap.js.map +1 -0
  134. data/public/js/bootstrap.min.js +6 -6
  135. data/public/js/bootstrap.min.js.map +1 -0
  136. data/public/stylesheets/index.css +56 -3
  137. data/public/stylesheets/matrix.css +55 -5
  138. data/public/stylesheets/pact.css +14 -0
  139. data/regression/.gitignore +1 -0
  140. data/regression/can_i_deploy_spec.rb +42 -0
  141. data/regression/regression_helper.rb +37 -0
  142. data/regression/script/approval-all.sh +6 -0
  143. data/script/exercise-api-for-optic.sh +3 -0
  144. data/script/reproduce-issue-starting-up.rb +43 -0
  145. data/script/reproduce-issue.rb +9 -21
  146. data/spec/lib/pact_broker/api/decorators/extended_pact_decorator_spec.rb +1 -0
  147. data/spec/lib/pact_broker/api/decorators/matrix_decorator_spec.rb +20 -8
  148. data/spec/lib/pact_broker/api/decorators/verifiable_pact_decorator_spec.rb +5 -7
  149. data/spec/lib/pact_broker/api/pact_broker_urls_spec.rb +10 -6
  150. data/spec/lib/pact_broker/api/resources/can_i_deploy_badge_spec.rb +1 -1
  151. data/spec/lib/pact_broker/api/resources/default_base_resource_spec.rb +59 -10
  152. data/spec/lib/pact_broker/api/resources/error_response_body_generator_spec.rb +69 -0
  153. data/spec/lib/pact_broker/db/log_quietener_spec.rb +1 -1
  154. data/spec/lib/pact_broker/doc/controllers/app_spec.rb +3 -5
  155. data/spec/lib/pact_broker/errors/error_logger_spec.rb +62 -0
  156. data/spec/lib/pact_broker/errors_spec.rb +55 -0
  157. data/spec/lib/pact_broker/pacts/metadata_spec.rb +73 -0
  158. data/spec/lib/pact_broker/pacts/repository_find_for_verification_fallback_spec.rb +2 -2
  159. data/spec/lib/pact_broker/pacts/repository_find_for_verification_spec.rb +33 -13
  160. data/spec/lib/pact_broker/pacts/selected_pact_spec.rb +23 -0
  161. data/spec/lib/pact_broker/webhooks/repository_spec.rb +5 -2
  162. data/spec/lib/pact_broker/webhooks/service_spec.rb +2 -1
  163. data/spec/lib/rack/pact_broker/hal_browser_redirect_spec.rb +27 -0
  164. data/tasks/rspec.rake +6 -0
  165. metadata +65 -17
  166. data/public/css/bootstrap-theme.css +0 -587
  167. data/public/css/bootstrap-theme.css.map +0 -1
  168. data/public/css/bootstrap-theme.min.css +0 -6
  169. data/public/css/bootstrap-theme.min.css.map +0 -1
  170. data/public/fonts/glyphicons-halflings-regular.svg +0 -288
  171. data/public/javascripts/jquery-3.3.1.min.js +0 -2
  172. data/public/javascripts/jquery-3.3.1.min.map +0 -1
  173. data/spec/lib/pact_broker/api/resources/error_handler_spec.rb +0 -195
@@ -1,587 +0,0 @@
1
- /*!
2
- * Bootstrap v3.3.7 (http://getbootstrap.com)
3
- * Copyright 2011-2016 Twitter, Inc.
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
- */
6
- .btn-default,
7
- .btn-primary,
8
- .btn-success,
9
- .btn-info,
10
- .btn-warning,
11
- .btn-danger {
12
- text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
13
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
14
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
15
- }
16
- .btn-default:active,
17
- .btn-primary:active,
18
- .btn-success:active,
19
- .btn-info:active,
20
- .btn-warning:active,
21
- .btn-danger:active,
22
- .btn-default.active,
23
- .btn-primary.active,
24
- .btn-success.active,
25
- .btn-info.active,
26
- .btn-warning.active,
27
- .btn-danger.active {
28
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
29
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
30
- }
31
- .btn-default.disabled,
32
- .btn-primary.disabled,
33
- .btn-success.disabled,
34
- .btn-info.disabled,
35
- .btn-warning.disabled,
36
- .btn-danger.disabled,
37
- .btn-default[disabled],
38
- .btn-primary[disabled],
39
- .btn-success[disabled],
40
- .btn-info[disabled],
41
- .btn-warning[disabled],
42
- .btn-danger[disabled],
43
- fieldset[disabled] .btn-default,
44
- fieldset[disabled] .btn-primary,
45
- fieldset[disabled] .btn-success,
46
- fieldset[disabled] .btn-info,
47
- fieldset[disabled] .btn-warning,
48
- fieldset[disabled] .btn-danger {
49
- -webkit-box-shadow: none;
50
- box-shadow: none;
51
- }
52
- .btn-default .badge,
53
- .btn-primary .badge,
54
- .btn-success .badge,
55
- .btn-info .badge,
56
- .btn-warning .badge,
57
- .btn-danger .badge {
58
- text-shadow: none;
59
- }
60
- .btn:active,
61
- .btn.active {
62
- background-image: none;
63
- }
64
- .btn-default {
65
- text-shadow: 0 1px 0 #fff;
66
- background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
67
- background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
68
- background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
69
- background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
70
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
71
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
72
- background-repeat: repeat-x;
73
- border-color: #dbdbdb;
74
- border-color: #ccc;
75
- }
76
- .btn-default:hover,
77
- .btn-default:focus {
78
- background-color: #e0e0e0;
79
- background-position: 0 -15px;
80
- }
81
- .btn-default:active,
82
- .btn-default.active {
83
- background-color: #e0e0e0;
84
- border-color: #dbdbdb;
85
- }
86
- .btn-default.disabled,
87
- .btn-default[disabled],
88
- fieldset[disabled] .btn-default,
89
- .btn-default.disabled:hover,
90
- .btn-default[disabled]:hover,
91
- fieldset[disabled] .btn-default:hover,
92
- .btn-default.disabled:focus,
93
- .btn-default[disabled]:focus,
94
- fieldset[disabled] .btn-default:focus,
95
- .btn-default.disabled.focus,
96
- .btn-default[disabled].focus,
97
- fieldset[disabled] .btn-default.focus,
98
- .btn-default.disabled:active,
99
- .btn-default[disabled]:active,
100
- fieldset[disabled] .btn-default:active,
101
- .btn-default.disabled.active,
102
- .btn-default[disabled].active,
103
- fieldset[disabled] .btn-default.active {
104
- background-color: #e0e0e0;
105
- background-image: none;
106
- }
107
- .btn-primary {
108
- background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
109
- background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
110
- background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
111
- background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
112
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
113
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
114
- background-repeat: repeat-x;
115
- border-color: #245580;
116
- }
117
- .btn-primary:hover,
118
- .btn-primary:focus {
119
- background-color: #265a88;
120
- background-position: 0 -15px;
121
- }
122
- .btn-primary:active,
123
- .btn-primary.active {
124
- background-color: #265a88;
125
- border-color: #245580;
126
- }
127
- .btn-primary.disabled,
128
- .btn-primary[disabled],
129
- fieldset[disabled] .btn-primary,
130
- .btn-primary.disabled:hover,
131
- .btn-primary[disabled]:hover,
132
- fieldset[disabled] .btn-primary:hover,
133
- .btn-primary.disabled:focus,
134
- .btn-primary[disabled]:focus,
135
- fieldset[disabled] .btn-primary:focus,
136
- .btn-primary.disabled.focus,
137
- .btn-primary[disabled].focus,
138
- fieldset[disabled] .btn-primary.focus,
139
- .btn-primary.disabled:active,
140
- .btn-primary[disabled]:active,
141
- fieldset[disabled] .btn-primary:active,
142
- .btn-primary.disabled.active,
143
- .btn-primary[disabled].active,
144
- fieldset[disabled] .btn-primary.active {
145
- background-color: #265a88;
146
- background-image: none;
147
- }
148
- .btn-success {
149
- background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
150
- background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
151
- background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
152
- background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
153
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
154
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
155
- background-repeat: repeat-x;
156
- border-color: #3e8f3e;
157
- }
158
- .btn-success:hover,
159
- .btn-success:focus {
160
- background-color: #419641;
161
- background-position: 0 -15px;
162
- }
163
- .btn-success:active,
164
- .btn-success.active {
165
- background-color: #419641;
166
- border-color: #3e8f3e;
167
- }
168
- .btn-success.disabled,
169
- .btn-success[disabled],
170
- fieldset[disabled] .btn-success,
171
- .btn-success.disabled:hover,
172
- .btn-success[disabled]:hover,
173
- fieldset[disabled] .btn-success:hover,
174
- .btn-success.disabled:focus,
175
- .btn-success[disabled]:focus,
176
- fieldset[disabled] .btn-success:focus,
177
- .btn-success.disabled.focus,
178
- .btn-success[disabled].focus,
179
- fieldset[disabled] .btn-success.focus,
180
- .btn-success.disabled:active,
181
- .btn-success[disabled]:active,
182
- fieldset[disabled] .btn-success:active,
183
- .btn-success.disabled.active,
184
- .btn-success[disabled].active,
185
- fieldset[disabled] .btn-success.active {
186
- background-color: #419641;
187
- background-image: none;
188
- }
189
- .btn-info {
190
- background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
191
- background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
192
- background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
193
- background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
194
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
195
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
196
- background-repeat: repeat-x;
197
- border-color: #28a4c9;
198
- }
199
- .btn-info:hover,
200
- .btn-info:focus {
201
- background-color: #2aabd2;
202
- background-position: 0 -15px;
203
- }
204
- .btn-info:active,
205
- .btn-info.active {
206
- background-color: #2aabd2;
207
- border-color: #28a4c9;
208
- }
209
- .btn-info.disabled,
210
- .btn-info[disabled],
211
- fieldset[disabled] .btn-info,
212
- .btn-info.disabled:hover,
213
- .btn-info[disabled]:hover,
214
- fieldset[disabled] .btn-info:hover,
215
- .btn-info.disabled:focus,
216
- .btn-info[disabled]:focus,
217
- fieldset[disabled] .btn-info:focus,
218
- .btn-info.disabled.focus,
219
- .btn-info[disabled].focus,
220
- fieldset[disabled] .btn-info.focus,
221
- .btn-info.disabled:active,
222
- .btn-info[disabled]:active,
223
- fieldset[disabled] .btn-info:active,
224
- .btn-info.disabled.active,
225
- .btn-info[disabled].active,
226
- fieldset[disabled] .btn-info.active {
227
- background-color: #2aabd2;
228
- background-image: none;
229
- }
230
- .btn-warning {
231
- background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
232
- background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
233
- background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
234
- background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
235
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
236
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
237
- background-repeat: repeat-x;
238
- border-color: #e38d13;
239
- }
240
- .btn-warning:hover,
241
- .btn-warning:focus {
242
- background-color: #eb9316;
243
- background-position: 0 -15px;
244
- }
245
- .btn-warning:active,
246
- .btn-warning.active {
247
- background-color: #eb9316;
248
- border-color: #e38d13;
249
- }
250
- .btn-warning.disabled,
251
- .btn-warning[disabled],
252
- fieldset[disabled] .btn-warning,
253
- .btn-warning.disabled:hover,
254
- .btn-warning[disabled]:hover,
255
- fieldset[disabled] .btn-warning:hover,
256
- .btn-warning.disabled:focus,
257
- .btn-warning[disabled]:focus,
258
- fieldset[disabled] .btn-warning:focus,
259
- .btn-warning.disabled.focus,
260
- .btn-warning[disabled].focus,
261
- fieldset[disabled] .btn-warning.focus,
262
- .btn-warning.disabled:active,
263
- .btn-warning[disabled]:active,
264
- fieldset[disabled] .btn-warning:active,
265
- .btn-warning.disabled.active,
266
- .btn-warning[disabled].active,
267
- fieldset[disabled] .btn-warning.active {
268
- background-color: #eb9316;
269
- background-image: none;
270
- }
271
- .btn-danger {
272
- background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
273
- background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
274
- background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
275
- background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
276
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
277
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
278
- background-repeat: repeat-x;
279
- border-color: #b92c28;
280
- }
281
- .btn-danger:hover,
282
- .btn-danger:focus {
283
- background-color: #c12e2a;
284
- background-position: 0 -15px;
285
- }
286
- .btn-danger:active,
287
- .btn-danger.active {
288
- background-color: #c12e2a;
289
- border-color: #b92c28;
290
- }
291
- .btn-danger.disabled,
292
- .btn-danger[disabled],
293
- fieldset[disabled] .btn-danger,
294
- .btn-danger.disabled:hover,
295
- .btn-danger[disabled]:hover,
296
- fieldset[disabled] .btn-danger:hover,
297
- .btn-danger.disabled:focus,
298
- .btn-danger[disabled]:focus,
299
- fieldset[disabled] .btn-danger:focus,
300
- .btn-danger.disabled.focus,
301
- .btn-danger[disabled].focus,
302
- fieldset[disabled] .btn-danger.focus,
303
- .btn-danger.disabled:active,
304
- .btn-danger[disabled]:active,
305
- fieldset[disabled] .btn-danger:active,
306
- .btn-danger.disabled.active,
307
- .btn-danger[disabled].active,
308
- fieldset[disabled] .btn-danger.active {
309
- background-color: #c12e2a;
310
- background-image: none;
311
- }
312
- .thumbnail,
313
- .img-thumbnail {
314
- -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
315
- box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
316
- }
317
- .dropdown-menu > li > a:hover,
318
- .dropdown-menu > li > a:focus {
319
- background-color: #e8e8e8;
320
- background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
321
- background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
322
- background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
323
- background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
324
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
325
- background-repeat: repeat-x;
326
- }
327
- .dropdown-menu > .active > a,
328
- .dropdown-menu > .active > a:hover,
329
- .dropdown-menu > .active > a:focus {
330
- background-color: #2e6da4;
331
- background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
332
- background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
333
- background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
334
- background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
335
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
336
- background-repeat: repeat-x;
337
- }
338
- .navbar-default {
339
- background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
340
- background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
341
- background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
342
- background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
343
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
344
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
345
- background-repeat: repeat-x;
346
- border-radius: 4px;
347
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
348
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
349
- }
350
- .navbar-default .navbar-nav > .open > a,
351
- .navbar-default .navbar-nav > .active > a {
352
- background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
353
- background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
354
- background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
355
- background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
356
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
357
- background-repeat: repeat-x;
358
- -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
359
- box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
360
- }
361
- .navbar-brand,
362
- .navbar-nav > li > a {
363
- text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
364
- }
365
- .navbar-inverse {
366
- background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
367
- background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
368
- background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
369
- background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
370
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
371
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
372
- background-repeat: repeat-x;
373
- border-radius: 4px;
374
- }
375
- .navbar-inverse .navbar-nav > .open > a,
376
- .navbar-inverse .navbar-nav > .active > a {
377
- background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
378
- background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
379
- background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
380
- background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
381
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
382
- background-repeat: repeat-x;
383
- -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
384
- box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
385
- }
386
- .navbar-inverse .navbar-brand,
387
- .navbar-inverse .navbar-nav > li > a {
388
- text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
389
- }
390
- .navbar-static-top,
391
- .navbar-fixed-top,
392
- .navbar-fixed-bottom {
393
- border-radius: 0;
394
- }
395
- @media (max-width: 767px) {
396
- .navbar .navbar-nav .open .dropdown-menu > .active > a,
397
- .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
398
- .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
399
- color: #fff;
400
- background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
401
- background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
402
- background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
403
- background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
404
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
405
- background-repeat: repeat-x;
406
- }
407
- }
408
- .alert {
409
- text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
410
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
411
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
412
- }
413
- .alert-success {
414
- background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
415
- background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
416
- background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
417
- background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
418
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
419
- background-repeat: repeat-x;
420
- border-color: #b2dba1;
421
- }
422
- .alert-info {
423
- background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
424
- background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
425
- background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
426
- background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
427
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
428
- background-repeat: repeat-x;
429
- border-color: #9acfea;
430
- }
431
- .alert-warning {
432
- background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
433
- background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
434
- background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
435
- background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
436
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
437
- background-repeat: repeat-x;
438
- border-color: #f5e79e;
439
- }
440
- .alert-danger {
441
- background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
442
- background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
443
- background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
444
- background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
445
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
446
- background-repeat: repeat-x;
447
- border-color: #dca7a7;
448
- }
449
- .progress {
450
- background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
451
- background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
452
- background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
453
- background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
454
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
455
- background-repeat: repeat-x;
456
- }
457
- .progress-bar {
458
- background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
459
- background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
460
- background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
461
- background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
462
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
463
- background-repeat: repeat-x;
464
- }
465
- .progress-bar-success {
466
- background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
467
- background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
468
- background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
469
- background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
470
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
471
- background-repeat: repeat-x;
472
- }
473
- .progress-bar-info {
474
- background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
475
- background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
476
- background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
477
- background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
478
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
479
- background-repeat: repeat-x;
480
- }
481
- .progress-bar-warning {
482
- background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
483
- background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
484
- background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
485
- background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
486
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
487
- background-repeat: repeat-x;
488
- }
489
- .progress-bar-danger {
490
- background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
491
- background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
492
- background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
493
- background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
494
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
495
- background-repeat: repeat-x;
496
- }
497
- .progress-bar-striped {
498
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
499
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
500
- background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
501
- }
502
- .list-group {
503
- border-radius: 4px;
504
- -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
505
- box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
506
- }
507
- .list-group-item.active,
508
- .list-group-item.active:hover,
509
- .list-group-item.active:focus {
510
- text-shadow: 0 -1px 0 #286090;
511
- background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
512
- background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
513
- background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
514
- background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
515
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
516
- background-repeat: repeat-x;
517
- border-color: #2b669a;
518
- }
519
- .list-group-item.active .badge,
520
- .list-group-item.active:hover .badge,
521
- .list-group-item.active:focus .badge {
522
- text-shadow: none;
523
- }
524
- .panel {
525
- -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
526
- box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
527
- }
528
- .panel-default > .panel-heading {
529
- background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
530
- background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
531
- background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
532
- background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
533
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
534
- background-repeat: repeat-x;
535
- }
536
- .panel-primary > .panel-heading {
537
- background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
538
- background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
539
- background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
540
- background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
541
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
542
- background-repeat: repeat-x;
543
- }
544
- .panel-success > .panel-heading {
545
- background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
546
- background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
547
- background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
548
- background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
549
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
550
- background-repeat: repeat-x;
551
- }
552
- .panel-info > .panel-heading {
553
- background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
554
- background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
555
- background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
556
- background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
557
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
558
- background-repeat: repeat-x;
559
- }
560
- .panel-warning > .panel-heading {
561
- background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
562
- background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
563
- background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
564
- background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
565
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
566
- background-repeat: repeat-x;
567
- }
568
- .panel-danger > .panel-heading {
569
- background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
570
- background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
571
- background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
572
- background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
573
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
574
- background-repeat: repeat-x;
575
- }
576
- .well {
577
- background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
578
- background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
579
- background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
580
- background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
581
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
582
- background-repeat: repeat-x;
583
- border-color: #dcdcdc;
584
- -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
585
- box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
586
- }
587
- /*# sourceMappingURL=bootstrap-theme.css.map */