biovision-post 0.2.180325 → 0.21.190513.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (236) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +79 -13
  3. data/app/assets/images/biovision/post/icons/time.svg +6 -0
  4. data/app/assets/images/biovision/post/publisher_logo.png +0 -0
  5. data/app/assets/javascripts/biovision/post/biovision-posts.js +258 -0
  6. data/app/assets/stylesheets/biovision/post/admin/posts.scss +93 -0
  7. data/app/assets/stylesheets/biovision/post/posts.scss +88 -37
  8. data/app/controllers/admin/editorial_members_controller.rb +43 -0
  9. data/app/controllers/admin/featured_posts_controller.rb +23 -0
  10. data/app/controllers/admin/post_group_categories_controller.rb +19 -0
  11. data/app/controllers/admin/post_group_tags_controller.rb +19 -0
  12. data/app/controllers/admin/post_groups_controller.rb +62 -0
  13. data/app/controllers/admin/post_illustrations_controller.rb +26 -0
  14. data/app/controllers/admin/post_images_controller.rb +33 -0
  15. data/app/controllers/admin/post_links_controller.rb +19 -0
  16. data/app/controllers/admin/post_tags_controller.rb +30 -0
  17. data/app/controllers/admin/post_types_controller.rb +16 -4
  18. data/app/controllers/admin/posts_controller.rb +26 -2
  19. data/app/controllers/articles_controller.rb +23 -11
  20. data/app/controllers/authors_controller.rb +27 -0
  21. data/app/controllers/blog_posts_controller.rb +23 -11
  22. data/app/controllers/editorial_members_controller.rb +65 -0
  23. data/app/controllers/featured_posts_controller.rb +59 -0
  24. data/app/controllers/my/posts_controller.rb +124 -0
  25. data/app/controllers/news_controller.rb +23 -11
  26. data/app/controllers/post_categories_controller.rb +4 -14
  27. data/app/controllers/post_groups_controller.rb +76 -0
  28. data/app/controllers/post_illustrations_controller.rb +22 -0
  29. data/app/controllers/post_images_controller.rb +62 -0
  30. data/app/controllers/post_links_controller.rb +37 -0
  31. data/app/controllers/post_tags_controller.rb +41 -0
  32. data/app/controllers/posts_controller.rb +119 -14
  33. data/app/helpers/biovision_posts_helper.rb +114 -5
  34. data/app/jobs/application_job.rb +7 -0
  35. data/app/jobs/post_body_parser_job.rb +15 -0
  36. data/app/models/editorial_member.rb +92 -0
  37. data/app/models/editorial_member_post_type.rb +15 -0
  38. data/app/models/featured_post.rb +25 -0
  39. data/app/models/post.rb +203 -38
  40. data/app/models/post_category.rb +76 -54
  41. data/app/models/post_group.rb +84 -0
  42. data/app/models/post_group_category.rb +36 -0
  43. data/app/models/post_group_tag.rb +32 -0
  44. data/app/models/post_illustration.rb +62 -0
  45. data/app/models/post_image.rb +88 -0
  46. data/app/models/post_layout.rb +14 -0
  47. data/app/models/post_link.rb +2 -0
  48. data/app/models/post_post_category.rb +24 -0
  49. data/app/models/post_post_tag.rb +21 -0
  50. data/app/models/post_tag.rb +70 -0
  51. data/app/models/post_translation.rb +7 -0
  52. data/app/models/post_type.rb +18 -2
  53. data/app/models/post_zen_category.rb +6 -0
  54. data/app/models/zen_category.rb +21 -0
  55. data/app/services/post_manager.rb +52 -15
  56. data/app/services/post_parser.rb +80 -0
  57. data/app/uploaders/post_image_uploader.rb +9 -9
  58. data/app/views/admin/editorial_members/_nav_item.html.erb +2 -0
  59. data/app/views/admin/editorial_members/entity/_in_list.html.erb +37 -0
  60. data/app/views/admin/editorial_members/index.html.erb +15 -0
  61. data/app/views/admin/editorial_members/show.html.erb +71 -0
  62. data/app/views/admin/featured_posts/_add.html.erb +140 -0
  63. data/app/views/admin/featured_posts/_language.html.erb +14 -0
  64. data/app/views/admin/featured_posts/_nav_item.html.erb +2 -0
  65. data/app/views/admin/featured_posts/entity/_in_list.html.erb +26 -0
  66. data/app/views/admin/featured_posts/index.html.erb +18 -0
  67. data/app/views/admin/index/dashboard/_biovision_post.html.erb +32 -25
  68. data/app/views/admin/post_categories/entity/_in_list.html.erb +22 -6
  69. data/app/views/admin/post_categories/show.html.erb +6 -1
  70. data/app/views/admin/post_group_categories/entity/_in_list.html.erb +18 -0
  71. data/app/views/admin/post_group_tags/entity/_in_list.html.erb +18 -0
  72. data/app/views/admin/post_groups/_nav_item.html.erb +6 -0
  73. data/app/views/admin/post_groups/entity/_categories.html.erb +33 -0
  74. data/app/views/admin/post_groups/entity/_in_list.html.erb +25 -0
  75. data/app/views/admin/post_groups/index.html.erb +22 -0
  76. data/app/views/admin/post_groups/show.html.erb +65 -0
  77. data/app/views/admin/post_groups/tags.jbuilder +12 -0
  78. data/app/views/admin/post_illustrations/_nav_item.html.erb +6 -0
  79. data/app/views/admin/post_illustrations/entity/_in_list.html.erb +19 -0
  80. data/app/views/admin/post_illustrations/index.html.erb +23 -0
  81. data/app/views/admin/post_illustrations/show.html.erb +32 -0
  82. data/app/views/admin/post_images/_nav_item.html.erb +2 -0
  83. data/app/views/admin/post_images/entity/_in_list.html.erb +30 -0
  84. data/app/views/admin/post_images/index.html.erb +16 -0
  85. data/app/views/admin/post_images/show.html.erb +49 -0
  86. data/app/views/admin/post_links/entity/_in_list.html.erb +43 -0
  87. data/app/views/admin/post_tags/_nav_item.html.erb +2 -0
  88. data/app/views/admin/post_tags/entity/_in_list.html.erb +23 -0
  89. data/app/views/admin/post_tags/index.html.erb +16 -0
  90. data/app/views/admin/post_tags/posts.html.erb +18 -0
  91. data/app/views/admin/post_tags/show.html.erb +37 -0
  92. data/app/views/admin/post_types/authors.html.erb +23 -0
  93. data/app/views/admin/post_types/post_categories.html.erb +15 -4
  94. data/app/views/admin/post_types/post_tags.html.erb +18 -0
  95. data/app/views/admin/post_types/show.html.erb +28 -5
  96. data/app/views/admin/posts/_filter.html.erb +19 -0
  97. data/app/views/admin/posts/_nav_item.html.erb +3 -0
  98. data/app/views/admin/posts/_search_form.html.erb +13 -0
  99. data/app/views/admin/posts/entity/_in_list.html.erb +31 -7
  100. data/app/views/admin/posts/entity/_in_search.html.erb +8 -0
  101. data/app/views/admin/posts/entity/_links.html.erb +125 -0
  102. data/app/views/admin/posts/images.html.erb +22 -0
  103. data/app/views/admin/posts/index.html.erb +4 -0
  104. data/app/views/admin/posts/search.html.erb +21 -0
  105. data/app/views/admin/posts/search.jbuilder +26 -0
  106. data/app/views/admin/posts/show.html.erb +118 -18
  107. data/app/views/articles/category.html.erb +9 -9
  108. data/app/views/articles/index.html.erb +12 -9
  109. data/app/views/articles/show.html.erb +2 -4
  110. data/app/views/articles/tagged.html.erb +14 -0
  111. data/app/views/authors/_list.html.erb +18 -0
  112. data/app/views/authors/entity/_in_list.html.erb +9 -0
  113. data/app/views/authors/index.html.erb +10 -0
  114. data/app/views/authors/show.html.erb +31 -0
  115. data/app/views/blog_posts/category.html.erb +9 -9
  116. data/app/views/blog_posts/index.html.erb +12 -9
  117. data/app/views/blog_posts/show.html.erb +2 -4
  118. data/app/views/blog_posts/tagged.html.erb +14 -0
  119. data/app/views/editorial_members/_form.html.erb +107 -0
  120. data/app/views/editorial_members/edit.html.erb +17 -0
  121. data/app/views/editorial_members/new.html.erb +15 -0
  122. data/app/views/featured_posts/create.jbuilder +10 -0
  123. data/app/views/index/dashboard/_biovision_post.html.erb +18 -2
  124. data/app/views/my/index/dashboard/_biovision_post.html.erb +43 -0
  125. data/app/views/my/posts/_form.html.erb +357 -0
  126. data/app/views/my/posts/_list.html.erb +9 -0
  127. data/app/views/my/posts/_post.html.erb +80 -0
  128. data/app/views/my/posts/_preview.html.erb +35 -0
  129. data/app/views/my/posts/articles.html.erb +24 -0
  130. data/app/views/my/posts/blog_posts.html.erb +24 -0
  131. data/app/views/my/posts/edit.html.erb +19 -0
  132. data/app/views/my/posts/index.html.erb +14 -0
  133. data/app/views/my/posts/index/_navigation.html.erb +29 -0
  134. data/app/views/my/posts/new.html.erb +14 -0
  135. data/app/views/my/posts/news_index.html.erb +24 -0
  136. data/app/views/my/posts/show.html.erb +7 -0
  137. data/app/views/news/category.html.erb +9 -9
  138. data/app/views/news/index.html.erb +12 -9
  139. data/app/views/news/show.html.erb +2 -4
  140. data/app/views/news/tagged.html.erb +14 -0
  141. data/app/views/post_categories/_form.html.erb +82 -43
  142. data/app/views/post_groups/_form.html.erb +79 -0
  143. data/app/views/post_groups/edit.html.erb +17 -0
  144. data/app/views/post_groups/new.html.erb +15 -0
  145. data/app/views/post_groups/show.html.erb +10 -0
  146. data/app/views/post_images/_form.html.erb +121 -0
  147. data/app/views/post_images/edit.html.erb +19 -0
  148. data/app/views/post_images/new.html.erb +18 -0
  149. data/app/views/post_links/create.jbuilder +20 -0
  150. data/app/views/post_tags/_form.html.erb +26 -0
  151. data/app/views/post_tags/edit.html.erb +18 -0
  152. data/app/views/post_tags/new.html.erb +18 -0
  153. data/app/views/posts/_archive_dates.jbuilder +13 -0
  154. data/app/views/posts/_breadcrumbs.html.erb +4 -8
  155. data/app/views/posts/_calendar.html.erb +9 -0
  156. data/app/views/posts/_collection.html.erb +5 -0
  157. data/app/views/posts/_form.html.erb +204 -64
  158. data/app/views/posts/_list.html.erb +1 -1
  159. data/app/views/{articles/index.jbuilder → posts/_list.jbuilder} +3 -3
  160. data/app/views/posts/_post.html.erb +43 -16
  161. data/app/views/posts/_preview.html.erb +32 -21
  162. data/app/views/posts/_search.html.erb +6 -0
  163. data/app/views/posts/_wysiwyg.html.erb +25 -0
  164. data/app/views/posts/archive.jbuilder +3 -0
  165. data/app/views/posts/archive_day.html.erb +12 -0
  166. data/app/views/posts/category.html.erb +18 -0
  167. data/app/views/posts/entity/_gallery.html.erb +54 -0
  168. data/app/views/posts/entity/_linked_posts.html.erb +7 -0
  169. data/app/views/posts/entity/_metadata.html.erb +35 -12
  170. data/app/views/posts/entity/_publisher.html.erb +3 -1
  171. data/app/views/posts/form/_category_links.html.erb +32 -0
  172. data/app/views/posts/form/_gallery.html.erb +163 -0
  173. data/app/views/posts/index.html.erb +13 -0
  174. data/app/views/posts/index.jbuilder +1 -0
  175. data/app/views/posts/post_type/_category.html.erb +7 -0
  176. data/app/views/posts/post_type/_post_page.html.erb +9 -0
  177. data/app/views/posts/post_type/_posts.html.erb +5 -0
  178. data/app/views/posts/post_type/_tagged.html.erb +7 -0
  179. data/app/views/posts/rss.xml.erb +47 -0
  180. data/app/views/posts/search.html.erb +15 -0
  181. data/app/views/posts/show.html.erb +5 -3
  182. data/app/views/posts/tagged.html.erb +10 -0
  183. data/app/views/posts/tagged.jbuilder +1 -0
  184. data/app/views/posts/zen.xml.erb +42 -0
  185. data/config/locales/posts-en.yml +257 -19
  186. data/config/locales/posts-ru.yml +380 -14
  187. data/config/locales/posts-sv.yml +416 -0
  188. data/config/routes.rb +111 -15
  189. data/db/{migrate → amends}/20180124111113_add_language_to_posts.rb +0 -0
  190. data/db/{migrate → amends}/20180318215555_add_active_to_post_types.rb +0 -0
  191. data/db/amends/20180606120000_add_original_title_to_posts.rb +9 -0
  192. data/db/amends/20180606120001_add_time_required_to_posts.rb +11 -0
  193. data/db/amends/20180611111111_add_pubdate_and_translator_to_posts.rb +19 -0
  194. data/db/amends/20180618111111_add_default_category_name_to_post_types.rb +15 -0
  195. data/db/amends/20180703191919_add_rating_to_posts.rb +14 -0
  196. data/db/amends/20180810111111_add_explicit_to_posts.rb +11 -0
  197. data/db/amends/20180825111111_add_meta_description_to_post_categories.rb +11 -0
  198. data/db/amends/20180927111111_amend_editorial_member_about.rb +13 -0
  199. data/db/migrate/20170930000001_create_post_types.rb +98 -20
  200. data/db/migrate/20170930000010_create_posts.rb +194 -0
  201. data/db/migrate/20180706000000_create_editorial_members.rb +37 -0
  202. data/db/migrate/20180808000000_create_zen_categories.rb +42 -0
  203. data/db/migrate/20190202232323_add_spam_to_posts.rb +11 -0
  204. data/db/migrate/20190224212121_add_data_to_posts.rb +13 -0
  205. data/db/migrate/20190224212122_rename_post_image_source.rb +26 -0
  206. data/db/migrate/20190224212123_add_uuid_to_post_images.rb +10 -0
  207. data/db/migrate/20190313141414_convert_json_post_columns.rb +25 -0
  208. data/db/migrate/20190401101010_create_post_illustrations.rb +20 -0
  209. data/db/migrate/20190407101010_create_editorial_member_post_types.rb +18 -0
  210. data/db/migrate/20190410101010_add_avoid_parsing_to_posts.rb +14 -0
  211. data/db/migrate/20190410120000_create_post_groups.rb +47 -0
  212. data/db/migrate/20190412191919_add_nav_text_to_post_categories.rb +14 -0
  213. data/db/migrate/20190412212121_add_url_part_to_post_types.rb +26 -0
  214. data/db/migrate/20190420212121_create_post_layouts.rb +27 -0
  215. data/db/migrate/20190424161616_create_post_post_categories.rb +31 -0
  216. data/lib/biovision/post/version.rb +3 -1
  217. data/lib/tasks/posts.rake +6 -0
  218. metadata +170 -25
  219. data/app/assets/images/biovision/post/publisher_logo.svg +0 -3
  220. data/app/services/post_manager/article_handler.rb +0 -10
  221. data/app/services/post_manager/blog_post_handler.rb +0 -10
  222. data/app/services/post_manager/news_handler.rb +0 -10
  223. data/app/views/admin/index/dashboard/biovision_post/_additional_items.html.erb +0 -0
  224. data/app/views/blog_posts/index.jbuilder +0 -11
  225. data/app/views/news/index.jbuilder +0 -11
  226. data/app/views/post_categories/edit.jbuilder +0 -3
  227. data/app/views/post_categories/edit.js.erb +0 -1
  228. data/app/views/post_categories/new.jbuilder +0 -3
  229. data/app/views/post_categories/new.js.erb +0 -1
  230. data/db/migrate/20170930000002_create_post_categories.rb +0 -29
  231. data/db/migrate/20170930000003_create_posts.rb +0 -60
  232. data/db/migrate/20171218111111_add_meta_fields_to_posts.rb +0 -15
  233. data/db/migrate/20171219111112_add_author_fields_to_posts.rb +0 -11
  234. data/db/migrate/20180321100000_create_post_references.rb +0 -21
  235. data/db/migrate/20180321100001_create_post_notes.rb +0 -18
  236. data/db/migrate/20180321100002_create_post_links.rb +0 -20
