docs: Add missing space to compound verbs “back up”, “log in”, etc.

Noun: backup, login, logout, lookup, setup.

Verb: back up, log in, log out, look up, set up.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg 2022-02-07 11:41:10 -08:00 committed by Anders Kaseorg
parent b0ce4f1bce
commit e1f42c1ac5
21 changed files with 32 additions and 32 deletions

View File

@ -108,7 +108,7 @@ See our guide on [writing help center articles](helpcenter.md).
### Integrations documentation ### Integrations documentation
Zulip's [integrations documentation](https://zulip.com/integrations) Zulip's [integrations documentation](https://zulip.com/integrations)
is user-facing documentation explaining to end users how to setup each is user-facing documentation explaining to end users how to set up each
of Zulip's more than 100 integrations. There is a detailed [guide on of Zulip's more than 100 integrations. There is a detailed [guide on
documenting integrations](integrations.md), including style guidelines documenting integrations](integrations.md), including style guidelines
to ensure that the documentation is high quality and consistent. to ensure that the documentation is high quality and consistent.

View File

@ -566,7 +566,7 @@ to the root and `engineering` subdomains:
4. If you want to sign SAML requests, you have to do two things in Keycloak: 4. If you want to sign SAML requests, you have to do two things in Keycloak:
1. In the Keycloak client settings you setup previously, open the 1. In the Keycloak client settings you set up previously, open the
`Settings` tab and **enable** `Client Signature Required`. `Settings` tab and **enable** `Client Signature Required`.
2. Keycloak can generate the Client private key and certificate 2. Keycloak can generate the Client private key and certificate
automatically, but Zulip's SAML library does not support the automatically, but Zulip's SAML library does not support the
@ -636,7 +636,7 @@ another IdP.
logging out from Zulip, logging back in using SAML, and then using logging out from Zulip, logging back in using SAML, and then using
the SAML logout feature from KeyCloak. Check the SAML logout feature from KeyCloak. Check
`/var/log/zulip/errors.log` for error output if it doesn't work. `/var/log/zulip/errors.log` for error output if it doesn't work.
1. Once SAML logout is working for you, you can use the `manage.py logout_all_users` management command to logout all users so that 1. Once SAML logout is working for you, you can use the `manage.py logout_all_users` management command to log out all users so that
SAML logout works for everyone. SAML logout works for everyone.
```bash ```bash
@ -837,9 +837,9 @@ Note that `SOCIAL_AUTH_OIDC_ENABLED_IDPS` only supports a single IdP currently.
The Return URL to authorize with the provider is The Return URL to authorize with the provider is
`https://yourzulipdomain.example.com/complete/oidc/`. `https://yourzulipdomain.example.com/complete/oidc/`.
By default, users who attempt to login with OIDC using an email By default, users who attempt to log in with OIDC using an email
address that does not have a current Zulip account will be prompted address that does not have a current Zulip account will be prompted
for whether they intend to create a new account or would like to login for whether they intend to create a new account or would like to log in
using another authentication method. You can configure automatic using another authentication method. You can configure automatic
account creation on first login attempt by setting account creation on first login attempt by setting
`"auto_signup": True` in the IdP configuration dictionary. `"auto_signup": True` in the IdP configuration dictionary.

View File

