embeditor-rails 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +54 -7
- data/app/assets/javascripts/embeditor/adapter.js.coffee +21 -11
- data/app/assets/javascripts/embeditor/adapters/cover_it_live.js.coffee +16 -15
- data/app/assets/javascripts/embeditor/adapters/document_cloud.js.coffee +1 -0
- data/app/assets/javascripts/embeditor/adapters/embedly.js.coffee +3 -1
- data/app/assets/javascripts/embeditor/adapters/facebook.js.coffee +18 -0
- data/app/assets/javascripts/embeditor/adapters/fire_tracker.js.coffee +3 -1
- data/app/assets/javascripts/embeditor/adapters/instagram.js.coffee +28 -0
- data/app/assets/javascripts/embeditor/adapters/oembed.js.coffee +18 -12
- data/app/assets/javascripts/embeditor/adapters/polldaddy.js.coffee +14 -4
- data/app/assets/javascripts/embeditor/adapters/rebel_mouse.js.coffee +1 -0
- data/app/assets/javascripts/embeditor/adapters/static_template.js.coffee +43 -0
- data/app/assets/javascripts/embeditor/adapters/storify.js.coffee +24 -0
- data/app/assets/javascripts/embeditor/adapters/twitter.js.coffee +14 -0
- data/app/assets/javascripts/embeditor/embeditor.js.coffee +10 -5
- data/app/assets/javascripts/embeditor/templates/facebook.jst.eco +2 -0
- data/app/assets/javascripts/embeditor/templates/instagram.jst.eco +1 -0
- data/app/assets/javascripts/embeditor/templates/polldaddy.jst.eco +4 -0
- data/app/assets/javascripts/embeditor/templates/storify.jst.eco +1 -0
- data/app/assets/javascripts/embeditor/templates/twitter.jst.eco +2 -0
- data/app/assets/javascripts/embeditor/utility.js.coffee +15 -0
- data/app/assets/javascripts/embeditor.js +3 -0
- data/lib/embeditor-rails/version.rb +1 -1
- metadata +16 -3
data/README.md
CHANGED
@@ -41,16 +41,26 @@ occur, and call its `swap()` function to perform the swapping:
|
|
41
41
|
</script>
|
42
42
|
```
|
43
43
|
|
44
|
-
Embeditor works by replacing `A` tags
|
45
|
-
appropriate embed.
|
44
|
+
Embeditor works by replacing `A` tags with a specific class with the
|
45
|
+
appropriate embed. The default class is `embed-placeholder`, but that can be
|
46
|
+
configured.
|
46
47
|
|
47
|
-
|
48
|
-
|
49
|
-
|
48
|
+
There are several adapters included with this engine:
|
49
|
+
|
50
|
+
* **Embedly** - Covers several services, such as SoundCloud, Spotify, Scribd, Google
|
51
|
+
Maps, and others. See
|
52
|
+
[the list of Embedly's providers](http://embed.ly/embed/features/providers).
|
53
|
+
Embedly doesn't always work perfectly, so Embeditor provides manual adapters
|
54
|
+
for some of the providers that Embedly claims to support.
|
50
55
|
* **Cover It Live**
|
51
|
-
* **
|
56
|
+
* **Polldaddy**
|
52
57
|
* **KPCC's Fire Tracker**
|
53
|
-
* **
|
58
|
+
* **Instagram**
|
59
|
+
* **Facebook**
|
60
|
+
* **Twitter**
|
61
|
+
* **Storify**
|
62
|
+
* **Document Cloud** - Not yet supported.
|
63
|
+
* **Rebel Mouse** - Not yet supported.
|
54
64
|
|
55
65
|
None of these are included automatically. To install just the ones you need,
|
56
66
|
add them to your `application.js` :
|
@@ -80,6 +90,20 @@ You can also selectively require templates:
|
|
80
90
|
|
81
91
|
### Configuration
|
82
92
|
|
93
|
+
#### Embeditor
|
94
|
+
|
95
|
+
You can configure:
|
96
|
+
|
97
|
+
* `defaultAdapter` - The adapter that will be used if no adapter is found for
|
98
|
+
the provided service.
|
99
|
+
* `defaultService` - The service that will be used if no service is provided
|
100
|
+
on the placeholder link.
|
101
|
+
* `wrapperClass` - The class of the div that will get wrapped around the embed.
|
102
|
+
* `placeholderClass` - The class of the `<A>` tags that Embeditor will look for.
|
103
|
+
|
104
|
+
|
105
|
+
#### Embeds
|
106
|
+
|
83
107
|
Embeditor offers a system of configuration precedence.
|
84
108
|
The order of precedence is:
|
85
109
|
|
@@ -181,8 +205,31 @@ new Embeditor.Base({
|
|
181
205
|
```
|
182
206
|
|
183
207
|
|
208
|
+
### oEmbed vs. non-oEmbed
|
209
|
+
|
210
|
+
This library isn't necessarily tied to oEmbed, however it does have support for
|
211
|
+
it. Even for services which support oEmbed, there are static templates which
|
212
|
+
are able to render the embed properly just based off of the provided URL.
|
213
|
+
This eliminates any oEmbed headaches (Access-Control-Allowed-Origin, for
|
214
|
+
example), and also reduces the time it takes for an embed to load.
|
215
|
+
|
216
|
+
|
217
|
+
|
184
218
|
## Extending
|
185
219
|
|
186
220
|
You can/should add your own adapters! It's easy, I promise. If you add one
|
187
221
|
which you think could be useful to a lot of people, please submit a PR and
|
188
222
|
share the wealth!
|
223
|
+
|
224
|
+
You can extend your adapter from:
|
225
|
+
|
226
|
+
* `Embeditor.Adapter`, which is the base adapter.
|
227
|
+
* `Embeditor.Adapters.Oembed`, for oEmbed endpoints.
|
228
|
+
* `Embeditor.Adapters.StaticTemplate`, for embeds where the embed code is
|
229
|
+
stored in the `/templates` directory and rendered with JST.
|
230
|
+
|
231
|
+
|
232
|
+
## Contributing
|
233
|
+
|
234
|
+
If you have an adapter that you think would be useful for many, please open
|
235
|
+
up a pull request.
|
@@ -1,24 +1,34 @@
|
|
1
|
-
# Your Adapter
|
2
|
-
# * QueryDefaults -
|
1
|
+
# Your Adapter SHOULD define:
|
2
|
+
# * @QueryDefaults - The default parameters if no others are passed in.
|
3
3
|
|
4
4
|
class Embeditor.Adapter
|
5
|
-
|
5
|
+
className: "Adapter"
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
@QueryDefaults = {}
|
8
|
+
|
9
|
+
constructor: (@element, @options={}) ->
|
10
|
+
@adapter = Embeditor.Adapters[@className]
|
11
|
+
@href = @element.attr('href')
|
12
|
+
@dataOptions = @_extractData()
|
13
|
+
@queryParams = @_buildParams(@dataOptions, options)
|
9
14
|
|
10
15
|
|
11
16
|
swap: ->
|
12
17
|
return
|
13
18
|
|
14
19
|
|
20
|
+
embed: (html) ->
|
21
|
+
@wrapper = $("<div />", class: @options.wrapperClass)
|
22
|
+
@wrapper.html(html)
|
23
|
+
@element.after @wrapper
|
24
|
+
|
25
|
+
|
15
26
|
_extractData: ->
|
16
|
-
adapter = @constructor.name
|
17
27
|
dataOptions = {}
|
18
28
|
|
19
29
|
for key,val of @element.data()
|
20
30
|
# Make sure we care about this attribute
|
21
|
-
if
|
31
|
+
if @adapter.QueryDefaults?[key]
|
22
32
|
dataOptions[key] = val
|
23
33
|
|
24
34
|
dataOptions
|
@@ -31,8 +41,8 @@ class Embeditor.Adapter
|
|
31
41
|
# 3. The global options specified at Embeditor initialization,
|
32
42
|
# 4. This adapter's default options (fallback options).
|
33
43
|
_buildParams: (dataOptions, options) ->
|
34
|
-
adapter = @constructor.name
|
35
|
-
|
36
44
|
_.defaults(dataOptions,
|
37
|
-
|
38
|
-
|
45
|
+
@adapter.query,
|
46
|
+
options['query'],
|
47
|
+
@adapter.QueryDefaults
|
48
|
+
)
|
@@ -1,24 +1,25 @@
|
|
1
|
-
class Embeditor.Adapters.CoverItLive extends Embeditor.
|
2
|
-
|
1
|
+
class Embeditor.Adapters.CoverItLive extends Embeditor.Adapters.StaticTemplate
|
2
|
+
className: "CoverItLive"
|
3
|
+
|
4
|
+
@Template = Embeditor.Template('cover_it_live')
|
3
5
|
|
4
6
|
@QueryDefaults =
|
5
|
-
maxheight : 550
|
6
7
|
maxwidth : 620
|
8
|
+
maxheight : 550
|
7
9
|
|
8
|
-
@
|
9
|
-
|
10
|
-
|
11
|
-
constructor: (@element, options={}) ->
|
12
|
-
@dataOptions = @_extractData()
|
13
|
-
@queryParams = @_buildParams(@dataOptions, options)
|
14
|
-
|
15
|
-
super
|
16
|
-
|
10
|
+
@Matchers = [
|
11
|
+
new RegExp "/altcast_code=([^/]+)/", "gi"
|
12
|
+
]
|
17
13
|
|
18
14
|
swap: ->
|
19
|
-
|
15
|
+
# If the href doesn't match our known URL schemes
|
16
|
+
# for this adapter, then let's not bother trying.
|
17
|
+
match = @_parseUrl()
|
18
|
+
return false if not match
|
19
|
+
|
20
|
+
event_id = match[1]
|
20
21
|
|
21
|
-
@
|
22
|
+
@embed CoverItLive.Template
|
22
23
|
maxheight : @queryParams.maxheight,
|
23
24
|
maxwidth : @queryParams.maxwidth,
|
24
|
-
event_id :
|
25
|
+
event_id : event_id
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# This doesn't inherit from Adapters.Oembed because the Embedly plugin
|
2
2
|
# handles most of that stuff on its own.
|
3
3
|
class Embeditor.Adapters.Embedly extends Embeditor.Adapter
|
4
|
+
className: "Embedly"
|
5
|
+
|
4
6
|
# This object should hold any keys that we want to
|
5
7
|
# send to the API. Any key not in this object will
|
6
8
|
# be ignored as a data attribute.
|
@@ -14,7 +16,7 @@ class Embeditor.Adapters.Embedly extends Embeditor.Adapter
|
|
14
16
|
# Key must be specified
|
15
17
|
|
16
18
|
|
17
|
-
constructor: (@element, options={}) ->
|
19
|
+
constructor: (@element, @options={}) ->
|
18
20
|
pluginOpts = options['Embedly']?['plugin'] or {}
|
19
21
|
@pluginOptions = _.defaults(pluginOpts, Embedly.PluginDefaults)
|
20
22
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class Embeditor.Adapters.Facebook extends Embeditor.Adapters.StaticTemplate
|
2
|
+
className: "Facebook"
|
3
|
+
|
4
|
+
@Template = Embeditor.Template('facebook')
|
5
|
+
|
6
|
+
@QueryDefaults =
|
7
|
+
maxwidth : 550
|
8
|
+
maxheight : 600
|
9
|
+
|
10
|
+
# For facebook, we just use the full URL, so no matchers are needed.
|
11
|
+
@Matchers = []
|
12
|
+
|
13
|
+
|
14
|
+
swap: ->
|
15
|
+
@embed Facebook.Template
|
16
|
+
maxheight : @queryParams.maxheight,
|
17
|
+
maxwidth : @queryParams.maxwidth,
|
18
|
+
url : @href
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# Instagram's oembed endpoint returns "photo" oembed types (instead of "rich"),
|
2
|
+
# and only a URL to the photo, not an actual embed code. Therefore, we need to
|
3
|
+
# use StaticTemplate to use the iframe embed code.
|
4
|
+
class Embeditor.Adapters.Instagram extends Embeditor.Adapters.StaticTemplate
|
5
|
+
className: "Instagram"
|
6
|
+
|
7
|
+
@Template = Embeditor.Template('instagram')
|
8
|
+
|
9
|
+
@QueryDefaults =
|
10
|
+
maxwidth : 612
|
11
|
+
maxheight : 710
|
12
|
+
|
13
|
+
@Matchers = [
|
14
|
+
# http://instagram.com/p/e8hJe6CvTW/
|
15
|
+
new RegExp "instagram\.com\/p\/([^/]+)", "gi"
|
16
|
+
]
|
17
|
+
|
18
|
+
|
19
|
+
swap: ->
|
20
|
+
match = @_parseUrl()
|
21
|
+
return false if not match
|
22
|
+
|
23
|
+
photo_id = match[1]
|
24
|
+
|
25
|
+
@embed Instagram.Template
|
26
|
+
maxheight : @queryParams.maxheight
|
27
|
+
maxwidth : @queryParams.maxwidth
|
28
|
+
photo_id : photo_id
|
@@ -1,17 +1,23 @@
|
|
1
|
+
# Oembed adapters MUST define:
|
2
|
+
# * @Endpoint - The URL to the oembed endpoint
|
3
|
+
#
|
4
|
+
# Oembed adapters SHOULD defined:
|
5
|
+
# * @QueryDefaults - The fallback query parameters if no others are specified.
|
1
6
|
class Embeditor.Adapters.Oembed extends Embeditor.Adapter
|
2
|
-
|
3
|
-
@Path = null
|
7
|
+
className: "Oembed"
|
4
8
|
|
5
|
-
|
6
|
-
|
7
|
-
@queryParams = @_buildParams(@dataOptions, options)
|
9
|
+
# Override this. Oembed endpoint.
|
10
|
+
@Endpoint = null
|
8
11
|
|
9
|
-
|
12
|
+
swap: ->
|
13
|
+
$.ajax
|
14
|
+
url : @adapter.Endpoint
|
15
|
+
type : 'GET'
|
16
|
+
dataType : 'json'
|
17
|
+
data : _.extend(@queryParams, {url: @href})
|
10
18
|
|
19
|
+
success: (data, textStatus, jqXHR) =>
|
20
|
+
@embed data.html
|
11
21
|
|
12
|
-
|
13
|
-
|
14
|
-
Embeditor.Adapters[@constructor.name].Path,
|
15
|
-
_.extend({url: @href}, @queryParams),
|
16
|
-
(data, textStatus, jqXHR) => @element.after(data.html)
|
17
|
-
)
|
22
|
+
error: (jqXHR, textStatus, errorThrown) =>
|
23
|
+
console.log('[embeditor oembed] error.', jqXHR)
|
@@ -1,7 +1,17 @@
|
|
1
1
|
class Embeditor.Adapters.Polldaddy extends Embeditor.Adapters.Oembed
|
2
|
-
|
2
|
+
className: "Polldaddy"
|
3
|
+
|
4
|
+
@Endpoint = "http://polldaddy.com/oembed/" # Doesn't work w/o trailing slash...
|
3
5
|
|
4
6
|
@QueryDefaults =
|
5
|
-
maxwidth
|
6
|
-
maxheight
|
7
|
-
format
|
7
|
+
maxwidth : 620
|
8
|
+
maxheight : 550
|
9
|
+
format : 'json'
|
10
|
+
|
11
|
+
|
12
|
+
constructor: (@element, @options={}) ->
|
13
|
+
super
|
14
|
+
|
15
|
+
# Work around a polldaddy bug where the oembed endpoint doesn't
|
16
|
+
# properly recognize SSL URL's given to it.
|
17
|
+
@href = Embeditor.Utility.convertProtocolToHttp(@href)
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# StaticTemplate is for when you just want to hard-code the embed code
|
2
|
+
# into the /templates directory. This is either to avoid an expensive
|
3
|
+
# call to an oEmbed endpoint, or if there simply isn't another way to
|
4
|
+
# programatically retrieve the embed code.
|
5
|
+
#
|
6
|
+
# Your StaticTemplate adapter MUST define:
|
7
|
+
# * @Tempalte - The name of the template to use (in the templates directory)
|
8
|
+
#
|
9
|
+
# Your StaticTemplate adapter SHOULD define:
|
10
|
+
# * @QueryDefaults - The default query paramters if no others are passed in.
|
11
|
+
#
|
12
|
+
# Your StaticTemplate adapter MAY define:
|
13
|
+
# * @Matchers - An array of regular expressions which will be used to extract
|
14
|
+
# important information from the URL (such as an ID).
|
15
|
+
# If your adapter doesn't need a Matcher, then you don't have to
|
16
|
+
# define this property. This property is used by _parseUrl(),
|
17
|
+
# which doesn't get called automatically.
|
18
|
+
#
|
19
|
+
class Embeditor.Adapters.StaticTemplate extends Embeditor.Adapter
|
20
|
+
className: "StaticTemplate"
|
21
|
+
|
22
|
+
# The template to use.
|
23
|
+
@Template = null
|
24
|
+
|
25
|
+
# Query parameter defaults
|
26
|
+
@QueryDefaults = {}
|
27
|
+
|
28
|
+
# The matchers to extract the info out of the URL.
|
29
|
+
@Matchers = []
|
30
|
+
|
31
|
+
|
32
|
+
swap: ->
|
33
|
+
# Extract the info and render the template
|
34
|
+
return
|
35
|
+
|
36
|
+
|
37
|
+
_parseUrl: ->
|
38
|
+
match = null
|
39
|
+
|
40
|
+
_.find @adapter.Matchers, (m) =>
|
41
|
+
match = m.exec(@href)
|
42
|
+
|
43
|
+
match
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class Embeditor.Adapters.Storify extends Embeditor.Adapters.StaticTemplate
|
2
|
+
className: "Storify"
|
3
|
+
|
4
|
+
@Template = Embeditor.Template('storify')
|
5
|
+
|
6
|
+
@QueryDefaults =
|
7
|
+
maxwidth : 550
|
8
|
+
maxheight : 750
|
9
|
+
|
10
|
+
# For storify, we just use the full URL, so no matchers are needed.
|
11
|
+
@Matchers = []
|
12
|
+
|
13
|
+
|
14
|
+
swap: ->
|
15
|
+
# Storify's embed code doesn't provide a protocol (http/s), so let's
|
16
|
+
# strip it out. We also want to make sure that there is no trailing
|
17
|
+
# slash so that we can concatenate other things to the URL.
|
18
|
+
url = Embeditor.Utility.stripProtocol(
|
19
|
+
Embeditor.Utility.stripTrailingSlash(@href))
|
20
|
+
|
21
|
+
# Storify embed is responsive, so we don't need to provide a width.
|
22
|
+
@embed Storify.Template
|
23
|
+
maxheight : @queryParams.maxheight
|
24
|
+
url : url
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class Embeditor.Adapters.Twitter extends Embeditor.Adapters.StaticTemplate
|
2
|
+
className: "Twitter"
|
3
|
+
|
4
|
+
@Template = Embeditor.Template('twitter')
|
5
|
+
|
6
|
+
# Twitter doesn't give a damn about you or your dimensions.
|
7
|
+
@QueryDefaults = {}
|
8
|
+
|
9
|
+
# For twitter, we just use the full URL, so no matchers are needed.
|
10
|
+
@Matchers = []
|
11
|
+
|
12
|
+
|
13
|
+
swap: ->
|
14
|
+
@embed Twitter.Template(url : @href)
|
@@ -7,21 +7,26 @@ window.Embeditor = {
|
|
7
7
|
# 'brightcove' : 'Embedly'
|
8
8
|
'ustream' : 'Embedly'
|
9
9
|
'vine' : 'Embedly'
|
10
|
-
|
10
|
+
'googlemaps' : 'Embedly'
|
11
11
|
'scribd' : 'Embedly'
|
12
12
|
# 'documentcloud' : 'DocumentCloud'
|
13
13
|
'polldaddy' : 'Polldaddy'
|
14
|
-
'facebook' : '
|
15
|
-
|
14
|
+
'facebook' : 'Facebook'
|
15
|
+
'storify' : 'Storify'
|
16
16
|
'coveritlive' : 'CoverItLive'
|
17
17
|
# 'rebelmouse' : 'RebelMouse'
|
18
18
|
'firetracker' : 'FireTracker'
|
19
|
-
|
20
|
-
'instagram' : '
|
19
|
+
'twitter' : 'Twitter'
|
20
|
+
'instagram' : 'Instagram'
|
21
21
|
'soundcloud' : 'Embedly'
|
22
22
|
'spotify' : 'Embedly'
|
23
23
|
'other' : 'Embedly'
|
24
24
|
|
25
|
+
TemplatePath : 'embeditor/templates/'
|
26
|
+
|
27
|
+
Template : (template) ->
|
28
|
+
JST[@TemplatePath + template]
|
29
|
+
|
25
30
|
DefaultOptions :
|
26
31
|
defaultAdapter : 'Embedly' # Adapter that gets used when the service isn't recognized
|
27
32
|
defaultService : 'other' # Service that gets used when the `data-service` attribute is missing
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script>
|
2
|
+
<div class="fb-post" data-href="<%=@url%>" data-width="<%=@maxwidth%>"></div>
|
@@ -0,0 +1 @@
|
|
1
|
+
<iframe src="//instagram.com/p/<%=@photo_id%>/embed/" width="<%=@maxwidth%>" height="<%=@maxheight%>" frameborder="0" scrolling="no" allowtransparency="true"></iframe>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<div class="pd-embed" data-settings="{"type":"iframe","auto":true,"domain":"<%=@domain%>\/s\/","id":"<%=@poll_id%>"}"></div>
|
2
|
+
<script type="text/javascript">
|
3
|
+
(function(d,c,j){if(!document.getElementById(j)){var pd=d.createElement(c),s;pd.id=j;pd.src=('https:'==document.location.protocol)?'https://polldaddy.com/survey.js':'http://i0.poll.fm/survey.js';s=document.getElementsByTagName(c)[0];s.parentNode.insertBefore(pd,s);}}(document,'script','pd-embed'));
|
4
|
+
</script>
|
@@ -0,0 +1 @@
|
|
1
|
+
<div class="storify"><iframe src="<%=@url%>/embed" width="100%" height=<%=@maxheight%>frameborder=no allowtransparency=true></iframe><script src="<%=@url%>.js"></script></div>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class Embeditor.Utility
|
2
|
+
@stripProtocol: (str) ->
|
3
|
+
str.replace(/^https?:/, "")
|
4
|
+
|
5
|
+
|
6
|
+
@stripTrailingSlash: (str) ->
|
7
|
+
str.replace(/\/$/, "")
|
8
|
+
|
9
|
+
|
10
|
+
@convertProtocolToHttp: (str) ->
|
11
|
+
str.replace(/^https:/, 'http:')
|
12
|
+
|
13
|
+
|
14
|
+
@convertProtocolToHttps: (str) ->
|
15
|
+
str.replace(/^http:/, 'https:')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embeditor-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-10-
|
12
|
+
date: 2013-10-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -72,14 +72,25 @@ files:
|
|
72
72
|
- app/assets/javascripts/embeditor/adapters/cover_it_live.js.coffee
|
73
73
|
- app/assets/javascripts/embeditor/adapters/document_cloud.js.coffee
|
74
74
|
- app/assets/javascripts/embeditor/adapters/embedly.js.coffee
|
75
|
+
- app/assets/javascripts/embeditor/adapters/facebook.js.coffee
|
75
76
|
- app/assets/javascripts/embeditor/adapters/fire_tracker.js.coffee
|
77
|
+
- app/assets/javascripts/embeditor/adapters/instagram.js.coffee
|
76
78
|
- app/assets/javascripts/embeditor/adapters/oembed.js.coffee
|
77
79
|
- app/assets/javascripts/embeditor/adapters/polldaddy.js.coffee
|
78
80
|
- app/assets/javascripts/embeditor/adapters/rebel_mouse.js.coffee
|
81
|
+
- app/assets/javascripts/embeditor/adapters/static_template.js.coffee
|
82
|
+
- app/assets/javascripts/embeditor/adapters/storify.js.coffee
|
83
|
+
- app/assets/javascripts/embeditor/adapters/twitter.js.coffee
|
79
84
|
- app/assets/javascripts/embeditor/adapters.js
|
80
85
|
- app/assets/javascripts/embeditor/embeditor.js.coffee
|
81
86
|
- app/assets/javascripts/embeditor/templates/cover_it_live.jst.eco
|
87
|
+
- app/assets/javascripts/embeditor/templates/facebook.jst.eco
|
88
|
+
- app/assets/javascripts/embeditor/templates/instagram.jst.eco
|
89
|
+
- app/assets/javascripts/embeditor/templates/polldaddy.jst.eco
|
90
|
+
- app/assets/javascripts/embeditor/templates/storify.jst.eco
|
91
|
+
- app/assets/javascripts/embeditor/templates/twitter.jst.eco
|
82
92
|
- app/assets/javascripts/embeditor/templates.js
|
93
|
+
- app/assets/javascripts/embeditor/utility.js.coffee
|
83
94
|
- app/assets/javascripts/embeditor.js
|
84
95
|
- lib/embeditor-rails/version.rb
|
85
96
|
- lib/embeditor-rails.rb
|
@@ -87,7 +98,8 @@ files:
|
|
87
98
|
- Rakefile
|
88
99
|
- README.md
|
89
100
|
homepage: https://github.com/SCPR/embeditor-rails
|
90
|
-
licenses:
|
101
|
+
licenses:
|
102
|
+
- MIT
|
91
103
|
post_install_message:
|
92
104
|
rdoc_options: []
|
93
105
|
require_paths:
|
@@ -111,3 +123,4 @@ signing_key:
|
|
111
123
|
specification_version: 3
|
112
124
|
summary: Embeditor plugin for Rails.
|
113
125
|
test_files: []
|
126
|
+
has_rdoc:
|