nationbuilder-rb 1.0.0 → 1.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 +4 -4
- data/CHANGELOG.md +2 -0
- data/README.md +16 -2
- data/VERSION +1 -1
- data/lib/nationbuilder.rb +1 -0
- data/lib/nationbuilder/client.rb +16 -12
- data/lib/nationbuilder/paginator.rb +22 -0
- data/nationbuilder-rb.gemspec +8 -3
- data/spec/fixtures/delete.yml +20 -20
- data/spec/fixtures/paginated_get_page2.yml +205 -0
- data/spec/fixtures/paginated_get_page3.yml +299 -0
- data/spec/fixtures/parametered_get.yml +46 -33
- data/spec/fixtures/parametered_post.yml +27 -21
- data/spec/nationbuilder_client_spec.rb +9 -13
- data/spec/nationbuilder_paginator_spec.rb +44 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 478eaf49468a14664586855b0105a5c0781b9e82
|
4
|
+
data.tar.gz: be6334a496d0b620c74c357515fb026224935594
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3f42b168b4b0ce526e17ef7462c1666e27e57b05822c005e3f97fd5ca4832041de1884a3c6cbd11656bf89d1d02d874fd66e5dd57ceb533d9efbc057b7f6652
|
7
|
+
data.tar.gz: a1b4b4fef2cad1592d178c50cc91f385e69b1b9828c7037bdbb963020afb5469129b4ed1f3e23c4f9f98d383ccab76b564d20ec1bf06c0d3daa85efc3fd03c69
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -35,8 +35,8 @@ client = NationBuilder::Client.new('my_nation_name', 'my_api_token')
|
|
35
35
|
|
36
36
|
## Calling the API
|
37
37
|
|
38
|
-
|
39
|
-
`nationbuilder-rb
|
38
|
+
The primary method for calling the NationBuilder API in
|
39
|
+
`nationbuilder-rb` is the `#call` method, used on a client. The
|
40
40
|
`#call` method takes three parameters: the name of the endpoint,
|
41
41
|
the name of the method, and an optional hash containing arguments
|
42
42
|
for the method.
|
@@ -69,6 +69,20 @@ client.call(:people, :create, params)
|
|
69
69
|
client.call(:people, :destroy, id: 15)
|
70
70
|
```
|
71
71
|
|
72
|
+
## Pagination
|
73
|
+
|
74
|
+
A call can be paginated by creating a new instance of the `Paginator` class. This takes two parameters: the client and the response of the call to be paginated.
|
75
|
+
|
76
|
+
```ruby
|
77
|
+
response = client.call(:people, :index)
|
78
|
+
|
79
|
+
paginated = Paginator.new(client, response)
|
80
|
+
page1 = paginated
|
81
|
+
page2 = page1.next
|
82
|
+
page3 = page2.next
|
83
|
+
```
|
84
|
+
Methods `#next` and `#prev` return the results of the next or previous page of results, nil if none. `#next?` and `#prev?` return the path to the next or prev page, or nil if none. The results of a page can be accessed through `.body` - in the above example, `page1.body` returns the same hash as `response`.
|
85
|
+
|
72
86
|
## Documentation
|
73
87
|
|
74
88
|
This gem includes a command line utility that prints out
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.1.0
|
data/lib/nationbuilder.rb
CHANGED
data/lib/nationbuilder/client.rb
CHANGED
@@ -31,13 +31,8 @@ class NationBuilder::Client
|
|
31
31
|
@base_url.gsub(':nation_name', @nation_name)
|
32
32
|
end
|
33
33
|
|
34
|
-
def
|
35
|
-
|
36
|
-
method = endpoint[method_name]
|
37
|
-
nonmethod_args = method.nonmethod_args(args)
|
38
|
-
method_args = method.method_args(args)
|
39
|
-
method.validate_args(method_args)
|
40
|
-
url = NationBuilder::URL.new(base_url).generate_url(method.uri, method_args)
|
34
|
+
def raw_call(path, method, body = {}, args = {})
|
35
|
+
url = NationBuilder::URL.new(base_url).generate_url(path, args)
|
41
36
|
|
42
37
|
request_args = {
|
43
38
|
header: {
|
@@ -49,17 +44,26 @@ class NationBuilder::Client
|
|
49
44
|
}
|
50
45
|
}
|
51
46
|
|
52
|
-
if method
|
53
|
-
request_args[:query].merge!(
|
47
|
+
if method == :get
|
48
|
+
request_args[:query].merge!(body)
|
54
49
|
else
|
55
|
-
|
56
|
-
request_args[:body] = JSON(
|
50
|
+
body[:access_token] = @api_key
|
51
|
+
request_args[:body] = JSON(body)
|
57
52
|
end
|
58
53
|
|
59
|
-
set_response(HTTPClient.send(method
|
54
|
+
set_response(HTTPClient.send(method, url, request_args))
|
60
55
|
return parse_response_body(response)
|
61
56
|
end
|
62
57
|
|
58
|
+
def call(endpoint_name, method_name, args={})
|
59
|
+
endpoint = self[endpoint_name]
|
60
|
+
method = endpoint[method_name]
|
61
|
+
nonmethod_args = method.nonmethod_args(args)
|
62
|
+
method_args = method.method_args(args)
|
63
|
+
method.validate_args(method_args)
|
64
|
+
return raw_call(method.uri, method.http_method, nonmethod_args, args)
|
65
|
+
end
|
66
|
+
|
63
67
|
def set_response(value)
|
64
68
|
Thread.current[:nationbuilder_rb_response] = value
|
65
69
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class Paginator
|
2
|
+
attr_reader :body
|
3
|
+
|
4
|
+
def initialize(client, body)
|
5
|
+
@client = client
|
6
|
+
@body = body
|
7
|
+
end
|
8
|
+
|
9
|
+
[:next, :prev].each do |page_type|
|
10
|
+
define_method(:"#{page_type}?") do
|
11
|
+
@body[page_type.to_s]
|
12
|
+
end
|
13
|
+
|
14
|
+
define_method(:"#{page_type}") do
|
15
|
+
return nil unless send(:"#{page_type}?")
|
16
|
+
path = send(:"#{page_type}?").split('/api/v1').last
|
17
|
+
results = @client.raw_call(path, :get)
|
18
|
+
return Paginator.new(@client, results)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
data/nationbuilder-rb.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: nationbuilder-rb 1.
|
5
|
+
# stub: nationbuilder-rb 1.1.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "nationbuilder-rb"
|
9
|
-
s.version = "1.
|
9
|
+
s.version = "1.1.0"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["David Huie"]
|
14
|
-
s.date = "2015-
|
14
|
+
s.date = "2015-02-10"
|
15
15
|
s.description = "A Ruby client to the NationBuilder API"
|
16
16
|
s.email = "david@nationbuilder.com"
|
17
17
|
s.executables = ["nbdoc"]
|
@@ -25,6 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
".ruby-gemset",
|
26
26
|
".ruby-version",
|
27
27
|
".travis.yml",
|
28
|
+
"CHANGELOG.md",
|
28
29
|
"Gemfile",
|
29
30
|
"Gemfile.lock",
|
30
31
|
"LICENSE.txt",
|
@@ -37,14 +38,18 @@ Gem::Specification.new do |s|
|
|
37
38
|
"lib/nationbuilder/client.rb",
|
38
39
|
"lib/nationbuilder/endpoint.rb",
|
39
40
|
"lib/nationbuilder/method.rb",
|
41
|
+
"lib/nationbuilder/paginator.rb",
|
40
42
|
"lib/nationbuilder/parameter.rb",
|
41
43
|
"lib/nationbuilder/spec_parser.rb",
|
42
44
|
"lib/nationbuilder/url.rb",
|
43
45
|
"nationbuilder-rb.gemspec",
|
44
46
|
"spec/fixtures/delete.yml",
|
47
|
+
"spec/fixtures/paginated_get_page2.yml",
|
48
|
+
"spec/fixtures/paginated_get_page3.yml",
|
45
49
|
"spec/fixtures/parametered_get.yml",
|
46
50
|
"spec/fixtures/parametered_post.yml",
|
47
51
|
"spec/nationbuilder_client_spec.rb",
|
52
|
+
"spec/nationbuilder_paginator_spec.rb",
|
48
53
|
"spec/spec_helper.rb"
|
49
54
|
]
|
50
55
|
s.homepage = "http://github.com/3dna/nationbuilder-rb"
|
data/spec/fixtures/delete.yml
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: delete
|
5
|
-
uri: https://
|
5
|
+
uri: https://organizeralexandreschmitt.nationbuilder.com/api/v1/people/21234?access_token=53920a524356034a065515a37650df2bd295971975d5742b9daa50eb8c7404d5
|
6
6
|
body:
|
7
7
|
encoding: UTF-8
|
8
|
-
string:
|
8
|
+
string: "{\"access_token\":\"53920a524356034a065515a37650df2bd295971975d5742b9daa50eb8c7404d5\"}"
|
9
9
|
headers:
|
10
10
|
User-Agent:
|
11
|
-
- HTTPClient/1.0 (2.4.0, ruby 2.
|
11
|
+
- HTTPClient/1.0 (2.4.0, ruby 2.1.0 (2013-12-25))
|
12
12
|
Accept:
|
13
13
|
- application/json
|
14
14
|
Date:
|
15
|
-
-
|
15
|
+
- Thu, 05 Feb 2015 05:47:08 GMT
|
16
16
|
Content-Type:
|
17
17
|
- application/json
|
18
18
|
response:
|
@@ -23,49 +23,49 @@ http_interactions:
|
|
23
23
|
Server:
|
24
24
|
- cloudflare-nginx
|
25
25
|
Date:
|
26
|
-
-
|
27
|
-
Content-Type:
|
28
|
-
- application/octet-stream
|
26
|
+
- Thu, 05 Feb 2015 05:47:11 GMT
|
29
27
|
Content-Length:
|
30
28
|
- '0'
|
31
29
|
Connection:
|
32
30
|
- keep-alive
|
33
31
|
Set-Cookie:
|
34
|
-
- __cfduid=
|
35
|
-
|
32
|
+
- __cfduid=d1d4e79a31d9574d13e2cafc0d75e217b1423115228; expires=Fri, 05-Feb-16
|
33
|
+
05:47:08 GMT; path=/; domain=.nationbuilder.com; HttpOnly
|
36
34
|
Cache-Control:
|
37
35
|
- no-cache
|
38
36
|
Nation-Ratelimit-Limit:
|
39
|
-
- '
|
37
|
+
- '125000'
|
40
38
|
Nation-Ratelimit-Remaining:
|
41
|
-
- '
|
39
|
+
- '124962'
|
42
40
|
Nation-Ratelimit-Reset:
|
43
|
-
- '
|
41
|
+
- '1423180800'
|
44
42
|
Status:
|
45
43
|
- 204 No Content
|
46
44
|
X-Powered-By:
|
47
|
-
- Phusion Passenger 4.0.
|
45
|
+
- Phusion Passenger 4.0.53
|
46
|
+
X-Pulse-Approved:
|
47
|
+
- 'true'
|
48
48
|
X-Rack-Cache:
|
49
49
|
- invalidate, pass
|
50
50
|
X-Ratelimit-Limit:
|
51
|
-
-
|
51
|
+
- 10s
|
52
52
|
X-Ratelimit-Remaining:
|
53
|
-
- '
|
53
|
+
- '97'
|
54
54
|
X-Ratelimit-Reset:
|
55
|
-
- '
|
55
|
+
- '1423115237'
|
56
56
|
X-Request-Id:
|
57
|
-
-
|
57
|
+
- 8548ed69e5b179a369dbf2c82598e911
|
58
58
|
X-Runtime:
|
59
|
-
- '
|
59
|
+
- '2.128177'
|
60
60
|
X-Ua-Compatible:
|
61
61
|
- IE=Edge,chrome=1
|
62
62
|
Via:
|
63
63
|
- 1.1 nationbuilder.com
|
64
64
|
Cf-Ray:
|
65
|
-
-
|
65
|
+
- 1b3ccfc3fff3068b-LAX
|
66
66
|
body:
|
67
67
|
encoding: UTF-8
|
68
68
|
string: ''
|
69
69
|
http_version:
|
70
|
-
recorded_at:
|
70
|
+
recorded_at: Thu, 05 Feb 2015 05:47:11 GMT
|
71
71
|
recorded_with: VCR 2.9.2
|
@@ -0,0 +1,205 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://organizeralexandreschmitt.nationbuilder.com/api/v1/sites/organizeralexandreschmitt/pages/basic_pages?access_token=53920a524356034a065515a37650df2bd295971975d5742b9daa50eb8c7404d5
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- HTTPClient/1.0 (2.4.0, ruby 2.1.0 (2013-12-25))
|
12
|
+
Accept:
|
13
|
+
- application/json
|
14
|
+
Date:
|
15
|
+
- Thu, 05 Feb 2015 05:58:22 GMT
|
16
|
+
Content-Type:
|
17
|
+
- application/json
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: OK
|
22
|
+
headers:
|
23
|
+
Server:
|
24
|
+
- cloudflare-nginx
|
25
|
+
Date:
|
26
|
+
- Thu, 05 Feb 2015 05:58:23 GMT
|
27
|
+
Content-Type:
|
28
|
+
- application/json
|
29
|
+
Transfer-Encoding:
|
30
|
+
- chunked
|
31
|
+
Connection:
|
32
|
+
- keep-alive
|
33
|
+
Set-Cookie:
|
34
|
+
- __cfduid=d95a74d79d057efd75b3932a4fd76c4211423115903; expires=Fri, 05-Feb-16
|
35
|
+
05:58:23 GMT; path=/; domain=.nationbuilder.com; HttpOnly
|
36
|
+
Cache-Control:
|
37
|
+
- max-age=0, private, must-revalidate
|
38
|
+
Etag:
|
39
|
+
- W/"a8890e6ebc2582f813ad6c36a877b862"
|
40
|
+
Nation-Ratelimit-Limit:
|
41
|
+
- '125000'
|
42
|
+
Nation-Ratelimit-Remaining:
|
43
|
+
- '124956'
|
44
|
+
Nation-Ratelimit-Reset:
|
45
|
+
- '1423180800'
|
46
|
+
Status:
|
47
|
+
- 200 OK
|
48
|
+
Vary:
|
49
|
+
- Accept-Encoding
|
50
|
+
X-Powered-By:
|
51
|
+
- Phusion Passenger 4.0.53
|
52
|
+
X-Pulse-Approved:
|
53
|
+
- 'true'
|
54
|
+
X-Rack-Cache:
|
55
|
+
- miss
|
56
|
+
X-Ratelimit-Limit:
|
57
|
+
- 10s
|
58
|
+
X-Ratelimit-Remaining:
|
59
|
+
- '99'
|
60
|
+
X-Ratelimit-Reset:
|
61
|
+
- '1423115913'
|
62
|
+
X-Request-Id:
|
63
|
+
- 93eaa496959856120c812861de0a27da
|
64
|
+
X-Runtime:
|
65
|
+
- '0.151672'
|
66
|
+
X-Ua-Compatible:
|
67
|
+
- IE=Edge,chrome=1
|
68
|
+
Via:
|
69
|
+
- 1.1 nationbuilder.com
|
70
|
+
Cf-Ray:
|
71
|
+
- 1b3ce039d47a13d7-LAX
|
72
|
+
body:
|
73
|
+
encoding: UTF-8
|
74
|
+
string: "{\"results\":[{\"slug\":\"liquid_howto_videos\",\"path\":\"/liquid_howto_videos\",\"status\":\"published\",\"site_slug\":\"organizeralexandreschmitt\",\"name\":\"Liquid
|
75
|
+
howto videos\",\"headline\":\"Liquid howto videos\",\"title\":\"Liquid howto
|
76
|
+
videos - Matt's General Store\",\"excerpt\":\"\",\"author_id\":79278,\"published_at\":\"2014-08-20T13:48:13-07:00\",\"external_id\":null,\"tags\":[],\"id\":27,\"content\":\"\\u003Cp\\u003Ehttps://www.youtube.com/watch?v=tZLTExLukSg\\u003C/p\\u003E\\r\\n\\u003Cp\\u003Ehttps://www.youtube.com/watch?v=u8IPLtBtKcc\\u003C/p\\u003E\\r\\n\\u003Cp\\u003Ehttps://www.youtube.com/watch?v=ZqO5AwwLw5I\\u003C/p\\u003E\\r\\n\\u003Cp\\u003E(note:
|
77
|
+
for specific variables available in NationBuilder, check \\u003Ca href=\\\"http://nationbuilder.com/request_variables\\\"\\u003Ehere\\u003C/a\\u003E)\\u003C/p\\u003E\"},{\"slug\":\"liquid_training\",\"path\":\"/liquid_training\",\"status\":\"published\",\"site_slug\":\"organizeralexandreschmitt\",\"name\":\"Liquid
|
78
|
+
training\",\"headline\":\"Liquid training\",\"title\":\"Liquid training -
|
79
|
+
Matt's General Store\",\"excerpt\":\"\",\"author_id\":79278,\"published_at\":\"2014-08-20T13:35:10-07:00\",\"external_id\":null,\"tags\":[],\"id\":26,\"content\":\"\\u003Col\\u003E\\n\\u003Cli
|
80
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003EExpectations\\u003C/p\\u003E\\r\\n\\u003Col\\u003E\\n\\u003Cli
|
81
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003EThat you have a
|
82
|
+
basic understanding of html and scss, and you\\u2019ve probably seen/delt
|
83
|
+
with liquid already but would like to know more about things that can be done
|
84
|
+
with it.\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003Cli dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp
|
85
|
+
dir=\\\"ltr\\\"\\u003EWhat we\\u2019re covering today\\u003C/p\\u003E\\r\\n\\u003Col\\u003E\\n\\u003Cli
|
86
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003EWhat exactly liquid
|
87
|
+
is\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003Cli dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp
|
88
|
+
dir=\\\"ltr\\\"\\u003EHow we use it\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003Cli
|
89
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003EExamples of live
|
90
|
+
liquid actions\\u003C/p\\u003E\\r\\n\\u003Col\\u003E\\n\\u003Cli dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp
|
91
|
+
dir=\\\"ltr\\\"\\u003ECalling blog entries to the front page of a website
|
92
|
+
(or other pages)\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003Cli dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp
|
93
|
+
dir=\\\"ltr\\\"\\u003ECustom fields - how they work and how they can be used\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003Cli
|
94
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003EAdding a Twitter
|
95
|
+
widget to our website that will dynamically pull in the broadcaster info\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003Cli
|
96
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003ELimiting page views
|
97
|
+
by tags on a profile\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003Cli
|
98
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003EWalk sheets, and
|
99
|
+
mastering some awesomeness there\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003Cli
|
100
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003ELiquid for emails\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003C/ol\\u003E\\n\\u003C/li\\u003E\\r\\n\\u003Cli
|
101
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003EQuestions\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003C/ol\\u003E\\n\\u003C/li\\u003E\\r\\n\\u003C/ol\\u003E\\n\\u003C/li\\u003E\\r\\n\\u003Cli
|
102
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003EWhat is Liquid?\\u003C/p\\u003E\\r\\n\\u003Col\\u003E\\n\\u003Cli
|
103
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003EOpen source, ruby
|
104
|
+
based, template language - created by \\u003Ca href=\\\"http://www.shopify.com/\\\"\\u003EShopify\\u003C/a\\u003E\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003Cli
|
105
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003ELink to github:
|
106
|
+
\\u003Ca href=\\\"https://github.com/Shopify/liquid\\\"\\u003Ehttps://github.com/Shopify/liquid\\u003C/a\\u003E\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003C/ol\\u003E\\n\\u003C/li\\u003E\\r\\n\\u003Cli
|
107
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003EWhy is it so awesome?\\u003C/p\\u003E\\r\\n\\u003Col\\u003E\\n\\u003Cli
|
108
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003EBecause it allows
|
109
|
+
for a more dynamic experience, both for users and for visitors to websites
|
110
|
+
built on NationBuilder.\\u003C/p\\u003E\\r\\n\\u003Col\\u003E\\n\\u003Cli
|
111
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003EExample - limited
|
112
|
+
pageviews to only signed in, members, etc.\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003Cli
|
113
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003EExample - custom
|
114
|
+
walk list\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003C/ol\\u003E\\n\\u003C/li\\u003E\\r\\n\\u003C/ol\\u003E\\n\\u003C/li\\u003E\\r\\n\\u003Cli
|
115
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003EHow does it do
|
116
|
+
that?\\u003C/p\\u003E\\r\\n\\u003Col\\u003E\\n\\u003Cli dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp
|
117
|
+
dir=\\\"ltr\\\"\\u003E\\u003Ca href=\\\"http://nationbuilder.com/liquid_basics#tags\\\"\\u003ETags\\u003C/a\\u003E
|
118
|
+
{% %} =\\u0026gt; logic\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003Cli
|
119
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003E\\u003Ca href=\\\"http://nationbuilder.com/liquid_basics#output\\\"\\u003EObjects\\u003C/a\\u003E
|
120
|
+
{{ }} =\\u0026gt; attributes\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003Cli
|
121
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003E\\u003Ca href=\\\"http://nationbuilder.com/liquid_basics#filter\\\"\\u003EFilters\\u003C/a\\u003E
|
122
|
+
{{ | }} =\\u0026gt; modify output\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003C/ol\\u003E\\n\\u003C/li\\u003E\\r\\n\\u003Cli\\u003EExercises\\u003Col\\u003E\\n\\u003Cli\\u003ECreate
|
123
|
+
a basic page\\u003Col\\u003E\\n\\u003Cli dir=\\\"ltr\\\"\\u003ESet it so that
|
124
|
+
you have to be either tagged with \\\"WooHoo\\\" to be able to see the {{
|
125
|
+
page.content }}, otherwise come up with something else creative to show...\\u003C/li\\u003E\\r\\n\\u003Cli
|
126
|
+
dir=\\\"ltr\\\"\\u003EExtra credit: If the site visitor isn't tagged to be
|
127
|
+
able to see the page, show a link to a volunteer page that will automatically
|
128
|
+
tag them and then redirect back to the page.\\u003C/li\\u003E\\r\\n\\u003C/ol\\u003E\\n\\u003C/li\\u003E\\r\\n\\u003Cli\\u003ECreate
|
129
|
+
a signup page with a custom field\\u003C/li\\u003E\\r\\n\\u003Cli\\u003ECreate
|
130
|
+
a custom walksheet\\u003C/li\\u003E\\r\\n\\u003Cli\\u003ECreate a custom email
|
131
|
+
theme template\\u003C/li\\u003E\\r\\n\\u003C/ol\\u003E\\n\\u003C/li\\u003E\\r\\n\\u003Cli
|
132
|
+
dir=\\\"ltr\\\"\\u003E\\r\\n\\u003Cp dir=\\\"ltr\\\"\\u003EQ\\u0026amp;A/Debrief\\u003C/p\\u003E\\r\\n\\u003C/li\\u003E\\r\\n\\u003C/ol\\u003E\\u003Cp\\u003E\\u00a0\\u003C/p\\u003E\\r\\n\\u003Cp\\u003EResources\\u003C/p\\u003E\\r\\n\\u003Col\\u003E\\n\\u003Cli
|
133
|
+
dir=\\\"ltr\\\"\\u003E\\u003Ca href=\\\"http://www.mattsgeneralstore.com/liquid_howto_videos\\\"\\u003EVideos\\u003C/a\\u003E\\u003C/li\\u003E\\r\\n\\u003Cli
|
134
|
+
dir=\\\"ltr\\\"\\u003E\\u003Ca href=\\\"http://docs.shopify.com/themes/liquid-documentation/basics\\\"\\u003EShopify
|
135
|
+
documentation\\u003C/a\\u003E\\u003C/li\\u003E\\r\\n\\u003Cli dir=\\\"ltr\\\"\\u003E\\u003Ca
|
136
|
+
href=\\\"http://nationbuilder.com/request_variables\\\"\\u003ENationBuilder
|
137
|
+
documentation\\u003C/a\\u003E\\u003C/li\\u003E\\r\\n\\u003Cli dir=\\\"ltr\\\"\\u003E\\u003Ca
|
138
|
+
href=\\\"https://github.com/codealchemy/codedump\\\"\\u003EGithub (repo for
|
139
|
+
tips and tricks)\\u003C/a\\u003E\\u003C/li\\u003E\\r\\n\\u003C/ol\\u003E\"},{\"slug\":\"custom_membership_page\",\"path\":\"/custom_membership_page\",\"status\":\"unlisted\",\"site_slug\":\"organizeralexandreschmitt\",\"name\":\"Custom
|
140
|
+
membership page\",\"headline\":\"Custom membership page\",\"title\":\"Custom
|
141
|
+
membership page - Matt's General Store\",\"excerpt\":null,\"author_id\":79278,\"published_at\":null,\"external_id\":null,\"tags\":[],\"id\":25,\"content\":null},{\"slug\":\"basic_home_page\",\"path\":\"/basic_home_page\",\"status\":\"archived\",\"site_slug\":\"organizeralexandreschmitt\",\"name\":\"Basic
|
142
|
+
home page\",\"headline\":\"Basic home page\",\"title\":\"Basic home page -
|
143
|
+
Matt's General Store\",\"excerpt\":null,\"author_id\":79278,\"published_at\":null,\"external_id\":null,\"tags\":[],\"id\":21,\"content\":null},{\"slug\":\"new_page\",\"path\":\"/new_page\",\"status\":\"archived\",\"site_slug\":\"organizeralexandreschmitt\",\"name\":\"New
|
144
|
+
page\",\"headline\":\"New page\",\"title\":\"New page - Matt's General Store\",\"excerpt\":\"\",\"author_id\":79278,\"published_at\":null,\"external_id\":null,\"tags\":[],\"id\":20,\"content\":\"\\u003Cblockquote\\u003E\\r\\n\\u003Cp\\u003E\\u003Cspan
|
145
|
+
style=\\\"background-color:rgb(204, 204, 221); color:rgb(0, 0, 0)\\\"\\u003EWe
|
146
|
+
can dance if we want to\\u003C/span\\u003E\\u003Cbr\\u003E\\u003Cspan style=\\\"background-color:rgb(204,
|
147
|
+
204, 221); color:rgb(0, 0, 0)\\\"\\u003EWe can leave your friends behind\\u003C/span\\u003E\\u003Cbr\\u003E\\u003Cspan
|
148
|
+
style=\\\"background-color:rgb(204, 204, 221); color:rgb(0, 0, 0)\\\"\\u003E'Cause
|
149
|
+
your friends don't dance and if they don't dance\\u003C/span\\u003E\\u003Cbr\\u003E\\u003Cspan
|
150
|
+
style=\\\"background-color:rgb(204, 204, 221); color:rgb(0, 0, 0)\\\"\\u003EWell,
|
151
|
+
they're no friends of mine\\u003C/span\\u003E\\u003C/p\\u003E\\r\\n\\u003C/blockquote\\u003E\\r\\n\\r\\n\\u003Cp\\u003Ehttp://www.youtube.com/watch?v=AjPau5QYtYs\\u003C/p\\u003E\\r\\n\\r\\n\\u003Cp\\u003E\\u003Cimg
|
152
|
+
alt=\\\"\\\" src=\\\"http://d3n8a8pro7vhmx.cloudfront.net/themes/521f7ca578c2723d84000002/attachments/original/1370903749/ph-hiring.png?1370903749\\\"
|
153
|
+
style=\\\"height:106px; width:108px\\\"\\u003E\\u003Cimg alt=\\\"\\\" src=\\\"http://tippvet.com/wp-content/uploads/2013/05/cat-vet.jpg\\\"
|
154
|
+
style=\\\"height:150px; width:200px\\\"\\u003E\\u003C/p\\u003E\\r\\n\\r\\n\\u003Cp\\u003E\\u003Cbr\\u003E\\r\\nThis
|
155
|
+
is awesome!!!\\u00a0\\u20ac\\u00d0\\u00a0\\u003Ca id=\\\"Delta Gamma\\\" name=\\\"Delta%20Gamma\\\"\\u003E\\u003C/a\\u003E\\u00a0\\u003C/p\\u003E\\r\\n\\r\\n\\u003Cul\\u003E\\n\\u003Cli\\u003Eitem
|
156
|
+
1\\u003C/li\\u003E\\r\\n\\t\\u003Cli\\u003E2\\u003C/li\\u003E\\r\\n\\t\\u003Cli\\u003E3\\u003C/li\\u003E\\r\\n\\t\\u003Cli\\u003E4\\u003C/li\\u003E\\r\\n\\t\\u003Cli\\u003Ecool
|
157
|
+
beans\\u003C/li\\u003E\\r\\n\\t\\u003Cli\\u003E\\n\\u003Cspan style=\\\"color:#A52A2A\\\"\\u003Eawesomesauce\\u003C/span\\u003E\\r\\n\\t\\u003Chr\\u003E\\n\\u003Cblockquote\\u003E\\r\\n\\t\\u003Cp\\u003EOne
|
158
|
+
for all, all for one\\u003C/p\\u003E\\r\\n\\t\\u003C/blockquote\\u003E\\r\\n\\t\\u003C/li\\u003E\\r\\n\\u003C/ul\\u003E\\u003Col\\u003E\\n\\u003Cli\\u003Eone\\u003C/li\\u003E\\r\\n\\t\\u003Cli\\u003Etwo\\u003C/li\\u003E\\r\\n\\t\\u003Cli\\u003Ethree\\u003C/li\\u003E\\r\\n\\u003C/ol\\u003E\\u003Cp\\u003EIndent\\u003C/p\\u003E\\r\\n\\r\\n\\u003Cp\\u003E\\u003Ca
|
159
|
+
href=\\\"google.com\\\"\\u003E\\u003Cimg alt=\\\"\\\" src=\\\"http://d3n8a8pro7vhmx.cloudfront.net/organizeralexandreschmitt/pages/144/attachments/original/1400886485/dogecoin_logo_large_verge_medium_landscape.png?1400886485\\\"\\u003E\\u003C/a\\u003E\\u003C/p\\u003E\\r\\n\\r\\n\\u003Chr\\u003E\\u003Cp\\u003EIndent\\u003C/p\\u003E\\r\\n\\r\\n\\u003Cp\\u003EIndent
|
160
|
+
(can't do indents)\\u003C/p\\u003E\\r\\n\\r\\n\\u003Cp\\u003EStyle \\u003Cstrong\\u003Ebold\\u003C/strong\\u003E,
|
161
|
+
\\u003Cem\\u003Eitalics\\u003C/em\\u003E, \\u003Cs\\u003Estrikethrough\\u003C/s\\u003E,
|
162
|
+
remove formatting\\u003C/p\\u003E\\r\\n\\r\\n\\u003Ctable border=\\\"1\\\"
|
163
|
+
style=\\\"width:100%\\\"\\u003E\\u003Ctbody\\u003E\\n\\u003Ctr\\u003E\\n\\u003Ctd\\u003E\\r\\n\\t\\t\\t\\u003Ctable
|
164
|
+
align=\\\"center\\\" border=\\\"1\\\" style=\\\"width:500px\\\"\\u003E\\n\\u003Ccaption\\u003E\\u003Cspan
|
165
|
+
style=\\\"background-color:#FF8C00\\\"\\u003ENested table\\u003C/span\\u003E\\u003C/caption\\u003E\\r\\n\\t\\t\\t\\t\\u003Ctbody\\u003E\\n\\u003Ctr\\u003E\\n\\u003Ctd\\u003E\\u003Cspan
|
166
|
+
style=\\\"background-color:#FF8C00\\\"\\u003E\\u00a0Cell 1\\u003C/span\\u003E\\u003C/td\\u003E\\r\\n\\t\\t\\t\\t\\t\\t\\u003Ctd\\u003E2\\u003C/td\\u003E\\r\\n\\t\\t\\t\\t\\t\\u003C/tr\\u003E\\n\\u003Ctr\\u003E\\n\\u003Ctd\\u003E3\\u003C/td\\u003E\\r\\n\\t\\t\\t\\t\\t\\t\\u003Ctd\\u003E4\\u003C/td\\u003E\\r\\n\\t\\t\\t\\t\\t\\u003C/tr\\u003E\\n\\u003Ctr\\u003E\\n\\u003Ctd\\u003E\\r\\n\\t\\t\\t\\t\\t\\t\\u003Cp\\u003E5\\u00a0\\u003Cimg
|
167
|
+
alt=\\\"\\\" src=\\\"http://d3n8a8pro7vhmx.cloudfront.net/organizeralexandreschmitt/pages/144/attachments/original/1400886485/dogecoin_logo_large_verge_medium_landscape.png?1400886485\\\"
|
168
|
+
style=\\\"border-style:solid; border-width:2px; float:left; height:123px;
|
169
|
+
margin:2px 4px; width:200px\\\"\\u003E\\u003C/p\\u003E\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\u003Cp\\u003E\\u00a0\\u003C/p\\u003E\\r\\n\\t\\t\\t\\t\\t\\t\\u003C/td\\u003E\\r\\n\\t\\t\\t\\t\\t\\t\\u003Ctd\\u003E6\\u003C/td\\u003E\\r\\n\\t\\t\\t\\t\\t\\u003C/tr\\u003E\\n\\u003C/tbody\\u003E\\n\\u003C/table\\u003E\\n\\u003Cp\\u003E\\u00a0\\u003C/p\\u003E\\r\\n\\t\\t\\t\\u003C/td\\u003E\\r\\n\\t\\t\\t\\u003Ctd\\u003E1\\u003C/td\\u003E\\r\\n\\t\\t\\u003C/tr\\u003E\\n\\u003Ctr\\u003E\\n\\u003Ctd\\u003E\\u00a0\\u003C/td\\u003E\\r\\n\\t\\t\\t\\u003Ctd\\u003E1\\u003C/td\\u003E\\r\\n\\t\\t\\u003C/tr\\u003E\\n\\u003Ctr\\u003E\\n\\u003Ctd\\u003E\\u00a0\\u003C/td\\u003E\\r\\n\\t\\t\\t\\u003Ctd\\u003E2\\u003C/td\\u003E\\r\\n\\t\\t\\u003C/tr\\u003E\\n\\u003C/tbody\\u003E\\u003C/table\\u003E\\u003Cp\\u003ENotes:\\u003Cbr\\u003E\\u003Cbr\\u003E\\r\\nSaving
|
170
|
+
images in tables removes the image (linked image) FIXED\\u003C/p\\u003E\\r\\n\\r\\n\\u003Cp\\u003ELinked
|
171
|
+
images in content area do not appear \\u003Cs\\u003EFIXED\\u003C/s\\u003E\\u00a0worked
|
172
|
+
for a moment, then went back to dropping the image when saving\\u003C/p\\u003E\\r\\n\\r\\n\\u003Cp\\u003ECannot
|
173
|
+
compare auto saved versions side-by-side (when prompted)\\u003C/p\\u003E\\r\\n\\r\\n\\u003Cp\\u003E\\u0026lt;ul\\u0026gt;
|
174
|
+
inheriting styling from theme.scss - removing bullets (Theme issue, not WYSIWYG
|
175
|
+
issue)\\u003C/p\\u003E\\r\\n\\r\\n\\u003Cp\\u003E\\u0026lt;ol\\u0026gt; inherting
|
176
|
+
styling from theme.scss - removing numbering FIXED\\u003C/p\\u003E\\r\\n\\r\\n\\u003Cp\\u003E\\u0026lt;blockquote\\u0026gt;
|
177
|
+
has a \\u0026lt;p\\u0026gt; with the text nested in it - doesn't seem to affect
|
178
|
+
styling other than an indentation\\u003C/p\\u003E\\r\\n\\r\\n\\u003Cp\\u003Eembed.ly
|
179
|
+
not functioning\\u003C/p\\u003E\\r\\n\\r\\n\\u003Cp\\u003Eunable to upload
|
180
|
+
image/files from WYSIWYG editor (unsure if this is going to be added functionality
|
181
|
+
or not)\\u003C/p\\u003E\"},{\"slug\":\"press_releases\",\"path\":\"/press_releases\",\"status\":\"published\",\"site_slug\":\"organizeralexandreschmitt\",\"name\":\"Press
|
182
|
+
releases\",\"headline\":\"Press releases\",\"title\":\"Press releases - Matt's
|
183
|
+
General Store\",\"excerpt\":null,\"author_id\":79278,\"published_at\":\"2014-05-11T21:29:11-07:00\",\"external_id\":null,\"tags\":[],\"id\":19,\"content\":null},{\"slug\":\"social_capital\",\"path\":\"/social_capital\",\"status\":\"published\",\"site_slug\":\"organizeralexandreschmitt\",\"name\":\"Social
|
184
|
+
Capital\",\"headline\":\"Social Capital\",\"title\":\"Social Capital - Matt's
|
185
|
+
General Store\",\"excerpt\":null,\"author_id\":79278,\"published_at\":\"2014-04-25T17:35:00-07:00\",\"external_id\":null,\"tags\":[],\"id\":17,\"content\":null},{\"slug\":\"crowdhall\",\"path\":\"/crowdhall\",\"status\":\"archived\",\"site_slug\":\"organizeralexandreschmitt\",\"name\":\"CrowdHall\",\"headline\":\"CrowdHall\",\"title\":\"CrowdHall
|
186
|
+
- Matt's General Store\",\"excerpt\":null,\"author_id\":79278,\"published_at\":null,\"external_id\":null,\"tags\":[],\"id\":16,\"content\":null},{\"slug\":\"the_game\",\"path\":\"/the_game\",\"status\":\"expired\",\"site_slug\":\"organizeralexandreschmitt\",\"name\":\"The
|
187
|
+
Game\",\"headline\":\"The Game\",\"title\":\"The Game - Matt's General Store\",\"excerpt\":null,\"author_id\":79278,\"published_at\":null,\"external_id\":null,\"tags\":[],\"id\":15,\"content\":null},{\"slug\":\"members\",\"path\":\"/members\",\"status\":\"archived\",\"site_slug\":\"organizeralexandreschmitt\",\"name\":\"Members\",\"headline\":\"Members\",\"title\":\"Members
|
188
|
+
- Matt's General Store\",\"excerpt\":\"\",\"author_id\":79278,\"published_at\":null,\"external_id\":null,\"tags\":[],\"id\":13,\"content\":\"\\u003Cp\\u003EBacon
|
189
|
+
ipsum dolor sit amet flank swine turducken ball tip short loin hamburger beef
|
190
|
+
ribs beef biltong boudin. Doner short loin venison frankfurter cow prosciutto
|
191
|
+
tri-tip pork belly boudin t-bone meatloaf tenderloin tail. Tail ribeye salami
|
192
|
+
pastrami landjaeger jowl tri-tip doner prosciutto kevin swine ball tip frankfurter.
|
193
|
+
Frankfurter beef ribs tenderloin ball tip porchetta sirloin. Shoulder capicola
|
194
|
+
porchetta frankfurter corned beef prosciutto tri-tip ribeye pork chop chuck.
|
195
|
+
Bresaola short ribs t-bone meatball beef, tail turkey bacon sausage filet
|
196
|
+
mignon doner. Flank tri-tip pastrami fatback landjaeger ball tip.\\u003C/p\\u003E\\r\\n\\u003Cp\\u003EPancetta
|
197
|
+
sausage brisket turducken frankfurter, pastrami tri-tip ribeye. Ham pastrami
|
198
|
+
bresaola ribeye, turkey porchetta corned beef swine jowl tongue meatball ball
|
199
|
+
tip. Pork loin short ribs shoulder flank strip steak tail tongue porchetta
|
200
|
+
hamburger ball tip pastrami venison beef ribs. Swine prosciutto pork chop
|
201
|
+
kevin fatback landjaeger. Bresaola filet mignon landjaeger meatball drumstick
|
202
|
+
ham hock rump. Ribeye pig chicken salami kevin.\\u003C/p\\u003E\"}],\"next\":\"/api/v1/sites/organizeralexandreschmitt/pages/basic_pages?__nonce=WFLdAtsECEYUOHDMmSxr7A\\u0026__token=AHEIn2BHzrG-kW8bkvoc2ufQMmH9RnPkgBjg3DzLHU_y\",\"prev\":\"/api/v1/sites/organizeralexandreschmitt/pages/basic_pages?__nonce=bMkjOhmZRMsMx5k32k3wSA\\u0026__token=AEXYxxwa0GEkIUgPMF7mgc4Quhf1oCLVdsMnO6tple4E\"}"
|
203
|
+
http_version:
|
204
|
+
recorded_at: Thu, 05 Feb 2015 05:58:23 GMT
|
205
|
+
recorded_with: VCR 2.9.2
|