editmode 0.0.9.74 → 0.0.10.1

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,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 78f4675b46c94a1c2116499fa662f668461a63d18488d6d5d30650c61614783e
4
- data.tar.gz: 3c90085827399b337c771297c93a07cb084bb356cde431ab0b67592fa872c797
3
+ metadata.gz: 1dc05bbec2b009d428193136bed21d4691a02b7aa21ce14d791d0b903cc4776d
4
+ data.tar.gz: f3eccd293ed87c3f3b6755ff87bb129cdf9a202fb205d453dd968d23b97f527c
5
5
  SHA512:
6
- metadata.gz: 2a516fc6236683c3b67c3b418fa52a9effe8613d91e29a6c1ca08e73f02783a0bd4d51fa36915c33e99ac9bcf381b1c6abb2cf3b4297fdbc5450ff5b541454fb
7
- data.tar.gz: 19e8412eb67c041a15c90550ba2eab0c0187e91567fbe495bbf4c7d4a71ce1618de11dd90c7423e582bb9763ff5cd75528b239414988b39af520c89d095d4a24
6
+ metadata.gz: 9935316b3dc3bbd2f170f1797c7b04dc1b83f23e1161ecc77a07fde824fae2fc1f0cf57742d8942fc6da1d831dc96ed1703ebfbd7dff886f0838a73adc26d7b3
7
+ data.tar.gz: d52d827d63a9db3046072c62add60d934b30833374593db1e97706b729b1b4b20cc34c17cd064d988c985df94cdac4a416451486820e11e824a0950e2359effe
@@ -1,8 +1,10 @@
1
1
  class EditmodeController < ApplicationController
2
2
 
3
3
  def clear_cache
4
-
5
- if params[:identifier]
4
+ if params[:full]
5
+ Rails.cache.clear
6
+ render status: 200, json: {:response => "success"}
7
+ elsif params[:identifier]
6
8
  Rails.cache.delete("chunk_#{params[:identifier]}")
7
9
  Rails.cache.delete("chunk_#{params[:identifier]}_type")
8
10
  render status: 200, json: {:response => "success"}
@@ -1,14 +1,67 @@
1
1
  require "active_support/dependencies"
2
+ require "editmode/version"
3
+ require 'editmode/script_tag'
4
+ require 'editmode/action_view_extensions/editmode_helper'
5
+ require 'editmode/auto_include_filter'
6
+ require 'editmode/railtie' if defined? Rails
7
+ require 'editmode/engine' if defined?(Rails)
2
8
 
3
- require "editmode-rails/version"
9
+ module Editmode
10
+ class << self
11
+ include Editmode::ActionViewExtensions::EditmodeHelper
12
+ def project_id=(id)
13
+ config.project_id = id
14
+ end
4
15
 
5
- require 'editmode-rails/script_tag'
6
- require 'editmode-rails/action_view_extensions/editmode_helper'
7
- require 'editmode-rails/auto_include_filter'
8
- require 'editmode-rails/railtie' if defined? Rails
16
+ def project_id
17
+ config.project_id
18
+ end
9
19
 
10
- module EditModeRails
11
- # Your code goes here...
12
- end
20
+ def access_token
21
+ config.access_token
22
+ end
13
23
 