@@ -0,0 +1,416 @@
1
+ sv:
2
+ post_count:
3
+ zero: "inga inlägg"
4
+ one: "%{count} inlägg"
5
+ few: "%{count} inlägg"
6
+ many: "%{count} inlägg"
7
+ other: "%{count} inlägg"
8
+ activerecord:
9
+ models:
10
+ editorial_member: "Redaktionell medlem"
11
+ featured_post: "Utvalda inlägg"
12
+ post: "Inlägg"
13
+ post_category: "Kategori av inlägg"
14
+ post_image: "Bild för inlägg"
15
+ post_post_tag: "Tag in inlägg"
16
+ post_tag: "Tag"
17
+ post_type: "Typ av inlägg"
18
+ post_zen_category: "Kategori av inlägg in Yandex.Zen"
19
+ zen_category: "Yandez.Zen kategori"
20
+ errors:
21
+ messages:
22
+ mismatches_post_type: "har annan posttyp"
23
+ models:
24
+ post_category:
25
+ attributes:
26
+ parent_id:
27
+ is_too_deep: "är för djupt"
28
+ attributes:
29
+ editorial_member:
30
+ about: "Om"
31
+ lead: "Kort beskrivning"
32
+ priority: "Sorteringsordning"
33
+ title: "Titel"
34
+ user: "Användare"
35
+ user_id: "Användare"
36
+ visible: "Synlig"
37
+ featured_post:
38
+ language: "Språk"
39
+ language_id: "Språk"
40
+ post: "Inlägg"
41
+ post_id: "Inlägg"
42
+ priority: "Sorteringsordning"
43
+ post:
44
+ allow_comments: "Tillåt kommentarer"
45
+ allow_votes: "Tillåt röster"
46
+ approved: "Godkänd"
47
+ author_name: "Författarens namn"
48
+ author_title: "Författarens titel"
49
+ author_url: "Författarens URL"
50
+ body: "Text"
51
+ created_at: "Skapad vid"
52
+ explicit: "Explicit innehåll"
53
+ image: "Bild"
54
+ image_alt_text: "Alt text för bild"
55
+ image_name: "Bildnamn"
56
+ image_source_link: "Bildförfattarlänk"
57
+ image_source_name: "Bildförfattarnamn"
58
+ language_id: "Språk"
59
+ lead: "Anteckning"
60
+ meta_description: "Beskrivning för metataggen"
61
+ meta_keywords: "Nyckelord för metataggen"
62
+ meta_title: "Titel för fönster"
63
+ original_post_id: "Ursprunglig post"
64
+ original_title: "Ursprunglig titel"
65
+ privacy: "Integritet"
66
+ post_category: "Kategori"
67
+ post_category_id: "Kategori"
68
+ post_type: "Typ"
69
+ post_type_id: "Typ"
70
+ publication_time: "Publiceringstid"
71
+ rating: "Betyg"
72
+ region_id: "Område"
73
+ show_owner: "Visa författare"
74
+ slug: "Pollett för URL"
75
+ source_link: "Källlänk"
76
+ source_name: "Källnamn"
77
+ tags_cache: "Taggar"
78
+ time_required: "Den tid som krävs för att läsa"
79
+ title: "Titel"
80
+ translation: "Översättning"
81
+ translator_name: "Översättarens namn"
82
+ user: "Författare"
83
+ uuid: "UUID"
84
+ video_url: "Video URL"
85
+ view_count: "Antal visningar"
86
+ visible: "Synlig"
87
+ post_category:
88
+ children_cache: "Barn cache"
89
+ meta_description: "Beskrivning för metataggen"
90
+ name: "Namn"
91
+ parent_id: "Förälder kategori"
92
+ parents_cache: "Föräldrarnas cache"
93
+ post_type: "Inlägg typ"
94
+ post_type_id: "Inlägg typ"
95
+ priority: "Sorteringsordning"
96
+ slug: "Pollett"
97
+ visible: "Synlig"
98
+ post_image:
99
+ caption: "Rubrik"
100
+ description: "Beskrivning"
101
+ image: "Bild"
102
+ image_alt_text: "Alt text för bild"
103
+ source_link: "Bildförfattarlänk"
104
+ source_name: "Bildförfattarnamn"
105
+ post: "Inlägg"
106
+ post_id: "Inlägg"
107
+ priority: "Sorteringsordning"
108
+ visible: "Synlig"
109
+ post_tag:
110
+ name: "Namn"
111
+ post_type: "Inlägg typ"
112
+ post_type_id: "Inlägg typ"
113
+ posts_count: "Antal inlägg"
114
+ slug: "Pollett"
115
+ post_type:
116
+ kategori_depth: "Kategori djup"
117
+ default_category_name: "Standard kategori namn"
118
+ name: "Namn"
119
+ slug: "Pollett"
120
+ post_zen_category:
121
+ post: "Inlägg"
122
+ post_id: "Inlägg"
123
+ zen_category: "Yandex.Zen kategori"
124
+ zen_category_id: "Yandex.Zen kategori"
125
+ zen_category:
126
+ name: "Namn"
127
+ posts_count: "Antal inlägg"
128
+ admin:
129
+ editorial_members:
130
+ nav_item:
131
+ description: "Hantera redaktionella medlemmar"
132
+ text: "Redaktionella medlemmar"
133
+ index:
134
+ heading: "Redaktionella medlemmar"
135
+ title: "Redaktionella medlemmar"
136
+ show:
137
+ heading: "Redaktionella medlemmar"
138
+ title: "Redaktionell: %{name}"
139
+ featured_posts:
140
+ nav_item:
141
+ description: "Hantera lista över utvalda inlägg"
142
+ text: "Utvalda inlägg"
143
+ index:
144
+ add: "Lägg till"
145
+ heading: "Utvalda inlägg"
146
+ title: "Utvalda inlägg"
147
+ post_categories:
148
+ show:
149
+ title: "Inlägg kategori '%{name}'"
150
+ children: "Barn"
151
+ new_child: "Lägg till barnkategori"
152
+ post_images:
153
+ nav_item:
154
+ description: "Hantera efterbilder"
155
+ text: "Inlägg bilder"
156
+ index:
157
+ heading: "Inlägg bilder"
158
+ title: "Inlägg bilder, sida %{page}"
159
+ show:
160
+ title: "Inlägg bild '%{caption}'"
161
+ post_tags:
162
+ nav_item:
163
+ description: "Hantera postlistor"
164
+ text: "Inlägg taggar"
165
+ index:
166
+ heading: "Inlägg taggar"
167
+ title: "Inlägg taggar, sida %{page}"
168
+ show:
169
+ title: "Inlägg tag '%{name}'"
170
+ posts:
171
+ heading: "Inläggs"
172
+ nav_text: "Inläggs"
173
+ title: "Inläggs tagged '%{name}', sida %{page}"
174
+ post_types:
175
+ nav_item:
176
+ description: "Hantera posttyper och kategorier"
177
+ text: "Inlägg typer"
178
+ index:
179
+ heading: "Inlägg typer"
180
+ title: "Inlägg typer"
181
+ show:
182
+ title: "Inlägg type '%{name}'"
183
+ children: "Children typer"
184
+ post_categories:
185
+ heading: "Inlägg categories"
186
+ nav_text: "Categories"
187
+ title: "Categories of post type '%{name}'"
188
+ post_tags:
189
+ heading: "Inlägg taggar"
190
+ nav_text: "Taggar"
191
+ title: "Taggar av posttyp '%{name}', sida %{page}"
192
+ new_post:
193
+ title: "Nytt inlägg av typ '%{name}'"
194
+ heading: "Lägg till inlägg"
195
+ posts:
196
+ nav_item:
197
+ description: "Hantera inlägg"
198
+ text: "Inläggs"
199
+ index:
200
+ heading: "Inläggs"
201
+ title: "Inläggs, sida %{page}"
202
+ show:
203
+ title: "Inlägg '%{name}'"
204
+ bilder: "Bilder"
205
+ bilder:
206
+ heading: "Bilder"
207
+ nav_text: "Bilder"
208
+ title: "Bilder för inlägg '%{post}'"
209
+ entity:
210
+ links:
211
+ heading: "Länkade inlägg"
212
+ search: "Sök"
213
+ index:
214
+ dashboard:
215
+ biovision_post:
216
+ heading: "Inläggs modul"
217
+ editorial_members:
218
+ new:
219
+ heading: "Ny redaktionell medlem"
220
+ nav_text: "Lägg till användare"
221
+ title: "Ny redaktionell medlem"
222
+ edit:
223
+ heading: "Redigerande redaktionell medlem"
224
+ nav_text: "Redigera"
225
+ title: "Redigerande redaktionell medlem"
226
+ update:
227
+ success: "Redaktionell medlem har uppdaterats"
228
+ destroy:
229
+ success: "Redaktionell medlem har tagits bort"
230
+ form:
231
+ guidelines:
232
+ about: "Max 5000 tecken."
233
+ lead: "Max 170 tecken."
234
+ title: "Max 150 tecken."
235
+ post_categories:
236
+ new:
237
+ title: "Ny postkategori"
238
+ heading: "Lägger till postkategori"
239
+ edit:
240
+ title: "Redigerar postkategori"
241
+ heading: "Redigerar postkategori"
242
+ forbidden: "Redigerar detta postkategori är förbjudet"
243
+ update:
244
+ success: "Inlägg kategori har uppdaterats"
245
+ destroy:
246
+ success: "Inlägg kategori har tagits bort"
247
+ form:
248
+ guidelines:
249
+ meta_description: "Max 250 tecken."
250
+ name: "Max 50 tecken."
251
+ slug: "Används i URL. Endast latinska bokstäver, siffror och bindestreck (förutom första och sista tecken), högst 50 tecken."
252
+ post_tags:
253
+ new:
254
+ heading: "Ny post tagg"
255
+ nav_text: "Skapa"
256
+ title: "Lägger till postmärke"
257
+ edit:
258
+ heading: "Redigerar post tagg"
259
+ nav_text: "Redigera"
260
+ title: "Redigerar post tagg"
261
+ update:
262
+ success: "Inlägg tagg har uppdaterats"
263
+ destroy:
264
+ success: "Inlägg tagg har tagits bort"
265
+ form:
266
+ guidelines:
267
+ name: "Max 50 tecken."
268
+ post_images:
269
+ new:
270
+ heading: "Ny postbild"
271
+ nav_text: "Lägg till bild"
272
+ title: "Ny postbild"
273
+ edit:
274
+ heading: "Redigerar postbild"
275
+ nav_text: "Redigera"
276
+ title: "Redigerar postbild"
277
+ update:
278
+ success: "Inlägg bild har uppdaterats"
279
+ destroy:
280
+ success: "Inlägg bild har tagits bort"
281
+ form:
282
+ guidelines:
283
+ caption: "Max 255 tecken."
284
+ description: "Max 5000 tecken."
285
+ image: "Maximala dimensioner är 3000×3000, format — JPG eller PNG."
286
+ image_alt_text: "Kort beskrivning av bilden. Max 200 tecken."
287
+ source_link: "Kommer att öppnas när man klickar på författarnamn."
288
+ source_name: "Person- eller organisationsnamn. Kommer att visas nära bilden."
289
+ placeholders:
290
+ source_link: "https://example.org/user42"
291
+ posts:
292
+ edit:
293
+ title: "Redigerar inlägg"
294
+ heading: "Redigerar inlägg"
295
+ destroy:
296
+ success: "Inlägg har tagits bort"
297
+ form:
298
+ guidelines:
299
+ author_name: "Om det anges, visas istället för nuvarande användare"
300
+ author_title: "Till exempel ockupation av status"
301
+ author_url: "Om det anges kommer länk till författare här"
302
+ image: "Maximala dimensioner är 3000×3000, format — JPG eller PNG."
303
+ image_alt_text: "Kort beskrivning av bilden. Max 200 tecken."
304
+ image_name: "Kommer att visas som bildtextning."
305
+ image_source_link: "Kommer att öppnas när man klickar på författarnamn."
306
+ image_source_name: "Person- eller organisationsnamn. Kommer att visas nära bilden."
307
+ language_id: "Språk"
308
+ lead: "Inlägg essens, maximalt 5000 tecken."
309
+ meta_description: "50–55 ord. Max 250 tecken"
310
+ meta_keywords: "Max 250 tecken."
311
+ meta_title: "Om det anges, visas som fönster titel istället för post titel. Max 250 tecken."
312
+ original_title: "Titel som det var för källan. Max 250 tecken."
313
+ slug: "Endast latinska bokstäver, siffror, prickar, streck eller understreck. Max 200 tecken."
314
+ source: "Inlägg källnamn (t.ex. byrånamn)"
315
+ source_link: "Kommer att öppnas när man klickar på källnamn"
316
+ time_required: "På några minuter"
317
+ title: "Max 255 tecken."
318
+ placeholders:
319
+ image_source_link: "https://example.com/user42"
320
+ source_link: "https://example.org/posts/123"
321
+ tags: "Taggar"
322
+ gallery:
323
+ heading: "Bildgalleri"
324
+ add_image: "Lägg till bild"
325
+ post:
326
+ source: "Källa"
327
+ image_credit: "Bildkredit"
328
+ index:
329
+ title: "Inläggs, sida %{page}"
330
+ nav_text: "Inläggs"
331
+ heading: "Inläggs"
332
+ tagged:
333
+ title: "Inläggs taggade '%{tag_name}', sida %{page}"
334
+ entity:
335
+ linked_posts:
336
+ heading: "Läs också"
337
+ gallery:
338
+ heading: "Bildgalleri"
339
+ rss:
340
+ title: "Posts of site on Biovision CMS"
341
+ description: "RSS feed of site on Biovision CMS"
342
+ calendar:
343
+ heading: "Arkiv"
344
+ index:
345
+ dashboard:
346
+ biovision_post:
347
+ heading: "Nya Inlägg"
348
+ more: "Mer"
349
+ articles:
350
+ index:
351
+ title: "Artiklar, sida %{page}"
352
+ heading: "Artiklar"
353
+ nav_text: "Artiklar"
354
+ kategori:
355
+ title: "Artiklar i kategori '%{kategori}', sida %{page}"
356
+ tagged:
357
+ title: "Artiklar taggade '%{tag_name}', sida %{page}"
358
+ blog_posts:
359
+ index:
360
+ title: "Blogginlägg, sida %{page}"
361
+ heading: "Blogginlägg"
362
+ nav_text: "Blogg"
363
+ kategori:
364
+ title: "Blogginlägg i kategori '%{kategori}', sida %{page}"
365
+ tagged:
366
+ title: "Blogginlägg taggade '%{tag_name}', sida %{page}"
367
+ news:
368
+ index:
369
+ title: "Nyheter, sida %{page}"
370
+ heading: "Nyheter"
371
+ nav_text: "Nyheter"
372
+ kategori:
373
+ title: "Nyheter i kategori '%{kategori}', sida %{page}"
374
+ tagged:
375
+ title: "Nyheter taggade '%{tag_name}', sida %{page}"
376
+ my:
377
+ index:
378
+ dashboard:
379
+ biovision_post:
380
+ heading: "Mina inlägg"
381
+ posts:
382
+ articles:
383
+ heading: "Mina artiklar"
384
+ nav_text: "Artiklar"
385
+ title: "Mina artiklar, sida %{page}"
386
+ blog_posts:
387
+ heading: "Min blogg"
388
+ nav_text: "Blogg"
389
+ title: "Min blogg, sida %{page}"
390
+ index:
391
+ heading: "Mina inlägg"
392
+ nav_text: "Alla inlägg"
393
+ title: "Mina inlägg, sida %{page}"
394
+ new_article:
395
+ heading: "Ny artikel"
396
+ nav_text: "Skapa artikel"
397
+ title: "Lägga till artiklar"
398
+ new_blog_post:
399
+ heading: "Ny blogginmatning"
400
+ nav_text: "Skapa blogginmatning"
401
+ title: "Lägga till blogginmatning"
402
+ new_news:
403
+ heading: "Nya nyheter"
404
+ nav_text: "Skapa nyheter"
405
+ title: "Lägger till nyheter"
406
+ news_index:
407
+ heading: "Mina nyheter"
408
+ nav_text: "Nyheter"
409
+ title: "Mina nyheter, sida %{page}"
410
+ new:
411
+ title: "Lägger till inlägg"
412
+ heading: "Lägger till inlägg"
413
+ edit:
414
+ title: "Redigerar mitt inlägg"
415
+ nav_text: "Redigera"
416
+ heading: "Redigerar inlägg"
data/config/routes.rb CHANGED
@@ -1,53 +1,149 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Rails.application.routes.draw do
2
4
  category_slug_pattern = /[a-z]+[-_0-9a-z]*[0-9a-z]/
