siteleaf 0.8.3 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +14 -11
- data/bin/siteleaf +4 -3
- data/lib/siteleaf/client.rb +15 -18
- data/lib/siteleaf/entity.rb +1 -1
- data/lib/siteleaf/page.rb +12 -2
- data/lib/siteleaf/post.rb +10 -0
- data/lib/siteleaf/server.rb +1 -1
- data/lib/siteleaf/version.rb +1 -1
- data/lib/siteleaf.rb +7 -7
- data/siteleaf.gemspec +2 -2
- metadata +8 -9
- data/lib/siteleaf/meta.rb +0 -24
data/README.md
CHANGED
@@ -19,27 +19,27 @@ The Siteleaf gem is available for installation on [Rubygems](https://rubygems.or
|
|
19
19
|
Testing sites locally
|
20
20
|
---------------------
|
21
21
|
|
22
|
-
The Siteleaf gem allows you to test and develop your sites locally.
|
22
|
+
The Siteleaf gem allows you to test and develop your sites locally. If using [Pow](http://pow.cx) or [Anvil](http://anvilformac.com), your local website will be automatically set up and can be accessed at `http://yoursite.dev`.
|
23
|
+
|
24
|
+
**(Optional) Install Pow for extra goodness:**
|
25
|
+
|
26
|
+
curl get.pow.cx | sh
|
23
27
|
|
24
28
|
**Set up a new site locally:**
|
25
29
|
|
26
30
|
siteleaf new yoursite.com
|
27
31
|
|
28
|
-
This will create a new theme folder in the directory where you ran this command. It will also create the site for you in your Siteleaf account.
|
32
|
+
This will create a new theme folder called `yoursite.com` in the directory where you ran this command. It will also create the site for you in your Siteleaf account. If you prefer not to create a new directory, run `siteleaf new yoursite.com .` instead.
|
29
33
|
|
30
34
|
**Configure an existing site:**
|
31
35
|
|
32
36
|
siteleaf config yoursite.com
|
33
37
|
|
34
|
-
|
38
|
+
Your site should now be accessible at `http://yoursite.dev`.
|
35
39
|
|
36
|
-
|
40
|
+
*or*
|
37
41
|
|
38
|
-
If you don't
|
39
|
-
|
40
|
-
curl get.pow.cx | sh
|
41
|
-
|
42
|
-
**Or if you don't want to install Pow, local sites can also be manually run:**
|
42
|
+
**If you don't want to install Pow, local sites can also be manually run:**
|
43
43
|
|
44
44
|
siteleaf server
|
45
45
|
|
@@ -49,6 +49,8 @@ In this case, your local site can be accessed at `http://localhost:9292`.
|
|
49
49
|
|
50
50
|
Your local folder should contain at least one template file (`default.html`), for sample themes and documentation see: https://github.com/siteleaf/siteleaf-themes
|
51
51
|
|
52
|
+
For new sites, you will also need to create at least one page or post on https://manage.siteleaf.com in order to preview.
|
53
|
+
|
52
54
|
|
53
55
|
Using this gem in your application
|
54
56
|
----------------------------------
|
@@ -108,9 +110,10 @@ page = Siteleaf::Page.create({
|
|
108
110
|
# get page by id
|
109
111
|
page = Siteleaf::Page.find('519719ddcc85910626000001')
|
110
112
|
|
111
|
-
# update page, add metadata
|
113
|
+
# update page, add metadata, add taxonomy
|
112
114
|
page.title = 'New Title'
|
113
|
-
page.meta = [{"key" => "foo", "value" => "bar"}]
|
115
|
+
page.meta = [ {"key" => "foo", "value" => "bar"} ]
|
116
|
+
post.taxonomy = [ {"key" => "Tags", "values" => ["One","Two","Three"]} ]
|
114
117
|
page.save
|
115
118
|
|
116
119
|
# delete page
|
data/bin/siteleaf
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'siteleaf'
|
4
|
+
require 'fileutils'
|
4
5
|
|
5
6
|
def help
|
6
7
|
'See https://github.com/siteleaf/siteleaf-gem for documentation.'
|
@@ -18,7 +19,7 @@ def auth(re_auth = false)
|
|
18
19
|
password = $stdin.gets.chomp
|
19
20
|
system 'stty echo'
|
20
21
|
|
21
|
-
puts "
|
22
|
+
puts "\nAuthorizing..."
|
22
23
|
|
23
24
|
if auth = Siteleaf::Client.auth(email, password) and auth.is_a?(Hash) and auth.has_key?('api_key')
|
24
25
|
File.open(Siteleaf.settings_file,'w') do|file|
|
@@ -38,12 +39,12 @@ def config(site)
|
|
38
39
|
require 'siteleaf'
|
39
40
|
run Siteleaf::Server.new(:site_id => '#{site.id}')" }
|
40
41
|
|
41
|
-
pow_path =
|
42
|
+
pow_path = File.expand_path('~/.pow')
|
42
43
|
if File.directory?(pow_path)
|
43
44
|
site_no_tld = site.domain.gsub(/\.[a-z]{0,4}$/i,'')
|
44
45
|
site_symlink = "#{pow_path}/#{site_no_tld}"
|
45
46
|
FileUtils.rm(site_symlink) if File.symlink?(site_symlink)
|
46
|
-
FileUtils.symlink(File.
|
47
|
+
FileUtils.symlink(File.expand_path('.'), site_symlink)
|
47
48
|
puts "=> Site configured with Pow, open `http://#{site_no_tld}.dev` to test site locally.\n"
|
48
49
|
else
|
49
50
|
puts "=> Site configured, run `siteleaf server` to test site locally.\n"
|
data/lib/siteleaf/client.rb
CHANGED
@@ -1,20 +1,18 @@
|
|
1
|
-
require '
|
2
|
-
require 'json'
|
1
|
+
require 'httparty'
|
3
2
|
|
4
3
|
module Siteleaf
|
5
4
|
class Client
|
6
5
|
def self.auth(email, password)
|
7
|
-
request = RestClient::Request.new(:url => Siteleaf.api_url('auth'), :method => :post, :user => email, :password => password)
|
8
6
|
begin
|
9
|
-
|
10
|
-
return
|
7
|
+
request = HTTParty.post(Siteleaf.api_url('auth'), {:basic_auth => {:username => email, :password => password}})
|
8
|
+
return request.parsed_response # parse JSON
|
11
9
|
rescue => e
|
12
10
|
return e.inspect # error
|
13
11
|
end
|
14
12
|
end
|
15
13
|
|
16
14
|
def self.get(path, params = nil)
|
17
|
-
self.execute(:get, path,
|
15
|
+
self.execute(:get, path, params)
|
18
16
|
end
|
19
17
|
|
20
18
|
def self.post(path, params)
|
@@ -25,23 +23,22 @@ module Siteleaf
|
|
25
23
|
self.execute(:put, path, params)
|
26
24
|
end
|
27
25
|
|
28
|
-
def self.delete(path)
|
29
|
-
self.execute(:delete, path)
|
26
|
+
def self.delete(path, params = nil)
|
27
|
+
self.execute(:delete, path, params)
|
30
28
|
end
|
31
29
|
|
32
|
-
def self.execute(method, path,
|
30
|
+
def self.execute(method, path, params = nil)
|
33
31
|
Siteleaf.load_settings if !Siteleaf.api_key
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
return JSON.parse(response) # parse JSON
|
32
|
+
begin
|
33
|
+
request = HTTParty.send(method, Siteleaf.api_url(path), {:body => params, :basic_auth => {:username => Siteleaf.api_key, :password => Siteleaf.api_secret}})
|
34
|
+
if request.respond_to?('parsed_response')
|
35
|
+
return request.parsed_response # parse JSON
|
39
36
|
else
|
40
|
-
return
|
37
|
+
return request # raw
|
41
38
|
end
|
42
|
-
|
43
|
-
|
44
|
-
|
39
|
+
rescue => e
|
40
|
+
return e.inspect # error
|
41
|
+
end
|
45
42
|
end
|
46
43
|
end
|
47
44
|
end
|
data/lib/siteleaf/entity.rb
CHANGED
@@ -44,7 +44,7 @@ module Siteleaf
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def attributes=(attributes = {})
|
47
|
-
attributes.each_pair { |k, v|
|
47
|
+
attributes.each_pair { |k, v| self.instance_variable_set("@#{k}", v) }
|
48
48
|
end
|
49
49
|
|
50
50
|
def self.class_name
|
data/lib/siteleaf/page.rb
CHANGED
@@ -4,6 +4,16 @@ module Siteleaf
|
|
4
4
|
attr_accessor :title, :body, :slug, :url, :parent_id, :site_id, :published_at, :meta
|
5
5
|
attr_reader :id, :created_at, :updated_at
|
6
6
|
|
7
|
+
def self.all
|
8
|
+
result = Client.get "#{self.endpoint}", {'include' => ['meta']}
|
9
|
+
result.map { |r| self.new(r) } if result
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.find(id)
|
13
|
+
result = Client.get "#{self.endpoint}/#{id}", {'include' => ['meta']}
|
14
|
+
self.new(result) if result
|
15
|
+
end
|
16
|
+
|
7
17
|
def create_endpoint
|
8
18
|
"sites/#{self.site_id}/pages"
|
9
19
|
end
|
@@ -13,12 +23,12 @@ module Siteleaf
|
|
13
23
|
end
|
14
24
|
|
15
25
|
def posts
|
16
|
-
result = Client.get "pages/#{self.id}/posts"
|
26
|
+
result = Client.get "pages/#{self.id}/posts", {'include' => ['meta','taxonomy']}
|
17
27
|
result.map { |r| Post.new(r) } if result
|
18
28
|
end
|
19
29
|
|
20
30
|
def pages
|
21
|
-
result = Client.get "pages/#{self.id}/pages"
|
31
|
+
result = Client.get "pages/#{self.id}/pages", {'include' => ['meta']}
|
22
32
|
result.map { |r| self.new(r) } if result
|
23
33
|
end
|
24
34
|
|
data/lib/siteleaf/post.rb
CHANGED
@@ -3,6 +3,16 @@ module Siteleaf
|
|
3
3
|
|
4
4
|
attr_accessor :taxonomy
|
5
5
|
|
6
|
+
def self.all
|
7
|
+
result = Client.get "#{self.endpoint}", {'include' => ['meta','taxonomy']}
|
8
|
+
result.map { |r| self.new(r) } if result
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.find(id)
|
12
|
+
result = Client.get "#{self.endpoint}/#{id}", {'include' => ['meta','taxonomy']}
|
13
|
+
self.new(result) if result
|
14
|
+
end
|
15
|
+
|
6
16
|
def create_endpoint
|
7
17
|
"pages/#{self.parent_id}/posts"
|
8
18
|
end
|
data/lib/siteleaf/server.rb
CHANGED
@@ -42,7 +42,7 @@ module Siteleaf
|
|
42
42
|
Rack::File.new(Dir.pwd).call(env)
|
43
43
|
else
|
44
44
|
template_data = nil
|
45
|
-
is_asset =
|
45
|
+
is_asset = /^(?!(sitemap|feed)\.xml)(assets|.*\.)/.match(path)
|
46
46
|
|
47
47
|
if is_asset
|
48
48
|
if asset = site.resolve(url) and asset_url = asset['file']['url']
|
data/lib/siteleaf/version.rb
CHANGED
data/lib/siteleaf.rb
CHANGED
@@ -8,25 +8,25 @@ require 'siteleaf/entity'
|
|
8
8
|
require 'siteleaf/site'
|
9
9
|
require 'siteleaf/page'
|
10
10
|
require 'siteleaf/post'
|
11
|
-
require 'siteleaf/meta'
|
12
11
|
require 'siteleaf/user'
|
12
|
+
require 'rbconfig'
|
13
13
|
|
14
14
|
module Siteleaf
|
15
15
|
|
16
16
|
@api_base = 'https://api.siteleaf.com/v1'
|
17
|
-
|
17
|
+
|
18
18
|
class << self
|
19
19
|
attr_accessor :api_key, :api_secret, :api_base
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
def self.api_url(url='')
|
23
23
|
"#{@api_base}/#{url}"
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
def self.settings_file
|
27
|
-
|
27
|
+
File.expand_path('~/.siteleaf')
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
def self.load_settings
|
31
31
|
if File.exist?(self.settings_file)
|
32
32
|
config = File.open(self.settings_file) do|file|
|
@@ -36,5 +36,5 @@ module Siteleaf
|
|
36
36
|
self.api_secret = config[:api_secret] if config.has_key?(:api_secret)
|
37
37
|
end
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
end
|
data/siteleaf.gemspec
CHANGED
@@ -14,8 +14,8 @@ Gem::Specification.new do |gem|
|
|
14
14
|
|
15
15
|
gem.required_ruby_version = '>= 1.8'
|
16
16
|
|
17
|
-
gem.add_dependency '
|
18
|
-
gem.add_dependency '
|
17
|
+
gem.add_dependency 'json', '~> 1.7.7'
|
18
|
+
gem.add_dependency 'httparty'
|
19
19
|
gem.add_dependency 'rack'
|
20
20
|
|
21
21
|
gem.files = `git ls-files`.split($/)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: siteleaf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,26 +9,26 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-06-
|
12
|
+
date: 2013-06-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: json
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 1.7.7
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
29
|
+
version: 1.7.7
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
31
|
+
name: httparty
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
@@ -76,7 +76,6 @@ files:
|
|
76
76
|
- lib/siteleaf.rb
|
77
77
|
- lib/siteleaf/client.rb
|
78
78
|
- lib/siteleaf/entity.rb
|
79
|
-
- lib/siteleaf/meta.rb
|
80
79
|
- lib/siteleaf/page.rb
|
81
80
|
- lib/siteleaf/post.rb
|
82
81
|
- lib/siteleaf/server.rb
|
data/lib/siteleaf/meta.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
module Siteleaf
|
2
|
-
class Meta < Entity
|
3
|
-
|
4
|
-
attr_accessor :key, :value, :page_id, :post_id
|
5
|
-
attr_reader :id
|
6
|
-
|
7
|
-
def create_endpoint
|
8
|
-
if self.page_id
|
9
|
-
"pages/#{self.page_id}/meta"
|
10
|
-
elsif self.post_id
|
11
|
-
"posts/#{self.post_id}/meta"
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def post
|
16
|
-
Post.find(self.post_id) if self.post_id
|
17
|
-
end
|
18
|
-
|
19
|
-
def page
|
20
|
-
Page.find(self.page_id) if self.page_id
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
end
|