@ -25,12 +25,12 @@ feature to billing.
### Setup ### Setup
Apart from the common setup mentioned above, you also need to setup your Apart from the common setup mentioned above, you also need to set up your
development environment to receive webhook events from Stripe. development environment to receive webhook events from Stripe.
- Install the Stripe CLI locally by following the instructions - Install the Stripe CLI locally by following the instructions
[here](https://stripe.com/docs/webhooks/test). [here](https://stripe.com/docs/webhooks/test).
- Login to Stripe CLI using the command `stripe login`. - Log in to Stripe CLI using the command `stripe login`.
- You can get Stripe CLI to forward all Stripe webhook events to our local - You can get Stripe CLI to forward all Stripe webhook events to our local
webhook endpoint using the following command: webhook endpoint using the following command:
`stripe listen --forward-to http://localhost:9991/stripe/webhook/` `stripe listen --forward-to http://localhost:9991/stripe/webhook/`

View File

@ -321,7 +321,7 @@ def add_cert_to_pipconf() -> None:
def do_setup_virtualenv(venv_path: str, requirements_file: str) -> None: def do_setup_virtualenv(venv_path: str, requirements_file: str) -> None:
# Setup Python virtualenv # Set up Python virtualenv
new_packages = set(get_package_names(requirements_file)) new_packages = set(get_package_names(requirements_file))
run_as_root(["rm", "-rf", venv_path]) run_as_root(["rm", "-rf", venv_path])

View File

@ -203,7 +203,7 @@ if not os.path.exists(os.path.join(deploy_path, "zproject/prod_settings.py")):
# zulip<1.4.0, we need to do it. See discussion in commit 586b23637. # zulip<1.4.0, we need to do it. See discussion in commit 586b23637.
os.symlink("/etc/zulip/settings.py", os.path.join(deploy_path, "zproject/prod_settings.py")) os.symlink("/etc/zulip/settings.py", os.path.join(deploy_path, "zproject/prod_settings.py"))
# Now we should have an environment setup where we can run our tools; # Now we should have an environment set up where we can run our tools;
# first, creating the production venv. # first, creating the production venv.
subprocess.check_call( subprocess.check_call(
[os.path.join(deploy_path, "scripts", "lib", "create-production-venv"), deploy_path] [os.path.join(deploy_path, "scripts", "lib", "create-production-venv"), deploy_path]

View File

@ -1139,7 +1139,7 @@ export class MessageListView {
const message_group_id = recipient_row.attr("id"); const message_group_id = recipient_row.attr("id");
// Since there might be multiple dates within the message // Since there might be multiple dates within the message
// group, it's important to lookup the original/full message // group, it's important to look up the original/full message
// group rather than doing an artificial rerendering of the // group rather than doing an artificial rerendering of the
// message header from the set of message containers passed in // message header from the set of message containers passed in
// here. // here.

View File

@ -64,7 +64,7 @@ function compare_by_huddle(huddle) {
return person && person.user_id; return person && person.user_id;
}); });
// Construct dict for all huddles, so we can lookup each's recency // Construct dict for all huddles, so we can look up each's recency
const huddles = huddle_data.get_huddles(); const huddles = huddle_data.get_huddles();
const huddle_dict = new Map(); const huddle_dict = new Map();
for (const [i, huddle] of huddles.entries()) { for (const [i, huddle] of huddles.entries()) {

View File

@ -1,4 +1,4 @@
// Module for displaying the modal asking spectators to login when // Module for displaying the modal asking spectators to log in when
// attempting to do things that are not possible as a spectator (like // attempting to do things that are not possible as a spectator (like
// add an emoji reaction, star a message, etc.). While in many cases, // add an emoji reaction, star a message, etc.). While in many cases,
// we will prefer to hide menu options that don't make sense for // we will prefer to hide menu options that don't make sense for

View File

@ -193,14 +193,14 @@ export class TopicListWidget {
input.trigger("focus"); input.trigger("focus");
} }
// setup display of clear(x) button. // set up display of clear(x) button.
if (this.topic_search_text.length) { if (this.topic_search_text.length) {
$("#clear_search_topic_button").show(); $("#clear_search_topic_button").show();
} else { } else {
$("#clear_search_topic_button").hide(); $("#clear_search_topic_button").hide();
} }
// setup event handlers. // set up event handlers.
const rebuild_list = () => this.build(); const rebuild_list = () => this.build();
input.on("input", rebuild_list); input.on("input", rebuild_list);
} }

View File

