seo_app 0.0.1

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.
@@ -0,0 +1,40 @@
1
+ require 'pathname'
2
+
3
+ module SeoApp
4
+ # Base storage interface
5
+ class FileStorage
6
+ attr_accessor :reports_path
7
+
8
+ def initialize
9
+ _path = SeoApp.configuration.reports_folder || ''
10
+ # BUG! some wild problem with normal SeoApp.root_path.join(_path)
11
+ @reports_path = File.join(SeoApp.root_path, _path)
12
+ end
13
+
14
+ def all_reports
15
+ _reports = []
16
+
17
+ Dir.foreach(@reports_path) do |file|
18
+ next unless File.extname(file) == '.html'
19
+ parts = file.gsub('.html', '').split('__')
20
+ _reports << { site_url: parts[0],
21
+ date: parts[1].tr('_', ' '),
22
+ key: file
23
+ }
24
+ end
25
+ _reports
26
+ end
27
+
28
+ def report(_key)
29
+ return nil unless File.exist?(@reports_path.join(_key))
30
+ File.open(@reports_path.join(_key), 'r')
31
+ end
32
+
33
+ def save_report(_data, _name)
34
+ puts @reports_path
35
+ File.open(@reports_path.join(_name), 'w') do |f|
36
+ f.write(_data)
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,16 @@
1
+ module SeoApp
2
+ # Base storage interface
3
+ class PgStorage
4
+ def initialize
5
+ end
6
+
7
+ def all_reports
8
+ end
9
+
10
+ def report(_key)
11
+ end
12
+
13
+ def save_report(_data, _name)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,46 @@
1
+ require_relative 'file_storage'
2
+ require_relative 'pg_storage'
3
+
4
+ module SeoApp
5
+ # Storage interface
6
+ class Storage
7
+ class << self; attr_accessor :database end
8
+
9
+ ##
10
+ ## @brief Returns all report's name, date and key's to look for each
11
+ ##
12
+ ## @return {
13
+ ## site_url: String,
14
+ ## date: String
15
+ ## key: String
16
+ ## }
17
+ ##
18
+ def self.all_reports
19
+ database.all_reports
20
+ end
21
+
22
+ ##
23
+ ## @brief Retrieve report for key
24
+ ##
25
+ ## @param _key Key for retrieval
26
+ ##
27
+ ## @return html formatted report
28
+ ##
29
+ def self.report(_key)
30
+ database.report(_key)
31
+ end
32
+
33
+ def self.save_report(_data, _name)
34
+ database.save_report(_data, _name)
35
+ end
36
+ end
37
+
38
+ # Base storage interface
39
+ class AbstractStorage
40
+ def all_reports; end
41
+
42
+ def report(_key); end
43
+
44
+ def save_report(_data, _name); end
45
+ end
46
+ end
File without changes
Binary file
Binary file
data/public/js/code.js ADDED
@@ -0,0 +1,6 @@
1
+ var arr = document.getElementsByClassName('sort-table');
2
+ var index;
3
+
4
+ for (index = 0; index < arr.length; ++index) {
5
+ new Tablesort(arr[index]);
6
+ };
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * tablesort v3.1.0 (2015-07-03)
3
+ * http://tristen.ca/tablesort/demo/
4
+ * Copyright (c) 2015 ; Licensed MIT
5
+ */!function(){function a(b,c){if(!(this instanceof a))return new a(b,c);if(!b||"TABLE"!==b.tagName)throw new Error("Element must be a table");this.init(b,c||{})}var b=[],c=function(a){var b;return window.CustomEvent&&"function"==typeof window.CustomEvent?b=new CustomEvent(a):(b=document.createEvent("CustomEvent"),b.initCustomEvent(a,!1,!1,void 0)),b},d=function(a){return a.getAttribute("data-sort")||a.textContent||a.innerText||""},e=function(a,b){return a=a.toLowerCase(),b=b.toLowerCase(),a===b?0:b>a?1:-1},f=function(a,b){return function(c,d){var e=a(c.td,d.td);return 0===e?b?d.index-c.index:c.index-d.index:e}};a.extend=function(a,c,d){if("function"!=typeof c||"function"!=typeof d)throw new Error("Pattern and sort must be a function");b.push({name:a,pattern:c,sort:d})},a.prototype={init:function(a,b){var c,d,e,f,g=this;if(g.table=a,g.thead=!1,g.options=b,a.rows&&a.rows.length>0&&(a.tHead&&a.tHead.rows.length>0?(c=a.tHead.rows[a.tHead.rows.length-1],g.thead=!0):c=a.rows[0]),c){var h=function(){g.current&&g.current!==this&&(g.current.classList.remove("sort-up"),g.current.classList.remove("sort-down")),g.current=this,g.sortTable(this)};for(e=0;e<c.cells.length;e++)f=c.cells[e],f.classList.contains("no-sort")||(f.classList.add("sort-header"),f.tabindex=0,f.addEventListener("click",h,!1),f.classList.contains("sort-default")&&(d=f));d&&(g.current=d,g.sortTable(d))}},sortTable:function(a,g){var h,i=this,j=a.cellIndex,k=e,l="",m=[],n=i.thead?0:1,o=a.getAttribute("data-sort-method");if(i.table.dispatchEvent(c("beforeSort")),g?h=a.classList.contains("sort-up")?"sort-up":"sort-down":(h=a.classList.contains("sort-up")?"sort-down":a.classList.contains("sort-down")?"sort-up":i.options.descending?"sort-up":"sort-down",a.classList.remove("sort-down"===h?"sort-up":"sort-down"),a.classList.add(h)),!(i.table.rows.length<2)){if(!o){for(;m.length<3&&n<i.table.tBodies[0].rows.length;)l=d(i.table.tBodies[0].rows[n].cells[j]),l=l.trim(),l.length>0&&m.push(l),n++;if(!m)return}for(n=0;n<b.length;n++)if(l=b[n],o){if(l.name===o){k=l.sort;break}}else if(m.every(l.pattern)){k=l.sort;break}i.col=j;var p,q=[],r={},s=0,t=0;for(n=0;n<i.table.tBodies.length;n++)for(p=0;p<i.table.tBodies[n].rows.length;p++)l=i.table.tBodies[n].rows[p],l.classList.contains("no-sort")?r[s]=l:q.push({tr:l,td:d(l.cells[i.col]),index:s}),s++;for("sort-down"===h?(q.sort(f(k,!0)),q.reverse()):q.sort(f(k,!1)),n=0;s>n;n++)r[n]?(l=r[n],t++):l=q[n-t].tr,i.table.tBodies[0].appendChild(l);i.table.dispatchEvent(c("afterSort"))}},refresh:function(){void 0!==this.current&&this.sortTable(this.current,!0)}},"undefined"!=typeof module&&module.exports?module.exports=a:window.Tablesort=a}();
@@ -0,0 +1,2 @@
1
+ *
2
+ !.gitignore
data/public/robots.txt ADDED
@@ -0,0 +1,2 @@
1
+ User-Agent: *
2
+ Disallow: /
@@ -0,0 +1,587 @@
1
+ /*!
2
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
3
+ * Copyright 2011-2015 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 */