pagelime-rack 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YmE2N2I5M2Q4MjJkOTVlMDkwZDllYjliNzgzYTVmOGI2M2E4MTBiNQ==
5
- data.tar.gz: !binary |-
6
- NWM2ZGFhOTNkNzY4ZGU4M2FmZmFhOWE1MzViZmZmODRiZGFkZmI1MQ==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- MmZlZjA0YjZiN2UyYmRmYjdmNDY5NDM3MWNhN2I2Njk3ZjE1ODQ4NTU1OWQ2
10
- Y2I4Y2UwMDljZTBkZDNhMmU5MzU0YWIwMTdkNThjMTgwZTM0MjMyNzBkYWY0
11
- NjA1YmU2ODE0M2Y3ZTRkNDg4NGI5NTM2NTJhMjQ2ZTgwN2Y4Zjk=
12
- data.tar.gz: !binary |-
13
- ZjYyN2EwNDEwMGIwMWQ0NGZlZGRjNjIyMmY3NTdmNzRlY2Q3NGEyOTQ1MTc4
14
- MzZlYTRlZDU0N2Y2OWEyMGNlNTFhZjRiYWE1NDcyNTU4MWExNDMwMmI4M2Jj
15
- MjA4NWM1MTY3MjY3OThjM2U3Y2FmNGU2MmNkYTRkNjVmYzU1MjQ=
2
+ SHA1:
3
+ metadata.gz: 56d7efd14f1b1ae6347a91fd55553809d7597973
4
+ data.tar.gz: 0c539f4aef56a8359361ab74c68e4077bd680cba
5
+ SHA512:
6
+ metadata.gz: 8da392f81941b3f5e33fc36da3d68b7bc8b30e3161dfa410b900264b7c56d9c70b02ab1509851a1753b4da324558cec1d53e99eef1c9a758f57b23080f9c8f0f
7
+ data.tar.gz: 9b1fd19ad4255167cc1bd4d22e22cb6ba4d4fd62fb0c3ed56b52951f461a9c60370ab5396d8747bd08bd1f4837ff92d979f59d331ab823b3d5cbbcef204b9e31
data/README.md CHANGED
@@ -1,60 +1,88 @@
1
1
  Pagelime Rack Plugin
2
2
  =====================
3
3
 
4
- Easily add the Pagelime CMS to your rack app.
4
+ Easily add the Pagelime CMS to your Rack app.
5
5
 
6
- Pagelime is a simple CMS service that allows you to define editable regions in your content without installing any software on your site or app. Simply add a class="cms-editable" to any HTML element, and log-in to the Pagelime CMS service to edit your content and images with a nice UI. We host all of the code, content, and data until you publish a page. When you publish a page, we push the content to your site/app via secure FTP or web APIs.
6
+ Pagelime is a simple CMS service that allows you to define editable regions in your content without installing any software on your site or app.
7
+ Simply add a `class="cms-editable"` to any HTML element, and log-in to the Pagelime CMS service to edit your content and images with a nice UI.
8
+ We host all of the code, content, and data until you publish a page.
9
+ When you publish a page, we push the content to your site/app via secure FTP or web APIs.
7
10
 
8
11
  One line example:
9
- `<div id="my_content" class="cms-editable">This content is now editable in Pagelime... no code... no databases... no fuss</div>`
12
+
13
+ <div id="my_content" class="cms-editable">
14
+ This content is now editable in Pagelime... no code... no databases... no fuss
15
+ </div>
10
16
 
11
17
  Getting Started
12
18
  ---------------
13
19
 
14
- Requirements:
20
+ ### Requirements
15
21
 
