pageflow-linkmap-page 0.1.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.
Files changed (81) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/.jshintignore +1 -0
  4. data/.jshintrc +23 -0
  5. data/CHANGELOG.md +8 -0
  6. data/Gemfile +18 -0
  7. data/README.md +62 -0
  8. data/Rakefile +11 -0
  9. data/app/assets/images/pageflow/linkmap_page/text_only_area_type_pictogram.png +0 -0
  10. data/app/assets/images/pageflow/linkmap_page/themes/default/pictograms/sprite.png +0 -0
  11. data/app/assets/images/pageflow/linkmap_page/themes/default/pictograms/wide.png +0 -0
  12. data/app/assets/images/pageflow/linkmap_page_pictogram.png +0 -0
  13. data/app/assets/images/pageflow/linkmap_page_pictogram_small.png +0 -0
  14. data/app/assets/javascript/pageflow/linkmap_page.js +9 -0
  15. data/app/assets/javascript/pageflow/linkmap_page/editor.js +25 -0
  16. data/app/assets/javascript/pageflow/linkmap_page/editor/collections/areas_collection.js +57 -0
  17. data/app/assets/javascript/pageflow/linkmap_page/editor/collections/page_links_collection.js +29 -0
  18. data/app/assets/javascript/pageflow/linkmap_page/editor/config.js +51 -0
  19. data/app/assets/javascript/pageflow/linkmap_page/editor/controllers/side_bar_controller.js +15 -0
  20. data/app/assets/javascript/pageflow/linkmap_page/editor/models/area.js +79 -0
  21. data/app/assets/javascript/pageflow/linkmap_page/editor/models/area_file_selection_handler.js +12 -0
  22. data/app/assets/javascript/pageflow/linkmap_page/editor/models/audio_file_area_type.js +17 -0
  23. data/app/assets/javascript/pageflow/linkmap_page/editor/models/external_link_area_type.js +19 -0
  24. data/app/assets/javascript/pageflow/linkmap_page/editor/models/new_area_file_selection_handler.js +11 -0
  25. data/app/assets/javascript/pageflow/linkmap_page/editor/models/page_configuration_mixin.js +33 -0
  26. data/app/assets/javascript/pageflow/linkmap_page/editor/models/page_link_area_type.js +29 -0
  27. data/app/assets/javascript/pageflow/linkmap_page/editor/models/text_only_area_type.js +15 -0
  28. data/app/assets/javascript/pageflow/linkmap_page/editor/routers/side_bar_router.js +5 -0
  29. data/app/assets/javascript/pageflow/linkmap_page/editor/templates/edit_area.jst.ejs +3 -0
  30. data/app/assets/javascript/pageflow/linkmap_page/editor/templates/embedded/area_item.jst.ejs +11 -0
  31. data/app/assets/javascript/pageflow/linkmap_page/editor/views/areas_list_view.js +44 -0
  32. data/app/assets/javascript/pageflow/linkmap_page/editor/views/configuration_editor_view.js +90 -0
  33. data/app/assets/javascript/pageflow/linkmap_page/editor/views/edit_area_view.js +103 -0
  34. data/app/assets/javascript/pageflow/linkmap_page/editor/views/editable_areas_mode_view.js +10 -0
  35. data/app/assets/javascript/pageflow/linkmap_page/editor/views/embedded/area_item_embedded_view.js +190 -0
  36. data/app/assets/javascript/pageflow/linkmap_page/editor/views/embedded/areas_embedded_view.js +26 -0
  37. data/app/assets/javascript/pageflow/linkmap_page/editor/views/embedded/panorama_embedded_view.js +14 -0
  38. data/app/assets/javascript/pageflow/linkmap_page/features.js +9 -0
  39. data/app/assets/javascript/pageflow/linkmap_page/page_type.js +302 -0
  40. data/app/assets/javascript/pageflow/linkmap_page/vendor/gyro.js +3 -0
  41. data/app/assets/javascript/pageflow/linkmap_page/widgets/hover_video.js +77 -0
  42. data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap.js +112 -0
  43. data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_audio_player_controls.js +132 -0
  44. data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_audio_players_controller.js +48 -0
  45. data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_lookaround.js +154 -0
  46. data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_lookaround_strategies/target_speed.js +99 -0
  47. data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_panorama.js +421 -0
  48. data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_scroll_indicators.js +17 -0
  49. data/app/assets/stylesheets/pageflow/linkmap_page.css.scss +266 -0
  50. data/app/assets/stylesheets/pageflow/linkmap_page/animations/rotate.css.scss +8 -0
  51. data/app/assets/stylesheets/pageflow/linkmap_page/audio_player_controls.scss +134 -0
  52. data/app/assets/stylesheets/pageflow/linkmap_page/editor.css.scss +122 -0
  53. data/app/assets/stylesheets/pageflow/linkmap_page/editor/areas_list.scss +15 -0
  54. data/app/assets/stylesheets/pageflow/linkmap_page/editor/file_areas.css.scss +70 -0
  55. data/app/assets/stylesheets/pageflow/linkmap_page/editor/resizable.css.scss +80 -0
  56. data/app/assets/stylesheets/pageflow/linkmap_page/themes/default.css.scss +341 -0
  57. data/app/assets/stylesheets/pageflow/linkmap_page/themes/default/scroll_indicators.scss +82 -0
  58. data/app/controllers/pageflow/external_links/sites_controller.rb +40 -0
  59. data/app/helpers/pageflow/linkmap_page/areas_helper.rb +93 -0
  60. data/app/models/pageflow/linkmap_page/site.rb +11 -0
  61. data/app/views/pageflow/linkmap_page/areas/_div.html.erb +33 -0
  62. data/app/views/pageflow/linkmap_page/page.html +51 -0
  63. data/config/locales/de.yml +119 -0
  64. data/config/locales/en.yml +119 -0
  65. data/config/locales/new/inverted.de.yml +10 -0
  66. data/config/locales/new/inverted.en.yml +10 -0
  67. data/config/locales/new/text_only_area_type.de.yml +11 -0
  68. data/config/locales/new/text_only_area_type.en.yml +11 -0
  69. data/config/routes.rb +5 -0
  70. data/config/spring.rb +1 -0
  71. data/exec/rspec +15 -0
  72. data/exec/spring +18 -0
  73. data/lib/pageflow-linkmap-page.rb +13 -0
  74. data/lib/pageflow/linkmap_page/engine.rb +17 -0
  75. data/lib/pageflow/linkmap_page/page_type.rb +19 -0
  76. data/lib/pageflow/linkmap_page/plugin.rb +9 -0
  77. data/lib/pageflow/linkmap_page/version.rb +5 -0
  78. data/pageflow-linkmap-page.gemspec +37 -0
  79. data/spec/helpers/pageflow/linkmap_page/areas_helper_spec.rb +68 -0
  80. data/spec/spec_helper.rb +15 -0
  81. metadata +265 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b493ac7493f526d49f5805c713a211ba6447de0e
