pageflow-internal-links 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +22 -0
  3. data/.jshintrc +22 -0
  4. data/CHANGELOG.md +7 -0
  5. data/Gemfile +10 -0
  6. data/README.md +63 -0
  7. data/Rakefile +7 -0
  8. data/app/assets/images/pageflow/internal_links_grid_pictogram.png +0 -0
  9. data/app/assets/images/pageflow/internal_links_grid_pictogram_small.png +0 -0
  10. data/app/assets/images/pageflow/internal_links_grid_sprite.png +0 -0
  11. data/app/assets/images/pageflow/internal_links_list_pictogram.png +0 -0
  12. data/app/assets/images/pageflow/internal_links_list_pictogram_small.png +0 -0
  13. data/app/assets/images/pageflow/internal_links_list_sprite.png +0 -0
  14. data/app/assets/images/pageflow/ov-internal_links_grid.png +0 -0
  15. data/app/assets/javascripts/pageflow/internal_links/editor/collections/grid_page_links_collection.js +20 -0
  16. data/app/assets/javascripts/pageflow/internal_links/editor/collections/list_page_links_collection.js +12 -0
  17. data/app/assets/javascripts/pageflow/internal_links/editor/collections/page_links_collection.js +90 -0
  18. data/app/assets/javascripts/pageflow/internal_links/editor/config.js +45 -0
  19. data/app/assets/javascripts/pageflow/internal_links/editor/controllers/side_bar_controller.js +14 -0
  20. data/app/assets/javascripts/pageflow/internal_links/editor/models/page_configuration_mixin.js +19 -0
  21. data/app/assets/javascripts/pageflow/internal_links/editor/models/page_link.js +35 -0
  22. data/app/assets/javascripts/pageflow/internal_links/editor/routers/side_bar_router.js +5 -0
  23. data/app/assets/javascripts/pageflow/internal_links/editor/templates/edit_page_link.jst.ejs +3 -0
  24. data/app/assets/javascripts/pageflow/internal_links/editor/templates/grid_item_embedded.jst.ejs +4 -0
  25. data/app/assets/javascripts/pageflow/internal_links/editor/templates/list_item_embedded.jst.ejs +7 -0
  26. data/app/assets/javascripts/pageflow/internal_links/editor/views/edit_page_link_view.js +67 -0
  27. data/app/assets/javascripts/pageflow/internal_links/editor/views/editable_links_mode_view.js +10 -0
  28. data/app/assets/javascripts/pageflow/internal_links/editor/views/grid_configuration_editor_view.js +30 -0
  29. data/app/assets/javascripts/pageflow/internal_links/editor/views/grid_item_embedded_view.js +227 -0
  30. data/app/assets/javascripts/pageflow/internal_links/editor/views/list_configuration_editor_view.js +29 -0
  31. data/app/assets/javascripts/pageflow/internal_links/editor/views/list_embedded_view.js +23 -0
  32. data/app/assets/javascripts/pageflow/internal_links/editor/views/list_item_embedded_view.js +103 -0
  33. data/app/assets/javascripts/pageflow/internal_links/editor/views/page_link_embedded_view.js +106 -0
  34. data/app/assets/javascripts/pageflow/internal_links/editor.js +11 -0
  35. data/app/assets/javascripts/pageflow/internal_links/grid_page_type.js +31 -0
  36. data/app/assets/javascripts/pageflow/internal_links/list_page_type.js +29 -0
  37. data/app/assets/javascripts/pageflow/internal_links.js +2 -0
  38. data/app/assets/stylesheets/pageflow/internal_links/editor/embedded_grid_item.css.scss +118 -0
  39. data/app/assets/stylesheets/pageflow/internal_links/editor/embedded_list_item.scss +33 -0
  40. data/app/assets/stylesheets/pageflow/internal_links/editor.css.scss +2 -0
  41. data/app/assets/stylesheets/pageflow/internal_links/grid.scss +230 -0
  42. data/app/assets/stylesheets/pageflow/internal_links/list.scss +76 -0
  43. data/app/assets/stylesheets/pageflow/internal_links.css.scss +2 -0
  44. data/app/helpers/pageflow/internal_links/grid_helper.rb +50 -0
  45. data/app/helpers/pageflow/internal_links/list_helper.rb +10 -0
  46. data/app/helpers/pageflow/internal_links/page_links.rb +79 -0
  47. data/app/views/pageflow/internal_links/grid/_grid.html.erb +7 -0
  48. data/app/views/pageflow/internal_links/grid/page.html.erb +25 -0
  49. data/app/views/pageflow/internal_links/list/_list.html.erb +6 -0
  50. data/app/views/pageflow/internal_links/list/_page_link.html.erb +14 -0
  51. data/app/views/pageflow/internal_links/list/page.html.erb +26 -0
  52. data/config/locales/de.yml +61 -0
  53. data/config/locales/en.yml +64 -0
  54. data/db/migrate/20150109121800_rename_internal_links_page_type.rb +13 -0
  55. data/lib/pageflow/internal_links/engine.rb +9 -0
  56. data/lib/pageflow/internal_links/grid_page_type.rb +19 -0
  57. data/lib/pageflow/internal_links/list_page_type.rb +19 -0
  58. data/lib/pageflow/internal_links/plugin.rb +9 -0
  59. data/lib/pageflow-internal-links.rb +17 -0
  60. data/pageflow-internal-links.gemspec +18 -0
  61. metadata +117 -0