14
- require 'editmode-rails/engine' if defined?(Rails)
24
+ def config
25
+ # Todo: Instantiate in editmode initializer or base controllers
26
+ # Todo: Add a generator to create initializer an file?
27
+ @config ||= Configuration.new
28
+ end
29
+
30
+ def setup
31
+ yield config
32
+ end
33
+
34
+ def chunk_value(identifier, **options)
35
+ body = options[:values].presence || {}
36
+ field_id = options[:field_id].presence
37
+ branch_id = options[:branch_id].presence
38
+
39
+ branch_params = branch_id.present? ? "branch_id=#{branch_id}" : ""
40
+ cache_identifier = "chunk_#{identifier}#{branch_id}"
41
+ url = "#{api_root_url}/chunks/#{identifier}?#{branch_params}"
42
+
43
+ begin
44
+ response = HTTParty.get(url, query: body)
45
+ response_received = true if response.code == 200
46
+
47
+ if !response_received
48
+ raise "No response received"
49
+ else
50
+ if field_id.present?
51
+ chunk = response["content"].detect {|f| f["custom_field_identifier"] == field_id }
52
+ chunk['content']
53
+ else
54
+ response['content']
55
+ end
56
+ end
57
+ rescue => error
58
+ # Todo: Send a log to editmode prob like sentry
59
+ return "No response received"
60
+ end
61
+ end
62
+ end
63
+
64
+ class Configuration
65
+ attr_accessor :project_id, :access_token
66
+ end
67
+ end
@@ -1,24 +1,21 @@
1
- module EditModeRails
1
+ module Editmode
2
2
  module ActionViewExtensions
3
- module EditModeHelper
3
+ module EditmodeHelper
4
4
 
5
5
  require 'httparty'
6
6
 
7
7
  def api_version
8
- "v1"
8
+ # Todo Add Header Version
9
9
  end
10
10
 
11
11
  def api_root_url
12
- ENV["EDITMODE_OVERRIDE_API_URL"] || "https://www.editmode.app/api"
12
+ ENV["EDITMODE_OVERRIDE_API_URL"] || "https://api.editmode.com"
13
13
  end
14
14
 
15
- def versioned_api_url
16
- "#{api_root_url}/#{api_version}"
17
- end
18
-
19
15
  def chunk_collection(collection_identifier,has_tags=[])
16
+ branch_params = params[:em_branch_id].present? ? "branch_id=#{params[:em_branch_id]}" : ""
20
17
  begin
21
- url = "#{versioned_api_url}/chunks?collection_identifier=#{collection_identifier}"
18
+ url = "#{api_root_url}/chunks?collection_identifier=#{collection_identifier}&#{branch_params}"
22
19
  response = HTTParty.get(url)
23
20
  raise "No response received" unless response.code == 200
24
21
  chunks = response["chunks"]
@@ -29,18 +26,18 @@ module EditModeRails
29
26
  end
30
27
  end
31
28
 
32
- def chunk_field_value(parent_chunk_object,custom_field_identifier,options={})
29
+ def chunk_field_value(parent_chunk_object, custom_field_identifier,options={})
33
30
 
34
31
  begin
35
32
  chunk_identifier = parent_chunk_object["identifier"]
36
- custom_field_item = parent_chunk_object["content"].detect {|f| f[custom_field_identifier].present? }
33
+ custom_field_item = parent_chunk_object["content"].detect {|f| f["custom_field_identifier"] == custom_field_identifier }
37
34
 
38
35
  if custom_field_item.present?
39
- properties = custom_field_item[custom_field_identifier]
40
36
  render_chunk_content(
41
- properties["identifier"],
42
- properties["content"],
43
- properties["chunk_type"]
37
+ custom_field_item["identifier"],
38
+ custom_field_item["content"],
39
+ custom_field_item["chunk_type"],
40
+ { parent_identifier: chunk_identifier }.merge(options)
44
41
  )
45
42
  end
46
43
  rescue => errors
@@ -64,39 +61,43 @@ module EditModeRails
64
61
  display_type = options[:display_type] || "span"
65
62
  end
66
63
 
64
+ chunk_data = { :chunk => chunk_identifier, :chunk_editable => false }
65
+
66
+ if options[:parent_identifier].present?
67
+ chunk_data.merge!({parent_identifier: options[:parent_identifier]})
68
+ end
69
+
67
70
  case display_type
68
71
  when "span"
69
72
  if chunk_type == "rich_text"
70
- content_tag(:span, :class => css_class, :data => {:chunk => chunk_identifier, :chunk_editable => false} ) do
73
+ content_tag("em-span", :class => css_class, :data => chunk_data ) do
71
74
  chunk_content.html_safe
72
75
  end
73
76
  else