16
- * Pagelime account (either a standalone from pagelime.com or as a Heroku add-on)
22
+ * Pagelime account (either standalone [pagelime.com](http://pagelime.com) or via the [Pagelime Heroku add-on](https://addons.heroku.com/pagelime))
17
23
  * Nokogiri gem
18
24
 
19
- #### Step 1: Edit the Gemfile
20
- edit your `Gemfile` and add
25
+ ### Step 1: Install the Pagelime Rack gem
26
+
27
+ Edit your `Gemfile` and add
21
28
 
22
- `gem "pagelime_rack"`
29
+ gem "pagelime-rack"
23
30
 
24
31
  then run
25
32
 
26
- `bundle install`
33
+ bundle install
27
34
 
28
- ### Step 2: Set up your Environment variables
35
+ ### Step 2: Setup your Pagelime credentials
29
36
 
30
- `ENV['PAGELIME_ACCOUNT_KEY'] = "..."
31
- ENV['PAGELIME_ACCOUNT_SECRET'] = "..."
32
- ENV['PAGELIME_RACK_API_VERSION'] = "1.0"`
37
+ *(Skip if using Heroku add-on)*
33
38
 
34
- ### Step 3: Create some editable regions in your views
35
- like so:
39
+ If you are NOT using the [Pagelime Heroku add-on](https://addons.heroku.com/pagelime), set up an account at [pagelime.com](http://pagelime.com).
40
+ Make sure that the "Integration Method" for your site on the advanced tab is set to "web services".
36
41
 
37
- `<div id="my_content" class="cms-editable">this is now editable</div>`
42
+ ### Step 3: Configure your application
38
43
 
39
- *The ID and the class are required for the CMS to work*
44
+ Set up your Environment variables: *(Skip if using Heroku add-on)*
40
45
 
41
- Sinatra Sample
42
- --------------
46
+ ENV['PAGELIME_ACCOUNT_KEY'] = "..."
47
+ ENV['PAGELIME_ACCOUNT_SECRET'] = "..."
48
+ ENV['PAGELIME_RACK_API_VERSION'] = "1.0"
49
+
50
+ Alternatively, configure them explicitly:
43
51
 
44
- `require 'sinatra'
45
- require 'pagelime-rack'
52
+ Pagelime.configure do |config|
53
+ config.account_key = "..."
54
+ config.account_secret = "..."
55
+ config.api_version = "1.0"
56
+ end
46
57
 
47
- configure :development do
48
- ENV['PAGELIME_ACCOUNT_KEY'] = "..."
49
- ENV['PAGELIME_ACCOUNT_SECRET'] = "..."
50
- ENV['PAGELIME_RACK_API_VERSION'] = "1.0"
51
- end
58
+ ### Step 4: Make pages editable
52
59
 
53
- use Rack::Pagelime
60
+ Create some editable regions in your views like so:
61
+
62
+ <div id="my_content" class="cms-editable">
63
+ this is now editable
64
+ </div>
65
+
66
+ *The ID and the class are required for the CMS to work*
67
+
68
+ Sinatra Sample
69
+ --------------
54
70
 
55
- get '/page/about' do
56
- content_type "text/html"
57
- return "<div id=\"content\" class=\"cms-editable\">Hello World!</div>"
58
- end`
71
+ require 'sinatra'
72
+ require 'pagelime-rack'
73
+
74
+ configure :development do
75
+ ENV['PAGELIME_ACCOUNT_KEY'] = "..."
76
+ ENV['PAGELIME_ACCOUNT_SECRET'] = "..."
77
+ ENV['PAGELIME_RACK_API_VERSION'] = "1.0"
78
+ end
79
+
80
+ use Rack::Pagelime
81
+
82
+ get '/page/about' do
83
+ content_type "text/html"
84
+ return "<div id=\"content\" class=\"cms-editable\">Hello World!</div>"
85
+ end
86
+
87
+ Copyright (c) 2013 Pagelime LLC, released under the MIT license
59
88
 
60
- Copyright (c) 2011 Pagelime LLC, released under the MIT license
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
@@ -37,11 +37,13 @@ module Pagelime
37
37
 
38
38
  # TODO: check cache (see the rails plugin for info)
39
39
 
40
- ::Pagelime.logger.debug "PAGELIME CMS PLUGIN: NO SHARED CACHE... loading #{format}"
40
+ ::Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: NO SHARED CACHE... loading #{format}"
41
41
 
42
42
  content = request_content("/cms_assets/heroku/#{account_key}/shared-regions.#{format}")
43
43
 
44
- # puts "PAGELIME CMS PLUGIN: response XML: #{xml_content}"
44
+ # ::Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: shared XML: #{content}"
45
+
46
+ Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: Shared content: #{content.inspect}"
45
47
 
46
48
  content
47
49
  end
@@ -55,25 +57,32 @@ module Pagelime
55
57
 
56
58
  # TODO: check cache (see the rails plugin for info)
57
59
 
58
- Pagelime.logger.debug "PAGELIME CMS PLUGIN: NO '#{page_path}' CACHE... loading #{format}"
60
+ Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: NO '#{page_path}' CACHE... loading #{format}"
59
61
 
60
62
  content = request_content("/cms_assets/heroku/#{account_key}/pages#{page_path}.#{format}")
61
63
 
64
+ Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: Content: #{content.inspect}"
65
+
62
66
  content
63
67
  end
64
68
 
65
69
  def clear(page_path, format = self.class.default_format)
66
- Pagelime.logger.warn "#{self.class.name}##{__method__} is not implemented!"
70
+ Pagelime.logger.warn "PAGELIME CMS RACK PLUGIN: #{self.class.name}##{__method__} is not implemented!"
67
71
  end
68
72
 
69
73
  def clear_shared(format = self.class.default_format)
70
- Pagelime.logger.warn "#{self.class.name}##{__method__} is not implemented!"
74
+ Pagelime.logger.warn "PAGELIME CMS RACK PLUGIN: #{self.class.name}##{__method__} is not implemented!"
71
75
  end
72
76
 
73
77
  private
74
78
 
75
79
  def request_content(url)
76
- http.get(url).body
80
+ response = http.get(url)
81
+
82
+ Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: S3 response code: #{response.code.inspect}"
83
+
84
+ # only return the body if response code 200-399
85
+ response.body if (200...400).include?(response.code)
77
86
  end
78
87
 
79
88
  def http
@@ -12,17 +12,37 @@ module Pagelime
12
12
  end
13
13
 
14
14
  def process_document(html, page_path = false)
15
+ Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: Document HTML: #{html.inspect}"
16
+
15
17
  doc = Nokogiri::HTML::Document.parse(html)
16
18
 
17
19
  # return original HTML if nil returned
18
- parse_document(doc, page_path) || html
20
+ output = parse_document(doc, page_path) || html
21
+
22
+ if html == output
23
+ Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: Document output: UNCHANGED!"
24
+ else
25
+ Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: Document output: #{output.inspect}"
26
+ end
27
+
28
+ output
19
29
  end
20
30
 
21
31
  def process_fragment(html, page_path = false)
32
+ Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: Fragment HTML: #{html.inspect}"
33
+
22
34
  doc = Nokogiri::HTML::DocumentFragment.parse(html)
23
35
 
24
36
  # return original HTML if nil returned
25
- parse_document(doc, page_path) || html
37
+ output = parse_document(doc, page_path) || html
38
+
39
+ if html == output
40
+ Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: Fragment output: UNCHANGED!"
41
+ else
42
+ Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: Fragment output: #{output.inspect}"
43
+ end
44
+
45
+ output
26
46
  end
27
47
 
28
48
  private
@@ -31,7 +51,7 @@ module Pagelime
31
51
  def parse_document(doc, page_path = false)
32
52
 
33
53
  unless client.configured?
34
- ::Pagelime.logger.warn "PAGELIME CMS PLUGIN: Environment variables not configured"
54
+ ::Pagelime.logger.warn "PAGELIME CMS RACK PLUGIN: Environment variables not configured"
35
55
  return nil
36
56
  end
37
57
 
@@ -48,7 +68,7 @@ module Pagelime
48
68
 
49
69
  def patch_regions(editable_regions, xml_content)
50
70
 
51
- ::Pagelime.logger.debug "PAGELIME CMS PLUGIN: parsing xml"
71
+ ::Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: parsing xml"
52
72
 
53
73
  editable_regions.each do |div|
54
74
 
@@ -57,14 +77,13 @@ module Pagelime
57
77
  soap = Nokogiri::XML::Document.parse(xml_content)
58
78
  nodes = soap.css("EditableRegion[@ElementID=\"#{client_id}\"]")
59
79
 
60
- ::Pagelime.logger.debug "PAGELIME CMS PLUGIN: looking for region: #{client_id}"
61
- ::Pagelime.logger.debug "regions found: #{nodes.count}"
80
+ ::Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: looking for region: #{client_id}"
81
+ ::Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: regions found: #{nodes.count}"
62
82
 
63
83
  if nodes.any?
64
84
  new_content = nodes[0].css("Html")[0].content
65
85
 
66
- ::Pagelime.logger.debug "PAGELIME CMS PLUGIN: NEW CONTENT:"
67
- ::Pagelime.logger.debug new_content
86
+ ::Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: NEW CONTENT: #{new_content.inspect}"
68
87
 
69
88
  if new_content
70
89
  # div.content = "Replaced content"
@@ -11,16 +11,16 @@ module Rack
11
11
  @app = app
12
12
  @options = options
13
13
 
14
- ::Pagelime.logger.debug "PAGELIME: Rack Plugin Initialized"
14
+ ::Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: Rack Plugin Initialized"
15
15
  end
16
16
 
17
17
  def call(env)
18
18
 
19
19
  status, headers, response = @app.call(env)
20
20
 
21
- ::Pagelime.logger.debug "PAGELIME: Headers: #{headers}"
22
- ::Pagelime.logger.debug "PAGELIME: Status: #{status}"
23
- ::Pagelime.logger.debug "PAGELIME: Response: #{response}"
21
+ ::Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: Headers: #{headers}"
22
+ ::Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: Status: #{status}"
23
+ ::Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: Response: #{response}"
24
24
 
25
25
  if status == 200 && headers["content-type"].include?("text/html")
26
26
 
@@ -29,8 +29,8 @@ module Rack
29
29
 
30
30
  req = Rack::Request.new(env)
31
31
 
32
- ::Pagelime.logger.debug "PAGELIME: Processing For Path: #{req.path}"
33
- ::Pagelime.logger.debug "PAGELIME: Processing Body (size:#{body_content.length})"
32
+ ::Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: Processing For Path: #{req.path}"
33
+ ::Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: Processing Body (size:#{body_content.length})"
34
34
 
35
35
  body = ::Pagelime.html_processor.process_document(body_content, req.path)
36
36
 
@@ -40,7 +40,7 @@ module Rack
40
40
 
41
41
  else
42
42
 
43
- ::Pagelime.logger.debug "PAGELIME: Not touching this request"
43
+ ::Pagelime.logger.debug "PAGELIME CMS RACK PLUGIN: Not touching this request"
44
44
 
45
45
  return [status, headers, response]
46
46
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "pagelime-rack"
8
- s.version = "0.2.1"
8
+ s.version = "0.2.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Emil Anticevic", "Joel Van Horn"]
@@ -37,7 +37,7 @@ Gem::Specification.new do |s|
37
37
  s.homepage = "http://github.com/eanticev/pagelime-rack"
38
38
  s.licenses = ["MIT"]
39
39
  s.require_paths = ["lib"]
40
- s.rubygems_version = "2.0.7"
40
+ s.rubygems_version = "2.0.6"
41
41
  s.summary = "Rack Middleware for integrating Pagelime into ruby frameworks"
42
42
 
43
43
  if s.respond_to? :specification_version then
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pagelime-rack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emil Anticevic
@@ -15,84 +15,84 @@ dependencies:
15
15
  name: nokogiri
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ! '>='
18
+ - - '>='
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ! '>='
25
+ - - '>='
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rack
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ! '>='
32
+ - - '>='
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ! '>='
39
+ - - '>='
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: shoulda
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ! '>='
46
+ - - '>='
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ! '>='
53
+ - - '>='
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rdoc
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ! '>='
60
+ - - '>='
61
61
  - !ruby/object:Gem::Version
62
62
  version: '3.12'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ! '>='
67
+ - - '>='
68
68
  - !ruby/object:Gem::Version
69
69
  version: '3.12'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: bundler
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ! '>='
74
+ - - '>='
75
75
  - !ruby/object:Gem::Version
76
76
  version: 1.0.0
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ! '>='
81
+ - - '>='
82
82
  - !ruby/object:Gem::Version
83
83
  version: 1.0.0
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: jeweler
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ! '>='
88
+ - - '>='
89
89
  - !ruby/object:Gem::Version
90
90
  version: 1.8.4
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ! '>='
95
+ - - '>='
96
96
  - !ruby/object:Gem::Version
97
97
  version: 1.8.4
98
98
  description: The Pagelime Rack Middleware will process outgoing HTML, look for editable
@@ -131,17 +131,17 @@ require_paths:
131
131
  - lib
132
132
  required_ruby_version: !ruby/object:Gem::Requirement
133
133
  requirements:
134
- - - ! '>='
134
+ - - '>='
135
135
  - !ruby/object:Gem::Version
136
136
  version: '0'
137
137
  required_rubygems_version: !ruby/object:Gem::Requirement
138
138
  requirements:
139
- - - ! '>='
139
+ - - '>='
140
140
  - !ruby/object:Gem::Version
141
141
  version: '0'
142
142
  requirements: []
143
143
  rubyforge_project:
144
- rubygems_version: 2.0.7
144
+ rubygems_version: 2.0.6
145
145
  signing_key:
146
146
  specification_version: 4
147
147
  summary: Rack Middleware for integrating Pagelime into ruby frameworks