4
+ data.tar.gz: 16e8273aa2955e2abec0d289a3aeb294d6ffb7c5
5
+ SHA512:
6
+ metadata.gz: a1082d4931f516b774ccf34def7f6ac4bc8dd1e3f1a8a30f1676e70646f0ad55da29379cb76ea8074ca53720e2928ce95632fe83b42d510ea72c90a1687f68fa
7
+ data.tar.gz: c42dd554b92d398453024079f6d0c826c0b1a5f77f847c7f1bab77b994da0346f6849069ffc5dd23a6562a55e20cd2e6aa92bf5be131099e9f8e28abe2501a40
@@ -0,0 +1,21 @@
1
+ *.gem
2
+ *.rbc
3
+ *.sqlite3
4
+ .bundle
5
+ .config
6
+ .yardoc
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ log
19
+ Gemfile.lock
20
+ spec/dummy
21
+ .localeapp
@@ -0,0 +1 @@
1
+ vendor/assets/javascripts/**
@@ -0,0 +1,23 @@
1
+ {
2
+ "browser": true,
3
+ "undef": true,
4
+ "immed": true,
5
+ "trailing": true,
6
+ "globals": {
7
+ "jQuery": true,
8
+ "$": true,
9
+ "Backbone": true,
10
+ "Cocktail": true,
11
+ "_": true,
12
+ "vjs": true,
13
+ "Audio5js": true,
14
+ "I18n": true,
15
+ "gyro": true,
16
+
17
+ "pageflow": true,
18
+ "editor": true,
19
+
20
+ "confirm": true,
21
+ "alert": true
22
+ }
23
+ }
@@ -0,0 +1,8 @@
1
+ # CHANGELOG
2
+
3
+ ### Version 0.1.0
4
+
5
+ 2016-06-09
6
+
7
+ - Initial release
8
+
data/Gemfile ADDED
@@ -0,0 +1,18 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in chart.gemspec
4
+ gemspec
5
+
6
+ # Rails 4 compat
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'
11
+
12
+ gem 'pageflow', path: '.bundle/linked/pageflow'
13
+ gem 'pageflow-support', path: '.bundle/linked/pageflow/spec/support'
14
+
15
+ gem 'teaspoon', git: 'https://github.com/modeset/teaspoon'
16
+
17
+ gem "spring-commands-rspec", group: :development
18
+ gem "spring-commands-teaspoon", group: :development
@@ -0,0 +1,62 @@
1
+ # Pageflow Linkmap Page
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/pageflow-linkmap-page.svg)](http://badge.fury.io/rb/pageflowlinkmap-page)
4
+
5
+ Page type to display customizable link areas to internal/external
6
+ pages and inline audio players.
7
+
8
+ ## Installation
9
+
10
+ Add this line to your application's `Gemfile`:
11
+
12
+ gem 'pageflow-linkmap-page'
13
+
14
+ Register the page type inside the configure block in `config/initializers/pageflow.rb`
15
+
16
+ Pageflow.configure do |config|
17
+ config.plugin(Pageflow::LinkmapPage.plugin)
18
+ end
19
+
20
+ Include javascripts and stylesheets:
21
+
22
+ # app/assets/javascripts/pageflow/application.js
23
+ //= require pageflow/linkmap_page
24
+
25
+ # app/assets/javascripts/pageflow/editor.js
26
+ //= require pageflow/linkmap_page/editor
27
+
28
+ # app/assets/stylesheets/pageflow/application.css.scss
29
+ @import "pageflow/linkmap_page";
30
+
31
+ # app/assets/stylesheets/pageflow/editor.css.scss
32
+ @import "pageflow/linkmap_page/editor";
33
+
34
+ Import default theme additions:
35
+
36
+ # app/assets/stylesheets/pageflow/themes/default.css.scss
37
+
38
+ @import "pageflow/linkmap_page/themes/default";
39
+
40
+ /* Display arrows left and right to indicate panorama */
41
+ @import "pageflow/linkmap_page/themes/default/scroll_indicators";
42
+
43
+ Install dependencies:
44
+
45
+ bundle install
46
+
47
+ Restart the application server and enable the corresponding page type
48
+ feature.
49
+
50
+ ## Troubleshooting
51
+
52
+ If you run into problems while installing the page type, please also refer to the
53
+ [Troubleshooting](https://github.com/codevise/pageflow/wiki/Troubleshooting) wiki
54
+ page in the [Pageflow repository](https://github.com/codevise/pageflow). If that
55
+ doesn't help, consider
56
+ [filing an issue](https://github.com/codevise/pageflow-linkmap-page/issues).
57
+
58
+ ## Contributing Locales
59
+
60
+ Edit the translations directly on the
61
+ [pageflow-internal-links](http://www.localeapp.com/projects/public?search=tf/pageflow-linkmap-page)
62
+ locale project.
@@ -0,0 +1,11 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ Bundler::GemHelper.install_tasks
8
+
9
+ require 'semmy'
10
+
11
+ Semmy::Tasks.install
@@ -0,0 +1,9 @@
1
+ //= require_self
2
+ //= require ./linkmap_page/features
3
+ //= require ./linkmap_page/page_type
4
+ //= require ./linkmap_page/vendor/gyro
5
+ //= require_tree ./linkmap_page/widgets
6
+
7
+ pageflow.linkmapPage = pageflow.linkmapPage || {};
8
+
9
+ pageflow.linkmapPage.toggleMarkerOptions = ['no_marker', 'dynamic_marker'];
@@ -0,0 +1,25 @@
1
+ //= require_self
2
+
3
+ //= require_tree ./editor/models
4
+ //= require_tree ./editor/collections
5
+ //= require_tree ./editor/routers
6
+ //= require_tree ./editor/controllers
7
+ //= require_tree ./editor/templates
8
+ //= require_tree ./editor/views
9
+
10
+ //= require ./editor/config
11
+
12
+ pageflow.linkmapPage = pageflow.linkmapPage || {};
13
+
14
+ pageflow.linkmapPage.areaTypesFor = function(pageConfiguration) {
15
+ return new Backbone.Collection(_([
16
+ pageflow.linkmapPage.PageLinkAreaType,
17
+ pageflow.linkmapPage.AudioFileAreaType,
18
+ pageflow.linkmapPage.ExternalLinkAreaType,
19
+ pageflow.linkmapPage.TextOnlyAreaType
20
+ ]).map(function(constructor) {
21
+ return new constructor({}, {
22
+ pageConfiguration: pageConfiguration
23
+ });
24
+ }));
25
+ };
@@ -0,0 +1,57 @@
1
+ pageflow.linkmapPage.AreasCollection = Backbone.Collection.extend({
2
+ model: pageflow.linkmapPage.Area,
3
+
4
+ initialize: function(models, options) {
5
+ this.page = options.page;
6
+ this.defaultPosition = {
7
+ left: 10,
8
+ top: 10
9
+ };
10
+ },
11
+
12
+ /**
13
+ * @param [Object, Function] value
14
+ */
15
+ setDefaultPosition: function(value) {
16
+ this.defaultPosition = value;
17
+ },
18
+
19
+ canAddLink: function() {
20
+ return true;
21
+ },
22
+
23
+ addLink: function(targetPageId) {
24
+ this.addWithPosition({
25
+ target_type: 'page',
26
+ target_id: targetPageId
27
+ });
28
+ },
29
+
30
+ addAudioFile: function(audioFileId) {
31
+ this.addWithPosition({
32
+ target_type: 'audio_file',
33
+ target_id: audioFileId
34
+ });
35
+ },
36
+
37
+ addExternalSite: function(siteId) {
38
+ this.addWithPosition({
39
+ target_type: 'external_site',
40
+ target_id: siteId
41
+ });
42
+ },
43
+
44
+ addTextOnly: function() {
45
+ this.addWithPosition({
46
+ target_type: 'text_only'
47
+ });
48
+ },
49
+
50
+ addWithPosition: function(attributes) {
51
+ this.add(_.extend(
52
+ {width: 7, height: 7},
53
+ _.result(this, 'defaultPosition'),
54
+ attributes
55
+ ));
56
+ }
57
+ });
@@ -0,0 +1,29 @@
1
+ pageflow.linkmapPage.PageLinksCollection = pageflow.SubsetCollection.extend({
2
+ constructor: function(options) {
3
+ this.areas = options.areas;
4
+
5
+ pageflow.SubsetCollection.prototype.constructor.call(this, {
6
+ parent: options.areas,
7
+
8
+ filter: function(area) {
9
+ return area.get('target_type') === 'page';
10
+ }
11
+ });
12
+ },
13
+
14
+ canAddLink: function() {
15
+ return this.areas.canAddLink();
16
+ },
17
+
18
+ addLink: function(targetPageId) {
19
+ this.areas.addLink(targetPageId);
20
+ },
21
+
22
+ updateLink: function(link, targetPageId) {
23
+ link.set({target_id: targetPageId});
24
+ },
25
+
26
+ removeLink: function(link) {
27
+ this.remove(link);
28
+ },
29
+ });
@@ -0,0 +1,51 @@
1
+ pageflow.editor.pageTypes.register('linkmap_page', {
2
+ configurationEditorView: pageflow.linkmapPage.ConfigurationEditorView,
3
+
4
+ embeddedViews: {
5
+ '.scroller': {
6
+ view: pageflow.linkmapPage.PanoramaEmbeddedView,
7
+ options: {
8
+ disableMarginScrollingPropertyName: 'areas_editable'
9
+ }
10
+ },
11
+
12
+ '.panorama_image': {
13
+ view: pageflow.BackgroundImageEmbeddedView,
14
+ options: {
15
+ propertyName: 'panorama_image_id',
16
+ dataSizeAttributes : true
17
+ }
18
+ },
19
+
20
+ '.panorama_video': {
21
+ view: pageflow.LazyVideoEmbeddedView,
22
+ options: {
23
+ propertyName: 'panorama_video_id',
24
+ dataSizeAttributes: true
25
+ }
26
+ },
27
+
28
+ '.linkmap_areas': {
29
+ view: pageflow.linkmapPage.AreasEmbeddedView
30
+ },
31
+
32
+ '.fixed_background': {
33
+ view: pageflow.BackgroundImageEmbeddedView,
34
+ options: {propertyName: 'fixed_background_image_id'}
35
+ }
36
+ },
37
+
38
+ pageLinks: function(configuration) {
39
+ return configuration.linkmapPageLinks();
40
+ }
41
+ });
42
+
43
+ pageflow.editor.registerPageConfigurationMixin(pageflow.linkmapPage.pageConfigurationMixin);
44
+
45
+ pageflow.editor.registerFileSelectionHandler('linkmapPage.area', pageflow.linkmapPage.AreaFileSelectionHandler);
46
+ pageflow.editor.registerFileSelectionHandler('linkmapPage.newArea', pageflow.linkmapPage.NewAreaFileSelectionHandler);
47
+
48
+ pageflow.editor.registerSideBarRouting({
49
+ router: pageflow.linkmapPage.SideBarRouter,
50
+ controller: pageflow.linkmapPage.SideBarController
51
+ });
@@ -0,0 +1,15 @@
1
+ pageflow.linkmapPage.SideBarController = Backbone.Marionette.Controller.extend({
2
+ initialize: function(options) {
3
+ this.region = options.region;
4
+ },
5
+
6
+ area: function(pageId, areaIndex) {
7
+ var page = pageflow.pages.get(pageId);
8
+
9
+ this.region.show(new pageflow.linkmapPage.EditAreaView({
10
+ model: page.configuration.linkmapAreas().at(parseInt(areaIndex, 10)),
11
+ page: page,
12
+ areaIndex: areaIndex
13
+ }));
14
+ }
15
+ });
@@ -0,0 +1,79 @@
1
+ pageflow.linkmapPage.Area = Backbone.Model.extend({
2
+ modelName: 'area',
3
+ i18nKey: 'pageflow/linkmap_page/area',
4
+
5
+ mixins: [pageflow.transientReferences],
6
+
7
+ target: function() {
8
+ // This should eventually be replaces with some sort of
9
+ // polymorphic lookup for referenceable objects i.e.
10
+ //
11
+ // pageflow.xxx.getPolymorphic(this.get('target_type'), this.get('target_id'));
12
+ //
13
+ if (this.get('target_type') === 'audio_file') {
14
+ return pageflow.audioFiles.get(this.get('target_id'));
15
+ }
16
+ else if (this.get('target_type') === 'page') {
17
+ return pageflow.pages.getByPermaId(this.get('target_id'));
18
+ }
19
+ else if (this.get('target_type') === 'external_site') {
20
+ return pageflow.externalLinks.sites.getByPermaId(this.get('target_id'));
21
+ }
22
+ },
23
+
24
+ targetPage: function() {
25
+ return this.get('target_type') === 'page' ? this.target() : null;
26
+ },
27
+
28
+ title: function() {
29
+ var target = this.target();
30
+ return target ? target.title() : null;
31
+ },
32
+
33
+ thumbnailFile: function() {
34
+ if (this.get('target_type') === 'text_only') {
35
+ return this.textOnlyAreaPlaceholderFile();
36
+ }
37
+
38
+ var target = this.target();
39
+ return target ? target.thumbnailFile() : null;
40
+ },
41
+
42
+ textOnlyAreaPlaceholderFile: function() {
43
+ if (!pageflow.linkmapPage.Area.textOnlyAreaPlaceholderFile) {
44
+ var file = new pageflow.AudioFile({
45
+ state: 'encoded'
46
+ });
47
+
48
+ file.thumbnailPictogram = 'text_only';
49
+ pageflow.linkmapPage.Area.textOnlyAreaPlaceholderFile = file;
50
+ }
51
+
52
+ return pageflow.linkmapPage.Area.textOnlyAreaPlaceholderFile;
53
+ },
54
+
55
+ label: function() {
56
+ return this.get('name');
57
+ },
58
+
59
+ highlight: function() {
60
+ this.set('highlighted', true);
61
+ },
62
+
63
+ resetHighlight: function() {
64
+ this.unset('highlighted');
65
+ },
66
+
67
+ editPath: function() {
68
+ var areaIndex = this.collection.indexOf(this);
69
+ return '/linkmap_pages/' + this.getRoutableId() + '/areas/' + areaIndex;
70
+ },
71
+
72
+ getRoutableId: function() {
73
+ return this.collection.page.id;
74
+ },
75
+
76
+ remove: function() {
77
+ this.collection.remove(this);
78
+ }
79
+ });