dante-editor 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/.travis.yml +4 -0
- data/Gemfile +23 -0
- data/Gemfile.lock +146 -0
- data/Procfile +1 -0
- data/README.md +129 -0
- data/TODO.md +45 -0
- data/bower.json +10 -0
- data/config.rb +82 -0
- data/config.ru +31 -0
- data/dante-editor.gemspec +19 -0
- data/lib/dante-editor.rb +3 -0
- data/lib/dante-editor/version.rb +5 -0
- data/license.md +22 -0
- data/rakefile +2 -0
- data/source/assets/fonts/fontello.eot +0 -0
- data/source/assets/fonts/fontello.svg +36 -0
- data/source/assets/fonts/fontello.ttf +0 -0
- data/source/assets/fonts/fontello.woff +0 -0
- data/source/assets/images/background.png +0 -0
- data/source/assets/images/icon-logo.png +0 -0
- data/source/assets/images/icon.png +0 -0
- data/source/assets/images/media-loading-placeholder.png +0 -0
- data/source/assets/images/middleman.png +0 -0
- data/source/assets/javascripts/all.js +3 -0
- data/source/assets/javascripts/dante.js +7 -0
- data/source/assets/javascripts/dante/dante.js.coffee.erb +7 -0
- data/source/assets/javascripts/dante/editor.js.coffee +917 -0
- data/source/assets/javascripts/dante/menu.js.coffee +202 -0
- data/source/assets/javascripts/dante/tooltip.js.coffee +302 -0
- data/source/assets/javascripts/dante/utils.js.coffee +235 -0
- data/source/assets/javascripts/dante/view.js.coffee +56 -0
- data/source/assets/javascripts/deps.js +4 -0
- data/source/assets/javascripts/spec.js +2 -0
- data/source/assets/javascripts/specs/cleaner.js.coffee +8 -0
- data/source/assets/javascripts/specs/dante_view.js.coffee +74 -0
- data/source/assets/javascripts/specs/editor.js.coffee +57 -0
- data/source/assets/stylesheets/all.css.scss +4 -0
- data/source/assets/stylesheets/dante.css.scss +3 -0
- data/source/assets/stylesheets/dante/base.css.scss +57 -0
- data/source/assets/stylesheets/dante/editor.css.scss +662 -0
- data/source/assets/stylesheets/dante/fonts.css.scss +106 -0
- data/source/assets/stylesheets/normalize.css +375 -0
- data/source/embeds.html.erb +29 -0
- data/source/index.html.erb +28 -0
- data/source/layouts/layout.erb +21 -0
- data/source/layouts/spec.html.erb +24 -0
- data/source/partials/_example_1.erb +30 -0
- data/source/partials/_example_2.erb +33 -0
- data/source/partials/_example_3.erb +17 -0
- data/source/partials/_readme.markdown +78 -0
- data/source/partials/test/_example_1.erb +18 -0
- data/source/readme.html.erb +28 -0
- data/source/tests/dante_view.html.erb +11 -0
- data/source/tests/index.html.erb +32 -0
- data/tmp/.gitkeep +0 -0
- metadata +99 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6de1fa4fbcebb4bfdea9ffec73648fe6a129e692
|
4
|
+
data.tar.gz: e15d6a670d5871b86148d52d6a4dfed42855baa1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 50e79a22fdee6e1c8641815d65810851bc535ada073b3d6c629c0c4f739c9b5a94cf9890258b7ccc2524161ad694d71e3a47aa1a460e4435f4628ab9567c8e7c
|
7
|
+
data.tar.gz: 6971b66fec35c57e7909c2074c5b14063449714a47bfcdbdc94b3e190ceec1111727fd1bb15bacf7484b8d7d0d73cbecc098fbdb358e9ce3d7b55ccaa5bc7c3d
|
data/.gitignore
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# See http://help.github.com/ignore-files/ for more about ignoring files.
|
2
|
+
#
|
3
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
4
|
+
# or operating system, you probably want to add a global ignore instead:
|
5
|
+
# git config --global core.excludesfile ~/.gitignore_global
|
6
|
+
|
7
|
+
# Ignore bundler config
|
8
|
+
/.bundle
|
9
|
+
|
10
|
+
# Ignore the build directory
|
11
|
+
/build
|
12
|
+
|
13
|
+
# Ignore Sass' cache
|
14
|
+
/.sass-cache
|
15
|
+
|
16
|
+
# Ignore .DS_store file
|
17
|
+
.DS_Store
|
18
|
+
|
19
|
+
/bower_components
|
20
|
+
/node_modules
|
21
|
+
|
22
|
+
/tmp/images/**/*
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# If you have OpenSSL installed, we recommend updating
|
2
|
+
# the following line to use "https"
|
3
|
+
source 'http://rubygems.org'
|
4
|
+
|
5
|
+
gem "therubyracer"
|
6
|
+
gem "middleman", "~>3.1.4"
|
7
|
+
|
8
|
+
# Live-reloading plugin
|
9
|
+
gem "middleman-livereload", "~> 3.1.0"
|
10
|
+
gem 'middleman-gh-pages'
|
11
|
+
# For faster file watcher updates on Windows:
|
12
|
+
gem "wdm", "~> 0.1.0", :platforms => [:mswin, :mingw]
|
13
|
+
gem "github-markup"
|
14
|
+
gem "redcarpet"
|
15
|
+
gem "sinatra"
|
16
|
+
gem "pry"
|
17
|
+
|
18
|
+
gemspec
|
19
|
+
|
20
|
+
# Cross-templating language block fix for Ruby 1.8
|
21
|
+
platforms :mri_18 do
|
22
|
+
gem "ruby18_source_location"
|
23
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
dante-editor (0.0.1)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: http://rubygems.org/
|
8
|
+
specs:
|
9
|
+
activesupport (3.2.19)
|
10
|
+
i18n (~> 0.6, >= 0.6.4)
|
11
|
+
multi_json (~> 1.0)
|
12
|
+
chunky_png (1.3.1)
|
13
|
+
coderay (1.1.0)
|
14
|
+
coffee-script (2.2.0)
|
15
|
+
coffee-script-source
|
16
|
+
execjs
|
17
|
+
coffee-script-source (1.8.0)
|
18
|
+
compass (1.0.1)
|
19
|
+
chunky_png (~> 1.2)
|
20
|
+
compass-core (~> 1.0.1)
|
21
|
+
compass-import-once (~> 1.0.5)
|
22
|
+
rb-fsevent (>= 0.9.3)
|
23
|
+
rb-inotify (>= 0.9)
|
24
|
+
sass (>= 3.3.13, < 3.5)
|
25
|
+
compass-core (1.0.1)
|
26
|
+
multi_json (~> 1.0)
|
27
|
+
sass (>= 3.3.0, < 3.5)
|
28
|
+
compass-import-once (1.0.5)
|
29
|
+
sass (>= 3.2, < 3.5)
|
30
|
+
em-websocket (0.5.1)
|
31
|
+
eventmachine (>= 0.12.9)
|
32
|
+
http_parser.rb (~> 0.6.0)
|
33
|
+
eventmachine (1.0.3)
|
34
|
+
execjs (1.4.1)
|
35
|
+
multi_json (~> 1.0)
|
36
|
+
ffi (1.9.6)
|
37
|
+
github-markup (1.3.0)
|
38
|
+
posix-spawn (~> 0.3.8)
|
39
|
+
haml (4.0.5)
|
40
|
+
tilt
|
41
|
+
hike (1.2.3)
|
42
|
+
http_parser.rb (0.6.0)
|
43
|
+
i18n (0.6.11)
|
44
|
+
kramdown (1.4.2)
|
45
|
+
libv8 (3.16.14.7)
|
46
|
+
listen (1.3.1)
|
47
|
+
rb-fsevent (>= 0.9.3)
|
48
|
+
rb-inotify (>= 0.9)
|
49
|
+
rb-kqueue (>= 0.2)
|
50
|
+
method_source (0.8.2)
|
51
|
+
middleman (3.1.6)
|
52
|
+
coffee-script (~> 2.2.0)
|
53
|
+
compass (>= 0.12.2)
|
54
|
+
execjs (~> 1.4.0)
|
55
|
+
haml (>= 3.1.6)
|
56
|
+
kramdown (~> 1.2)
|
57
|
+
middleman-core (= 3.1.6)
|
58
|
+
middleman-more (= 3.1.6)
|
59
|
+
middleman-sprockets (>= 3.1.2)
|
60
|
+
sass (>= 3.1.20)
|
61
|
+
uglifier (~> 2.1.0)
|
62
|
+
middleman-core (3.1.6)
|
63
|
+
activesupport (~> 3.2.6)
|
64
|
+
bundler (~> 1.1)
|
65
|
+
i18n (~> 0.6.1)
|
66
|
+
listen (~> 1.1)
|
67
|
+
rack (>= 1.4.5)
|
68
|
+
rack-test (~> 0.6.1)
|
69
|
+
thor (>= 0.15.2, < 2.0)
|
70
|
+
tilt (~> 1.3.6)
|
71
|
+
middleman-gh-pages (0.0.3)
|
72
|
+
rake (> 0.9.3)
|
73
|
+
middleman-livereload (3.1.1)
|
74
|
+
em-websocket (>= 0.2.0)
|
75
|
+
middleman-core (>= 3.0.2)
|
76
|
+
multi_json (~> 1.0)
|
77
|
+
rack-livereload
|
78
|
+
middleman-more (3.1.6)
|
79
|
+
middleman-sprockets (3.1.4)
|
80
|
+
middleman-core (>= 3.0.14)
|
81
|
+
middleman-more (>= 3.0.14)
|
82
|
+
sprockets (~> 2.1)
|
83
|
+
sprockets-helpers (~> 1.0.0)
|
84
|
+
sprockets-sass (~> 1.0.0)
|
85
|
+
multi_json (1.10.1)
|
86
|
+
posix-spawn (0.3.9)
|
87
|
+
pry (0.10.0)
|
88
|
+
coderay (~> 1.1.0)
|
89
|
+
method_source (~> 0.8.1)
|
90
|
+
slop (~> 3.4)
|
91
|
+
rack (1.5.2)
|
92
|
+
rack-livereload (0.3.15)
|
93
|
+
rack
|
94
|
+
rack-protection (1.5.3)
|
95
|
+
rack
|
96
|
+
rack-test (0.6.2)
|
97
|
+
rack (>= 1.0)
|
98
|
+
rake (10.3.2)
|
99
|
+
rb-fsevent (0.9.4)
|
100
|
+
rb-inotify (0.9.5)
|
101
|
+
ffi (>= 0.5.0)
|
102
|
+
rb-kqueue (0.2.3)
|
103
|
+
ffi (>= 0.5.0)
|
104
|
+
redcarpet (3.2.0)
|
105
|
+
ref (1.0.5)
|
106
|
+
ruby18_source_location (0.2)
|
107
|
+
sass (3.4.6)
|
108
|
+
sinatra (1.4.5)
|
109
|
+
rack (~> 1.4)
|
110
|
+
rack-protection (~> 1.4)
|
111
|
+
tilt (~> 1.3, >= 1.3.4)
|
112
|
+
slop (3.5.0)
|
113
|
+
sprockets (2.12.2)
|
114
|
+
hike (~> 1.2)
|
115
|
+
multi_json (~> 1.0)
|
116
|
+
rack (~> 1.0)
|
117
|
+
tilt (~> 1.1, != 1.3.0)
|
118
|
+
sprockets-helpers (1.0.1)
|
119
|
+
sprockets (~> 2.0)
|
120
|
+
sprockets-sass (1.0.3)
|
121
|
+
sprockets (~> 2.0)
|
122
|
+
tilt (~> 1.1)
|
123
|
+
therubyracer (0.12.1)
|
124
|
+
libv8 (~> 3.16.14.0)
|
125
|
+
ref
|
126
|
+
thor (0.19.1)
|
127
|
+
tilt (1.3.7)
|
128
|
+
uglifier (2.1.2)
|
129
|
+
execjs (>= 0.3.0)
|
130
|
+
multi_json (~> 1.0, >= 1.0.2)
|
131
|
+
|
132
|
+
PLATFORMS
|
133
|
+
ruby
|
134
|
+
|
135
|
+
DEPENDENCIES
|
136
|
+
dante-editor!
|
137
|
+
github-markup
|
138
|
+
middleman (~> 3.1.4)
|
139
|
+
middleman-gh-pages
|
140
|
+
middleman-livereload (~> 3.1.0)
|
141
|
+
pry
|
142
|
+
redcarpet
|
143
|
+
ruby18_source_location
|
144
|
+
sinatra
|
145
|
+
therubyracer
|
146
|
+
wdm (~> 0.1.0)
|
data/Procfile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
app: bundle exec rackup config.ru
|
data/README.md
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
#Dante Editor
|
2
|
+
|
3
|
+
####Just another Medium editor clone.
|
4
|
+
|
5
|
+
##Motivation:
|
6
|
+
|
7
|
+
I´ve tried all the medium clones out there, they are really great and all have it´s pros & cons, but none of them have all the features that medium wysywig provides, so I wonder, how difficult could be build my own Medium clone?
|
8
|
+
|
9
|
+
Until now I´ve been able to implement the following features:
|
10
|
+
|
11
|
+
## Features:
|
12
|
+
|
13
|
+
+ HTML sanitizer when paste text or initial load.
|
14
|
+
+ Image formatting/upload for paste events.
|
15
|
+
+ Add an unique name to elements on page.
|
16
|
+
+ Implementation of the famous tooltip on each paragraph when selected
|
17
|
+
+ Tab navigation.
|
18
|
+
+ Embeds:
|
19
|
+
+ Image Uploader with *preview* and caption option.
|
20
|
+
+ Embed data for pasted link through OEmbed services.
|
21
|
+
+ Embed media information for pasted links through OEmbed services.
|
22
|
+
+ CSS tries to use the same fonts used in Medium, if you have setup those fonts, or fallbacks to open fonts (by Google fonts) or system fonts.
|
23
|
+
+ serif: freight-text-pro fallbacks to Merriweather or Georgia,
|
24
|
+
+ sans: jaf-bernino-sans fallbacks to Open Sans or Lucida Grande
|
25
|
+
|
26
|
+
## Demo:
|
27
|
+
|
28
|
+
[http://michelson.github.io/Dante/](http://michelson.github.io/Dante/)
|
29
|
+
|
30
|
+
## Usage:
|
31
|
+
|
32
|
+
### HTML:
|
33
|
+
|
34
|
+
```html
|
35
|
+
<div id="editor">
|
36
|
+
your content here
|
37
|
+
</div>
|
38
|
+
```
|
39
|
+
|
40
|
+
### Javascript:
|
41
|
+
|
42
|
+
```html
|
43
|
+
<script type="text/javascript">
|
44
|
+
editor = new Dante.Editor(
|
45
|
+
{
|
46
|
+
el: "#editor",
|
47
|
+
upload_url: "/images.json", //it expect an url string in response like /your/server/image.jpg or http://app.com/images/image.jpg
|
48
|
+
store_url: "/save" //post to save
|
49
|
+
|
50
|
+
}
|
51
|
+
);
|
52
|
+
editor.start()
|
53
|
+
</script>
|
54
|
+
```
|
55
|
+
|
56
|
+
### Configuration options:
|
57
|
+
|
58
|
+
el: default: #editor
|
59
|
+
debugMode: default: false
|
60
|
+
upload_url: default: /uploads.json
|
61
|
+
oembed_url: default: http://api.embed.ly/1/oembed?url="
|
62
|
+
extract_url: default: http://api.embed.ly/1/extract?url="
|
63
|
+
|
64
|
+
### Rails / AssetPippeline
|
65
|
+
|
66
|
+
in Gemfile
|
67
|
+
|
68
|
+
```gem "dante-editor"```
|
69
|
+
|
70
|
+
### stylesheets:
|
71
|
+
|
72
|
+
```@import "dante";```
|
73
|
+
|
74
|
+
### javascripts:
|
75
|
+
|
76
|
+
```//= require 'dante'```
|
77
|
+
|
78
|
+
## Disclaimer:
|
79
|
+
|
80
|
+
This Library will work on early versions of Chrome/Safari/FF/IE.
|
81
|
+
I don't have any intentions to target all browsers versions, really... if you like this library and need backwards support for an specific version you can submit a patch to help with the development or just upgrade your shitty browser :D
|
82
|
+
|
83
|
+
## Dependencies:
|
84
|
+
|
85
|
+
Some dependencies are required in order to Dante editor to work propperly:
|
86
|
+
|
87
|
+
+ Jquery
|
88
|
+
+ [Underscore](https://github.com/documentcloud/underscore)
|
89
|
+
+ [Sanitize.js](https://github.com/gbirke/sanitize.js)
|
90
|
+
|
91
|
+
|
92
|
+
drop underscore and jquery dependencies is on the roadmap.
|
93
|
+
|
94
|
+
|
95
|
+
## Development:
|
96
|
+
|
97
|
+
There is a development web app middleman/sinatra to work with the source files and make the proper tests.
|
98
|
+
To use application:
|
99
|
+
|
100
|
+
### Installation:
|
101
|
+
|
102
|
+
+ install ruby
|
103
|
+
+ execute `bundle install`
|
104
|
+
|
105
|
+
### Start app:
|
106
|
+
|
107
|
+
`bundle exec rackup config.ru` and visit http://localhost:9292
|
108
|
+
|
109
|
+
or
|
110
|
+
|
111
|
+
`bundle exec middleman ` (this is without upload server)
|
112
|
+
and visit localhost:4567
|
113
|
+
|
114
|
+
or
|
115
|
+
|
116
|
+
`foreman start` and visit http://localhost:9292
|
117
|
+
|
118
|
+
### Tests:
|
119
|
+
|
120
|
+
tests are located in source/tests and /source/assets/spec folder and accessible by visit host/tests
|
121
|
+
|
122
|
+
## TODO
|
123
|
+
|
124
|
+
[read todo](./TODO.md)
|
125
|
+
|
126
|
+
|
127
|
+
### LICENSE
|
128
|
+
|
129
|
+
Miguel Michelson Martinez [Licensed under MIT.](./license.md) 2014
|
data/TODO.md
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
|
2
|
+
#TODO:
|
3
|
+
|
4
|
+
+ GENERALS
|
5
|
+
+ FF in case markup breaks (like linebreak with br or unwraped text when typing) just rewrap from current range.
|
6
|
+
|
7
|
+
+ SANITIZE PROCESS:
|
8
|
+
+ childs links inside first level elements clean & add classes ie
|
9
|
+
|
10
|
+
a target="_blank" href="#" data-href="#" class="markup--anchor markup--p-anchor" data-tooltip="#" data-tooltip-position="bottom" data-tooltip-type="link">example link</a>
|
11
|
+
|
12
|
+
+ MENU
|
13
|
+
+ Filter inner tags (except a, b, i ... ) when convert to blockquote
|
14
|
+
|
15
|
+
+ DELETE
|
16
|
+
|
17
|
+
+ handle remove from PRE tag, it set rare span, just remove it
|
18
|
+
+ clean node when remove one
|
19
|
+
|
20
|
+
+ IMAGES:
|
21
|
+
|
22
|
+
+ upload, show progress, complete
|
23
|
+
+ handle enter (linebreak) when selected in caption (build new P)
|
24
|
+
+ Fix problem in FF when linebreak or arrow down to new P , is typing backwards!! (could be a range 1 char problem ?)
|
25
|
+
|
26
|
+
+ EMBEDS:
|
27
|
+
+ fix navigation arrows when up or down through them
|
28
|
+
+ problem FF when linebreak or arrow down to new P , is typing backwards!! (could be a range 1 char problem ?)
|
29
|
+
|
30
|
+
+ SUBMIT:
|
31
|
+
get clean version of content
|
32
|
+
|
33
|
+
|
34
|
+
## ROADMAP
|
35
|
+
|
36
|
+
+ 0.0.5
|
37
|
+
+ TODO LIST COMPLETE!
|
38
|
+
+ 0.1.0
|
39
|
+
+ implement layout changes on embeds & uploads.
|
40
|
+
+ 0.2.0
|
41
|
+
+ implement creation of new sections
|
42
|
+
+ 1.0.0
|
43
|
+
+ use Rangy for better selection & range support.
|
44
|
+
|
45
|
+
|
data/bower.json
ADDED
data/config.rb
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
###
|
2
|
+
# Compass
|
3
|
+
###
|
4
|
+
|
5
|
+
# Change Compass configuration
|
6
|
+
# compass_config do |config|
|
7
|
+
# config.output_style = :compact
|
8
|
+
# end
|
9
|
+
|
10
|
+
###
|
11
|
+
# Page options, layouts, aliases and proxies
|
12
|
+
###
|
13
|
+
|
14
|
+
# Per-page layout changes:
|
15
|
+
#
|
16
|
+
# With no layout
|
17
|
+
# page "/path/to/file.html", :layout => false
|
18
|
+
#
|
19
|
+
# With alternative layout
|
20
|
+
# page "/path/to/file.html", :layout => :otherlayout
|
21
|
+
#
|
22
|
+
# A path which all have the same layout
|
23
|
+
# with_layout :admin do
|
24
|
+
# page "/admin/*"
|
25
|
+
# end
|
26
|
+
|
27
|
+
# Proxy pages (http://middlemanapp.com/dynamic-pages/)
|
28
|
+
# proxy "/this-page-has-no-template.html", "/template-file.html", :locals => {
|
29
|
+
# :which_fake_page => "Rendering a fake page with a local variable" }
|
30
|
+
|
31
|
+
###
|
32
|
+
# Helpers
|
33
|
+
###
|
34
|
+
|
35
|
+
# Automatic image dimensions on image_tag helper
|
36
|
+
# activate :automatic_image_sizes
|
37
|
+
|
38
|
+
# Reload the browser automatically whenever files change
|
39
|
+
# activate :livereload
|
40
|
+
|
41
|
+
# Methods defined in the helpers block are available in templates
|
42
|
+
# helpers do
|
43
|
+
# def some_helper
|
44
|
+
# "Helping"
|
45
|
+
# end
|
46
|
+
# end
|
47
|
+
|
48
|
+
set :css_dir, 'assets/stylesheets'
|
49
|
+
|
50
|
+
set :js_dir, 'assets/javascripts'
|
51
|
+
|
52
|
+
set :images_dir, 'assets/images'
|
53
|
+
|
54
|
+
set :fonts_dir, 'assets/fonts'
|
55
|
+
|
56
|
+
#set :markdown_engine, :redcarpet
|
57
|
+
set :markdown_engine, :kramdown
|
58
|
+
|
59
|
+
page "/tests/*", :layout => "spec"
|
60
|
+
|
61
|
+
sprockets.append_path File.join "#{root}", "bower_components"
|
62
|
+
|
63
|
+
# Build-specific configuration
|
64
|
+
configure :build do
|
65
|
+
# For example, change the Compass output style for deployment
|
66
|
+
# activate :minify_css
|
67
|
+
|
68
|
+
# Minify Javascript on build
|
69
|
+
# activate :minify_javascript
|
70
|
+
|
71
|
+
# Enable cache buster
|
72
|
+
# activate :asset_hash
|
73
|
+
|
74
|
+
activate :relative_assets
|
75
|
+
set :relative_links, true
|
76
|
+
|
77
|
+
# Use relative URLs
|
78
|
+
# activate :relative_assets
|
79
|
+
|
80
|
+
# Or use a different image path
|
81
|
+
# set :http_path, "/Content/images/"
|
82
|
+
end
|