pageflow-linkmap-page 0.1.0 → 0.2.0
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 +14 -0
- data/CHANGELOG.md +39 -1
- data/Gemfile +3 -7
- data/README.md +6 -2
- data/app/assets/javascript/pageflow/linkmap_page/editor/models/area.js +7 -2
- data/app/assets/javascript/pageflow/linkmap_page/editor/templates/scaled_on_phone_hint.jst.ejs +1 -0
- data/app/assets/javascript/pageflow/linkmap_page/editor/views/configuration_editor_view.js +4 -0
- data/app/assets/javascript/pageflow/linkmap_page/editor/views/edit_area_view.js +4 -1
- data/app/assets/javascript/pageflow/linkmap_page/editor/views/scaled_on_phone_hint_view.js +39 -0
- data/app/assets/javascript/pageflow/linkmap_page/page_type.js +20 -0
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_lookaround.js +8 -6
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_panorama.js +39 -70
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_panorama/get_panorama_size.js +60 -0
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_scroll_indicators.js +7 -3
- data/app/assets/stylesheets/pageflow/linkmap_page/themes/default/scroll_indicators.scss +45 -15
- data/app/views/pageflow/linkmap_page/{page.html → page.html.erb} +6 -0
- data/{exec → bin}/rspec +0 -3
- data/{exec → bin}/spring +0 -0
- data/config/locales/new/scaled_on_phone_hint.de.yml +11 -0
- data/config/locales/new/scaled_on_phone_hint.en.yml +11 -0
- data/config/locales/new/scroll_indicators_v.de.yml +6 -0
- data/config/locales/new/scroll_indicators_v.en.yml +6 -0
- data/config/locales/new/typo.en.yml +6 -0
- data/lib/generators/pageflow_linkmap_page/install/install_generator.rb +31 -0
- data/lib/pageflow/linkmap_page/engine.rb +2 -0
- data/lib/pageflow/linkmap_page/version.rb +1 -1
- data/pageflow-linkmap-page.gemspec +1 -2
- data/spec/helpers/pageflow/linkmap_page/areas_helper_spec.rb +23 -15
- data/spec/spec_helper.rb +7 -2
- data/spec/support/config/devise.rb +10 -0
- data/spec/support/config/factory_girl.rb +12 -0
- metadata +22 -10
- data/app/controllers/pageflow/external_links/sites_controller.rb +0 -40
- data/app/models/pageflow/linkmap_page/site.rb +0 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4be69c22ece16a9e318bb3566dc670fd6a1ca230
|
|
4
|
+
data.tar.gz: a7a90492548b93bbdc273717175616593c2dace0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2452e5b8dd93e30d517de81f8172decd7a716e787d45401e17cc037a62e1a5c5fb5351cb2c9c5c37fda452c3b98995fbfc4374e5e85f5cdc651b8bdcaab8dbfa
|
|
7
|
+
data.tar.gz: 3c2cbf1be66d085a038b1c2c666c6b93a5d27230efa64dcf2e3ef2dc183947fba95a673e424f8c6a9baea2b38f13488c3f4997dd4bcd85ebe4d861c4fe20a96a
|
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,46 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
### Version 0.2.0
|
|
4
|
+
|
|
5
|
+
2017-04-21
|
|
6
|
+
|
|
7
|
+
[Compare changes](http://github.com/codevise/pageflow-linkmap-page/compare/v0.1.0...v0.2.0)
|
|
8
|
+
|
|
9
|
+
- Add vertical scroll indicators
|
|
10
|
+
([#7](https://github.com/codevise/pageflow-linkmap-page/pull/7))
|
|
11
|
+
- Prevent scrolling via mousemove on mobile platform
|
|
12
|
+
([#21](https://github.com/codevise/pageflow-linkmap-page/pull/21))
|
|
13
|
+
- Improve panorama scaling
|
|
14
|
+
([#20](https://github.com/codevise/pageflow-linkmap-page/pull/20))
|
|
15
|
+
- Ensure viewport is covered when scroll area restricted
|
|
16
|
+
([#19](https://github.com/codevise/pageflow-linkmap-page/pull/19))
|
|
17
|
+
- Disable links in overlay boxes
|
|
18
|
+
([#18](https://github.com/codevise/pageflow-linkmap-page/pull/18))
|
|
19
|
+
- Prevent overlays to be displayed behind editor bar
|
|
20
|
+
([#8](https://github.com/codevise/pageflow-linkmap-page/pull/8))
|
|
21
|
+
- Use info box title as title for text only areas
|
|
22
|
+
([#16](https://github.com/codevise/pageflow-linkmap-page/pull/16))
|
|
23
|
+
- Fix translation typo
|
|
24
|
+
([#13](https://github.com/codevise/pageflow-linkmap-page/pull/13))
|
|
25
|
+
|
|
26
|
+
Internals:
|
|
27
|
+
|
|
28
|
+
- Fix test suite and run on travis
|
|
29
|
+
([#15](https://github.com/codevise/pageflow-linkmap-page/pull/15))
|
|
30
|
+
- Add .erb extension
|
|
31
|
+
([#11](https://github.com/codevise/pageflow-linkmap-page/pull/11))
|
|
32
|
+
- Remove unused files
|
|
33
|
+
([#17](https://github.com/codevise/pageflow-linkmap-page/pull/17))
|
|
34
|
+
|
|
35
|
+
Documentation:
|
|
36
|
+
|
|
37
|
+
- Add instructions to migrate external links migrations
|
|
38
|
+
([#3](https://github.com/codevise/pageflow-linkmap-page/pull/3))
|
|
39
|
+
- Explicitly note to enable the feature
|
|
40
|
+
([#12](https://github.com/codevise/pageflow-linkmap-page/pull/12))
|
|
41
|
+
|
|
3
42
|
### Version 0.1.0
|
|
4
43
|
|
|
5
44
|
2016-06-09
|
|
6
45
|
|
|
7
46
|
- Initial release
|
|
8
|
-
|
data/Gemfile
CHANGED
|
@@ -3,14 +3,10 @@ source 'https://rubygems.org'
|
|
|
3
3
|
# Specify your gem's dependencies in chart.gemspec
|
|
4
4
|
gemspec
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
gem 'activeadmin', :git => 'https://github.com/codevise/active_admin.git', :branch => 'rails4'
|
|
8
|
-
gem 'ransack'
|
|
9
|
-
gem 'inherited_resources', '1.4.1'
|
|
10
|
-
gem 'formtastic', '2.3.0.rc2'
|
|
6
|
+
gem 'state_machine', git: 'https://github.com/codevise/state_machine.git'
|
|
11
7
|
|
|
12
|
-
gem 'pageflow',
|
|
13
|
-
gem 'pageflow-support',
|
|
8
|
+
gem 'pageflow', '0.11.3'
|
|
9
|
+
gem 'pageflow-support', '0.11.3'
|
|
14
10
|
|
|
15
11
|
gem 'teaspoon', git: 'https://github.com/modeset/teaspoon'
|
|
16
12
|
|
data/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Pageflow Linkmap Page
|
|
2
2
|
|
|
3
|
-
[](http://badge.fury.io/rb/
|
|
3
|
+
[](http://badge.fury.io/rb/pageflow-linkmap-page)
|
|
4
|
+
[](https://travis-ci.org/codevise/pageflow-linkmap-page)
|
|
4
5
|
|
|
5
6
|
Page type to display customizable link areas to internal/external
|
|
6
7
|
pages and inline audio players.
|
|
@@ -10,6 +11,7 @@ pages and inline audio players.
|
|
|
10
11
|
Add this line to your application's `Gemfile`:
|
|
11
12
|
|
|
12
13
|
gem 'pageflow-linkmap-page'
|
|
14
|
+
gem 'pageflow-external-links' # needed to copy the migration contained within
|
|
13
15
|
|
|
14
16
|
Register the page type inside the configure block in `config/initializers/pageflow.rb`
|
|
15
17
|
|
|
@@ -44,8 +46,10 @@ Install dependencies:
|
|
|
44
46
|
|
|
45
47
|
bundle install
|
|
46
48
|
|
|
49
|
+
Then follow the installation instructions for the [pageflow-external-links](https://github.com/codevise/pageflow-external-links) gem.
|
|
50
|
+
|
|
47
51
|
Restart the application server and enable the corresponding page type
|
|
48
|
-
feature
|
|
52
|
+
feature for entries in the tab *features*.
|
|
49
53
|
|
|
50
54
|
## Troubleshooting
|
|
51
55
|
|
|
@@ -26,8 +26,13 @@ pageflow.linkmapPage.Area = Backbone.Model.extend({
|
|
|
26
26
|
},
|
|
27
27
|
|
|
28
28
|
title: function() {
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
if (this.get('target_type') === 'text_only') {
|
|
30
|
+
return this.get('link_title');
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
var target = this.target();
|
|
34
|
+
return target ? target.title() : null;
|
|
35
|
+
}
|
|
31
36
|
},
|
|
32
37
|
|
|
33
38
|
thumbnailFile: function() {
|
data/app/assets/javascript/pageflow/linkmap_page/editor/templates/scaled_on_phone_hint.jst.ejs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<p></p>
|
|
@@ -71,6 +71,10 @@ pageflow.linkmapPage.ConfigurationEditorView = pageflow.ConfigurationEditorView.
|
|
|
71
71
|
});
|
|
72
72
|
|
|
73
73
|
this.tab('areas', function() {
|
|
74
|
+
this.view(pageflow.linkmapPage.ScaledOnPhoneHintView, {
|
|
75
|
+
model: this.model.page
|
|
76
|
+
});
|
|
77
|
+
|
|
74
78
|
this.view(pageflow.linkmapPage.AreasListView, {
|
|
75
79
|
model: this.model
|
|
76
80
|
});
|
|
@@ -76,7 +76,10 @@ pageflow.linkmapPage.EditAreaView = Backbone.Marionette.Layout.extend({
|
|
|
76
76
|
});
|
|
77
77
|
|
|
78
78
|
this.input('link_title', pageflow.TextInputView);
|
|
79
|
-
this.input('link_description', pageflow.TextAreaInputView, {
|
|
79
|
+
this.input('link_description', pageflow.TextAreaInputView, {
|
|
80
|
+
size: 'short',
|
|
81
|
+
disableLinks: true
|
|
82
|
+
});
|
|
80
83
|
});
|
|
81
84
|
|
|
82
85
|
configurationEditor.tab('appearance', function() {
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
pageflow.linkmapPage.ScaledOnPhoneHintView = Backbone.Marionette.ItemView.extend({
|
|
2
|
+
template: 'pageflow/linkmap_page/editor/templates/scaled_on_phone_hint',
|
|
3
|
+
className: 'scaled_on_phone_hint',
|
|
4
|
+
|
|
5
|
+
modelEvents: {
|
|
6
|
+
'change:scaled_on_portrait_phone change:scaled_on_landscape_phone': 'update'
|
|
7
|
+
},
|
|
8
|
+
|
|
9
|
+
ui: {
|
|
10
|
+
hint: 'p'
|
|
11
|
+
},
|
|
12
|
+
|
|
13
|
+
onRender: function() {
|
|
14
|
+
this.update();
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
update: function() {
|
|
18
|
+
this.$el.toggle(this.model.get('scaled_on_portrait_phone') ||
|
|
19
|
+
this.model.get('scaled_on_landscape_phone'));
|
|
20
|
+
|
|
21
|
+
if (this.model.get('scaled_on_portrait_phone') &&
|
|
22
|
+
this.model.get('scaled_on_landscape_phone')) {
|
|
23
|
+
this.ui.hint.text(this.hintText('both'));
|
|
24
|
+
}
|
|
25
|
+
else if (this.model.get('scaled_on_portrait_phone')) {
|
|
26
|
+
this.ui.hint.text(this.hintText('portrait'));
|
|
27
|
+
}
|
|
28
|
+
else if (this.model.get('scaled_on_landscape_phone')) {
|
|
29
|
+
this.ui.hint.text(this.hintText('landscape'));
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
hintText: function(orientation) {
|
|
34
|
+
var prefix = 'pageflow.linkmap_page.editor.views.scaled_on_phone_hint';
|
|
35
|
+
return I18n.t(prefix + '.text', {
|
|
36
|
+
orientation: I18n.t(prefix + '.orientations.' + orientation)
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
});
|
|
@@ -23,6 +23,7 @@ pageflow.pageType.register('linkmap_page', _.extend({
|
|
|
23
23
|
scroller: this.scroller,
|
|
24
24
|
activeAreasSelector: '.linkmap_areas > *',
|
|
25
25
|
limitScrolling: configuration.limit_scrolling,
|
|
26
|
+
minScaling: pageflow.browser.has('mobile platform'),
|
|
26
27
|
addEnvironment: configuration.add_environment,
|
|
27
28
|
marginScrollingDisabled: configuration.margin_scrolling_disabled,
|
|
28
29
|
startScrollPosition: this.getPanoramaStartScrollPosition(configuration)
|
|
@@ -219,6 +220,9 @@ pageflow.pageType.register('linkmap_page', _.extend({
|
|
|
219
220
|
this.getPanoramaStartScrollPosition(configuration.attributes),
|
|
220
221
|
minScaling);
|
|
221
222
|
|
|
223
|
+
this.updateScaledOnPhoneFlags(configuration.page,
|
|
224
|
+
this.content.linkmapPanorama('instance'));
|
|
225
|
+
|
|
222
226
|
this.content.linkmapLookaround('update',
|
|
223
227
|
configuration.get('margin_scrolling_disabled'));
|
|
224
228
|
this.setupHoverImages(pageElement, configuration.attributes);
|
|
@@ -229,6 +233,22 @@ pageflow.pageType.register('linkmap_page', _.extend({
|
|
|
229
233
|
});
|
|
230
234
|
},
|
|
231
235
|
|
|
236
|
+
updateScaledOnPhoneFlags: function(page, panorama) {
|
|
237
|
+
page.set('scaled_on_portrait_phone',
|
|
238
|
+
panorama.getPanoramaSize({
|
|
239
|
+
pageWidth: 360,
|
|
240
|
+
pageHeight: 640,
|
|
241
|
+
minScaling: true
|
|
242
|
+
}).scaled);
|
|
243
|
+
|
|
244
|
+
page.set('scaled_on_landscape_phone',
|
|
245
|
+
panorama.getPanoramaSize({
|
|
246
|
+
pageWidth: 640,
|
|
247
|
+
pageHeight: 360,
|
|
248
|
+
minScaling: true
|
|
249
|
+
}).scaled);
|
|
250
|
+
},
|
|
251
|
+
|
|
232
252
|
updateVideoPlayState: function(configuration) {
|
|
233
253
|
if (configuration.hasChanged('background_type')) {
|
|
234
254
|
if (this.isVideoEnabled(configuration.attributes)) {
|
|
@@ -61,13 +61,15 @@
|
|
|
61
61
|
that.initialGamma = null;
|
|
62
62
|
});
|
|
63
63
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
if (!pageflow.browser.has('mobile platform')) {
|
|
65
|
+
this.element.on('mousemove', function(e) {
|
|
66
|
+
var containerWidth = that.element.width();
|
|
67
|
+
var containerHeight = that.element.height();
|
|
67
68
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
that.scrollStrategyX.updateMouse(e.pageX / containerWidth);
|
|
70
|
+
that.scrollStrategyY.updateMouse(e.pageY / containerHeight);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
71
73
|
},
|
|
72
74
|
|
|
73
75
|
enable: function() {
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
$.widget('pageflow.linkmapPanorama', {
|
|
3
3
|
scrollHoverMargin : 0.2,
|
|
4
4
|
environmentMargin : 0.2,
|
|
5
|
-
minScaling: true,
|
|
6
|
-
minScalingSize: 80,
|
|
7
5
|
lastMouseMoveEvent: null,
|
|
8
6
|
|
|
9
7
|
_create: function() {
|
|
@@ -13,6 +11,7 @@
|
|
|
13
11
|
this.addEnvironment = this.options.addEnvironment;
|
|
14
12
|
this.panorama = this.options.panorama();
|
|
15
13
|
this.limitScrolling = this.options.limitScrolling;
|
|
14
|
+
this.minScaling = this.options.minScaling;
|
|
16
15
|
this.scroller = this.options.scroller;
|
|
17
16
|
|
|
18
17
|
this.activeAreas = pageElement.find(this.options.activeAreasSelector);
|
|
@@ -93,15 +92,13 @@
|
|
|
93
92
|
|
|
94
93
|
that.overlayBox.addClass('active');
|
|
95
94
|
|
|
96
|
-
|
|
97
|
-
|
|
98
95
|
if(that.panorama.width() - (area.position().left + area.outerWidth()) < that.overlayBox.outerWidth()) {
|
|
99
96
|
var overlayAlignmentDirection = "left";
|
|
100
97
|
that.overlayBox.addClass('left_aligned');
|
|
101
98
|
}
|
|
102
99
|
else {
|
|
103
100
|
var spaceLeftOfArea = area.offset().left;
|
|
104
|
-
var spaceRightOfArea = $(
|
|
101
|
+
var spaceRightOfArea = $(pageElement).width() - area.offset().left - area.outerWidth();
|
|
105
102
|
|
|
106
103
|
if(spaceLeftOfArea < spaceRightOfArea || spaceLeftOfArea < that.overlayBox.outerWidth()) {
|
|
107
104
|
var overlayAlignmentDirection = "right";
|
|
@@ -131,8 +128,8 @@
|
|
|
131
128
|
}
|
|
132
129
|
|
|
133
130
|
var spaceToBottom = that.panorama.height() - area.position().top;
|
|
134
|
-
var spaceToViewportBottom = $(
|
|
135
|
-
var spaceToViewportTop = $(
|
|
131
|
+
var spaceToViewportBottom = $(pageElement).height() - area.offset().top - area.height() / 2;
|
|
132
|
+
var spaceToViewportTop = $(pageElement).height() - 50;
|
|
136
133
|
var minMargin = 40;
|
|
137
134
|
|
|
138
135
|
if(that.overlayBox.outerHeight() > spaceToBottom) {
|
|
@@ -241,33 +238,6 @@
|
|
|
241
238
|
}
|
|
242
239
|
|
|
243
240
|
return scrollArea;
|
|
244
|
-
|
|
245
|
-
},
|
|
246
|
-
|
|
247
|
-
getMinScale: function(activeAreas) {
|
|
248
|
-
var smallestScale;
|
|
249
|
-
var that = this;
|
|
250
|
-
var minimumSize = this.minScalingSize;
|
|
251
|
-
var smallestSize = Math.min(this.panorama.attr('data-width'), this.panorama.attr('data-height'));
|
|
252
|
-
|
|
253
|
-
if(this.minScaling) {
|
|
254
|
-
|
|
255
|
-
for (var i = 0; i < activeAreas.length; i++) {
|
|
256
|
-
var el = $(activeAreas[i]);
|
|
257
|
-
|
|
258
|
-
if(el.attr('data-height') / 100 * that.panorama.attr('data-height') < smallestSize) {
|
|
259
|
-
smallestSize = el.attr('data-height') / 100 * that.panorama.attr('data-height');
|
|
260
|
-
}
|
|
261
|
-
if(el.attr('data-width') / 100 * that.panorama.attr('data-width') < smallestSize) {
|
|
262
|
-
smallestSize = el.attr('data-width') / 100 * that.panorama.attr('data-width');
|
|
263
|
-
}
|
|
264
|
-
smallestScale = minimumSize / smallestSize;
|
|
265
|
-
}
|
|
266
|
-
} else {
|
|
267
|
-
smallestScale = 0;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
return smallestScale;
|
|
271
241
|
},
|
|
272
242
|
|
|
273
243
|
update: function(addEnvironment, limitScrolling, startScrollPosition, minScaling) {
|
|
@@ -285,10 +255,19 @@
|
|
|
285
255
|
|
|
286
256
|
this.panorama = this.options.panorama();
|
|
287
257
|
|
|
288
|
-
this.panoramaSize = this.getPanoramaSize(
|
|
258
|
+
this.panoramaSize = this.getPanoramaSize({
|
|
259
|
+
pageWidth: pageElement.width(),
|
|
260
|
+
pageHeight: pageElement.height(),
|
|
261
|
+
|
|
262
|
+
minScaling: this.minScaling
|
|
263
|
+
});
|
|
264
|
+
|
|
289
265
|
this.panorama.width(this.panoramaSize.width);
|
|
290
266
|
this.panorama.height(this.panoramaSize.height);
|
|
291
267
|
|
|
268
|
+
pageElement.toggleClass('linkmap_panorama_h', this.panoramaSize.orientation === 'h');
|
|
269
|
+
pageElement.toggleClass('linkmap_panorama_v', this.panoramaSize.orientation === 'v');
|
|
270
|
+
|
|
292
271
|
this.activeAreas = pageElement.find(this.options.activeAreasSelector);
|
|
293
272
|
this.scrollArea = this.getScrollArea(this.activeAreas);
|
|
294
273
|
|
|
@@ -297,54 +276,44 @@
|
|
|
297
276
|
this.innerScrollerElement.width(this.scrollArea.right - this.scrollArea.left);
|
|
298
277
|
this.innerScrollerElement.height(this.scrollArea.bottom - this.scrollArea.top);
|
|
299
278
|
|
|
279
|
+
var centerX = Math.max(0, (pageElement.width() - (this.scrollArea.right - this.scrollArea.left)) / 2);
|
|
280
|
+
var centerY = Math.max(0, (pageElement.height() - (this.scrollArea.bottom - this.scrollArea.top)) / 2);
|
|
281
|
+
|
|
282
|
+
var translateX = this.scrollArea.left - centerX;
|
|
283
|
+
var translateY = this.scrollArea.top - centerY;
|
|
284
|
+
|
|
300
285
|
var maxTranslateX = this.panoramaSize.width - pageElement.width();
|
|
301
286
|
var maxTranslateY = this.panoramaSize.height - pageElement.height();
|
|
302
287
|
|
|
303
288
|
this.panoramaWrapper.css({
|
|
304
|
-
left: -Math.min(maxTranslateX,
|
|
305
|
-
top: -Math.min(maxTranslateY,
|
|
289
|
+
left: -Math.min(maxTranslateX, Math.max(0, translateX)) +'px',
|
|
290
|
+
top: -Math.min(maxTranslateY, Math.max(0, translateY)) + 'px'
|
|
306
291
|
});
|
|
307
292
|
|
|
308
293
|
this.innerScrollerElement.removeClass('measuring');
|
|
309
294
|
this.scroller.refresh();
|
|
310
|
-
|
|
311
|
-
var leftToCenterInnerScroller = (pageElement.width() - (this.scrollArea.right - this.scrollArea.left)) / 2;
|
|
312
|
-
var topToCenterInnerScroller = (pageElement.height() - (this.scrollArea.bottom - this.scrollArea.top)) / 2;
|
|
313
|
-
|
|
314
|
-
this.innerScrollerElement.css('left', (this.scroller.maxX() == 0 && this.panoramaSize.width > this.scrollArea.right - this.scrollArea.left ? Math.min(leftToCenterInnerScroller, this.scrollArea.left) : 0) + "px");
|
|
315
|
-
this.innerScrollerElement.css('top', (this.scroller.maxY() == 0 && this.panoramaSize.height > pageElement.height() ? Math.min(topToCenterInnerScroller, this.scrollArea.top) : 0) + "px");
|
|
316
295
|
});
|
|
317
296
|
},
|
|
318
297
|
|
|
319
|
-
getPanoramaSize: function(
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
var smallestScale = this.getMinScale(this.activeAreas);
|
|
324
|
-
var imageRatio;
|
|
325
|
-
|
|
326
|
-
if (this.panorama.attr('data-height') > 0) {
|
|
327
|
-
imageRatio = this.panorama.attr('data-width') / this.panorama.attr('data-height');
|
|
328
|
-
}
|
|
329
|
-
else {
|
|
330
|
-
imageRatio = 1;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
if(imageRatio > windowRatio) {
|
|
334
|
-
result.height = pageElement.height() * environmentMargin;
|
|
335
|
-
result.width = result.height * imageRatio;
|
|
336
|
-
}
|
|
337
|
-
else {
|
|
338
|
-
result.width = pageElement.width() * environmentMargin;
|
|
339
|
-
result.height = result.width / imageRatio;
|
|
340
|
-
}
|
|
298
|
+
getPanoramaSize: function(options) {
|
|
299
|
+
return pageflow.linkmapPage.getPanoramaSize({
|
|
300
|
+
pageWidth: options.pageWidth,
|
|
301
|
+
pageHeight: options.pageHeight,
|
|
341
302
|
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
result.height = this.panorama.attr('data-height') * smallestScale;
|
|
345
|
-
}
|
|
303
|
+
panoramaWidth: this.panorama.attr('data-width'),
|
|
304
|
+
panoramaHeight: this.panorama.attr('data-height'),
|
|
346
305
|
|
|
347
|
-
|
|
306
|
+
areaDimensions: this.activeAreas.map(function() {
|
|
307
|
+
var el = $(this);
|
|
308
|
+
return {
|
|
309
|
+
width: el.attr('data-width'),
|
|
310
|
+
height: el.attr('data-height')
|
|
311
|
+
};
|
|
312
|
+
}).get(),
|
|
313
|
+
|
|
314
|
+
minScaling: options.minScaling,
|
|
315
|
+
addEnvironment: this.addEnvironment
|
|
316
|
+
});
|
|
348
317
|
},
|
|
349
318
|
|
|
350
319
|
resetScrollPosition: function() {
|
data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_panorama/get_panorama_size.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
pageflow.linkmapPage.getPanoramaSize = (function() {
|
|
2
|
+
var MIN_SCALING_SIZE = 80;
|
|
3
|
+
var ENVIRONMENT_MARGIN = 1.2;
|
|
4
|
+
|
|
5
|
+
return function getPanoramaSize(options) {
|
|
6
|
+
var result = {
|
|
7
|
+
scaled: false
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
var environmentMargin = options.addEnvironment ? ENVIRONMENT_MARGIN : 1;
|
|
11
|
+
|
|
12
|
+
var windowRatio = options.pageWidth / options.pageHeight;
|
|
13
|
+
var imageRatio;
|
|
14
|
+
|
|
15
|
+
if (options.panoramaHeight > 0) {
|
|
16
|
+
imageRatio = options.panoramaWidth / options.panoramaHeight;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
imageRatio = 1;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (imageRatio > windowRatio) {
|
|
23
|
+
result.height = options.pageHeight * environmentMargin;
|
|
24
|
+
result.width = result.height * imageRatio;
|
|
25
|
+
result.orientation = 'h';
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
result.width = options.pageWidth * environmentMargin;
|
|
29
|
+
result.height = result.width / imageRatio;
|
|
30
|
+
result.orientation = 'v';
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (options.minScaling) {
|
|
34
|
+
var minScale = getMinScale(options);
|
|
35
|
+
|
|
36
|
+
if (result.width < options.panoramaWidth * minScale) {
|
|
37
|
+
result.width = options.panoramaWidth * minScale;
|
|
38
|
+
result.height = options.panoramaHeight * minScale;
|
|
39
|
+
result.scaled = true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return result;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
function getMinScale(options) {
|
|
47
|
+
var that = this;
|
|
48
|
+
|
|
49
|
+
var smallestSize = Math.min(options.panoramaWidth, options.panoramaHeight);
|
|
50
|
+
|
|
51
|
+
_(options.areaDimensions).each(function(dimensions) {
|
|
52
|
+
var width = dimensions.width / 100 * options.panoramaWidth;
|
|
53
|
+
var height = dimensions.height / 100 * options.panoramaHeight;
|
|
54
|
+
|
|
55
|
+
smallestSize = Math.min(smallestSize, Math.min(width, height));
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
return MIN_SCALING_SIZE / smallestSize;
|
|
59
|
+
}
|
|
60
|
+
}());
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
(function($) {
|
|
2
|
+
var margin = 40;
|
|
3
|
+
|
|
2
4
|
$.widget('pageflow.linkmapScrollIndicators', {
|
|
3
5
|
_create: function() {
|
|
4
6
|
var element = this.element;
|
|
@@ -9,9 +11,11 @@
|
|
|
9
11
|
toggle();
|
|
10
12
|
|
|
11
13
|
function toggle() {
|
|
12
|
-
element.toggleClass('can_scroll_left', Math.ceil(scroller.positionX()) <
|
|
13
|
-
element.toggleClass('can_scroll_right', Math.floor(scroller.positionX()) > scroller.maxX());
|
|
14
|
+
element.toggleClass('can_scroll_left', Math.ceil(scroller.positionX()) < - margin);
|
|
15
|
+
element.toggleClass('can_scroll_right', Math.floor(scroller.positionX()) > scroller.maxX() + margin);
|
|
16
|
+
element.toggleClass('can_scroll_up', Math.ceil(scroller.positionY()) < - margin);
|
|
17
|
+
element.toggleClass('can_scroll_down', Math.floor(scroller.positionY()) > scroller.maxY() + margin);
|
|
14
18
|
}
|
|
15
19
|
}
|
|
16
20
|
});
|
|
17
|
-
}(jQuery))
|
|
21
|
+
}(jQuery));
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
$arrow-margin-mobile: 10px;
|
|
5
5
|
|
|
6
6
|
.arrow_left,
|
|
7
|
-
.arrow_right
|
|
7
|
+
.arrow_right,
|
|
8
|
+
.arrow_up,
|
|
9
|
+
.arrow_down {
|
|
8
10
|
position: absolute;
|
|
9
|
-
top: 50%;
|
|
10
|
-
margin-top: -40px;
|
|
11
11
|
width: 80px;
|
|
12
12
|
height: 80px;
|
|
13
13
|
text-decoration: none;
|
|
@@ -15,6 +15,10 @@
|
|
|
15
15
|
z-index: 10;
|
|
16
16
|
display: block;
|
|
17
17
|
|
|
18
|
+
@include phone {
|
|
19
|
+
@include transform(scale(0.5))
|
|
20
|
+
}
|
|
21
|
+
|
|
18
22
|
&:before {
|
|
19
23
|
color: #fff;
|
|
20
24
|
width: 100%;
|
|
@@ -42,41 +46,67 @@
|
|
|
42
46
|
}
|
|
43
47
|
}
|
|
44
48
|
|
|
49
|
+
.arrow_left,
|
|
50
|
+
.arrow_right {
|
|
51
|
+
margin-top: -40px;
|
|
52
|
+
top: 50%;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.arrow_up,
|
|
56
|
+
.arrow_down {
|
|
57
|
+
left: 50%;
|
|
58
|
+
}
|
|
59
|
+
|
|
45
60
|
.arrow_left {
|
|
46
61
|
@include fa-angle-left-icon;
|
|
47
62
|
left: 10px;
|
|
48
63
|
|
|
49
64
|
@include phone {
|
|
50
65
|
left: $arrow-margin-mobile;
|
|
51
|
-
@include transform(scale(0.5))
|
|
52
66
|
}
|
|
53
67
|
}
|
|
54
68
|
|
|
55
69
|
.arrow_right {
|
|
56
70
|
@include fa-angle-right-icon;
|
|
57
71
|
right: $arrow-margin;
|
|
72
|
+
@extend %pageflow_widget_margin_right !optional;
|
|
58
73
|
|
|
59
74
|
@include phone {
|
|
60
75
|
right: $arrow-margin-mobile;
|
|
61
|
-
@include transform(scale(0.5))
|
|
62
76
|
}
|
|
77
|
+
}
|
|
63
78
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
79
|
+
.arrow_up {
|
|
80
|
+
@include fa-angle-up-icon;
|
|
81
|
+
top: $arrow-margin;
|
|
68
82
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
83
|
+
@include phone {
|
|
84
|
+
top: 0;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.arrow_down {
|
|
89
|
+
@include fa-angle-down-icon;
|
|
90
|
+
bottom: $arrow-margin;
|
|
91
|
+
|
|
92
|
+
@include phone {
|
|
93
|
+
bottom: 0;
|
|
72
94
|
}
|
|
73
95
|
}
|
|
74
96
|
|
|
75
|
-
&.can_scroll_left .arrow_left:before {
|
|
97
|
+
.linkmap_panorama_h &.can_scroll_left .arrow_left:before {
|
|
98
|
+
opacity: 1;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.linkmap_panorama_h &.can_scroll_right .arrow_right:before {
|
|
102
|
+
opacity: 1;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.linkmap_panorama_v &.can_scroll_up .arrow_up:before {
|
|
76
106
|
opacity: 1;
|
|
77
107
|
}
|
|
78
108
|
|
|
79
|
-
&.
|
|
109
|
+
.linkmap_panorama_v &.can_scroll_down .arrow_down:before {
|
|
80
110
|
opacity: 1;
|
|
81
111
|
}
|
|
82
|
-
}
|
|
112
|
+
}
|
|
@@ -41,11 +41,17 @@
|
|
|
41
41
|
</div>
|
|
42
42
|
</div>
|
|
43
43
|
|
|
44
|
+
<div class="arrow_up">
|
|
45
|
+
<span class="hint"><%= t('.scroll_up') %></span>
|
|
46
|
+
</div>
|
|
44
47
|
<div class="arrow_left">
|
|
45
48
|
<span class="hint"><%= t('.scroll_left') %></span>
|
|
46
49
|
</div>
|
|
47
50
|
<div class="arrow_right">
|
|
48
51
|
<span class="hint"><%= t('.scroll_right') %></span>
|
|
49
52
|
</div>
|
|
53
|
+
<div class="arrow_down">
|
|
54
|
+
<span class="hint"><%= t('.scroll_down') %></span>
|
|
55
|
+
</div>
|
|
50
56
|
</div>
|
|
51
57
|
</div>
|
data/{exec → bin}/rspec
RENAMED
data/{exec → bin}/spring
RENAMED
|
File without changes
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
de:
|
|
2
|
+
pageflow:
|
|
3
|
+
linkmap_page:
|
|
4
|
+
editor:
|
|
5
|
+
views:
|
|
6
|
+
scaled_on_phone_hint:
|
|
7
|
+
text: "Das Panorama wird im %{orientation} skaliert, um eine Mindestgröße der Hotspots für die Touch-Eingabe zu gewährleisten. Hotspots vergrößern, um Skalierung zu vermeiden."
|
|
8
|
+
orientations:
|
|
9
|
+
both: "Phone Layout"
|
|
10
|
+
landscape: "Landscape Phone Layout"
|
|
11
|
+
portrait: "Portrait Phone Layout"
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
en:
|
|
2
|
+
pageflow:
|
|
3
|
+
linkmap_page:
|
|
4
|
+
editor:
|
|
5
|
+
views:
|
|
6
|
+
scaled_on_phone_hint:
|
|
7
|
+
text: "The panorama will be scaled on %{orientation} to ensure minimum hotspot size for touch interaction. Increase hotspot size to prevent scaling."
|
|
8
|
+
orientations:
|
|
9
|
+
both: "phones"
|
|
10
|
+
landscape: "phones in landscape orientation"
|
|
11
|
+
portrait: "phones in portrait orientation"
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module PageflowLinkmapPage
|
|
2
|
+
class InstallGenerator < Rails::Generators::Base
|
|
3
|
+
desc 'Install the Pageflow plugin and the necessary migrations.'
|
|
4
|
+
|
|
5
|
+
def register_plugin
|
|
6
|
+
inject_into_file('config/initializers/pageflow.rb',
|
|
7
|
+
after: "Pageflow.configure do |config|\n") do
|
|
8
|
+
|
|
9
|
+
" config.plugin(Pageflow::#{engine_name_suffix.camelize}.plugin)\n"
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def mount_engine
|
|
14
|
+
route("mount #{engine.name}, at: '/#{engine_name_suffix}'\n")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def install_migrations
|
|
18
|
+
rake 'pageflow_external_links:install:migrations'
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def engine_name_suffix
|
|
24
|
+
engine.engine_name.gsub(/^pageflow_/, '')
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def engine
|
|
28
|
+
Pageflow::LinkmapPage::Engine
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -13,7 +13,6 @@ Gem::Specification.new do |spec|
|
|
|
13
13
|
spec.license = 'MIT'
|
|
14
14
|
|
|
15
15
|
spec.files = `git ls-files`.split($/)
|
|
16
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
17
16
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
18
17
|
spec.require_paths = ['lib']
|
|
19
18
|
|
|
@@ -25,7 +24,7 @@ Gem::Specification.new do |spec|
|
|
|
25
24
|
|
|
26
25
|
spec.add_development_dependency 'bundler'
|
|
27
26
|
spec.add_development_dependency 'rake'
|
|
28
|
-
spec.add_development_dependency 'rspec-rails', '~>
|
|
27
|
+
spec.add_development_dependency 'rspec-rails', '~> 3.0'
|
|
29
28
|
spec.add_development_dependency 'factory_girl_rails'
|
|
30
29
|
spec.add_development_dependency 'sqlite3'
|
|
31
30
|
|
|
@@ -5,25 +5,28 @@ module Pageflow
|
|
|
5
5
|
describe AreasHelper do
|
|
6
6
|
describe '#linkmap_area_divs' do
|
|
7
7
|
it 'renders div with attribute name as class' do
|
|
8
|
+
entry = create(:entry)
|
|
8
9
|
configuration = {}
|
|
9
10
|
|
|
10
|
-
html = helper.linkmap_areas_div(
|
|
11
|
+
html = helper.linkmap_areas_div(entry, configuration)
|
|
11
12
|
|
|
12
|
-
expect(html).to have_selector('div.linkmap_areas
|
|
13
|
+
expect(html).to have_selector('div.linkmap_areas')
|
|
13
14
|
end
|
|
14
15
|
|
|
15
16
|
it 'renders linkmap areas' do
|
|
16
|
-
|
|
17
|
+
entry = create(:entry)
|
|
18
|
+
configuration = {'linkmap_areas' => [{}]}
|
|
17
19
|
|
|
18
|
-
html = helper.linkmap_areas_div(
|
|
20
|
+
html = helper.linkmap_areas_div(entry, configuration)
|
|
19
21
|
|
|
20
22
|
expect(html).to have_selector('div a[href]')
|
|
21
23
|
end
|
|
22
24
|
|
|
23
|
-
it 'renders hover image
|
|
24
|
-
|
|
25
|
+
it 'renders hover image inside linkmap areas' do
|
|
26
|
+
entry = create(:entry)
|
|
27
|
+
configuration = {'linkmap_areas' => [{}], 'hover_image_id' => 5}
|
|
25
28
|
|
|
26
|
-
html = helper.linkmap_areas_div(
|
|
29
|
+
html = helper.linkmap_areas_div(entry, configuration)
|
|
27
30
|
|
|
28
31
|
expect(html).to have_selector('a div[class~="image_panorama_5"]')
|
|
29
32
|
end
|
|
@@ -31,15 +34,18 @@ module Pageflow
|
|
|
31
34
|
|
|
32
35
|
describe '#linkmap_area' do
|
|
33
36
|
it 'renders link tag' do
|
|
34
|
-
|
|
37
|
+
entry = create(:entry)
|
|
38
|
+
|
|
39
|
+
html = helper.linkmap_area(entry, {}, 0)
|
|
35
40
|
|
|
36
41
|
expect(html).to have_selector('a[href]')
|
|
37
42
|
end
|
|
38
43
|
|
|
39
44
|
it 'sets inline styles for position and size' do
|
|
45
|
+
entry = create(:entry)
|
|
40
46
|
attributes = {top: 20, left: 30, width: 40, height: 50}
|
|
41
47
|
|
|
42
|
-
html = helper.linkmap_area(attributes, 0)
|
|
48
|
+
html = helper.linkmap_area(entry, attributes, 0)
|
|
43
49
|
|
|
44
50
|
expect(html).to include('top: 20%;')
|
|
45
51
|
expect(html).to include('left: 30%;')
|
|
@@ -48,19 +54,21 @@ module Pageflow
|
|
|
48
54
|
end
|
|
49
55
|
|
|
50
56
|
it 'sets data attribute for audio file' do
|
|
51
|
-
|
|
57
|
+
entry = create(:entry)
|
|
58
|
+
attributes = {target_type: 'audio_file', target_id: 25}
|
|
52
59
|
|
|
53
|
-
html = helper.linkmap_area(attributes, 5)
|
|
60
|
+
html = helper.linkmap_area(entry, attributes, 5)
|
|
54
61
|
|
|
55
62
|
expect(html).to have_selector('a[data-audio-file="25.area_5"]')
|
|
56
63
|
end
|
|
57
64
|
|
|
58
|
-
it 'sets data attribute for
|
|
59
|
-
|
|
65
|
+
it 'sets data attribute for page link' do
|
|
66
|
+
entry = create(:entry)
|
|
67
|
+
attributes = {target_type: 'page', target_id: 10}
|
|
60
68
|
|
|
61
|
-
html = helper.linkmap_area(attributes, 0)
|
|
69
|
+
html = helper.linkmap_area(entry, attributes, 0)
|
|
62
70
|
|
|
63
|
-
expect(html).to have_selector('a[data-
|
|
71
|
+
expect(html).to have_selector('a[data-target-id="10"]')
|
|
64
72
|
end
|
|
65
73
|
end
|
|
66
74
|
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
ENV['RAILS_ENV'] ||= 'test'
|
|
2
|
-
|
|
2
|
+
ENV['PAGEFLOW_PLUGIN_ENGINE'] = 'pageflow_linkmap_page'
|
|
3
3
|
|
|
4
|
-
require '
|
|
4
|
+
require 'factory_girl_rails'
|
|
5
|
+
|
|
6
|
+
require 'pageflow/support'
|
|
7
|
+
Pageflow::Dummy.setup
|
|
8
|
+
|
|
9
|
+
require 'pageflow-linkmap-page'
|
|
5
10
|
require 'rspec/rails'
|
|
6
11
|
|
|
7
12
|
engine_root = File.join(File.dirname(__FILE__), '..')
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
RSpec.configure do |config|
|
|
2
|
+
# Allow to use build and create methods without FactoryGirl prefix.
|
|
3
|
+
config.include FactoryGirl::Syntax::Methods
|
|
4
|
+
|
|
5
|
+
# Make sure factories are up to date when using spring. Skip in CI
|
|
6
|
+
# since reloading causes factories to be excluded in test coverage.
|
|
7
|
+
unless ENV['CI']
|
|
8
|
+
config.before(:all) do
|
|
9
|
+
FactoryGirl.reload
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pageflow-linkmap-page
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Codevise Solutions Ltd.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2017-04-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: pageflow
|
|
@@ -86,14 +86,14 @@ dependencies:
|
|
|
86
86
|
requirements:
|
|
87
87
|
- - "~>"
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '
|
|
89
|
+
version: '3.0'
|
|
90
90
|
type: :development
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
94
|
- - "~>"
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '
|
|
96
|
+
version: '3.0'
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
name: factory_girl_rails
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -160,6 +160,7 @@ files:
|
|
|
160
160
|
- ".gitignore"
|
|
161
161
|
- ".jshintignore"
|
|
162
162
|
- ".jshintrc"
|
|
163
|
+
- ".travis.yml"
|
|
163
164
|
- CHANGELOG.md
|
|
164
165
|
- Gemfile
|
|
165
166
|
- README.md
|
|
@@ -186,6 +187,7 @@ files:
|
|
|
186
187
|
- app/assets/javascript/pageflow/linkmap_page/editor/routers/side_bar_router.js
|
|
187
188
|
- app/assets/javascript/pageflow/linkmap_page/editor/templates/edit_area.jst.ejs
|
|
188
189
|
- app/assets/javascript/pageflow/linkmap_page/editor/templates/embedded/area_item.jst.ejs
|
|
190
|
+
- app/assets/javascript/pageflow/linkmap_page/editor/templates/scaled_on_phone_hint.jst.ejs
|
|
189
191
|
- app/assets/javascript/pageflow/linkmap_page/editor/views/areas_list_view.js
|
|
190
192
|
- app/assets/javascript/pageflow/linkmap_page/editor/views/configuration_editor_view.js
|
|
191
193
|
- app/assets/javascript/pageflow/linkmap_page/editor/views/edit_area_view.js
|
|
@@ -193,6 +195,7 @@ files:
|
|
|
193
195
|
- app/assets/javascript/pageflow/linkmap_page/editor/views/embedded/area_item_embedded_view.js
|
|
194
196
|
- app/assets/javascript/pageflow/linkmap_page/editor/views/embedded/areas_embedded_view.js
|
|
195
197
|
- app/assets/javascript/pageflow/linkmap_page/editor/views/embedded/panorama_embedded_view.js
|
|
198
|
+
- app/assets/javascript/pageflow/linkmap_page/editor/views/scaled_on_phone_hint_view.js
|
|
196
199
|
- app/assets/javascript/pageflow/linkmap_page/features.js
|
|
197
200
|
- app/assets/javascript/pageflow/linkmap_page/page_type.js
|
|
198
201
|
- app/assets/javascript/pageflow/linkmap_page/vendor/gyro.js
|
|
@@ -203,6 +206,7 @@ files:
|
|
|
203
206
|
- app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_lookaround.js
|
|
204
207
|
- app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_lookaround_strategies/target_speed.js
|
|
205
208
|
- app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_panorama.js
|
|
209
|
+
- app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_panorama/get_panorama_size.js
|
|
206
210
|
- app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_scroll_indicators.js
|
|
207
211
|
- app/assets/stylesheets/pageflow/linkmap_page.css.scss
|
|
208
212
|
- app/assets/stylesheets/pageflow/linkmap_page/animations/rotate.css.scss
|
|
@@ -213,21 +217,25 @@ files:
|
|
|
213
217
|
- app/assets/stylesheets/pageflow/linkmap_page/editor/resizable.css.scss
|
|
214
218
|
- app/assets/stylesheets/pageflow/linkmap_page/themes/default.css.scss
|
|
215
219
|
- app/assets/stylesheets/pageflow/linkmap_page/themes/default/scroll_indicators.scss
|
|
216
|
-
- app/controllers/pageflow/external_links/sites_controller.rb
|
|
217
220
|
- app/helpers/pageflow/linkmap_page/areas_helper.rb
|
|
218
|
-
- app/models/pageflow/linkmap_page/site.rb
|
|
219
221
|
- app/views/pageflow/linkmap_page/areas/_div.html.erb
|
|
220
|
-
- app/views/pageflow/linkmap_page/page.html
|
|
222
|
+
- app/views/pageflow/linkmap_page/page.html.erb
|
|
223
|
+
- bin/rspec
|
|
224
|
+
- bin/spring
|
|
221
225
|
- config/locales/de.yml
|
|
222
226
|
- config/locales/en.yml
|
|
223
227
|
- config/locales/new/inverted.de.yml
|
|
224
228
|
- config/locales/new/inverted.en.yml
|
|
229
|
+
- config/locales/new/scaled_on_phone_hint.de.yml
|
|
230
|
+
- config/locales/new/scaled_on_phone_hint.en.yml
|
|
231
|
+
- config/locales/new/scroll_indicators_v.de.yml
|
|
232
|
+
- config/locales/new/scroll_indicators_v.en.yml
|
|
225
233
|
- config/locales/new/text_only_area_type.de.yml
|
|
226
234
|
- config/locales/new/text_only_area_type.en.yml
|
|
235
|
+
- config/locales/new/typo.en.yml
|
|
227
236
|
- config/routes.rb
|
|
228
237
|
- config/spring.rb
|
|
229
|
-
-
|
|
230
|
-
- exec/spring
|
|
238
|
+
- lib/generators/pageflow_linkmap_page/install/install_generator.rb
|
|
231
239
|
- lib/pageflow-linkmap-page.rb
|
|
232
240
|
- lib/pageflow/linkmap_page/engine.rb
|
|
233
241
|
- lib/pageflow/linkmap_page/page_type.rb
|
|
@@ -236,6 +244,8 @@ files:
|
|
|
236
244
|
- pageflow-linkmap-page.gemspec
|
|
237
245
|
- spec/helpers/pageflow/linkmap_page/areas_helper_spec.rb
|
|
238
246
|
- spec/spec_helper.rb
|
|
247
|
+
- spec/support/config/devise.rb
|
|
248
|
+
- spec/support/config/factory_girl.rb
|
|
239
249
|
homepage: http://github.com/codevise/pageflow-linkmap-page
|
|
240
250
|
licenses:
|
|
241
251
|
- MIT
|
|
@@ -256,10 +266,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
256
266
|
version: '0'
|
|
257
267
|
requirements: []
|
|
258
268
|
rubyforge_project:
|
|
259
|
-
rubygems_version: 2.
|
|
269
|
+
rubygems_version: 2.6.8
|
|
260
270
|
signing_key:
|
|
261
271
|
specification_version: 4
|
|
262
272
|
summary: Pageflow page type for a page that contains customizable link areas
|
|
263
273
|
test_files:
|
|
264
274
|
- spec/helpers/pageflow/linkmap_page/areas_helper_spec.rb
|
|
265
275
|
- spec/spec_helper.rb
|
|
276
|
+
- spec/support/config/devise.rb
|
|
277
|
+
- spec/support/config/factory_girl.rb
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
module Pageflow
|
|
2
|
-
module ExternalLinks
|
|
3
|
-
class SitesController < ActionController::Base
|
|
4
|
-
respond_to :json
|
|
5
|
-
|
|
6
|
-
def index
|
|
7
|
-
@entry = Entry.find(params[:entry_id])
|
|
8
|
-
|
|
9
|
-
respond_with(Site.all_for_revision(@entry.draft))
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def create
|
|
13
|
-
@entry = Entry.find(params[:entry_id])
|
|
14
|
-
site = Site.all_for_revision(@entry.draft).create!(site_params)
|
|
15
|
-
|
|
16
|
-
respond_with(site)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def update
|
|
20
|
-
site = Site.find(params[:id])
|
|
21
|
-
site.update(site_params)
|
|
22
|
-
|
|
23
|
-
respond_with(site)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def destroy
|
|
27
|
-
site = Site.find(params[:id])
|
|
28
|
-
site.destroy
|
|
29
|
-
|
|
30
|
-
respond_with(site)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
protected
|
|
34
|
-
|
|
35
|
-
def site_params
|
|
36
|
-
params.require(:site).permit(:url, :thumbnail, :title, :description, :open_in_new_tab)
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|