pageflow-linkmap-page 1.5.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +31 -6
- data/Gemfile +0 -7
- data/README.md +0 -5
- data/app/assets/javascript/pageflow/linkmap_page/editor/collections/areas_collection.js +8 -1
- data/app/assets/javascript/pageflow/linkmap_page/editor/config.js +23 -1
- data/app/assets/javascript/pageflow/linkmap_page/editor/controllers/side_bar_controller.js +24 -5
- data/app/assets/javascript/pageflow/linkmap_page/editor/models/area.js +4 -1
- data/app/assets/javascript/pageflow/linkmap_page/editor/models/color_map_delegator.js +16 -0
- data/app/assets/javascript/pageflow/linkmap_page/editor/models/color_map_file.js +6 -0
- data/app/assets/javascript/pageflow/linkmap_page/editor/models/masked_image_file.js +7 -0
- data/app/assets/javascript/pageflow/linkmap_page/editor/models/page_configuration_mixin.js +49 -55
- data/app/assets/javascript/pageflow/linkmap_page/editor/models/processed_file.js +12 -0
- data/app/assets/javascript/pageflow/linkmap_page/editor/patterns/area_pattern.js +42 -0
- data/app/assets/javascript/pageflow/linkmap_page/editor/routers/side_bar_router.js +3 -1
- data/app/assets/javascript/pageflow/linkmap_page/editor/templates/embedded/area_item.jst.ejs +2 -2
- data/app/assets/javascript/pageflow/linkmap_page/editor/templates/embedded/area_masks_preview.jst.ejs +4 -2
- data/app/assets/javascript/pageflow/linkmap_page/editor/templates/embedded/area_outlines.jst.ejs +3 -2
- data/app/assets/javascript/pageflow/linkmap_page/editor/templates/embedded/mobile_info_box_page_item.jst.ejs +2 -0
- data/app/assets/javascript/pageflow/linkmap_page/editor/views/areas_list_view.js +1 -0
- data/app/assets/javascript/pageflow/linkmap_page/editor/views/configuration_editor_view.js +46 -0
- data/app/assets/javascript/pageflow/linkmap_page/editor/views/edit_area_view.js +3 -6
- data/app/assets/javascript/pageflow/linkmap_page/editor/views/embedded/area_item_embedded_view.js +75 -10
- data/app/assets/javascript/pageflow/linkmap_page/editor/views/embedded/area_masks_preview_embedded_view.js +71 -77
- data/app/assets/javascript/pageflow/linkmap_page/editor/views/embedded/area_outlines_embedded_view.js +44 -82
- data/app/assets/javascript/pageflow/linkmap_page/editor/views/embedded/areas_embedded_view.js +12 -13
- data/app/assets/javascript/pageflow/linkmap_page/editor/views/embedded/mobile_info_box_embedded_view.js +61 -0
- data/app/assets/javascript/pageflow/linkmap_page/editor/views/embedded/mobile_info_box_page_item_embedded_view.js +28 -0
- data/app/assets/javascript/pageflow/linkmap_page/editor.js +10 -2
- data/app/assets/javascript/pageflow/linkmap_page/page_type.js +155 -20
- data/app/assets/javascript/pageflow/linkmap_page/widgets/hover_video.js +4 -1
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap/area_contains.js +7 -6
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap/area_set_mask.js +16 -0
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap/color_map.js +83 -142
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap/image_data.js +17 -47
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap/mask.js +3 -34
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap/remote_image.js +3 -6
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap.js +78 -92
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_area_indicators.js +75 -0
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_paginator.js +292 -0
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_pan_zoom.js +241 -0
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_panorama.js +81 -59
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_scroll_indicators.js +14 -0
- data/app/assets/stylesheets/pageflow/linkmap_page/editor/area_outlines.scss +6 -0
- data/app/assets/stylesheets/pageflow/linkmap_page/editor/masks_preview.scss +10 -0
- data/app/assets/stylesheets/pageflow/linkmap_page/themes/default/mobile_info_box.scss +31 -0
- data/app/assets/stylesheets/pageflow/linkmap_page/themes/default/paginator.scss +53 -0
- data/app/assets/stylesheets/pageflow/linkmap_page/themes/default/scroll_indicators.scss +5 -1
- data/app/assets/stylesheets/pageflow/linkmap_page/themes/default.scss +3 -0
- data/app/assets/stylesheets/pageflow/linkmap_page.scss +29 -3
- data/app/helpers/pageflow/linkmap_page/areas_helper.rb +37 -11
- data/app/jobs/pageflow/linkmap_page/process_source_image_file_job.rb +4 -4
- data/app/views/pageflow/linkmap_page/areas/_div.html.erb +13 -7
- data/app/views/pageflow/linkmap_page/color_map_files/_color_map_file.json.jbuilder +18 -0
- data/app/views/pageflow/linkmap_page/editor/color_map_files/_color_map_file.json.jbuilder +1 -0
- data/app/views/pageflow/linkmap_page/editor/masked_image_files/_masked_image_file.json.jbuilder +1 -0
- data/app/views/pageflow/linkmap_page/page.html.erb +76 -39
- data/config/locales/de.yml +47 -4
- data/config/locales/en.yml +43 -4
- data/db/migrate/20170330201200_create_mask_sprites.rb +1 -1
- data/db/migrate/20171106151700_create_masked_image_files.rb +1 -1
- data/db/migrate/20180111145100_create_color_map_files.rb +1 -1
- data/db/migrate/20180214201200_drop_mask_sprites.rb +7 -0
- data/lib/pageflow/linkmap_page/engine.rb +4 -0
- data/lib/pageflow/linkmap_page/page_type.rb +26 -0
- data/lib/pageflow/linkmap_page/paperclip_processors/color_mask.rb +1 -1
- data/lib/pageflow/linkmap_page/paperclip_processors/colors.rb +1 -1
- data/lib/pageflow/linkmap_page/version.rb +1 -1
- data/lib/tasks/pageflow_linkmap_page_tasks.rake +8 -7
- data/pageflow-linkmap-page.gemspec +11 -5
- data/spec/factories/color_map_file.rb +16 -0
- data/spec/factories/image_file.rb +25 -0
- data/spec/factories/masked_image_file.rb +10 -0
- data/spec/helpers/pageflow/linkmap_page/areas_helper_spec.rb +76 -13
- data/spec/integration/masked_image_file_type_spec.rb +15 -0
- data/spec/models/pageflow/linkmap_page/color_map_file_spec.rb +113 -0
- data/spec/models/pageflow/linkmap_page/masked_image_file_spec.rb +87 -0
- data/spec/pageflow/linkmap_page/paperclip_processors/colors_spec.rb +46 -0
- data/spec/pageflow/linkmap_page/progress_spec.rb +91 -0
- data/spec/spec_helper.rb +5 -1
- data/spec/support/config/devise.rb +1 -8
- data/spec/support/config/{factory_girl.rb → factory_bot.rb} +5 -3
- data/spec/support/config/resque.rb +9 -0
- data/spec/support/fixtures/black_dots.png +0 -0
- data/spec/support/fixtures/color_map.png +0 -0
- data/spec/support/fixtures/dots_and_lines.png +0 -0
- data/spec/support/fixtures/green_and_black.png +0 -0
- data/spec/support/fixtures/red.png +0 -0
- data/spec/support/fixtures/transparent.png +0 -0
- data/spec/support/matchers/have_color.rb +34 -0
- metadata +98 -41
- data/app/assets/javascript/pageflow/linkmap_page/editor/models/masks_delegator.js +0 -16
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap/area_redraw.js +0 -34
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap/mask_sprite.js +0 -68
- data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap/masks.js +0 -99
- data/app/controllers/pageflow/linkmap_page/mask_sprites_controller.rb +0 -26
- data/app/models/pageflow/linkmap_page/mask_sprite.rb +0 -15
- data/config/routes.rb +0 -5
- data/spec/controllers/pageflow/linkmap_page/mask_sprites_controller_spec.rb +0 -108
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ce17d17c0e4310badb5085357e5207eed1a85771ebe119b9ebe04171cb38c2e
|
4
|
+
data.tar.gz: da776f95231282a5645ca3b67a3437ec26c8eb00ab7b537de7438344adffe5f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 222ed28a9b10e79cf16e3b1f306c4aa88612e12b923a5570724a3bfbee456ec475a8ec5f08f1a3ee24b757a41d1335ffeaad3a3c1e330e43a9e8120afe4c8d6e
|
7
|
+
data.tar.gz: beca7d5fc98604075efc611f2eb98ca3b67549e89b11b4b350b402b170d1292af2bada093306f95895fbcf7e8eb0c3aa39fb735dbed9e36fe04b29e28466b75e
|
data/CHANGELOG.md
CHANGED
@@ -1,14 +1,39 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
-
### Version
|
3
|
+
### Version 2.0.0
|
4
4
|
|
5
|
-
|
5
|
+
2018-12-10
|
6
6
|
|
7
|
-
[Compare changes](https://github.com/codevise/pageflow-linkmap-page/compare/1-
|
7
|
+
[Compare changes](https://github.com/codevise/pageflow-linkmap-page/compare/1-x-stable...v2.0.0)
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
##### Breaking Changes
|
10
|
+
|
11
|
+
- Requires Pageflow 13.
|
12
|
+
([#35](https://github.com/codevise/pageflow-linkmap-page/pull/35),
|
13
|
+
[#38](https://github.com/codevise/pageflow-linkmap-page/pull/38))
|
14
|
+
|
15
|
+
- Use server side processing for color maps and masked images.
|
16
|
+
([#42](https://github.com/codevise/pageflow-linkmap-page/pull/42))
|
17
|
+
|
18
|
+
Remove the following line from your `config/routes.rb` file:
|
19
|
+
|
20
|
+
mount Pageflow::LinkmapPage::Engine, at: '/linkmap_page'
|
21
|
+
|
22
|
+
Run the following rake task to trigger server side processing of
|
23
|
+
color maps and masked images:
|
24
|
+
|
25
|
+
bin/rake pageflow_linkmap_page:migrate_to_masked_image_files
|
26
|
+
|
27
|
+
Consider running this task on a separate machine to handle file
|
28
|
+
processing before deploying the update.
|
29
|
+
|
30
|
+
##### Features
|
31
|
+
|
32
|
+
- Paginated mobile navigation
|
33
|
+
([#43](https://github.com/codevise/pageflow-linkmap-page/pull/43))
|
34
|
+
- Integrate with horizontal slideshow navigation
|
35
|
+
([#44](https://github.com/codevise/pageflow-linkmap-page/pull/44))
|
11
36
|
|
12
37
|
See
|
13
|
-
[1-
|
38
|
+
[1-x-stable branch](https://github.com/codevise/pageflow-linkmap-page/blob/1-x-stable/CHANGELOG.md)
|
14
39
|
for previous changes.
|
data/Gemfile
CHANGED
@@ -3,12 +3,5 @@ source 'https://rubygems.org'
|
|
3
3
|
# Specify your gem's dependencies in chart.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
|
-
gem 'state_machine', git: 'https://github.com/codevise/state_machine.git'
|
7
|
-
|
8
6
|
gem 'spring-commands-rspec', group: :development
|
9
7
|
gem 'spring-commands-teaspoon', group: :development
|
10
|
-
|
11
|
-
# Required to make Bundler 1.16.1 find a resolution. Without this line
|
12
|
-
# `bundle install` without a `Gemfile.lock` would run for a very long
|
13
|
-
# time makin the Travis build time out.
|
14
|
-
gem 'railties', '~> 4.2'
|
data/README.md
CHANGED
@@ -19,11 +19,6 @@ Register the page type inside the configure block in `config/initializers/pagefl
|
|
19
19
|
config.plugin(Pageflow::LinkmapPage.plugin)
|
20
20
|
end
|
21
21
|
|
22
|
-
Mount the engine:
|
23
|
-
|
24
|
-
# config/routes.rb
|
25
|
-
mount Pageflow::LinkmapPage::Engine, at: '/linkmap_page'
|
26
|
-
|
27
22
|
Include javascripts and stylesheets:
|
28
23
|
|
29
24
|
# app/assets/javascripts/pageflow/application.js
|
@@ -12,6 +12,10 @@ pageflow.linkmapPage.AreasCollection = Backbone.Collection.extend({
|
|
12
12
|
this.listenTo(this, 'add', this.updateSelectedAttributes);
|
13
13
|
},
|
14
14
|
|
15
|
+
comparator: function(area) {
|
16
|
+
return area.get('position');
|
17
|
+
},
|
18
|
+
|
15
19
|
canAddLink: function() {
|
16
20
|
return true;
|
17
21
|
},
|
@@ -55,6 +59,7 @@ pageflow.linkmapPage.AreasCollection = Backbone.Collection.extend({
|
|
55
59
|
},
|
56
60
|
|
57
61
|
resetSelection: function() {
|
62
|
+
this.trigger('resetSelection');
|
58
63
|
this.updateSelectedAttributes(null);
|
59
64
|
},
|
60
65
|
|
@@ -62,5 +67,7 @@ pageflow.linkmapPage.AreasCollection = Backbone.Collection.extend({
|
|
62
67
|
this.each(function(area) {
|
63
68
|
area.set('selected', area === selectedArea);
|
64
69
|
});
|
65
|
-
}
|
70
|
+
},
|
71
|
+
|
72
|
+
saveOrder: function() {}
|
66
73
|
});
|
@@ -1,3 +1,19 @@
|
|
1
|
+
pageflow.editor.fileTypes.register('pageflow_linkmap_page_color_map_files', {
|
2
|
+
model: pageflow.linkmapPage.ColorMapFile,
|
3
|
+
|
4
|
+
matchUpload: function(upload) {
|
5
|
+
return false;
|
6
|
+
}
|
7
|
+
});
|
8
|
+
|
9
|
+
pageflow.editor.fileTypes.register('pageflow_linkmap_page_masked_image_files', {
|
10
|
+
model: pageflow.linkmapPage.MaskedImageFile,
|
11
|
+
|
12
|
+
matchUpload: function(upload) {
|
13
|
+
return false;
|
14
|
+
}
|
15
|
+
});
|
16
|
+
|
1
17
|
pageflow.editor.pageTypes.register('linkmap_page', {
|
2
18
|
configurationEditorView: pageflow.linkmapPage.ConfigurationEditorView,
|
3
19
|
|
@@ -29,6 +45,10 @@ pageflow.editor.pageTypes.register('linkmap_page', {
|
|
29
45
|
view: pageflow.linkmapPage.AreasEmbeddedView
|
30
46
|
},
|
31
47
|
|
48
|
+
'.linkmap-mobile_info_box': {
|
49
|
+
view: pageflow.linkmapPage.MobileInfoBoxEmbeddedView
|
50
|
+
},
|
51
|
+
|
32
52
|
'.fixed_background': {
|
33
53
|
view: pageflow.BackgroundImageEmbeddedView,
|
34
54
|
options: {propertyName: 'fixed_background_image_id'}
|
@@ -37,7 +57,9 @@ pageflow.editor.pageTypes.register('linkmap_page', {
|
|
37
57
|
|
38
58
|
pageLinks: function(configuration) {
|
39
59
|
return configuration.linkmapPageLinks();
|
40
|
-
}
|
60
|
+
},
|
61
|
+
|
62
|
+
supportsPhoneEmulation: true
|
41
63
|
});
|
42
64
|
|
43
65
|
pageflow.editor.registerPageConfigurationMixin(pageflow.linkmapPage.pageConfigurationMixin);
|
@@ -13,8 +13,10 @@ pageflow.linkmapPage.SideBarController = Backbone.Marionette.Controller.extend({
|
|
13
13
|
}));
|
14
14
|
},
|
15
15
|
|
16
|
-
selectAreaPosition: function(pageId) {
|
17
|
-
var returnPath =
|
16
|
+
selectAreaPosition: function(pageId, areaIndex) {
|
17
|
+
var returnPath = areaIndex === undefined ?
|
18
|
+
'pages/' + pageId + '/areas' :
|
19
|
+
'linkmap_pages/' + pageId + '/areas/' + areaIndex;
|
18
20
|
|
19
21
|
if (!pageflow.linkmapPage.currentAreaSelection) {
|
20
22
|
pageflow.editor.navigate(returnPath, {trigger: true});
|
@@ -31,8 +33,25 @@ pageflow.linkmapPage.SideBarController = Backbone.Marionette.Controller.extend({
|
|
31
33
|
selection: pageflow.linkmapPage.currentAreaSelection
|
32
34
|
}));
|
33
35
|
|
34
|
-
|
35
|
-
|
36
|
-
|
36
|
+
var areas = page.configuration.linkmapAreas();
|
37
|
+
|
38
|
+
if (!areaIndex) {
|
39
|
+
areas.once('add', function(area) {
|
40
|
+
pageflow.editor.navigate(area.editPath(), {trigger: true});
|
41
|
+
}, this);
|
42
|
+
}
|
43
|
+
|
44
|
+
pageflow.linkmapPage.currentAreaSelection.deferred
|
45
|
+
.then(
|
46
|
+
function() {
|
47
|
+
if (areaIndex) {
|
48
|
+
pageflow.editor.navigate(returnPath, {trigger: true});
|
49
|
+
}
|
50
|
+
},
|
51
|
+
_.bind(function() {
|
52
|
+
areas.off('add', null, this);
|
53
|
+
pageflow.editor.navigate(returnPath, {trigger: true});
|
54
|
+
}, this)
|
55
|
+
);
|
37
56
|
}
|
38
57
|
});
|
@@ -70,7 +70,10 @@ pageflow.linkmapPage.Area = Backbone.Model.extend({
|
|
70
70
|
|
71
71
|
return pageflow.linkmapPage.selectArea(
|
72
72
|
this.collection.page,
|
73
|
-
{
|
73
|
+
{
|
74
|
+
type: 'colorMapComponent',
|
75
|
+
areaIndex: this.collection.indexOf(this)
|
76
|
+
}
|
74
77
|
).then(function(attributes) {
|
75
78
|
model.set(_.extend(attributes, {
|
76
79
|
marker: 'no_marker'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
pageflow.linkmapPage.ColorMapDelegator = pageflow.Object.extend({
|
2
|
+
initialize: function() {
|
3
|
+
this._colorMap = pageflow.linkmapPage.ColorMap.empty;
|
4
|
+
},
|
5
|
+
|
6
|
+
updateDelegate: function(colorMap) {
|
7
|
+
this._colorMap = colorMap;
|
8
|
+
this.trigger('update');
|
9
|
+
}
|
10
|
+
});
|
11
|
+
|
12
|
+
_(['components', 'componentFromPoint', 'componentByPermaId', 'previewUrl']).each(function(method) {
|
13
|
+
pageflow.linkmapPage.ColorMapDelegator.prototype[method] = function() {
|
14
|
+
return this._colorMap[method].apply(this._colorMap, arguments);
|
15
|
+
};
|
16
|
+
});
|
@@ -1,15 +1,47 @@
|
|
1
1
|
(function() {
|
2
2
|
pageflow.linkmapPage.pageConfigurationMixin = {
|
3
|
-
initialize: function() {
|
4
|
-
this.listenTo(this,
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
3
|
+
initialize: function(options) {
|
4
|
+
this.listenTo(this,
|
5
|
+
'change:linkmap_color_map_image_id',
|
6
|
+
function(model, imageFileId) {
|
7
|
+
if (imageFileId) {
|
8
|
+
this.setReference('linkmap_color_map_file_id',
|
9
|
+
colorMapFiles().findOrCreateBy({
|
10
|
+
source_image_file_id: imageFileId
|
11
|
+
}));
|
12
|
+
}
|
13
|
+
else {
|
14
|
+
this.unsetReference('linkmap_color_map_file_id');
|
15
|
+
}
|
16
|
+
});
|
17
|
+
|
18
|
+
_(['hover_image_id', 'visited_image_id']).each(_.bind(function(attribute) {
|
19
|
+
this.listenTo(
|
20
|
+
this,
|
21
|
+
'change:' + attribute +
|
22
|
+
' change:linkmap_color_map_file_id' +
|
23
|
+
' change:linkmap_color_map_file_id:ready',
|
24
|
+
function() {
|
25
|
+
var colorMapFile = colorMapFiles().get(this.get('linkmap_color_map_file_id'));
|
26
|
+
var imageFile = pageflow.imageFiles.get(this.get(attribute));
|
27
|
+
|
28
|
+
if (imageFile && colorMapFile && colorMapFile.isReady()) {
|
29
|
+
this.setReference('linkmap_masked_' + attribute,
|
30
|
+
maskedImageFiles().findOrCreateBy({
|
31
|
+
source_image_file_id: imageFile.id,
|
32
|
+
color_map_file_id: colorMapFile.id
|
33
|
+
}));
|
34
|
+
}
|
35
|
+
else {
|
36
|
+
this.unsetReference('linkmap_masked_' + attribute);
|
37
|
+
}
|
38
|
+
});
|
39
|
+
}, this));
|
40
|
+
},
|
41
|
+
|
42
|
+
linkmapReadyColorMapFileId: function() {
|
43
|
+
var colorMapFile = colorMapFiles().get(this.get('linkmap_color_map_file_id'));
|
44
|
+
return colorMapFile && colorMapFile.isReady() ? colorMapFile.id : null;
|
13
45
|
},
|
14
46
|
|
15
47
|
linkmapPageLinks: function() {
|
@@ -34,60 +66,22 @@
|
|
34
66
|
}
|
35
67
|
);
|
36
68
|
|
37
|
-
configuration.listenTo(collection, 'add remove change', function() {
|
69
|
+
configuration.listenTo(collection, 'add remove change sort', function() {
|
38
70
|
configuration.set('linkmap_areas', collection.map(function(area) {
|
39
|
-
return _.omit(area.attributes, 'highlighted', 'editing', 'selected');
|
71
|
+
return _.omit(area.attributes, 'highlighted', 'editing', 'selected', 'position');
|
40
72
|
}));
|
41
73
|
});
|
42
74
|
|
43
75
|
return collection;
|
44
76
|
}
|
45
|
-
},
|
46
|
-
|
47
|
-
getLinkmapAreaMask: function(masks, permaId) {
|
48
|
-
if (this.get('background_type') !== 'hover_video') {
|
49
|
-
return masks.findByPermaId(permaId);
|
50
|
-
}
|
51
77
|
}
|
52
78
|
};
|
53
79
|
|
54
|
-
function
|
55
|
-
|
56
|
-
generateMaskSprite(configuration, imageFile);
|
57
|
-
}
|
58
|
-
else {
|
59
|
-
imageFile.once('change:state', function() {
|
60
|
-
generateMaskSpriteWhenReady(configuration, imageFile);
|
61
|
-
});
|
62
|
-
}
|
63
|
-
}
|
64
|
-
|
65
|
-
function generateMaskSprite(configuration, imageFile) {
|
66
|
-
// panorama_mask_url is available in Pageflow >= 12.1
|
67
|
-
pageflow.linkmapPage.StoredMaskSprite
|
68
|
-
.findOrCreateForImageFileId(imageFile.id,
|
69
|
-
imageFile.get('panorama_mask_url') ||
|
70
|
-
imageFile.get('panorama_url'))
|
71
|
-
.then(
|
72
|
-
function(masks) {
|
73
|
-
configuration.set('linkmap_masks', masks);
|
74
|
-
},
|
75
|
-
function(error) {
|
76
|
-
configuration.unset('linkmap_masks');
|
77
|
-
configuration.unset('linkmap_color_map_image_id');
|
78
|
-
|
79
|
-
if (error.i18nKey) {
|
80
|
-
alert(I18n.t(error.i18nKey));
|
81
|
-
}
|
82
|
-
else {
|
83
|
-
alert(I18n.t('pageflow.linkmap_page.errors.mask_image_failed'));
|
84
|
-
throw(error);
|
85
|
-
}
|
86
|
-
}
|
87
|
-
);
|
80
|
+
function maskedImageFiles() {
|
81
|
+
return pageflow.entry.getFileCollection('pageflow_linkmap_page_masked_image_files');
|
88
82
|
}
|
89
83
|
|
90
|
-
function
|
91
|
-
|
84
|
+
function colorMapFiles() {
|
85
|
+
return pageflow.entry.getFileCollection('pageflow_linkmap_page_color_map_files');
|
92
86
|
}
|
93
|
-
}());
|
87
|
+
}());
|
@@ -0,0 +1,42 @@
|
|
1
|
+
pageflow.linkmapPage.areaPattern = {
|
2
|
+
applyOffset: function(canvas, left, top, width, height) {
|
3
|
+
var el = $(canvas)
|
4
|
+
|
5
|
+
var deltaX = left % 14;
|
6
|
+
var deltaY = top % 14;
|
7
|
+
|
8
|
+
el.css({
|
9
|
+
left: -deltaX + 'px',
|
10
|
+
top: -deltaY + 'px',
|
11
|
+
width: width + deltaX + 'px',
|
12
|
+
height: height + deltaY + 'px'
|
13
|
+
}).show();
|
14
|
+
|
15
|
+
canvas.width = el.width();
|
16
|
+
canvas.height = el.height();
|
17
|
+
},
|
18
|
+
|
19
|
+
use: function(context) {
|
20
|
+
if (!this.patternSource) {
|
21
|
+
var rectSize = 7;
|
22
|
+
|
23
|
+
var canvas = document.createElement('canvas');
|
24
|
+
this.patternSource = canvas;
|
25
|
+
|
26
|
+
canvas.width = rectSize * 2;
|
27
|
+
canvas.height = rectSize * 2;
|
28
|
+
|
29
|
+
var c = canvas.getContext('2d');
|
30
|
+
|
31
|
+
c.fillStyle = '#000';
|
32
|
+
c.fillRect(0, 0, rectSize, rectSize);
|
33
|
+
c.fillRect(rectSize, rectSize, rectSize, rectSize);
|
34
|
+
|
35
|
+
c.fillStyle = '#fff';
|
36
|
+
c.fillRect(rectSize, 0, rectSize, rectSize);
|
37
|
+
c.fillRect(0, rectSize, rectSize, rectSize);
|
38
|
+
}
|
39
|
+
|
40
|
+
context.fillStyle = context.createPattern(this.patternSource, 'repeat');
|
41
|
+
}
|
42
|
+
};
|
@@ -2,6 +2,8 @@ pageflow.linkmapPage.SideBarRouter = Backbone.Marionette.AppRouter.extend({
|
|
2
2
|
appRoutes: {
|
3
3
|
'linkmap_pages/:pageId/areas/:index': 'area',
|
4
4
|
|
5
|
-
'linkmap_pages/:pageId/select_area_position': 'selectAreaPosition',
|
5
|
+
'linkmap_pages/:pageId/select_area_position?area=:index': 'selectAreaPosition',
|
6
|
+
|
7
|
+
'linkmap_pages/:pageId/select_area_position': 'selectAreaPosition'
|
6
8
|
}
|
7
9
|
});
|
data/app/assets/javascript/pageflow/linkmap_page/editor/templates/embedded/area_item.jst.ejs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
<
|
2
|
-
<
|
1
|
+
<div class="background_image visited_image" data-style-group="panorama"></div>
|
2
|
+
<div class="background_image hover_image" data-style-group="panorama"></div>
|
3
3
|
<div class="linkmap_marker"></div>
|
4
4
|
<span class="area_type_pictogram"></span>
|
5
5
|
<div class="linkmap_description">
|
data/app/assets/javascript/pageflow/linkmap_page/editor/templates/embedded/area_outlines.jst.ejs
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
-
<
|
2
|
-
<canvas
|
1
|
+
<span class="linkmap_area_outlines-canvas_wrapper">
|
2
|
+
<canvas />
|
3
|
+
</span>
|
@@ -12,6 +12,7 @@ pageflow.linkmapPage.AreasListView = Backbone.Marionette.View.extend({
|
|
12
12
|
label: I18n.t('pageflow.linkmap_page.editor.views.areas_list.label'),
|
13
13
|
collection: this.model.linkmapAreas(),
|
14
14
|
highlight: true,
|
15
|
+
sortable: true,
|
15
16
|
|
16
17
|
onEdit: function(model) {
|
17
18
|
pageflow.editor.navigate(model.editPath(), {trigger: true});
|
@@ -43,6 +43,14 @@ pageflow.linkmapPage.ConfigurationEditorView = pageflow.ConfigurationEditorView.
|
|
43
43
|
}
|
44
44
|
});
|
45
45
|
|
46
|
+
this.input('linkmap_masked_hover_image_id', pageflow.FileProcessingStateDisplayView, {
|
47
|
+
collection: 'pageflow_linkmap_page_masked_image_files',
|
48
|
+
visibleBinding: 'background_type',
|
49
|
+
visible: function(backgroundType) {
|
50
|
+
return _(['image', 'video']).contains(backgroundType);
|
51
|
+
}
|
52
|
+
});
|
53
|
+
|
46
54
|
this.input('panorama_video_id', pageflow.FileInputView, {
|
47
55
|
attributeTranslationKeyPrefixes: ['pageflow.linkmap_page.page_attributes.hover_video_type'],
|
48
56
|
collection: pageflow.videoFiles,
|
@@ -68,11 +76,23 @@ pageflow.linkmapPage.ConfigurationEditorView = pageflow.ConfigurationEditorView.
|
|
68
76
|
}
|
69
77
|
});
|
70
78
|
|
79
|
+
this.input('linkmap_color_map_file_id', pageflow.FileProcessingStateDisplayView, {
|
80
|
+
collection: 'pageflow_linkmap_page_color_map_files',
|
81
|
+
visibleBinding: 'background_type',
|
82
|
+
visible: function(backgroundType) {
|
83
|
+
return _(['image', 'video']).contains(backgroundType);
|
84
|
+
}
|
85
|
+
});
|
86
|
+
|
71
87
|
this.input('visited_image_id', pageflow.FileInputView, {
|
72
88
|
collection: pageflow.imageFiles,
|
73
89
|
positioning: false
|
74
90
|
});
|
75
91
|
|
92
|
+
this.input('linkmap_masked_visited_image_id', pageflow.FileProcessingStateDisplayView, {
|
93
|
+
collection: 'pageflow_linkmap_page_masked_image_files'
|
94
|
+
});
|
95
|
+
|
76
96
|
this.input('thumbnail_image_id', pageflow.FileInputView, {
|
77
97
|
collection: pageflow.imageFiles,
|
78
98
|
positioning: false
|
@@ -87,6 +107,32 @@ pageflow.linkmapPage.ConfigurationEditorView = pageflow.ConfigurationEditorView.
|
|
87
107
|
this.view(pageflow.linkmapPage.AreasListView, {
|
88
108
|
model: this.model
|
89
109
|
});
|
110
|
+
|
111
|
+
this.input('mobile_panorama_navigation', pageflow.SelectInputView, {
|
112
|
+
values: ['free', 'pan_zoom']
|
113
|
+
});
|
114
|
+
|
115
|
+
this.input('mobile_info_box_title', pageflow.TextInputView, {
|
116
|
+
visibleBinding: 'mobile_panorama_navigation',
|
117
|
+
visible: function(navigation) {
|
118
|
+
return navigation === 'pan_zoom';
|
119
|
+
}
|
120
|
+
});
|
121
|
+
this.input('mobile_info_box_description', pageflow.TextAreaInputView, {
|
122
|
+
size: 'short',
|
123
|
+
disableLinks: true,
|
124
|
+
visibleBinding: 'mobile_panorama_navigation',
|
125
|
+
visible: function(navigation) {
|
126
|
+
return navigation === 'pan_zoom';
|
127
|
+
}
|
128
|
+
});
|
129
|
+
|
130
|
+
this.input('hide_linkmap_overlay_boxes', pageflow.CheckBoxInputView, {
|
131
|
+
visibleBinding: 'mobile_panorama_navigation',
|
132
|
+
visible: function(navigation) {
|
133
|
+
return navigation === 'pan_zoom';
|
134
|
+
}
|
135
|
+
});
|
90
136
|
});
|
91
137
|
|
92
138
|
this.tab('options', function() {
|
@@ -47,11 +47,8 @@ pageflow.linkmapPage.EditAreaView = Backbone.Marionette.Layout.extend({
|
|
47
47
|
visibleBindingValue: 'page'
|
48
48
|
});
|
49
49
|
|
50
|
-
this.
|
51
|
-
translationKeyPrefix: 'pageflow.page_transitions',
|
50
|
+
this.group('page_transitions', {
|
52
51
|
includeBlank: true,
|
53
|
-
blankTranslationKey: 'pageflow.linkmap_page.default_page_transition',
|
54
|
-
values: pageflow.pageTransitions.names(),
|
55
52
|
visibleBinding: 'target_type',
|
56
53
|
visibleBindingValue: 'page'
|
57
54
|
});
|
@@ -85,7 +82,7 @@ pageflow.linkmapPage.EditAreaView = Backbone.Marionette.Layout.extend({
|
|
85
82
|
visible: function(value) {
|
86
83
|
return value !== 'dynamic_marker';
|
87
84
|
},
|
88
|
-
disabled: !page.configuration.has('
|
85
|
+
disabled: !page.configuration.has('linkmap_color_map_file_id') ||
|
89
86
|
page.configuration.get('background_type') === 'hover_video'
|
90
87
|
});
|
91
88
|
this.input('inverted', pageflow.CheckBoxInputView, {
|
@@ -107,4 +104,4 @@ pageflow.linkmapPage.EditAreaView = Backbone.Marionette.Layout.extend({
|
|
107
104
|
goBack: function() {
|
108
105
|
pageflow.editor.navigate('/pages/' + this.options.page.id + '/areas', {trigger: true});
|
109
106
|
}
|
110
|
-
});
|
107
|
+
});
|