publify_core 10.0.3 → 11.0.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 (201) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +249 -53
  3. data/app/assets/javascripts/publify.js +0 -1
  4. data/app/assets/javascripts/publify_admin.js +10 -9
  5. data/app/assets/stylesheets/accounts.css.scss +0 -2
  6. data/app/assets/stylesheets/administration_structure.css.scss +0 -4
  7. data/app/assets/stylesheets/publify.css.scss +0 -1
  8. data/app/assets/stylesheets/publify_admin.css.scss +0 -2
  9. data/app/assets/stylesheets/sidebar_admin.css.scss +0 -6
  10. data/app/controllers/admin/articles_controller.rb +1 -1
  11. data/app/controllers/admin/base_controller.rb +2 -2
  12. data/app/controllers/admin/redirects_controller.rb +2 -2
  13. data/app/controllers/admin/resources_controller.rb +1 -1
  14. data/app/controllers/admin/seo_controller.rb +2 -2
  15. data/app/controllers/admin/settings_controller.rb +2 -2
  16. data/app/controllers/admin/tags_controller.rb +1 -1
  17. data/app/controllers/admin/users_controller.rb +2 -2
  18. data/app/controllers/articles_controller.rb +2 -5
  19. data/app/controllers/authors_controller.rb +0 -2
  20. data/app/controllers/comments_controller.rb +5 -2
  21. data/app/controllers/content_controller.rb +0 -4
  22. data/app/controllers/notes_controller.rb +1 -6
  23. data/app/controllers/setup_controller.rb +1 -1
  24. data/app/controllers/tags_controller.rb +0 -1
  25. data/app/controllers/users/registrations_controller.rb +1 -0
  26. data/app/helpers/admin/base_helper.rb +20 -13
  27. data/app/helpers/admin/feedback_helper.rb +4 -4
  28. data/app/helpers/base_helper.rb +10 -6
  29. data/app/helpers/xml_helper.rb +4 -0
  30. data/app/models/article.rb +7 -7
  31. data/app/models/blog.rb +3 -3
  32. data/app/models/comment.rb +1 -1
  33. data/app/models/config_manager.rb +1 -3
  34. data/app/models/content.rb +4 -5
  35. data/app/models/content_base.rb +4 -3
  36. data/app/models/feedback.rb +1 -1
  37. data/app/models/note.rb +74 -8
  38. data/app/models/page.rb +1 -1
  39. data/app/models/redirect.rb +0 -4
  40. data/app/models/resource.rb +1 -0
  41. data/app/models/sidebar.rb +6 -14
  42. data/app/models/tag.rb +2 -2
  43. data/app/models/text_filter.rb +2 -2
  44. data/app/models/trigger.rb +1 -1
  45. data/app/models/user.rb +12 -21
  46. data/app/uploaders/resource_uploader.rb +11 -4
  47. data/app/views/admin/articles/_form.html.erb +99 -105
  48. data/app/views/admin/articles/index.html.erb +15 -23
  49. data/app/views/admin/dashboard/_comment.html.erb +1 -1
  50. data/app/views/admin/dashboard/_comments.html.erb +4 -6
  51. data/app/views/admin/dashboard/_drafts.html.erb +4 -6
  52. data/app/views/admin/dashboard/_overview.html.erb +2 -5
  53. data/app/views/admin/dashboard/_welcome.html.erb +19 -19
  54. data/app/views/admin/dashboard/index.html.erb +3 -3
  55. data/app/views/admin/feedback/_button.html.erb +7 -13
  56. data/app/views/admin/feedback/article.html.erb +17 -17
  57. data/app/views/admin/feedback/edit.html.erb +17 -21
  58. data/app/views/admin/feedback/index.html.erb +8 -8
  59. data/app/views/admin/notes/_form.html.erb +5 -5
  60. data/app/views/admin/notes/_list.html.erb +1 -1
  61. data/app/views/admin/notes/_note.html.erb +1 -1
  62. data/app/views/admin/notes/edit.html.erb +1 -1
  63. data/app/views/admin/notes/index.html.erb +1 -1
  64. data/app/views/admin/pages/_form.html.erb +23 -27
  65. data/app/views/admin/post_types/_index_and_form.html.erb +5 -5
  66. data/app/views/admin/redirects/_index_and_form.html.erb +2 -2
  67. data/app/views/admin/resources/index.html.erb +20 -8
  68. data/app/views/admin/seo/_general.html.erb +36 -36
  69. data/app/views/admin/seo/_permalinks.html.erb +22 -14
  70. data/app/views/admin/seo/_titles.html.erb +63 -63
  71. data/app/views/admin/settings/display.html.erb +23 -23
  72. data/app/views/admin/settings/feedback.html.erb +29 -29
  73. data/app/views/admin/settings/index.html.erb +21 -21
  74. data/app/views/admin/settings/write.html.erb +18 -18
  75. data/app/views/admin/shared/_flash.html.erb +6 -0
  76. data/app/views/admin/shared/_menu.html.erb +56 -68
  77. data/app/views/admin/sidebar/_config.html.erb +15 -19
  78. data/app/views/admin/sidebar/_target.html.erb +3 -3
  79. data/app/views/admin/sidebar/_target_sidebar.html.erb +14 -13
  80. data/app/views/admin/sidebar/index.html.erb +2 -2
  81. data/app/views/admin/tags/_index_and_form.html.erb +3 -3
  82. data/app/views/admin/themes/index.html.erb +21 -19
  83. data/app/views/admin/users/_form.html.erb +79 -79
  84. data/app/views/articles/search.html.erb +1 -1
  85. data/app/views/layouts/accounts.html.erb +7 -9
  86. data/app/views/layouts/administration.html.erb +2 -2
  87. data/app/views/notes/show.html.erb +15 -0
  88. data/app/views/setup/index.html.erb +1 -1
  89. data/app/views/shared/_atom_item_article.atom.builder +1 -3
  90. data/app/views/shared/_rss_item_article.rss.builder +1 -2
  91. data/config/i18n-tasks.yml +0 -1
  92. data/config/locales/ar.yml +3 -2
  93. data/config/locales/da.yml +3 -2
  94. data/config/locales/de.yml +3 -2
  95. data/config/locales/en.yml +3 -2
  96. data/config/locales/es-MX.yml +3 -2
  97. data/config/locales/fr.yml +3 -2
  98. data/config/locales/he.yml +3 -2
  99. data/config/locales/it.yml +3 -2
  100. data/config/locales/ja.yml +3 -2
  101. data/config/locales/lt.yml +3 -2
  102. data/config/locales/nb.yml +3 -2
  103. data/config/locales/nl.yml +3 -2
  104. data/config/locales/pl.yml +3 -2
  105. data/config/locales/pt-BR.yml +3 -2
  106. data/config/locales/ro.yml +3 -2
  107. data/config/locales/ru.yml +3 -2
  108. data/config/locales/zh-CN.yml +3 -2
  109. data/config/locales/zh-TW.yml +3 -2
  110. data/config/routes.rb +0 -11
  111. data/db/migrate/114_fixes_buggy_articles_and_notes.rb +2 -2
  112. data/db/migrate/20150807134129_simplify_redirect_relations.rb +1 -1
  113. data/db/migrate/20160605154632_remove_profiles.rb +1 -1
  114. data/db/migrate/20190208152646_move_text_filter_to_name.rb +2 -2
  115. data/lib/format.rb +2 -2
  116. data/lib/publify_core/engine.rb +10 -0
  117. data/lib/publify_core/string_ext.rb +1 -13
  118. data/lib/publify_core/testing_support/fixtures/like_plain.html +2 -0
  119. data/lib/publify_core/text_filter/markdown.rb +5 -1
  120. data/lib/publify_core/text_filter/markdown_smartquotes.rb +6 -1
  121. data/lib/publify_core/version.rb +1 -1
  122. data/lib/publify_core.rb +2 -2
  123. data/lib/text_filter_plugin.rb +20 -22
  124. data/lib/theme.rb +56 -37
  125. metadata +101 -397
  126. data/app/assets/javascripts/bootstrap/affix.js +0 -164
  127. data/app/assets/javascripts/bootstrap/alert.js +0 -95
  128. data/app/assets/javascripts/bootstrap/button.js +0 -125
  129. data/app/assets/javascripts/bootstrap/collapse.js +0 -212
  130. data/app/assets/javascripts/bootstrap/dropdown.js +0 -165
  131. data/app/assets/javascripts/bootstrap/modal.js +0 -358
  132. data/app/assets/javascripts/bootstrap/tab.js +0 -155
  133. data/app/assets/javascripts/bootstrap/transition.js +0 -59
  134. data/app/assets/javascripts/bootstrap-sprockets.js +0 -8
  135. data/app/assets/javascripts/lightbox.js +0 -350
  136. data/app/assets/stylesheets/_bootstrap-compass.scss +0 -9
  137. data/app/assets/stylesheets/_bootstrap-mincer.scss +0 -19
  138. data/app/assets/stylesheets/_bootstrap-sprockets.scss +0 -9
  139. data/app/assets/stylesheets/_bootstrap.scss +0 -42
  140. data/app/assets/stylesheets/bootstrap/_alerts.scss +0 -73
  141. data/app/assets/stylesheets/bootstrap/_button-groups.scss +0 -242
  142. data/app/assets/stylesheets/bootstrap/_buttons.scss +0 -168
  143. data/app/assets/stylesheets/bootstrap/_close.scss +0 -37
  144. data/app/assets/stylesheets/bootstrap/_code.scss +0 -69
  145. data/app/assets/stylesheets/bootstrap/_component-animations.scss +0 -38
  146. data/app/assets/stylesheets/bootstrap/_dropdowns.scss +0 -213
  147. data/app/assets/stylesheets/bootstrap/_forms.scss +0 -586
  148. data/app/assets/stylesheets/bootstrap/_grid.scss +0 -94
  149. data/app/assets/stylesheets/bootstrap/_labels.scss +0 -66
  150. data/app/assets/stylesheets/bootstrap/_media.scss +0 -66
  151. data/app/assets/stylesheets/bootstrap/_mixins.scss +0 -37
  152. data/app/assets/stylesheets/bootstrap/_modals.scss +0 -150
  153. data/app/assets/stylesheets/bootstrap/_navbar.scss +0 -479
  154. data/app/assets/stylesheets/bootstrap/_navs.scss +0 -242
  155. data/app/assets/stylesheets/bootstrap/_normalize.scss +0 -427
  156. data/app/assets/stylesheets/bootstrap/_pagination.scss +0 -86
  157. data/app/assets/stylesheets/bootstrap/_panels.scss +0 -222
  158. data/app/assets/stylesheets/bootstrap/_print.scss +0 -99
  159. data/app/assets/stylesheets/bootstrap/_scaffolding.scss +0 -160
  160. data/app/assets/stylesheets/bootstrap/_tables.scss +0 -234
  161. data/app/assets/stylesheets/bootstrap/_theme.scss +0 -224
  162. data/app/assets/stylesheets/bootstrap/_type.scss +0 -296
  163. data/app/assets/stylesheets/bootstrap/_utilities.scss +0 -55
  164. data/app/assets/stylesheets/bootstrap/_variables.scss +0 -638
  165. data/app/assets/stylesheets/bootstrap/_wells.scss +0 -29
  166. data/app/assets/stylesheets/bootstrap/mixins/_alerts.scss +0 -15
  167. data/app/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -12
  168. data/app/assets/stylesheets/bootstrap/mixins/_border-radius.scss +0 -18
  169. data/app/assets/stylesheets/bootstrap/mixins/_buttons.scss +0 -56
  170. data/app/assets/stylesheets/bootstrap/mixins/_center-block.scss +0 -7
  171. data/app/assets/stylesheets/bootstrap/mixins/_clearfix.scss +0 -22
  172. data/app/assets/stylesheets/bootstrap/mixins/_forms.scss +0 -82
  173. data/app/assets/stylesheets/bootstrap/mixins/_gradients.scss +0 -56
  174. data/app/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -81
  175. data/app/assets/stylesheets/bootstrap/mixins/_grid.scss +0 -122
  176. data/app/assets/stylesheets/bootstrap/mixins/_hide-text.scss +0 -21
  177. data/app/assets/stylesheets/bootstrap/mixins/_image.scss +0 -28
  178. data/app/assets/stylesheets/bootstrap/mixins/_labels.scss +0 -12
  179. data/app/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -10
  180. data/app/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss +0 -9
  181. data/app/assets/stylesheets/bootstrap/mixins/_opacity.scss +0 -7
  182. data/app/assets/stylesheets/bootstrap/mixins/_pagination.scss +0 -24
  183. data/app/assets/stylesheets/bootstrap/mixins/_panels.scss +0 -20
  184. data/app/assets/stylesheets/bootstrap/mixins/_reset-filter.scss +0 -8
  185. data/app/assets/stylesheets/bootstrap/mixins/_resize.scss +0 -6
  186. data/app/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss +0 -17
  187. data/app/assets/stylesheets/bootstrap/mixins/_size.scss +0 -10
  188. data/app/assets/stylesheets/bootstrap/mixins/_tab-focus.scss +0 -9
  189. data/app/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -28
  190. data/app/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -12
  191. data/app/assets/stylesheets/bootstrap/mixins/_text-overflow.scss +0 -8
  192. data/app/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss +0 -222
  193. data/app/assets/stylesheets/lightbox.css +0 -63
  194. data/app/controllers/theme_controller.rb +0 -63
  195. data/app/views/notes/show_in_reply.html.erb +0 -18
  196. data/app/views/theme/static_view_test.html.erb +0 -1
  197. data/lib/publify_core/text_filter/twitterfilter.rb +0 -55
  198. data/lib/tasks/manifest.rake +0 -30
  199. /data/app/views/layouts/{default.html.erb → application.html.erb} +0 -0
  200. /data/themes/plain/javascripts/{theme.js → plain/theme.js} +0 -0
  201. /data/themes/plain/stylesheets/{theme.css → plain/theme.css} +0 -0
