ckpages 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +37 -0
  5. data/app/assets/javascripts/ckpages/application.coffee +9 -0
  6. data/app/assets/javascripts/ckpages/ckeditor_basepath.js +1 -0
  7. data/app/assets/javascripts/ckpages/ckeditor_init.js.erb +1 -0
  8. data/app/assets/javascripts/ckpages/ckeditor_replace.js.erb +16 -0
  9. data/app/assets/javascripts/ckpages/pages.js.coffee +39 -0
  10. data/app/assets/javascripts/ckpages/plugin_uploads.js.coffee +5 -0
  11. data/app/assets/stylesheets/ckpages/application.scss +34 -0
  12. data/app/controllers/ckpages/application_controller.rb +4 -0
  13. data/app/controllers/ckpages/ascendant404_controller.rb +13 -0
  14. data/app/controllers/ckpages/ascendant_controller.rb +19 -0
  15. data/app/controllers/ckpages/pages_controller.rb +66 -0
  16. data/app/controllers/ckpages/parts_controller.rb +63 -0
  17. data/app/controllers/ckpages/plugin_uploads_controller.rb +24 -0
  18. data/app/controllers/ckpages/uploads_controller.rb +41 -0
  19. data/app/helpers/ckpages/application_helper.rb +27 -0
  20. data/app/models/ckpages/page.rb +17 -0
  21. data/app/models/ckpages/part.rb +4 -0
  22. data/app/models/ckpages/upload.rb +5 -0
  23. data/app/uploaders/ckpages/application_uploader.rb +51 -0
  24. data/app/views/application/_ckpart.html.erb +1 -0
  25. data/app/views/ckpages/pages/_form.html.erb +35 -0
  26. data/app/views/ckpages/pages/edit.html.erb +5 -0
  27. data/app/views/ckpages/pages/index.html.erb +52 -0
  28. data/app/views/ckpages/pages/new.html.erb +5 -0
  29. data/app/views/ckpages/pages/show.html.erb +96 -0
  30. data/app/views/ckpages/parts/_form.html.erb +14 -0
  31. data/app/views/ckpages/parts/edit.html.erb +6 -0
  32. data/app/views/ckpages/parts/index.html.erb +44 -0
  33. data/app/views/ckpages/parts/new.html.erb +6 -0
  34. data/app/views/ckpages/parts/show.html.erb +21 -0
  35. data/app/views/ckpages/plugin_uploads/index.html.erb +23 -0
  36. data/app/views/ckpages/public/show.html.erb +19 -0
  37. data/app/views/ckpages/public404/show.html.erb +19 -0
  38. data/app/views/ckpages/uploads/index.html.erb +35 -0
  39. data/app/views/ckpages/uploads/show.html.erb +13 -0
  40. data/app/views/layouts/ckpages/application.html.erb +24 -0
  41. data/config/initializers/carrierwave.rb +1 -0
  42. data/config/initializers/simple_form.rb +166 -0
  43. data/config/initializers/simple_form_bootstrap.rb +136 -0
  44. data/config/locales/ru.yml +42 -0
  45. data/config/locales/simple_form.en.yml +31 -0
  46. data/config/routes.rb +29 -0
  47. data/db/migrate/20150424201308_create_ckpages_pages.rb +15 -0
  48. data/db/migrate/20150425115824_create_ckpages_uploads.rb +9 -0
  49. data/db/migrate/20150425152740_add_breadcrumb_to_ckpages_pages.rb +14 -0
  50. data/db/migrate/20150511111424_create_ckpages_parts.rb +10 -0
  51. data/db/migrate/20150819230152_add_columns_to_ckpages_uploads.rb +7 -0
  52. data/lib/ckpages.rb +12 -0
  53. data/lib/ckpages/engine.rb +8 -0
  54. data/lib/ckpages/version.rb +3 -0
  55. data/lib/tasks/ckpages_tasks.rake +4 -0
  56. data/lib/templates/erb/scaffold/_form.html.erb +13 -0
  57. data/test/dummy/README.rdoc +28 -0
  58. data/test/dummy/Rakefile +6 -0
  59. data/test/dummy/app/assets/javascripts/application.js +13 -0
  60. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  61. data/test/dummy/app/controllers/application_controller.rb +5 -0
  62. data/test/dummy/app/controllers/ckpages/public404_controller.rb +3 -0
  63. data/test/dummy/app/controllers/ckpages/public_controller.rb +2 -0
  64. data/test/dummy/app/helpers/application_helper.rb +2 -0
  65. data/test/dummy/app/views/ckpages/public/show.html.erb +1 -0
  66. data/test/dummy/app/views/layouts/application.html.erb +35 -0
  67. data/test/dummy/bin/bundle +3 -0
  68. data/test/dummy/bin/rails +4 -0
  69. data/test/dummy/bin/rake +4 -0
  70. data/test/dummy/bin/setup +29 -0
  71. data/test/dummy/config.ru +4 -0
  72. data/test/dummy/config/application.rb +26 -0
  73. data/test/dummy/config/boot.rb +5 -0
  74. data/test/dummy/config/database.yml +25 -0
  75. data/test/dummy/config/environment.rb +5 -0
  76. data/test/dummy/config/environments/development.rb +41 -0
  77. data/test/dummy/config/environments/production.rb +79 -0
  78. data/test/dummy/config/environments/test.rb +42 -0
  79. data/test/dummy/config/initializers/assets.rb +11 -0
  80. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  81. data/test/dummy/config/initializers/ckpages.rb +1 -0
  82. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  83. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  84. data/test/dummy/config/initializers/inflections.rb +16 -0
  85. data/test/dummy/config/initializers/mime_types.rb +4 -0
  86. data/test/dummy/config/initializers/session_store.rb +3 -0
  87. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  88. data/test/dummy/config/locales/en.yml +23 -0
  89. data/test/dummy/config/locales/ru.yml +257 -0
  90. data/test/dummy/config/routes.rb +3 -0
  91. data/test/dummy/config/secrets.yml +22 -0
  92. data/test/dummy/db/schema.rb +61 -0
  93. data/test/dummy/public/404.html +67 -0
  94. data/test/dummy/public/422.html +67 -0
  95. data/test/dummy/public/500.html +66 -0
  96. data/test/dummy/public/assets/application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.js +0 -0
  97. data/test/dummy/public/assets/application-e80e8f2318043e8af94dddc2adad5a4f09739a8ebb323b3ab31cd71d45fd9113.css +16 -0
  98. data/test/dummy/public/assets/bootstrap/glyphicons-halflings-regular-13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407.eot +0 -0
  99. data/test/dummy/public/assets/bootstrap/glyphicons-halflings-regular-42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5.svg +288 -0
  100. data/test/dummy/public/assets/bootstrap/glyphicons-halflings-regular-a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742.woff +0 -0
  101. data/test/dummy/public/assets/bootstrap/glyphicons-halflings-regular-e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456.ttf +0 -0
  102. data/test/dummy/public/assets/bootstrap/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff2 +0 -0
  103. data/test/dummy/public/assets/ckpages/application-7743f5f42fc250d6d26375695a35e216ffb9f55bc3b9136f2ab0397aed2e91aa.css +5659 -0
  104. data/test/dummy/public/assets/ckpages/application-7a1ae892892ee8f88dc20d562ed46adc99be442a63038ba9be56d42c27dea964.js +121 -0
  105. data/test/dummy/public/favicon.ico +0 -0
  106. data/test/fixtures/ckpages/pages.yml +21 -0
  107. data/test/integration/ckpages/public_test.rb +37 -0
  108. data/test/models/ckpages/page_test.rb +34 -0
  109. data/test/models/ckpages/upload_test.rb +9 -0
  110. data/test/test_helper.rb +20 -0
  111. metadata +334 -0