3
- post_slug_pattern = /[a-z0-9]+[-_.a-z0-9]*[a-z0-9]+/
5
+ post_slug_pattern = /[a-z0-9]+[-_.a-z0-9]*[a-z0-9]+/
6
+ archive_constraints = { year: /19\d\d|2[01]\d\d/, month: /0[1-9]|1[0-2]/, day: /0[1-9]|[12]\d|3[01]/ }
7
+
8
+ concern :priority do
9
+ post :priority, on: :member, defaults: { format: :json }
10
+ end
11
+
12
+ concern :toggle do
13
+ post :toggle, on: :member, defaults: { format: :json }
14
+ end
4
15
 
5
- resources :post_categories, :posts, only: [:update, :destroy]
16
+ concern :check do
17
+ post :check, on: :collection, defaults: { format: :json }
18
+ end
6
19
 
7
- scope '/(:locale)', constraints: { locale: /[a-z]{2}/ } do
8
- resources :post_categories, except: [:index, :show, :update, :destroy]
9
- resources :posts, except: [:new, :update, :destroy]
20
+ concern :lock do
21
+ member do
22
+ put :lock, defaults: { format: :json }
23
+ delete :lock, action: :unlock, defaults: { format: :json }
24
+ end
25
+ end
26
+
27
+ resources :post_categories, :posts, :post_tags, :post_images, only: %i[update destroy]
28
+ resources :post_links, only: :destroy
29
+ resources :editorial_members, only: %i[update destroy]
30
+ resources :featured_posts, only: :destroy
31
+ resources :post_illustrations, only: :create
32
+ resources :post_groups, only: %i[update destroy]
33
+
34
+ scope '/(:locale)', constraints: { locale: /ru|en|sv|cn/ } do
35
+ resources :post_categories, except: %i[index show update destroy]
36
+ resources :posts, except: %i[new update destroy] do
37
+ collection do
38
+ get 'search'
39
+ get 'categories/:category_slug' => :category, as: :posts_category, constraints: { category_slug: category_slug_pattern }
40
+ get 'tagged/(:tag_name)' => :tagged, as: :tagged, constraints: { tag_name: /[^\/]+?/ }
41
+ get 'archive/(:year)(-:month)(-:day)' => :archive, as: :archive, constraints: archive_constraints
42
+ get 'rss/zen.xml' => :zen, defaults: { format: :xml }
43
+ get 'rss.xml' => :rss, as: :rss, defaults: { format: :xml }
44
+ get ':category_slug' => :category, as: :short_category, constraints: { category_slug: category_slug_pattern }
45
+ get ':id-:slug' => :show, constraints: { id: /\d+/, slug: post_slug_pattern }
46
+ end
47
+ end
48
+ resources :post_tags, only: :edit
49
+ resources :post_images, only: %i[edit create]
50
+ resources :post_links, only: :create
51
+ resources :editorial_members, only: %i[new create edit]
52
+ resources :featured_posts, only: :create
53
+ resources :post_groups, only: %i[show new create edit], concerns: :check
10
54
 
