bcalloway-wysihat-engine 0.1.8
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.
- data/.gitignore +6 -0
- data/CHANGELOG +51 -0
- data/MIT-LICENSE +20 -0
- data/README.textile +24 -0
- data/Rakefile +78 -0
- data/TODO +4 -0
- data/VERSION +1 -0
- data/app/controllers/wysihat_files_controller.rb +35 -0
- data/app/helpers/wysihat_files_helper.rb +2 -0
- data/app/models/wysihat_file.rb +9 -0
- data/app/views/wysihat_files/_form.html.erb +13 -0
- data/app/views/wysihat_files/_wysihat_file.html.erb +11 -0
- data/app/views/wysihat_files/index.html.erb +5 -0
- data/app/views/wysihat_files/new.html.erb +1 -0
- data/config/locales/en.yml +5 -0
- data/generators/wysihat/templates/css/facebox.css +60 -0
- data/generators/wysihat/templates/css/wysihat.css +44 -0
- data/generators/wysihat/templates/images/facebox/b.png +0 -0
- data/generators/wysihat/templates/images/facebox/bl.png +0 -0
- data/generators/wysihat/templates/images/facebox/br.png +0 -0
- data/generators/wysihat/templates/images/facebox/closelabel.gif +0 -0
- data/generators/wysihat/templates/images/facebox/loading.gif +0 -0
- data/generators/wysihat/templates/images/facebox/tl.png +0 -0
- data/generators/wysihat/templates/images/facebox/tr.png +0 -0
- data/generators/wysihat/templates/images/icons/arrow_redo.png +0 -0
- data/generators/wysihat/templates/images/icons/arrow_undo.png +0 -0
- data/generators/wysihat/templates/images/icons/exclamation.png +0 -0
- data/generators/wysihat/templates/images/icons/image.png +0 -0
- data/generators/wysihat/templates/images/icons/link.png +0 -0
- data/generators/wysihat/templates/images/icons/page_code.png +0 -0
- data/generators/wysihat/templates/images/icons/text_align_center.png +0 -0
- data/generators/wysihat/templates/images/icons/text_align_left.png +0 -0
- data/generators/wysihat/templates/images/icons/text_align_right.png +0 -0
- data/generators/wysihat/templates/images/icons/text_bold.png +0 -0
- data/generators/wysihat/templates/images/icons/text_italic.png +0 -0
- data/generators/wysihat/templates/images/icons/text_list_bullets.png +0 -0
- data/generators/wysihat/templates/images/icons/text_list_numbers.png +0 -0
- data/generators/wysihat/templates/images/icons/text_strikethrough.png +0 -0
- data/generators/wysihat/templates/images/icons/text_underline.png +0 -0
- data/generators/wysihat/templates/javascripts/facebox.js +180 -0
- data/generators/wysihat/templates/javascripts/wysihat.js +2073 -0
- data/generators/wysihat/templates/javascripts/wysihat_engine.js +101 -0
- data/generators/wysihat/templates/javascripts/wysihat_engine_pack.js +1 -0
- data/generators/wysihat/templates/migrations/create_wysihat_files.rb +15 -0
- data/generators/wysihat/templates/sass/facebox.sass +108 -0
- data/generators/wysihat/templates/sass/wysihat.sass +66 -0
- data/generators/wysihat/wysihat_generator.rb +83 -0
- data/lib/wysihat-engine.rb +38 -0
- data/wysihat-engine.gemspec +90 -0
- metadata +123 -0
data/.gitignore
ADDED
data/CHANGELOG
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
0.1.8 (November 30, 2009) - Brandon Calloway
|
2
|
+
* Added thumbnail creation for uploaded images
|
3
|
+
* Added file upload with "copy-url-to-clipboard" functionality
|
4
|
+
|
5
|
+
0.1.7 (November 6th, 2009) - Jeff Kreeftmeijer
|
6
|
+
* Toolbar didn't show up in IE. Fixed :)
|
7
|
+
|
8
|
+
0.1.7 (November 1st, 2009) - Jeff Kreeftmeijer
|
9
|
+
* added the exclamation.png icon back in the generator.
|
10
|
+
|
11
|
+
0.1.7 (October 28th, 2009) - Jeff Kreeftmeijer
|
12
|
+
* fixed a bug in the generator; it copied "loading.gif" to "loading.png". Thanks Eric!
|
13
|
+
* two functions in the rakefile were called cssify. One should've been called sassify. fixed :)
|
14
|
+
* added "render :layout => false" to WysihatFilesController#index
|
15
|
+
* put the "exclamation.png" icon back. Was pretty useful after all.
|
16
|
+
|
17
|
+
0.1.7 (October 27th, 2009) - Jeff Kreeftmeijer
|
18
|
+
* put the facebox images & icons in a subdir
|
19
|
+
* created sassify & cssify rake tasks (like the minify one)
|
20
|
+
* removed the .sass_cache dir and added it to the .gitignore file.
|
21
|
+
|
22
|
+
0.1.6 (October 21st, 2009) - Jeff Kreeftmeijer
|
23
|
+
* fixed a bug that sanitized the output (onsumbit) rather than the input (on paste).
|
24
|
+
|
25
|
+
0.1.5 (October 11th, 2009) - Jeff Kreeftmeijer
|
26
|
+
* fixed a bug that occurred while submitting the form.
|
27
|
+
|
28
|
+
0.1.4 (October 5th, 2009) - Jeff Kreeftmeijer
|
29
|
+
* removed the :paste button, you can now just paste it in the editor. It will work ;)
|
30
|
+
* added a destroy function for the wysihat_files
|
31
|
+
* added a locales file to support i18n
|
32
|
+
|
33
|
+
0.1.3 (October 5th, 2009) - Jeff Kreeftmeijer
|
34
|
+
* added sass support
|
35
|
+
|
36
|
+
0.1.2 (October 4th, 2009) - Jeff Kreeftmeijer
|
37
|
+
|
38
|
+
* added a --no-stylesheet option to the generator
|
39
|
+
* removed ResourceController as a dependency. Normal controller now :)
|
40
|
+
* moved more javascript to wysihat_engine.js
|
41
|
+
* added wysihat_engine_pack.js (all javascripts minfied & concatenated)
|
42
|
+
|
43
|
+
0.1.1 (October 3rd, 2009) - Jeff Kreeftmeijer
|
44
|
+
|
45
|
+
* Moved most of the javascript to the javascript folder (javascripts/wysihat_engine.js) instead of doing it inline.
|
46
|
+
|
47
|
+
0.1.0 (October 3rd, 2009) - Jeff Kreeftmeijer
|
48
|
+
|
49
|
+
* Made it a gem.
|
50
|
+
* Created a generator to get rid of the ugly rake task.
|
51
|
+
* Removed lots of files (like /public and /config). Everything is in a generator template now.
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009 80beans
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.textile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
h1. WysiHat Engine
|
2
|
+
|
3
|
+
A Rails engine to help integrate the "37signals WysiHat rich text editor":http://github.com/josh/wysihat/ to your application.
|
4
|
+
|
5
|
+
h2. What's New in the Fork
|
6
|
+
|
7
|
+
* Added thumbnail creation for uploaded images via Paperclip/ImageMagick
|
8
|
+
* Added separate file upload with "copy-url-to-clipboard" functionality
|
9
|
+
|
10
|
+
h2. Using the WysiHat Engine
|
11
|
+
|
12
|
+
We've written an "Installation Guide":http://wiki.github.com/80beans/wysihat-engine/installation and some "Examples":http://wiki.github.com/80beans/wysihat-engine/examples to get you started. Any questions? Don't hesitate to "ask":http://github.com/inbox/new/jeffkreeftmeijer.
|
13
|
+
|
14
|
+
h2. Demo
|
15
|
+
|
16
|
+
There's a "demo rails app":http://github.com/80beans/wysihat-engine-demo so you can have a quick look around.
|
17
|
+
|
18
|
+
h2. Contributing
|
19
|
+
|
20
|
+
Found an issue? Have a great idea? Want to help? Great! Please take a second to read the "Contributing Guide":http://wiki.github.com/80beans/wysihat-engine/contributing.
|
21
|
+
|
22
|
+
h2. License
|
23
|
+
|
24
|
+
Copyright (c) 2009 80beans, released under the MIT license
|
data/Rakefile
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/rdoctask'
|
4
|
+
|
5
|
+
desc 'Default: run unit tests.'
|
6
|
+
task :default => :test
|
7
|
+
|
8
|
+
desc 'Test the wysihat_engine plugin.'
|
9
|
+
Rake::TestTask.new(:test) do |t|
|
10
|
+
t.libs << 'lib'
|
11
|
+
t.libs << 'test'
|
12
|
+
t.pattern = 'test/**/*_test.rb'
|
13
|
+
t.verbose = true
|
14
|
+
end
|
15
|
+
|
16
|
+
desc 'Generate documentation for the wysihat_engine plugin.'
|
17
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
18
|
+
rdoc.rdoc_dir = 'rdoc'
|
19
|
+
rdoc.title = 'WysiHat Engine'
|
20
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
21
|
+
rdoc.rdoc_files.include('README')
|
22
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
23
|
+
end
|
24
|
+
|
25
|
+
desc 'minify and concatenate the javascript files to make a pack'
|
26
|
+
task :minify do
|
27
|
+
require "yui/compressor"
|
28
|
+
|
29
|
+
compressor = YUI::JavaScriptCompressor.new(:munge => true)
|
30
|
+
dir = 'generators/wysihat/templates/javascripts'
|
31
|
+
pack = File.new("#{dir}/wysihat_engine_pack.js", "w")
|
32
|
+
|
33
|
+
string = ''
|
34
|
+
files = ['facebox', 'wysihat', 'wysihat_engine']
|
35
|
+
files.each do |file|
|
36
|
+
file = open("#{dir}/#{file}.js")
|
37
|
+
string << file.read
|
38
|
+
file.close
|
39
|
+
end
|
40
|
+
|
41
|
+
pack.write(compressor.compress(string))
|
42
|
+
pack.close
|
43
|
+
end
|
44
|
+
|
45
|
+
desc 'create css files from the sass files. It will overwrite files if they already exist.'
|
46
|
+
task :cssify do
|
47
|
+
files = ['facebox', 'wysihat']
|
48
|
+
files.each do |file|
|
49
|
+
system "sass generators/wysihat/templates/sass/#{file}.sass generators/wysihat/templates/css/#{file}.css"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
desc 'create sass files from the css files. It will overwrite files if they already exist.'
|
54
|
+
task :sassify do
|
55
|
+
files = ['facebox', 'wysihat']
|
56
|
+
files.each do |file|
|
57
|
+
system "css2sass generators/wysihat/templates/css/#{file}.css generators/wysihat/templates/sass/#{file}.sass"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
begin
|
63
|
+
require 'jeweler'
|
64
|
+
Jeweler::Tasks.new do |gem|
|
65
|
+
gem.name = "wysihat-engine"
|
66
|
+
gem.summary = "A Rails engine to help integrate the 37signals WysiHat rich text editor to your application."
|
67
|
+
gem.description = "A Rails engine to help integrate the 37signals WysiHat rich text editor to your application."
|
68
|
+
gem.email = "jeff@80beans.com"
|
69
|
+
gem.homepage = "http://www.80beans.com/2009/10/01/wysihat-engine/"
|
70
|
+
gem.authors = ["Jeff Kreeftmeijer"]
|
71
|
+
gem.add_development_dependency "yui-compressor", ">= 0.9.1"
|
72
|
+
gem.add_dependency 'paperclip', ">= 2.3.1"
|
73
|
+
end
|
74
|
+
rescue LoadError
|
75
|
+
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
76
|
+
end
|
77
|
+
|
78
|
+
Jeweler::GemcutterTasks.new
|
data/TODO
ADDED
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.7
|
@@ -0,0 +1,35 @@
|
|
1
|
+
class WysihatFilesController < ApplicationController
|
2
|
+
def index
|
3
|
+
@wysihat_file = WysihatFile.new
|
4
|
+
if params[:type] && params[:type] == "file"
|
5
|
+
@wysihat_files = WysihatFile.file_content_type_not_like("image").all
|
6
|
+
else
|
7
|
+
@wysihat_files = WysihatFile.file_content_type_like("image").all
|
8
|
+
end
|
9
|
+
render :layout => false
|
10
|
+
end
|
11
|
+
|
12
|
+
def create
|
13
|
+
@wysihat_file = WysihatFile.new(params[:wysihat_file])
|
14
|
+
|
15
|
+
responds_to_parent do
|
16
|
+
render :update do |page|
|
17
|
+
if(@wysihat_file.save)
|
18
|
+
page.insert_html :bottom, :wysihat_files, :partial => 'wysihat_file', :object => @wysihat_file
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def destroy
|
25
|
+
@wysihat_file = WysihatFile.find(params[:id])
|
26
|
+
respond_to do |wants|
|
27
|
+
wants.js {
|
28
|
+
render :update do |page|
|
29
|
+
page.remove "wysihat_file_#{@wysihat_file.id}"
|
30
|
+
end
|
31
|
+
}
|
32
|
+
end
|
33
|
+
@wysihat_file.destroy
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<% form_for @wysihat_file, :html => { :multipart => true, :target => 'file_upload' } do |f| %>
|
2
|
+
|
3
|
+
<p>
|
4
|
+
<%= f.label :file %><br/>
|
5
|
+
<%= f.file_field :file %>
|
6
|
+
</p>
|
7
|
+
<p>
|
8
|
+
<%= f.submit %>
|
9
|
+
</p>
|
10
|
+
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<iframe id='file_upload' name="file_upload" style="width:1px;height:1px;border:0px" src="about:blank"></iframe>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<li id="wysihat_file_<%= wysihat_file.id %>" class="<%= params[:type] %>">
|
2
|
+
<div id="asset">
|
3
|
+
<%= link_to_function((image_tag wysihat_file.file.url(:thumb)), "$$('iframe##{params[:editor]}')[0].insertImage(this.href); facebox.close();", :href => wysihat_file.file.url) %>
|
4
|
+
</div>
|
5
|
+
<% if params[:type] && params[:type] == "file" %>
|
6
|
+
<%= render :partial => '/wysihat_files/clipboard', :locals => { :file => "#{wysihat_file.id}", :url => "http://#{SITE_URL}#{wysihat_file.file.url}" } %>
|
7
|
+
<% end %>
|
8
|
+
<div id="delete">
|
9
|
+
<%= link_to_remote t('wysihat_files.destroy.name'), :url => wysihat_file, :method => :delete, :confirm => t('wysihat_files.destroy.sure') %>
|
10
|
+
</div>
|
11
|
+
</li>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render 'form' %>
|
@@ -0,0 +1,60 @@
|
|
1
|
+
#facebox {
|
2
|
+
position: absolute;
|
3
|
+
top: 0;
|
4
|
+
left: 0;
|
5
|
+
z-index: 100;
|
6
|
+
text-align: left; }
|
7
|
+
#facebox .b {
|
8
|
+
background: url(../images/facebox/b.png); }
|
9
|
+
#facebox .tl {
|
10
|
+
background: url(../images/facebox/tl.png); }
|
11
|
+
#facebox .tr {
|
12
|
+
background: url(../images/facebox/tr.png); }
|
13
|
+
#facebox .bl {
|
14
|
+
background: url(../images/facebox/bl.png); }
|
15
|
+
#facebox .br {
|
16
|
+
background: url(../images/facebox/br.png); }
|
17
|
+
#facebox .popup {
|
18
|
+
position: relative; }
|
19
|
+
#facebox table {
|
20
|
+
border-collapse: collapse; }
|
21
|
+
#facebox td {
|
22
|
+
border-bottom: 0;
|
23
|
+
padding: 0; }
|
24
|
+
#facebox .body {
|
25
|
+
padding: 10px;
|
26
|
+
background: #fff;
|
27
|
+
width: 370px; }
|
28
|
+
#facebox .loading, #facebox .image {
|
29
|
+
text-align: center; }
|
30
|
+
#facebox img {
|
31
|
+
border: 0;
|
32
|
+
margin: 0; }
|
33
|
+
#facebox .footer {
|
34
|
+
border-top: 1px solid #DDDDDD;
|
35
|
+
padding-top: 5px;
|
36
|
+
margin-top: 10px;
|
37
|
+
text-align: right; }
|
38
|
+
#facebox .tl, #facebox .tr, #facebox .bl, #facebox .br {
|
39
|
+
height: 10px;
|
40
|
+
width: 10px;
|
41
|
+
overflow: hidden;
|
42
|
+
padding: 0; }
|
43
|
+
|
44
|
+
#facebox_overlay {
|
45
|
+
position: fixed;
|
46
|
+
top: 0px;
|
47
|
+
left: 0px;
|
48
|
+
height: 100%;
|
49
|
+
width: 100%; }
|
50
|
+
|
51
|
+
.facebox_hide {
|
52
|
+
z-index: -100; }
|
53
|
+
|
54
|
+
.facebox_overlayBG {
|
55
|
+
background-color: #000;
|
56
|
+
z-index: 99; }
|
57
|
+
|
58
|
+
* html #facebox_overlay {
|
59
|
+
position: absolute;
|
60
|
+
height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); }
|
@@ -0,0 +1,44 @@
|
|
1
|
+
div.editor_toolbar a {
|
2
|
+
float: left;
|
3
|
+
width: 16px;
|
4
|
+
height: 16px;
|
5
|
+
margin: 5px;
|
6
|
+
background-repeat: no-repeat; }
|
7
|
+
div.editor_toolbar span {
|
8
|
+
display: none; }
|
9
|
+
|
10
|
+
.editor_toolbar .button {
|
11
|
+
background-image: url('../images/icons/exclamation.png'); }
|
12
|
+
.editor_toolbar .bold {
|
13
|
+
background-image: url('../images/icons/text_bold.png'); }
|
14
|
+
.editor_toolbar .italic {
|
15
|
+
background-image: url('../images/icons/text_italic.png'); }
|
16
|
+
.editor_toolbar .underline {
|
17
|
+
background-image: url('../images/icons/text_underline.png'); }
|
18
|
+
.editor_toolbar .strikethrough {
|
19
|
+
background-image: url('../images/icons/text_strikethrough.png'); }
|
20
|
+
.editor_toolbar .justifyleft {
|
21
|
+
background-image: url('../images/icons/text_align_left.png'); }
|
22
|
+
.editor_toolbar .justifycenter {
|
23
|
+
background-image: url('../images/icons/text_align_center.png'); }
|
24
|
+
.editor_toolbar .justifyright {
|
25
|
+
background-image: url('../images/icons/text_align_right.png'); }
|
26
|
+
.editor_toolbar .undo {
|
27
|
+
background-image: url('../images/icons/arrow_undo.png'); }
|
28
|
+
.editor_toolbar .redo {
|
29
|
+
background-image: url('../images/icons/arrow_redo.png'); }
|
30
|
+
.editor_toolbar .insertorderedlist {
|
31
|
+
background-image: url('../images/icons/text_list_numbers.png'); }
|
32
|
+
.editor_toolbar .insertunorderedlist {
|
33
|
+
background-image: url('../images/icons/text_list_bullets.png'); }
|
34
|
+
.editor_toolbar .link {
|
35
|
+
background-image: url('../images/icons/link.png'); }
|
36
|
+
.editor_toolbar .image {
|
37
|
+
background-image: url('../images/icons/image.png'); }
|
38
|
+
.editor_toolbar .html {
|
39
|
+
background-image: url('../images/icons/page_code.png'); }
|
40
|
+
|
41
|
+
iframe.editor {
|
42
|
+
border: 1px solid #999;
|
43
|
+
height: 400px;
|
44
|
+
width: 100%; }
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|