@ -436,7 +436,7 @@
Zulip Cloud is built with <a href="/privacy/">privacy</a> and <a href="/security/">security</a> in mind, and is used by some of the most security-conscious organizations in the world. Zulip Cloud is built with <a href="/privacy/">privacy</a> and <a href="/security/">security</a> in mind, and is used by some of the most security-conscious organizations in the world.
</div> </div>
</li> </li>
<li><div class="list-content">Zulip is <a href="https://github.com/zulip">100% open-source software</a>, with no "open core" catch. We work hard to make it <a href="https://zulip.readthedocs.io/en/latest/production/install.html">easy to set up</a>, <a href="https://zulip.readthedocs.io/en/stable/production/export-and-import.html#backups">backup</a>, and <a href="https://zulip.readthedocs.io/en/stable/production/upgrade-or-modify.html">maintain</a> a self-hosted Zulip installation, where you have full control of your data.</div></li> <li><div class="list-content">Zulip is <a href="https://github.com/zulip">100% open-source software</a>, with no "open core" catch. We work hard to make it <a href="https://zulip.readthedocs.io/en/latest/production/install.html">easy to set up</a>, <a href="https://zulip.readthedocs.io/en/stable/production/export-and-import.html#backups">back up</a>, and <a href="https://zulip.readthedocs.io/en/stable/production/upgrade-or-modify.html">maintain</a> a self-hosted Zulip installation, where you have full control of your data.</div></li>
<li><div class="list-content">Move your data with our high quality <a href="/help/export-your-organization">export</a> and <a href="https://zulip.readthedocs.io/en/latest/production/export-and-import.html">import</a> tools; you are never locked into a proprietary tool.</div></li> <li><div class="list-content">Move your data with our high quality <a href="/help/export-your-organization">export</a> and <a href="https://zulip.readthedocs.io/en/latest/production/export-and-import.html">import</a> tools; you are never locked into a proprietary tool.</div></li>
<li><div class="list-content">Zulip is built for scale and works reliably for organizations with thousands of users online at once with <a href="https://zulip.readthedocs.io/en/stable/production/requirements.html#scalability">modest hardware</a>.</div></li> <li><div class="list-content">Zulip is built for scale and works reliably for organizations with thousands of users online at once with <a href="https://zulip.readthedocs.io/en/stable/production/requirements.html#scalability">modest hardware</a>.</div></li>
<li> <li>

View File

@ -109,7 +109,7 @@ the user will get to choose which playground to open the code in.
programming language. The language tag for a code block is internally mapped programming language. The language tag for a code block is internally mapped
to these human-readable Pygments names; e.g., `py3` and `py` are mapped to to these human-readable Pygments names; e.g., `py3` and `py` are mapped to
`Python`. One can use the typeahead (which appears when you type something `Python`. One can use the typeahead (which appears when you type something
or just click on the language field) to lookup the Pygments name. or just click on the language field) to look up the Pygments name.
* The links for opening code playgrounds are always constructed by concatenating * The links for opening code playgrounds are always constructed by concatenating
the provided URL prefix with the URL-encoded contents of the code block. the provided URL prefix with the URL-encoded contents of the code block.

View File