@@ -10,43 +10,43 @@
10
10
  </div>
11
11
  <% end %>
12
12
 
13
- <fieldset class='form-horizontal'>
13
+ <fieldset class='mb-4'>
14
14
  <legend><%= t('.account_settings') %></legend>
15
- <div class='form-group'>
16
- <label class='control-label col-sm-2' for="user_login"><%= t('.login') %></label>
17
- <div class='col-sm-5'>
15
+ <div class='form-group row'>
16
+ <label class='col-form-label col-md-2' for="user_login"><%= t('.login') %></label>
17
+ <div class='col-md-5'>
18
18
  <%= f.text_field :login, class: 'form-control' %>
19
19
  </div>
20
20
  </div>
21
- <div class='form-group'>
22
- <label class='control-label col-sm-2' for="user_password"><%= t('.password') %></label>
23
- <div class='col-sm-5'>
21
+ <div class='form-group row'>
22
+ <label class='col-form-label col-md-2' for="user_password"><%= t('.password') %></label>
23
+ <div class='col-md-5'>
24
24
  <%= f.password_field :password, class: 'form-control' %>
25
25
  </div>
26
26
  </div>
27
- <div class='form-group'>
28
- <label class='control-label col-sm-2' for="user_password_confirmation"><%= t('.password_confirmation') %></label>
29
- <div class='col-sm-5'>
27
+ <div class='form-group row'>
28
+ <label class='col-form-label col-md-2' for="user_password_confirmation"><%= t('.password_confirmation') %></label>
29
+ <div class='col-md-5'>
30
30
  <%= f.password_field :password_confirmation, class: 'form-control' %>
