tinymce-rails-documentupload 3.5.8.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e031008e784fe63af23e71c55c292e556fd918d1
4
+ data.tar.gz: dc4c2212136065e57834507e2b852299b19c3e8e
5
+ SHA512:
6
+ metadata.gz: 4fcad4fd07ec52c255ac18f3393aabe543a63556b4b7ec5cfb49776b30fb4c1ebd02023191938b4f44e181a5284d4242a3817e2498b827e90ff4d6c872e00851
7
+ data.tar.gz: 99af450a72e56f43a4d6f6eb4c59218551740cc44b5804c7b888bd3e1409a04b1ce28a261b326ff795e4b2704ac339a7eb3409c25ddf7479d66663b35996d11e
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/CHANGELOG.md ADDED
@@ -0,0 +1,3 @@
1
+ # 3.5.8.5 / 2013-05-09
2
+
3
+ * Initial release
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ MIT LICENSE
2
+
3
+ Copyright (c) 2013 Per Florent Morin <morinflorent@gmail.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,119 @@
1
+ # tinymce-rails-documentupload
2
+
3
+ Simple plugin for TinyMCE that allows uploading documents and inserting.
4
+ It makes no assumptions about how you store the documents, but it POSTs to a URL and expects JSON back (see the Setup section).
5
+
6
+ This plugin is adapted from work done by [Christian Bechström Viken for TinyMCE Rails Image Upload plugin](https://github.com/PerfectlyNormal/tinymce-rails-imageupload).
7
+
8
+ The icon used for the button comes from the icon set [Silk by famfamfam](http://www.famfamfam.com/lab/icons/silk/) and the spinner image from [ajaxload.info](http://ajaxload.info/).
9
+
10
+ ## Requirements
11
+
12
+ * Rails >= 3.1
13
+ * TinyMCE using the advanced theme
14
+
15
+ ## Setup
16
+
17
+ ### Add the gem to your Gemfile
18
+
19
+ gem 'tinymce-rails-documentupload', '~> 3.5.8.1'
20
+
21
+ ### Set up TinyMCE as you would normally, but in the call to `.tinymce()`, add
22
+
23
+ plugins: "uploaddocument"
24
+ # theme_advanced_buttonsX must include "uploaddocument" somewhere to have the button appear
25
+
26
+ and the rest should happen automatically.
27
+
28
+ ### Set up upload URL and handler
29
+
30
+ The plugin defaults to POSTing to `/tinymce_documents`. You may modify it by supplying option `uploaddocument_form_url` in the call to `.tinymce()`
31
+
32
+ Routing to your controller must be done manually. Set it up using something similar in `routes.rb`:
33
+
34
+ post '/tinymce_documents' => 'tinymce_documents#create'
35
+
36
+ The plugin will relay option `uploaddocument_hint` in the call to `.tinymce()` to the POSTed URL as param `hint`. You may use this to relay any hints you wish (for example, blog post ID #) to the controller.
37
+
38
+ This action gets called with a file parameter creatively called `file`, and must respond with JSON, containing the URL to the document.
39
+
40
+ The JSON has to be returned with a content type of "text/html" to work, which is going to be fixed as soon as possible ([issue #7](https://github.com/PerfectlyNormal/tinymce-rails-imageupload/issues/7)).
41
+
42
+ Example:
43
+
44
+ class TinymceDocumentsController < ApplicationController
45
+ def create
46
+ # Take upload from params[:file] and store it somehow...
47
+ # Optionally also accept params[:hint] and consume if needed
48
+
49
+ render json: {
50
+ document: {
51
+ url: view_context.document_url(image)
52
+ }
53
+ }, content_type: "text/html"
54
+ end
55
+ end
56
+
57
+ If the JSON response contains a `thumb` object with `url` and `width` and/or `height` key, those will be used in the inserted HTML (`<a href="..."><img src="..." width="..." height="..." alt="..."></a>`), but if those are not present, the inserted HTML is just `<a href="...">description</a>`.
58
+
59
+ ### Default class for a tag
60
+
61
+ By default the plugin doesn't assign any class to the a tag. You can set the class(es) by supplying the `uploaddocument_default_a_class` option in the call to `.tinymce()`.
62
+
63
+ `class="..."` will only be added to the a tag if a default is specified. Otherwise the inserted HTML is just `<a href="...">`.
64
+
65
+ ## Error handling
66
+
67
+ To notify the uploader that an error occurred, return JSON containing a `error` key with a `message`.
68
+ The message gets show in a paragraph with the ID `error_message`, and the input label gets the class `invalid`.
69
+
70
+ Example response:
71
+
72
+ "{"error": {"message": "Invalid file type. Only .jpg, .png and .gif allowed"}}"
73
+
74
+ ## Internationalization
75
+
76
+ I18n is taken care of by `tinymce-rails`. This gem includes strings for english and french.
77
+ To add your own language, create the files `<code>.js` and `<code>_dlg.js` in `vendor/assets/javascripts/tinymce/plugins/uploaddocument/langs` in your application,
78
+ or fork the gem and add your own translations there.
79
+
80
+ To get your custom language precompiled, you have to add it to the list of files manually.
81
+ If you have a fork, just add it to the list in `lib/tinymce-rails-documentupload/rails.rb`, but if you have the translations in the application,
82
+ you can add it like this in `config/application.rb`:
83
+
84
+ config.assets.precompile += %w(tinymce/plugins/uploaddocument/langs/fr.js tinymce/plugins/uploaddocument/langs/fr_dlg.js)
85
+
86
+ The available strings are listed below:
87
+
88
+ ### en.js
89
+
90
+ tinyMCE.addI18n('en.uploaddocument', {
91
+ desc: 'Insert a document from your computer'
92
+ });
93
+
94
+ ### en_dlg.js
95
+
96
+ tinyMCE.addI18n('en.uploaddocument_dlg', {
97
+ title: 'Insert document',
98
+ header: "Insert document",
99
+ input: "Choose a document",
100
+ uploading: "Uploading…",
101
+ blank_input: "Must choose a file",
102
+ bad_response: "Got a bad response from the server",
103
+ blank_response: "Didn't get a response from the server",
104
+ insert: "Insert",
105
+ cancel: "Cancel",
106
+ alt_text: "Document description"
107
+ });
108
+
109
+ ## Versioning
110
+
111
+ The major, minor and patch version of this gem will be mirroring the release of `tinymce-rails` it is tested against.
112
+
113
+ ## Licensing
114
+
115
+ The plugin is released under the MIT license.
116
+
117
+ TinyMCE is released under the LGPL Version 2.1.
118
+
119
+ The icon used for the button comes from the icon set Silk from famfamfam, released under the [Creative Commons Attribution 3.0 License](http://creativecommons.org/licenses/by/3.0/)
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,14 @@
1
+ assets_task = Rake::Task.task_defined?('assets:precompile:primary') ? 'assets:precompile:primary' : 'assets:precompile'
2
+
3
+ Rake::Task[assets_task].enhance do
4
+ require "tinymce/rails/asset_installer"
5
+
6
+ config = Rails.application.config
7
+ target = File.join(Rails.public_path, config.assets.prefix)
8
+ manifest = config.assets.manifest
9
+
10
+ assets = Pathname.new(File.expand_path(File.join(File.dirname(__FILE__),
11
+ "../../vendor/assets/javascripts/tinymce/plugins/uploaddocument")))
12
+ TinyMCE::Rails::AssetInstaller::ASSETS = assets
13
+ TinyMCE::Rails::AssetInstaller.new(target, manifest).install
14
+ end
@@ -0,0 +1,3 @@
1
+ require "tinymce-rails"
2
+ require "tinymce-rails-documentupload/version"
3
+ require "tinymce-rails-documentupload/rails"
@@ -0,0 +1,11 @@
1
+ module Tinymce
2
+ module Rails
3
+ module Documentupload
4
+ class Engine < ::Rails::Engine
5
+ initializer 'TinymceRailsDocumentupload.assets_pipeline' do |app|
6
+ app.config.assets.precompile << "tinymce/plugins/uploaddocument/*"
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ module Tinymce
2
+ module Rails
3
+ module Documentupload
4
+ VERSION = "3.5.8.5"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "tinymce-rails-documentupload/version"
4
+
5
+ # Describe your gem and declare its dependencies:
6
+ Gem::Specification.new do |s|
7
+ s.name = "tinymce-rails-documentupload"
8
+ s.version = Tinymce::Rails::Documentupload::VERSION
9
+ s.authors = ["Florent Morin"]
10
+ s.email = ["morinflorent@gmail.com"]
11
+ s.homepage = "https://github.com/florentmorin/tinymce-rails-documentupload"
12
+ s.summary = %q{TinyMCE plugin for taking documents uploads in Rails >= 3.1}
13
+ s.description = %q{TinyMCE plugin for taking documents uploads in Rails >= 3.1}
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.require_paths = ["lib"]
18
+
19
+ s.add_runtime_dependency "railties", ">= 3.1"
20
+ s.add_runtime_dependency "tinymce-rails", "~> 3.5.8.1"
21
+ s.add_development_dependency "bundler", "~> 1.0"
22
+ s.add_development_dependency "rails", ">= 3.1"
23
+ end
@@ -0,0 +1,163 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>{#uploaddocument_dlg.title}</title>
6
+ <style type="text/css">
7
+ form { margin-top: 0.5em; }
8
+ label { margin-bottom: 0.5em; }
9
+ p#error_message { color: #E00; }
10
+ #upload_spinner { padding-top: 4px; padding-left: 3px; }
11
+ #upload_spinner.inactive { display: none; }
12
+ </style>
13
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
14
+ <script type="text/javascript">
15
+ tinyMCEPopup.requireLangPack();
16
+
17
+ var UploadDocumentDialog = {
18
+
19
+ init: function() {
20
+ this.f = document.forms[0];
21
+ this.f.action = tinyMCEPopup.getParam("uploaddocument_form_url", "/tinymce_documents");
22
+ document.getElementById("hint").value = tinyMCEPopup.getParam("uploaddocument_hint", "");
23
+ document.getElementById("authenticity_token").value = this.getMetaContents('csrf-token');
24
+
25
+ this.iframe = document.getElementById("hidden_upload");
26
+ },
27
+
28
+ insert: function() {
29
+ // Detach events first, then attach to avoid double event triggering
30
+ if(this.iframe.attachEvent) {
31
+ this.iframe.detachEvent('onload', UploadDocumentDialog.uploadDone);
32
+ this.iframe.attachEvent('onload', UploadDocumentDialog.uploadDone);
33
+ } else {
34
+ this.iframe.removeEventListener('load', UploadDocumentDialog.uploadDone);
35
+ this.iframe.addEventListener('load', UploadDocumentDialog.uploadDone, false);
36
+ }
37
+ var input = document.getElementById("file_upload");
38
+
39
+ if(input.value != "") {
40
+ document.getElementById("upload_spinner").className = '';
41
+ this.f.submit();
42
+ } else {
43
+ this.handleError(tinyMCEPopup.getLang("uploaddocument_dlg.blank_input", "Must choose a file"));
44
+ }
45
+ },
46
+
47
+ uploadDone: function() {
48
+ document.getElementById("upload_spinner").className = 'inactive';
49
+ var iframe = document.getElementById("hidden_upload");
50
+ if(iframe.document || iframe.contentDocument) {
51
+ var doc = iframe.contentDocument || iframe.contentWindow.document;
52
+ UploadDocumentDialog.handleResponse(doc.getElementsByTagName("body")[0].innerHTML);
53
+ } else {
54
+ UploadDocumentDialog.handleError(tinyMCEPopup.getLang("uploaddocument_dlg.blank_response", "Didn't get a response from the server"));
55
+ }
56
+ },
57
+
58
+ handleResponse: function(ret) {
59
+ try {
60
+ var json = JSON.parse(ret);
61
+
62
+ if(json["error"])
63
+ UploadDocumentDialog.handleError(json["error"]["message"]);
64
+ else {
65
+ tinyMCE.execCommand('mceInsertContent', false, UploadDocumentDialog.buildHTML(json));
66
+ tinyMCEPopup.close();
67
+ }
68
+ } catch(e) {
69
+ UploadDocumentDialog.handleError(tinyMCEPopup.getLang("uploaddocument_dlg.bad_response", "Got a bad response from the server"));
70
+ }
71
+ },
72
+
73
+ buildHTML: function(json) {
74
+ var default_class = tinyMCEPopup.getParam("uploaddocument_default_a_class", "");
75
+ var alt_text = document.getElementById("alt_text").value;
76
+
77
+ var docstr = "<a href='" + json["document"]["url"] + "' target='_blank' type='octet-stream'";
78
+
79
+ if (default_class != "") {
80
+ docstr += " class='" + default_class + "'";
81
+ }
82
+
83
+ docstr += '>'
84
+
85
+ if (json["document"]["thumb"] && json["document"]["thumb"]["url"]) {
86
+ thumb_json = json["document"]["thumb"];
87
+
88
+ docstr += "><img src='" + thumb_json["url"] + "'";
89
+
90
+ if (thumb_json["height"]) {
91
+ docstr += " height='" + thumb_json["height"] + "'";
92
+ }
93
+
94
+ if (thumb_json["width"]) {
95
+ docstr += " width='" + thumb_json["width"] + "'";
96
+ }
97
+
98
+ docstr += " alt='" + alt_text + "' />";
99
+ } else {
100
+ docstr += ">" + alt_text;
101
+ }
102
+
103
+ docstr += "</a>";
104
+
105
+ return docstr;
106
+ },
107
+
108
+ handleError: function(error) {
109
+ var className = 'invalid';
110
+ var label = document.getElementById("file_upload_label");
111
+ var message = document.getElementById("error_message");
112
+
113
+ if(message)
114
+ message.innerHTML = error;
115
+
116
+ // Add the 'invalid' class, avoiding duplicates
117
+ if(label) {
118
+ var cn = label.className;
119
+ if(cn.indexOf(className) == -1) {
120
+ if(cn != '')
121
+ className = ' ' + className;
122
+ label.className = cn + className;
123
+ }
124
+ }
125
+ },
126
+
127
+ getMetaContents: function(mn) {
128
+ var m = (window.opener || window.parent).document.getElementsByTagName('meta');
129
+
130
+ for(var i in m)
131
+ if(m[i].name == mn)
132
+ return m[i].content;
133
+
134
+ return null;
135
+ },
136
+ };
137
+
138
+ tinyMCEPopup.onInit.add(UploadDocumentDialog.init, UploadDocumentDialog);
139
+ </script>
140
+ </head>
141
+ <body>
142
+ <h1>{#uploaddocument_dlg.header}</h1>
143
+
144
+ <form method="post" enctype='multipart/form-data' accept-charset="UTF-8" target="hidden_upload" action='#replaceme' name="uploaddocumentForm">
145
+ <input type="hidden" name="utf8" value="✓">
146
+ <input type="hidden" name="authenticity_token" id="authenticity_token" value="#replaceme">
147
+ <input type="hidden" name="hint" id="hint" value="#replaceme">
148
+ <iframe id="hidden_upload" name="hidden_upload" src="javascript:void(0)" style='width:0;height:0;border:0px solid #fff'></iframe>
149
+
150
+ <label id='file_upload_label' for='file_upload'>{#uploaddocument_dlg.input}:</label>
151
+ <input type='file' name='file' id='file_upload'>
152
+ <p id="error_message"></p>
153
+ <label id='alt_text_label' for='alt_text'>{#uploaddocument_dlg.alt_text}:</label>
154
+ <input type="text" name="alt" id="alt_text">
155
+
156
+ <div class="mceActionPanel">
157
+ <input type="button" id="insert" name="insert" value="{#uploaddocument_dlg.insert}" onclick="UploadDocumentDialog.insert();"/>
158
+ <img src="img/spinner.gif" alt="#{uploaddocument_dlg.uploading}" id="upload_spinner" height="16" width="16" class="inactive">
159
+ <input type="button" id="cancel" name="cancel" value="{#uploaddocument_dlg.cancel}" onclick="tinyMCEPopup.close();" />
160
+ </div>
161
+ </form>
162
+ </body>
163
+ </html>
@@ -0,0 +1,38 @@
1
+ (function() {
2
+ tinymce.PluginManager.requireLangPack('uploaddocument');
3
+ tinymce.create('tinymce.plugins.UploadDocumentPlugin', {
4
+ init: function(ed, url) {
5
+ ed.addCommand('mceUploadDocument', function() {
6
+ return ed.windowManager.open({
7
+ file: url + '/dialog.html',
8
+ width: 350 + parseInt(ed.getLang('uploaddocument.delta_width', 0)),
9
+ height: 180 + parseInt(ed.getLang('uploaddocument.delta_height', 0)),
10
+ inline: 1
11
+ }, {
12
+ plugin_url: url
13
+ });
14
+ });
15
+ ed.addButton('uploaddocument', {
16
+ title: 'uploaddocument.desc',
17
+ cmd: 'mceUploadDocument',
18
+ image: url + '/img/uploaddocument.png'
19
+ });
20
+ return ed.onNodeChange.add(function(ed, cm, n) {
21
+ return cm.setActive('uploaddocument', n.nodeName === 'IMG');
22
+ });
23
+ },
24
+ createControl: function(n, cm) {
25
+ return null;
26
+ },
27
+ getInfo: function() {
28
+ return {
29
+ longname: 'UploadDocument plugin',
30
+ author: 'Per Florent Morin (based on work done by Christian B. Viken for image upload plugin)',
31
+ authorurl: 'https://github.com/florentmorin',
32
+ infourl: 'https://github.com/florentmorin/tinymce-rails-documentupload',
33
+ version: '1.0'
34
+ };
35
+ }
36
+ });
37
+ return tinymce.PluginManager.add('uploaddocument', tinymce.plugins.UploadDocumentPlugin);
38
+ })();
@@ -0,0 +1,3 @@
1
+ tinyMCE.addI18n('en.uploaddocument', {
2
+ desc: 'Insert a document from your computer'
3
+ });
@@ -0,0 +1,12 @@
1
+ tinyMCE.addI18n('en.uploaddocument_dlg', {
2
+ title: 'Insert document',
3
+ header: "Insert document",
4
+ input: "Choose a document",
5
+ uploading: "Uploading…",
6
+ blank_input: "Must choose a file",
7
+ bad_response: "Got a bad response from the server",
8
+ blank_response: "Didn't get a response from the server",
9
+ insert: "Insert",
10
+ cancel: "Cancel",
11
+ alt_text: "Document description"
12
+ });
@@ -0,0 +1,3 @@
1
+ tinyMCE.addI18n('fr.uploaddocument', {
2
+ desc: "Envoyer un document de votre ordinateur"
3
+ });
@@ -0,0 +1,12 @@
1
+ tinyMCE.addI18n('fr.uploaddocument_dlg', {
2
+ title: "Insérer un document",
3
+ header: "Insérer un document",
4
+ input: "Choisissez un document",
5
+ uploading: "Transfert en cours ...",
6
+ blank_input: "Vous devez sélectionner un fichier",
7
+ bad_response: "Le serveur a envoyé une réponse erronée",
8
+ blank_response: "Le serveur n'a pas renvoyé de réponse",
9
+ insert: "Insérer",
10
+ cancel: "Annuler",
11
+ alt_text: "Description du document"
12
+ });
metadata ADDED
@@ -0,0 +1,118 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tinymce-rails-documentupload
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.5.8.5
5
+ platform: ruby
6
+ authors:
7
+ - Florent Morin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-05-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: railties
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '3.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '3.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: tinymce-rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 3.5.8.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 3.5.8.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '3.1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '3.1'
69
+ description: TinyMCE plugin for taking documents uploads in Rails >= 3.1
70
+ email:
71
+ - morinflorent@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - .gitignore
77
+ - CHANGELOG.md
78
+ - Gemfile
79
+ - LICENSE
80
+ - README.md
81
+ - Rakefile
82
+ - lib/tasks/tinymce-uploaddocument-assets.rake
83
+ - lib/tinymce-rails-documentupload.rb
84
+ - lib/tinymce-rails-documentupload/rails.rb
85
+ - lib/tinymce-rails-documentupload/version.rb
86
+ - tinymce-rails-documentupload.gemspec
87
+ - vendor/assets/javascripts/tinymce/plugins/uploaddocument/dialog.html
88
+ - vendor/assets/javascripts/tinymce/plugins/uploaddocument/editor_plugin.js
89
+ - vendor/assets/javascripts/tinymce/plugins/uploaddocument/img/spinner.gif
90
+ - vendor/assets/javascripts/tinymce/plugins/uploaddocument/img/uploaddocument.png
91
+ - vendor/assets/javascripts/tinymce/plugins/uploaddocument/langs/en.js
92
+ - vendor/assets/javascripts/tinymce/plugins/uploaddocument/langs/en_dlg.js
93
+ - vendor/assets/javascripts/tinymce/plugins/uploaddocument/langs/fr.js
94
+ - vendor/assets/javascripts/tinymce/plugins/uploaddocument/langs/fr_dlg.js
95
+ homepage: https://github.com/florentmorin/tinymce-rails-documentupload
96
+ licenses: []
97
+ metadata: {}
98
+ post_install_message:
99
+ rdoc_options: []
100
+ require_paths:
101
+ - lib
102
+ required_ruby_version: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - '>='
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ required_rubygems_version: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ requirements: []
113
+ rubyforge_project:
114
+ rubygems_version: 2.0.3
115
+ signing_key:
116
+ specification_version: 4
117
+ summary: TinyMCE plugin for taking documents uploads in Rails >= 3.1
118
+ test_files: []