mirror of https://github.com/zulip/zulip.git
docs: Fix grammar errors found by mwic.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
parent
7807bff526
commit
835ee69c80
|
@ -8,7 +8,7 @@
|
||||||
# -f ./Dockerfile-postgresql -t zulip/zulip-postgresql:14 --push .
|
# -f ./Dockerfile-postgresql -t zulip/zulip-postgresql:14 --push .
|
||||||
|
|
||||||
# Currently the PostgreSQL images do not support automatic upgrading of
|
# Currently the PostgreSQL images do not support automatic upgrading of
|
||||||
# the on-disk data in volumes. So the base image can not currently be upgraded
|
# the on-disk data in volumes. So the base image cannot currently be upgraded
|
||||||
# without users needing a manual pgdump and restore.
|
# without users needing a manual pgdump and restore.
|
||||||
|
|
||||||
# https://hub.docker.com/r/groonga/pgroonga/tags
|
# https://hub.docker.com/r/groonga/pgroonga/tags
|
||||||
|
|
|
@ -469,7 +469,7 @@ We can see in the traceback that a `SchemaError` was raised in
|
||||||
raise SchemaError(message) from None
|
raise SchemaError(message) from None
|
||||||
```
|
```
|
||||||
|
|
||||||
The next line in the output, let's us know how many errors were found
|
The next line in the output, lets us know how many errors were found
|
||||||
and for what endpoint.
|
and for what endpoint.
|
||||||
|
|
||||||
```console
|
```console
|
||||||
|
|
|
@ -38,7 +38,7 @@ help you along.
|
||||||
|
|
||||||
Don't forget to have fun! Spending a few months coding on open source is an
|
Don't forget to have fun! Spending a few months coding on open source is an
|
||||||
amazing opportunity, and we hope you'll have a blast. Your acceptance to the
|
amazing opportunity, and we hope you'll have a blast. Your acceptance to the
|
||||||
program means that we we are confident that if you put in the effort, your
|
program means that we are confident that if you put in the effort, your
|
||||||
contributions to the open source world will be something you can be proud of for
|
contributions to the open source world will be something you can be proud of for
|
||||||
the rest of your life.
|
the rest of your life.
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@ this file:
|
||||||
rendered content, since the APNS and GCM push notification systems
|
rendered content, since the APNS and GCM push notification systems
|
||||||
don't support richer markup. Mostly, this involves stripping HTML,
|
don't support richer markup. Mostly, this involves stripping HTML,
|
||||||
but there's some syntax we take special care with. Tests for what
|
but there's some syntax we take special care with. Tests for what
|
||||||
this plain-text version of content should be are stored in the
|
this plain-text version of content should be stored in the
|
||||||
`text_content` field.
|
`text_content` field.
|
||||||
|
|
||||||
If you're going to manually test some changes in the frontend Markdown
|
If you're going to manually test some changes in the frontend Markdown
|
||||||
|
|
|
@ -12,7 +12,7 @@ for Zulip.
|
||||||
Zulip's SCIM integration has the following limitations:
|
Zulip's SCIM integration has the following limitations:
|
||||||
|
|
||||||
* Provisioning Groups is not yet implemented.
|
* Provisioning Groups is not yet implemented.
|
||||||
* While Zulip's SCIM integration is generic, it has has only been
|
* While Zulip's SCIM integration is generic, it has only been
|
||||||
fully tested and documented with Okta's SCIM provider, and it is
|
fully tested and documented with Okta's SCIM provider, and it is
|
||||||
possible minor adjustments may be required. [Zulip
|
possible minor adjustments may be required. [Zulip
|
||||||
support](/help/contact-support) is happy to help customers configure
|
support](/help/contact-support) is happy to help customers configure
|
||||||
|
@ -71,7 +71,7 @@ Zulip's SCIM integration has the following limitations:
|
||||||
* **familyName**
|
* **familyName**
|
||||||
|
|
||||||
1. **Optional:** If you'd like to also sync [user role](/help/roles-and-permissions),
|
1. **Optional:** If you'd like to also sync [user role](/help/roles-and-permissions),
|
||||||
you can do it by by adding a custom attribute in Okta. Go to the **Profile Editor**,
|
you can do it by adding a custom attribute in Okta. Go to the **Profile Editor**,
|
||||||
click into the entry of the SCIM app you've just set up and **Add Attribute**.
|
click into the entry of the SCIM app you've just set up and **Add Attribute**.
|
||||||
Configure the following:
|
Configure the following:
|
||||||
* **Data type**: `string`
|
* **Data type**: `string`
|
||||||
|
|
|
@ -118,7 +118,7 @@ class zulip_ops::profile::base {
|
||||||
|
|
||||||
$hosting_provider = zulipconf('machine', 'hosting_provider', 'ec2')
|
$hosting_provider = zulipconf('machine', 'hosting_provider', 'ec2')
|
||||||
if $hosting_provider == 'ec2' {
|
if $hosting_provider == 'ec2' {
|
||||||
# This conditional block is for for whether it's not
|
# This conditional block is for whether it's not
|
||||||
# chat.zulip.org, which uses a different hosting provider.
|
# chat.zulip.org, which uses a different hosting provider.
|
||||||
file { '/root/.ssh/authorized_keys':
|
file { '/root/.ssh/authorized_keys':
|
||||||
ensure => file,
|
ensure => file,
|
||||||
|
|
|
@ -30,7 +30,7 @@ Also you can use optional keys to configure the script and change default values
|
||||||
the HTTP requests made by this tool.
|
the HTTP requests made by this tool.
|
||||||
|
|
||||||
-d HOST Destination Zulip host for email uploading. Address must contain type of
|
-d HOST Destination Zulip host for email uploading. Address must contain type of
|
||||||
HTTP protocol, i.e "https://example.com". Default value: "https://127.0.0.1".
|
HTTP protocol, e.g. "https://example.com". Default value: "https://127.0.0.1".
|
||||||
|
|
||||||
-u URL Destination relative for email uploading. Default value: "/email_mirror_message".
|
-u URL Destination relative for email uploading. Default value: "/email_mirror_message".
|
||||||
|
|
||||||
|
|
|
@ -179,7 +179,7 @@ def try_to_copy_venv(venv_path: str, new_packages: Set[str]) -> bool:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
old_packages = get_venv_packages(curr_venv_path)
|
old_packages = get_venv_packages(curr_venv_path)
|
||||||
# We only consider using using old virtualenvs that only
|
# We only consider using old virtualenvs that only
|
||||||
# contain packages that we want in our new virtualenv.
|
# contain packages that we want in our new virtualenv.
|
||||||
if not (old_packages - new_packages):
|
if not (old_packages - new_packages):
|
||||||
overlap = new_packages & old_packages
|
overlap = new_packages & old_packages
|
||||||
|
|
|
@ -98,7 +98,7 @@ Its main downside is that contributions to projects other than
|
||||||
zulip/zulip in the last few weeks before a zulip/zulip release will be
|
zulip/zulip in the last few weeks before a zulip/zulip release will be
|
||||||
delayed (i.e. counted in the total for the next zulip/zulip release).
|
delayed (i.e. counted in the total for the next zulip/zulip release).
|
||||||
|
|
||||||
Expects that all Zulip repositories repositories are in the current working
|
Expects that all Zulip repositories are in the current working
|
||||||
directory, which does not need to be the directory this is run from.
|
directory, which does not need to be the directory this is run from.
|
||||||
|
|
||||||
# Changes between two major releases.
|
# Changes between two major releases.
|
||||||
|
|
|
@ -68,7 +68,7 @@ export function process_message(message: Message): void {
|
||||||
// case when there is an alert word just before `<` or `>`.
|
// case when there is an alert word just before `<` or `>`.
|
||||||
const check_string = pre_match + match.slice(0, -1);
|
const check_string = pre_match + match.slice(0, -1);
|
||||||
const in_tag = check_string.lastIndexOf("<") > check_string.lastIndexOf(">");
|
const in_tag = check_string.lastIndexOf("<") > check_string.lastIndexOf(">");
|
||||||
// Matched word is inside a HTML tag so don't perform any highlighting.
|
// Matched word is inside an HTML tag so don't perform any highlighting.
|
||||||
if (in_tag) {
|
if (in_tag) {
|
||||||
return before + word + after;
|
return before + word + after;
|
||||||
}
|
}
|
||||||
|
|
|
@ -273,7 +273,7 @@ function get_end_tr_from_endc($endc) {
|
||||||
// We can tell this is the case because the selection isn't inside a
|
// We can tell this is the case because the selection isn't inside a
|
||||||
// `messagebox-content` div, which is where the message text itself is.
|
// `messagebox-content` div, which is where the message text itself is.
|
||||||
// TODO: Ideally make it so that the selection cannot end there.
|
// TODO: Ideally make it so that the selection cannot end there.
|
||||||
// For now, we find find the message row directly above wherever the
|
// For now, we find the message row directly above wherever the
|
||||||
// selection ended.
|
// selection ended.
|
||||||
if ($endc.closest(".messagebox-content").length === 0) {
|
if ($endc.closest(".messagebox-content").length === 0) {
|
||||||
// If the selection ends within the message following the selected
|
// If the selection ends within the message following the selected
|
||||||
|
|
|
@ -31,7 +31,7 @@ function make_dimen_wrapper(dimen_name, dimen_func) {
|
||||||
export const height = make_dimen_wrapper("height", $.fn.height);
|
export const height = make_dimen_wrapper("height", $.fn.height);
|
||||||
export const width = make_dimen_wrapper("width", $.fn.width);
|
export const width = make_dimen_wrapper("width", $.fn.width);
|
||||||
|
|
||||||
// TODO: This function let's us use the DOM API instead of jquery
|
// TODO: This function lets us use the DOM API instead of jquery
|
||||||
// (<10x faster) for condense.js, but we want to eventually do a
|
// (<10x faster) for condense.js, but we want to eventually do a
|
||||||
// bigger of refactor `height` and `width` above to do the same.
|
// bigger of refactor `height` and `width` above to do the same.
|
||||||
export function max_message_height() {
|
export function max_message_height() {
|
||||||
|
|
|
@ -707,7 +707,7 @@ export function slug_to_emails(slug: string): string | undefined {
|
||||||
/*
|
/*
|
||||||
It's not super important to be flexible about
|
It's not super important to be flexible about
|
||||||
direct message related slugs, since you would
|
direct message related slugs, since you would
|
||||||
rarely post them to the web, but we we do want
|
rarely post them to the web, but we do want
|
||||||
to support reasonable variations:
|
to support reasonable variations:
|
||||||
|
|
||||||
99-alice@example.com
|
99-alice@example.com
|
||||||
|
|
|
@ -109,7 +109,7 @@ function update_ui_and_send_reaction_ajax(message_id, reaction_info) {
|
||||||
|
|
||||||
export function toggle_emoji_reaction(message_id, emoji_name) {
|
export function toggle_emoji_reaction(message_id, emoji_name) {
|
||||||
// This codepath doesn't support toggling a deactivated realm emoji.
|
// This codepath doesn't support toggling a deactivated realm emoji.
|
||||||
// Since an user can interact with a deactivated realm emoji only by
|
// Since a user can interact with a deactivated realm emoji only by
|
||||||
// clicking on a reaction and that is handled by `process_reaction_click()`
|
// clicking on a reaction and that is handled by `process_reaction_click()`
|
||||||
// method. This codepath is to be used only where there is no chance of an
|
// method. This codepath is to be used only where there is no chance of an
|
||||||
// user interacting with a deactivated realm emoji like emoji picker.
|
// user interacting with a deactivated realm emoji like emoji picker.
|
||||||
|
|
|
@ -56,7 +56,7 @@ export function initialize(): void {
|
||||||
const $target = $(e.target);
|
const $target = $(e.target);
|
||||||
|
|
||||||
// Spoiler headers can contain Markdown, including links. We
|
// Spoiler headers can contain Markdown, including links. We
|
||||||
// return so that clicking such links will be be processed by
|
// return so that clicking such links will be processed by
|
||||||
// the browser rather than opening the header.
|
// the browser rather than opening the header.
|
||||||
if ($target.closest("a").length > 0) {
|
if ($target.closest("a").length > 0) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -668,7 +668,7 @@ export function is_default_stream_id(stream_id: number): boolean {
|
||||||
|
|
||||||
export function get_name(stream_name: string): string {
|
export function get_name(stream_name: string): string {
|
||||||
// This returns the actual name of a stream if we are subscribed to
|
// This returns the actual name of a stream if we are subscribed to
|
||||||
// it (i.e "Denmark" vs. "denmark"), while falling thru to
|
// it (e.g. "Denmark" vs. "denmark"), while falling thru to
|
||||||
// stream_name if we don't have a subscription. (Stream names
|
// stream_name if we don't have a subscription. (Stream names
|
||||||
// are case-insensitive, but we try to display the actual name
|
// are case-insensitive, but we try to display the actual name
|
||||||
// when we know it.)
|
// when we know it.)
|
||||||
|
|
|
@ -405,7 +405,7 @@ export function initialize() {
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#streams_overlay_container").on("keypress", "#change_stream_description", (e) => {
|
$("#streams_overlay_container").on("keypress", "#change_stream_description", (e) => {
|
||||||
// Stream descriptions can not be multiline, so disable enter key
|
// Stream descriptions cannot be multiline, so disable enter key
|
||||||
// to prevent new line
|
// to prevent new line
|
||||||
if (keydown_util.is_enter_event(e)) {
|
if (keydown_util.is_enter_event(e)) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -100,7 +100,7 @@ export const user_card = new PopoverMenu();
|
||||||
|
|
||||||
function popover_items_handle_keyboard_with_overrides(key, $items) {
|
function popover_items_handle_keyboard_with_overrides(key, $items) {
|
||||||
/* Variant of popover_items_handle_keyboard with somewhat hacky
|
/* Variant of popover_items_handle_keyboard with somewhat hacky
|
||||||
* logic for for opening the manage menu. */
|
* logic for opening the manage menu. */
|
||||||
if (!$items) {
|
if (!$items) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -109,7 +109,7 @@ function template_stub({filename, actual_render}) {
|
||||||
|
|
||||||
if (exercise_template) {
|
if (exercise_template) {
|
||||||
// If our dev wants to exercise the actual template, then do so.
|
// If our dev wants to exercise the actual template, then do so.
|
||||||
// We set the in_mid_render bool so that included (i.e partial)
|
// We set the in_mid_render bool so that included (i.e. partial)
|
||||||
// templates get rendered.
|
// templates get rendered.
|
||||||
in_mid_render = true;
|
in_mid_render = true;
|
||||||
const html = actual_render(...args);
|
const html = actual_render(...args);
|
||||||
|
|
|
@ -253,7 +253,7 @@ test("get_streams_for_user", () => {
|
||||||
// #social: current user is can get this as neither this is invite only nor current
|
// #social: current user is can get this as neither this is invite only nor current
|
||||||
// user is a guest.
|
// user is a guest.
|
||||||
// #test: current user is no longer subscribed to a private stream, so
|
// #test: current user is no longer subscribed to a private stream, so
|
||||||
// he can not see whether test_user is subscribed to it.
|
// he cannot see whether test_user is subscribed to it.
|
||||||
assert.deepEqual(stream_data.get_streams_for_user(test_user.user_id).subscribed, [
|
assert.deepEqual(stream_data.get_streams_for_user(test_user.user_id).subscribed, [
|
||||||
denmark,
|
denmark,
|
||||||
social,
|
social,
|
||||||
|
|
|
@ -316,7 +316,7 @@ test("sort_languages", () => {
|
||||||
assert.deepEqual(test_langs, ["j", "javascript", "java"]);
|
assert.deepEqual(test_langs, ["j", "javascript", "java"]);
|
||||||
|
|
||||||
// (Only one alias should be shown per language
|
// (Only one alias should be shown per language
|
||||||
// (i.e searching for "js" shouldn't show "javascript")
|
// (e.g. searching for "js" shouldn't show "javascript")
|
||||||
test_langs = ["js", "javascript", "java"];
|
test_langs = ["js", "javascript", "java"];
|
||||||
test_langs = th.sort_languages(test_langs, "js");
|
test_langs = th.sort_languages(test_langs, "js");
|
||||||
assert.deepEqual(test_langs, ["js", "java"]);
|
assert.deepEqual(test_langs, ["js", "java"]);
|
||||||
|
|
|
@ -113,7 +113,7 @@
|
||||||
|
|
||||||
if (!isActive) {
|
if (!isActive) {
|
||||||
if ('ontouchstart' in document.documentElement) {
|
if ('ontouchstart' in document.documentElement) {
|
||||||
// if mobile we we use a backdrop because click events don't delegate
|
// if mobile we use a backdrop because click events don't delegate
|
||||||
$('<div class="dropdown-backdrop"/>').insertBefore($(this)).on('click', clearMenus)
|
$('<div class="dropdown-backdrop"/>').insertBefore($(this)).on('click', clearMenus)
|
||||||
}
|
}
|
||||||
$parent.toggleClass('open')
|
$parent.toggleClass('open')
|
||||||
|
|
|
@ -41,7 +41,7 @@ def check_add_realm_emoji(
|
||||||
emoji_file_name = get_emoji_file_name(image_file.name, realm_emoji.id)
|
emoji_file_name = get_emoji_file_name(image_file.name, realm_emoji.id)
|
||||||
|
|
||||||
# The only user-controlled portion of 'emoji_file_name' is an extension,
|
# The only user-controlled portion of 'emoji_file_name' is an extension,
|
||||||
# which can not contain '..' or '/' or '\', making it difficult to exploit
|
# which cannot contain '..' or '/' or '\', making it difficult to exploit
|
||||||
emoji_file_name = mark_sanitized(emoji_file_name)
|
emoji_file_name = mark_sanitized(emoji_file_name)
|
||||||
|
|
||||||
emoji_uploaded_successfully = False
|
emoji_uploaded_successfully = False
|
||||||
|
|
|
@ -732,7 +732,7 @@ class InlineInterestingLinkProcessor(markdown.treeprocessors.Treeprocessor):
|
||||||
if not self.zmd.image_preview_enabled:
|
if not self.zmd.image_preview_enabled:
|
||||||
return False
|
return False
|
||||||
parsed_url = urllib.parse.urlparse(url)
|
parsed_url = urllib.parse.urlparse(url)
|
||||||
# remove HTML URLs which end with image extensions that can not be shorted
|
# remove HTML URLs which end with image extensions that cannot be shorted
|
||||||
if parsed_url.netloc == "pasteboard.co":
|
if parsed_url.netloc == "pasteboard.co":
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
|
@ -137,8 +137,8 @@ def resize_emoji(
|
||||||
) -> Tuple[bytes, bool, Optional[bytes]]:
|
) -> Tuple[bytes, bool, Optional[bytes]]:
|
||||||
# This function returns three values:
|
# This function returns three values:
|
||||||
# 1) Emoji image data.
|
# 1) Emoji image data.
|
||||||
# 2) If emoji is gif i.e animated.
|
# 2) If emoji is gif i.e. animated.
|
||||||
# 3) If is animated then return still image data i.e first frame of gif.
|
# 3) If is animated then return still image data i.e. first frame of gif.
|
||||||
|
|
||||||
try:
|
try:
|
||||||
im = Image.open(io.BytesIO(image_data))
|
im = Image.open(io.BytesIO(image_data))
|
||||||
|
|
|
@ -3961,7 +3961,7 @@ paths:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
description: |
|
description: |
|
||||||
Boolean describing whether the authentication method (i.e its key)
|
Boolean describing whether the authentication method (i.e. its key)
|
||||||
is enabled in this organization.
|
is enabled in this organization.
|
||||||
type: boolean
|
type: boolean
|
||||||
description: |
|
description: |
|
||||||
|
@ -13759,7 +13759,7 @@ paths:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
description: |
|
description: |
|
||||||
Boolean describing whether the authentication method (i.e its key)
|
Boolean describing whether the authentication method (i.e. its key)
|
||||||
is enabled in this organization.
|
is enabled in this organization.
|
||||||
type: boolean
|
type: boolean
|
||||||
description: |
|
description: |
|
||||||
|
|
|
@ -346,7 +346,7 @@ class RealmEmojiTest(ZulipTestCase):
|
||||||
self.assert_json_error(result, "Broken")
|
self.assert_json_error(result, "Broken")
|
||||||
|
|
||||||
def test_check_admin_realm_emoji(self) -> None:
|
def test_check_admin_realm_emoji(self) -> None:
|
||||||
# Test that an user A is able to remove a realm emoji uploaded by him
|
# Test that a user A is able to remove a realm emoji uploaded by him
|
||||||
# and having same name as a deactivated realm emoji uploaded by some
|
# and having same name as a deactivated realm emoji uploaded by some
|
||||||
# other user B.
|
# other user B.
|
||||||
emoji_author_1 = self.example_user("cordelia")
|
emoji_author_1 = self.example_user("cordelia")
|
||||||
|
|
|
@ -4734,7 +4734,7 @@ class SubscriptionAPITest(ZulipTestCase):
|
||||||
|
|
||||||
def test_subscribe_to_stream_post_policy_restrict_new_members_stream(self) -> None:
|
def test_subscribe_to_stream_post_policy_restrict_new_members_stream(self) -> None:
|
||||||
"""
|
"""
|
||||||
New members can subscribe to streams where they can not post
|
New members can subscribe to streams where they cannot post
|
||||||
"""
|
"""
|
||||||
new_member_email = self.nonreg_email("test")
|
new_member_email = self.nonreg_email("test")
|
||||||
self.register(new_member_email, "test")
|
self.register(new_member_email, "test")
|
||||||
|
|
|
@ -158,7 +158,7 @@ def validate_can_delete_message(user_profile: UserProfile, message: Message) ->
|
||||||
# None means no time limit to delete message
|
# None means no time limit to delete message
|
||||||
return
|
return
|
||||||
if (timezone_now() - message.date_sent) > datetime.timedelta(seconds=deadline_seconds):
|
if (timezone_now() - message.date_sent) > datetime.timedelta(seconds=deadline_seconds):
|
||||||
# User can not delete message after deadline time of realm
|
# User cannot delete message after deadline time of realm
|
||||||
raise JsonableError(_("The time limit for deleting this message has passed"))
|
raise JsonableError(_("The time limit for deleting this message has passed"))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
|
@ -195,7 +195,7 @@ def get_bigbluebutton_url(
|
||||||
id = "zulip-" + str(random.randint(100000000000, 999999999999))
|
id = "zulip-" + str(random.randint(100000000000, 999999999999))
|
||||||
password = b32encode(secrets.token_bytes(20)).decode() # 20 bytes means 32 characters
|
password = b32encode(secrets.token_bytes(20)).decode() # 20 bytes means 32 characters
|
||||||
|
|
||||||
# We sign our data here to ensure a Zulip user can not tamper with
|
# We sign our data here to ensure a Zulip user cannot tamper with
|
||||||
# the join link to gain access to other meetings that are on the
|
# the join link to gain access to other meetings that are on the
|
||||||
# same bigbluebutton server.
|
# same bigbluebutton server.
|
||||||
signed = Signer().sign_object(
|
signed = Signer().sign_object(
|
||||||
|
|
Loading…
Reference in New Issue