31
31
  </div>
32
32
  </div>
33
- <div class='form-group'>
34
- <label class='control-label col-sm-2' for="user_email"><%= t('.email') %></label>
35
- <div class='col-sm-5'>
33
+ <div class='form-group row'>
34
+ <label class='col-form-label col-md-2' for="user_email"><%= t('.email') %></label>
35
+ <div class='col-md-5'>
36
36
  <%= f.text_field :email, class: 'form-control' %>
37
37
  </div>
38
38
  </div>
39
39
  <% if controller.controller_name == 'users' %>
40
- <div class='form-group'>
41
- <label class='control-label col-sm-2' for="user_profile"><%= t('.profile') %></label>
42
- <div class='col-sm-5'>
43
- <%= f.select :profile, [:admin, :publisher, :contributor], { include_blank: false }, { class: 'form-control' } %>
40
+ <div class='form-group row'>
41
+ <label class='col-form-label col-md-2' for="user_profile"><%= t('.profile') %></label>
42
+ <div class='col-md-5'>
43
+ <%= f.select :profile, [:admin, :publisher, :contributor], { include_blank: false }, { class: 'form-select' } %>
44
44
  </div>
45
45
  </div>
46
- <div class='form-group'>
47
- <label class='control-label col-sm-2' for="user_state"><%= t('.user_status') %></label>
48
- <div class='col-sm-5'>
49
- <select name="user[state]" class='form-control'>
46
+ <div class='form-group row'>
47
+ <label class='col-form-label col-md-2' for="user_state"><%= t('.user_status') %></label>
48
+ <div class='col-md-5'>
49
+ <select name="user[state]" class='form-select'>
50
50
  <% User::STATUS.each do |state| %>