74
- content_tag(:span, :class => css_class, :data => {:chunk => chunk_identifier, :chunk_editable => true} ) do
77
+ content_tag("em-span", :class => css_class, :data => chunk_data.merge!({:chunk_editable => true}) ) do
75
78
  chunk_content
76
79
  end
77
80
  end
78
81
  when "image"
79
- content_tag(:span, :data => {:chunk => chunk_identifier, :chunk_editable => false} ) do
80
- image_tag(chunk_content, :class => css_class)
81
- end
82
+ image_tag(chunk_content, :data => chunk_data, :class => css_class)
82
83
  end
83
84
  rescue => errors
84
85
  puts errors
85
- content_tag(:span, "&nbsp".html_safe)
86
+ content_tag("em-span", "&nbsp".html_safe)
86
87
  end
87
88
 
88
89
  end
89
90
 
90
91
  def chunk_display(label,identifier,options={},&block)
91
-
92
+ branch_id = params[:em_branch_id]
92
93
  # This method should never show an error.
93
94
  # If anything goes wrong fetching content
94
95
  # We should just show blank content, not
95
96
  # prevent the page from loading.
96
- begin
97
-
98
- cache_identifier = "chunk_#{identifier}"
99
- url = "#{versioned_api_url}/chunks/#{identifier}"
97
+ begin
98
+ branch_params = branch_id.present? ? "branch_id=#{branch_id}" : ""
99
+ cache_identifier = "chunk_#{identifier}#{branch_id}"
100
+ url = "#{api_root_url}/chunks/#{identifier}?#{branch_params}"
100
101
  cached_content_present = Rails.cache.exist?(cache_identifier)
101
102
 
102
103
  if !cached_content_present
@@ -116,16 +117,16 @@ module EditModeRails
116
117
  response['chunk_type']
117
118
  end
118
119
 
119
- render_chunk_content(identifier,chunk_content,chunk_type)
120
+ render_chunk_content(identifier,chunk_content,chunk_type, options)
120
121
 
121
122
  end
122
123
 
123
124
  rescue => error
124
125
  # Show fallback content by default
125
- return content_tag(:span, &block) if block_given?
126
+ return content_tag("em-span", &block) if block_given?
126
127
  # Otherwise show a span with no content to
127
128
  # maintain layout
128
- content_tag(:span, "&nbsp".html_safe)
129
+ content_tag("em-span", "&nbsp".html_safe)
129
130
  end
130
131
 
131
132
  end
@@ -1,10 +1,10 @@
1
- module EditModeRails
1
+ module Editmode
2
2
 
3
3
  module AutoInclude
4
4
 
5
5
  module Method
6
6
  def editmode_auto_include
7
- EditModeRails::AutoInclude::Filter.filter(self)
7
+ Editmode::AutoInclude::Filter.filter(self)
8
8
  end
9
9
  end
10
10
 
@@ -41,7 +41,7 @@ module EditModeRails
41
41
  end
42
42
 
43
43
  def html_content_type?
44
- response.content_type.include? 'text/html'
44
+ response.content_type.try(:include?,'text/html')
45
45
  end
46
46
 
47
47
  def response_has_closing_body_tag?
@@ -49,7 +49,7 @@ module EditModeRails
49
49
  end
50
50
 
51
51
  def editmode_script_tag
52
- @script_tag ||= EditModeRails::ScriptTag.new()
52
+ @script_tag ||= Editmode::ScriptTag.new()
53
53
  end
54
54
 
55
55
  def enabled_for_environment?
@@ -1,4 +1,4 @@
1
- module EditMode
1
+ module Editmode
2
2
 
3
3
  class Engine < Rails::Engine
4
4
 
@@ -1,9 +1,9 @@
1
- module EditModeRails
1
+ module Editmode
2
2
  class Railtie < Rails::Railtie
3
- initializer "editmode-rails" do |app|
3
+ initializer "editmode" do |app|
4
4
 
5
5
  ActiveSupport.on_load :action_view do
6
- include EditModeRails::ActionViewExtensions::EditModeHelper
6
+ include Editmode::ActionViewExtensions::EditmodeHelper
7
7
  end