@ -1,10 +1,10 @@
* Zulip is [100% open-source software](https://github.com/zulip), with no "open core" catch. * Zulip is [100% open-source software](https://github.com/zulip), with no "open core" catch.
* We work hard to make it easy to [set up][install-zulip], * We work hard to make it easy to [set up][install-zulip],
[backup][backup-zulip], and [maintain][maintain-zulip] a self-hosted [back up][back-up-zulip], and [maintain][maintain-zulip] a self-hosted
Zulip installation. Zulip installation.
* Retain full control over your data. * Retain full control over your data.
* Customize Zulip for all your needs. * Customize Zulip for all your needs.
[install-zulip]: https://zulip.readthedocs.io/en/latest/production/install.html [install-zulip]: https://zulip.readthedocs.io/en/latest/production/install.html
[backup-zulip]: https://zulip.readthedocs.io/en/stable/production/export-and-import.html#backups [back-up-zulip]: https://zulip.readthedocs.io/en/stable/production/export-and-import.html#backups
[maintain-zulip]: https://zulip.readthedocs.io/en/stable/production/upgrade-or-modify.html [maintain-zulip]: https://zulip.readthedocs.io/en/stable/production/upgrade-or-modify.html

View File

@ -4,7 +4,7 @@ Zulip supports using SAML authentication for single sign-on, both when
self-hosting or on the Zulip Cloud Plus plan. self-hosting or on the Zulip Cloud Plus plan.
This page documents details on how to set up SAML authentication with This page documents details on how to set up SAML authentication with
Zulip with various common SAML identity providers. Once you have setup Zulip with various common SAML identity providers. Once you have set up
SAML, you may also want to consider configuring [SCIM](/help/scim). SAML, you may also want to consider configuring [SCIM](/help/scim).
If you are self-hosting, this documentation is likely still useful for If you are self-hosting, this documentation is likely still useful for

View File

@ -12,7 +12,7 @@ The instructions below explain how to configure SCIM in Okta for Zulip
Cloud customers. Like SAML, feature is currently only available in Cloud customers. Like SAML, feature is currently only available in
Zulip Cloud with the Zulip Cloud Plus plan. Zulip Cloud with the Zulip Cloud Plus plan.
These instructions can also be used by self-hosters to setup the Okta These instructions can also be used by self-hosters to set up the Okta
side of SCIM for their deployment. side of SCIM for their deployment.
## Configure SCIM with Okta ## Configure SCIM with Okta

View File

@ -62,7 +62,7 @@ ensure you can always move from our hosting to yours (and back).
* Zulip is [100% open-source software](https://github.com/zulip), with * Zulip is [100% open-source software](https://github.com/zulip), with
no "open core" catch. no "open core" catch.
* We work hard to make it easy to [set up][install-zulip], * We work hard to make it easy to [set up][install-zulip],
[backup][backup-zulip], and [maintain][maintain-zulip] a self-hosted [back up][back-up-zulip], and [maintain][maintain-zulip] a self-hosted
Zulip installation. Zulip installation.
* Retain full control over your data. If cloud hosting is not an * Retain full control over your data. If cloud hosting is not an
option due to stringent data and privacy requirements (e.g. in the option due to stringent data and privacy requirements (e.g. in the
@ -70,7 +70,7 @@ ensure you can always move from our hosting to yours (and back).
* Customize Zulip for all your needs. * Customize Zulip for all your needs.
[install-zulip]: https://zulip.readthedocs.io/en/latest/production/install.html [install-zulip]: https://zulip.readthedocs.io/en/latest/production/install.html
[backup-zulip]: https://zulip.readthedocs.io/en/stable/production/export-and-import.html#backups [back-up-zulip]: https://zulip.readthedocs.io/en/stable/production/export-and-import.html#backups
[maintain-zulip]: https://zulip.readthedocs.io/en/stable/production/upgrade-or-modify.html [maintain-zulip]: https://zulip.readthedocs.io/en/stable/production/upgrade-or-modify.html

View File

@ -32,7 +32,7 @@ realms used for testing; consider using deactivate_realm instead."""
if settings.BILLING_ENABLED: if settings.BILLING_ENABLED:
# Deleting a Realm object also deletes associating billing # Deleting a Realm object also deletes associating billing
# metadata in an invariant-violating way, so we should # metadata in an invariant-violating way, so we should
# never use this tool for a realm with billing setup. # never use this tool for a realm with billing set up.
from corporate.models import CustomerPlan, get_customer_by_realm from corporate.models import CustomerPlan, get_customer_by_realm
customer = get_customer_by_realm(realm) customer = get_customer_by_realm(realm)

View File

@ -2458,7 +2458,7 @@ class SAMLAuthBackendTest(SocialAuthBase):
self.assertEqual(result.url, realm.uri + "/register/") self.assertEqual(result.url, realm.uri + "/register/")
def test_social_auth_saml_multiple_idps_configured(self) -> None: def test_social_auth_saml_multiple_idps_configured(self) -> None:
# Setup a new SOCIAL_AUTH_SAML_ENABLED_IDPS dict with two idps. # Set up a new SOCIAL_AUTH_SAML_ENABLED_IDPS dict with two idps.
# We deepcopy() dictionaries around for the sake of brevity, # We deepcopy() dictionaries around for the sake of brevity,
# to avoid having to spell them out explicitly here. # to avoid having to spell them out explicitly here.
# The second idp's configuration is a copy of the first one, # The second idp's configuration is a copy of the first one,
@ -4884,7 +4884,7 @@ class TestTwoFactor(ZulipTestCase):
mock_totp.side_effect = totp mock_totp.side_effect = totp
# Setup LDAP # Set up LDAP
self.init_default_ldap_database() self.init_default_ldap_database()
ldap_user_attr_map = {"full_name": "cn"} ldap_user_attr_map = {"full_name": "cn"}
with self.settings( with self.settings(

View File

@ -928,7 +928,7 @@ class RestartEventsTest(ZulipTestCase):
hamlet = self.example_user("hamlet") hamlet = self.example_user("hamlet")
realm = hamlet.realm realm = hamlet.realm
# Setup an empty event queue # Set up an empty event queue
clear_client_event_queues_for_testing() clear_client_event_queues_for_testing()
queue_data = dict( queue_data = dict(

View File

@ -313,7 +313,7 @@ class HomeTest(ZulipTestCase):
self.assertEqual(result.status_code, 302) self.assertEqual(result.status_code, 302)
self.assertEqual(result.url, "/login/") self.assertEqual(result.url, "/login/")
# Tell server that user wants to login anonymously # Tell server that user wants to log in anonymously
# Redirects to load webapp. # Redirects to load webapp.
realm = get_realm("zulip") realm = get_realm("zulip")
result = self.client_post("/", {"prefers_web_public_view": "true"}) result = self.client_post("/", {"prefers_web_public_view": "true"})

View File

@ -1858,7 +1858,7 @@ class GitHubAuthBackend(SocialAuthMixin, GithubOAuth2):
] ]
def get_verified_emails(self, realm: Realm, *args: Any, **kwargs: Any) -> List[str]: def get_verified_emails(self, realm: Realm, *args: Any, **kwargs: Any) -> List[str]:
# We only let users login using email addresses that are # We only let users log in using email addresses that are
# verified by GitHub, because the whole point is for the user # verified by GitHub, because the whole point is for the user
# to demonstrate that they control the target email address. # to demonstrate that they control the target email address.
verified_emails: List[str] = [] verified_emails: List[str] = []
@ -2437,10 +2437,10 @@ class SAMLAuthBackend(SocialAuthMixin, SAMLAuth):
callback function without arguments, to delete the session. We're not callback function without arguments, to delete the session. We're not
happy with that for two reasons: happy with that for two reasons:
1. These implementations don't look at the NameID in the LogoutRequest, which 1. These implementations don't look at the NameID in the LogoutRequest, which
is not quite correct, as a LogoutRequest to logout user X can be delivered is not quite correct, as a LogoutRequest to log out user X can be delivered
through any means, and doesn't need a session to be valid. through any means, and doesn't need a session to be valid.
E.g. a backchannel logout request sent by the IdP wouldn't have a session cookie. E.g. a backchannel logout request sent by the IdP wouldn't have a session cookie.
Also, hypothetically, a LogoutRequest to logout user Y shouldn't logout user X, even if the Also, hypothetically, a LogoutRequest to log out user Y shouldn't log out user X, even if the
request is made with a session cookie belonging to user X. request is made with a session cookie belonging to user X.
2. We want to revoke all sessions for the user, not just the current session 2. We want to revoke all sessions for the user, not just the current session
of the request, so after validating the LogoutRequest, we need to identify of the request, so after validating the LogoutRequest, we need to identify

View File

@ -195,8 +195,8 @@ AUTH_LDAP_USER_SEARCH = LDAPSearch(
"ou=users,dc=example,dc=com", ldap.SCOPE_SUBTREE, "(uid=%(user)s)" "ou=users,dc=example,dc=com", ldap.SCOPE_SUBTREE, "(uid=%(user)s)"
) )
## Configuration to lookup a user's LDAP data given their email address ## Configuration to look up a user's LDAP data given their email address
## (For Zulip reverse mapping). If users log in as e.g. "sam" when ## (for Zulip reverse mapping). If users log in as e.g. "sam" when
## their email address is "sam@example.com", set LDAP_APPEND_DOMAIN to ## their email address is "sam@example.com", set LDAP_APPEND_DOMAIN to
## "example.com". Otherwise, leave LDAP_APPEND_DOMAIN=None and set ## "example.com". Otherwise, leave LDAP_APPEND_DOMAIN=None and set
## AUTH_LDAP_REVERSE_EMAIL_SEARCH and AUTH_LDAP_USERNAME_ATTR below. ## AUTH_LDAP_REVERSE_EMAIL_SEARCH and AUTH_LDAP_USERNAME_ATTR below.