mirror of https://github.com/zulip/zulip.git
docs: Add missing space to compound verbs “log in”, “set up”, etc.
Noun: backup, checkout, cleanup, login, logout, setup, shutdown, signup, timeout. Verb: back up, check out, clean up, log in, log out, set up, shut down, sign up, time out. Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
parent
e3f2ffa681
commit
6060d0d364
|
@ -75,7 +75,7 @@ working on a proposal until 2 weeks before the deadline.
|
|||
|
||||
## Getting started
|
||||
|
||||
We have an easy-to-setup development environment, and a library of
|
||||
We have an easy-to-set-up development environment, and a library of
|
||||
tasks that are great for first-time contributors. Use
|
||||
[our first-time Zulip developer guide](../overview/contributing.html#your-first-codebase-contribution)
|
||||
to get your Zulip development environment set up and to find your first issue. If you have any
|
||||
|
|
|
@ -210,14 +210,14 @@ environment directory without worrying about tests.
|
|||
Zulip uses [django-two-factor-auth][0] as a beta 2FA integration.
|
||||
|
||||
To enable 2FA, set `TWO_FACTOR_AUTHENTICATION_ENABLED` in settings to
|
||||
`True`, then log into Zulip and add otp device from settings
|
||||
`True`, then log in to Zulip and add an OTP device from the settings
|
||||
page. Once the device is added, password based authentication will ask
|
||||
for one-time-password. In the development environment., this
|
||||
for a one-time-password. In the development environment, this
|
||||
one-time-password will be printed to the console when you try to
|
||||
login. Just copy-paste it into the form field to continue.
|
||||
log in. Just copy-paste it into the form field to continue.
|
||||
|
||||
Direct development logins don't prompt for 2FA one-time-passwords, so
|
||||
to test 2FA in development, make sure that you login using a
|
||||
to test 2FA in development, make sure that you log in using a
|
||||
password. You can get the passwords for the default test users using
|
||||
`./manage.py print_initial_password`.
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ ignoring the parts about `vagrant` (since you're not using it).
|
|||
|
||||
## Installing directly on Windows 10 with WSL 2
|
||||
|
||||
Zulip's development environment is most easily setup on Windows using
|
||||
Zulip's development environment is most easily set up on Windows using
|
||||
the [WSL 2](https://docs.microsoft.com/en-us/windows/wsl/wsl2-about)
|
||||
installation method described here.
|
||||
|
||||
|
@ -122,7 +122,7 @@ installation method described here.
|
|||
|
||||
```eval_rst
|
||||
.. note::
|
||||
If you shutdown WSL, after starting it again, you will have to manually start
|
||||
If you shut down WSL, after starting it again, you will have to manually start
|
||||
the services using ``./tools/wsl/start_services``.
|
||||
```
|
||||
|
||||
|
|
|
@ -1097,7 +1097,7 @@ Zulip installations; it has minimal changes for existing servers.
|
|||
- Upgraded to modern versions of most of our stale dependencies.
|
||||
- Updated our CSS toolchain to support hot module reloading.
|
||||
- Updated numerous pages within the /help/ site.
|
||||
- We no longer require re-authing to signup after trying to log in with
|
||||
- We no longer require re-authing to sign up after trying to log in with
|
||||
an OAuth authentication backend (GitHub or Google).
|
||||
- Made major improvements to the Help Center.
|
||||
- Improved system for configuring the S3 file uploads backend.
|
||||
|
|
|
@ -137,7 +137,7 @@ of the following configurations:
|
|||
the `zproject.backends.ZulipLDAPAuthBackend` auth backend, in
|
||||
`AUTHENTICATION_BACKENDS` in `/etc/zulip/settings.py`. After doing so
|
||||
(and as always [restarting the Zulip server](settings.md) to ensure
|
||||
your settings changes take effect), you should be able to log into
|
||||
your settings changes take effect), you should be able to log in to
|
||||
Zulip by entering your email address and LDAP password on the Zulip
|
||||
login form.
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ email addresses and send notifications.
|
|||
|
||||
1. Fill out the section of `/etc/zulip/settings.py` headed "Outgoing
|
||||
email (SMTP) settings". This includes the hostname and typically
|
||||
the port to reach your SMTP provider, and the username to log into
|
||||
the port to reach your SMTP provider, and the username to log in to
|
||||
it. You'll also want to fill out the noreply email section.
|
||||
|
||||
1. Put the password for the SMTP user account in
|
||||
|
|
|
@ -12,7 +12,7 @@ these first, before beginning the user-facing downtime. However, if
|
|||
you'd like to watch the downtime phase of the upgrade closely, you
|
||||
can run them manually before starting the upgrade:
|
||||
|
||||
1. Log into your Zulip server as the `zulip` user (or as `root` and
|
||||
1. Log in to your Zulip server as the `zulip` user (or as `root` and
|
||||
then run `su zulip` to drop privileges), and `cd
|
||||
/home/zulip/deployments/current`
|
||||
2. Run `./manage.py dbshell`. This will open a shell connected to the
|
||||
|
|
|
@ -70,7 +70,7 @@ The backup tool provides the following options:
|
|||
console output will show the path to the output tarball.
|
||||
- `--skip-db`: Skip backup of the database. Useful if you're using a
|
||||
remote PostgreSQL host with its own backup system and just need to
|
||||
backup non-database state.
|
||||
back up non-database state.
|
||||
- `--skip-uploads`: If `LOCAL_UPLOADS_DIR` is set, user-uploaded files
|
||||
in that directory will be ignored.
|
||||
|
||||
|
@ -126,7 +126,7 @@ server, including the database, settings, secrets from
|
|||
`/etc/zulip`, and user-uploaded files stored on the Zulip server.
|
||||
|
||||
The following data is not included in these backup archives,
|
||||
and you may want to backup separately:
|
||||
and you may want to back up separately:
|
||||
|
||||
* The server access/error logs from `/var/log/zulip`. The Zulip
|
||||
server only appends to logs, and they can be very large compared to
|
||||
|
|
|
@ -55,7 +55,7 @@ install process:
|
|||
puppet-agent[29873]: Could not request certificate: Failed to open TCP connection to puppet:8140
|
||||
```
|
||||
|
||||
So you'll need to shutdown any Puppet servers.
|
||||
So you'll need to shut down any Puppet servers.
|
||||
|
||||
```shell
|
||||
$ sudo service puppet-agent stop
|
||||
|
|
|
@ -69,7 +69,7 @@ actual email clients. This is important because web email clients
|
|||
have limited CSS functionality, autolinkify things, and otherwise
|
||||
mutate the HTML email one can see previewed on `/emails`.
|
||||
|
||||
To do this sort of testing, you need to setup an outgoing SMTP
|
||||
To do this sort of testing, you need to set up an outgoing SMTP
|
||||
provider. Our production advice for
|
||||
[Gmail](../production/email.html#using-gmail-for-outgoing-email) and
|
||||
[transactional email
|
||||
|
|
|
@ -149,7 +149,7 @@ structure of the system, when thinking about changes to it:
|
|||
following a topic (to get notifications for messages only within
|
||||
that topic in a stream). There are a lot of different workflows
|
||||
possible with Zulip's threading, and it's important to make it easy
|
||||
for users to setup Zulip's notification to fit as many of those
|
||||
for users to set up Zulip's notification to fit as many of those
|
||||
workflows as possible.
|
||||
* **Message editing**. Zulip supports editing messages, and that
|
||||
interacts with notifications in ways that require careful handling:
|
||||
|
|
|
@ -5,7 +5,7 @@ used for a variety of purposes:
|
|||
|
||||
* Asynchronously doing expensive operations like sending email
|
||||
notifications which can take seconds per email and thus would
|
||||
otherwise timeout when 100s are triggered at once (E.g. inviting a
|
||||
otherwise time out when 100s are triggered at once (E.g. inviting a
|
||||
lot of new users to a realm).
|
||||
|
||||
* Asynchronously doing non-time-critical somewhat expensive operations
|
||||
|
|
|
@ -57,6 +57,6 @@ if [ -z "$QUIET" ]; then
|
|||
echo
|
||||
echo " /home/zulip/deployments/current/manage.py generate_realm_creation_link"
|
||||
echo
|
||||
echo "This generates a secure, single-use link that you you can use to setup "
|
||||
echo "This generates a secure, single-use link that you you can use to set up "
|
||||
echo "a Zulip organization from the convenience of your web browser."
|
||||
fi
|
||||
|
|
|
@ -99,7 +99,7 @@ function report_error(
|
|||
|
||||
last_report_attempt.set(key, Date.now());
|
||||
|
||||
// TODO: If an exception gets thrown before we setup ajax calls
|
||||
// TODO: If an exception gets thrown before we set up ajax calls
|
||||
// to include the CSRF token, our ajax call will fail. The
|
||||
// elegant thing to do in that case is to either wait until that
|
||||
// setup is done or do it ourselves and then retry.
|
||||
|
|
|
@ -592,7 +592,7 @@ export function end_message_row_edit(row) {
|
|||
const listeners = currently_editing_messages.get(message.id).listeners;
|
||||
const edit_box = document.querySelector(`#message_edit_content_${CSS.escape(message.id)}`);
|
||||
if (listeners !== undefined) {
|
||||
// Event listeners to cleanup are only set in some edit types
|
||||
// Event listeners to clean up are only set in some edit types
|
||||
edit_box.removeEventListener("mousedown", listeners[0]);
|
||||
document.body.removeEventListener("mouseup", listeners[1]);
|
||||
}
|
||||
|
|
|
@ -222,7 +222,7 @@ function do_reload_app(send_after_reload, save_pointer, save_narrow, save_compos
|
|||
try {
|
||||
server_events.cleanup_event_queue();
|
||||
} catch (error) {
|
||||
blueslip.error("Failed to cleanup before reloading", undefined, error.stack);
|
||||
blueslip.error("Failed to clean up before reloading", undefined, error.stack);
|
||||
}
|
||||
|
||||
window.location.reload(true);
|
||||
|
|
|
@ -308,7 +308,7 @@ export function initialize() {
|
|||
}
|
||||
|
||||
export function cleanup_event_queue() {
|
||||
// Submit a request to the server to cleanup our event queue
|
||||
// Submit a request to the server to clean up our event queue
|
||||
if (page_params.event_queue_expired === true || page_params.no_event_queue === true) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
{{#if page_params.two_fa_enabled }}
|
||||
<p for="two_factor_auth" class="inline-block title">
|
||||
{{t "Two factor authentication" }}: {{#if page_params.two_fa_enabled_user }}{{t "Enabled" }}{{else}}{{t "Disabled" }}{{/if}}
|
||||
<a target="_blank" rel="noopener noreferrer" id="two_factor_auth" href="/account/two_factor/" title="{{t 'Setup two factor authentication' }}">[{{t "Setup" }}]</a>
|
||||
<a target="_blank" rel="noopener noreferrer" id="two_factor_auth" href="/account/two_factor/" title="{{t 'Set up two factor authentication' }}">[{{t "Setup" }}]</a>
|
||||
</p>
|
||||
{{/if}}
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
{% endif %}
|
||||
{% if login_link_disabled %}
|
||||
{% else %}
|
||||
<li><a href="{{ login_url }}">{{ _("Login") }}</a></li>
|
||||
<li><a href="{{ login_url }}">{{ _("Log in") }}</a></li>
|
||||
{% endif %}
|
||||
{% if register_link_disabled %}
|
||||
{% elif only_sso %}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
Zulip supports using SAML authentication for single sign-on, both when
|
||||
self-hosting or on the Zulip Cloud Plus plan.
|
||||
|
||||
This page documents details on how to setup SAML authentication with
|
||||
This page documents details on how to set up SAML authentication with
|
||||
Zulip with various common SAML Identity Providers.
|
||||
|
||||
## Configure SAML with Okta
|
||||
|
|
|
@ -26,7 +26,7 @@ The Zulip plugin is now registered with Redmine!
|
|||
|
||||
1. On your {{ settings_html|safe }}, create a new Redmine bot.
|
||||
|
||||
2. Log into your Redmine instance, click on **Administration** in the top-left
|
||||
2. Log in to your Redmine instance, click on **Administration** in the top-left
|
||||
corner, then click on **Plugins**.
|
||||
|
||||
3. Find the **Redmine Zulip** plugin, and click **Configure**. Fill
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
{% if login_link_disabled %}
|
||||
{% else %}
|
||||
<li>
|
||||
<a href="/login/">Login</a>
|
||||
<a href="/login/">Log in</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if register_link_disabled %}
|
||||
|
|
|
@ -137,9 +137,10 @@ class BaseDocumentationSpider(scrapy.Spider):
|
|||
|
||||
def _make_requests(self, url: str) -> Iterator[Request]:
|
||||
# These URLs are for Zulip's webapp, which with recent changes
|
||||
# can be accessible without login an account. While we do
|
||||
# crawl documentation served by the webapp (E.g. /help/), we
|
||||
# don't want to crawl the webapp itself, so we exclude these.
|
||||
# can be accessible without logging into an account. While we
|
||||
# do crawl documentation served by the webapp (e.g. /help/),
|
||||
# we don't want to crawl the webapp itself, so we exclude
|
||||
# these.
|
||||
if (
|
||||
url in ["http://localhost:9981/", "http://localhost:9981"]
|
||||
or url.startswith("http://localhost:9981/#")
|
||||
|
|
|
@ -19,7 +19,7 @@ API token.
|
|||
## Step 2: Create your DigitalOcean API token
|
||||
|
||||
Once you've been added to the Zulip team,
|
||||
[login](https://cloud.digitalocean.com/droplets) to the DigitalOcean control
|
||||
[log in](https://cloud.digitalocean.com/droplets) to the DigitalOcean control
|
||||
panel and [create your personal API token][do-create-api-token]. **Make sure
|
||||
you create your API token under the Zulip team.** (It should look something
|
||||
like [this][image-zulip-team]).
|
||||
|
@ -135,7 +135,7 @@ Rough steps:
|
|||
1. `tools/run-dev.py`, and check that `base.zulipdev.org:9991` is up and running.
|
||||
1. `> ~/.bash_history && history -c && sudo shutdown -h now` to clear any command
|
||||
line history (To reduce chance of confusing new contributors in case you made a typo)
|
||||
and shutdown the droplet.
|
||||
and shut down the droplet.
|
||||
1. Go to the Images tab on DigitalOcean, and "Take a Snapshot".
|
||||
1. Wait for several minutes.
|
||||
1. Do something like `curl -X GET -H "Content-Type: application/json"
|
||||
|
@ -157,7 +157,7 @@ Rough steps:
|
|||
1. Log in to the Zulip organization view, rather than via your personal account.
|
||||
1. Create a new droplet in DigitalOcean with 2GB RAM and `base.zulipdev.org` as the
|
||||
SSH authentication key.
|
||||
1. Login to the droplet as root user. Make sure to point the SSH program to the private
|
||||
1. Log in to the droplet as root user. Make sure to point the SSH program to the private
|
||||
key of `base.zulipdev.org` during this step.
|
||||
1. Create a user called `zulipdev` and add it to the `sudo` group.
|
||||
1. Make sudo of `zulipdev` user passwordless by including
|
||||
|
|
|
@ -24,7 +24,7 @@ work correctly. These secrets are passed as environment variables to the GitHub
|
|||
|
||||
Also pass the following as environment variables in `.github/workflows/update-oneclick-apps.yml`.
|
||||
* `PYTHON_DIGITALOCEAN_REQUEST_TIMEOUT_SEC` - This configures the maximum number of seconds
|
||||
to wait before the requests made by `python-digitalocean` timeout. If not configured, it's
|
||||
to wait before the requests made by `python-digitalocean` time out. If not configured, it's
|
||||
common for the requests to take 20+ minutes before getting timed out.
|
||||
|
||||
### Verifying the one click app image
|
||||
|
|
|
@ -448,7 +448,7 @@ def do_login(request: HttpRequest, user_profile: UserProfile) -> None:
|
|||
request._requestor_for_logs = user_profile.format_requestor_for_logs()
|
||||
process_client(request, user_profile, is_browser_view=True)
|
||||
if settings.TWO_FACTOR_AUTHENTICATION_ENABLED:
|
||||
# Login with two factor authentication as well.
|
||||
# Log in with two factor authentication as well.
|
||||
do_two_factor_login(request, user_profile)
|
||||
|
||||
|
||||
|
|
|
@ -194,7 +194,8 @@ NON_EXPORTED_TABLES = {
|
|||
"zerver_scheduledemail_users",
|
||||
"zerver_scheduledmessage",
|
||||
# These tables are related to a user's 2FA authentication
|
||||
# configuration, which will need to be re-setup on the new server.
|
||||
# configuration, which will need to be set up again on the new
|
||||
# server.
|
||||
"two_factor_phonedevice",
|
||||
"otp_static_staticdevice",
|
||||
"otp_static_statictoken",
|
||||
|
|
|
@ -16,9 +16,9 @@ class Command(ZulipBaseCommand):
|
|||
parser.add_argument(
|
||||
"--deactivated-only",
|
||||
action="store_true",
|
||||
help="Only logout all users who are deactivated",
|
||||
help="Only log out all users who are deactivated",
|
||||
)
|
||||
self.add_realm_args(parser, help="Only logout all users in a particular realm")
|
||||
self.add_realm_args(parser, help="Only log out all users in a particular realm")
|
||||
|
||||
def handle(self, *args: Any, **options: Any) -> None:
|
||||
realm = self.get_realm(options)
|
||||
|
|
|
@ -145,7 +145,7 @@ class DocPageTest(ZulipTestCase):
|
|||
if settings.ZILENCER_ENABLED:
|
||||
self._test("/apps/", "Apps for every platform.")
|
||||
self._test("/features/", "Beautiful messaging")
|
||||
self._test("/hello/", "Chat for distributed teams", landing_missing_strings=["Login"])
|
||||
self._test("/hello/", "Chat for distributed teams", landing_missing_strings=["Log in"])
|
||||
self._test("/why-zulip/", "Why Zulip?")
|
||||
self._test("/for/open-source/", "for open source projects")
|
||||
self._test("/for/research/", "for researchers")
|
||||
|
|
|
@ -442,7 +442,7 @@ class SingleUserPresenceTests(ZulipTestCase):
|
|||
def test_single_user_get(self) -> None:
|
||||
reset_emails_in_zulip_realm()
|
||||
|
||||
# First, we setup the test with some data
|
||||
# First, we set up the test with some data
|
||||
user = self.example_user("othello")
|
||||
self.login_user(user)
|
||||
result = self.client_post("/json/users/me/presence", {"status": "active"})
|
||||
|
@ -637,7 +637,7 @@ class UserPresenceAggregationTests(ZulipTestCase):
|
|||
|
||||
class GetRealmStatusesTest(ZulipTestCase):
|
||||
def test_get_statuses(self) -> None:
|
||||
# Setup the test by simulating users reporting their presence data.
|
||||
# Set up the test by simulating users reporting their presence data.
|
||||
othello = self.example_user("othello")
|
||||
hamlet = self.example_user("hamlet")
|
||||
|
||||
|
|
|
@ -1665,7 +1665,7 @@ so we didn't send them an invitation. We did send invitations to everyone else!"
|
|||
`emails_restricted_to_domains = False`, but later change
|
||||
`emails_restricted_to_domains = True`, the invitation should
|
||||
succeed but the invitee's signup attempt should fail as
|
||||
users are not allowed to signup using email containing +
|
||||
users are not allowed to sign up using email containing +
|
||||
when the realm is restricted to domain.
|
||||
"""
|
||||
zulip_realm = get_realm("zulip")
|
||||
|
|
|
@ -4974,7 +4974,7 @@ class GetSubscribersTest(ZulipTestCase):
|
|||
self.assertTrue(stream_dict["stream_id"] not in unsub_ids)
|
||||
|
||||
# The Rome stream has is_web_public=True, with default
|
||||
# subscribers not setup by this test, so we do the
|
||||
# subscribers not set up by this test, so we do the
|
||||
# following check only for the streams we created.
|
||||
if stream_dict["name"] in web_public_streams:
|
||||
self.assertEqual(len(stream_dict["subscribers"]), len(users_to_subscribe))
|
||||
|
|
|
@ -344,7 +344,7 @@ class UserGroupAPITestCase(ZulipTestCase):
|
|||
members = get_memberships_of_users(user_group, [hamlet, othello, aaron])
|
||||
self.assertEqual(len(members), 3)
|
||||
|
||||
# For normal testing we again login with hamlet
|
||||
# For normal testing we again log in with hamlet
|
||||
self.logout()
|
||||
self.login_user(hamlet)
|
||||
# Test remove members
|
||||
|
|
|
@ -53,7 +53,7 @@ class ZephyrTest(ZulipTestCase):
|
|||
), self.assertLogs(level="ERROR") as log:
|
||||
result = post("zephyr", cred=cred)
|
||||
|
||||
self.assert_json_error(result, "We were unable to setup mirroring for you")
|
||||
self.assert_json_error(result, "We were unable to set up mirroring for you")
|
||||
self.assertIn("Error updating the user's ccache", log.output[0])
|
||||
|
||||
with ccache_mock(return_value=b"1234"), mirror_mock(), ssh_mock() as ssh:
|
||||
|
|
|
@ -249,7 +249,7 @@ class ClientDescriptor:
|
|||
def cleanup(self) -> None:
|
||||
# Before we can GC the event queue, we need to disconnect the
|
||||
# handler and notify the client (or connection server) so that
|
||||
# they can cleanup their own state related to the GC'd event
|
||||
# they can clean up their own state related to the GC'd event
|
||||
# queue. Finishing the handler before we GC ensures the
|
||||
# invariant that event queues are idle when passed to
|
||||
# `do_gc_event_queues` is preserved.
|
||||
|
|
|
@ -679,7 +679,7 @@ class TwoFactorLoginView(BaseTwoFactorLoginView):
|
|||
|
||||
def done(self, form_list: List[Form], **kwargs: Any) -> HttpResponse:
|
||||
"""
|
||||
Login the user and redirect to the desired page.
|
||||
Log in the user and redirect to the desired page.
|
||||
|
||||
We need to override this function so that we can redirect to
|
||||
realm.uri instead of '/'.
|
||||
|
|
|
@ -71,6 +71,6 @@ def webathena_kerberos_login(
|
|||
)
|
||||
except subprocess.CalledProcessError:
|
||||
logging.exception("Error updating the user's ccache", stack_info=True)
|
||||
return json_error(_("We were unable to setup mirroring for you"))
|
||||
return json_error(_("We were unable to set up mirroring for you"))
|
||||
|
||||
return json_success()
|
||||
|
|
|
@ -102,7 +102,7 @@ ALWAYS_SEND_ALL_HOTSPOTS = False
|
|||
# FAKE_LDAP_MODE supports using a fake LDAP database in the
|
||||
# development environment, without needing an LDAP server!
|
||||
#
|
||||
# Three modes are allowed, and each will setup Zulip and the fake LDAP
|
||||
# Three modes are allowed, and each will set up Zulip and the fake LDAP
|
||||
# database in a way appropriate for the corresponding mode described
|
||||
# in https://zulip.readthedocs.io/en/latest/production/authentication-methods.html#ldap-including-active-directory
|
||||
# (A) If users' email addresses are in LDAP and used as username.
|
||||
|
|
Loading…
Reference in New Issue