11
55
  scope :articles, controller: :articles do
12
56
  get '/' => :index, as: :articles
57
+ get 'archive/(:year)(-:month)(-:day)' => :archive, as: :articles_archive, constraints: archive_constraints
58
+ get 'tagged/(:tag_name)' => :tagged, as: :tagged_articles, constraints: { tag_name: /[^\/]+?/ }
13
59
  get '/:category_slug' => :category, as: :articles_category, constraints: { category_slug: category_slug_pattern }
14
60
  get '/:post_id-:post_slug' => :show, as: :show_article, constraints: { post_id: /\d+/, post_slug: post_slug_pattern }
15
61
  end
16
62
 
17
63
  scope :news, controller: :news do
18
64
  get '/' => :index, as: :news_index
65
+ get 'archive/(:year)(-:month)(-:day)' => :archive, as: :news_archive, constraints: archive_constraints
66
+ get 'tagged/(:tag_name)' => :tagged, as: :tagged_news, constraints: { tag_name: /[^\/]+?/ }
19
67
  get '/:category_slug' => :category, as: :news_category, constraints: { category_slug: category_slug_pattern }
20
68
  get '/:post_id-:post_slug' => :show, as: :show_news, constraints: { post_id: /\d+/, post_slug: post_slug_pattern }
21
69
  end
