lalala 4.0.0.dev.416 → 4.1.0.dev.299
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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/Gemfile +1 -3
- data/Haraway.md +14 -0
- data/app/assets/javascripts/lalala/base.js +8 -0
- data/app/assets/javascripts/lalala/initializers/chosen.module.js +3 -0
- data/app/assets/javascripts/lalala/initializers/haraway.module.js +8 -0
- data/app/assets/javascripts/lalala/lib/overlay.js +335 -0
- data/app/assets/javascripts/lalala/modules/collapsible_pages_tree.module.js +26 -33
- data/app/assets/javascripts/lalala/modules/editor.module.js +37 -23
- data/app/assets/javascripts/lalala/modules/file-uploader-metadata.module.js +248 -0
- data/app/assets/javascripts/lalala/modules/file-uploader.module.js +376 -0
- data/app/assets/javascripts/lalala/modules/init.module.js +1 -5
- data/app/assets/javascripts/lalala/modules/media_selector.module.js +250 -0
- data/app/assets/javascripts/lalala/modules/overlay.module.js +33 -0
- data/app/assets/stylesheets/lalala/_base.css.scss +5 -2
- data/app/assets/stylesheets/lalala/components/_buttons.css.scss +11 -3
- data/app/assets/stylesheets/lalala/components/_forms.css.scss +14 -64
- data/app/assets/stylesheets/lalala/lib/_overlay.css.scss +66 -0
- data/app/assets/stylesheets/lalala/modules/_dashboard.css.scss +10 -51
- data/app/assets/stylesheets/lalala/modules/_editor-cheatsheet.css.scss +1 -17
- data/app/assets/stylesheets/lalala/modules/_file-uploader-metadata.css.scss +118 -0
- data/app/assets/stylesheets/lalala/modules/_file-uploader.css.scss +289 -0
- data/app/assets/stylesheets/lalala/modules/_media-selector.css.scss +113 -0
- data/app/assets/stylesheets/lalala/modules/_title-bar.css.scss +0 -17
- data/app/controllers/lalala/public/errors_controller.rb +7 -0
- data/app/models/lalala/page.rb +0 -1
- data/app/views/lalala/markdown/cheatsheet.html.erb +0 -2
- data/config/routes.rb +12 -1
- data/lalala-assets.gemspec +3 -3
- data/lalala-development.gemspec +1 -1
- data/lalala-test.gemspec +1 -1
- data/lalala.gemspec +4 -5
- data/lib/formtastic/form_builder_ext.rb +10 -0
- data/lib/formtastic/inputs/haraway_input.rb +151 -0
- data/lib/generators/lalala/assets/templates/bower.json.erb +1 -1
- data/lib/generators/lalala/install/install_generator.rb +0 -23
- data/lib/lalala/admin/pages.rb +1 -26
- data/lib/lalala/engine.rb +0 -7
- data/lib/lalala/ext_action_dispatch.rb +0 -1
- data/lib/lalala/ext_active_record/i18n_translations_writer.rb +0 -1
- data/lib/lalala/ext_active_record.rb +0 -1
- data/lib/lalala/ext_i18n/input_helper.rb +0 -1
- data/lib/lalala/ext_i18n/negotiation_adapter.rb +0 -4
- data/lib/lalala/ext_i18n/test_negotiation_adapter.rb +0 -4
- data/lib/lalala/ext_rack/i18n_negotiator.rb +7 -9
- data/lib/lalala/markdown/handlers/asset.rb +24 -0
- data/lib/lalala/markdown/handlers/youtube.rb +9 -13
- data/lib/lalala/markdown/html_renderer.rb +2 -2
- data/lib/lalala/markdown.rb +2 -3
- data/lib/lalala/utils/install_template.rb +3 -9
- data/lib/lalala/version.rb +2 -2
- data/lib/lalala.rb +6 -7
- data/script/ci +33 -30
- data/test/dummy/app/admin/articles.rb +26 -12
- data/test/dummy/app/admin/dashboard.rb +5 -8
- data/test/dummy/app/admin/tags.rb +1 -3
- data/test/dummy/app/assets/stylesheets/_normalize.css +423 -0
- data/test/dummy/app/assets/stylesheets/application.css.scss +2 -0
- data/test/dummy/app/assets/stylesheets/base/_base.css.scss +4 -0
- data/test/dummy/app/controllers/pages_controller.rb +4 -0
- data/test/dummy/app/models/article.rb +10 -4
- data/test/dummy/app/pages/application_page.rb +7 -2
- data/test/dummy/app/pages/basic_page.rb +5 -6
- data/test/dummy/app/pages/home_page.rb +10 -10
- data/test/dummy/app/pages/media_page.rb +23 -0
- data/test/dummy/app/views/admin/_stats.html.erb +7 -14
- data/test/dummy/app/views/layouts/application.html.erb +6 -2
- data/test/dummy/app/views/pages/media.html.erb +3 -0
- data/test/dummy/config/initializers/haraway.rb +29 -0
- data/test/dummy/config/routes.rb +1 -0
- data/test/dummy/db/migrate/20130528092721_create_articles.rb +1 -0
- data/test/dummy/db/migrate/20130729125648_create_home_page.rb +4 -0
- data/test/dummy/db/migrate/20131122144302_enable_haraway.rb +16 -0
- data/test/dummy/db/migrate/20140228141749_create_media_page.rb +8 -0
- data/test/dummy/db/schema.rb +2 -4
- data/test/integration/aricles_test.rb +0 -1
- metadata +59 -81
- data/app/assets/javascripts/jquery-ui/sortable.js +0 -0
- data/app/assets/javascripts/lalala/lib/jquery-ui.js +0 -16617
- data/app/assets/javascripts/lalala/modules/grid.module.js +0 -284
- data/app/assets/javascripts/lalala/modules/input_group.module.js +0 -36
- data/app/assets/stylesheets/lalala/modules/_grid.css.scss +0 -197
- data/app/assets/stylesheets/lalala/modules/_index-as-sortable.css.scss +0 -89
- data/app/models/lalala/abstract_asset.rb +0 -24
- data/app/models/lalala/file_asset.rb +0 -3
- data/app/models/lalala/image_asset.rb +0 -3
- data/config/initializers/carrierwave.rb +0 -34
- data/lib/formtastic/inputs/grid_input.rb +0 -159
- data/lib/formtastic/inputs/single_file_input.rb +0 -44
- data/lib/generators/lalala/install/templates/application.html.erb +0 -64
- data/lib/generators/lalala/install/templates/helpers/application_helper.rb +0 -16
- data/lib/generators/lalala/install/templates/helpers/html_helper.rb +0 -60
- data/lib/generators/lalala/install/templates/helpers/open_graph_helper.rb.erb +0 -92
- data/lib/generators/lalala/install/templates/helpers/pages_helper.rb +0 -15
- data/lib/generators/lalala/install/templates/locales/en.yml +0 -6
- data/lib/generators/lalala/install/templates/uploaders/file_uploader.rb +0 -2
- data/lib/generators/lalala/install/templates/uploaders/image_uploader.rb +0 -11
- data/lib/lalala/ext_action_dispatch/multi_file_upload.rb +0 -55
- data/lib/lalala/ext_active_record/assets.rb +0 -25
- data/lib/lalala/markdown/handlers/soundcloud.rb +0 -36
- data/lib/lalala/markdown/handlers/vimeo.rb +0 -40
- data/lib/lalala/uploaders/file.rb +0 -50
- data/lib/lalala/uploaders/image.rb +0 -13
- data/lib/lalala/uploaders.rb +0 -6
- data/test/dummy/app/assets/stylesheets/application.css +0 -13
- data/test/dummy/app/models/file_asset.rb +0 -2
- data/test/dummy/app/models/image_asset.rb +0 -2
- data/test/dummy/app/uploaders/file_uploader.rb +0 -2
- data/test/dummy/app/uploaders/image_uploader.rb +0 -11
- data/test/dummy/db/migrate/20140926152646_add_pre_and_postpend_test_columns_to_articles.rb +0 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: aff21ad204eeefac76dc2d8cc0228cf471e7a652
|
|
4
|
+
data.tar.gz: 7b71c86c78f8f818846c1a215377a6e33be9c033
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2fd3c377829f45890a6e263e0138ca114ee6eaf58d902cbb1b5b3a3934ec119640a8c47d333e186b9997d7f36cb4bcaf002faf01168dfd259eb0ea3954e157e8
|
|
7
|
+
data.tar.gz: f8a5bd437f23d2de42367364659ba04b540d7da857acd17c9c44944d9d2f97e64eb6b618e680e2f852bca6c4f3b83bf674fb06c3142444516796e2dcce6a0c3e
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
source 'https://rubygems.org'
|
|
2
2
|
|
|
3
|
-
ruby "2.
|
|
3
|
+
ruby "2.0.0"
|
|
4
4
|
|
|
5
5
|
gemspec name: 'lalala'
|
|
6
6
|
gemspec name: 'lalala-development', groups: [:development]
|
|
7
7
|
gemspec name: 'lalala-assets', groups: [:development, :assets]
|
|
8
8
|
gemspec name: 'lalala-test', groups: [:test]
|
|
9
|
-
|
|
10
|
-
gem "active_admin-sortable_tree"
|
data/Haraway.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Haraway
|
|
2
|
+
|
|
3
|
+
## How to use
|
|
4
|
+
|
|
5
|
+
1. Create initializer (config/initializers/haraway.rb)
|
|
6
|
+
2. Add "haraway_metadata" column to the necessary tables (type = "text")
|
|
7
|
+
3. In the model:
|
|
8
|
+
`has_many_assets :asset_association_name, :profile`
|
|
9
|
+
`attr_accessible :asset_association_name`
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## To do
|
|
13
|
+
|
|
14
|
+
- Include actual Haraway gem (not the local repo)
|
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
|
|
4
4
|
//= require_tree ../browser
|
|
5
5
|
//= require_tree ./modules
|
|
6
|
+
//= require_tree ./initializers
|
|
6
7
|
//= require_self
|
|
7
8
|
|
|
9
|
+
var haraway = require("lalala/initializers/haraway");
|
|
10
|
+
|
|
11
|
+
$(function() {
|
|
12
|
+
haraway.init();
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
// TODO - refactor
|
|
8
16
|
require('lalala/modules/init');
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
/*
|
|
2
|
+
|
|
3
|
+
OVERLAY JS
|
|
4
|
+
v0.1.0
|
|
5
|
+
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
(function($) {
|
|
9
|
+
|
|
10
|
+
"use strict";
|
|
11
|
+
|
|
12
|
+
var __bind = function(fn, me) {
|
|
13
|
+
return function() { return fn.apply(me, arguments); };
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
var default_template_function = function() {
|
|
17
|
+
return [
|
|
18
|
+
'<div class="overlay-outer-wrapper">',
|
|
19
|
+
'<div class="overlay-inner-wrapper">',
|
|
20
|
+
'<div class="overlay-content">',
|
|
21
|
+
'<div class="overlay-header">',
|
|
22
|
+
'<a href="#" class="close"></a>',
|
|
23
|
+
'</div>',
|
|
24
|
+
'</div>',
|
|
25
|
+
'</div>',
|
|
26
|
+
'</div>'
|
|
27
|
+
].join('');
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
var default_background_template_function = function() {
|
|
31
|
+
return [
|
|
32
|
+
''
|
|
33
|
+
].join('');
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
//
|
|
38
|
+
// Default settings
|
|
39
|
+
//
|
|
40
|
+
Overlay.prototype.settings = {
|
|
41
|
+
class_name: "mod-overlay",
|
|
42
|
+
background_class_name: "mod-overlay-background",
|
|
43
|
+
content_class_name: "overlay-content",
|
|
44
|
+
|
|
45
|
+
is_shown_class: "visible",
|
|
46
|
+
|
|
47
|
+
template_function: default_template_function,
|
|
48
|
+
background_template_function: default_background_template_function
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
//
|
|
54
|
+
// Constructor
|
|
55
|
+
// -> and main setup
|
|
56
|
+
//
|
|
57
|
+
function Overlay(el, settings) {
|
|
58
|
+
//
|
|
59
|
+
// instance variables:
|
|
60
|
+
// el, $el, bg, $bg,
|
|
61
|
+
// $content, state
|
|
62
|
+
|
|
63
|
+
this.bind_some_methods_to_self();
|
|
64
|
+
this.set_initial_state_object();
|
|
65
|
+
this.set_initial_settings_object(settings);
|
|
66
|
+
this.create_new_or_use_element(el);
|
|
67
|
+
this.bind_events();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
//
|
|
73
|
+
// Create new or use element
|
|
74
|
+
//
|
|
75
|
+
// -> If an element is given, set that element as
|
|
76
|
+
// the main element and find the associated background element.
|
|
77
|
+
//
|
|
78
|
+
// If not, make new elements and append them to the body element.
|
|
79
|
+
//
|
|
80
|
+
// And also cache some other elements.
|
|
81
|
+
//
|
|
82
|
+
Overlay.prototype.create_new_or_use_element = function(element) {
|
|
83
|
+
var predefined = !!element;
|
|
84
|
+
var background;
|
|
85
|
+
|
|
86
|
+
// main element
|
|
87
|
+
if (!predefined) {
|
|
88
|
+
element = document.createElement("div");
|
|
89
|
+
element.className = this.settings.class_name;
|
|
90
|
+
element.innerHTML = this.settings.template_function();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
this.el = element;
|
|
94
|
+
this.$el = $(this.el);
|
|
95
|
+
|
|
96
|
+
// background
|
|
97
|
+
if (!predefined) {
|
|
98
|
+
background = document.createElement("div");
|
|
99
|
+
background.className = this.settings.background_class_name;
|
|
100
|
+
background.innerHTML = this.settings.background_template_function();
|
|
101
|
+
} else {
|
|
102
|
+
background = this.$el.siblings("." + this.settings.background_class_name).get(0);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
this.bg = background;
|
|
106
|
+
this.$bg = $(this.bg);
|
|
107
|
+
|
|
108
|
+
// add to dom if needed
|
|
109
|
+
if (!predefined) {
|
|
110
|
+
document.body.appendChild(element);
|
|
111
|
+
document.body.appendChild(background);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// cache other elements
|
|
115
|
+
this.cache_other_elements();
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
Overlay.prototype.cache_other_elements = function() {
|
|
120
|
+
this.$content = this.$el.find("." + this.settings.content_class_name);
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
//
|
|
126
|
+
// Show + callback
|
|
127
|
+
//
|
|
128
|
+
// -> Shows the main element and background by
|
|
129
|
+
// setting 'display: block', then adds the
|
|
130
|
+
// is_shown class to those elements and then
|
|
131
|
+
// calls the callback on transitionend (if supported).
|
|
132
|
+
//
|
|
133
|
+
// The reason for the setTimeout usage is that, for example.
|
|
134
|
+
// If you set the following at the same time,
|
|
135
|
+
// 'display: block' and 'opacity: 1' along with
|
|
136
|
+
// a transition for opacity. Then the transition won't work,
|
|
137
|
+
// for reasons unknown.
|
|
138
|
+
//
|
|
139
|
+
Overlay.prototype.show = function(content_key) {
|
|
140
|
+
var that = this;
|
|
141
|
+
|
|
142
|
+
// content key
|
|
143
|
+
content_key = content_key || "default";
|
|
144
|
+
|
|
145
|
+
// show
|
|
146
|
+
setTimeout(function() {
|
|
147
|
+
that.$el.add(that.$bg).css("display", "block");
|
|
148
|
+
}, 0);
|
|
149
|
+
|
|
150
|
+
// main
|
|
151
|
+
setTimeout(function() {
|
|
152
|
+
that.$el.add(that.$bg)
|
|
153
|
+
.addClass(that.settings.is_shown_class)
|
|
154
|
+
.addClass(content_key);
|
|
155
|
+
}, 25);
|
|
156
|
+
|
|
157
|
+
// state
|
|
158
|
+
this.state.is_shown = true;
|
|
159
|
+
this.state.content_key = content_key;
|
|
160
|
+
|
|
161
|
+
// callback
|
|
162
|
+
if (this.state.transition_key) {
|
|
163
|
+
this.$el.on(this.state.transition_key, this.show_callback);
|
|
164
|
+
} else {
|
|
165
|
+
this.show_callback();
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
Overlay.prototype.show_callback = function() {
|
|
171
|
+
this.$el.off(this.state.transition_key, this.show_callback);
|
|
172
|
+
|
|
173
|
+
$(window).trigger("overlay.open." + this.state.content_key);
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
//
|
|
179
|
+
// Hide + callback
|
|
180
|
+
//
|
|
181
|
+
Overlay.prototype.hide = function() {
|
|
182
|
+
this.$el.add(this.$bg)
|
|
183
|
+
.removeClass(this.settings.is_shown_class)
|
|
184
|
+
.removeClass(this.state.content_key);
|
|
185
|
+
|
|
186
|
+
// state
|
|
187
|
+
this.state.content_key = false;
|
|
188
|
+
this.state.is_shown = false;
|
|
189
|
+
|
|
190
|
+
// callback
|
|
191
|
+
if (this.state.transition_key) {
|
|
192
|
+
this.$el.on(this.state.transition_key, this.hide_callback);
|
|
193
|
+
} else {
|
|
194
|
+
this.hide_callback();
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
Overlay.prototype.hide_callback = function() {
|
|
200
|
+
this.$el.off(this.state.transition_key, this.hide_callback);
|
|
201
|
+
|
|
202
|
+
this.$el.add(this.$bg).css("display", "none");
|
|
203
|
+
this.clear_content();
|
|
204
|
+
|
|
205
|
+
$(window).trigger("overlay.hide");
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
//
|
|
211
|
+
// Content
|
|
212
|
+
//
|
|
213
|
+
Overlay.prototype.append_content = function(x) {
|
|
214
|
+
this.$content.append(x);
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
Overlay.prototype.clear_content = function() {
|
|
219
|
+
this.el.innerHTML = this.settings.template_function();
|
|
220
|
+
this.cache_other_elements();
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
//
|
|
226
|
+
// Destroy self
|
|
227
|
+
//
|
|
228
|
+
Overlay.prototype.destroy = function() {
|
|
229
|
+
this.unbind_events();
|
|
230
|
+
this.$el.remove();
|
|
231
|
+
this.el = null;
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
//
|
|
237
|
+
// State
|
|
238
|
+
//
|
|
239
|
+
Overlay.prototype.set_initial_state_object = function() {
|
|
240
|
+
var fake_el, transitions, transition_key;
|
|
241
|
+
|
|
242
|
+
// state object
|
|
243
|
+
this.state = {
|
|
244
|
+
is_shown: false
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
// find correct transtionend key
|
|
248
|
+
fake_el = document.createElement("fake");
|
|
249
|
+
|
|
250
|
+
transitions = {
|
|
251
|
+
"transition" : "transitionend",
|
|
252
|
+
"WebkitTransition" : "webkitTransitionEnd",
|
|
253
|
+
"MozTransition" : "transitionend",
|
|
254
|
+
"msTransition" : "MSTransitionEnd",
|
|
255
|
+
"OTransition" : "otransitionend"
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
for (var t in transitions) {
|
|
259
|
+
if (fake_el.style[t] !== undefined) {
|
|
260
|
+
transition_key = transitions[t];
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
this.state.transition_key = transition_key;
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
Overlay.prototype.set_initial_settings_object = function(settings) {
|
|
270
|
+
this.settings = $.extend({}, this.settings, settings || {});
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
//
|
|
276
|
+
// Events
|
|
277
|
+
//
|
|
278
|
+
Overlay.prototype.bind_events = function() {
|
|
279
|
+
// every element with class .close closes the overlay
|
|
280
|
+
this.$el.on("click.overlay", ".close", this.close_click_handler);
|
|
281
|
+
|
|
282
|
+
// close overlay when ESC key is pressed
|
|
283
|
+
$(document).on("keydown.overlay", this.document_keydown_handler);
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
Overlay.prototype.unbind_events = function() {
|
|
288
|
+
this.$el.off("click.overlay", ".close", this.close_click_handler);
|
|
289
|
+
$(document).off("keydown.overlay", this.document_keydown_handler);
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
Overlay.prototype.close_click_handler = function(e) {
|
|
294
|
+
e.preventDefault();
|
|
295
|
+
|
|
296
|
+
this.hide();
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
Overlay.prototype.document_keydown_handler = function(e) {
|
|
301
|
+
if (e.which == 27 && this.state.is_shown) {
|
|
302
|
+
this.hide();
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
//
|
|
309
|
+
// Utilities
|
|
310
|
+
//
|
|
311
|
+
Overlay.prototype.bind_some_methods_to_self = function() {
|
|
312
|
+
var methods = [
|
|
313
|
+
"show_callback", "hide_callback",
|
|
314
|
+
"close_click_handler", "document_keydown_handler"
|
|
315
|
+
];
|
|
316
|
+
|
|
317
|
+
for (var i=0, j=methods.length; i<j; ++i) {
|
|
318
|
+
this.bind_to_self(methods[i]);
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
Overlay.prototype.bind_to_self = function(method_name) {
|
|
324
|
+
this[method_name] = __bind(this[method_name], this);
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
//
|
|
330
|
+
// Export
|
|
331
|
+
//
|
|
332
|
+
window.Overlay = Overlay;
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
})(jQuery || Zepto);
|
|
@@ -71,58 +71,51 @@ CPT.prototype.addTriggers = function() {
|
|
|
71
71
|
CPT.prototype.initStates = function() {
|
|
72
72
|
var _this = this;
|
|
73
73
|
|
|
74
|
-
// Close all
|
|
75
|
-
this.$tree_parents.each(function() {
|
|
76
|
-
var $tree_parent = $(this),
|
|
77
|
-
$target = $tree_parent.data('collapsible_target'),
|
|
78
|
-
$trigger = $tree_parent.find('.collapse');
|
|
79
|
-
|
|
80
|
-
_this.update($target, $trigger, 'close', false);
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
// Open saved states
|
|
84
74
|
$.each(this.states, function(idx, value) {
|
|
85
75
|
var $tree_parent = $('#' + value),
|
|
86
76
|
$target = $tree_parent.data('collapsible_target'),
|
|
87
77
|
$trigger = $tree_parent.find('.collapse');
|
|
88
78
|
|
|
89
|
-
_this.
|
|
79
|
+
_this.close($target, $trigger);
|
|
90
80
|
});
|
|
91
81
|
};
|
|
92
82
|
|
|
93
83
|
|
|
94
84
|
/**
|
|
95
|
-
*
|
|
85
|
+
* Close target
|
|
96
86
|
*
|
|
97
|
-
* @param {jQuery object} $target
|
|
98
|
-
* @param {jQuery object} $trigger
|
|
99
|
-
* @param {Boolean} save_state Default TRUE
|
|
87
|
+
* @param {jQuery object} $target The element to be closed
|
|
88
|
+
* @param {jQuery object} $trigger The trigger element
|
|
100
89
|
*/
|
|
101
|
-
CPT.prototype.
|
|
90
|
+
CPT.prototype.close = function($target, $trigger) {
|
|
102
91
|
if ( !$target ) {
|
|
103
|
-
console.warn('
|
|
92
|
+
console.warn('Can not find tree target');
|
|
104
93
|
return;
|
|
105
94
|
}
|
|
106
95
|
|
|
107
|
-
|
|
96
|
+
$target.hide();
|
|
97
|
+
$trigger.addClass('closed');
|
|
108
98
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
$trigger.addClass('closed');
|
|
99
|
+
this.saveState();
|
|
100
|
+
};
|
|
112
101
|
|
|
113
|
-
} else if ( state == 'open') {
|
|
114
|
-
$target.show();
|
|
115
|
-
$trigger.removeClass('closed');
|
|
116
102
|
|
|
117
|
-
|
|
118
|
-
|
|
103
|
+
/**
|
|
104
|
+
* Open target
|
|
105
|
+
*
|
|
106
|
+
* @param {jQuery object} $target The element to be closed
|
|
107
|
+
* @param {jQuery object} $trigger The trigger element
|
|
108
|
+
*/
|
|
109
|
+
CPT.prototype.open = function($target, $trigger) {
|
|
110
|
+
if ( !$target ) {
|
|
111
|
+
console.warn('Can not find tree target');
|
|
119
112
|
return;
|
|
120
|
-
|
|
121
113
|
}
|
|
122
114
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
115
|
+
$target.show();
|
|
116
|
+
$trigger.removeClass('closed');
|
|
117
|
+
|
|
118
|
+
this.saveState();
|
|
126
119
|
};
|
|
127
120
|
|
|
128
121
|
|
|
@@ -136,10 +129,10 @@ CPT.prototype.toggleState = function(event) {
|
|
|
136
129
|
$target = $trigger.data('tree_parent').data('collapsible_target');
|
|
137
130
|
|
|
138
131
|
if ( $target.is(':visible') ) {
|
|
139
|
-
this.
|
|
132
|
+
this.close($target, $trigger);
|
|
140
133
|
|
|
141
134
|
} else {
|
|
142
|
-
this.
|
|
135
|
+
this.open($target, $trigger);
|
|
143
136
|
|
|
144
137
|
}
|
|
145
138
|
|
|
@@ -158,7 +151,7 @@ CPT.prototype.saveState = function() {
|
|
|
158
151
|
var $tree_parent = $(this),
|
|
159
152
|
$trigger = $tree_parent.find('.collapse');
|
|
160
153
|
|
|
161
|
-
if (
|
|
154
|
+
if ( $trigger.hasClass('closed') ) {
|
|
162
155
|
new_states.push($tree_parent.attr('id'));
|
|
163
156
|
}
|
|
164
157
|
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
var
|
|
1
|
+
var Overlay = require("./overlay"),
|
|
2
|
+
MediaSelector = require("./media_selector"),
|
|
3
|
+
|
|
4
|
+
markdown_settings;
|
|
5
|
+
|
|
2
6
|
|
|
3
7
|
exports.init = function(){
|
|
4
8
|
$("textarea.markdown").each(setup);
|
|
5
9
|
};
|
|
6
10
|
|
|
11
|
+
|
|
12
|
+
|
|
7
13
|
function setup() {
|
|
8
14
|
var $this = $(this);
|
|
9
15
|
var settings = $.extend({}, markdown_settings);
|
|
@@ -15,35 +21,30 @@ function setup() {
|
|
|
15
21
|
$markitup_wrapper.find('.fullscreen').click(open_fullscreen);
|
|
16
22
|
$markitup_wrapper.find('.close-fullscreen').click(close_fullscreen);
|
|
17
23
|
$markitup_wrapper.find('.markdown-cheatsheet').click(toggle_cheatsheet);
|
|
18
|
-
$
|
|
24
|
+
$markitup_wrapper.find('.add-image').click(add_image_click_handler);
|
|
19
25
|
}
|
|
20
26
|
|
|
27
|
+
|
|
28
|
+
|
|
21
29
|
//
|
|
22
|
-
//
|
|
30
|
+
// Fullscreen
|
|
23
31
|
//
|
|
24
32
|
function open_fullscreen(event) {
|
|
25
33
|
var $markitup_wrapper = $(this).closest('.markItUp');
|
|
26
34
|
$markitup_wrapper.find('.markItUpHeader .preview').trigger('mouseup');
|
|
27
35
|
$markitup_wrapper.addClass('fullscreen');
|
|
28
|
-
|
|
29
|
-
$('body').on('keyup.MARKDOWN_FULLSCREEN', function (event) {
|
|
30
|
-
if (event.which === 27) {
|
|
31
|
-
close_fullscreen(event);
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
36
|
}
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
// Close fullscreen
|
|
38
|
-
//
|
|
38
|
+
|
|
39
39
|
function close_fullscreen(event) {
|
|
40
|
-
var $markitup_wrapper = $(
|
|
40
|
+
var $markitup_wrapper = $(this).closest('.markItUp');
|
|
41
41
|
$markitup_wrapper.removeClass('fullscreen');
|
|
42
|
-
$('body').off('keyup.MARKDOWN_FULLSCREEN');
|
|
43
42
|
}
|
|
44
43
|
|
|
44
|
+
|
|
45
|
+
|
|
45
46
|
//
|
|
46
|
-
//
|
|
47
|
+
// Cheatsheet
|
|
47
48
|
//
|
|
48
49
|
function toggle_cheatsheet(event) {
|
|
49
50
|
var $markdown_cheatsheet = $('#markdown-cheatsheet');
|
|
@@ -63,9 +64,7 @@ function toggle_cheatsheet(event) {
|
|
|
63
64
|
}
|
|
64
65
|
}
|
|
65
66
|
|
|
66
|
-
|
|
67
|
-
// Load Markdown syntax cheatsheet
|
|
68
|
-
//
|
|
67
|
+
|
|
69
68
|
function load_cheatsheat(options) {
|
|
70
69
|
$.get('/lalala/markdown/cheatsheet', function(data) {
|
|
71
70
|
var $div = $('<div id="markdown-cheatsheet" />');
|
|
@@ -82,8 +81,26 @@ function load_cheatsheat(options) {
|
|
|
82
81
|
});
|
|
83
82
|
}
|
|
84
83
|
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
//
|
|
87
|
+
// Images
|
|
88
|
+
//
|
|
89
|
+
function add_image_click_handler(e) {
|
|
90
|
+
var ms, overlay;
|
|
91
|
+
|
|
92
|
+
ms = new MediaSelector();
|
|
93
|
+
ms.$markitup_container = $(e.currentTarget).closest(".markItUpContainer");
|
|
94
|
+
|
|
95
|
+
overlay = Overlay.get_instance();
|
|
96
|
+
overlay.append_content(ms.$el);
|
|
97
|
+
overlay.show("media-selector");
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
85
102
|
//
|
|
86
|
-
//
|
|
103
|
+
// Mark It Up settings
|
|
87
104
|
//
|
|
88
105
|
var base_path = window.location.pathname.replace(/[\/][^\/]+$/, "");
|
|
89
106
|
|
|
@@ -101,13 +118,10 @@ markdown_settings = {
|
|
|
101
118
|
{ separator: '---' },
|
|
102
119
|
{ name: 'Unordered list', openWith: '- ', className: 'unordered-list', multiline: true },
|
|
103
120
|
{ name: 'Ordered list', openWith: '1. ', closeWith: '\n2. \n3. ', className: 'ordered-list', multiline: true },
|
|
104
|
-
/*
|
|
105
|
-
| column header |\n| ------------- | ------------- |\n| | |
|
|
106
|
-
*/
|
|
107
121
|
{ name: 'Add table', openWith: '| ', closeWith: ' | column header |\n| ------------- | ------------- |\n| | |', placeHolder: 'Column header', className: 'add-table', multiline: true },
|
|
108
122
|
{ separator: '---' },
|
|
109
123
|
{ name: 'Link', key: 'L', openWith: '[[![Link text]!]', closeWith: ']([![Url:!:http://]!])', className: 'add-link' },
|
|
110
|
-
|
|
124
|
+
{ name: 'Image', className: 'add-image' },
|
|
111
125
|
{ separator: '---' },
|
|
112
126
|
{ name: 'Preview', call: 'preview', className: "preview" },
|
|
113
127
|
{ name: 'Fullscreen', className: 'fullscreen' },
|