@@ -0,0 +1,33 @@
1
+ .internal_links_list_page {
2
+ .edit {
3
+ @include icon-only-button(white);
4
+ @include pencil-icon;
5
+ position: absolute;
6
+ display: none;
7
+ z-index: 2;
8
+ top: 5px;
9
+ right: 15px;
10
+ }
11
+
12
+ nav li.editable:hover .edit {
13
+ display: block;
14
+ }
15
+
16
+ li.highlighted .page_link {
17
+ z-index: 0;
18
+ position: relative;
19
+ outline: solid 2px #000;
20
+
21
+ &:before {
22
+ content: "";
23
+ position: absolute;
24
+ top: -2px;
25
+ left: -2px;
26
+ width: 100%;
27
+ height: 100%;
28
+ border: solid 2px #fff;
29
+ @include animation(blink 3s linear infinite);
30
+ z-index: 1;
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,2 @@
1
+ @import "./editor/embedded_grid_item";
2
+ @import "./editor/embedded_list_item";
@@ -0,0 +1,230 @@
1
+ @include pageflow-page-type(internal_links_grid);
2
+
3
+ .js .page .internal_links_page .scroller > div,
4
+ .page .internal_links_page .scroller > div
5
+ {
6
+ @include pad_portrait {
7
+ padding: 15% 8% 5% 8%;
8
+ }
9
+ }
10
+
11
+ .js .page:first-child .internal_links_page .scroller > div,
12
+ .js .page:first-child .content_and_background.internal_links_page > .page_header,
13
+ .page:first-child .internal_links_page .scroller > div,
14
+ .js .page:first-child .content_and_background.internal_links_page > .page_header {
15
+ @include pad_portrait {
16
+ padding: 110px 8% 5% 8%;
17
+ }
18
+ }
19
+
20
+ .js .page .internal_links_page {
21
+ .scroller > div {
22
+ padding: 15% 14% 5% 8%;
23
+ width: 100%;
24
+ }
25
+ }
26
+
27
+ .internal_links_page {
28
+ nav {
29
+ position: relative;
30
+ max-width: 1011px;
31
+ pointer-events: all;
32
+
33
+ ul {
34
+ padding: 0;
35
+ top: 0;
36
+ left: 0;
37
+ width: 100%;
38
+ margin: 0 0 30px 0;
39
+ }
40
+
41
+ li {
42
+ display: inline-block;
43
+ list-style: none;
44
+ width: 19%;
45
+ max-width: 192px;
46
+ max-height: 108px;
47
+ padding: 0 1% 1% 0;
48
+ margin: 0 -4px -4px 0;
49
+
50
+ @include phone {
51
+ width: 48%;
52
+ max-width: 350px;
53
+ max-height: 250px;
54
+ padding: 0 2% 1% 0;
55
+ margin: 0 -3px -1px 0;
56
+ }
57
+
58
+ &.empty {
59
+ padding: 0 1% 0 0;
60
+
61
+ @include phone {
62
+ display: none;
63
+ }
64
+ }
65
+ }
66
+
67
+ .title {
68
+ display: none;
69
+ }
70
+
71
+ .title_hover {
72
+ .title {
73
+ display: block;
74
+ position: absolute;
75
+ top: 50%;
76
+ left: 0;
77
+ width: 100%;
78
+ color: white;
79
+ text-transform: uppercase;
80
+ text-align: center;
81
+ line-height: 1.2em;
82
+ letter-spacing: 0.05em;
83
+ font-size: 0.8em;
84
+ opacity: 0;
85
+ z-index: 1;
86
+ @include transform(translate3d(0,-50%,0));
87
+ @include transition(opacity 500ms);
88
+ }
89
+
90
+ &:hover {
91
+ .title {
92
+ opacity: 1;
93
+ }
94
+
95
+ .placeholder,
96
+ .thumbnail {
97
+ &:after {
98
+ opacity: 0.8;
99
+ }
100
+ }
101
+ }
102
+
103
+ .placeholder,
104
+ .thumbnail {
105
+ &:after {
106
+ opacity: 0;
107
+ background-color: black;
108
+ width: 100%;
109
+ height: 100%;
110
+ position: absolute;
111
+ top: 0;
112
+ left: 0;
113
+ content: "";
114
+ @include transition(opacity 500ms);
115
+ }
116
+ }
117
+ }
118
+
119
+ .placeholder,
120
+ .thumbnail {
121
+ display: block;
122
+ width: 100%;
123
+ padding-top: 56.25%;
124
+ background-position: center;
125
+ background-size: cover;
126
+ position: relative;
127
+
128
+ div {
129
+ position: absolute;
130
+ top: 0;
131
+ width: 100%;
132
+ height: 100%;
133
+ }
134
+ }
135
+
136
+ %hero {
137
+ max-width: 394px;
138
+ max-height: 226px;
139
+ width: 38.9%;
140
+
141
+ @include phone {
142
+ width: 98%;
143
+ max-width: 700px;
144
+ max-height: 600px;
145
+ float: none;
146
+ }
147
+
148
+ .placeholder,
149
+ .thumbnail {
150
+ padding-top: 58.5%;
151
+ }
152
+
153
+ .title {
154
+ font-size: 1em;
155
+ line-height: 1.4em;
156
+ }
157
+
158
+ &.empty {
159
+ padding-top: 22.815%;
160
+
161
+ @include phone {
162
+ padding-top: 0;
163
+ }
164
+ }
165
+ }
166
+
167
+ %hero_left {
168
+ @extend %hero;
169
+ float: left;
170
+ margin: 0;
171
+
172
+ @include phone {
173
+ float: none;
174
+ }
175
+ }
176
+
177
+ %hero_right {
178
+ @extend %hero;
179
+ float: right;
180
+ margin: 0;
181
+ padding: 0 1.3% 0 0px;
182
+
183
+ @include phone {
184
+ margin: 0;
185
+ float: none;
186
+ }
187
+ }
188
+
189
+ &[data-layout="hero_top_left"],
190
+ &[data-layout="hero_top_right"] {
191
+ li[data-reference-key="23"],
192
+ li[data-reference-key="24"],
193
+ li[data-reference-key="25"] {
194
+ display: none;
195
+ }
196
+ }
197
+
198
+ &[data-layout="hero_top_left"] {
199
+ li:first-child {
200
+ @extend %hero_left;
201
+ }
202
+ }
203
+
204
+ &[data-layout="hero_top_right"] {
205
+ li:first-child {
206
+ @extend %hero_right;
207
+ }
208
+ }
209
+ }
210
+ }
211
+
212
+ .invert .internal_links_page {
213
+ nav {
214
+ .thumbnail, .placeholder {
215
+ &:after {
216
+ background-color: white;
217
+ }
218
+ }
219
+
220
+ .title {
221
+ color: black;
222
+ }
223
+ }
224
+ }
225
+
226
+ .text_position_right .internal_links_page {
227
+ nav {
228
+ margin-left: auto;
229
+ }
230
+ }
@@ -0,0 +1,76 @@
1
+ @include pageflow-page-type(internal_links_list);
2
+
3
+ .internal_links_list_page {
4
+ nav li {
5
+ display: inline-block;
6
+ vertical-align: top;
7
+ position: relative;
8
+ margin-bottom: 10px;
9
+ pointer-events: all;
10
+ }
11
+
12
+ nav .page_link {
13
+ display: block;
14
+ width: 250px;
15
+ max-height: 400px;
16
+ height: 400px;
17
+ margin-right: 10px;
18
+
19
+ background-color: rgb(20,20,20);
20
+ background-color: rgba(20,20,20, 0.8);
21
+ color: white;
22
+ vertical-align: top;
23
+ text-align: left;
24
+ text-decoration: none;
25
+ @include transition(0.3s);
26
+
27
+ @include phone {
28
+ width: 230px;
29
+ margin-right: 0;
30
+ margin-bottom: 10px;
31
+ height: 290px;
32
+ max-height: 290px;
33
+ margin-right: 5px;
34
+ margin-left: 5px;
35
+ }
36
+ }
37
+
38
+ nav li:hover .page_link {
39
+ text-decoration: underline;
40
+ background-color: rgba(20,20,20, 1);
41
+ @include transform(scale(1.05));
42
+
43
+ @include phone {
44
+ @include transform(scale(1));
45
+ }
46
+ }
47
+
48
+ .page_thumbnail {
49
+ background-repeat: no-repeat;
50
+ background-size: cover;
51
+ width: 100%;
52
+ padding-top: 56.25%;
53
+ position: relative;
54
+ }
55
+
56
+ .file_thumbnail {
57
+ background-size: cover;
58
+ position: absolute;
59
+ top: 0;
60
+ left: 0;
61
+ bottom: 0;
62
+ right: 0;
63
+ }
64
+
65
+ .details {
66
+ margin: 20px;
67
+ text-decoration: none;
68
+ color: #fff;
69
+
70
+ p {
71
+ width: 100%;
72
+ white-space: normal;
73
+ line-height: 1.3em;
74
+ }
75
+ }
76
+ }
@@ -0,0 +1,2 @@
1
+ @import "./internal_links/grid";
2
+ @import "./internal_links/list";
@@ -0,0 +1,50 @@
1
+ module Pageflow
2
+ module InternalLinks
3
+ module GridHelper
4
+ def internal_links_grid(entry, configuration)
5
+ Grid.new(self,
6
+ InternalLinks::PageLinks.deserialize(entry, configuration),
7
+ configuration['linked_pages_layout']).render
8
+ end
9
+
10
+ class Grid < Struct.new(:template, :page_links, :layout)
11
+ def render
12
+ template.render('pageflow/internal_links/grid/grid', grid: self)
13
+ end
14
+
15
+ def item(position)
16
+ page_link = page_links_by_position[position.to_i] || PageLink.null
17
+
18
+ template.content_tag(:li,
19
+ page_link.target_page ? thumbnail_link(page_link, hero?(position)) : '',
20
+ :data => {:reference_key => position},
21
+ :class => page_link.target_page ? 'title_hover' : 'title_hover empty')
22
+ end
23
+
24
+ private
25
+
26
+ def page_links_by_position
27
+ @page_links_by_position ||= page_links.index_by(&:position)
28
+ end
29
+
30
+ def thumbnail_link(page_link, hero)
31
+ span = template.content_tag(:span, template.raw(page_link.description), :class => 'title')
32
+
33
+ template.link_to(span,
34
+ "##{page_link.target_page_id}",
35
+ :title => page_link.title,
36
+ :data => page_link.data_attributes,
37
+ :class => link_css_class(page_link.target_page, hero))
38
+ end
39
+
40
+ def link_css_class(page, hero)
41
+ ['thumbnail', template.page_thumbnail_image_class(page, hero)] * ' '
42
+ end
43
+
44
+ def hero?(position)
45
+ position == 0
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,10 @@
1
+ module Pageflow
2
+ module InternalLinks
3
+ module ListHelper
4
+ def internal_links_list(entry, configuration)
5
+ render('pageflow/internal_links/list/list',
6
+ page_links: InternalLinks::PageLinks.deserialize(entry, configuration))
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,79 @@
1
+ module Pageflow
2
+ module InternalLinks
3
+ class PageLinks < Struct.new(:entry, :configuration)
4
+ def self.deserialize(entry, configuration)
5
+ new(entry, configuration).deserialize
6
+ end
7
+
8
+ def deserialize
9
+ page_links = parse
10
+
11
+ pages_by_perma_id = entry.pages
12
+ .where(perma_id: page_links.map(&:target_page_id))
13
+ .index_by(&:perma_id)
14
+
15
+ page_links.each do |page_link|
16
+ page_link.target_page = pages_by_perma_id[page_link.target_page_id]
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ def parse
23
+ if configuration.key?('internal_links')
24
+ parse_collection(configuration['internal_links'] || [])
25
+ else
26
+ parse_legacy_hash(configuration['linked_page_ids'] || {})
27
+ end
28
+ end
29
+
30
+ def parse_collection(collection)
31
+ collection.map do |attributes|
32
+ PageLink.new(attributes['target_page_id'],
33
+ attributes['position'].to_i,
34
+ attributes['page_transition'],
35
+ attributes['description'])
36
+ end.sort_by(&:position)
37
+ end
38
+
39
+ def parse_legacy_hash(hash)
40
+ hash.map do |position, target_page_id|
41
+ PageLink.new(target_page_id, (position.to_i - 1), nil, nil)
42
+ end
43
+ end
44
+ end
45
+
46
+ class PageLink < Struct.new(:target_page_id,
47
+ :position,
48
+ :page_transition,
49
+ :optional_description)
50
+
51
+ attr_accessor :target_page
52
+
53
+ def title
54
+ target_page ? target_page.configuration['title'] : ''
55
+ end
56
+
57
+ def description
58
+ optional_description.presence || target_page_description
59
+ end
60
+
61
+ def data_attributes
62
+ {}.tap do |result|
63
+ result[:page] = target_page.perma_id if target_page
64
+ result[:page_transition] = page_transition if page_transition.present?
65
+ end
66
+ end
67
+
68
+ def self.null
69
+ new(nil, nil, nil, nil)
70
+ end
71
+
72
+ private
73
+
74
+ def target_page_description
75
+ target_page ? target_page.configuration['description'] : ''
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,7 @@
1
+ <%= content_tag :nav, data: {layout: grid.layout} do %>
2
+ <ul class="page_link_grid">
3
+ <% 0.upto(24).each do |index| %>
4
+ <%= grid.item(index) %>
5
+ <% end %>
6
+ </ul>
7
+ <% end %>
@@ -0,0 +1,25 @@
1
+ <div class="blackLayer"></div>
2
+ <div class="content_and_background internal_links_page">
3
+ <div class="backgroundArea">
4
+ <%= background_image_div(configuration, 'background_image') %>
5
+ <%= shadow_div :opacity => configuration['gradient_opacity'] %>
6
+ </div>
7
+ <div class="content scroller">
8
+ <div>
9
+ <div class="contentWrapper">
10
+ <div class="page_header">
11
+ <h2>
12
+ <span class="tagline"><%= configuration['tagline'] %></span>
13
+ <span class="title"><%= configuration['title'] %></span>
14
+ <span class="subtitle"><%= configuration['subtitle'] %></span>
15
+ </h2>
16
+ <%= background_image_tag(configuration['background_image_id'], {"class" => "print_image"}) %>
17
+ </div>
18
+ <div class="contentText">
19
+ <p><%= raw configuration['text'] %></p>
20
+ </div>
21
+ <%= internal_links_grid(@entry, configuration) %>
22
+ </div>
23
+ </div>
24
+ </div>
25
+ </div>
@@ -0,0 +1,6 @@
1
+ <nav>
2
+ <ul>
3
+ <%= render partial: 'pageflow/internal_links/list/page_link',
4
+ collection: page_links %>
5
+ </ul>
6
+ </nav>
@@ -0,0 +1,14 @@
1
+ <li>
2
+ <%= link_to("#", class: 'page_link', data: page_link.data_attributes) do %>
3
+ <%= content_tag(:div,
4
+ '',
5
+ class: ['page_thumbnail',
6
+ page_link.target_page ? page_thumbnail_image_class(page_link.target_page, false) : nil].compact * ' ') %>
7
+
8
+ <div class="details">
9
+ <p class="page_description">
10
+ <%= raw(strip_links(page_link.description)) %>
11
+ </p>
12
+ </div>
13
+ <% end %>
14
+ </li>
@@ -0,0 +1,26 @@
1
+ <div class="blackLayer"></div>
2
+ <div class="content_and_background internal_links_list_page">
3
+ <div class="backgroundArea">
4
+ <%= background_image_div(configuration, 'background_image') %>
5
+ <%= shadow_div :opacity => configuration['gradient_opacity'] %>
6
+ </div>
7
+ <div class="content scroller">
8
+ <div>
9
+ <div class="contentWrapper">
10
+ <div class="page_header">
11
+ <h2>
12
+ <span class="tagline"><%= configuration['tagline'] %></span>
13
+ <span class="title"><%= configuration['title'] %></span>
14
+ <span class="subtitle"><%= configuration['subtitle'] %></span>
15
+ </h2>
16
+ <%= background_image_tag(configuration['background_image_id'], {"class" => "print_image"}) %>
17
+ </div>
18
+ <div class="contentText">
19
+ <p><%= raw configuration['text'] %></p>
20
+ </div>
21
+
22
+ <%= internal_links_list(@entry, configuration) %>
23
+ </div>
24
+ </div>
25
+ </div>
26
+ </div>
@@ -0,0 +1,61 @@
1
+ de:
2
+ activerecord:
3
+ attributes:
4
+ pageflow/internal_links/page_link:
5
+ description: Beschreibung
6
+ label: Bezeichnung
7
+ page_transition: Seitenübergangseffekt
8
+ target_page_id: Zielseite
9
+ pageflow/page:
10
+ linked_pages_layout: Hervorgehobenes Element
11
+ values:
12
+ pageflow/page:
13
+ linked_pages_layout:
14
+ default: (Kein)
15
+ hero_top_left: Links oben
16
+ hero_top_right: Rechts oben
17
+ pageflow:
18
+ internal_links:
19
+ editor:
20
+ templates:
21
+ edit_page_link:
22
+ back: Zurück
23
+ destroy: Löschen
24
+ embedded:
25
+ grid_page_link:
26
+ edit: Bearbeiten
27
+ set: Zielseite auswählen
28
+ views:
29
+ edit_page_link_view:
30
+ confirm_destroy: Verweis wirklich löschen?
31
+ default_page_transition: (Standard)
32
+ grid:
33
+ help_entries:
34
+ page_type:
35
+ menu_item: Seitenverweise
36
+ text: ! '# Seitenverweise
37
+
38
+
39
+ Verweise auf andere Seiten innerhalb eines Pageflows
40
+
41
+ Im Gegensatz zur externen Verweis-Seite, werden hier interne Seiten innerhalb des
42
+
43
+ Pageflows verlinkt. Dies bietet sich an, um den User gezielt durch den Pageflow zu leiten.
44
+
45
+
46
+ Typische Anwendungsbeispiele: Willkommens-Seite, Kapitel-Startseite
47
+
48
+ '
49
+ page_type_category_name: Verweise
50
+ page_type_description: Sammlung von Verweisen zu anderen Seiten dieses Pageflows
51
+ page_type_name: Seitenverweise
52
+ list:
53
+ help_entries:
54
+ page_type:
55
+ menu_item: Seitenverweise
56
+ text: TODO
57
+ page_type_category_name: Verweise
58
+ page_type_description: Sammlung von Verweisen zu anderen Seiten dieses Pageflows
59
+ page_type_name: Seitenverweis-Liste
60
+ internal_links_list:
61
+ page_type_feature_name: Seitenverweis-Liste Seitentyp
@@ -0,0 +1,64 @@
1
+ en:
2
+ activerecord:
3
+ attributes:
4
+ pageflow/internal_links/page_link:
5
+ description: Description
6
+ label: Label
7
+ page_transition: Page transition
8
+ target_page_id: Target page
9
+ pageflow/page:
10
+ linked_pages_layout: Hero
11
+ values:
12
+ pageflow/page:
13
+ linked_pages_layout:
14
+ default: (none)
15
+ hero_top_left: Top left
16
+ hero_top_right: Top right
17
+ pageflow:
18
+ internal_links:
19
+ editor:
20
+ templates:
21
+ edit_page_link:
22
+ back: Back
23
+ destroy: Delete
24
+ embedded:
25
+ grid_page_link:
26
+ edit: Edit
27
+ set: Set
28
+ views:
29
+ edit_page_link_view:
30
+ confirm_destroy: Really delete this link?
31
+ default_page_transition: Default page transition
32
+ grid:
33
+ help_entries:
34
+ page_type:
35
+ menu_item: Internal Links
36
+ text: ! '# Internal Links
37
+
38
+
39
+ References to other pages inside a Pageflow
40
+
41
+
42
+ In contrast to external link, you can link to pages inside
43
+
44
+ your Pageflow. This page type helps you guide your users
45
+
46
+ through your Pageflow.
47
+
48
+
49
+ Examples of application: Welcome page, chapter homepage
50
+
51
+ '
52
+ page_type_category_name: Links
53
+ page_type_description: A grid of thumbnails linking to other pages inside the Pageflow
54
+ page_type_name: Internal Links
55
+ list:
56
+ help_entries:
57
+ page_type:
58
+ menu_item: Internal Links List
59
+ text: TODO
60
+ page_type_category_name: Links
61
+ page_type_description: TODO
62
+ page_type_name: Internal Links List
63
+ internal_links_list:
64
+ page_type_feature_name: Internal Links Page Types