editmode 1.2.4 → 1.2.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bd467da504ef11a5ba029cc7dcf3b4957dbbc758fa37fe8cf38f2aed358fb17b
4
- data.tar.gz: 577f1989ff49f7c624fd2d1864cc78c6bd0f3249e7c67951bf6b94e375794744
3
+ metadata.gz: f3c6615ff35d91086eb0774d03d3d5e90070f1f52456563b883b947c42182bdf
4
+ data.tar.gz: 067ea9cb9d9227d12cda1aa825fbce9987731ee720e9882386a9a1d6cdbb4e4c
5
5
  SHA512:
6
- metadata.gz: 5466ebc92b03dde2acc135dd0e90ff54c2b18242a0eb5011889ff429fd5c168f9ec09b7181be3df8d8a864f78911a49b620b0ed239a3aec9330e4d3fb9b3a3f7
7
- data.tar.gz: bd302d21b044b4927e787f5aaacc530bae2a811f5e72138519b6b2b5cc594dc6322ec9fa026a1fa256d5d65a26ee79877d0256e547a11ad6589197482d0e5fb1
6
+ metadata.gz: e3da11757cc4d252bd5222533c4e4fee807623a50c6913d968dec1ded22e3a653199b3b5b858f138440d62391e64048d22e1062837689c082b523c62beb82170
7
+ data.tar.gz: 367aace629ffe1363a1938a6bdec061976eeb2dda597916378f4c6385ee57e7dfa7a8e0efda7d873d8d1aafbb0cb5875a4328e478540b4abba775728e177c05f
data/Gemfile CHANGED
@@ -1,4 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in chunks.gemspec
4
+ gem 'pry-rails'
5
+ gem 'rails', '~> 5.2.0'
4
6
  gemspec
data/README.md CHANGED
@@ -50,6 +50,12 @@ Editmode provides helper methods for use in your rails views and controllers.
50
50
  <%= E('cnk_x4ts...', class: "a-css-class") %> # Render a chunk with inline css class
51
51
  ```
52
52
 
53
+ ### Working with multiple projects in the same codebase
54
+ If you want to include content from a different project to the one you've specified in the initializer, you can pass the project id in to the view helper.
55
+ ```erb
56
+ <%= E("cnk_16e04a02d577afb610ce", project_id: "prj_02d577afb617hdb") %>
57
+ ```
58
+
53
59
  ### Content can also be accessed in Controllers
54
60
  ```ruby
55
61
  @page_title = e("cnk_x4ts............") # Using a chunk identifier
@@ -78,6 +84,8 @@ e("cnk_16e04a02d577afb610ce", "Email Content", variables: variable_values)
78
84
  # Response: "Hi Dexter Morgan"
79
85
  ```
80
86
 
87
+
88
+
81
89
  ### Use collections for repeatable content
82
90
  ```erb
83
91
  <%= c('col_j8fbs...', class: "profiles-container", item_class: "profile-item") do %>
data/Rakefile CHANGED
@@ -1,2 +1,10 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
2
3
 
4
+ task :test do
5
+ Dir['test/*_test.rb'].each do |testfile|
6
+ load testfile
7
+ end
8
+ end
9
+
10
+ task :default => :test
@@ -1,11 +1,17 @@
1
1
  require 'editmode/helper'
2
+ require 'action_view'
3
+ require 'httparty'
2
4
 
3
5
  module Editmode
4
6
  module ActionViewExtensions
5
7
  module EditmodeHelper
6
- require 'httparty'
8
+ include ::ActionView::Helpers::TagHelper
9
+ include ::ActionView::Helpers::TextHelper
10
+ include ::ActionView::Helpers::AssetTagHelper
11
+ include ::ActionView::Context
7
12
  include Editmode::Helper
8
13
 
14
+
9
15
  def api_version
10
16
  # Todo Add Header Version
11
17
  end
@@ -56,14 +62,14 @@ module Editmode
56
62
  chunks.each do |chunk|
57
63
  @custom_field_chunk = chunk
58
64
  concat(content_tag(:div, class: "chunks-collection-item--wrapper #{item_class}") do
59
- yield
65
+ yield(@custom_field_chunk)
60
66
  end)
61
67
  end
62
68
 
63
69
  # Placeholder element for new collection item
64
70
  @custom_field_chunk = chunks.first.merge!({placeholder: true})
65
71
  concat(content_tag(:div, class: "chunks-hide chunks-col-placeholder-wrapper") do
66
- yield
72
+ yield(@custom_field_chunk)
67
73
  end)
68
74
  end
69
75
  else
@@ -1,3 +1,6 @@
1
+ require 'action_view'
2
+ require 'active_support'
3
+
1
4
  module Editmode
2
5
  class ChunkValue
3
6
  include ActionView::Helpers::TagHelper
@@ -10,13 +13,14 @@ module Editmode
10
13
 