22
70
 
23
71
  scope :blog_posts, controller: :blog_posts do
24
72
  get '/' => :index, as: :blog_posts
73
+ get 'archive/(:year)(-:month)(-:day)' => :archive, as: :blog_posts_archive, constraints: archive_constraints
74
+ get 'tagged/(:tag_name)' => :tagged, as: :tagged_blog_posts, constraints: { tag_name: /[^\/]+?/ }
25
75
  get '/:category_slug' => :category, as: :blog_posts_category, constraints: { category_slug: category_slug_pattern }
26
76
  get '/:post_id-:post_slug' => :show, as: :show_blog_post, constraints: { post_id: /\d+/, post_slug: post_slug_pattern }
27
77
  end
28
78
 
79
+ scope :authors, controller: 'authors' do
80
+ get '/' => :index, as: :authors
81
+ get ':slug' => :show, as: :author
82
+ end
83
+
29
84
  namespace :admin do
30
- resources :post_types, only: [:index, :show] do
85
+ resources :post_types, only: %i[index show] do
31
86
  member do
32
87
  get :post_categories
33
88
  get :new_post
89
+ get :post_tags
90
+ get :authors
34
91
  end
35
92
  end
36
- resources :post_categories, only: [:show] do
93
+
94
+ resources :post_categories, only: :show, concerns: %i[toggle priority]
95
+
96
+ resources :posts, only: %i[index show], concerns: %i[lock toggle] do
97
+ get 'search', on: :collection
98
+ get 'images', on: :member
99
+ end
100
+
101
+ resources :post_tags, only: %i[index show] do
102
+ get 'posts', on: :member
103
+ end
104
+
105
+ resources :post_illustrations, only: %i[index show]
106
+ resources :post_images, only: %i[index show], concerns: %i[toggle priority]
107
+
108
+ resources :post_groups, only: %i[index show], concerns: %i[toggle priority] do
37
109
  member do