51
51
  <option value="<%= state %>" <%= 'selected' if user.state == state %>><%= t("user.status.#{state}") %></option>
52
52
  <% end %>
@@ -56,40 +56,40 @@
56
56
  <% end %>
57
57
  </fieldset>
58
58
 
59
- <fieldset class='form-horizontal'>
59
+ <fieldset class='mb-4'>
60
60
  <legend><%= t('.profile_settings') %></legend>
61
- <div class='form-group'>
62
- <label class='control-label col-sm-2' for="user_firstname"><%= t('.firstname') %></label>
63
- <div class='col-sm-5'>
61
+ <div class='form-group row'>
62
+ <label class='col-form-label col-md-2' for="user_firstname"><%= t('.firstname') %></label>
63
+ <div class='col-md-5'>
64
64
  <%= f.text_field :firstname, class: 'form-control' %>
65
65
  </div>
66
66
  </div>
67
- <div class='form-group'>
68
- <label class='control-label col-sm-2' for="user_lastname"><%= t('.lastname') %></label>
69
- <div class='col-sm-5'>
67
+ <div class='form-group row'>
68
+ <label class='col-form-label col-md-2' for="user_lastname"><%= t('.lastname') %></label>
69
+ <div class='col-md-5'>
70
70
  <%= f.text_field :lastname, class: 'form-control' %>
71
71
  </div>
72
72
  </div>
73
- <div class='form-group'>
74
- <label class='control-label col-sm-2' for="user_nickname"><%= t('.nickname') %></label>
75
- <div class='col-sm-5'>
73
+ <div class='form-group row'>
74
+ <label class='col-form-label col-md-2' for="user_nickname"><%= t('.nickname') %></label>
75
+ <div class='col-md-5'>
76
76
  <%= f.text_field :nickname, class: 'form-control' %>
77
77
  </div>
78
78
  </div>
79
79
  <% unless user.login.nil? %>
80
- <div class='form-group'>
81
- <label class='control-label col-sm-2' for="user_name"><%= t('.display_name') %></label>
82
- <div class='col-sm-5'>
83
- <select name="user[name]" id="user_name" class='form-control'>
80
+ <div class='form-group row'>
81
+ <label class='col-form-label col-md-2' for="user_name"><%= t('.display_name') %></label>
82
+ <div class='col-md-5'>
83
+ <select name="user[name]" id="user_name" class='form-select'>
84
84
  <%= options_for_select(user.display_names, user.name) %>
85
85
  </select>
86
86
  </div>
87
87
  </div>
88
88
  <% end %>
89
- <div class='form-group'>
90
- <label class='control-label col-sm-2' for="text_filter_name"><%= t('.article_filter') %></label>
91
- <div class='col-sm-5'>
92
- <select name="user[text_filter_name]" id="text_filter_name" class='form-control'>
89
+ <div class='form-group row'>
90
+ <label class='col-form-label col-md-2' for="text_filter_name"><%= t('.article_filter') %></label>
91
+ <div class='col-md-5'>
92
+ <select name="user[text_filter_name]" id="text_filter_name" class='form-select'>
93
93
  <%= options_for_select text_filter_options, user.text_filter_name %>
