octodmin 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.bowerrc +3 -0
- data/.gitignore +24 -0
- data/.rspec +2 -0
- data/.travis.yml +9 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile +17 -0
- data/LICENSE.md +22 -0
- data/README.md +117 -0
- data/Rakefile +38 -0
- data/_config.yml +27 -0
- data/_deploy.yml +13 -0
- data/app/.DS_Store +0 -0
- data/app/assets/.DS_Store +0 -0
- data/app/assets/javascripts/.DS_Store +0 -0
- data/app/assets/javascripts/app.js.coffee +13 -0
- data/app/assets/javascripts/components/header.js.cjsx +69 -0
- data/app/assets/javascripts/components/posts.js.cjsx +309 -0
- data/app/assets/javascripts/components/router.js.cjsx +56 -0
- data/app/assets/stylesheets/.DS_Store +0 -0
- data/app/assets/stylesheets/app.scss +75 -0
- data/app/config/environment.rb +7 -0
- data/app/config/routes.rb +19 -0
- data/app/config/sprockets.rb +36 -0
- data/app/controllers/deploys/create.rb +20 -0
- data/app/controllers/frontend/index.rb +8 -0
- data/app/controllers/posts/create.rb +18 -0
- data/app/controllers/posts/destroy.rb +14 -0
- data/app/controllers/posts/index.rb +13 -0
- data/app/controllers/posts/restore.rb +14 -0
- data/app/controllers/posts/revert.rb +14 -0
- data/app/controllers/posts/show.rb +13 -0
- data/app/controllers/posts/update.rb +23 -0
- data/app/controllers/site/show.rb +12 -0
- data/app/controllers/syncs/create.rb +62 -0
- data/app/controllers/version/show.rb +12 -0
- data/app/octodmin.rb +56 -0
- data/app/public/.DS_Store +0 -0
- data/app/public/assets/app.css +7960 -0
- data/app/public/assets/app.css.gz +7960 -0
- data/app/public/assets/app.js +39181 -0
- data/app/public/assets/app.js.gz +39181 -0
- data/app/public/assets/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
- data/app/public/assets/bootstrap/dist/fonts/glyphicons-halflings-regular.eot.gz +0 -0
- data/app/public/assets/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +288 -0
- data/app/public/assets/bootstrap/dist/fonts/glyphicons-halflings-regular.svg.gz +288 -0
- data/app/public/assets/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/app/public/assets/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf.gz +0 -0
- data/app/public/assets/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
- data/app/public/assets/bootstrap/dist/fonts/glyphicons-halflings-regular.woff.gz +0 -0
- data/app/public/assets/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/app/public/assets/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2.gz +0 -0
- data/app/public/assets/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
- data/app/public/assets/bootstrap/fonts/glyphicons-halflings-regular.eot.gz +0 -0
- data/app/public/assets/bootstrap/fonts/glyphicons-halflings-regular.svg +288 -0
- data/app/public/assets/bootstrap/fonts/glyphicons-halflings-regular.svg.gz +288 -0
- data/app/public/assets/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/app/public/assets/bootstrap/fonts/glyphicons-halflings-regular.ttf.gz +0 -0
- data/app/public/assets/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
- data/app/public/assets/bootstrap/fonts/glyphicons-halflings-regular.woff.gz +0 -0
- data/app/public/assets/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/app/public/assets/bootstrap/fonts/glyphicons-halflings-regular.woff2.gz +0 -0
- data/app/public/assets/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
- data/app/public/assets/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.eot.gz +0 -0
- data/app/public/assets/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.svg +288 -0
- data/app/public/assets/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.svg.gz +288 -0
- data/app/public/assets/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
- data/app/public/assets/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf.gz +0 -0
- data/app/public/assets/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
- data/app/public/assets/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.woff.gz +0 -0
- data/app/public/assets/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
- data/app/public/assets/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2.gz +0 -0
- data/app/public/assets/bootswatch/fonts/glyphicons-halflings-regular.eot +0 -0
- data/app/public/assets/bootswatch/fonts/glyphicons-halflings-regular.eot.gz +0 -0
- data/app/public/assets/bootswatch/fonts/glyphicons-halflings-regular.svg +288 -0
- data/app/public/assets/bootswatch/fonts/glyphicons-halflings-regular.svg.gz +288 -0
- data/app/public/assets/bootswatch/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/app/public/assets/bootswatch/fonts/glyphicons-halflings-regular.ttf.gz +0 -0
- data/app/public/assets/bootswatch/fonts/glyphicons-halflings-regular.woff +0 -0
- data/app/public/assets/bootswatch/fonts/glyphicons-halflings-regular.woff.gz +0 -0
- data/app/public/assets/bootswatch/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/app/public/assets/bootswatch/fonts/glyphicons-halflings-regular.woff2.gz +0 -0
- data/app/public/assets/bootswatch-dist/fonts/glyphicons-halflings-regular.eot +0 -0
- data/app/public/assets/bootswatch-dist/fonts/glyphicons-halflings-regular.eot.gz +0 -0
- data/app/public/assets/bootswatch-dist/fonts/glyphicons-halflings-regular.svg +229 -0
- data/app/public/assets/bootswatch-dist/fonts/glyphicons-halflings-regular.svg.gz +229 -0
- data/app/public/assets/bootswatch-dist/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/app/public/assets/bootswatch-dist/fonts/glyphicons-halflings-regular.ttf.gz +0 -0
- data/app/public/assets/bootswatch-dist/fonts/glyphicons-halflings-regular.woff +0 -0
- data/app/public/assets/bootswatch-dist/fonts/glyphicons-halflings-regular.woff.gz +0 -0
- data/app/public/assets/fontawesome/fonts/fontawesome-webfont.eot +0 -0
- data/app/public/assets/fontawesome/fonts/fontawesome-webfont.eot.gz +0 -0
- data/app/public/assets/fontawesome/fonts/fontawesome-webfont.svg +565 -0
- data/app/public/assets/fontawesome/fonts/fontawesome-webfont.svg.gz +565 -0
- data/app/public/assets/fontawesome/fonts/fontawesome-webfont.ttf +0 -0
- data/app/public/assets/fontawesome/fonts/fontawesome-webfont.ttf.gz +0 -0
- data/app/public/assets/fontawesome/fonts/fontawesome-webfont.woff +0 -0
- data/app/public/assets/fontawesome/fonts/fontawesome-webfont.woff.gz +0 -0
- data/app/public/assets/fontawesome/fonts/fontawesome-webfont.woff2 +0 -0
- data/app/public/assets/fontawesome/fonts/fontawesome-webfont.woff2.gz +0 -0
- data/app/public/assets/manifest.json +1 -0
- data/app/templates/application.html.erb +13 -0
- data/app/templates/frontend/index.html.erb +1 -0
- data/app/views/application_layout.rb +5 -0
- data/app/views/deploys/create.rb +10 -0
- data/app/views/frontend/index.rb +5 -0
- data/app/views/posts/create.rb +10 -0
- data/app/views/posts/destroy.rb +10 -0
- data/app/views/posts/index.rb +10 -0
- data/app/views/posts/restore.rb +10 -0
- data/app/views/posts/revert.rb +10 -0
- data/app/views/posts/show.rb +10 -0
- data/app/views/posts/update.rb +10 -0
- data/app/views/site/show.rb +10 -0
- data/app/views/syncs/create.rb +10 -0
- data/app/views/version/show.rb +10 -0
- data/bower.json +16 -0
- data/config.ru +5 -0
- data/lib/octodmin/app.rb +2 -0
- data/lib/octodmin/post.rb +161 -0
- data/lib/octodmin/site.rb +61 -0
- data/lib/octodmin/version.rb +3 -0
- data/lib/octodmin.rb +7 -0
- data/octodmin.gemspec +24 -0
- data/sample/.gitignore +2 -0
- data/sample/_includes/footer.html +55 -0
- data/sample/_includes/head.html +12 -0
- data/sample/_includes/header.html +27 -0
- data/sample/_layouts/default.html +20 -0
- data/sample/_layouts/page.html +14 -0
- data/sample/_layouts/post.html +15 -0
- data/sample/_posts/2015-01-29-welcome-to-jekyll.markdown +25 -0
- data/sample/_posts/2015-01-30-test.markdown +10 -0
- data/sample/_sass/_base.scss +204 -0
- data/sample/_sass/_layout.scss +236 -0
- data/sample/_sass/_syntax-highlighting.scss +67 -0
- data/sample/_templates/draft +4 -0
- data/sample/_templates/page +4 -0
- data/sample/_templates/post +8 -0
- data/sample/about.md +11 -0
- data/sample/css/main.scss +52 -0
- data/sample/feed.xml +30 -0
- data/sample/index.html +23 -0
- data/spec/api/deploys_spec.rb +36 -0
- data/spec/api/posts_spec.rb +411 -0
- data/spec/api/site_spec.rb +18 -0
- data/spec/api/syncs_spec.rb +81 -0
- data/spec/api/version_spec.rb +14 -0
- data/spec/frontend/assets_spec.rb +23 -0
- data/spec/frontend/home_spec.rb +16 -0
- data/spec/spec_helper.rb +31 -0
- data/tmp/.keep +0 -0
- metadata +259 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 68161108fbd0f208b9fe379eaefc1638d8a07a40
|
|
4
|
+
data.tar.gz: 308e09d4fd3591b47d7a7621837aa12543e6f606
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: a3c62874c57613363f2d4ae5e8bb8e63892ffd50a91e853d2012a19c9a2db48ced8388fc1d8cd8467904df0c89e7c1909048315046cb0b4719af5b7afd57d138
|
|
7
|
+
data.tar.gz: 11f6a5edc1cf7e8b057b45dbe9ab9581b00f2755c30e5c5cb5d60c679932d58e323c171bdeafd471dcf8a8b8e939a2508b81e9d206316cb82fa85caf69df7468
|
data/.bowerrc
ADDED
data/.gitignore
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
*.gem
|
|
2
|
+
*.rbc
|
|
3
|
+
.bundle
|
|
4
|
+
.config
|
|
5
|
+
.yardoc
|
|
6
|
+
Gemfile.lock
|
|
7
|
+
InstalledFiles
|
|
8
|
+
_yardoc
|
|
9
|
+
coverage
|
|
10
|
+
doc/
|
|
11
|
+
lib/bundler/man
|
|
12
|
+
pkg
|
|
13
|
+
rdoc
|
|
14
|
+
spec/reports
|
|
15
|
+
tmp
|
|
16
|
+
.greenbar
|
|
17
|
+
.powrc
|
|
18
|
+
.ruby-gemset
|
|
19
|
+
.ruby-version
|
|
20
|
+
app/public
|
|
21
|
+
bower_components
|
|
22
|
+
_site
|
|
23
|
+
.sass-cache
|
|
24
|
+
.deploy
|
data/.rspec
ADDED
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
source "https://rubygems.org"
|
|
2
|
+
gemspec
|
|
3
|
+
|
|
4
|
+
gem "rake", "~> 10.0"
|
|
5
|
+
gem "sprockets", "~> 3.0.0.beta"
|
|
6
|
+
gem "bower", "~> 0.0.2"
|
|
7
|
+
gem "sprockets-standalone", github: "krasnoukhov/sprockets-standalone"
|
|
8
|
+
gem "coffee-react", "~> 2.1.0"
|
|
9
|
+
gem "lotusrb", github: "lotus/lotus"
|
|
10
|
+
|
|
11
|
+
group :test do
|
|
12
|
+
gem "simplecov", "~> 0.9.0", require: false
|
|
13
|
+
gem "coveralls", "~> 0.7.0", require: false
|
|
14
|
+
gem "rspec", "~> 3.1.0"
|
|
15
|
+
gem "json_spec", "~> 1.1.0"
|
|
16
|
+
gem "rack-test", "~> 0.6.0"
|
|
17
|
+
end
|
data/LICENSE.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Copyright (c) 2014 Dmitry Krasnoukhov
|
|
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,117 @@
|
|
|
1
|
+
# Octodmin
|
|
2
|
+
|
|
3
|
+
Content management for Jekyll blogs
|
|
4
|
+
|
|
5
|
+
[](http://badge.fury.io/rb/octodmin)
|
|
6
|
+
[](http://travis-ci.org/krasnoukhov/octodmin?branch=master)
|
|
7
|
+
[](https://coveralls.io/r/krasnoukhov/octodmin?branch=master)
|
|
8
|
+
[](https://codeclimate.com/github/krasnoukhov/octodmin)
|
|
9
|
+
|
|
10
|
+

|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
Add this line to your Jekyll project's Gemfile:
|
|
15
|
+
|
|
16
|
+
```ruby
|
|
17
|
+
gem 'octodmin', '~> 0.1.0'
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
And then execute:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
$ bundle
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Usage
|
|
27
|
+
|
|
28
|
+
Octodmin assumes that there is a `_config.yml` with Jekyll
|
|
29
|
+
configuration.
|
|
30
|
+
|
|
31
|
+
Add `config.ru` to your project:
|
|
32
|
+
|
|
33
|
+
```ruby
|
|
34
|
+
require "octodmin/app"
|
|
35
|
+
run Octodmin::App.new(__dir__)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Run it as a Rack application:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
$ rackup
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Configuration
|
|
45
|
+
|
|
46
|
+
Octodmin can be configured using `_config.yml`. For example:
|
|
47
|
+
|
|
48
|
+
```yaml
|
|
49
|
+
# Octodmin settings
|
|
50
|
+
octodmin:
|
|
51
|
+
transliterate: ukrainian
|
|
52
|
+
deploys:
|
|
53
|
+
- config_file: _deploy.yml
|
|
54
|
+
front_matter:
|
|
55
|
+
custom:
|
|
56
|
+
type: "text"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Valid options:
|
|
60
|
+
|
|
61
|
+
`transliterate`: use any of [babosa](https://github.com/norman/babosa#locale-sensitive-transliteration-with-support-for-many-languages)'s
|
|
62
|
+
languages for slug transliteration. Default is `latin`
|
|
63
|
+
|
|
64
|
+
`deploys`: if you use `octopress-deploy`, specify your deploy configuration
|
|
65
|
+
file to get a "Deploy" button in Octodmin.
|
|
66
|
+
|
|
67
|
+
`front_matter`: if you use custom front matter attributes, specify all
|
|
68
|
+
of them to extend the edit form with corresponding inputs.
|
|
69
|
+
|
|
70
|
+
Please note that Octodmin uses Octopress internally, so make sure you configure it
|
|
71
|
+
accordingly. For example:
|
|
72
|
+
|
|
73
|
+
```yaml
|
|
74
|
+
# Octopress
|
|
75
|
+
post_ext: markdown
|
|
76
|
+
post_layout: post
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Please note that Octodmin uses Octopress internally, so make sure you
|
|
80
|
+
there is proper config, for example:
|
|
81
|
+
|
|
82
|
+
```yaml
|
|
83
|
+
# Octopress
|
|
84
|
+
post_ext: markdown
|
|
85
|
+
post_layout: post
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Deployment
|
|
89
|
+
|
|
90
|
+
Since Octodmin is a simple Rack app, use your favorite Ruby application server.
|
|
91
|
+
For example, add `puma` to Gemfile, run `bundle`, and then `rackup`.
|
|
92
|
+
That's it.
|
|
93
|
+
|
|
94
|
+
When deploying Octodmin to a remote server, make sure you're able to run
|
|
95
|
+
`git pull`, `git push` and `octopress deploy` (if needed) successfully
|
|
96
|
+
in the shell of your remote user.
|
|
97
|
+
|
|
98
|
+
## Development and testing
|
|
99
|
+
|
|
100
|
+
You would need `npm` and `bower`. Run `bower install` to install asset
|
|
101
|
+
dependencies.
|
|
102
|
+
|
|
103
|
+
Run `rackup` to start the development server.
|
|
104
|
+
|
|
105
|
+
Run `rspec` to run tests.
|
|
106
|
+
|
|
107
|
+
## Contributing
|
|
108
|
+
|
|
109
|
+
1. Fork it
|
|
110
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
111
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
112
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
|
113
|
+
5. Create new Pull Request
|
|
114
|
+
|
|
115
|
+
## LICENSE
|
|
116
|
+
|
|
117
|
+
The MIT License
|
data/Rakefile
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require "bundler/setup"
|
|
2
|
+
require "fileutils"
|
|
3
|
+
require "rspec/core/rake_task"
|
|
4
|
+
require "bundler/gem_tasks"
|
|
5
|
+
require "sprockets/standalone"
|
|
6
|
+
|
|
7
|
+
# Test tasks
|
|
8
|
+
RSpec::Core::RakeTask.new(:spec)
|
|
9
|
+
|
|
10
|
+
namespace :spec do
|
|
11
|
+
task coverage: :"assets:remove" do
|
|
12
|
+
ENV["COVERAGE"] = "true"
|
|
13
|
+
Rake::Task["spec"].invoke
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
task default: :spec
|
|
18
|
+
|
|
19
|
+
# Release tasks
|
|
20
|
+
Sprockets::Standalone::RakeTask.new(:assets) do |task, sprockets|
|
|
21
|
+
require_relative "app/config/sprockets"
|
|
22
|
+
|
|
23
|
+
task.assets = %w(app.js app.css *.eot *.svg *.ttf *.woff *woff2)
|
|
24
|
+
task.sources = %w(app/assets)
|
|
25
|
+
task.output = "app/public/assets"
|
|
26
|
+
task.compress = true
|
|
27
|
+
task.digest = false
|
|
28
|
+
task.environment = Octodmin.sprockets
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
namespace :assets do
|
|
32
|
+
task :remove do
|
|
33
|
+
FileUtils.rm_r("./tmp/sprockets", force: true)
|
|
34
|
+
FileUtils.rm_r("./app/public/assets", force: true)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
Rake::Task["build"].enhance([:"assets:remove", :"assets:compile"])
|
data/_config.yml
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Site settings
|
|
2
|
+
source: sample
|
|
3
|
+
title: Your awesome title
|
|
4
|
+
email: your-email@domain.com
|
|
5
|
+
description: > # this means to ignore newlines until "baseurl:"
|
|
6
|
+
Write an awesome description for your new site here. You can edit this
|
|
7
|
+
line in _config.yml. It will appear in your document head meta (for
|
|
8
|
+
Google search results) and in your feed.xml site description.
|
|
9
|
+
baseurl: "/octodmin" # the subpath of your site, e.g. /blog/
|
|
10
|
+
url: "http://krasnoukhov.github.io" # the base hostname & protocol for your site
|
|
11
|
+
twitter_username: jekyllrb
|
|
12
|
+
github_username: jekyll
|
|
13
|
+
|
|
14
|
+
# Build settings
|
|
15
|
+
markdown: kramdown
|
|
16
|
+
|
|
17
|
+
# Octopress settings
|
|
18
|
+
post_ext: markdown
|
|
19
|
+
|
|
20
|
+
# Octodmin settings
|
|
21
|
+
octodmin:
|
|
22
|
+
transliterate: ukrainian
|
|
23
|
+
deploys:
|
|
24
|
+
- config_file: _deploy.yml
|
|
25
|
+
front_matter:
|
|
26
|
+
custom:
|
|
27
|
+
type: "text"
|
data/_deploy.yml
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
method: git # How do you want to deploy? git, rsync or s3.
|
|
2
|
+
site_dir: _site # Location of your static site files.
|
|
3
|
+
|
|
4
|
+
git_url: git@github.com:krasnoukhov/octodmin.git # remote repository url, e.g. git@github.com:username/repo_name
|
|
5
|
+
|
|
6
|
+
# Note on git_branch:
|
|
7
|
+
# If using GitHub project pages, set the branch to 'gh-pages'.
|
|
8
|
+
# For GitHub user/organization pages or Heroku, set the branch to 'master'.
|
|
9
|
+
#
|
|
10
|
+
git_branch: gh-pages # Git branch where static site files are commited
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# remote_path: # Destination directory
|
data/app/.DS_Store
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#= require jquery
|
|
2
|
+
#= require jquery-serialize-object
|
|
3
|
+
#= require bootstrap
|
|
4
|
+
#= require bootstrap-markdown
|
|
5
|
+
#= require spin.js/spin.js
|
|
6
|
+
#= require react
|
|
7
|
+
#= require react-loader
|
|
8
|
+
#= require react-router
|
|
9
|
+
#= require momentjs/moment
|
|
10
|
+
|
|
11
|
+
#= require components/header
|
|
12
|
+
#= require components/posts
|
|
13
|
+
#= require components/router
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# @cjsx React.DOM
|
|
2
|
+
|
|
3
|
+
@Header = React.createClass(
|
|
4
|
+
propTypes:
|
|
5
|
+
site: React.PropTypes.object.isRequired
|
|
6
|
+
|
|
7
|
+
getInitialState: ->
|
|
8
|
+
{ alert: null, success: null, loading: false }
|
|
9
|
+
|
|
10
|
+
handleSync: ->
|
|
11
|
+
return if @state.loading
|
|
12
|
+
@setState(loading: true)
|
|
13
|
+
$.post("/api/syncs").always(@handleResponse).done(@handleSyncSuccess).fail(@handleError)
|
|
14
|
+
|
|
15
|
+
handleDeploy: ->
|
|
16
|
+
return if @state.loading
|
|
17
|
+
@setState(loading: true)
|
|
18
|
+
$.post("/api/deploys").always(@handleResponse).done(@handleDeploySuccess).fail(@handleError)
|
|
19
|
+
|
|
20
|
+
handleResponse: ->
|
|
21
|
+
@setState(loading: false)
|
|
22
|
+
|
|
23
|
+
handleSyncSuccess: (response) ->
|
|
24
|
+
@setState(success: response.syncs.join("\n").replace(/\n/g, "<br>"))
|
|
25
|
+
setTimeout(@removeSuccess, 5000)
|
|
26
|
+
$(document).trigger("fetchPosts")
|
|
27
|
+
|
|
28
|
+
handleDeploySuccess: (response) ->
|
|
29
|
+
@setState(success: response.deploys.join("\n"))
|
|
30
|
+
setTimeout(@removeSuccess, 5000)
|
|
31
|
+
$(document).trigger("fetchPosts")
|
|
32
|
+
|
|
33
|
+
handleError: (error) ->
|
|
34
|
+
@setState(alert: error.responseJSON?.errors.join("\n").replace(/\n/g, "<br>"))
|
|
35
|
+
|
|
36
|
+
removeSuccess: ->
|
|
37
|
+
@setState(success: null) if @isMounted()
|
|
38
|
+
|
|
39
|
+
handleBlur: ->
|
|
40
|
+
@setState(alert: null, success: null) if @isMounted()
|
|
41
|
+
|
|
42
|
+
render: ->
|
|
43
|
+
<div>
|
|
44
|
+
<nav className="navbar navbar-default">
|
|
45
|
+
<div className="container-fluid">
|
|
46
|
+
<div className="navbar-header">
|
|
47
|
+
<Link to="app" className="navbar-brand"><i className="fa fa-fw fa-cog"></i> {@props.site.title}</Link>
|
|
48
|
+
</div>
|
|
49
|
+
<div className="navbar-right">
|
|
50
|
+
<button className="btn btn-primary navbar-btn #{'disabled' if @state.loading}" onClick={@handleSync} onBlur={@handleBlur}>
|
|
51
|
+
<i className="fa fa-fw fa-refresh"></i> Sync
|
|
52
|
+
</button>
|
|
53
|
+
{if @props.site.octodmin.deploys
|
|
54
|
+
deploy = @props.site.octodmin.deploys[0]
|
|
55
|
+
|
|
56
|
+
<button className="btn btn-primary navbar-btn #{'disabled' if @state.loading}" onClick={@handleDeploy} onBlur={@handleBlur}>
|
|
57
|
+
<i className="fa fa-fw fa-ship"></i> Deploy
|
|
58
|
+
</button>
|
|
59
|
+
}
|
|
60
|
+
<a href={@props.site.url} target="_blank" className="btn btn-primary navbar-btn">
|
|
61
|
+
<i className="fa fa-fw fa-external-link"></i> Site
|
|
62
|
+
</a>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
</nav>
|
|
66
|
+
{<div className="alert alert-danger"><span dangerouslySetInnerHTML={{__html: @state.alert }}></span></div> if @state.alert}
|
|
67
|
+
{<div className="alert alert-success"><span dangerouslySetInnerHTML={{__html: @state.success }}></span></div> if @state.success}
|
|
68
|
+
</div>
|
|
69
|
+
)
|