8
8
  ActiveSupport.on_load :action_controller do
9
9
  include AutoInclude::Method
@@ -1,4 +1,4 @@
1
- module EditModeRails
1
+ module Editmode
2
2
 
3
3
  class ScriptTag
4
4
 
@@ -17,6 +17,7 @@ module EditModeRails
17
17
  def output
18
18
 
19
19
  str = <<-EDITMODE_SCRIPT
20
+ <script>window.chunksProjectIdentifier = '#{Editmode.project_id}'</script>
20
21
  <script src="#{script_url}" async ></script>
21
22
  EDITMODE_SCRIPT
22
23
 
@@ -25,7 +26,7 @@ module EditModeRails
25
26
  end
26
27
 
27
28
  def script_url
28
- ENV["EDITMODE_OVERRIDE_SCRIPT_URL"] || "https://www.editmode.app/assets/chunks.js"
29
+ ENV["EDITMODE_OVERRIDE_SCRIPT_URL"] || "https://static.editmode.com/editmode@1.0.0/dist/editmode.js"
29
30
  end
30
31
 
31
32
  end
@@ -0,0 +1,3 @@
1
+ module Editmode
2
+ VERSION = "0.0.10.1"
3
+ end
@@ -0,0 +1,26 @@
1
+
2
+ require 'rails/generators/base'
3
+
4
+ module Editmode
5
+ module Generators
6
+ class ConfigGenerator < Rails::Generators::Base
7
+ source_root File.expand_path("../templates", __FILE__)
8
+
9
+ argument :project_id, :desc => "Your Editmode project_id, which can be found here: https://www.editmode.com/projects"
10
+
11
+ def create_config_file
12
+ @project_id = project_id
13
+
14
+ introduction = <<-intro
15
+ Editmode will automatically insert its javascript before the closing '</body>'
16
+ tag on every page.
17
+
18
+ intro
19
+
20
+ print "#{introduction} "
21
+
22
+ template "editmode.rb.erb", "config/initializers/editmode.rb"
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,5 @@
1
+ Editmode.setup do |config|
2
+ # Replace TodoProjectId with your Editmode Project ID,
3
+ # visit https://editmode.com/projects
4
+ config.project_id = "<%= @project_id %>"
5
+ 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: 0.0.9.74
4
+ version: 0.0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tony Ennis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-08 00:00:00.000000000 Z
11
+ date: 2020-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -79,13 +79,15 @@ files:
79
79
  - Rakefile
80
80
  - app/controllers/editmode_controller.rb
81
81
  - config/routes.rb
82
- - lib/editmode-rails/action_view_extensions/editmode_helper.rb
83
- - lib/editmode-rails/auto_include_filter.rb
84
- - lib/editmode-rails/engine.rb
85
- - lib/editmode-rails/railtie.rb
86
- - lib/editmode-rails/script_tag.rb
87
- - lib/editmode-rails/version.rb
88
82
  - lib/editmode.rb
83
+ - lib/editmode/action_view_extensions/editmode_helper.rb
84
+ - lib/editmode/auto_include_filter.rb
85
+ - lib/editmode/engine.rb
86
+ - lib/editmode/railtie.rb
87
+ - lib/editmode/script_tag.rb
88
+ - lib/editmode/version.rb
89
+ - lib/generators/editmode/config_generator.rb
90
+ - lib/generators/editmode/templates/editmode.rb.erb
89
91
  homepage: https://github.com/tonyennis145/editmode-rails
90
92
  licenses:
91
93
  - MIT
@@ -105,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
107
  - !ruby/object:Gem::Version
106
108
  version: '0'
107
109
  requirements: []
108
- rubygems_version: 3.0.3
110
+ rubygems_version: 3.0.8
109
111
  signing_key:
110
112
  specification_version: 4
111
113
  summary: Editmode allows you to turn plain text in your rails app into easily inline-editable
@@ -1,3 +0,0 @@
1
- module EditModeRails
2
- VERSION = "0.0.9.74"
3
- end