11
14
  attr_writer :content
12
15
 
13
- def initialize(identifier, **options)
16
+ def initialize(identifier, project_id: Editmode.project_id, **options)
14
17
  @identifier = identifier
15
18
  @branch_id = options[:branch_id].presence
16
- @project_id = Editmode.project_id
19
+ @project_id = project_id
17
20
  @variable_values = options[:variables].presence || {}
18
21
  @raw = options[:raw].present?
19
22
  @skip_sanitize = options[:dangerously_skip_sanitization]
23
+ @skip_cache = options[:skip_cache]
20
24
 
21
25
  @url = "#{api_root_url}/chunks/#{identifier}"
22
26
  @cache_identifier = set_cache_identifier(identifier)
@@ -62,6 +66,11 @@ module Editmode
62
66
  result.try(:html_safe)
63
67
  end
64
68
 
69
+ def cached?
70
+ return false if @skip_cache
71
+ Rails.cache.exist?(cache_identifier)
72
+ end
73
+
65
74
  private
66
75
 
67
76
  # Todo: Transfer to helper utils
@@ -81,7 +90,6 @@ module Editmode
81
90
  end
82
91
 
83
92
  def variable_parse!(content, variables = {}, values = {}, raw = true, skip_sanitize=false)
84
- content = ActionController::Base.helpers.sanitize(content) unless skip_sanitize
85
93
  tokens = content.scan(/\{{(.*?)\}}/)
86
94
  if tokens.any?
87
95
  tokens.flatten!
@@ -99,11 +107,8 @@ module Editmode
99
107
  end
100
108
  end
101
109
 
102
- content
103
- end
104
-
105
- def cached?
106
- Rails.cache.exist?(cache_identifier)
110
+ content = ActionController::Base.helpers.sanitize(content) unless skip_sanitize
111
+ return content
107
112
  end
108
113
 
109
114
  def query_params
@@ -114,17 +119,19 @@ module Editmode
114
119
  end
115
120
 
116
121
  def get_content
122
+
117
123
  if !cached?
118
124
  http_response = HTTParty.get(url, query: query_params)
119
125
  response_received = true if http_response.code == 200
120
126
  end
121
127
 
122
128
  if !cached? && !response_received
123
- raise no_response_received(identifier)
129
+ message = http_response.try(:[], 'message') || no_response_received(identifier)
130
+
131
+ raise message
124
132
  else
125
- cached_response = Rails.cache.fetch(cache_identifier) do
126
- http_response.to_json
127
- end
133
+ Rails.cache.write(cache_identifier, http_response.to_json) if http_response.present?
134
+ cached_response = Rails.cache.fetch(cache_identifier)
128
135
 
129
136
  @response = json?(cached_response) ? JSON.parse(cached_response) : cached_response
130
137
  set_response_attributes!
@@ -139,5 +146,8 @@ module Editmode
139
146
  @branch_id = response['branch_id']
140
147
  end
141
148
 
149
+ def no_response_received(id = "")
150
+ "Sorry, we can't find a chunk using this identifier: \"#{id}\". This can happen if you've deleted a chunk on editmode.com or if your local cache is out of date. If it persists, try running Rails.cache clear."
151
+ end
142
152
  end
143
153
  end
@@ -1,4 +1,5 @@
1
- require 'editmode/chunk_value'
1
+ require 'rails/engine'
2
+ require 'action_controller'
2
3
  require 'editmode/helper'
3
4
 
4
5
  module Editmode
@@ -12,7 +12,7 @@ module Editmode
12
12
  chunk.content
13
13
  end
14
14
  rescue => er
15
- puts er
15
+ Rails.logger.info "#{er}: We can't render content for #{identifier}"
16
16
  end
17
17
  end
18
18
 
@@ -1,3 +1,4 @@
1
+ require 'rails/railtie'
1
2
  module Editmode
2
3
  class Railtie < Rails::Railtie
3
4
  initializer "editmode" do |app|
@@ -1,3 +1,3 @@
1
1
  module Editmode
2
- VERSION = "1.2.4"
2
+ VERSION = "1.2.9"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: editmode
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tony Ennis
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-02 00:00:00.000000000 Z
11
+ date: 2021-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,7 +94,7 @@ homepage: https://github.com/tonyennis145/editmode-rails
94
94
  licenses:
95
95
  - MIT
96
96
  metadata: {}
97
- post_install_message:
97
+ post_install_message:
98
98
  rdoc_options: []
99
99
  require_paths:
100
100
  - lib
@@ -109,8 +109,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  requirements: []
112
- rubygems_version: 3.0.3
113
- signing_key:
112
+ rubygems_version: 3.2.4
113
+ signing_key:
114
114
  specification_version: 4
115
115
  summary: Editmode allows you to turn plain text in your rails app into easily inline-editable
116
116
  bits of content that can be managed by anyone with no technical knowledge