94
94
  </select>
95
95
  </div>
@@ -97,12 +97,12 @@
97
97
  </fieldset>
98
98
 
99
99
  <% unless controller.controller_name == 'users' %>
100
- <fieldset class='form-horizontal'>
100
+ <fieldset class='mb-4'>
101
101
  <legend><%= t('.avatar') %></legend>
102
102
  <p><%= display_user_avatar(current_user, 'thumb') %> <%= t('.avatar_current') %></p>
103
- <div class='form-group'>
104
- <label class='control-label col-sm-2' for="avatar"><%= t('.upload') %></label>
105
- <div class='col-sm-5'>
103
+ <div class='form-group row'>
104
+ <label class='col-form-label col-md-2' for="avatar"><%= t('.upload') %></label>
105
+ <div class='col-md-5'>
106
106
  <%= f.file_field :filename, class: 'input-file' %>
107
107
  <p class='help-block'><%= t('.upload_file') %></p>
108
108
  </div>
@@ -110,11 +110,11 @@
110
110
  </fieldset>
111
111
  <% end %>
112
112
 
113
- <fieldset class='form-horizontal'>
113
+ <fieldset class='mb-4'>
114
114
  <legend><%= t('.notification_settings') %></legend>
115
- <div class='form-group'>
116
- <label class='control-label col-sm-2'><%= t('.notifications') %></label>
117
- <div class='col-sm-5'>
115
+ <div class='form-group row'>
116
+ <label class='col-form-label col-md-2'><%= t('.notifications') %></label>
117
+ <div class='col-md-5'>
118
118
  <label class='checkbox' for="user_notify_via_email">
119
119
  <%= f.check_box :notify_via_email %>
120
120
  <%= t('.notification_email') %>
@@ -133,74 +133,74 @@
133
133
 
134
134
  <% unless controller.controller_name == 'users' %>
135
135
 
136
- <fieldset class='form-horizontal'>
136
+ <fieldset class='mb-4'>
137
137
  <legend><%= t('.twitter') %></legend>
138
138
  <% unless twitter_available?(this_blog, current_user) %>
139
139
  <%= render 'admin/shared/twitter_alert' %>
140
140
  <% end %>
141
- <div class='form-group'>
142
- <label class='control-label col-sm-2' for="user_twitter_account"><%= t('.twitter_account') %></label>
143
- <div class='col-sm-5'>
141
+ <div class='form-group row'>
142
+ <label class='col-form-label col-md-2' for="user_twitter_account"><%= t('.twitter_account') %></label>
143
+ <div class='col-md-5'>
144
144
  <%= f.text_field :twitter_account, class: 'form-control', disabled: twitter_available?(this_blog, current_user) %>
145
145
  <p class='help-block'>The Twitter account you want to post with</p>
146
146
  </div>
147
147
  </div>
148
- <div class='form-group'>
149
- <label class='control-label col-sm-2' for="user_twitter_oauth_token"><%= t('.twitter_oauth') %></label>
150
- <div class='col-sm-5'>
148
+ <div class='form-group row'>
149
+ <label class='col-form-label col-md-2' for="user_twitter_oauth_token"><%= t('.twitter_oauth') %></label>
150
+ <div class='col-md-5'>
151
151
  <%= f.text_field :twitter_oauth_token, class: 'form-control', disabled: twitter_available?(this_blog, current_user) %>
152
152
  </div>
153
153
  </div>
154
- <div class='form-group'>
155
- <label class='control-label col-sm-2' for="user_twitter_oauth_token_secret"><%= t('.twitter_oauth_secret') %></label>
156
- <div class='col-sm-5'>
154
+ <div class='form-group row'>
155
+ <label class='col-form-label col-md-2' for="user_twitter_oauth_token_secret"><%= t('.twitter_oauth_secret') %></label>
156
+ <div class='col-md-5'>
157
157
  <%= f.text_field :twitter_oauth_token_secret, class: 'form-control', disabled: twitter_available?(this_blog, current_user) %>
158
158
  </div>
159
159
  </div>
160
160
  </fieldset>
161
161
 
162
- <fieldset class='form-horizontal'>
162
+ <fieldset class='mb-4'>
163
163
  <legend><%= t('.contact_settings') %></legend>
164
164
  <div class='alert alert-info'><%= t('.contact_explain_html', link: link_to(t('.author_page'), author_path(id: current_user.login))) %></div>
165
- <div class='form-group'>
166
- <label class='control-label col-sm-2' for="user_description"><%= t('.about') %></label>
167
- <div class='col-sm-5'>
165
+ <div class='form-group row'>
166
+ <label class='col-form-label col-md-2' for="user_description"><%= t('.about') %></label>
167
+ <div class='col-md-5'>
168
168
  <%= f.text_area :description, class: 'form-control', rows: 5 %>
169
169
  </div>
170
170
  </div>
171
- <div class='form-group'>
172
- <label class='control-label col-sm-2' for="user_url"><%= t('.website') %></label>
173
- <div class='col-sm-5'>
171
+ <div class='form-group row'>
172
+ <label class='col-form-label col-md-2' for="user_url"><%= t('.website') %></label>
173
+ <div class='col-md-5'>
174
174
  <%= f.text_field :url, class: 'form-control' %>
