dante-editor-seo 0.0.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +40 -0
- data/.ruby-version +1 -0
- data/.travis.yml +4 -0
- data/Gemfile +23 -0
- data/Gemfile.lock +140 -0
- data/Procfile +1 -0
- data/README.md +187 -0
- data/ROADMAP.md +10 -0
- data/TODO.md +30 -0
- data/app/assets/fonts/dante/dante.eot +0 -0
- data/app/assets/fonts/dante/dante.svg +14 -0
- data/app/assets/fonts/dante/dante.ttf +0 -0
- data/app/assets/fonts/dante/dante.woff +0 -0
- data/app/assets/fonts/dante/fontello.eot +0 -0
- data/app/assets/fonts/dante/fontello.svg +36 -0
- data/app/assets/fonts/dante/fontello.ttf +0 -0
- data/app/assets/fonts/dante/fontello.woff +0 -0
- data/app/assets/images/dante/media-loading-placeholder.png +0 -0
- data/app/assets/javascripts/dante/dante.js.coffee.erb +10 -0
- data/app/assets/javascripts/dante/editor.js.coffee +1250 -0
- data/app/assets/javascripts/dante/menu.js.coffee +216 -0
- data/app/assets/javascripts/dante/popover.js.coffee +75 -0
- data/app/assets/javascripts/dante/tooltip.js.coffee +82 -0
- data/app/assets/javascripts/dante/tooltip_widget.js.coffee +10 -0
- data/app/assets/javascripts/dante/tooltip_widgets/embed.js.coffee +60 -0
- data/app/assets/javascripts/dante/tooltip_widgets/extract.js.coffee +64 -0
- data/app/assets/javascripts/dante/tooltip_widgets/uploader.js.coffee +248 -0
- data/app/assets/javascripts/dante/utils.js.coffee +235 -0
- data/app/assets/javascripts/dante/view.js.coffee +101 -0
- data/app/assets/javascripts/dante.js +12 -0
- data/app/assets/stylesheets/dante/_animations.scss +54 -0
- data/app/assets/stylesheets/dante/_caption.scss +52 -0
- data/app/assets/stylesheets/dante/_debug.scss +11 -0
- data/app/assets/stylesheets/dante/_fonts.scss +17 -0
- data/app/assets/stylesheets/dante/_graf.scss +238 -0
- data/app/assets/stylesheets/dante/_icons.scss +57 -0
- data/app/assets/stylesheets/dante/_media.scss +39 -0
- data/app/assets/stylesheets/dante/_menu.scss +153 -0
- data/app/assets/stylesheets/dante/_needsorder.scss +209 -0
- data/app/assets/stylesheets/dante/_popover.scss +134 -0
- data/app/assets/stylesheets/dante/_post.scss +69 -0
- data/app/assets/stylesheets/dante/_scaffold.scss +20 -0
- data/app/assets/stylesheets/dante/_tooltip.scss +131 -0
- data/app/assets/stylesheets/dante/_utilities.scss +55 -0
- data/app/assets/stylesheets/dante/_variables.scss +46 -0
- data/app/assets/stylesheets/dante.scss +18 -0
- data/bower.json +44 -0
- data/config.rb +86 -0
- data/config.ru +42 -0
- data/dante-editor.gemspec +19 -0
- data/dist/css/dante-editor.css +1116 -0
- data/dist/fonts/dante/dante.eot +0 -0
- data/dist/fonts/dante/dante.svg +14 -0
- data/dist/fonts/dante/dante.ttf +0 -0
- data/dist/fonts/dante/dante.woff +0 -0
- data/dist/fonts/dante/fontello.eot +0 -0
- data/dist/fonts/dante/fontello.svg +36 -0
- data/dist/fonts/dante/fontello.ttf +0 -0
- data/dist/fonts/dante/fontello.woff +0 -0
- data/dist/images/dante/media-loading-placeholder.png +0 -0
- data/dist/js/dante-editor.js +2878 -0
- data/lib/dante-editor/rails.rb +4 -0
- data/lib/dante-editor/version.rb +5 -0
- data/lib/dante-editor.rb +5 -0
- data/license.md +22 -0
- data/rakefile +2 -0
- data/source/assets/images/dante-editor-logo.png +0 -0
- data/source/assets/images/github-logo.png +0 -0
- data/source/assets/javascripts/all.js +3 -0
- data/source/assets/javascripts/dante-editor.js +1 -0
- data/source/assets/javascripts/deps.js +4 -0
- data/source/assets/javascripts/examples/custom_toolbar.js.coffee +30 -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 +78 -0
- data/source/assets/stylesheets/_layout.scss +51 -0
- data/source/assets/stylesheets/_scaffold.scss +8 -0
- data/source/assets/stylesheets/_tooltips.scss +216 -0
- data/source/assets/stylesheets/all.css.scss +5 -0
- data/source/assets/stylesheets/dante-editor.css.scss +1 -0
- data/source/assets/stylesheets/normalize.css +375 -0
- data/source/custom_toolbar.erb +29 -0
- data/source/embeds.html.erb +27 -0
- data/source/icons/dante.json +143 -0
- data/source/icons/embed.svg +13 -0
- data/source/icons/image.svg +13 -0
- data/source/icons/plus.svg +13 -0
- data/source/icons/video.svg +13 -0
- data/source/index.html.erb +18 -0
- data/source/layouts/layout.erb +26 -0
- data/source/layouts/spec.html.erb +22 -0
- data/source/lists.html.erb +18 -0
- data/source/partials/_content.erb +6 -0
- data/source/partials/_example_1.erb +45 -0
- data/source/partials/_example_2.erb +32 -0
- data/source/partials/_example_3.erb +4 -0
- data/source/partials/_lists.erb +13 -0
- data/source/partials/_readme.markdown +24 -0
- data/source/partials/test/_example_1.erb +39 -0
- data/source/tests/dante_view.html.erb +11 -0
- data/source/tests/index.html.erb +39 -0
- data/tmp/.gitkeep +0 -0
- metadata +151 -0
@@ -0,0 +1,134 @@
|
|
1
|
+
.popover {
|
2
|
+
overflow: hidden;
|
3
|
+
position: absolute;
|
4
|
+
z-index: 900;
|
5
|
+
visibility: visible;
|
6
|
+
font-size: 12px;
|
7
|
+
text-align: center;
|
8
|
+
opacity: 0;
|
9
|
+
pointer-events: auto;
|
10
|
+
padding: 15px;
|
11
|
+
|
12
|
+
font-family: "Lucida Grande","Lucida Sans Unicode","Lucida Sans",Geneva,Verdana,sans-serif;
|
13
|
+
letter-spacing: -0.02em;
|
14
|
+
font-weight: 400;
|
15
|
+
font-style: normal;
|
16
|
+
line-height: 1.4;
|
17
|
+
&.is-active {
|
18
|
+
opacity: 1;
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
.popover-inner {
|
23
|
+
position: relative;
|
24
|
+
max-width: 280px;
|
25
|
+
border-radius: 4px;
|
26
|
+
padding: 8px;
|
27
|
+
a {
|
28
|
+
color: inherit;
|
29
|
+
text-decoration: none;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
.popover--tooltip {
|
34
|
+
pointer-events: none;
|
35
|
+
}
|
36
|
+
|
37
|
+
.popover--linkTooltip {
|
38
|
+
pointer-events: auto;
|
39
|
+
z-index: 300;
|
40
|
+
word-break: break-word;
|
41
|
+
word-wrap: break-word;
|
42
|
+
}
|
43
|
+
|
44
|
+
|
45
|
+
/*
|
46
|
+
.popover.is-withTransition {
|
47
|
+
-webkit-transition:opacity 100ms ease;
|
48
|
+
transition:opacity 100ms ease;
|
49
|
+
}
|
50
|
+
|
51
|
+
.is-resizing .popover {
|
52
|
+
opacity:0;
|
53
|
+
-webkit-transition:opacity 0 ease;
|
54
|
+
transition:opacity 0 ease;
|
55
|
+
}
|
56
|
+
*/
|
57
|
+
|
58
|
+
.popover-inner {
|
59
|
+
background-color: rgba(0,0,0,0.8);
|
60
|
+
color: #fff;
|
61
|
+
}
|
62
|
+
.popover-arrow {
|
63
|
+
position: absolute;
|
64
|
+
}
|
65
|
+
.popover-arrow:after {
|
66
|
+
background-color: rgba(0,0,0,0.8);
|
67
|
+
}
|
68
|
+
|
69
|
+
.popover--top .popover-arrow,
|
70
|
+
.popover--bottom .popover-arrow {
|
71
|
+
left: 50%;
|
72
|
+
margin-left: -7px;
|
73
|
+
}
|
74
|
+
|
75
|
+
.popover--left .popover-arrow,
|
76
|
+
.popover--right .popover-arrow {
|
77
|
+
top: 50%;
|
78
|
+
margin-top: -7px;
|
79
|
+
}
|
80
|
+
|
81
|
+
.popover--top .popover-arrow {
|
82
|
+
bottom: 1px;
|
83
|
+
clip: rect(0 18px 18px 4px);
|
84
|
+
}
|
85
|
+
|
86
|
+
.popover--right .popover-arrow {
|
87
|
+
left: 1px;
|
88
|
+
clip: rect(-4px 14px 18px 0);
|
89
|
+
}
|
90
|
+
|
91
|
+
.popover--bottom .popover-arrow {
|
92
|
+
top: 1px;
|
93
|
+
clip: rect(0 18px 14px -1px);
|
94
|
+
}
|
95
|
+
|
96
|
+
.popover--left .popover-arrow {
|
97
|
+
right: 1px;
|
98
|
+
clip: rect(-4px 14px 18px 0);
|
99
|
+
}
|
100
|
+
|
101
|
+
.popover-arrow:after {
|
102
|
+
content: '';
|
103
|
+
display: block;
|
104
|
+
width: 14px;
|
105
|
+
height: 14px;
|
106
|
+
}
|
107
|
+
|
108
|
+
.popover--top .popover-arrow:after {
|
109
|
+
-webkit-transform: rotate(45deg) translate(-5px,-5px);
|
110
|
+
-ms-transform: rotate(45deg) translate(-5px,-5px);
|
111
|
+
transform: rotate(45deg) translate(-5px,-5px);
|
112
|
+
box-shadow: 1px 1px 1px -1px rgba(0,0,0,0.8);
|
113
|
+
}
|
114
|
+
|
115
|
+
.popover--right .popover-arrow:after {
|
116
|
+
-webkit-transform: rotate(45deg) translate(6px,-6px);
|
117
|
+
-ms-transform: rotate(45deg) translate(6px,-6px);
|
118
|
+
transform: rotate(45deg) translate(6px,-6px);
|
119
|
+
box-shadow: -1px 1px 1px -1px rgba(0,0,0,0.8);
|
120
|
+
}
|
121
|
+
|
122
|
+
.popover--bottom .popover-arrow:after {
|
123
|
+
-webkit-transform: rotate(45deg) translate(6px,6px);
|
124
|
+
-ms-transform: rotate(45deg) translate(6px,6px);
|
125
|
+
transform: rotate(45deg) translate(6px,6px);
|
126
|
+
box-shadow: -1px -1px 1px -1px rgba(0,0,0,0.44);
|
127
|
+
}
|
128
|
+
|
129
|
+
.popover--left .popover-arrow:after {
|
130
|
+
-webkit-transform: rotate(45deg) translate(-6px,6px);
|
131
|
+
-ms-transform: rotate(45deg) translate(-6px,6px);
|
132
|
+
transform: rotate(45deg) translate(-6px,6px);
|
133
|
+
box-shadow: 1px -1px 1px -1px rgba(0,0,0,0.8);
|
134
|
+
}
|
@@ -0,0 +1,69 @@
|
|
1
|
+
.postArticle {
|
2
|
+
position: relative;
|
3
|
+
-webkit-transform: translateZ(0);
|
4
|
+
transform: translateZ(0);
|
5
|
+
.layoutSingleColumn {
|
6
|
+
& {
|
7
|
+
width: 700px;
|
8
|
+
margin-left: auto;
|
9
|
+
margin-right: auto;
|
10
|
+
}
|
11
|
+
@media (max-width: 800px) {
|
12
|
+
width: 640px;
|
13
|
+
}
|
14
|
+
@media (max-width: 680px) {
|
15
|
+
width: auto;
|
16
|
+
margin-left: 20px;
|
17
|
+
margin-right: 20px;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
.postWrapper,
|
23
|
+
.postWrapper-inner {
|
24
|
+
position: relative;
|
25
|
+
@include clearfix;
|
26
|
+
}
|
27
|
+
|
28
|
+
.postWrapper {
|
29
|
+
overflow: hidden;
|
30
|
+
|
31
|
+
.is-postEditMode & { display: none; }
|
32
|
+
.is-postEditModeInitialized & { display: block; }
|
33
|
+
}
|
34
|
+
|
35
|
+
.postContent {
|
36
|
+
font-family: $font-family-serif;
|
37
|
+
letter-spacing: 0.01rem;
|
38
|
+
font-weight: 400;
|
39
|
+
font-style: normal;
|
40
|
+
//font-size: 22px;
|
41
|
+
//line-height: 1.5;
|
42
|
+
font-size: 19px;
|
43
|
+
line-height: 1.69;
|
44
|
+
}
|
45
|
+
|
46
|
+
.postField {
|
47
|
+
&, &:focus {
|
48
|
+
outline: 0;
|
49
|
+
word-break: break-word;
|
50
|
+
word-wrap: break-word;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
.postField--body {
|
55
|
+
@include clearfix;
|
56
|
+
margin-bottom: 30px;
|
57
|
+
}
|
58
|
+
|
59
|
+
.section--last {
|
60
|
+
padding-bottom: 5px;
|
61
|
+
}
|
62
|
+
|
63
|
+
.section-content {
|
64
|
+
@include clearfix;
|
65
|
+
}
|
66
|
+
|
67
|
+
.section-inner {
|
68
|
+
position: relative;
|
69
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
.notesSource {
|
2
|
+
|
3
|
+
& {
|
4
|
+
padding: 0;
|
5
|
+
margin: 0;
|
6
|
+
position: relative;
|
7
|
+
color: rgba(0,0,0,0.8);
|
8
|
+
text-rendering: optimizeLegibility;
|
9
|
+
-webkit-font-smoothing: antialiased;
|
10
|
+
-moz-osx-font-smoothing: grayscale;
|
11
|
+
-moz-font-feature-settings: liga on;
|
12
|
+
}
|
13
|
+
|
14
|
+
*,
|
15
|
+
*:before,
|
16
|
+
*:after {
|
17
|
+
box-sizing: border-box;
|
18
|
+
}
|
19
|
+
|
20
|
+
}
|
@@ -0,0 +1,131 @@
|
|
1
|
+
.inlineTooltip {
|
2
|
+
|
3
|
+
// BASE
|
4
|
+
position: absolute;
|
5
|
+
z-index: 900;
|
6
|
+
width: $tooltip-size;
|
7
|
+
height: $tooltip-size;
|
8
|
+
-webkit-transition: opacity 100ms, width 0 linear 250ms;
|
9
|
+
transition: opacity 100ms, width 0 linear 250ms;
|
10
|
+
padding: 0;
|
11
|
+
font-size: 0;
|
12
|
+
|
13
|
+
opacity: 0;
|
14
|
+
pointer-events: none;
|
15
|
+
|
16
|
+
&.is-active {
|
17
|
+
opacity: 1;
|
18
|
+
pointer-events: auto;
|
19
|
+
}
|
20
|
+
&.is-scaled {
|
21
|
+
width: $tooltip-size-expanded;
|
22
|
+
-webkit-transition-delay: 0;
|
23
|
+
transition-delay: 0;
|
24
|
+
}
|
25
|
+
}
|
26
|
+
|
27
|
+
// MENU
|
28
|
+
.inlineTooltip-menu {
|
29
|
+
& {
|
30
|
+
display: inline-block;
|
31
|
+
padding-left: $tooltip-menu-spacing;
|
32
|
+
}
|
33
|
+
button {
|
34
|
+
margin-right: $tooltip-button-spacing;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
// BUTTON
|
39
|
+
.inlineTooltip-button {
|
40
|
+
|
41
|
+
// BASE
|
42
|
+
& {
|
43
|
+
display: inline-block;
|
44
|
+
position: relative;
|
45
|
+
outline: 0;
|
46
|
+
padding: 0;
|
47
|
+
vertical-align: bottom;
|
48
|
+
box-sizing: border-box;
|
49
|
+
border-radius: $tooltip-border-radius;
|
50
|
+
cursor: pointer;
|
51
|
+
font-size: 14px;
|
52
|
+
text-decoration: none;
|
53
|
+
font-family: $font-family-sans;
|
54
|
+
letter-spacing: -0.02em;
|
55
|
+
font-weight: 400;
|
56
|
+
font-style: normal;
|
57
|
+
white-space: nowrap;
|
58
|
+
text-rendering: auto;
|
59
|
+
text-align: center;
|
60
|
+
text-rendering: optimizeLegibility;
|
61
|
+
-webkit-font-smoothing: antialiased;
|
62
|
+
-moz-osx-font-smoothing: grayscale;
|
63
|
+
-moz-font-feature-settings: "liga" on;
|
64
|
+
width: $tooltip-size;
|
65
|
+
height: $tooltip-size;
|
66
|
+
line-height: $tooltip-line-height;
|
67
|
+
-webkit-transition: 100ms border-color, 100ms color;
|
68
|
+
transition: 100ms border-color, 100ms color;
|
69
|
+
background: rgba($tooltip-color, $tooltip-background-opacity);
|
70
|
+
border: $tooltip-border-width solid;
|
71
|
+
border-color: rgba($tooltip-color, $tooltip-color-opacity);
|
72
|
+
color: rgba($tooltip-color, $tooltip-color-opacity);
|
73
|
+
}
|
74
|
+
|
75
|
+
&:hover {
|
76
|
+
border-color: rgba($tooltip-color, $tooltip-color-opacity-hover);
|
77
|
+
color: rgba($tooltip-color, $tooltip-color-opacity-hover);
|
78
|
+
}
|
79
|
+
|
80
|
+
// SCALE
|
81
|
+
&.scale {
|
82
|
+
& {
|
83
|
+
-webkit-transform: scale(0);
|
84
|
+
-ms-transform: scale(0);
|
85
|
+
transform: scale(0);
|
86
|
+
-webkit-transition: -webkit-#{$tooltip-forward-transition}, $tooltip-default-transition;
|
87
|
+
transition: $tooltip-forward-transition, $tooltip-default-transition;
|
88
|
+
}
|
89
|
+
.is-scaled & {
|
90
|
+
-webkit-transform: scale(1);
|
91
|
+
-ms-transform: scale(1);
|
92
|
+
transform: scale(1);
|
93
|
+
-webkit-transition: -webkit-#{$tooltip-backward-transition}, $tooltip-default-transition;
|
94
|
+
transition: $tooltip-backward-transition, $tooltip-default-transition;
|
95
|
+
}
|
96
|
+
&:nth-child(2) {
|
97
|
+
-webkit-transition-delay: 30ms;
|
98
|
+
transition-delay: 30ms;
|
99
|
+
}
|
100
|
+
&:nth-child(3) {
|
101
|
+
-webkit-transition-delay: 60ms;
|
102
|
+
transition-delay: 60ms;
|
103
|
+
}
|
104
|
+
&:nth-child(4) {
|
105
|
+
-webkit-transition-delay: 90ms;
|
106
|
+
transition-delay: 90ms;
|
107
|
+
}
|
108
|
+
}
|
109
|
+
|
110
|
+
// CONTROL
|
111
|
+
&.control {
|
112
|
+
& {
|
113
|
+
-webkit-transition: -webkit-#{$tooltip-forward-transition}, $tooltip-default-transition;
|
114
|
+
transition: $tooltip-forward-transition, $tooltip-default-transition;
|
115
|
+
-webkit-transform: rotate(0);
|
116
|
+
-ms-transform: rotate(0);
|
117
|
+
transform: rotate(0);
|
118
|
+
}
|
119
|
+
.is-scaled & {
|
120
|
+
-webkit-transition: -webkit-#{$tooltip-backward-transition}, $tooltip-default-transition;
|
121
|
+
transition: $tooltip-backward-transition, $tooltip-default-transition;
|
122
|
+
-webkit-transform: rotate(45deg);
|
123
|
+
-ms-transform: rotate(45deg);
|
124
|
+
transform: rotate(45deg);
|
125
|
+
border-color: rgba($tooltip-color, $tooltip-color-opacity-hover);
|
126
|
+
color: rgba($tooltip-color, $tooltip-color-opacity-hover);
|
127
|
+
}
|
128
|
+
}
|
129
|
+
|
130
|
+
}
|
131
|
+
|
@@ -0,0 +1,55 @@
|
|
1
|
+
@mixin clearfix {
|
2
|
+
&:before, &:after {
|
3
|
+
content: " ";
|
4
|
+
display: table;
|
5
|
+
}
|
6
|
+
&:after {
|
7
|
+
clear: both;
|
8
|
+
}
|
9
|
+
|
10
|
+
*zoom: 1;
|
11
|
+
}
|
12
|
+
|
13
|
+
|
14
|
+
@mixin box-sizing {
|
15
|
+
*,
|
16
|
+
*:before,
|
17
|
+
*:after {
|
18
|
+
box-sizing: border-box;
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
@keyframes spinner {
|
25
|
+
to {transform: rotate(360deg);}
|
26
|
+
}
|
27
|
+
|
28
|
+
@-webkit-keyframes spinner {
|
29
|
+
to {-webkit-transform: rotate(360deg);}
|
30
|
+
}
|
31
|
+
|
32
|
+
.spinner {
|
33
|
+
min-width: 24px;
|
34
|
+
min-height: 24px;
|
35
|
+
}
|
36
|
+
|
37
|
+
.spinner:before {
|
38
|
+
content: 'Loading…';
|
39
|
+
position: absolute;
|
40
|
+
top: 50%;
|
41
|
+
left: 50%;
|
42
|
+
width: 16px;
|
43
|
+
height: 16px;
|
44
|
+
margin-top: -10px;
|
45
|
+
margin-left: -10px;
|
46
|
+
}
|
47
|
+
|
48
|
+
.spinner:not(:required):before {
|
49
|
+
content: '';
|
50
|
+
border-radius: 50%;
|
51
|
+
border: 2px solid rgba(0, 0, 0, .3);
|
52
|
+
border-top-color: rgba(0, 0, 0, .6);
|
53
|
+
animation: spinner .6s linear infinite;
|
54
|
+
-webkit-animation: spinner .6s linear infinite;
|
55
|
+
}
|
@@ -0,0 +1,46 @@
|
|
1
|
+
$font-family-sans: 'jaf-bernino-sans', 'Open Sans', "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif;
|
2
|
+
$font-family-serif: 'freight-text-pro', 'Merriweather', Georgia,Cambria, "Times New Roman", Times,serif;
|
3
|
+
$font-family-mono: Menlo, Monaco, Consolas, "Courier New", "Courier", monospace;
|
4
|
+
|
5
|
+
$font-family-base: $font-family-sans;
|
6
|
+
$font-size-base: 14px;
|
7
|
+
$line-height-base: 1.428571429; // 20/14
|
8
|
+
|
9
|
+
$active-color: #5BD974;
|
10
|
+
|
11
|
+
$menu-tone: #333;
|
12
|
+
$menu-factor: 5%;
|
13
|
+
$menu-background: linear-gradient(to bottom, darken($menu-tone,$menu-factor), $menu-tone) repeat scroll 0 0 $menu-tone;
|
14
|
+
$menu-shadow: 1px 2px 3px -2px #222;
|
15
|
+
$menu-border-width: 1px;
|
16
|
+
$menu-border-color: darken($menu-tone,$menu-factor);
|
17
|
+
$menu-border-radius: 5px;
|
18
|
+
$menu-border: $menu-border-width solid $menu-border-color;
|
19
|
+
$menu-color: #FFFFFF;
|
20
|
+
$menu-color-active: $active-color;
|
21
|
+
$menu-caret-size: 8px;
|
22
|
+
|
23
|
+
$menu-height: 45px;
|
24
|
+
$menu-button-height: $menu-height - ($menu-border-width * 2);
|
25
|
+
|
26
|
+
$tooltip-color: black;
|
27
|
+
$tooltip-color-opacity: 0.44;
|
28
|
+
$tooltip-color-opacity-hover: 0.9;
|
29
|
+
$tooltip-background-opacity: 0;
|
30
|
+
$tooltip-border-width: 1px;
|
31
|
+
$tooltip-border-radius: 999em;
|
32
|
+
|
33
|
+
$tooltip-button-spacing: 9px;
|
34
|
+
$tooltip-menu-spacing: 22px;
|
35
|
+
|
36
|
+
$tooltip-items: 3;
|
37
|
+
$tooltip-size: 32px;
|
38
|
+
$tooltip-line-height: $tooltip-size;
|
39
|
+
|
40
|
+
// Add 1px on expanded tooltip to avoid colapsed buttons in FF
|
41
|
+
$tooltip-size-expanded: 1 + ($tooltip-size + $tooltip-menu-spacing) + (($tooltip-size + $tooltip-button-spacing) * $tooltip-items);
|
42
|
+
$tooltip-default-transition: 100ms border-color, 100ms color;
|
43
|
+
$tooltip-forward-transition: transform 100ms;
|
44
|
+
$tooltip-backward-transition: transform 250ms;
|
45
|
+
|
46
|
+
$debugger: true;
|
@@ -0,0 +1,18 @@
|
|
1
|
+
@charset "utf-8";
|
2
|
+
|
3
|
+
@import "dante/variables";
|
4
|
+
@import "dante/utilities";
|
5
|
+
@import "dante/scaffold";
|
6
|
+
@import "dante/fonts";
|
7
|
+
@import "dante/animations";
|
8
|
+
@import "dante/post";
|
9
|
+
@import "dante/icons";
|
10
|
+
@import "dante/menu";
|
11
|
+
@import "dante/tooltip";
|
12
|
+
@import "dante/popover";
|
13
|
+
@import "dante/graf";
|
14
|
+
@import "dante/media";
|
15
|
+
@import "dante/caption";
|
16
|
+
@import "dante/needsorder";
|
17
|
+
|
18
|
+
@import "dante/debug";
|
data/bower.json
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
{
|
2
|
+
"name" : "dante",
|
3
|
+
"description": "Just another Medium editor clone.",
|
4
|
+
"homepage": "michelson.github.io/Dante/",
|
5
|
+
"version" : "0.0.13",
|
6
|
+
"keywords": [
|
7
|
+
"css",
|
8
|
+
"sass",
|
9
|
+
"js",
|
10
|
+
"coffeescript",
|
11
|
+
"medium",
|
12
|
+
"editor",
|
13
|
+
"web",
|
14
|
+
"wysiwyg"
|
15
|
+
],
|
16
|
+
"authors": [
|
17
|
+
{ "name": "Miguel Michelson", "homepage": "https://github.com/michelson" },
|
18
|
+
{ "name": "Cristian Ferrari", "homepage": "https://github.com/cristianferrarig" }
|
19
|
+
],
|
20
|
+
"main": [
|
21
|
+
"app/assets/**/*",
|
22
|
+
"dist/**/*"
|
23
|
+
],
|
24
|
+
"ignore": [
|
25
|
+
".gitignore",
|
26
|
+
".travis.yml",
|
27
|
+
".ruby-version",
|
28
|
+
"config.*",
|
29
|
+
"dante-editor.gemspec",
|
30
|
+
"Gemfile",
|
31
|
+
"Gemfile.lock",
|
32
|
+
"Procfile",
|
33
|
+
"rakefile",
|
34
|
+
"ROADMAP.md",
|
35
|
+
"TODO.md",
|
36
|
+
"lib",
|
37
|
+
"source"
|
38
|
+
],
|
39
|
+
"dependencies": {
|
40
|
+
"jquery": "*",
|
41
|
+
"underscore" : "*",
|
42
|
+
"sanitize.js" : "*"
|
43
|
+
}
|
44
|
+
}
|
data/config.rb
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
class DistBuilder < Middleman::Extension
|
4
|
+
|
5
|
+
def initialize(app, options_hash={}, &block)
|
6
|
+
super
|
7
|
+
|
8
|
+
app.after_build do |builder|
|
9
|
+
app.config[:dist_dir] = "dist"
|
10
|
+
FileUtils.rm_rf Dir.glob("#{app.config[:dist_dir]}/*")
|
11
|
+
base_dist_path = app.config[:dist_dir]
|
12
|
+
dist_fonts_path = File.join(base_dist_path, "fonts", "dante")
|
13
|
+
dist_images_path = File.join(base_dist_path, "images", "dante")
|
14
|
+
dist_js_path = File.join(base_dist_path, "js")
|
15
|
+
dist_css_path = File.join(base_dist_path, "css")
|
16
|
+
|
17
|
+
#FileUtils.rm_rf base_dist_path
|
18
|
+
|
19
|
+
builder.say_status :dist_builder, "generating dist files"
|
20
|
+
|
21
|
+
fonts_dir = File.join(app.config[:build_dir], app.config[:fonts_dir])
|
22
|
+
FileUtils.mkdir_p dist_fonts_path
|
23
|
+
FileUtils.cp_r "#{fonts_dir}/dante/.", dist_fonts_path, :verbose => true
|
24
|
+
|
25
|
+
images_dir = File.join(app.config[:build_dir], app.config[:images_dir])
|
26
|
+
FileUtils.mkdir_p dist_images_path
|
27
|
+
FileUtils.cp_r "#{images_dir}/dante/.", dist_images_path, :verbose => true
|
28
|
+
|
29
|
+
|
30
|
+
js_dir = File.join(app.config[:build_dir], app.config[:js_dir])
|
31
|
+
FileUtils.mkdir_p dist_js_path
|
32
|
+
FileUtils.cp "#{js_dir}/dante-editor.js", dist_js_path, :verbose => true
|
33
|
+
|
34
|
+
|
35
|
+
css_dir = File.join(app.config[:build_dir], app.config[:css_dir])
|
36
|
+
FileUtils.mkdir_p dist_css_path
|
37
|
+
FileUtils.cp "#{css_dir}/dante-editor.css", dist_css_path, :verbose => true
|
38
|
+
|
39
|
+
builder.say_status :dist_builder, "dist complete"
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
::Middleman::Extensions.register(:dist_builder, DistBuilder)
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
set :css_dir, 'assets/stylesheets'
|
51
|
+
|
52
|
+
set :js_dir, 'assets/javascripts'
|
53
|
+
|
54
|
+
set :images_dir, 'assets/images'
|
55
|
+
|
56
|
+
set :fonts_dir, 'assets/fonts'
|
57
|
+
|
58
|
+
#set :markdown_engine, :redcarpet
|
59
|
+
set :markdown_engine, :kramdown
|
60
|
+
|
61
|
+
page "/tests/*", :layout => "spec"
|
62
|
+
|
63
|
+
sprockets.append_path File.join "#{root}", "bower_components"
|
64
|
+
|
65
|
+
|
66
|
+
# Build-specific configuration
|
67
|
+
configure :build do
|
68
|
+
# For example, change the Compass output style for deployment
|
69
|
+
# activate :minify_css
|
70
|
+
|
71
|
+
# Minify Javascript on build
|
72
|
+
# activate :minify_javascript
|
73
|
+
|
74
|
+
# Enable cache buster
|
75
|
+
# activate :asset_hash
|
76
|
+
|
77
|
+
activate :relative_assets
|
78
|
+
set :relative_links, true
|
79
|
+
activate :dist_builder
|
80
|
+
|
81
|
+
# Use relative URLs
|
82
|
+
# activate :relative_assets
|
83
|
+
|
84
|
+
# Or use a different image path
|
85
|
+
# set :http_path, "/Content/images/"
|
86
|
+
end
|
data/config.ru
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'middleman/rack'
|
3
|
+
|
4
|
+
class UploadServer < Sinatra::Base
|
5
|
+
|
6
|
+
use Rack::Static, :urls => ["/images"], :root => "tmp"
|
7
|
+
# Info
|
8
|
+
get "/info" do
|
9
|
+
"Dante Upload server, hello!"
|
10
|
+
end
|
11
|
+
|
12
|
+
# Handle POST-request (Receive and save the uploaded file)
|
13
|
+
post "/new.?:format?" do
|
14
|
+
|
15
|
+
name = [Time.now.to_i , params['file'][:filename]].join("-")
|
16
|
+
path = File.join(File.dirname(__FILE__), 'tmp/images', name)
|
17
|
+
File.open(path, "wb") do |f|
|
18
|
+
f.write(params['file'][:tempfile].read)
|
19
|
+
end
|
20
|
+
|
21
|
+
return "/uploads/images/#{name}"
|
22
|
+
end
|
23
|
+
|
24
|
+
post "upload_url" do
|
25
|
+
params = request.env['rack.request.query_hash']
|
26
|
+
puts "파라미터 : #{params}"
|
27
|
+
return "#{params}"
|
28
|
+
end
|
29
|
+
|
30
|
+
get "/test" do
|
31
|
+
" HELLO TEST? "
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
#Mounts upload server & middleman app
|
38
|
+
run Rack::URLMap.new(
|
39
|
+
"/" => Middleman.server,
|
40
|
+
"/uploads" => UploadServer.new,
|
41
|
+
"/upload_url" => UploadServer.new
|
42
|
+
)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'dante-editor/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "dante-editor-seo"
|
8
|
+
gem.version = DanteEditor::VERSION
|
9
|
+
gem.authors = ["Miguel Michelson", "Cristian Ferrari", "Seo Yoochan"]
|
10
|
+
gem.email = ["miguelmichelson@gmail.com", "cristianferrarig@gmail.com", "supergnee@gmail.com"]
|
11
|
+
gem.description = %q{dante-editor yet another Medium editor clone.}
|
12
|
+
gem.summary = %q{dante-editor yet another Medium editor clone.}
|
13
|
+
gem.homepage = "http://michelson.github.io/Dante/"
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ["lib"]
|
19
|
+
end
|