dante-editor-seo 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +40 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +4 -0
  5. data/Gemfile +23 -0
  6. data/Gemfile.lock +140 -0
  7. data/Procfile +1 -0
  8. data/README.md +187 -0
  9. data/ROADMAP.md +10 -0
  10. data/TODO.md +30 -0
  11. data/app/assets/fonts/dante/dante.eot +0 -0
  12. data/app/assets/fonts/dante/dante.svg +14 -0
  13. data/app/assets/fonts/dante/dante.ttf +0 -0
  14. data/app/assets/fonts/dante/dante.woff +0 -0
  15. data/app/assets/fonts/dante/fontello.eot +0 -0
  16. data/app/assets/fonts/dante/fontello.svg +36 -0
  17. data/app/assets/fonts/dante/fontello.ttf +0 -0
  18. data/app/assets/fonts/dante/fontello.woff +0 -0
  19. data/app/assets/images/dante/media-loading-placeholder.png +0 -0
  20. data/app/assets/javascripts/dante/dante.js.coffee.erb +10 -0
  21. data/app/assets/javascripts/dante/editor.js.coffee +1250 -0
  22. data/app/assets/javascripts/dante/menu.js.coffee +216 -0
  23. data/app/assets/javascripts/dante/popover.js.coffee +75 -0
  24. data/app/assets/javascripts/dante/tooltip.js.coffee +82 -0
  25. data/app/assets/javascripts/dante/tooltip_widget.js.coffee +10 -0
  26. data/app/assets/javascripts/dante/tooltip_widgets/embed.js.coffee +60 -0
  27. data/app/assets/javascripts/dante/tooltip_widgets/extract.js.coffee +64 -0
  28. data/app/assets/javascripts/dante/tooltip_widgets/uploader.js.coffee +248 -0
  29. data/app/assets/javascripts/dante/utils.js.coffee +235 -0
  30. data/app/assets/javascripts/dante/view.js.coffee +101 -0
  31. data/app/assets/javascripts/dante.js +12 -0
  32. data/app/assets/stylesheets/dante/_animations.scss +54 -0
  33. data/app/assets/stylesheets/dante/_caption.scss +52 -0
  34. data/app/assets/stylesheets/dante/_debug.scss +11 -0
  35. data/app/assets/stylesheets/dante/_fonts.scss +17 -0
  36. data/app/assets/stylesheets/dante/_graf.scss +238 -0
  37. data/app/assets/stylesheets/dante/_icons.scss +57 -0
  38. data/app/assets/stylesheets/dante/_media.scss +39 -0
  39. data/app/assets/stylesheets/dante/_menu.scss +153 -0
  40. data/app/assets/stylesheets/dante/_needsorder.scss +209 -0
  41. data/app/assets/stylesheets/dante/_popover.scss +134 -0
  42. data/app/assets/stylesheets/dante/_post.scss +69 -0
  43. data/app/assets/stylesheets/dante/_scaffold.scss +20 -0
  44. data/app/assets/stylesheets/dante/_tooltip.scss +131 -0
  45. data/app/assets/stylesheets/dante/_utilities.scss +55 -0
  46. data/app/assets/stylesheets/dante/_variables.scss +46 -0
  47. data/app/assets/stylesheets/dante.scss +18 -0
  48. data/bower.json +44 -0
  49. data/config.rb +86 -0
  50. data/config.ru +42 -0
  51. data/dante-editor.gemspec +19 -0
  52. data/dist/css/dante-editor.css +1116 -0
  53. data/dist/fonts/dante/dante.eot +0 -0
  54. data/dist/fonts/dante/dante.svg +14 -0
  55. data/dist/fonts/dante/dante.ttf +0 -0
  56. data/dist/fonts/dante/dante.woff +0 -0
  57. data/dist/fonts/dante/fontello.eot +0 -0
  58. data/dist/fonts/dante/fontello.svg +36 -0
  59. data/dist/fonts/dante/fontello.ttf +0 -0
  60. data/dist/fonts/dante/fontello.woff +0 -0
  61. data/dist/images/dante/media-loading-placeholder.png +0 -0
  62. data/dist/js/dante-editor.js +2878 -0
  63. data/lib/dante-editor/rails.rb +4 -0
  64. data/lib/dante-editor/version.rb +5 -0
  65. data/lib/dante-editor.rb +5 -0
  66. data/license.md +22 -0
  67. data/rakefile +2 -0
  68. data/source/assets/images/dante-editor-logo.png +0 -0
  69. data/source/assets/images/github-logo.png +0 -0
  70. data/source/assets/javascripts/all.js +3 -0
  71. data/source/assets/javascripts/dante-editor.js +1 -0
  72. data/source/assets/javascripts/deps.js +4 -0
  73. data/source/assets/javascripts/examples/custom_toolbar.js.coffee +30 -0
  74. data/source/assets/javascripts/spec.js +2 -0
  75. data/source/assets/javascripts/specs/cleaner.js.coffee +8 -0
  76. data/source/assets/javascripts/specs/dante_view.js.coffee +74 -0
  77. data/source/assets/javascripts/specs/editor.js.coffee +78 -0
  78. data/source/assets/stylesheets/_layout.scss +51 -0
  79. data/source/assets/stylesheets/_scaffold.scss +8 -0
  80. data/source/assets/stylesheets/_tooltips.scss +216 -0
  81. data/source/assets/stylesheets/all.css.scss +5 -0
  82. data/source/assets/stylesheets/dante-editor.css.scss +1 -0
  83. data/source/assets/stylesheets/normalize.css +375 -0
  84. data/source/custom_toolbar.erb +29 -0
  85. data/source/embeds.html.erb +27 -0
  86. data/source/icons/dante.json +143 -0
  87. data/source/icons/embed.svg +13 -0
  88. data/source/icons/image.svg +13 -0
  89. data/source/icons/plus.svg +13 -0
  90. data/source/icons/video.svg +13 -0
  91. data/source/index.html.erb +18 -0
  92. data/source/layouts/layout.erb +26 -0
  93. data/source/layouts/spec.html.erb +22 -0
  94. data/source/lists.html.erb +18 -0
  95. data/source/partials/_content.erb +6 -0
  96. data/source/partials/_example_1.erb +45 -0
  97. data/source/partials/_example_2.erb +32 -0
  98. data/source/partials/_example_3.erb +4 -0
  99. data/source/partials/_lists.erb +13 -0
  100. data/source/partials/_readme.markdown +24 -0
  101. data/source/partials/test/_example_1.erb +39 -0
  102. data/source/tests/dante_view.html.erb +11 -0
  103. data/source/tests/index.html.erb +39 -0
  104. data/tmp/.gitkeep +0 -0
  105. 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