nationbuilder-rb 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|