38
- put 'lock', defaults: { format: :json }
39
- delete 'lock', action: :unlock, defaults: { format: :json }
40
- post 'priority', defaults: { format: :json }
41
- post 'toggle', defaults: { format: :json }
110
+ put 'categories/:category_id' => :add_category, as: :category
111
+ delete 'categories/:category_id' => :remove_category
112
+ put 'tags/:tag_id' => :add_tag, as: :tag
113
+ delete 'tags/:tag_id' => :remove_tag
114
+ get :tags, defaults: { format: :json }
42
115
  end
43
116
  end
44
- resources :posts, only: [:index, :show] do
117
+ scope 'post_group_categories/:id', controller: :post_group_categories do
118
+ post 'priority' => :priority, as: :priority_post_group_category, defaults: { format: :json }
119
+ end
120
+ scope 'post_group_tags/:id', controller: :post_group_tags do
121
+ post 'priority' => :priority, as: :priority_post_group_tag, defaults: { format: :json }
122
+ end
123
+
124
+ resources :editorial_members, only: %i[index show], concerns: %i[toggle priority] do
45
125
  member do
46
- put 'lock', defaults: { format: :json }
47
- delete 'lock', action: :unlock, defaults: { format: :json }
48
- post 'toggle', defaults: { format: :json }
126
+ put 'post_types/:post_type_id' => :add_post_type, as: :post_type
127
+ delete 'post_types/:post_type_id' => :remove_post_type
49
128
  end
50
129
  end
130
+
131
+ resources :featured_posts, only: :index, concerns: :priority
132
+
133
+ scope 'post_links', controller: :post_links do
134
+ post ':id/priority' => :priority, as: :priority_post_link, defaults: { format: :json }
135
+ end
136
+ end
137
+
138
+ namespace :my do
139
+ get 'articles' => 'posts#articles'
140
+ get 'news' => 'posts#news_index'
141
+ get 'blog' => 'posts#blog_posts'
142
+ get 'articles/new' => 'posts#new_article', as: :new_article
143
+ get 'news/new' => 'posts#new_news', as: :new_news
144
+ get 'blog_posts/new' => 'posts#new_blog_post', as: :new_blog_post
145
+
146
+ resources :posts, except: :new
51
147
  end
52
148
  end
53
149
  end