ood_appkit 0.0.2
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/LICENSE.txt +22 -0
- data/README.md +395 -0
- data/Rakefile +34 -0
- data/app/assets/stylesheets/_ood_appkit.scss +2 -0
- data/app/assets/stylesheets/ood_appkit/_bootstrap-overrides.scss.erb +3 -0
- data/app/assets/stylesheets/ood_appkit/_branding.scss +2 -0
- data/app/assets/stylesheets/ood_appkit/_markdown.scss +66 -0
- data/app/assets/stylesheets/ood_appkit/branding/_navbar.scss +96 -0
- data/app/controllers/concerns/ood_appkit/wiki_page.rb +23 -0
- data/app/controllers/ood_appkit/wiki_controller.rb +4 -0
- data/app/views/ood_appkit/wiki/show.html.erb +7 -0
- data/config/routes.rb +11 -0
- data/lib/ood_appkit/configuration.rb +100 -0
- data/lib/ood_appkit/dashboard_url.rb +26 -0
- data/lib/ood_appkit/engine.rb +23 -0
- data/lib/ood_appkit/files_rack_app.rb +21 -0
- data/lib/ood_appkit/files_url.rb +38 -0
- data/lib/ood_appkit/markdown_template_handler.rb +27 -0
- data/lib/ood_appkit/public_url.rb +26 -0
- data/lib/ood_appkit/shell_url.rb +29 -0
- data/lib/ood_appkit/version.rb +4 -0
- data/lib/ood_appkit.rb +16 -0
- data/lib/tasks/ood_appkit_tasks.rake +6 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +29 -0
- data/test/dummy/config/environments/production.rb +80 -0
- data/test/dummy/config/environments/test.rb +36 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +12 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +56 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/public/404.html +58 -0
- data/test/dummy/public/422.html +58 -0
- data/test/dummy/public/500.html +57 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/ood_appkit_test.rb +28 -0
- data/test/test_helper.rb +16 -0
- metadata +193 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1a7f419914552815e3d0bb2c9af6bd27c0fca870
|
4
|
+
data.tar.gz: 7a0f816f4127b63a478cd018b69e7ab01a82f50e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 68fd62b19a15d3c5ab89a45ce538dd7ab14deb664d4d6df69de87ae34dbfed859821341f9c0efdadaba47c4405ec7196a00ef82451bd4de943261d8fe0a53a79
|
7
|
+
data.tar.gz: ec99f9ae001b642eb4e2dbbd7a47858037c7f6b085319c04029423325b5ed4c5126f5fded3b5d5a25aa168b2c4c6d0d3a3f230c5e78dc54ff7b7486ca8f507ee
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015-2016 Ohio Supercomputer Center
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,395 @@
|
|
1
|
+
## Installation
|
2
|
+
|
3
|
+
To use, add this line to your application's Gemfile:
|
4
|
+
|
5
|
+
gem 'ood_appkit'
|
6
|
+
|
7
|
+
And then execute:
|
8
|
+
|
9
|
+
bundle install
|
10
|
+
|
11
|
+
## Usage
|
12
|
+
|
13
|
+
### Rake Tasks
|
14
|
+
|
15
|
+
#### reset
|
16
|
+
|
17
|
+
Running this rake task
|
18
|
+
|
19
|
+
```bash
|
20
|
+
bin/rake ood_appkit:reset
|
21
|
+
```
|
22
|
+
|
23
|
+
will clear the Rails cache and update the timestamp on the `tmp/restart.txt`
|
24
|
+
file that is used by Passenger to decide whether to restart the application.
|
25
|
+
|
26
|
+
### URL Handlers for System Apps
|
27
|
+
|
28
|
+
#### Public URL
|
29
|
+
|
30
|
+
This is the URL used to access publicly available assets provided by the OOD
|
31
|
+
infrastructure, e.g., the `favicon.ico`.
|
32
|
+
|
33
|
+
```erb
|
34
|
+
<%= favicon_link_tag nil, href: OodAppkit.public.url.join('favicon.ico') %>
|
35
|
+
```
|
36
|
+
|
37
|
+
Note: We used `nil` here as the source otherwise Rails will try to prepend the
|
38
|
+
`RAILS_RELATIVE_URL_ROOT` to it. We explicitly define the link using `href:`
|
39
|
+
instead.
|
40
|
+
|
41
|
+
You can change the options using environment variables:
|
42
|
+
|
43
|
+
```bash
|
44
|
+
OOD_PUBLIC_URL='/public'
|
45
|
+
OOD_PUBLIC_TITLE='Public Assets'
|
46
|
+
```
|
47
|
+
|
48
|
+
Or by modifying the configuration in an initializer:
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
# config/initializers/ood_appkit.rb
|
52
|
+
|
53
|
+
OodAppkit.configure do |config|
|
54
|
+
# Defaults
|
55
|
+
config.public = OodAppkit::PublicUrl.new title: 'Public Assets', base_url: '/public'
|
56
|
+
end
|
57
|
+
```
|
58
|
+
|
59
|
+
#### Dashboard URL
|
60
|
+
|
61
|
+
```erb
|
62
|
+
<%= link_to OodAppkit.dashboard.title, OodAppkit.dashboard.url.to_s %>
|
63
|
+
```
|
64
|
+
|
65
|
+
You can change the options using environment variables:
|
66
|
+
|
67
|
+
```bash
|
68
|
+
OOD_DASHBOARD_URL='/pun/sys/dashboard'
|
69
|
+
OOD_DASHBOARD_TITLE='Dashboard'
|
70
|
+
```
|
71
|
+
|
72
|
+
Or by modifying the configuration in an initializer:
|
73
|
+
|
74
|
+
```ruby
|
75
|
+
# config/initializers/ood_appkit.rb
|
76
|
+
|
77
|
+
OodAppkit.configure do |config|
|
78
|
+
# Defaults
|
79
|
+
config.dashboard = OodAppkit::DashboardUrl.new title: 'Dashboard', base_url: '/pun/sys/dashboard'
|
80
|
+
end
|
81
|
+
```
|
82
|
+
|
83
|
+
#### Files App
|
84
|
+
|
85
|
+
```erb
|
86
|
+
<%# Link to the Files app %>
|
87
|
+
<%= link_to OodAppkit.files.title, OodAppkit.files.url.to_s %>
|
88
|
+
|
89
|
+
<%# Link to open files app to specified directory %>
|
90
|
+
<%= link_to "/path/to/file", OodAppkit.files.url(path: "/path/to/file").to_s %>
|
91
|
+
<%= link_to "/path/to/file", OodAppkit.files.url(path: Pathname.new("/path/to/file")).to_s %>
|
92
|
+
|
93
|
+
<%# Link to retrieve API info for given file %>
|
94
|
+
<%= link_to "/path/to/file", OodAppkit.files.api(path: "/path/to/file").to_s %>
|
95
|
+
```
|
96
|
+
|
97
|
+
You can change the options using environment variables:
|
98
|
+
|
99
|
+
```bash
|
100
|
+
OOD_FILES_URL='/pun/sys/files'
|
101
|
+
OOD_FILES_TITLE='Files'
|
102
|
+
```
|
103
|
+
|
104
|
+
Or by modifying the configuration in an initializer:
|
105
|
+
|
106
|
+
```ruby
|
107
|
+
# config/initializers/ood_appkit.rb
|
108
|
+
|
109
|
+
OodAppkit.configure do |config|
|
110
|
+
# Defaults
|
111
|
+
config.files = OodAppkit::FilesUrl.new title: 'Files', base_url: '/pun/sys/files'
|
112
|
+
end
|
113
|
+
```
|
114
|
+
|
115
|
+
#### Shell App
|
116
|
+
|
117
|
+
```erb
|
118
|
+
<%# Link to the Shell app %>
|
119
|
+
<%= link_to OodAppkit.shell.title, OodAppkit.shell.url.to_s %>
|
120
|
+
|
121
|
+
<%# Link to launch Shell app for specified host %>
|
122
|
+
<%= link_to "Ruby Shell", OodAppkit.shell.url(host: "ruby").to_s %>
|
123
|
+
|
124
|
+
<%# Link to launch Shell app in specified directory %>
|
125
|
+
<%= link_to "Shell in /path/to/dir", OodAppkit.shell.url(path: "/path/to/dir").to_s %>
|
126
|
+
|
127
|
+
<%# Link to launch Shell app for specified host in directory %>
|
128
|
+
<%= link_to "Ruby in /path/to/dir", OodAppkit.shell.url(host: "ruby", path: "/path/to/dir").to_s %>
|
129
|
+
```
|
130
|
+
|
131
|
+
You can change the options using environment variables:
|
132
|
+
|
133
|
+
```bash
|
134
|
+
OOD_SHELL_URL='/pun/sys/shell'
|
135
|
+
OOD_SHELL_TITLE='Shell'
|
136
|
+
```
|
137
|
+
|
138
|
+
Or by modifying the configuration in an initializer:
|
139
|
+
|
140
|
+
```ruby
|
141
|
+
# config/initializers/ood_appkit.rb
|
142
|
+
|
143
|
+
OodAppkit.configure do |config|
|
144
|
+
# Defaults
|
145
|
+
config.shell = OodAppkit::ShellUrl.new title: 'Shell', base_url: '/pun/sys/shell'
|
146
|
+
end
|
147
|
+
```
|
148
|
+
|
149
|
+
### Rack Middleware for handling Files under Dataroot
|
150
|
+
|
151
|
+
This mounts all the files under the `OodAppkit.dataroot` using the following route
|
152
|
+
by default:
|
153
|
+
|
154
|
+
```ruby
|
155
|
+
# config/routes.rb
|
156
|
+
|
157
|
+
mount OodAppkit::FilesRackApp.new => '/files', as: :files
|
158
|
+
```
|
159
|
+
|
160
|
+
To disable this generated route:
|
161
|
+
|
162
|
+
```ruby
|
163
|
+
# config/initializers/ood_appkit.rb
|
164
|
+
|
165
|
+
OodAppkit.configure do |config|
|
166
|
+
config.routes.files_rack_app = false
|
167
|
+
end
|
168
|
+
```
|
169
|
+
|
170
|
+
To add a new route:
|
171
|
+
|
172
|
+
```ruby
|
173
|
+
# config/routes.rb
|
174
|
+
|
175
|
+
# rename URI from '/files' to '/dataroot'
|
176
|
+
mount OodAppkit::FilesRackApp.new => '/dataroot', as: :files
|
177
|
+
|
178
|
+
# create new route with root set to '/tmp' on filesystem
|
179
|
+
mount OodAppkit::FilesRackApp.new(root: '/tmp') => '/tmp', as: :tmp
|
180
|
+
```
|
181
|
+
|
182
|
+
### Wiki Static Page Engine
|
183
|
+
|
184
|
+
This gem comes with a wiki static page engine. It uses the supplied markdown
|
185
|
+
handler to display GitHub style wiki pages.
|
186
|
+
|
187
|
+
By default the route is generated for you:
|
188
|
+
|
189
|
+
```ruby
|
190
|
+
# config/routes.rb
|
191
|
+
|
192
|
+
get 'wiki/*page' => 'ood_appkit/wiki#show', as: :wiki, content_path: 'wiki'
|
193
|
+
```
|
194
|
+
|
195
|
+
and can be accessed within your app by
|
196
|
+
|
197
|
+
```erb
|
198
|
+
<%= link_to "Documentation", wiki_path('Home') %>
|
199
|
+
```
|
200
|
+
|
201
|
+
To disable this generated route:
|
202
|
+
|
203
|
+
```ruby
|
204
|
+
# config/initializers/ood_appkit.rb
|
205
|
+
|
206
|
+
OodAppkit.configure do |config|
|
207
|
+
config.routes.wiki = false
|
208
|
+
end
|
209
|
+
```
|
210
|
+
|
211
|
+
To change (disable route first) or add a new route:
|
212
|
+
|
213
|
+
```ruby
|
214
|
+
# config/routes.rb
|
215
|
+
|
216
|
+
# can modify URI as well as file system content path where files reside
|
217
|
+
get 'tutorial/*page' => 'ood_appkit/wiki#show', as: :tutorial, content_path: '/path/to/my_tutorial'
|
218
|
+
|
219
|
+
# can use your own controller
|
220
|
+
get 'wiki/*page' => 'my_wiki#show', as: :wiki, content_path: 'wiki'
|
221
|
+
```
|
222
|
+
|
223
|
+
You can use your own controller by including the appropriate concern:
|
224
|
+
|
225
|
+
```ruby
|
226
|
+
# app/controllers/my_wiki_controller.rb
|
227
|
+
class MyWikiController < ApplicationController
|
228
|
+
include OodAppkit::WikiPage
|
229
|
+
|
230
|
+
layout :layout_for_page
|
231
|
+
|
232
|
+
private
|
233
|
+
def layout_for_page
|
234
|
+
'wiki_layout'
|
235
|
+
end
|
236
|
+
end
|
237
|
+
```
|
238
|
+
|
239
|
+
And add a show view for this controller:
|
240
|
+
|
241
|
+
```erb
|
242
|
+
<%# app/views/my_wiki/show.html.erb %>
|
243
|
+
|
244
|
+
<div class="ood-appkit markdown">
|
245
|
+
<div class="row">
|
246
|
+
<div class="col-md-8 col-md-offset-2">
|
247
|
+
<%= render file: @page %>
|
248
|
+
</div>
|
249
|
+
</div>
|
250
|
+
</div>
|
251
|
+
```
|
252
|
+
|
253
|
+
### Override Bootstrap Variables
|
254
|
+
|
255
|
+
You can easily override any bootstrap variable using environment variables:
|
256
|
+
|
257
|
+
```bash
|
258
|
+
# BOOTSTRAP_<variable>='<value>'
|
259
|
+
|
260
|
+
# Change font sizes
|
261
|
+
BOOTSTRAP_FONT_SIZE_H1='50px'
|
262
|
+
BOOTSTRAP_FONT_SIZE_H2='24px'
|
263
|
+
|
264
|
+
# Re-use variables
|
265
|
+
BOOTSTRAP_GRAY_BASE='#000'
|
266
|
+
BOOTSTRAP_GRAY_DARKER='lighten($gray-base, 13.5%)'
|
267
|
+
BOOTSTRAP_GRAY_DARK='lighten($gray-base, 20%)'
|
268
|
+
```
|
269
|
+
|
270
|
+
The variables can also be overridden in an initializer:
|
271
|
+
|
272
|
+
```ruby
|
273
|
+
# config/initializers/ood_appkit.rb
|
274
|
+
|
275
|
+
OodAppkit.configure do |config|
|
276
|
+
# These are the defaults
|
277
|
+
config.bootstrap.navbar_inverse_bg = '#53565a'
|
278
|
+
config.bootstrap.navbar_inverse_link_color = '#fff'
|
279
|
+
config.bootstrap.navbar_inverse_color = '$navbar-inverse-link-color'
|
280
|
+
config.bootstrap.navbar_inverse_link_hover_color = 'darken($navbar-inverse-link-color, 20%)'
|
281
|
+
config.bootstrap.navbar_inverse_brand_color = '$navbar-inverse-link-color'
|
282
|
+
config.bootstrap.navbar_inverse_brand_hover_color = '$navbar-inverse-link-hover-color'
|
283
|
+
end
|
284
|
+
```
|
285
|
+
|
286
|
+
You **MUST** import the bootstrap overrides into your stylesheets
|
287
|
+
for these to take effect
|
288
|
+
|
289
|
+
```scss
|
290
|
+
// app/assets/stylesheets/application.scss
|
291
|
+
|
292
|
+
// load the bootstrap sprockets first
|
293
|
+
@import "bootstrap-sprockets";
|
294
|
+
|
295
|
+
// this MUST occur before you import bootstrap
|
296
|
+
@import "ood_appkit/bootstrap-overrides";
|
297
|
+
|
298
|
+
// this MUST occur after the bootstrap overrides
|
299
|
+
@import "bootstrap";
|
300
|
+
```
|
301
|
+
|
302
|
+
### Markdown Handler
|
303
|
+
|
304
|
+
A simple markdown handler is included with this gem. Any views with the
|
305
|
+
extensions `*.md` or `*.markdown` will be handled using the `Redcarpet` gem.
|
306
|
+
The renderer can be modified as such:
|
307
|
+
|
308
|
+
```ruby
|
309
|
+
# config/initializers/ood_appkit.rb
|
310
|
+
|
311
|
+
OodAppkit.configure do |config|
|
312
|
+
# Default
|
313
|
+
config.markdown = Redcarpet::Markdown.new(
|
314
|
+
Redcarpet::Render::HTML,
|
315
|
+
autolink: true,
|
316
|
+
tables: true,
|
317
|
+
strikethrough: true,
|
318
|
+
fenced_code_blocks: true,
|
319
|
+
no_intra_emphasis: true
|
320
|
+
)
|
321
|
+
end
|
322
|
+
```
|
323
|
+
|
324
|
+
Really any object can be used that responds to `#render`.
|
325
|
+
|
326
|
+
Note: You will need to import the appropriate stylesheet if you want the
|
327
|
+
rendered markdown to resemble GitHub's display of markdown.
|
328
|
+
|
329
|
+
```scss
|
330
|
+
// app/assets/stylesheets/application.scss
|
331
|
+
|
332
|
+
@import "ood_appkit/markdown";
|
333
|
+
```
|
334
|
+
|
335
|
+
It is also included if you import the default stylesheet:
|
336
|
+
|
337
|
+
|
338
|
+
```scss
|
339
|
+
// app/assets/stylesheets/application.scss
|
340
|
+
|
341
|
+
@import "ood_appkit";
|
342
|
+
```
|
343
|
+
|
344
|
+
## Branding Features
|
345
|
+
|
346
|
+
To take advantage of branding features you must import it in your stylesheet:
|
347
|
+
|
348
|
+
```scss
|
349
|
+
// app/assets/stylesheets/application.scss
|
350
|
+
|
351
|
+
@import "ood_appkit/branding";
|
352
|
+
```
|
353
|
+
|
354
|
+
It is also included if you import the default stylesheet:
|
355
|
+
|
356
|
+
|
357
|
+
```scss
|
358
|
+
// app/assets/stylesheets/application.scss
|
359
|
+
|
360
|
+
@import "ood_appkit";
|
361
|
+
```
|
362
|
+
|
363
|
+
### Navbar Breadcrumbs
|
364
|
+
|
365
|
+
One such branding feature is the `navbar-breadcrumbs`. It is used to accentuate
|
366
|
+
the tree like style of the app in the navbar. It is used as such:
|
367
|
+
|
368
|
+
```erb
|
369
|
+
<nav class="ood-appkit navbar navbar-inverse navbar-static-top" role="navigation">
|
370
|
+
<div class="navbar-header">
|
371
|
+
...
|
372
|
+
<ul class="navbar-breadcrumbs">
|
373
|
+
<li><%= link_to OodAppkit.dashboard.title, OodAppkit.dashboard.url.to_s %></li>
|
374
|
+
<li><%= link_to 'MyApp', root_path %></li>
|
375
|
+
<li><%= link_to 'Meshes', meshes_path %></li>
|
376
|
+
</ul>
|
377
|
+
</div>
|
378
|
+
|
379
|
+
...
|
380
|
+
</nav>
|
381
|
+
```
|
382
|
+
|
383
|
+
Note that you must include `ood-appkit` as a class in the `nav` tag. The
|
384
|
+
breadcrumbs style will resemble the `navbar-brand` style.
|
385
|
+
|
386
|
+
## Develop
|
387
|
+
|
388
|
+
Generated using:
|
389
|
+
|
390
|
+
rails plugin new ood_appkit --full --skip-bundle
|
391
|
+
|
392
|
+
|
393
|
+
## License
|
394
|
+
|
395
|
+
This gem is released under the [MIT License](http://www.opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'OodAppkit'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
18
|
+
load 'rails/tasks/engine.rake'
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
Bundler::GemHelper.install_tasks
|
23
|
+
|
24
|
+
require 'rake/testtask'
|
25
|
+
|
26
|
+
Rake::TestTask.new(:test) do |t|
|
27
|
+
t.libs << 'lib'
|
28
|
+
t.libs << 'test'
|
29
|
+
t.pattern = 'test/**/*_test.rb'
|
30
|
+
t.verbose = false
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
task default: :test
|
@@ -0,0 +1,66 @@
|
|
1
|
+
.ood-appkit.markdown {
|
2
|
+
font-size: 16px;
|
3
|
+
line-height: 1.6;
|
4
|
+
h1 {
|
5
|
+
margin-right: 150px;
|
6
|
+
font-size: 30px;
|
7
|
+
font-weight: normal;
|
8
|
+
line-height: 1.1;
|
9
|
+
}
|
10
|
+
h2 {
|
11
|
+
padding-bottom: 0.3em;
|
12
|
+
margin-top: 1em;
|
13
|
+
margin-bottom: 16px;
|
14
|
+
font-size: 1.75em;
|
15
|
+
font-weight: bold;
|
16
|
+
line-height: 1.225;
|
17
|
+
}
|
18
|
+
h3 {
|
19
|
+
margin-top: 1em;
|
20
|
+
margin-bottom: 16px;
|
21
|
+
font-size: 1.5em;
|
22
|
+
font-weight: bold;
|
23
|
+
line-height: 1.43;
|
24
|
+
}
|
25
|
+
h4 {
|
26
|
+
margin-top: 1em;
|
27
|
+
margin-bottom: 16px;
|
28
|
+
font-size: 1.25em;
|
29
|
+
font-weight: bold;
|
30
|
+
line-height: 1.4;
|
31
|
+
}
|
32
|
+
img {
|
33
|
+
border: 0;
|
34
|
+
max-width: 100%;
|
35
|
+
}
|
36
|
+
p {
|
37
|
+
margin-top: 0;
|
38
|
+
margin-bottom: 16px;
|
39
|
+
}
|
40
|
+
li > p {
|
41
|
+
margin-top: 16px;
|
42
|
+
}
|
43
|
+
table {
|
44
|
+
display: block;
|
45
|
+
width: 100%;
|
46
|
+
overflow: auto;
|
47
|
+
word-break: keep-all;
|
48
|
+
|
49
|
+
// .markdown p, .markdown table, ...
|
50
|
+
margin-top: 0;
|
51
|
+
margin-bottom: 16px;
|
52
|
+
|
53
|
+
tr {
|
54
|
+
border-top: 1px solid #ccc;
|
55
|
+
}
|
56
|
+
|
57
|
+
tr:nth-child(2n) td{
|
58
|
+
background-color: #f8f8f8;
|
59
|
+
}
|
60
|
+
|
61
|
+
th, td {
|
62
|
+
padding: 6px 13px;
|
63
|
+
border: 1px solid #ddd;
|
64
|
+
}
|
65
|
+
}
|
66
|
+
}
|
@@ -0,0 +1,96 @@
|
|
1
|
+
%navbar-brand {
|
2
|
+
float: left;
|
3
|
+
padding: $navbar-padding-vertical $navbar-padding-horizontal;
|
4
|
+
font-size: $font-size-large;
|
5
|
+
line-height: $line-height-computed;
|
6
|
+
height: $navbar-height;
|
7
|
+
|
8
|
+
&:hover,
|
9
|
+
&:focus {
|
10
|
+
text-decoration: none;
|
11
|
+
}
|
12
|
+
|
13
|
+
> img {
|
14
|
+
display: block;
|
15
|
+
}
|
16
|
+
|
17
|
+
@media (min-width: $grid-float-breakpoint) {
|
18
|
+
.navbar > .container &,
|
19
|
+
.navbar > .container-fluid & {
|
20
|
+
margin-left: -$navbar-padding-horizontal;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
.ood-appkit.navbar {
|
26
|
+
ul.navbar-breadcrumbs {
|
27
|
+
list-style-type: none;
|
28
|
+
display: inline;
|
29
|
+
margin: 0;
|
30
|
+
padding: 0;
|
31
|
+
|
32
|
+
> li {
|
33
|
+
display: inline;
|
34
|
+
|
35
|
+
> a {
|
36
|
+
@extend %navbar-brand;
|
37
|
+
}
|
38
|
+
|
39
|
+
+ li:before {
|
40
|
+
@extend %navbar-brand;
|
41
|
+
padding: $navbar-padding-vertical 0;
|
42
|
+
content: '/';
|
43
|
+
}
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
&.navbar-default {
|
48
|
+
ul.navbar-breadcrumbs > li {
|
49
|
+
> a {
|
50
|
+
color: $navbar-default-brand-hover-color;
|
51
|
+
&:hover,
|
52
|
+
&:focus {
|
53
|
+
color: $navbar-default-brand-color;
|
54
|
+
background-color: $navbar-default-brand-hover-bg;
|
55
|
+
}
|
56
|
+
}
|
57
|
+
|
58
|
+
&:last-child > a {
|
59
|
+
color: $navbar-default-brand-color;
|
60
|
+
&:hover,
|
61
|
+
&:focus {
|
62
|
+
color: $navbar-default-brand-hover-color;
|
63
|
+
}
|
64
|
+
}
|
65
|
+
|
66
|
+
+ li:before {
|
67
|
+
color: $navbar-default-brand-hover-color;
|
68
|
+
}
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
72
|
+
&.navbar-inverse {
|
73
|
+
ul.navbar-breadcrumbs > li {
|
74
|
+
> a {
|
75
|
+
color: $navbar-inverse-brand-hover-color;
|
76
|
+
&:hover,
|
77
|
+
&:focus {
|
78
|
+
color: $navbar-inverse-brand-color;
|
79
|
+
background-color: $navbar-inverse-brand-hover-bg;
|
80
|
+
}
|
81
|
+
}
|
82
|
+
|
83
|
+
&:last-child > a {
|
84
|
+
color: $navbar-inverse-brand-color;
|
85
|
+
&:hover,
|
86
|
+
&:focus {
|
87
|
+
color: $navbar-inverse-brand-hover-color;
|
88
|
+
}
|
89
|
+
}
|
90
|
+
|
91
|
+
+ li:before {
|
92
|
+
color: $navbar-inverse-brand-hover-color;
|
93
|
+
}
|
94
|
+
}
|
95
|
+
}
|
96
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# A concern that can be included into an `ApplicationController` that displays
|
2
|
+
# static relative-linked pages.
|
3
|
+
module OodAppkit::WikiPage
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
# 'included do' causes the included code to be evaluated in the context where
|
7
|
+
# it is included (wiki_controller.rb), rather than being executed in the
|
8
|
+
# module's context (wiki_page.rb).
|
9
|
+
included do
|
10
|
+
# prepend_view_path "docs"
|
11
|
+
end
|
12
|
+
|
13
|
+
# GET /wiki/Home
|
14
|
+
# GET /wiki/uploads/project.zip
|
15
|
+
def show
|
16
|
+
@page = Rails.root.join(params['content_path']).join("#{params['page']}")
|
17
|
+
|
18
|
+
respond_to do |format|
|
19
|
+
format.html
|
20
|
+
format.all { send_file "#{@page}.#{params[:format]}", disposition: 'inline' }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/config/routes.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
Rails.application.routes.draw do
|
2
|
+
# Route for a Rack::Directory middleware app
|
3
|
+
if OodAppkit.routes.files_rack_app
|
4
|
+
mount OodAppkit::FilesRackApp.new => '/files', as: :files
|
5
|
+
end
|
6
|
+
|
7
|
+
# Route for hosting GitHub style wiki
|
8
|
+
if OodAppkit.routes.wiki
|
9
|
+
get 'wiki/*page' => 'ood_appkit/wiki#show', as: :wiki, content_path: 'wiki'
|
10
|
+
end
|
11
|
+
end
|