175
175
  </div>
176
176
  </div>
177
- <div class='form-group'>
178
- <label class='control-label col-sm-2' for="user_msn"><%= t('.msn') %></label>
179
- <div class='col-sm-5'>
177
+ <div class='form-group row'>
178
+ <label class='col-form-label col-md-2' for="user_msn"><%= t('.msn') %></label>
179
+ <div class='col-md-5'>
180
180
  <%= f.text_field :msn, class: 'form-control' %>
181
181
  </div>
182
182
  </div>
183
- <div class='form-group'>
184
- <label class='control-label col-sm-2' for="user_yahoo"><%= t('.yahoo') %></label>
185
- <div class='col-sm-5'>
183
+ <div class='form-group row'>
184
+ <label class='col-form-label col-md-2' for="user_yahoo"><%= t('.yahoo') %></label>
185
+ <div class='col-md-5'>
186
186
  <%= f.text_field :yahoo, class: 'form-control' %>
187
187
  </div>
188
188
  </div>
189
- <div class='form-group'>
190
- <label class='control-label col-sm-2' for="user_jabber"><%= t('.jabber') %></label>
191
- <div class='col-sm-5'>
189
+ <div class='form-group row'>
190
+ <label class='col-form-label col-md-2' for="user_jabber"><%= t('.jabber') %></label>
191
+ <div class='col-md-5'>
192
192
  <%= f.text_field :jabber, class: 'form-control' %>
193
193
  </div>
194
194
  </div>
195
- <div class='form-group'>
196
- <label class='control-label col-sm-2' for="user_aim"><%= t('.aim') %></label>
197
- <div class='col-sm-5'>
195
+ <div class='form-group row'>
196
+ <label class='col-form-label col-md-2' for="user_aim"><%= t('.aim') %></label>
197
+ <div class='col-md-5'>
198
198
  <%= f.text_field :aim, class: 'form-control' %>
199
199
  </div>
200
200
  </div>
201
- <div class='form-group'>
202
- <label class='control-label col-sm-2' for="user_twitter"><%= t('.twitter') %></label>
203
- <div class='col-sm-5'>
201
+ <div class='form-group row'>
202
+ <label class='col-form-label col-md-2' for="user_twitter"><%= t('.twitter') %></label>
203
+ <div class='col-md-5'>
204
204
  <%= f.text_field :twitter, class: 'form-control' %>
205
205
  </div>
206
206
  </div>
@@ -2,7 +2,7 @@
2
2
  <div class="post">
3
3
  <h2><%= link_to_permalink article, article.title %></h2>
4
4
  <% if article.password.blank? %>
5
- <%= article.html(:body).gsub(%r{</?[^>]*>}, '').slice(0..300) %>...
5
+ <%= article.excerpt_text(300) %>
6
6
  <% end %>
7
7
  </div>
8
8
  <% end %>
@@ -13,19 +13,17 @@
13
13
  <body>
14
14
  <div class="container">
15
15
  <div class="row">
16
- <div class="col-md-4 col-md-offset-4">
17
- <div class="panel panel-default">
18
- <div class="panel-heading">
19
- <h1 class='panel-title'><%= link_to('Publify', 'https://publify.github.io') %></h1>
20
- </div>
21
- <div class="panel-body">
16
+ <div class="col-lg-4 offset-lg-4">
17
+ <div class="card">
18
+ <div class="card-body">
19
+ <h1 class="card-title"><%= link_to('Publify', 'https://publify.github.io') %></h1>
22
20
  <%= render 'shared/flash', flash: flash %>
23
21
  <%= yield %>
22
+ <% if content_for?(:account_links) %>
23
+ <%= yield :account_links %>
24
+ <% end %>
24
25
  </div>
25
26
  </div>
26
- <% if content_for?(:account_links) %>
27
- <%= yield :account_links %>
28
- <% end %>
29
27
  </div>
30
28
  </div>
31
29
  </div>
@@ -12,9 +12,9 @@
12
12
  <body>
13
13
  <%= render 'admin/shared/menu' %>
14
14
  <div class='container-fluid'>
15
- <%= render 'shared/flash', flash: flash %>
15
+ <%= render 'admin/shared/flash', flash: flash %>
16
16
  <% if content_for?(:page_heading) %>
17
- <div class='page-header'>
17
+ <div class="pb-2 mt-4 mb-4 border-bottom">
18
18
  <%= yield :page_heading %>
19
19
  </div>
20
20
  <% end %>
@@ -1,5 +1,20 @@
1
1
  <div class="hfeed">
2
2
  <div class='h-entry hentry h-as-note'>
3
+ <% if @reply %>
4
+ <article class=' well well-small'>
5
+ <% if @reply['user']['profile_image_url'] %>
6
+ <%= image_tag(@reply['user']['profile_image_url'], class: 'alignleft', alt: @reply['user']['name']) %>
7
+ <% end %>
8
+ <strong><%= get_reply_context_url(@reply) %></strong>
9
+ <p><%= nofollowify_links(@note.generate_html(:in_reply_to, @reply['text'])) %></p>
10
+ <p>
11
+ <small>
12
+ <%= get_reply_context_twitter_link(@reply) %>
13
+ </small>
14
+ </p>
15
+ </article>
16
+ <% end %>
17
+
3
18
  <%= render partial: 'note', object: @note %>
