storytime 2.1.6 → 2.1.7
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.
- checksums.yaml +5 -5
- data/.github/workflows/test.yml +54 -0
- data/.gitignore +2 -1
- data/.ruby-version +1 -1
- data/.tool-versions +1 -0
- data/Gemfile +5 -3
- data/Gemfile.lock +414 -425
- data/Guardfile +1 -1
- data/app/assets/fonts/storytime-icons.eot +0 -0
- data/app/assets/fonts/storytime-icons.svg +23 -0
- data/app/assets/fonts/storytime-icons.ttf +0 -0
- data/app/assets/fonts/storytime-icons.woff +0 -0
- data/app/assets/javascripts/storytime/application.js +1 -8
- data/app/assets/javascripts/storytime/off_canvas.coffee +16 -0
- data/app/assets/javascripts/storytime/wysiwyg.js.coffee +9 -7
- data/app/assets/stylesheets/storytime/_buttons.scss +33 -0
- data/app/assets/stylesheets/storytime/_list-group.scss +1 -1
- data/app/assets/stylesheets/storytime/application.scss +14 -2
- data/app/assets/stylesheets/storytime/icons.scss +5 -5
- data/app/assets/stylesheets/storytime/leather/_buttons.scss +31 -0
- data/app/assets/stylesheets/storytime/leather/_devise.scss +72 -0
- data/app/assets/stylesheets/storytime/leather/_grid.scss +19 -0
- data/app/assets/stylesheets/storytime/leather/_list_groups.scss +33 -0
- data/app/assets/stylesheets/storytime/leather/_nav_menus.scss +125 -0
- data/app/assets/stylesheets/storytime/leather/_navbar_transparent.scss +23 -0
- data/app/assets/stylesheets/storytime/leather/_off_canvas.scss +109 -0
- data/app/assets/stylesheets/storytime/leather/_scroll_panels.scss +85 -0
- data/app/assets/stylesheets/storytime/leather/_toggle_columns.scss +23 -0
- data/app/assets/stylesheets/storytime/leather/_typography.scss +12 -0
- data/app/assets/stylesheets/storytime/leather/_utilities.scss +54 -0
- data/app/assets/stylesheets/storytime/leather/_variables.scss +8 -0
- data/app/assets/stylesheets/storytime/posts.scss +9 -1
- data/app/controllers/storytime/application_controller.rb +1 -1
- data/app/controllers/storytime/dashboard/blog_posts_controller.rb +5 -3
- data/app/controllers/storytime/dashboard/blogs_controller.rb +1 -1
- data/app/controllers/storytime/dashboard/media_controller.rb +4 -4
- data/app/controllers/storytime/dashboard/memberships_controller.rb +1 -1
- data/app/controllers/storytime/dashboard/pages_controller.rb +26 -6
- data/app/controllers/storytime/dashboard/posts_controller.rb +30 -5
- data/app/controllers/storytime/dashboard/subscriptions_controller.rb +1 -1
- data/app/controllers/storytime/pages_controller.rb +31 -1
- data/app/controllers/storytime/posts_controller.rb +1 -1
- data/app/controllers/storytime/subscriptions_controller.rb +5 -1
- data/app/helpers/storytime/application_helper.rb +0 -4
- data/app/models/concerns/storytime/post_featured_images.rb +2 -2
- data/app/models/concerns/storytime/post_partial_inheritance.rb +2 -2
- data/app/models/storytime/autosave.rb +1 -1
- data/app/models/storytime/comment.rb +1 -1
- data/app/models/storytime/media.rb +1 -1
- data/app/models/storytime/membership.rb +2 -2
- data/app/models/storytime/post.rb +7 -3
- data/app/models/storytime/site.rb +4 -6
- data/app/models/storytime/snippet.rb +12 -1
- data/app/models/storytime/subscription.rb +2 -2
- data/app/models/storytime/version.rb +1 -1
- data/app/policies/storytime/post_policy.rb +1 -1
- data/app/views/storytime/dashboard/_navigation.html.erb +0 -9
- data/app/views/storytime/dashboard/blog_posts/_form.html.erb +5 -1
- data/app/views/storytime/dashboard/blogs/edit.json.jbuilder +1 -1
- data/app/views/storytime/dashboard/blogs/index.json.jbuilder +1 -1
- data/app/views/storytime/dashboard/blogs/new.json.jbuilder +1 -1
- data/app/views/storytime/dashboard/media/_gallery.html.erb +1 -1
- data/app/views/storytime/dashboard/media/_modal.html.erb +2 -2
- data/app/views/storytime/dashboard/media/show.json.jbuilder +1 -1
- data/app/views/storytime/dashboard/memberships/_edit.html.erb +1 -1
- data/app/views/storytime/dashboard/memberships/_index.html.erb +3 -3
- data/app/views/storytime/dashboard/memberships/_new.html.erb +1 -1
- data/app/views/storytime/dashboard/memberships/edit.json.jbuilder +1 -1
- data/app/views/storytime/dashboard/memberships/index.json.jbuilder +1 -1
- data/app/views/storytime/dashboard/memberships/new.json.jbuilder +1 -1
- data/app/views/storytime/dashboard/memberships/save.json.jbuilder +1 -1
- data/app/views/storytime/dashboard/pages/_form.html.erb +1 -1
- data/app/views/storytime/dashboard/posts/_directory.html.erb +18 -0
- data/app/views/storytime/dashboard/posts/_form.html.erb +1 -1
- data/app/views/storytime/dashboard/posts/_list.html.erb +2 -26
- data/app/views/storytime/dashboard/posts/_new_button.html.erb +1 -1
- data/app/views/storytime/dashboard/posts/_post.html.erb +28 -0
- data/app/views/storytime/dashboard/posts/_sorts.html.erb +21 -0
- data/app/views/storytime/dashboard/posts/index.html.erb +5 -3
- data/app/views/storytime/dashboard/roles/_form.html.erb +1 -1
- data/app/views/storytime/dashboard/roles/edit.json.jbuilder +1 -1
- data/app/views/storytime/dashboard/sites/_form.html.erb +1 -1
- data/app/views/storytime/dashboard/sites/site.json.jbuilder +1 -1
- data/app/views/storytime/dashboard/snippets/_index.html.erb +1 -1
- data/app/views/storytime/dashboard/snippets/edit.json.jbuilder +1 -1
- data/app/views/storytime/dashboard/snippets/index.json.jbuilder +1 -1
- data/app/views/storytime/dashboard/snippets/new.json.jbuilder +1 -1
- data/app/views/storytime/dashboard/subscriptions/_form.html.erb +1 -1
- data/app/views/storytime/dashboard/subscriptions/_index.html.erb +2 -2
- data/app/views/storytime/dashboard/subscriptions/form.json.jbuilder +1 -1
- data/app/views/storytime/dashboard/subscriptions/index.json.jbuilder +1 -1
- data/app/views/storytime/dashboard/versions/_versions_info.html.erb +1 -1
- data/app/views/storytime/posts/show.html.erb +6 -0
- data/app/views/storytime/sites/_google_analytics_code.html.erb +5 -8
- data/config/initializers/assets.rb +2 -1
- data/config/initializers/friendly_id.rb +1 -1
- data/config/initializers/url_for_patch.rb +19 -8
- data/config/locales/devise.zh-CN.yml +59 -0
- data/config/locales/kaminari.zh-CN.yml +17 -0
- data/config/locales/simple_form.zh-CN.yml +26 -0
- data/config/locales/zh-CN.yml +141 -0
- data/config/routes.rb +2 -4
- data/db/migrate/20140501174341_create_storytime_posts.rb +1 -1
- data/db/migrate/20140509191309_create_friendly_id_slugs.rb +1 -1
- data/db/migrate/20140511200849_create_storytime_media.rb +1 -1
- data/db/migrate/20140513161233_create_storytime_sites.rb +1 -1
- data/db/migrate/20140514200234_create_storytime_tags.rb +1 -1
- data/db/migrate/20140514200304_create_storytime_taggings.rb +1 -1
- data/db/migrate/20140516141252_create_storytime_versions.rb +1 -1
- data/db/migrate/20140521190606_create_storytime_roles.rb +1 -1
- data/db/migrate/20140521191048_add_storytime_role_id_to_users.rb +1 -1
- data/db/migrate/20140521191728_create_storytime_permissions.rb +1 -1
- data/db/migrate/20140521191744_create_storytime_actions.rb +1 -1
- data/db/migrate/20140813014447_create_storytime_comments.rb +1 -1
- data/db/migrate/20140813130534_add_storytime_name_to_users.rb +1 -1
- data/db/migrate/20140916183056_create_storytime_autosaves.rb +1 -1
- data/db/migrate/20141020213343_add_secondary_media_id_to_storytime_post.rb +1 -1
- data/db/migrate/20141021073356_create_storytime_snippets.rb +1 -1
- data/db/migrate/20141111164439_create_storytime_subscriptions.rb +1 -1
- data/db/migrate/20150122200805_add_title_and_content_index_to_storytime_post.rb +1 -1
- data/db/migrate/20150128185746_seed_new_actions_and_permissions.rb +1 -1
- data/db/migrate/20150129215308_add_site_id_to_storytime_subscription.rb +1 -1
- data/db/migrate/20150206201847_add_site_id_to_storytime_post.rb +1 -1
- data/db/migrate/20150206201919_add_site_id_to_storytime_snippet.rb +1 -1
- data/db/migrate/20150206201931_add_site_id_to_storytime_tag.rb +1 -1
- data/db/migrate/20150206205256_add_notification_fields_to_storytime_post.rb +1 -1
- data/db/migrate/20150216211257_add_subdomain_to_storytime_sites.rb +1 -1
- data/db/migrate/20150216225045_add_site_to_storytime_media.rb +1 -1
- data/db/migrate/20150219210528_remove_root_page_content_from_storytime_sites.rb +1 -1
- data/db/migrate/20150220184902_add_blog_id_to_posts.rb +1 -1
- data/db/migrate/20150224192138_add_homepage_path_to_storytime_sites.rb +1 -1
- data/db/migrate/20150224193151_add_subscription_email_from_to_storytime_sites.rb +1 -1
- data/db/migrate/20150224193551_add_layout_to_storytime_sites.rb +1 -1
- data/db/migrate/20150224194559_add_disqus_forum_shortname_to_storytime_sites.rb +1 -1
- data/db/migrate/20150224212453_remove_homepage_path_from_storytime_sites.rb +1 -1
- data/db/migrate/20150225143516_add_site_id_to_storytime_autosaves.rb +1 -1
- data/db/migrate/20150225143826_add_site_id_to_storytime_comments.rb +1 -1
- data/db/migrate/20150225145119_add_site_id_to_storytime_versions.rb +1 -1
- data/db/migrate/20150225145316_add_site_id_to_storytime_taggings.rb +1 -1
- data/db/migrate/20150225145608_update_storytime_site_id_columns.rb +1 -1
- data/db/migrate/20150225164232_add_site_id_to_storytime_permissions.rb +1 -1
- data/db/migrate/20150225212917_create_storytime_memberships.rb +1 -1
- data/db/migrate/20150225213535_create_memberships_for_storytime_users.rb +1 -1
- data/db/migrate/20150226201739_add_custom_domain_to_storytime_sites.rb +1 -1
- data/db/migrate/20150302171500_add_site_id_to_storytime_media.rb +1 -1
- data/db/migrate/20150302171722_set_site_layout.rb +1 -1
- data/db/migrate/20150302185138_remove_storytime_role_id_from_users.rb +1 -1
- data/db/migrate/20150302192525_transfer_posts_to_blogs.rb +1 -1
- data/db/migrate/20150302192759_seed_permissions.rb +1 -1
- data/db/migrate/20150331162329_add_discourse_name_to_storytime_sites.rb +1 -1
- data/db/migrate/20150402161427_remove_subdomain_from_storytime_site.rb +1 -1
- data/db/migrate/20150520181115_create_storytime_navigations.rb +1 -1
- data/db/migrate/20150520185227_create_storytime_links.rb +1 -1
- data/db/migrate/20150520190700_add_position_to_storytime_links.rb +1 -1
- data/db/migrate/20150529192058_add_url_to_storytime_links.rb +1 -1
- data/db/migrate/20260408001637_add_canonical_url_to_storytime_posts.rb +5 -0
- data/db/migrate/20260701000000_sanitize_existing_storytime_snippets.rb +22 -0
- data/lib/storytime/cli/install.rb +2 -20
- data/lib/storytime/concerns/action_controller_extension.rb +36 -0
- data/lib/storytime/constraints/page_constraint.rb +8 -2
- data/lib/storytime/engine.rb +3 -5
- data/lib/storytime/migrators/v1.rb +3 -3
- data/lib/storytime/post_notifier.rb +1 -1
- data/lib/storytime/post_url_handler.rb +18 -5
- data/lib/storytime/storytime_helpers.rb +4 -0
- data/lib/storytime/version.rb +1 -1
- data/lib/storytime.rb +1 -1
- data/spec/controllers/dashboard_controller_spec.rb +5 -6
- data/spec/dummy/app/assets/config/manifest.js +3 -0
- data/spec/dummy/config/database.yml +3 -3
- data/spec/dummy/config/initializers/devise.rb +1 -1
- data/spec/dummy/db/migrate/20140530185250_devise_create_users.rb +1 -1
- data/spec/dummy/db/migrate/20150127172846_create_widgets.rb +1 -1
- data/spec/dummy/db/migrate/20150206203824_add_video_url_to_storytime_posts.rb +1 -1
- data/spec/dummy/db/schema.rb +226 -244
- data/spec/factories/action_factories.rb +3 -3
- data/spec/factories/comment_factories.rb +1 -1
- data/spec/factories/media_factories.rb +1 -1
- data/spec/factories/membership_factories.rb +1 -1
- data/spec/factories/navigation_factories.rb +3 -3
- data/spec/factories/permission_factories.rb +1 -1
- data/spec/factories/post_factories.rb +2 -2
- data/spec/factories/role_factories.rb +11 -11
- data/spec/factories/site_factories.rb +3 -3
- data/spec/factories/snippet_factories.rb +1 -1
- data/spec/factories/subscription_factories.rb +1 -1
- data/spec/factories/user_factories.rb +2 -2
- data/spec/factories/widget_factories.rb +2 -2
- data/spec/features/blogs_spec.rb +7 -7
- data/spec/features/comments_spec.rb +11 -11
- data/spec/features/dashboard/media_spec.rb +17 -11
- data/spec/features/dashboard/memberships_spec.rb +13 -19
- data/spec/features/dashboard/navigations_spec.rb +1 -1
- data/spec/features/dashboard/pages_spec.rb +8 -8
- data/spec/features/dashboard/posts_spec.rb +19 -19
- data/spec/features/dashboard/sites_spec.rb +1 -1
- data/spec/features/dashboard/snippets_spec.rb +3 -3
- data/spec/features/dashboard/subscription_spec.rb +2 -2
- data/spec/features/pages_spec.rb +3 -3
- data/spec/features/posts_spec.rb +2 -2
- data/spec/features/subscription_spec.rb +3 -3
- data/spec/importers/wordpress_spec.rb +1 -1
- data/spec/lib/mysql_fulltext_search_adapter_spec.rb +3 -3
- data/spec/lib/mysql_search_adapter_spec.rb +3 -3
- data/spec/lib/postgres_search_adapter_spec.rb +3 -3
- data/spec/lib/sqlite3_search_adapter_spec.rb +3 -3
- data/spec/lib/storytime/constraints/page_constraint_spec.rb +40 -0
- data/spec/lib/storytime_helpers_spec.rb +2 -2
- data/spec/models/navigation_spec.rb +3 -3
- data/spec/models/post_spec.rb +29 -29
- data/spec/models/snippet_spec.rb +31 -0
- data/spec/models/subscription_spec.rb +4 -4
- data/spec/models/tagging_spec.rb +14 -14
- data/spec/models/version_spec.rb +29 -29
- data/spec/policies/comment_policy_spec.rb +11 -11
- data/spec/policies/post_policy_spec.rb +13 -13
- data/spec/requests/pages_spec.rb +37 -0
- data/spec/requests/routings_spec.rb +14 -15
- data/spec/spec_helper.rb +8 -15
- data/spec/support/domains.rb +2 -2
- data/spec/support/feature_macros.rb +5 -5
- data/spec/support/pundit_matcher.rb +3 -3
- data/storytime.gemspec +15 -20
- data/vendor/assets/javascripts/codemirror/addons/edit/closebrackets.js +195 -0
- data/vendor/assets/javascripts/codemirror/addons/edit/closetag.js +169 -0
- data/vendor/assets/javascripts/codemirror/addons/fold/xml-fold.js +182 -0
- data/vendor/assets/javascripts/codemirror.js +8922 -0
- data/vendor/assets/javascripts/medium-editor.min.js +3 -3
- data/vendor/assets/stylesheets/codemirror/themes/solarized.css +169 -0
- data/vendor/assets/stylesheets/codemirror.css +347 -0
- metadata +94 -134
- data/config/initializers/storytime_admin.rb +0 -5
- data/config/spring.rb +0 -1
- data/spec/dummy/app/controllers/storytime_admin/widgets_controller.rb +0 -5
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
|
@@ -81,7 +81,7 @@ module Storytime
|
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
def permitted_attributes
|
|
84
|
-
attrs = [:title, :draft_content, :draft_version_id, :excerpt, :featured_media_id, :secondary_media_id, :slug, :published_at_date, :notifications_enabled, :published_at_time, {:tag_list => []}]
|
|
84
|
+
attrs = [:title, :draft_content, :draft_version_id, :excerpt, :featured_media_id, :secondary_media_id, :slug, :published_at_date, :notifications_enabled, :published_at_time, :canonical_url, {:tag_list => []}]
|
|
85
85
|
attrs << :published if publish?
|
|
86
86
|
attrs
|
|
87
87
|
end
|
|
@@ -103,15 +103,6 @@
|
|
|
103
103
|
<ul class="nav nav-menu-nav">
|
|
104
104
|
<li><%= link_to icon("plus", "New Blog"), [storytime, :new, :dashboard, :blog], class: "storytime-modal-trigger", remote: true %></li>
|
|
105
105
|
</ul>
|
|
106
|
-
|
|
107
|
-
<% if Pundit.policy(current_user, :admin).manage? && StorytimeAdmin.models.length > 0 %>
|
|
108
|
-
<h4 class="nav-menu-divider">Admin</h4>
|
|
109
|
-
<ul class="nav nav-menu-nav">
|
|
110
|
-
<% StorytimeAdmin.models.sort.each do |model| %>
|
|
111
|
-
<%= nav_item model.pluralize.titleize, [storytime_admin, *polymorphic_route_components(model)], nav_id: [:admin, model] %>
|
|
112
|
-
<% end %>
|
|
113
|
-
</ul>
|
|
114
|
-
<% end %>
|
|
115
106
|
</div>
|
|
116
107
|
</nav>
|
|
117
108
|
<div id='off-canvas-overlay'></div>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<div class="row">
|
|
6
6
|
<div class="col-md-8 col-md-offset-2">
|
|
7
7
|
<ul class="list-group" style="margin: 0;">
|
|
8
|
-
<%= render partial: 'storytime/dashboard/versions/version
|
|
8
|
+
<%= render partial: 'storytime/dashboard/versions/version', collection: @post.versions.order(created_at: :desc), locals: { versionable: @post } %>
|
|
9
9
|
</ul>
|
|
10
10
|
<%= link_to "Done", '#', class: "btn btn-primary btn-outline pull-right", style: "margin-top: 10px; margin-right: 15px;", data: { toggle: 'collapse', target: '#versions-panel' } %>
|
|
11
11
|
</div>
|
|
@@ -49,6 +49,10 @@
|
|
|
49
49
|
<%= f.input :published_at, as: :date_time_picker, label: "Publish Date/Time", input_html: { style: "display: inline;" } %>
|
|
50
50
|
</div>
|
|
51
51
|
</div>
|
|
52
|
+
|
|
53
|
+
<div class="post_field post_canonical_url">
|
|
54
|
+
<%= f.input :canonical_url, required: false, label: "Canonical URL", placeholder: "https://example.com/original-post", hint: "Optional. Set this if the post was originally published elsewhere." %>
|
|
55
|
+
</div>
|
|
52
56
|
|
|
53
57
|
<hr>
|
|
54
58
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
json.html(render partial: "form
|
|
1
|
+
json.html(render partial: "form", formats: [:html])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
json.html(render partial: "storytime/dashboard/blogs/blog
|
|
1
|
+
json.html(render partial: "storytime/dashboard/blogs/blog", collection: Storytime::Blog.all, formats: [:html])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
json.html(render partial: "form
|
|
1
|
+
json.html(render partial: "form", formats: [:html])
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<% @media.in_groups_of(5, false) do |media_row| %>
|
|
4
4
|
<div class="row">
|
|
5
5
|
<% media_row.each do |media| %>
|
|
6
|
-
<%= render
|
|
6
|
+
<%= render "storytime/dashboard/media/media", media: media %>
|
|
7
7
|
<% end %>
|
|
8
8
|
</div>
|
|
9
9
|
<% end %>
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
</div>
|
|
16
16
|
|
|
17
17
|
<div>
|
|
18
|
-
<%= render "storytime/dashboard/media/form
|
|
19
|
-
<div id="media_gallery_container"><%= render "storytime/dashboard/media/gallery
|
|
18
|
+
<%= render "storytime/dashboard/media/form" %>
|
|
19
|
+
<div id="media_gallery_container"><%= render "storytime/dashboard/media/gallery" %></div>
|
|
20
20
|
</div>
|
|
21
21
|
</div>
|
|
22
22
|
<div class='modal-footer'>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
json.(@media, :id, :file_url, :user_id, :created_at)
|
|
2
|
-
json.html render(partial: "storytime/dashboard/media/media
|
|
2
|
+
json.html render(partial: "storytime/dashboard/media/media", locals: {media: @media}, formats: [:html])
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
</div>
|
|
10
10
|
<div class="scroll-panel-body">
|
|
11
11
|
|
|
12
|
-
<%= render 'storytime/dashboard/settings_tabs
|
|
12
|
+
<%= render 'storytime/dashboard/settings_tabs' %>
|
|
13
13
|
|
|
14
14
|
<input type="hidden" value="<%= params[:controller].camelize %>" id="storytime-modal-controller">
|
|
15
15
|
<input type="hidden" value="<%= params[:action].camelize %>" id="storytime-modal-action">
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
</div>
|
|
9
9
|
<div class="scroll-panel-body">
|
|
10
10
|
|
|
11
|
-
<%= render 'storytime/dashboard/settings_tabs
|
|
11
|
+
<%= render 'storytime/dashboard/settings_tabs' %>
|
|
12
12
|
|
|
13
13
|
<input type="hidden" value="<%= params[:controller].camelize %>" id="storytime-modal-controller">
|
|
14
14
|
<input type="hidden" value="<%= params[:action].camelize %>" id="storytime-modal-action">
|
|
@@ -24,14 +24,14 @@
|
|
|
24
24
|
</h4>
|
|
25
25
|
</div>
|
|
26
26
|
<div id="collapseListGroup1" class="panel-collapse collapse" role="tabpanel" aria-labelledby="collapseListGroupHeading1">
|
|
27
|
-
<%= render "storytime/dashboard/memberships/form
|
|
27
|
+
<%= render "storytime/dashboard/memberships/form" %>
|
|
28
28
|
</div>
|
|
29
29
|
</div>
|
|
30
30
|
</div>
|
|
31
31
|
<% end %>
|
|
32
32
|
|
|
33
33
|
<ul class="list-group list-group-button-links">
|
|
34
|
-
<%= render partial: 'storytime/dashboard/memberships/membership
|
|
34
|
+
<%= render partial: 'storytime/dashboard/memberships/membership', collection: @memberships %>
|
|
35
35
|
</ul>
|
|
36
36
|
|
|
37
37
|
<%= paginate @memberships, remote: true %>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
json.(@membership)
|
|
2
|
-
json.html(render partial: "edit
|
|
2
|
+
json.html(render partial: "edit", formats: [:html])
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
json.(@memberships)
|
|
2
|
-
json.html(render partial: "storytime/dashboard/memberships/index
|
|
2
|
+
json.html(render partial: "storytime/dashboard/memberships/index", formats: [:html])
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
json.(@membership)
|
|
2
|
-
json.html(render partial: "new
|
|
2
|
+
json.html(render partial: "new", formats: [:html])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
json.html(render partial: "storytime/dashboard/memberships/index
|
|
1
|
+
json.html(render partial: "storytime/dashboard/memberships/index", formats: [:html])
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<div class="row">
|
|
6
6
|
<div class="col-md-8 col-md-offset-2">
|
|
7
7
|
<ul class="list-group" style="margin: 0;">
|
|
8
|
-
<%= render partial: 'storytime/dashboard/versions/version
|
|
8
|
+
<%= render partial: 'storytime/dashboard/versions/version', collection: @post.versions.order(created_at: :desc), locals: { versionable: @post } %>
|
|
9
9
|
</ul>
|
|
10
10
|
<%= link_to "Done", '#', class: "btn btn-primary btn-outline pull-right", style: "margin-top: 10px; margin-right: 15px;", data: { toggle: 'collapse', target: '#versions-panel' } %>
|
|
11
11
|
</div>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<li class="list-group-item">
|
|
2
|
+
<%= link_to [
|
|
3
|
+
storytime,
|
|
4
|
+
:dashboard,
|
|
5
|
+
Storytime::Page,
|
|
6
|
+
dir: [params[:dir], directory].compact.join("/"),
|
|
7
|
+
published: params[:published],
|
|
8
|
+
draft: params[:draft]
|
|
9
|
+
],
|
|
10
|
+
id: "",
|
|
11
|
+
class: "list-group-link" do %>
|
|
12
|
+
<div class="row">
|
|
13
|
+
<div class="col-md-8">
|
|
14
|
+
<h4><%= icon("folder-open-o") %> <%= directory %></h4>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
<% end %>
|
|
18
|
+
</li>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<div class="row">
|
|
6
6
|
<div class="col-md-8 col-md-offset-2">
|
|
7
7
|
<ul class="list-group" style="margin: 0;">
|
|
8
|
-
<%= render partial: 'storytime/dashboard/versions/version
|
|
8
|
+
<%= render partial: 'storytime/dashboard/versions/version', collection: @post.versions.order(created_at: :desc), locals: { versionable: @post } %>
|
|
9
9
|
</ul>
|
|
10
10
|
<%= link_to "Done", '#', class: "btn btn-primary btn-outline pull-right", style: "margin-top: 10px; margin-right: 15px;", data: { toggle: 'collapse', target: '#versions-panel' } %>
|
|
11
11
|
</div>
|
|
@@ -1,26 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
<%= link_to [:edit, :dashboard, post], id: "", class: "list-group-link" do %>
|
|
4
|
-
<div class="row">
|
|
5
|
-
<div class="col-md-8">
|
|
6
|
-
<h4><%= post.title %></h4>
|
|
7
|
-
</div>
|
|
8
|
-
</div>
|
|
9
|
-
|
|
10
|
-
<p class="text-muted">
|
|
11
|
-
<% if post.published? && post.published_at <= Time.now %>
|
|
12
|
-
Published <%= time_ago_in_words post.published_at %> ago
|
|
13
|
-
<% elsif post.published? %>
|
|
14
|
-
<span class="label label-warning">Draft</span>
|
|
15
|
-
Scheduled to publish on <%= post.published_at.strftime("%B %e at %l:%M %p") %>
|
|
16
|
-
<% else %>
|
|
17
|
-
<span class="label label-warning">Draft</span>
|
|
18
|
-
Last edited <%= time_ago_in_words post.updated_at %> ago
|
|
19
|
-
<% end %>
|
|
20
|
-
</p>
|
|
21
|
-
<% end %>
|
|
22
|
-
<div class="list-group-actions">
|
|
23
|
-
<%= delete_resource_link post, [:dashboard, post] %>
|
|
24
|
-
</div>
|
|
25
|
-
</li>
|
|
26
|
-
<% end %>
|
|
1
|
+
<%= render collection: @directories, partial: "storytime/dashboard/posts/directory" %>
|
|
2
|
+
<%= render collection: @posts, partial: "storytime/dashboard/posts/post" %>
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
</button>
|
|
5
5
|
<ul class="dropdown-menu dropdown-menu-right" role="menu">
|
|
6
6
|
<% Storytime.post_types.reject{|type| %w[Storytime::Post Storytime::Page Storytime::Blog].include? type }.each do |post_type| %>
|
|
7
|
-
<li><%= link_to "#{post_type.split('::').last.titleize}", [:new, :dashboard, @blog, post_type.split("::").last.tableize.singularize] %></li>
|
|
7
|
+
<li><%= link_to "#{post_type.split('::').last.titleize}", [:new, :dashboard, @blog, post_type.split("::").last.tableize.singularize.to_sym] %></li>
|
|
8
8
|
<% end %>
|
|
9
9
|
</ul>
|
|
10
10
|
</div>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<li class="list-group-item" id="<%= post.class.to_s.downcase.split("::").last %>_<%= post.id %>">
|
|
2
|
+
<%= link_to [:edit, :dashboard, post], id: "", class: "list-group-link" do %>
|
|
3
|
+
<div class="row">
|
|
4
|
+
<div class="col-md-8">
|
|
5
|
+
<h4><%= post.title %></h4>
|
|
6
|
+
</div>
|
|
7
|
+
</div>
|
|
8
|
+
|
|
9
|
+
<div class="row post-row-subtext">
|
|
10
|
+
<div class="col-md-6"><%= "/#{post.slug}" %></div>
|
|
11
|
+
|
|
12
|
+
<div class="col-md-6 text-muted text-right">
|
|
13
|
+
<% if post.published? && post.published_at <= Time.now %>
|
|
14
|
+
Published <%= time_ago_in_words post.published_at %> ago
|
|
15
|
+
<% elsif post.published? %>
|
|
16
|
+
<span class="label label-warning">Draft</span>
|
|
17
|
+
Scheduled to publish on <%= post.published_at.strftime("%B %e at %l:%M %p") %>
|
|
18
|
+
<% else %>
|
|
19
|
+
<span class="label label-warning">Draft</span>
|
|
20
|
+
Last edited <%= time_ago_in_words post.updated_at %> ago
|
|
21
|
+
<% end %>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
<% end %>
|
|
25
|
+
<div class="list-group-actions">
|
|
26
|
+
<%= delete_resource_link post, [:dashboard, post] %>
|
|
27
|
+
</div>
|
|
28
|
+
</li>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<li class="pull-right">
|
|
2
|
+
<div class="btn-group margin-right" style="margin-right: 10px;">
|
|
3
|
+
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
|
|
4
|
+
Sort <span class="caret"></span>
|
|
5
|
+
</button>
|
|
6
|
+
<ul class="dropdown-menu dropdown-menu-right" role="menu" style="top: 125%;">
|
|
7
|
+
<li>
|
|
8
|
+
<%= link_to "Title", { sort: "title" } %>
|
|
9
|
+
</li>
|
|
10
|
+
<li>
|
|
11
|
+
<%= link_to "Slug", { sort: "slug" } %>
|
|
12
|
+
</li>
|
|
13
|
+
<li>
|
|
14
|
+
<%= link_to "Publish Date", { sort: "published_at" } %>
|
|
15
|
+
</li>
|
|
16
|
+
<li>
|
|
17
|
+
<%= link_to "Creation Date", { sort: "created_at" } %>
|
|
18
|
+
</li>
|
|
19
|
+
</ul>
|
|
20
|
+
</div>
|
|
21
|
+
</li>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<%= link_to "#", class: "btn btn-default btn-icon pull-left visible-xs visible-sm", data: { toggle: "off-canvas", target: "#dashboard-nav" } do %>
|
|
6
6
|
<i class="icon-st-icons-st-logo"></i>
|
|
7
7
|
<% end %>
|
|
8
|
-
|
|
8
|
+
|
|
9
9
|
<% if @blog %>
|
|
10
10
|
<div class="pull-right">
|
|
11
11
|
|
|
@@ -61,8 +61,10 @@
|
|
|
61
61
|
<%= link_to "Published", [:dashboard, current_post_type, published: 'true'] %>
|
|
62
62
|
<% end %>
|
|
63
63
|
</li>
|
|
64
|
+
|
|
65
|
+
<%= render "storytime/dashboard/posts/sorts" %>
|
|
64
66
|
</ul>
|
|
65
|
-
<ul class="list-group list-group-button-links">
|
|
67
|
+
<ul class="list-group list-group-button-links post-list">
|
|
66
68
|
<%= render 'list' %>
|
|
67
69
|
</ul>
|
|
68
70
|
<div class="pagination-wrapper">
|
|
@@ -70,4 +72,4 @@
|
|
|
70
72
|
</div>
|
|
71
73
|
</div>
|
|
72
74
|
</div>
|
|
73
|
-
</div>
|
|
75
|
+
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
json.html render(partial: "storytime/dashboard/roles/form
|
|
1
|
+
json.html render(partial: "storytime/dashboard/roles/form", formats: [:html])
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<input type="hidden" value="<%= params[:controller].camelize %>" id="storytime-modal-controller">
|
|
13
13
|
<input type="hidden" value="<%= params[:action].camelize %>" id="storytime-modal-action">
|
|
14
14
|
|
|
15
|
-
<%= render 'storytime/dashboard/settings_tabs
|
|
15
|
+
<%= render 'storytime/dashboard/settings_tabs' %>
|
|
16
16
|
|
|
17
17
|
<%= f.error_notification %>
|
|
18
18
|
<%= f.input :title %>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
json.(@site)
|
|
2
|
-
json.html render(partial: "storytime/dashboard/sites/form
|
|
2
|
+
json.html render(partial: "storytime/dashboard/sites/form", formats: [:html])
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<div class="scroll-panel-body">
|
|
10
10
|
|
|
11
11
|
<ul class="list-group list-group-button-links">
|
|
12
|
-
<%= render partial: 'snippet
|
|
12
|
+
<%= render partial: 'snippet', collection: @snippets %>
|
|
13
13
|
</ul>
|
|
14
14
|
|
|
15
15
|
<%= paginate @snippets, param_name: "page_number", remote: true %>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
json.html(render partial: "form
|
|
1
|
+
json.html(render partial: "form", formats: [:html])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
json.html(render partial: "form
|
|
1
|
+
json.html(render partial: "form", formats: [:html])
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
</div>
|
|
10
10
|
<div class="scroll-panel-body">
|
|
11
11
|
|
|
12
|
-
<%= render 'storytime/dashboard/settings_tabs
|
|
12
|
+
<%= render 'storytime/dashboard/settings_tabs', formats: [:html] %>
|
|
13
13
|
|
|
14
14
|
<%= f.input :site_id, as: :hidden, input_html: { value: @current_storytime_site.id } %>
|
|
15
15
|
<%= f.input :email %>
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
</div>
|
|
9
9
|
<div class="scroll-panel-body">
|
|
10
10
|
|
|
11
|
-
<%= render 'storytime/dashboard/settings_tabs
|
|
11
|
+
<%= render 'storytime/dashboard/settings_tabs' %>
|
|
12
12
|
|
|
13
13
|
<ul class="list-group list-group-button-links">
|
|
14
|
-
<%= render partial: 'subscription
|
|
14
|
+
<%= render partial: 'subscription', collection: @subscriptions %>
|
|
15
15
|
</ul>
|
|
16
16
|
|
|
17
17
|
<%= paginate @subscriptions, param_name: "page_number", remote: true %>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
json.html(render partial: "form
|
|
1
|
+
json.html(render partial: "form", formats: [:html])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
json.html(render partial: "index
|
|
1
|
+
json.html(render partial: "index", formats: [:html])
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
</div>
|
|
5
5
|
<div id="versions-panel" class="collapse">
|
|
6
6
|
<ul class="list-group" style="margin: 0;">
|
|
7
|
-
<%= render partial: 'storytime/dashboard/versions/version
|
|
7
|
+
<%= render partial: 'storytime/dashboard/versions/version', collection: versionable.versions.order(created_at: :desc), locals: {versionable: versionable } %>
|
|
8
8
|
</ul>
|
|
9
9
|
</div>
|
|
10
10
|
</div>
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
<% if @post.canonical_url.present? %>
|
|
2
|
+
<% content_for :head do %>
|
|
3
|
+
<link rel="canonical" href="<%= @post.canonical_url %>">
|
|
4
|
+
<% end %>
|
|
5
|
+
<% end %>
|
|
6
|
+
|
|
1
7
|
<div class="container">
|
|
2
8
|
<% if params[:preview] %>
|
|
3
9
|
<div class="alert alert-info" role="alert">Currently viewing a preview of "<%= @post.title %>".</div>
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
<% unless @current_storytime_site.nil? || @current_storytime_site.ga_tracking_id.blank? %>
|
|
2
|
+
<script async src="https://www.googletagmanager.com/gtag/js?id=<%= @current_storytime_site.ga_tracking_id %>"></script>
|
|
2
3
|
<script>
|
|
3
|
-
|
|
4
|
-
(
|
|
5
|
-
|
|
6
|
-
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
|
7
|
-
|
|
8
|
-
ga('create', '<%= @current_storytime_site.ga_tracking_id %>', {'allowAnchor': true});
|
|
9
|
-
|
|
10
|
-
ga('send', 'pageview', { 'page': location.pathname + location.search + location.hash});
|
|
4
|
+
window.dataLayer = window.dataLayer || [];
|
|
5
|
+
function gtag(){dataLayer.push(arguments);}
|
|
6
|
+
gtag('js', new Date());
|
|
11
7
|
|
|
8
|
+
gtag('config', '<%= @current_storytime_site.ga_tracking_id %>');
|
|
12
9
|
</script>
|
|
13
10
|
<% end %>
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
Rails.application.config.assets.precompile += %w( chosen-sprite.png chosen-sprite@2x.png tidy.js )
|
|
1
|
+
Rails.application.config.assets.precompile += %w( chosen-sprite.png chosen-sprite@2x.png tidy.js )
|
|
2
|
+
Rails.application.config.assets.precompile += %w( *.svg *.eot *.woff *.woff2 *.ttf )
|
|
@@ -1,14 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
module
|
|
3
|
-
|
|
1
|
+
if Rails::VERSION::MAJOR < 5 || (Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR == 0)
|
|
2
|
+
module ActionDispatch
|
|
3
|
+
module Routing
|
|
4
|
+
class RouteSet
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
if Rails::VERSION::MAJOR == 4 && Rails::VERSION::MINOR == 1
|
|
7
|
+
def url_for_with_storytime(options = {})
|
|
8
|
+
Storytime::PostUrlHandler.handle_url(options)
|
|
9
|
+
url_for_without_storytime(options)
|
|
10
|
+
end
|
|
11
|
+
else
|
|
12
|
+
def url_for_with_storytime(options, route_name = nil, url_strategy = UNKNOWN)
|
|
13
|
+
Storytime::PostUrlHandler.handle_url(options)
|
|
14
|
+
url_for_without_storytime(options, route_name, url_strategy)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
9
17
|
|
|
10
|
-
|
|
18
|
+
alias_method_chain :url_for, :storytime
|
|
11
19
|
|
|
20
|
+
end
|
|
12
21
|
end
|
|
13
22
|
end
|
|
23
|
+
else
|
|
24
|
+
ActionDispatch::Routing::RouteSet.prepend(Storytime::PostUrlHandler)
|
|
14
25
|
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Additional translations at https://github.com/plataformatec/devise/wiki/I18n
|
|
2
|
+
|
|
3
|
+
zh-CN:
|
|
4
|
+
devise:
|
|
5
|
+
confirmations:
|
|
6
|
+
confirmed: "你的电子邮件地址以被成功确认。"
|
|
7
|
+
send_instructions: "你在几分钟后会收到一封电子邮件告诉你如何确认你的电子邮件地址。"
|
|
8
|
+
send_paranoid_instructions: "如果我们的数据库中保存有你的电子邮件地址,你会在几分钟内收到一封邮件告诉你如何确认的电子邮件。"
|
|
9
|
+
failure:
|
|
10
|
+
already_authenticated: "你已经登录。"
|
|
11
|
+
inactive: "你的帐户还未激活。"
|
|
12
|
+
invalid: "非法的 %{authentication_keys} 或密码。"
|
|
13
|
+
locked: "你的帐号已被锁定。"
|
|
14
|
+
last_attempt: "你还有最后一次尝试机会,如果再次失败你的帐号将被锁定。"
|
|
15
|
+
not_found_in_database: "非法的 %{authentication_keys} 或密码。"
|
|
16
|
+
timeout: "你的登录超时,请重新登录。"
|
|
17
|
+
unauthenticated: "你需要登录或注册才能继续操作。"
|
|
18
|
+
unconfirmed: "你需要确认你的电子邮件地址才能继续。"
|
|
19
|
+
mailer:
|
|
20
|
+
confirmation_instructions:
|
|
21
|
+
subject: "帐户确认指南"
|
|
22
|
+
reset_password_instructions:
|
|
23
|
+
subject: "重置密码指南"
|
|
24
|
+
unlock_instructions:
|
|
25
|
+
subject: "Pivorak: 解锁指南"
|
|
26
|
+
omniauth_callbacks:
|
|
27
|
+
failure: "由于%{reason},无法从%{kind} 认证。"
|
|
28
|
+
success: "成功从 %{kind} 认证帐户。"
|
|
29
|
+
passwords:
|
|
30
|
+
no_token: "如果没有密码重置邮件无法访问这个页面。如果你是从密码重置邮件访问过来的,请确认输入的网址完整。"
|
|
31
|
+
send_instructions: "在几分钟内你会收到一封密码重置邮件。"
|
|
32
|
+
send_paranoid_instructions: "如果我们的数据库中保存有你的电子邮件地址,你会在几分钟内收到一封如何恢复密码的邮件。"
|
|
33
|
+
updated: "你的密码已被成功更改,你现在已经登录。"
|
|
34
|
+
updated_not_active: "你的密码已被成功更改。"
|
|
35
|
+
registrations:
|
|
36
|
+
destroyed: "再见!你的帐户已被成功取消。希望能再次见到你。"
|
|
37
|
+
signed_up: "欢迎!你已经成功注册。"
|
|
38
|
+
signed_up_but_inactive: "你已经成功注册。但是由于你的帐户未激活,你仍无法登录。"
|
|
39
|
+
signed_up_but_locked: "你已经成功注册。但是由于你的帐户被锁定,你仍无法登录。"
|
|
40
|
+
signed_up_but_unconfirmed: "我们已向你的邮箱发送了一封确认邮件。请单击邮件中的链接激活你的帐户。"
|
|
41
|
+
update_needs_confirmation: "你已经成功更新帐户,但我们需要验证你的电子邮件地址。请检查你的邮件并确认你的子邮件地址。"
|
|
42
|
+
updated: "你的帐户已被成功更新。"
|
|
43
|
+
sessions:
|
|
44
|
+
signed_in: "成功登录。"
|
|
45
|
+
signed_out: "成功注销。"
|
|
46
|
+
unlocks:
|
|
47
|
+
send_instructions: "在几分钟内你会收到一封如何解锁帐户的邮件。"
|
|
48
|
+
send_paranoid_instructions: "如果你的帐户存在,在几分钟内你会收到一封如何解锁帐户的邮件。"
|
|
49
|
+
unlocked: "你的帐户已被成功解锁,请重新登录。"
|
|
50
|
+
errors:
|
|
51
|
+
messages:
|
|
52
|
+
already_confirmed: "已确认,请尝试登录"
|
|
53
|
+
confirmation_period_expired: "需要在 %{period} 内确认,请重新注册"
|
|
54
|
+
expired: "已过期,请重新注册"
|
|
55
|
+
not_found: "未找到"
|
|
56
|
+
not_locked: "未被锁定"
|
|
57
|
+
not_saved:
|
|
58
|
+
one: "出现一个错误导致 %{resource} 不能被保存:"
|
|
59
|
+
other: "出现 %{count} 个错误导致 %{resource} 不能被保存:"
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
zh-CN:
|
|
2
|
+
views:
|
|
3
|
+
pagination:
|
|
4
|
+
first: "«"
|
|
5
|
+
last: "»"
|
|
6
|
+
previous: "‹"
|
|
7
|
+
next: "›"
|
|
8
|
+
truncate: "…"
|
|
9
|
+
helpers:
|
|
10
|
+
page_entries_info:
|
|
11
|
+
one_page:
|
|
12
|
+
display_entries:
|
|
13
|
+
zero: "未找到 %{entry_name}"
|
|
14
|
+
one: "显示 <b>1</b> 条 %{entry_name}"
|
|
15
|
+
other: "显示 <b>所有 %{count}</b> 条 %{entry_name}"
|
|
16
|
+
more_pages:
|
|
17
|
+
display_entries: "显示 %{entry_name} <b>%{first} - %{last}</b> 共 <b>%{total}</b>"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
zh-CN:
|
|
2
|
+
simple_form:
|
|
3
|
+
"yes": '是'
|
|
4
|
+
"no": '否'
|
|
5
|
+
required:
|
|
6
|
+
text: '必添'
|
|
7
|
+
mark: '*'
|
|
8
|
+
# You can uncomment the line below if you need to overwrite the whole required html.
|
|
9
|
+
# When using html, text and mark won't be used.
|
|
10
|
+
# html: '<abbr title="required">*</abbr>'
|
|
11
|
+
error_notification:
|
|
12
|
+
default_message: "请检查如下问题:"
|
|
13
|
+
# Labels and hints examples
|
|
14
|
+
# labels:
|
|
15
|
+
# defaults:
|
|
16
|
+
# password: 'Password'
|
|
17
|
+
# user:
|
|
18
|
+
# new:
|
|
19
|
+
# email: 'E-mail to sign in.'
|
|
20
|
+
# edit:
|
|
21
|
+
# email: 'E-mail.'
|
|
22
|
+
# hints:
|
|
23
|
+
# defaults:
|
|
24
|
+
# username: 'User name to sign in.'
|
|
25
|
+
# password: 'No special characters, please.'
|
|
26
|
+
|