ts-admin 0.2.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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +24 -0
- data/LICENSE.txt +22 -0
- data/README.md +39 -0
- data/Rakefile +3 -0
- data/app.rb +21 -0
- data/app.yml.example +12 -0
- data/bin/ts-admin +26 -0
- data/config.ru +19 -0
- data/controller/init.rb +55 -0
- data/controller/main.rb +10 -0
- data/controller/remap.rb +86 -0
- data/layout/default.xhtml +47 -0
- data/lib/ts-admin/traffic_server.rb +157 -0
- data/lib/ts-admin/version.rb +3 -0
- data/lib/ts-admin.rb +5 -0
- data/public/css/font-awesome.min.css +24 -0
- data/public/css/grid.css +107 -0
- data/public/css/layout.css +254 -0
- data/public/css/reset.css +123 -0
- data/public/css/text.css +109 -0
- data/public/favicon.ico +0 -0
- data/public/font/FontAwesome.otf +0 -0
- data/public/font/fontawesome-webfont.eot +0 -0
- data/public/font/fontawesome-webfont.svg +339 -0
- data/public/font/fontawesome-webfont.ttf +0 -0
- data/public/font/fontawesome-webfont.woff +0 -0
- data/public/images/bg.png +0 -0
- data/spec/helper.rb +39 -0
- data/task/ramaze.rake +57 -0
- data/ts-admin.gemspec +25 -0
- data/view/index.xhtml +3 -0
- data/view/remap/form.xhtml +18 -0
- data/view/remap/index.xhtml +2 -0
- data/view/remap/list.xhtml +23 -0
- metadata +124 -0
data/public/css/grid.css
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Modified version of the CSS grid (aka 1140 CSS) that can be found at http://cssgrid.net
|
5
|
+
*
|
6
|
+
* This modified version has some extra enhancements to make it a bit easier to work with
|
7
|
+
* the grid. Along with these minor fixes I also renamed all grid classes to the names
|
8
|
+
* used by the 960 grid system as I find "grid_6" easier to write than "sixcol".
|
9
|
+
*/
|
10
|
+
.container
|
11
|
+
{
|
12
|
+
overflow: hidden;
|
13
|
+
padding-left: 1%;
|
14
|
+
padding-right: 1%;
|
15
|
+
}
|
16
|
+
|
17
|
+
.row
|
18
|
+
{
|
19
|
+
max-width: 96%;
|
20
|
+
margin: 0 auto;
|
21
|
+
overflow: hidden;
|
22
|
+
width: 100%;
|
23
|
+
}
|
24
|
+
|
25
|
+
.grid_1, .grid_2, .grid_3, .grid_4, .grid_5, .grid_6, .grid_7, .grid_8, .grid_9,
|
26
|
+
.grid_10, .grid_11
|
27
|
+
{
|
28
|
+
float: left;
|
29
|
+
margin-right: 3.8%;
|
30
|
+
min-height: 1px;
|
31
|
+
}
|
32
|
+
|
33
|
+
.row .grid_1
|
34
|
+
{
|
35
|
+
width: 4.85%;
|
36
|
+
}
|
37
|
+
|
38
|
+
.row .grid_2
|
39
|
+
{
|
40
|
+
width: 13.45%;
|
41
|
+
}
|
42
|
+
|
43
|
+
.row .grid_3
|
44
|
+
{
|
45
|
+
width: 22.05%;
|
46
|
+
}
|
47
|
+
|
48
|
+
.row .grid_4
|
49
|
+
{
|
50
|
+
width: 30.75%;
|
51
|
+
}
|
52
|
+
|
53
|
+
.row .grid_5
|
54
|
+
{
|
55
|
+
width: 39.45%;
|
56
|
+
}
|
57
|
+
|
58
|
+
.row .grid_6
|
59
|
+
{
|
60
|
+
width: 48%;
|
61
|
+
}
|
62
|
+
|
63
|
+
.row .grid_7
|
64
|
+
{
|
65
|
+
width: 56.75%;
|
66
|
+
}
|
67
|
+
|
68
|
+
.row .grid_8
|
69
|
+
{
|
70
|
+
width: 65.4%;
|
71
|
+
}
|
72
|
+
|
73
|
+
.row .grid_9
|
74
|
+
{
|
75
|
+
width: 74.05%;
|
76
|
+
}
|
77
|
+
|
78
|
+
.row .grid_10
|
79
|
+
{
|
80
|
+
width: 82.7%;
|
81
|
+
}
|
82
|
+
|
83
|
+
.row .grid_11
|
84
|
+
{
|
85
|
+
width: 91.35%;
|
86
|
+
}
|
87
|
+
|
88
|
+
.row .grid_12
|
89
|
+
{
|
90
|
+
float: left;
|
91
|
+
width: 100%;
|
92
|
+
}
|
93
|
+
|
94
|
+
.last, .row > *:last-child
|
95
|
+
{
|
96
|
+
margin-right: 0px;
|
97
|
+
}
|
98
|
+
|
99
|
+
img, object, embed
|
100
|
+
{
|
101
|
+
max-width: 100%;
|
102
|
+
}
|
103
|
+
|
104
|
+
img
|
105
|
+
{
|
106
|
+
height: auto;
|
107
|
+
}
|
@@ -0,0 +1,254 @@
|
|
1
|
+
/**
|
2
|
+
* Stylesheet used for the layout of most elements.
|
3
|
+
*
|
4
|
+
* @author Yorick Peterse
|
5
|
+
* @link http://yorickpeterse.com/
|
6
|
+
*/
|
7
|
+
|
8
|
+
#container
|
9
|
+
{
|
10
|
+
margin: 20px auto;
|
11
|
+
width: 940px;
|
12
|
+
}
|
13
|
+
|
14
|
+
div.content
|
15
|
+
{
|
16
|
+
background: #fff;
|
17
|
+
border: 1px solid #ddd;
|
18
|
+
padding: 20px;
|
19
|
+
}
|
20
|
+
|
21
|
+
div.grid_12.content
|
22
|
+
{
|
23
|
+
width: 898px;
|
24
|
+
margin-bottom: 20px;
|
25
|
+
}
|
26
|
+
|
27
|
+
div.grid_12.content:last-child
|
28
|
+
{
|
29
|
+
margin-bottom: 0px;
|
30
|
+
}
|
31
|
+
|
32
|
+
div.content header
|
33
|
+
{
|
34
|
+
margin-bottom: 20px;
|
35
|
+
}
|
36
|
+
|
37
|
+
div.content div.buttons
|
38
|
+
{
|
39
|
+
float: right;
|
40
|
+
padding-top: 6px;
|
41
|
+
width: 54px;
|
42
|
+
text-align: right;
|
43
|
+
}
|
44
|
+
|
45
|
+
span.none
|
46
|
+
{
|
47
|
+
font-style:italic;
|
48
|
+
}
|
49
|
+
|
50
|
+
/* Flash messages */
|
51
|
+
div.flash
|
52
|
+
{
|
53
|
+
float: left;
|
54
|
+
border: 1px solid #ddd;
|
55
|
+
padding: 10px;
|
56
|
+
width: 918px;
|
57
|
+
margin-bottom: 20px;
|
58
|
+
background-color: #fff;
|
59
|
+
}
|
60
|
+
|
61
|
+
div#flash_error
|
62
|
+
{
|
63
|
+
color: red;
|
64
|
+
}
|
65
|
+
|
66
|
+
div#flash_info
|
67
|
+
{
|
68
|
+
color: green;
|
69
|
+
}
|
70
|
+
|
71
|
+
|
72
|
+
/* List form */
|
73
|
+
.list-form ul li
|
74
|
+
{
|
75
|
+
list-style-type: none;
|
76
|
+
height: 30px;
|
77
|
+
width: 240px;
|
78
|
+
}
|
79
|
+
|
80
|
+
.list-form ul li:not(:last-child) input
|
81
|
+
{
|
82
|
+
float: right;
|
83
|
+
display: block;
|
84
|
+
width: 150px;
|
85
|
+
}
|
86
|
+
|
87
|
+
.list-form ul li:last-child
|
88
|
+
{
|
89
|
+
text-align: center;
|
90
|
+
}
|
91
|
+
|
92
|
+
/* Tabbed form */
|
93
|
+
form p
|
94
|
+
{
|
95
|
+
clear: both;
|
96
|
+
height: 10px;
|
97
|
+
}
|
98
|
+
|
99
|
+
form p label, form p input
|
100
|
+
{
|
101
|
+
float: left;
|
102
|
+
}
|
103
|
+
|
104
|
+
form p label
|
105
|
+
{
|
106
|
+
display: block;
|
107
|
+
width: 60px;
|
108
|
+
text-align: right;
|
109
|
+
padding-right: 10px;
|
110
|
+
}
|
111
|
+
|
112
|
+
/* Top part of the website, contains the title and the navigation menu */
|
113
|
+
#top
|
114
|
+
{
|
115
|
+
background: #E33F1E;
|
116
|
+
height: 70px;
|
117
|
+
margin-bottom: 20px;
|
118
|
+
padding: 0px 10px;
|
119
|
+
}
|
120
|
+
|
121
|
+
#top header h1, #top header h1 a
|
122
|
+
{
|
123
|
+
color: #fff;
|
124
|
+
font-size: 38px;
|
125
|
+
margin: 10px 0px 0px 0px;
|
126
|
+
padding: 0px;
|
127
|
+
}
|
128
|
+
|
129
|
+
#top nav ul
|
130
|
+
{
|
131
|
+
float: right;
|
132
|
+
margin-right: 15px;
|
133
|
+
}
|
134
|
+
|
135
|
+
#top nav ul li
|
136
|
+
{
|
137
|
+
float: left;
|
138
|
+
font-size: 16px;
|
139
|
+
list-style-type: none;
|
140
|
+
margin-right: 10px;
|
141
|
+
}
|
142
|
+
|
143
|
+
#top nav ul li a
|
144
|
+
{
|
145
|
+
color: #fff;
|
146
|
+
display: block;
|
147
|
+
height: 45px;
|
148
|
+
padding: 25px 10px 0px 10px;
|
149
|
+
text-decoration: none;
|
150
|
+
}
|
151
|
+
|
152
|
+
#top nav ul li a:hover, #top nav ul li a.current
|
153
|
+
{
|
154
|
+
background: #D43919;
|
155
|
+
}
|
156
|
+
|
157
|
+
#top nav ul li a.current
|
158
|
+
{
|
159
|
+
font-weight: bold;
|
160
|
+
}
|
161
|
+
|
162
|
+
/* Footer at the bottom of the page */
|
163
|
+
#footer
|
164
|
+
{
|
165
|
+
text-align: center;
|
166
|
+
}
|
167
|
+
|
168
|
+
#footer p
|
169
|
+
{
|
170
|
+
font-size: 13px;
|
171
|
+
margin-bottom: 10px;
|
172
|
+
}
|
173
|
+
|
174
|
+
/* Remap */
|
175
|
+
ul.remap
|
176
|
+
{
|
177
|
+
margin: 0;
|
178
|
+
padding: 0;
|
179
|
+
}
|
180
|
+
|
181
|
+
ul.remap li
|
182
|
+
{
|
183
|
+
list-style-type: none;
|
184
|
+
width: 100%;
|
185
|
+
height: 23px;
|
186
|
+
margin-bottom: 4px;
|
187
|
+
}
|
188
|
+
|
189
|
+
ul.remap li:hover
|
190
|
+
{
|
191
|
+
background-color: #eee;
|
192
|
+
}
|
193
|
+
|
194
|
+
ul.remap li > span
|
195
|
+
{
|
196
|
+
display: block;
|
197
|
+
float: left;
|
198
|
+
width: 50px;
|
199
|
+
height: 24px;
|
200
|
+
padding-right: 10px;
|
201
|
+
}
|
202
|
+
|
203
|
+
ul.remap li > span:last-child
|
204
|
+
{
|
205
|
+
padding-right: 0px;
|
206
|
+
}
|
207
|
+
|
208
|
+
ul.remap li > span.arrow
|
209
|
+
{
|
210
|
+
text-align: center;
|
211
|
+
padding-top: 5px;
|
212
|
+
height: 19px;
|
213
|
+
}
|
214
|
+
|
215
|
+
ul.remap li > span.buttons
|
216
|
+
{
|
217
|
+
display: block;
|
218
|
+
float: left;
|
219
|
+
width: 38px;
|
220
|
+
padding-left: 10px;
|
221
|
+
text-align: right;
|
222
|
+
}
|
223
|
+
|
224
|
+
ul.remap li > span.buttons a
|
225
|
+
{
|
226
|
+
padding: 0 2px;
|
227
|
+
}
|
228
|
+
|
229
|
+
ul.remap li > span.url
|
230
|
+
{
|
231
|
+
display: block;
|
232
|
+
float: left;
|
233
|
+
width: 385px;
|
234
|
+
}
|
235
|
+
|
236
|
+
ul.remap li > span a
|
237
|
+
{
|
238
|
+
text-decoration: none;
|
239
|
+
}
|
240
|
+
|
241
|
+
ul.remap li > span a:hover
|
242
|
+
{
|
243
|
+
color: #444;
|
244
|
+
}
|
245
|
+
|
246
|
+
ul.remap li > span a span.http
|
247
|
+
{
|
248
|
+
color: red;
|
249
|
+
}
|
250
|
+
|
251
|
+
ul.remap li > span a span.https
|
252
|
+
{
|
253
|
+
color: green;
|
254
|
+
}
|
@@ -0,0 +1,123 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
|
3
|
+
/**
|
4
|
+
* http://meyerweb.com/eric/tools/css/reset/
|
5
|
+
* v2.0 | 20110126
|
6
|
+
* License: none (public domain)
|
7
|
+
*/
|
8
|
+
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
9
|
+
a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small,
|
10
|
+
strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset,
|
11
|
+
form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside,
|
12
|
+
canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output,
|
13
|
+
ruby, section, summary, time, mark, audio, video
|
14
|
+
{
|
15
|
+
border: 0;
|
16
|
+
font-size: 100%;
|
17
|
+
font: inherit;
|
18
|
+
margin: 0;
|
19
|
+
padding: 0;
|
20
|
+
vertical-align: baseline;
|
21
|
+
}
|
22
|
+
|
23
|
+
/* HTML5 display-role reset for older browsers */
|
24
|
+
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section
|
25
|
+
{
|
26
|
+
display: block;
|
27
|
+
}
|
28
|
+
|
29
|
+
body
|
30
|
+
{
|
31
|
+
line-height: 1.3;
|
32
|
+
}
|
33
|
+
|
34
|
+
ol, ul, ol li, ul li
|
35
|
+
{
|
36
|
+
list-style-type: none;
|
37
|
+
margin: 0px;
|
38
|
+
padding: 0px;
|
39
|
+
}
|
40
|
+
|
41
|
+
blockquote, q
|
42
|
+
{
|
43
|
+
quotes: none;
|
44
|
+
}
|
45
|
+
|
46
|
+
blockquote:before, blockquote:after, q:before, q:after
|
47
|
+
{
|
48
|
+
content: '';
|
49
|
+
content: none;
|
50
|
+
}
|
51
|
+
|
52
|
+
table
|
53
|
+
{
|
54
|
+
/**
|
55
|
+
* Instead of "collapse" I'm using "separate" as that allows me to give table cells
|
56
|
+
* a border without having to go through a lot of trouble
|
57
|
+
*/
|
58
|
+
border-collapse: separate;
|
59
|
+
border-spacing: 0;
|
60
|
+
width: 100%;
|
61
|
+
}
|
62
|
+
|
63
|
+
table th
|
64
|
+
{
|
65
|
+
font-weight: bold;
|
66
|
+
}
|
67
|
+
|
68
|
+
pre, code
|
69
|
+
{
|
70
|
+
font-size: 13px;
|
71
|
+
font-family: monospace;
|
72
|
+
}
|
73
|
+
|
74
|
+
/**
|
75
|
+
* These form elements usually don't trigger any special cursor and thus can confuse
|
76
|
+
* users when these elements have custom styles (e.g. a background image).
|
77
|
+
*/
|
78
|
+
input[type="submit"], input[type="button"], input[type="checkbox"], input[type="radio"],
|
79
|
+
button, select
|
80
|
+
{
|
81
|
+
cursor: pointer;
|
82
|
+
}
|
83
|
+
|
84
|
+
*[disabled], *[disabled="disabled"]
|
85
|
+
{
|
86
|
+
cursor: not-allowed;
|
87
|
+
}
|
88
|
+
|
89
|
+
textarea
|
90
|
+
{
|
91
|
+
overflow: auto;
|
92
|
+
}
|
93
|
+
|
94
|
+
acronym, abbr
|
95
|
+
{
|
96
|
+
cursor: help;
|
97
|
+
}
|
98
|
+
|
99
|
+
/* Some typography related styles */
|
100
|
+
body
|
101
|
+
{
|
102
|
+
font-size: 16px;
|
103
|
+
}
|
104
|
+
|
105
|
+
h1, h2, h3, h4, h5, h6
|
106
|
+
{
|
107
|
+
font-weight: bold;
|
108
|
+
}
|
109
|
+
|
110
|
+
a:hover, a:active
|
111
|
+
{
|
112
|
+
outline: none;
|
113
|
+
}
|
114
|
+
|
115
|
+
strong
|
116
|
+
{
|
117
|
+
font-weight: bold;
|
118
|
+
}
|
119
|
+
|
120
|
+
small
|
121
|
+
{
|
122
|
+
font-size: 11px;
|
123
|
+
}
|
data/public/css/text.css
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
/**
|
2
|
+
* Stylesheet used for styling headings, links, etc.
|
3
|
+
*
|
4
|
+
* @author Yorick Peterse
|
5
|
+
* @link http://yorickpeterse.com/
|
6
|
+
*/
|
7
|
+
body
|
8
|
+
{
|
9
|
+
background: url('../images/bg.png') repeat top left;
|
10
|
+
border-top: 5px solid #444;
|
11
|
+
color: #444;
|
12
|
+
font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, sans-serif;
|
13
|
+
font-size: 14px;
|
14
|
+
}
|
15
|
+
|
16
|
+
p
|
17
|
+
{
|
18
|
+
font-size: 14px;
|
19
|
+
line-height: 22px;
|
20
|
+
margin-bottom: 20px;
|
21
|
+
}
|
22
|
+
|
23
|
+
a
|
24
|
+
{
|
25
|
+
color: #444;
|
26
|
+
}
|
27
|
+
|
28
|
+
ol
|
29
|
+
{
|
30
|
+
margin-left: 20px;
|
31
|
+
}
|
32
|
+
|
33
|
+
ol li
|
34
|
+
{
|
35
|
+
list-style-type: decimal;
|
36
|
+
}
|
37
|
+
|
38
|
+
ul
|
39
|
+
{
|
40
|
+
margin-left: 18px;
|
41
|
+
}
|
42
|
+
|
43
|
+
ul li
|
44
|
+
{
|
45
|
+
list-style-type: disc;
|
46
|
+
}
|
47
|
+
|
48
|
+
ul, ol
|
49
|
+
{
|
50
|
+
line-height: 22px;
|
51
|
+
margin-bottom: 20px;
|
52
|
+
}
|
53
|
+
|
54
|
+
a:hover, h1 a:hover
|
55
|
+
{
|
56
|
+
color: #E33F1E;
|
57
|
+
}
|
58
|
+
|
59
|
+
h1, h2, h3, h4, h5, h6
|
60
|
+
{
|
61
|
+
font-weight: bold;
|
62
|
+
margin-bottom: 5px;
|
63
|
+
}
|
64
|
+
|
65
|
+
h1
|
66
|
+
{
|
67
|
+
font-size: 28px;
|
68
|
+
}
|
69
|
+
|
70
|
+
h2
|
71
|
+
{
|
72
|
+
font-size: 24px;
|
73
|
+
}
|
74
|
+
|
75
|
+
h3
|
76
|
+
{
|
77
|
+
font-size: 22px;
|
78
|
+
}
|
79
|
+
|
80
|
+
h4
|
81
|
+
{
|
82
|
+
font-size: 20px;
|
83
|
+
}
|
84
|
+
|
85
|
+
h5
|
86
|
+
{
|
87
|
+
font-size: 18px;
|
88
|
+
}
|
89
|
+
|
90
|
+
h6
|
91
|
+
{
|
92
|
+
font-size: 16px;
|
93
|
+
}
|
94
|
+
|
95
|
+
h1 a
|
96
|
+
{
|
97
|
+
color: #444;
|
98
|
+
text-decoration: none;
|
99
|
+
}
|
100
|
+
|
101
|
+
pre
|
102
|
+
{
|
103
|
+
margin: 20px 0px;
|
104
|
+
}
|
105
|
+
|
106
|
+
code
|
107
|
+
{
|
108
|
+
background: #eee;
|
109
|
+
}
|
data/public/favicon.ico
ADDED
Binary file
|
Binary file
|
Binary file
|