@@ -0,0 +1,17 @@
1
+ module Ckpages
2
+ class Page < ActiveRecord::Base
3
+ before_validation :normalize
4
+ validates :path, uniqueness: {case_sensitive: false}
5
+ validates :redirect_url, format: { with: /\A\/|http:\/\/|https:\/\// }, allow_nil: true, allow_blank: true
6
+
7
+ def normalize
8
+ self.path = self.path.gsub(/\A\/+/, '')
9
+ self.path = self.path.gsub(/\/+\z/, '')
10
+ self.path = self.path.gsub(/\A\s+/, '')
11
+ self.path = self.path.gsub(/\s+\z/, '')
12
+ self.path = '/' + self.path
13
+
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,4 @@
1
+ module Ckpages
2
+ class Part < ActiveRecord::Base
3
+ end
4
+ end
@@ -0,0 +1,5 @@
1
+ module Ckpages
2
+ class Upload < ActiveRecord::Base
3
+ mount_uploader :file, Ckpages::ApplicationUploader
4
+ end
5
+ end
@@ -0,0 +1,51 @@
1
+ module Ckpages
2
+ class ApplicationUploader < ::CarrierWave::Uploader::Base
3
+
4
+ # Include RMagick or MiniMagick support:
5
+ # include CarrierWave::RMagick
6
+ # include CarrierWave::MiniMagick
7
+
8
+ # Choose what kind of storage to use for this uploader:
9
+ storage :file
10
+ # storage :fog
11
+
12
+ # Override the directory where uploaded files will be stored.
13
+ # This is a sensible default for uploaders that are meant to be mounted:
14
+ def store_dir
15
+ "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
16
+ end
17
+
18
+ # Provide a default URL as a default if there hasn't been a file uploaded:
19
+ # def default_url
20
+ # # For Rails 3.1+ asset pipeline compatibility:
21
+ # # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
22
+ #
23
+ # "/images/fallback/" + [version_name, "default.png"].compact.join('_')
24
+ # end
25
+
26
+ # Process files as they are uploaded:
27
+ # process :scale => [200, 300]
28
+ #
29
+ # def scale(width, height)
30
+ # # do something
31
+ # end
32
+
33
+ # Create different versions of your uploaded files:
34
+ # version :thumb do
35
+ # process :resize_to_fit => [50, 50]
36
+ # end
37
+
38
+ # Add a white list of extensions which are allowed to be uploaded.
39
+ # For images you might use something like this:
40
+ # def extension_white_list
41
+ # %w(jpg jpeg gif png)
42
+ # end
43
+
44
+ # Override the filename of the uploaded files:
45
+ # Avoid using model.id or version_name here, see uploader/store.rb for details.
46
+ # def filename
47
+ # "something.jpg" if original_filename
48
+ # end
49
+
50
+ end
51
+ end
@@ -0,0 +1 @@
1
+ <%== @part.text %>
@@ -0,0 +1,35 @@
1
+ <%= simple_form_for(@page) do |f| %>
2
+
3
+ <%= f.error_notification %>
4
+
5
+ <%= f.input :title, as: :string %>
6
+ <%= f.input :path, as: :string %>
7
+ <%= f.input :redirect_url, as: :string %>
8
+ <%= f.input :keywords, as: :string %>
9
+ <%= f.input :description, as: :string %>
10
+ <%= f.input :robots, as: :string %>
11
+
12
+ <%= f.input :title1, as: :string %>
13
+ <%= f.input :url1, as: :string %>
14
+
15
+ <%= f.input :title2, as: :string %>
16
+ <%= f.input :url2, as: :string %>
17
+
18
+ <%= f.input :title3, as: :string %>
19
+ <%= f.input :url3, as: :string %>
20
+
21
+ <%= f.input :title4, as: :string %>
22
+ <%= f.input :url4, as: :string %>
23
+
24
+ <%= f.input :title5, as: :string %>
25
+ <%= f.input :url5, as: :string %>
26
+
27
+ <%= f.input :content %>
28
+
29
+ <%= f.button :submit, class: 'btn btn-warning btn-lg' %>
30
+ <%= link_to 'Просмотр', @page.path, class: 'btn btn-primary btn-lg', data: { confirm: 'Не сохраненные данные будут утеряны. Действительно перейти?' } if @page.persisted? %>
31
+ <%= link_to 'Служебный просмотр', @page, class: 'btn btn-primary btn-lg', data: { confirm: 'Не сохраненные данные будут утеряны. Действительно перейти?' } if @page.persisted? %>
32
+ <%= link_to 'К списку страниц', pages_path, class: 'btn btn-default btn-lg', data: { confirm: 'Не сохраненные данные будут утеряны. Действительно перейти?' } %>
33
+ <%= link_to 'Удалить', @page, method: :delete, data: { confirm: 'Действительно хотите удалить страницу?' }, class: 'btn btn-danger btn-lg' %>
34
+
35
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <div class="page-header">
2
+ <h1>Редактирование страницы</h1>
3
+ </div>
4
+
5
+ <%= render 'form' %>
@@ -0,0 +1,52 @@
1
+ <div class="page-header">
2
+ <h1>Список страниц</h1>
3
+ </div>
4
+
5
+ <div class="alert alert-info" role="alert"><%= notice %></div>
6
+
7
+ <%= paginate @pages %>
8
+
9
+ <div style="margin-top:20px"></div>
10
+
11
+ <div class="row">
12
+ <div class="col-md-9">
13
+ <% @pages.each do |page| %>
14
+ <div class="well">
15
+ <div>
16
+ <dl class="dl-horizontal">
17
+ <%= dt_dd(page, "id") %>
18
+ <%= dt_dd(page, "path") %>
19
+ <%= dt_dd(page, "title") %>
20
+ <%= dt_dd(page, "redirect_url") %>
21
+ <%= dt_dd(page, "content", lambda{|val| excerpt(val, '', radius: 100)}) %>
22
+ <% 1.upto(5) do |n| %>
23
+ <%= dt_dd(page, "title#{n}") %>
24
+ <%= dt_dd(page, "url#{n}") %>
25
+ <% end %>
26
+ <%= dt_dd(page, "robots") %>
27
+ <%= dt_dd(page, "keywords") %>
28
+ <%= dt_dd(page, "description") %>
29
+ <%= dt_dd(page, "created_at", lambda{|val| l(val)}) %>
30
+ <%= dt_dd(page, "updated_at", lambda{|val| l(val)}) %>
31
+ </dl>
32
+ <div class="text-center">
33
+ <%= link_to 'Просмотр', page.path, class: 'btn btn-primary' %>&nbsp;&nbsp;
34
+ <%= link_to 'Служебный просмотр', page, class: 'btn btn-primary' %>&nbsp;&nbsp;
35
+ <%= link_to 'Редактировать', edit_page_path(page), class: 'btn btn-primary' %>&nbsp;&nbsp;
36
+ <%= link_to 'Удалить', page, method: :delete, data: { confirm: 'Действительно хотите удалить страницу?' }, class: 'btn btn-danger' %>
37
+ </div>
38
+ </div>
39
+ </div>
40
+ <% end %>
41
+ <%= paginate @pages %>
42
+ </div>
43
+ <div class="col-md-3">
44
+ <div class="well">
45
+ Тут будут фильтры
46
+ </div>
47
+ </div>
48
+ </div>
49
+
50
+ <br>
51
+
52
+ <%= link_to 'Новая страница', new_page_path, class: 'btn btn-primary btn-lg' %>
@@ -0,0 +1,5 @@
1
+ <div class="page-header">
2
+ <h1>Новая страница</h1>
3
+ </div>
4
+
5
+ <%= render 'form' %>
@@ -0,0 +1,96 @@
1
+ <div class="page-header">
2
+ <h1>Служебный просмотр</h1>
3
+ </div>
4
+
5
+
6
+ <div class="alert alert-info" role="alert"><%= notice %></div>
7
+
8
+ <p>
9
+ <strong>Path:</strong>
10
+ <%= @page.path %>
11
+ </p>
12
+
13
+ <p>
14
+ <strong>Content:</strong>
15
+ <%= @page.content %>
16
+ </p>
17
+
18
+ <p>
19
+ <strong>Keywords:</strong>
20
+ <%= @page.keywords %>
21
+ </p>
22
+
23
+ <p>
24
+ <strong>Description:</strong>
25
+ <%= @page.description %>
26
+ </p>
27
+
28
+ <p>
29
+ <strong>Title:</strong>
30
+ <%= @page.title %>
31
+ </p>
32
+
33
+ <p>
34
+ <strong>Robots:</strong>
35
+ <%= @page.robots %>
36
+ </p>
37
+
38
+ <p>
39
+ <strong>Redirect url:</strong>
40
+ <%= @page.redirect_url %>
41
+ </p>
42
+
43
+ <p>
44
+ <strong>Title1:</strong>
45
+ <%= @page.title1 %>
46
+ </p>
47
+
48
+ <p>
49
+ <strong>Url1:</strong>
50
+ <%= @page.url1 %>
51
+ </p>
52
+
53
+ <p>
54
+ <strong>Title2:</strong>
55
+ <%= @page.title2 %>
56
+ </p>
57
+
58
+ <p>
59
+ <strong>Url2:</strong>
60
+ <%= @page.url2 %>
61
+ </p>
62
+
63
+ <p>
64
+ <strong>Title3:</strong>
65
+ <%= @page.title3 %>
66
+ </p>
67
+
68
+ <p>
69
+ <strong>Url3:</strong>
70
+ <%= @page.url3 %>
71
+ </p>
72
+
73
+ <p>
74
+ <strong>Title4:</strong>
75
+ <%= @page.title4 %>
76
+ </p>
77
+
78
+ <p>
79
+ <strong>Url4:</strong>
80
+ <%= @page.url4 %>
81
+ </p>
82
+
83
+ <p>
84
+ <strong>Title5:</strong>
85
+ <%= @page.title5 %>
86
+ </p>
87
+
88
+ <p>
89
+ <strong>Url5:</strong>
90
+ <%= @page.url5 %>
91
+ </p>
92
+
93
+ <%= link_to 'Просмотр', @page.path, class: 'btn btn-primary btn-lg' %>
94
+ <%= link_to 'Редактировать', edit_page_path(@page), class: 'btn btn-primary btn-lg' %>
95
+ <%= link_to 'К списку страниц', pages_path, class: 'btn btn-default btn-lg' %>
96
+ <%= link_to 'Удалить', @page, method: :delete, data: { confirm: 'Действительно хотите удалить страницу?' }, class: 'btn btn-danger btn-lg' %>
@@ -0,0 +1,14 @@
1
+ <%= simple_form_for(@part) do |f| %>
2
+
3
+ <%= f.error_notification %>
4
+
5
+ <%= f.input :title %>
6
+ <%= f.input :text, input_html: { rows: 10 } %>
7
+
8
+ <%= f.button :submit, class: 'btn btn-warning btn-lg' %>
9
+ <%= link_to 'Служебный просмотр', @part, class: 'btn btn-primary btn-lg', data: { confirm: 'Не сохраненные данные будут утеряны. Действительно перейти?' } if @part.persisted? %>
10
+ <%= link_to 'К списку страниц', parts_path, class: 'btn btn-default btn-lg', data: { confirm: 'Не сохраненные данные будут утеряны. Действительно перейти?' } %>
11
+ <%= link_to 'Удалить', @part, method: :delete, data: { confirm: 'Действительно хотите удалить страницу?' }, class: 'btn btn-danger btn-lg' %>
12
+
13
+ <% end %>
14
+
@@ -0,0 +1,6 @@
1
+ <div class="page-header">
2
+ <h1>Редактирование части</h1>
3
+ </div>
4
+
5
+ <%= render 'form' %>
6
+
@@ -0,0 +1,44 @@
1
+ <div class="page-header">
2
+ <h1>Список частей</h1>
3
+ </div>
4
+
5
+ <div class="alert alert-info" role="alert"><%= notice %></div>
6
+
7
+ <%= paginate @parts %>
8
+
9
+ <div style="margin-top:20px"></div>
10
+
11
+ <div class="row">
12
+ <div class="col-md-9">
13
+ <% @parts.each do |part| %>
14
+ <div class="well">
15
+ <div>
16
+ <dl class="dl-horizontal">
17
+ <%= dt_dd(part, "id") %>
18
+ <%= dt_dd(part, "title") %>
19
+ <%= dt_dd(part, "text") %>
20
+ <%= dt_dd(part, "created_at", lambda{|val| l(val)}) %>
21
+ <%= dt_dd(part, "updated_at", lambda{|val| l(val)}) %>
22
+ </dl>
23
+ <div class="text-center">
24
+ <%= link_to 'Служебный просмотр', part, class: 'btn btn-primary' %>&nbsp;&nbsp;
25
+ <%= link_to 'Редактировать', edit_part_path(part), class: 'btn btn-primary' %>&nbsp;&nbsp;
26
+ <%= link_to 'Удалить', part, method: :delete, data: { confirm: 'Действительно хотите удалить страницу?' }, class: 'btn btn-danger' %>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ <% end %>
31
+ <%= paginate @parts %>
32
+ </div>
33
+ <div class="col-md-3">
34
+ <div class="well">
35
+ Тут будут фильтры
36
+ </div>
37
+ </div>
38
+ </div>
39
+
40
+ <br>
41
+
42
+ <%= link_to 'Новая часть', new_part_path, class: 'btn btn-primary btn-lg' %>
43
+
44
+ <%= paginate @parts %>
@@ -0,0 +1,6 @@
1
+ <div class="page-header">
2
+ <h1>Новая часть</h1>
3
+ </div>
4
+
5
+ <%= render 'form' %>
6
+
@@ -0,0 +1,21 @@
1
+ <div class="page-header">
2
+ <h1>Служебный просмотр</h1>
3
+ </div>
4
+
5
+
6
+ <div class="alert alert-info" role="alert"><%= notice %></div>
7
+
8
+ <p>
9
+ <strong>Title:</strong>
10
+ <%= @part.title %>
11
+ </p>
12
+
13
+ <p>
14
+ <strong>Text:</strong>
15
+ <%== @part.text %>
16
+ </p>
17
+
18
+ <%= link_to 'Редактировать', edit_part_path(@part), class: 'btn btn-primary btn-lg' %>
19
+ <%= link_to 'К списку частей', parts_path, class: 'btn btn-default btn-lg' %>
20
+ <%= link_to 'Удалить', @part, method: :delete, data: { confirm: 'Действительно хотите удалить страницу?' }, class: 'btn btn-danger btn-lg' %>
21
+
@@ -0,0 +1,23 @@
1
+ <div style="margin-top: 20px">
2
+ <% if @plugin_upload.persisted? %>
3
+ <a id="insert_files_into_ckeditor" class="btn btn-primary" style="margin-bottom: 20px">Вставить</a>
4
+
5
+ <% if @plugin_upload.file.content_type.starts_with? 'image' %>
6
+ <div id="file" class="img-responsive">
7
+ <%= image_tag @plugin_upload.file.url %>
8
+ </div>
9
+ <% else %>
10
+ <div id="file">
11
+ <%= link_to @plugin_upload.file.filename, @plugin_upload.file.url %>
12
+ </div>
13
+ <% end %>
14
+
15
+ <div id="ckeditor-name" class="hide"><%= params['CKEditor'] %></div>
16
+ <% else %>
17
+ <%= simple_form_for(@plugin_upload, url: main_app.plugin_uploads_path(@plugin_upload, 'CKEditor' => params['CKEditor'])) do |f| %>
18
+ <%= f.input :file, label: 'Выберите файл' %>
19
+ <%= f.input :remote_file_url, label: 'Или укажите ссылку на файл' %>
20
+ <%= f.button :submit, 'Загрузить', class: 'btn btn-primary' %>
21
+ <% end %>
22
+ <% end %>
23
+ </div>
@@ -0,0 +1,19 @@
1
+ <br>
2
+
3
+ <pre>
4
+ Create app/views/ckpages/public/show.html.erb in your application.
5
+ </pre>
6
+
7
+ <hr>
8
+
9
+ <h4> Content of @page </h4>
10
+
11
+ <%= debug @page %>
12
+
13
+ <hr>
14
+
15
+ <pre>
16
+ link_to 'edit page', edit_page_path(@page)
17
+ </pre>
18
+
19
+ <%= link_to 'edit page', edit_page_path(@page) %>
@@ -0,0 +1,19 @@
1
+ <br>
2
+
3
+ <pre>
4
+ Create app/views/ckpages/public404/show.html.erb in your application.
5
+ </pre>
6
+
7
+ <hr>
8
+
9
+ <h4> Content of params </h4>
10
+
11
+ <%= debug params %>
12
+
13
+ <hr>
14
+
15
+ <pre>
16
+ link_to 'new page', ckpages.new_page_path(path: "/#{params[:path]}")
17
+ </pre>
18
+
19
+ <%= link_to 'new page', new_page_path(path: "/#{params[:path]}") %>