Merge branch 'master' into thredded-report

This commit is contained in:
Andrew Brown 2019-08-13 22:11:46 -05:00 committed by GitHub
commit 4cf00a89cf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 153 additions and 117 deletions

View File

@ -6,8 +6,20 @@
padding-left: 16px;
}
.thredded--navigation-breadcrumbs {
overflow: hidden;
max-height: 60px;
}
.thredded--user-navigation {
height: 64px;
height: 70px;
margin-top: 10px;
margin-right: 10px;
.thredded--user-navigation--item a {
padding: 0;
}
}
.thredded--currently-online {

View File

@ -24,7 +24,7 @@ class RegistrationsController < Devise::RegistrationsController
def account_update_params
params.require(:user).permit(
:name, :email, :username, :password, :password_confirmation, :email_updates, :fluid_preference,
:bio, :favorite_genre, :favorite_author, :interests, :age, :location, :gender
:bio, :favorite_genre, :favorite_author, :interests, :age, :location, :gender, :forums_badge_text
)
end

View File

@ -78,6 +78,7 @@ class UsersController < ApplicationController
private
def user_params
# todo is this used anywhere?
params.permit(:id, :username)
end
end

View File

@ -8,6 +8,7 @@ class DocumentMentionJob < ApplicationJob
document = Document.find(document_id)
return unless document.present?
return if document.body.nil? || document.body.empty?
analysis = Documents::Analysis::DocumentAnalysisService.create_placeholder_analysis(document)

View File

@ -17,6 +17,11 @@ class User < ApplicationRecord
allow_blank: true,
length: { maximum: 40 },
format: /\A[A-Za-z0-9\-_\$\+\!\*]+\z/
validates :forums_badge_text,
allow_nil: true,
allow_blank: true,
length: { maximum: 20 }
has_many :subscriptions, dependent: :destroy
has_many :billing_plans, through: :subscriptions

View File

@ -45,6 +45,16 @@
</div>
</div>
</div>
<div class="card">
<div class="card-content">
<div class="field">
<%= f.label 'Custom Premium badge text' %><br />
<%= f.text_field :forums_badge_text, data: { length: 20 }, class: 'with-character-counter', placeholder: 'Premium Supporter' %>
<small class="help-text">Premium users can customize the badge that appears under their name on their profile and next to their name on the forums.</small><br />
</div>
</div>
</div>
</div>
</div>

View File

@ -69,22 +69,24 @@
l_width = 6
%>
<% unless true || current_user.notice_dismissals.where(notice_id: 1).any? %>
<% unless current_user.notice_dismissals.where(notice_id: 2).any? %>
<div class="dashboard-row col <%= "s#{s_width} m#{m_width} l#{l_width}" %>">
<div class="cyan card" style="height: 260px; margin-bottom: 0;">
<div class="<%= Document.color %> card" style="height: 260px; margin-bottom: 0;">
<div class="card-content">
<h4 class="card-title white-text" style="margin-top: 10px">
<span class="badge new white black-text left" style="margin: 0; margin-right: 8px; position: relative; top: 4px;"></span>
School, Sport, and Food pages
Analyze your writing with world-class AI
</h4>
<p class="white-text">
To celebrate the launch of our three new Premium pages,
you can now create as many <strong>School</strong> pages as you'd like during the month of June!
Premium users can now analyze their documents &mdash; and the characters within them &mdash; for readability, style, and emotion with IBM Watson's AI.
</p>
<br />
<p class="white-text">
Learn more at our blog post below:
</p>
</div>
<div class="card-action cyan lighten-1 hoverable">
<%= link_to 'Read more', 'https://www.notebook.ai/forum/announcements/new-page-types-food-sports-and-schools-and-a-special-surprise', class: 'white-text' %>
<%= link_to 'Customize my pages', main_app.customization_content_types_path, class: 'white-text' %>
<div class="card-action <%= Document.color %> lighten-1 hoverable">
<%= link_to 'Read more', 'https://medium.com/indent-labs/adding-the-ai-to-notebook-ai-950f44d231e5', target: '_new', class: 'white-text' %>
<%= link_to 'Dismiss', notice_dismissal_dismiss_path(notice_id: 1), class: 'white-text right' %>
</div>
</div>

View File

@ -63,7 +63,7 @@ body {
</div>
<div class="row">
<div class="col s8">
<div class="col s7">
<div>
<h4>How do I use it?</h4>
<p class="light">
@ -86,7 +86,7 @@ body {
</p>
</div>
</div>
<div class="col s4">
<div class="col s4 offset-s1">
<%= image_tag 'screenshots/dashboard.png' %>
</div>
</div>
@ -98,7 +98,7 @@ body {
<div class="container">
<div class="section">
<div class="row">
<% [Character, Location, Item, Creature, Race, Religion, Group, Magic, Language].each do |content_type| %>
<% Rails.application.config.content_types[:all_non_universe].each do |content_type| %>
<div class="col l4 m4 s12">
<%= render partial: 'cards/intros/content_type_intro', locals: { content_type: content_type } %>
</div>
@ -112,7 +112,7 @@ body {
<div class="section">
<div class="row">
<div class="col s7">
<div class="col s6">
<div>
<h4>Separate your worlds with Universes</h4>
<p class="light">
@ -131,7 +131,7 @@ body {
</div>
</div>
</div>
<div class="col s5">
<div class="col s5 offset-s1">
<%= image_tag 'screenshots/universe.png', class: 'left' %>
</div>
</div>
@ -140,7 +140,7 @@ body {
<div class="col s5">
<%= image_tag 'screenshots/sharing.png', class: 'right' %>
</div>
<div class="col s7">
<div class="col s6 offset-s1">
<div>
<h4>Share your game with your team with easy privacy rules</h4>
<p class="light">
@ -174,9 +174,9 @@ body {
</div>
<div class="row">
<div class="col s7">
<div class="col s6">
<div>
<h4>Keep your game focused in a rich world of consistent details</h4>
<h4>Keep your world focused with consistent details</h4>
<p class="light">
Having an in-depth reference while developing your game lets you quickly look up even the smallest of details when you need them
and keep working uninterrupted. You'll never again have to flip backward to find out what quest rewards should be, or exactly how
@ -201,7 +201,7 @@ body {
</div>
</div>
</div>
<div class="col s5">
<div class="col s5 offset-s1">
<%= image_tag 'screenshots/character.png', class: 'left' %>
</div>
</div>
@ -210,7 +210,7 @@ body {
<div class="col s5">
<%= image_tag 'screenshots/gallery.png', class: 'right' %>
</div>
<div class="col s7">
<div class="col s6 offset-s1">
<div>
<h4>Upload images for inspiration or reference</h4>
<p class="light">
@ -236,7 +236,7 @@ body {
</div>
<div class="row">
<div class="col s7">
<div class="col s6">
<div>
<h4>Export your entire notebook in more and more formats</h4>
<p class="light">
@ -253,7 +253,7 @@ body {
</div>
</div>
</div>
<div class="col s5">
<div class="col s5 offset-s1">
<%= image_tag 'screenshots/exporting.png', class: 'left' %>
</div>
</div>
@ -266,7 +266,7 @@ body {
<div class="card-panel blue white-text hoverable" style="height: 160px">
<div class="row">
<div class="col s9">
<h1 style="font-size: 26px;">
<h1 style="font-size: 26px; display: inline">
<%= link_to 'Start worldbuilding right now.', new_user_registration_path, class: 'white-text' %>
</h1>
<h5 style="font-size: 16px;">No card needed. Upgrade seamlessly any time.</h5>
@ -360,7 +360,7 @@ body {
<div>
<h4>How much does it cost?</h4>
<div class="row">
<div class="col s9">
<div class="col s7">
<p class="light">
<strong>Creating core notebook pages (universes, characters, locations, and items) is free</strong> and doesn't require
any payment information to start creating your novel's world immediately upon signup. Free users, however,
@ -376,12 +376,12 @@ body {
Additionally, a Premium subscription also increases your image upload storage from 50MB to 10GB.
</p>
</div>
<div class="col s3">
<% [Character, Location, Item, Creature, Race, Religion, Group, Magic, Language].each_with_index do |content_type, i| %>
<i class="material-icons <%= content_type.color %>-text tooltipped" style="font-size: 72px" data-delay="100" data-tooltip="<%= User.new.can_create?(content_type) ? 'All' : 'Premium' %> users can create unlimited <%= content_type.name.pluralize %>.">
<div class="col s4 offset-s1">
<% Rails.application.config.content_types[:all].each_with_index do |content_type, i| %>
<i class="material-icons <%= content_type.color %>-text tooltipped medium" data-delay="100" data-tooltip="<%= User.new.can_create?(content_type) ? 'All' : 'Premium' %> users can create unlimited <%= content_type.name.pluralize %>.">
<%= content_type.icon %>
</i>
<%= '<br />'.html_safe if (i + 1) % 3 == 0 %>
<%= '<br />'.html_safe if (i + 1) % 6 == 0 %>
<% end %>
</div>
</div>

View File

@ -63,7 +63,7 @@ body {
</div>
<div class="row">
<div class="col s8">
<div class="col s7">
<div>
<h4>How do I use it?</h4>
<p class="light">
@ -86,7 +86,7 @@ body {
</p>
</div>
</div>
<div class="col s4">
<div class="col s4 offset-s1">
<%= image_tag 'screenshots/dashboard.png' %>
</div>
</div>
@ -98,7 +98,7 @@ body {
<div class="container">
<div class="section">
<div class="row">
<% [Character, Location, Item, Creature, Race, Religion, Group, Magic, Language].each do |content_type| %>
<% Rails.application.config.content_types[:all_non_universe].each do |content_type| %>
<div class="col l4 m4 s12">
<%= render partial: 'cards/intros/content_type_intro', locals: { content_type: content_type } %>
</div>
@ -110,9 +110,8 @@ body {
<div class="container">
<div class="section">
<div class="row">
<div class="col s7">
<div class="col s6">
<div>
<h4>Separate your worlds with Universes</h4>
<p class="light">
@ -130,7 +129,7 @@ body {
</div>
</div>
</div>
<div class="col s5">
<div class="col s5 offset-s1">
<%= image_tag 'screenshots/universe.png', class: 'left' %>
</div>
</div>
@ -139,7 +138,7 @@ body {
<div class="col s5">
<%= image_tag 'screenshots/sharing.png', class: 'right' %>
</div>
<div class="col s7">
<div class="col s6 offset-s1">
<div>
<h4>Share your campaign with players with easy privacy rules</h4>
<p class="light">
@ -172,7 +171,7 @@ body {
</div>
<div class="row">
<div class="col s7">
<div class="col s6">
<div>
<h4>Keep your players engrossed with a rich world of consistent details</h4>
<p class="light">
@ -198,7 +197,7 @@ body {
</div>
</div>
</div>
<div class="col s5">
<div class="col s5 offset-s1">
<%= image_tag 'screenshots/character.png', class: 'left' %>
</div>
</div>
@ -207,7 +206,7 @@ body {
<div class="col s5">
<%= image_tag 'screenshots/gallery.png', class: 'right' %>
</div>
<div class="col s7">
<div class="col s6 offset-s1">
<div>
<h4>Upload images for inspiration or reference</h4>
<p class="light">
@ -233,7 +232,7 @@ body {
</div>
<div class="row">
<div class="col s7">
<div class="col s6">
<div>
<h4>Build family trees and organization hierarchies with ease</h4>
<p class="light">
@ -258,7 +257,7 @@ body {
</div>
</div>
</div>
<div class="col s5">
<div class="col s5 offset-s1">
<%= image_tag 'screenshots/family-tree.png', class: 'left' %>
</div>
</div>
@ -271,10 +270,10 @@ body {
<div class="card-panel blue white-text hoverable" style="height: 160px">
<div class="row">
<div class="col s9">
<h1 style="font-size: 26px;">
<h1 style="font-size: 26px; display: inline">
<%= link_to 'Start worldbuilding right now.', new_user_registration_path, class: 'white-text' %>
</h1>
<h5 style="font-size: 16px;">No card needed. Upgrade seamlessly any time.</h5>
<h5 style="font-size: 16px;">No card needed. Upgrade or downgrade seamlessly any time.</h5>
</div>
<div class="col s3 valign-wrapper" style="height: 130px;">
<div class="valign">
@ -365,7 +364,7 @@ body {
<div>
<h4>How much does it cost?</h4>
<div class="row">
<div class="col s9">
<div class="col s7">
<p class="light">
<strong>Creating core notebook pages (universes, characters, locations, and items) is free</strong> and doesn't require
any payment information to start creating your novel's world immediately upon signup. Free users, however,
@ -381,12 +380,12 @@ body {
Additionally, a Premium subscription also increases your image upload storage from 50MB to 10GB.
</p>
</div>
<div class="col s3">
<% [Character, Location, Item, Creature, Race, Religion, Group, Magic, Language].each_with_index do |content_type, i| %>
<i class="material-icons <%= content_type.color %>-text tooltipped" style="font-size: 72px" data-delay="100" data-tooltip="<%= User.new.can_create?(content_type) ? 'All' : 'Premium' %> users can create unlimited <%= content_type.name.pluralize %>.">
<div class="col s4 offset-s1">
<% Rails.application.config.content_types[:all].each_with_index do |content_type, i| %>
<i class="material-icons <%= content_type.color %>-text tooltipped medium" data-delay="100" data-tooltip="<%= User.new.can_create?(content_type) ? 'All' : 'Premium' %> users can create unlimited <%= content_type.name.pluralize %>.">
<%= content_type.icon %>
</i>
<%= '<br />'.html_safe if (i + 1) % 3 == 0 %>
<%= '<br />'.html_safe if (i + 1) % 6 == 0 %>
<% end %>
</div>
</div>

View File

@ -63,7 +63,7 @@ body {
</div>
<div class="row">
<div class="col s8">
<div class="col s7">
<div>
<h4>How do I use it?</h4>
<p class="light">
@ -81,12 +81,12 @@ body {
items for any relevant objects or trinkets in your story.
</p>
<p class="light">
Once you've got the basics, just expand outward for your story! Right now, there are nine different page types you can
create in Notebook.ai.
Once you've got the basics, just expand outward for your story! Right now, there are <%= Rails.application.config.content_types[:all_non_universe].count %> different page types you can
create in Notebook.ai: <%= Rails.application.config.content_types[:all_non_universe].map { |t| t.name.downcase.pluralize }.to_sentence %>.
</p>
</div>
</div>
<div class="col s4">
<div class="col s4 offset-s1">
<%= image_tag 'screenshots/dashboard.png' %>
</div>
</div>
@ -112,7 +112,7 @@ body {
<div class="section">
<div class="row">
<div class="col s7">
<div class="col s6">
<div>
<h4>Separate your worlds with Universes</h4>
<p class="light">
@ -129,7 +129,7 @@ body {
</div>
</div>
</div>
<div class="col s5">
<div class="col s5 offset-s1">
<%= image_tag 'screenshots/universe.png', class: 'left' %>
</div>
</div>
@ -138,7 +138,7 @@ body {
<div class="col s5">
<%= image_tag 'screenshots/quick-reference.png', class: 'right' %>
</div>
<div class="col s7">
<div class="col s6 offset-s1">
<div>
<h4>Build your world piece by piece with personalized writing prompts</h4>
<p class="light">
@ -164,7 +164,7 @@ body {
</div>
<div class="row">
<div class="col s7">
<div class="col s6">
<div>
<h4>Keep your readers engrossed with a rich world of consistent details</h4>
<p class="light">
@ -189,7 +189,7 @@ body {
</div>
</div>
</div>
<div class="col s5">
<div class="col s5 offset-s1">
<%= image_tag 'screenshots/character.png', class: 'left' %>
</div>
</div>
@ -198,7 +198,7 @@ body {
<div class="col s5">
<%= image_tag 'screenshots/gallery.png', class: 'right' %>
</div>
<div class="col s7">
<div class="col s6 offset-s1">
<div>
<h4>Upload images for inspiration or reference</h4>
<p class="light">
@ -224,7 +224,7 @@ body {
</div>
<div class="row">
<div class="col s7">
<div class="col s6">
<div>
<h4>Build family trees and organization hierarchies with ease</h4>
<p class="light">
@ -249,7 +249,7 @@ body {
</div>
</div>
</div>
<div class="col s5">
<div class="col s5 offset-s1">
<%= image_tag 'screenshots/family-tree.png', class: 'left' %>
</div>
</div>
@ -262,10 +262,10 @@ body {
<div class="card-panel blue white-text hoverable" style="height: 160px">
<div class="row">
<div class="col s9">
<h1 style="font-size: 26px;">
<h1 style="font-size: 26px; display: inline;">
<%= link_to 'Start worldbuilding right now.', new_user_registration_path, class: 'white-text' %>
</h1>
<h5 style="font-size: 16px;">No card needed. Upgrade seamlessly any time.</h5>
<h5 style="font-size: 16px;">No card needed. Upgrade or downgrade seamlessly any time.</h5>
</div>
<div class="col s3 valign-wrapper" style="height: 130px;">
<div class="valign">
@ -338,10 +338,10 @@ body {
<div class="col s12 m4">
<div class="icon-block center">
<h2 class="brown-text"><i class="material-icons">library_books</i></h2>
<h5><%= t('marketing.landing_page.benefits.yours.title') %></h5>
<h2 class="brown-text"><i class="material-icons">security</i></h2>
<h5><%= t('marketing.landing_page.benefits.ads.title') %></h5>
<p class="light">
<%= t('marketing.landing_page.benefits.yours.text') %>
<%= t('marketing.landing_page.benefits.ads.text') %>
</p>
</div>
</div>
@ -358,7 +358,7 @@ body {
<div>
<h4>How much does it cost?</h4>
<div class="row">
<div class="col s9">
<div class="col s7">
<p class="light">
<strong>Creating core notebook pages (universes, characters, locations, and items) is free</strong> and doesn't require
any payment information to start creating your novel's world immediately upon signup. Free users, however,
@ -374,12 +374,12 @@ body {
Additionally, a Premium subscription also increases your image upload storage from 50MB to 10GB.
</p>
</div>
<div class="col s3">
<div class="col s4 offset-s1">
<% Rails.application.config.content_types[:all].each_with_index do |content_type, i| %>
<i class="material-icons <%= content_type.color %>-text tooltipped" style="font-size: 72px" data-delay="100" data-tooltip="<%= User.new.can_create?(content_type) ? 'All' : 'Premium' %> users can create unlimited <%= content_type.name.pluralize %>.">
<i class="material-icons <%= content_type.color %>-text tooltipped medium" data-delay="100" data-tooltip="<%= User.new.can_create?(content_type) ? 'All' : 'Premium' %> users can create unlimited <%= content_type.name.pluralize %>.">
<%= content_type.icon %>
</i>
<%= '<br />'.html_safe if (i + 1) % 4 == 0 %>
<%= '<br />'.html_safe if (i + 1) % 6 == 0 %>
<% end %>
</div>
</div>

View File

@ -89,7 +89,6 @@
<div class="container">
<div class="section perks-section">
<div class="row">
<div class="col s12 m4">
<div class="icon-block center">
@ -103,25 +102,24 @@
<div class="col s12 m4">
<div class="icon-block center">
<h2 class="brown-text"><i class="material-icons">schedule</i></h2>
<h5><%= t('marketing.landing_page.benefits.speed.title') %></h5>
<h2 class="brown-text"><i class="material-icons">cloud</i></h2>
<h5><%= t('marketing.landing_page.benefits.backups.title') %></h5>
<p class="light">
<%= t('marketing.landing_page.benefits.speed.text') %>
<%= t('marketing.landing_page.benefits.backups.text') %>
</p>
</div>
</div>
<div class="col s12 m4">
<div class="icon-block center">
<h2 class="brown-text"><i class="material-icons">assignment_turned_in</i></h2>
<h5><%= t('marketing.landing_page.benefits.continuity.title') %></h5>
<h2 class="brown-text"><i class="material-icons">security</i></h2>
<h5><%= t('marketing.landing_page.benefits.ads.title') %></h5>
<p class="light">
<%= t('marketing.landing_page.benefits.continuity.text') %>
<%= t('marketing.landing_page.benefits.ads.text') %>
</p>
</div>
</div>
</div>
<div class="row">
<div class="col s12 m4">
<div class="icon-block center">
<h2 class="brown-text"><i class="material-icons">face</i></h2>
@ -144,15 +142,14 @@
<div class="col s12 m4">
<div class="icon-block center">
<h2 class="brown-text"><i class="material-icons">security</i></h2>
<h5><%= t('marketing.landing_page.benefits.items.title') %></h5>
<h2 class="brown-text"><i class="material-icons">assignment_turned_in</i></h2>
<h5><%= t('marketing.landing_page.benefits.continuity.title') %></h5>
<p class="light">
<%= t('marketing.landing_page.benefits.items.text') %>
<%= t('marketing.landing_page.benefits.continuity.text') %>
</p>
</div>
</div>
</div>
<div class="row">
<div class="col s12 m4">
<div class="icon-block center">
<h2 class="brown-text"><i class="material-icons">search</i></h2>
@ -173,18 +170,6 @@
</div>
</div>
<div class="col s12 m4">
<div class="icon-block center">
<h2 class="brown-text"><i class="material-icons">cloud</i></h2>
<h5><%= t('marketing.landing_page.benefits.backups.title') %></h5>
<p class="light">
<%= t('marketing.landing_page.benefits.backups.text') %>
</p>
</div>
</div>
</div>
<div class="row">
<div class="col s12 m4">
<div class="icon-block center">
<h2 class="brown-text"><i class="material-icons">settings_ethernet</i></h2>
@ -207,10 +192,20 @@
<div class="col s12 m4">
<div class="icon-block center">
<h2 class="brown-text"><i class="material-icons">library_books</i></h2>
<h5><%= t('marketing.landing_page.benefits.yours.title') %></h5>
<h2 class="brown-text"><i class="material-icons">schedule</i></h2>
<h5><%= t('marketing.landing_page.benefits.speed.title') %></h5>
<p class="light">
<%= t('marketing.landing_page.benefits.yours.text') %>
<%= t('marketing.landing_page.benefits.speed.text') %>
</p>
</div>
</div>
<div class="col s12 m4">
<div class="icon-block center">
<h2 class="brown-text"><i class="material-icons">bar_chart</i></h2>
<h5><%= t('marketing.landing_page.benefits.quality.title') %></h5>
<p class="light">
<%= t('marketing.landing_page.benefits.quality.text') %>
</p>
</div>
</div>

View File

@ -1,11 +1,16 @@
<% badge_style = 'padding: 3px 5px; font-size: 70%; font-weight: normal;' %>
<%
badge_style = 'padding: 3px 5px; font-size: 70%; font-weight: normal;'
badge_text = user.try(:forums_badge_text) # using try() on release for zdd while machines reboot and get reference to this column, can be removed after
%>
<% if user.respond_to?(:selected_billing_plan_id) %>
<% if user.selected_billing_plan_id == 2 %>
<span style="<%= badge_style %>; background: #dedeff">Beta Tester</span>
<% if user.id == 5 %>
<span style="<%= badge_style %>; background: #2196F3; color: white"><%= badge_text.presence || 'Admin' %></span>
<% elsif user.selected_billing_plan_id == 2 %>
<span style="<%= badge_style %>; background: #dedeff"><%= badge_text.presence || 'Beta Tester' %></span>
<% elsif user.selected_billing_plan_id == 3 %>
<span style="<%= badge_style %>; background: #ffdede">Early Adopter</span>
<span style="<%= badge_style %>; background: #ffdede"><%= badge_text.presence || 'Early Adopter' %></span>
<% elsif [4, 5, 6].include? user.selected_billing_plan_id %>
<span style="<%= badge_style %>; background: #ffffaa">Premium Supporter</span>
<span style="<%= badge_style %>; background: #ffffaa"><%= badge_text.presence || 'Premium Supporter' %></span>
<% end %>
<% end %>

View File

@ -56,11 +56,15 @@ en:
benefits:
creativity:
title: Promotes creativity
text: Your Notebook now asks you questions about your characters and ideas, and your answers are saved too.
text: Your notebook now asks you questions about your characters and ideas, and your answers are saved too.
speed:
title: Speeds up writing
text: With a universe of information at your fingertips, you can look up anything quickly and keep writing.
title: Write faster
text: Reference any aspect of any page in your notebook without losing your momentum in our built-in document editor.
quality:
title: Write better
text: Analyze your writing with a world-class AI that measures readability, style, emotion, and more.
continuity:
title: Continuity checks
@ -68,15 +72,15 @@ en:
characters:
title: Deeper characters
text: Get to know your characters. Track every detail of their thoughts, appearance, and personality.
text: Get to know your characters. Track every detail of their thoughts, appearance, family, and personality.
locations:
title: Richer worlds
text: Immerse yourself in vibrant worlds with tracking available for any kind of locations.
text: Immerse yourself in vibrant worlds with specialized notebook pages for your countries, cities, landmarks, and more.
items:
title: Legendary items
text: Every object has a backstory that can shine as bright as any character — if you let it.
ads:
title: No ads, ever
text: Rest easy knowing your notebook is safe and completely private by default, but shareable if you choose.
search:
title: Searchable
@ -84,7 +88,7 @@ en:
organization:
title: Organizable
text: Focus on one universe at a time and filter everything else out. Reorganize, sort, and write freely.
text: Focus on one universe at a time and automatically filter everything else out. Reorganize, sort, and write freely.
backups:
title: Backed up forever
@ -96,11 +100,7 @@ en:
sharing:
title: Brainstorm together
text: Invite anyone to review any content you decide to share. Sometimes a second set of eyes makes all the difference.
yours:
title: Make it yours
text: Plan creatures, magic, scenes, and other page types specific to your world, tailored to you.
text: Invite anyone to review any pages you decide to share. Sometimes a second set of eyes makes all the difference.
quote:
text: Really clever and beautifully organized way for storytellers to create a world.

View File

@ -0,0 +1,5 @@
class AddForumsBadgeToUsers < ActiveRecord::Migration[5.2]
def change
add_column :users, :forums_badge_text, :string
end
end

View File

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2019_08_09_173934) do
ActiveRecord::Schema.define(version: 2019_08_13_220011) do
create_table "api_keys", force: :cascade do |t|
t.integer "user_id"
@ -2546,6 +2546,7 @@ ActiveRecord::Schema.define(version: 2019_08_09_173934) do
t.string "age"
t.string "gender"
t.string "interests"
t.string "forums_badge_text"
t.index ["deleted_at", "username"], name: "index_users_on_deleted_at_and_username"
t.index ["deleted_at"], name: "index_users_on_deleted_at"
t.index ["email"], name: "index_users_on_email", unique: true