4
19
  </div>
5
20
  </div>
@@ -1,5 +1,5 @@
1
1
  <div class="row">
2
- <div class="col-md-8 col-md-offset-2" id="error-message-page">
2
+ <div class="col-lg-8 offset-lg-2" id="error-message-page">
3
3
  <% if this_blog.errors.any? %>
4
4
  <div id="error_explanation">
5
5
  <h2><%= t("errors.template.header", model: 'blog', count: this_blog.errors.count) %></h2>
@@ -7,9 +7,7 @@ feed.entry(item, id: "urn:uuid:#{item.guid}", published: item.published_at,
7
7
  end
8
8
 
9
9
  if item.is_a?(Note)
10
- truncated_body = truncate(item.html(:body).strip_html,
11
- length: 80, separator: " ", omissions: "...")
12
- entry.title truncated_body, "type" => "html"
10
+ entry.title truncated_body(item), "type" => "html"
13
11
  else
14
12
  entry.title item.title, "type" => "html"
15
13
  end
@@ -2,8 +2,7 @@
2
2
 
3
3
  xm.item do
4
4
  if item.is_a?(Note)
5
- xm.title truncate(item.html(:body).strip_html, length: 80, separator: " ",
6
- omissions: "...")
5
+ xm.title truncated_body(item)
7
6
  else
8
7
  xm.title item.title
9
8
  end
@@ -46,6 +46,5 @@ ignore_missing:
46
46
  ## Consider these keys used:
47
47
  ignore_unused:
48
48
  - 'time.formats.*'
49
- - 'layouts.default.designed_by'
50
49
  - 'date.*'
51
50
  - 'activerecord.errors.models.*'
@@ -19,6 +19,8 @@ ar:
19
19
  attributes:
20
20
  title:
21
21
  blank: لا يمكن تركها فارغة
22
+ user:
23
+ weak_password: is too weak
22
24
  admin:
23
25
  articles:
24
26
  access_granted:
@@ -842,8 +844,7 @@ ar:
842
844
  layouts:
843
845
  administration:
844
846
  powered_by: بفخر تُشغل بواسطة
845
- default:
846
- designed_by: صُممت بواسطة %{designed_by}
847
+ application:
847
848
  powered_by_html: مشغل بواسطة %{powered_by}
848
849
  notes:
849
850
  note:
@@ -19,6 +19,8 @@ da:
19
19
  attributes:
20
20
  title:
21
21
  blank: can't be blank
22
+ user:
23
+ weak_password: is too weak
22
24
  admin:
23
25
  articles:
24
26
  access_granted:
@@ -809,8 +811,7 @@ da:
809
811
  layouts:
810
812
  administration:
811
813
  powered_by: is proudly powered by
812
- default:
813
- designed_by: Designed by %{designed_by}
814
+ application:
814
815
  powered_by_html: Powered by %{powered_by}
815
816
  notes:
816
817
  note:
@@ -19,6 +19,8 @@ de:
19
19
  attributes:
20
20
  title:
21
21
  blank: can't be blank
22
+ user:
23
+ weak_password: is too weak
22
24
  admin:
23
25
  articles:
24
26
  access_granted:
@@ -813,8 +815,7 @@ de:
813
815
  layouts:
814
816
  administration:
815
817
  powered_by: is proudly powered by
816
- default:
817
- designed_by: Designed by %{designed_by}
818
+ application:
818
819
  powered_by_html: Powered by %{powered_by}
819
820
  notes:
820
821
  note:
@@ -19,6 +19,8 @@ en:
19
19
  attributes:
20
20
  title:
21
21
  blank: can't be blank
22
+ user:
23
+ weak_password: is too weak
22
24
  admin:
23
25
  articles:
24
26
  access_granted:
@@ -808,8 +810,7 @@ en:
808
810
  layouts:
809
811
  administration:
810
812
  powered_by: is proudly powered by
811
- default:
812
- designed_by: Designed by %{designed_by}
813
+ application:
813
814
  powered_by_html: Powered by %{powered_by}
814
815
  notes:
815
816
  note:
@@ -19,6 +19,8 @@ es-MX:
19
19
  attributes:
20
20
  title:
21
21
  blank: no puede ser vac&iacute;o
22
+ user:
23
+ weak_password: is too weak
22
24
  admin:
23
25
  articles:
24
26
  access_granted:
@@ -811,8 +813,7 @@ es-MX:
811
813
  layouts:
812
814
  administration:
813
815
  powered_by: is proudly powered by
814
- default:
815
- designed_by: Designed by %{designed_by}
816
+ application:
816
817
  powered_by_html: Powered by %{powered_by}
817
818
  notes:
818
819
  note:
@@ -19,6 +19,8 @@ fr:
19
19
  attributes:
20
20
  title:
21
21
  blank: ne peut être laissé vide
22
+ user:
23
+ weak_password: is too weak
22
24
  admin:
23
25
  articles:
24
26
  access_granted:
@@ -826,8 +828,7 @@ fr:
826
828
  layouts:
827
829
  administration:
828
830
  powered_by: Tourne fièrement sous
829
- default:
830
- designed_by: Design par %{designed_by}
831
+ application:
831
832
  powered_by_html: Propulsé par %{powered_by}
832
833
  notes:
833
834
  note:
@@ -19,6 +19,8 @@ he:
19
19
  attributes:
20
20
  title:
21
21
  blank: can't be blank
22
+ user:
23
+ weak_password: is too weak
22
24
  admin:
23
25
  articles:
24
26
  access_granted:
@@ -804,8 +806,7 @@ he:
804
806
  layouts:
805
807
  administration:
806
808
  powered_by: is proudly powered by
807
- default:
808
- designed_by: עוצב על ידי %{designed_by}
809
+ application:
809
810
  powered_by_html: מופעל על ידי %{powered_by}
810
811
  notes:
811
812
  note:
@@ -19,6 +19,8 @@ it:
19
19
  attributes:
20
20
  title:
21
21
  blank: can't be blank
22
+ user:
23
+ weak_password: is too weak
22
24
  admin:
23
25
  articles:
24
26
  access_granted:
@@ -810,8 +812,7 @@ it:
810
812
  layouts:
811
813
  administration:
812
814
  powered_by: is proudly powered by
813
- default:
814
- designed_by: Designed by %{designed_by}
815
+ application:
815
816
  powered_by_html: Powered by %{powered_by}
816
817
  notes:
817
818
  note:
@@ -19,6 +19,8 @@ ja:
19
19
  attributes:
20
20
  title:
21
21
  blank: can't be blank
22
+ user:
23
+ weak_password: is too weak
22
24
  admin:
23
25
  articles:
24
26
  access_granted:
@@ -792,8 +794,7 @@ ja:
792
794
  layouts:
793
795
  administration:
794
796
  powered_by: is proudly powered by
795
- default:
796
- designed_by: Designed by %{designed_by}
797
+ application:
797
798
  powered_by_html: Powered by %{powered_by}
798
799
  notes:
799
800
  note:
@@ -19,6 +19,8 @@ lt:
19
19
  attributes:
20
20
  title:
21
21
  blank: can't be blank
22
+ user:
23
+ weak_password: is too weak
22
24
  admin:
23
25
  articles:
24
26
  access_granted:
@@ -825,8 +827,7 @@ lt:
825
827
  layouts:
826
828
  administration:
827
829
  powered_by: is proudly powered by
828
- default:
829
- designed_by: Designed by %{designed_by}
830
+ application:
830
831
  powered_by_html: Powered by %{powered_by}
831
832
  notes:
832
833
  note:
@@ -19,6 +19,8 @@ nb:
19
19
  attributes:
20
20
  title:
21
21
  blank: kan ikke være blank
22
+ user:
23
+ weak_password: is too weak
22
24
  admin:
23
25
  articles:
24
26
  access_granted:
@@ -804,8 +806,7 @@ nb:
804
806
  layouts:
805
807
  administration:
806
808
  powered_by: drives stolt av
807
- default:
808
- designed_by: Utformet av %{designed_by}
809
+ application:
809
810
  powered_by_html: Drives av %{powered_by}
810
811
  notes:
811
812
  note:
@@ -19,6 +19,8 @@ nl:
19
19
  attributes:
20
20
  title:
21
21
  blank: mag niet leeg zijn
22
+ user:
23
+ weak_password: is too weak
22
24
  admin:
23
25
  articles:
24
26
  access_granted:
@@ -812,8 +814,7 @@ nl:
812
814
  layouts:
813
815
  administration:
814
816
  powered_by: wordt trots aangedreven door
815
- default:
816
- designed_by: Ontworpen door %{designed_by}
817
+ application:
817
818
  powered_by_html: Powered by %{powered_by}
818
819
  notes:
819
820
  note:
@@ -19,6 +19,8 @@ pl:
19
19
  attributes:
20
20
  title:
21
21
  blank: nie może być puste
22
+ user:
23
+ weak_password: is too weak
22
24
  admin:
23
25
  articles:
24
26
  access_granted:
@@ -837,8 +839,7 @@ pl:
837
839
  layouts:
838
840
  administration:
839
841
  powered_by: dumnie działa na
840
- default:
841
- designed_by: Designed by %{designed_by}
842
+ application:
842
843
  powered_by_html: Powered by %{powered_by}
843
844
  notes:
844
845
  note:
@@ -19,6 +19,8 @@ pt-BR:
19
19
  attributes:
20
20
  title:
21
21
  blank: não pode ser vazio
22
+ user:
23
+ weak_password: is too weak
22
24
  admin:
23
25
  articles:
24
26
  access_granted:
@@ -812,8 +814,7 @@ pt-BR:
812
814
  layouts:
813
815
  administration:
814
816
  powered_by: é orgulhosamente desenvolvido por
815
- default:
816
- designed_by: Designed by %{designed_by}
817
+ application:
817
818
  powered_by_html: Powered by %{powered_by}
818
819
  notes:
819
820
  note: