web: Save a needless 301 redirect from /integrations to /integrations/.

This commit is contained in:
Alex Vandiver 2023-03-23 02:47:14 +00:00 committed by Tim Abbott
parent 5967dda35d
commit a1570ff3dd
26 changed files with 28 additions and 28 deletions

View File

@ -16,7 +16,7 @@ Zulip:
* Adding an incoming webhook integration (detailed on this page),
where all the logic for formatting the Zulip messages lives in the
Zulip server. This is how most of [Zulip's official
integrations](/integrations) work, because they enable Zulip to
integrations](/integrations/) work, because they enable Zulip to
support third-party services that just have an "outgoing webhook"
feature (without the third party needing to do any work specific to
Zulip).

View File

@ -4,7 +4,7 @@ Zulip's APIs allow you to integrate other services with Zulip. This
guide should help you find the API you need:
* First, check if the tool you'd like to integrate with Zulip
[already has a native integration](/integrations).
[already has a native integration](/integrations/).
* Next, check if [Zapier](https://zapier.com/apps) or
[IFTTT](https://ifttt.com/search) has an integration.
[Zulip's Zapier integration](/integrations/doc/zapier) and

View File

@ -16,7 +16,7 @@ possible.
Most existing integrations send content from a third-party product into
Zulip.
* Search Zulip's [list of native integrations](/integrations) for the
* Search Zulip's [list of native integrations](/integrations/) for the
third-party product. Each integration has a page describing how to set it
up.

View File

@ -107,7 +107,7 @@ See our guide on [writing help center articles](helpcenter.md).
### 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 set up each
of Zulip's more than 100 integrations. There is a detailed [guide on
documenting integrations](integrations.md), including style guidelines

View File

@ -5,7 +5,7 @@
The main Zulip codebase is at <https://github.com/zulip/zulip>. It
contains the Zulip backend (written in Python 3.x and Django), the
web app (written in JavaScript and TypeScript) and our library of
incoming webhook [integrations](https://zulip.com/integrations)
incoming webhook [integrations](https://zulip.com/integrations/)
with other services and applications (see [the directory structure
guide](directory-structure.md)).

View File

@ -14,7 +14,7 @@ A bot that sends content to or from another product is often called an
Zulip natively supports integrations with over one hundred products, and with
almost a thousand more through Zapier and IFTTT. If you're looking to add an
integration with an existing product, see our
[list of integrations](/integrations), along with those of
[list of integrations](/integrations/), along with those of
[Zapier](https://zapier.com/apps) and [IFTTT](https://ifttt.com/search).
## Anatomy of a bot

View File

@ -5,7 +5,7 @@ organization URL is a disruptive operation for users:
* Users will be logged out of existing sessions on the web, mobile and
desktop apps and need to log in again.
* Any [API clients](/api) or [integrations](/integrations) will need
* Any [API clients](/api) or [integrations](/integrations/) will need
to be updated to point to the new organization URL.
We recommend using a [wildcard

View File

@ -163,7 +163,7 @@ Once the import process is completed, you will need to:
4. Share the URL for your new Zulip organization, and (recommended) the [Getting
started with Zulip guide](/help/getting-started-with-zulip).
5. Migrate any [integrations](/integrations).
5. Migrate any [integrations](/integrations/).
{end_tabs}

View File

@ -16,6 +16,6 @@ Once the import process is completed, you will need to:
3. Share the URL for your new Zulip organization, and (recommended) the [Getting
started with Zulip guide](/help/getting-started-with-zulip).
4. Migrate any [integrations](/integrations).
4. Migrate any [integrations](/integrations/).
{end_tabs}

View File

@ -6,7 +6,7 @@ more through [Zapier](/integrations/doc/zapier) and
[Sentry](/integrations/doc/sentry) and
[Twitter](/integrations/doc/twitter).
* The [integrations page](/integrations) has instructions for
* The [integrations page](/integrations/) has instructions for
integrating with each product.
* If you don't see an integration you need, you can [request it](/help/request-an-integration).
* You can also [create custom integrations](/api/integrations-overview) using our API.

View File

@ -94,7 +94,7 @@ topics](/help/restrict-moving-messages).
* Resolving a topic works by moving the messages to a new topic.
* Like with all topic editing, Zulip clients update instantly, so
human users will likely only send messages to the resolved topic.
* [Integrations](/integrations) will usually send new messages to the
* [Integrations](/integrations/) will usually send new messages to the
original topic (`example topic`) after a topic is resolved. This is
useful for alerting integrations, where a repeating alert might have a
different cause. You can mark the topic resolved (as normal) once

View File

@ -321,7 +321,7 @@ more through [Zapier](/integrations/doc/zapier) and
[IFTTT](/integrations/doc/ifttt). Popular Zulip integrations include
[GitHub](/integrations/doc/github) and
[Twitter](/integrations/doc/twitter). The [integrations
page](/integrations) has instructions for integrating with each
page](/integrations/) has instructions for integrating with each
product.
## Cleaning up at the end of a class

View File

@ -110,7 +110,7 @@ python-magic
# The Zulip API bindings, from its own repository. We integrate with
# these tightly, including fetching content not included in the official
# PyPI release tarballs, such as logos, assets and documentation files
# that we render on our /integrations page. Therefore, we need to pin
# that we render on our /integrations/ page. Therefore, we need to pin
# the version from Git rather than a PyPI release. Keeping everything in
# one repository simplifies the process of implementing and documenting
# new bots for new contributors.

View File

@ -109,7 +109,7 @@
<section>
<h2>Apps, integrations, and API.</h2>
<a class="feature-block" href="/integrations" target="_blank" rel="noopener noreferrer">
<a class="feature-block" href="/integrations/" target="_blank" rel="noopener noreferrer">
<h3>INTEGRATIONS</h3>
<p>
Get alerts and updates from your favorite services with

View File

@ -243,7 +243,7 @@
<div class="list-content">
Native integrations for GitHub, Jira,
PagerDuty, Sentry
and <a href="/integrations">hundreds of
and <a href="/integrations/">hundreds of
other tools</a> can initiate new topics,
creating lightweight discussion spaces for
each issue.

View File

@ -260,7 +260,7 @@
<li>10,000 messages of search history</li>
<li>File storage up to 5 GB total</li>
<li><a href="/features">Full-featured</a> team chat service</li>
<li><a href="/integrations">Hundreds of integrations</a></li>
<li><a href="/integrations/">Hundreds of integrations</a></li>
<li>Advanced <a href="/help/roles-and-permissions">roles</a> and <a href="/help/stream-permissions">permissions</a></li>
</ul>
</div>

View File

@ -474,7 +474,7 @@
<li>
<div class="list-content">
Native integrations for GitHub, Jira, Twitter, Sentry
and <a href="/integrations">hundreds of
and <a href="/integrations/">hundreds of
other tools</a> can initiate new topics,
creating lightweight discussion spaces for
each issue.

View File

@ -396,7 +396,7 @@
and
<a href="/integrations/doc/ifttt">IFTTT</a>.
</p>
<p><a href="/integrations">See all available integrations.</a></p>
<p><a href="/integrations/">See all available integrations.</a></p>
</div>
<div class="integration-icons">

View File

@ -19,7 +19,7 @@
<li>10,000 messages of search history</li>
<li>File storage up to 5 GB total</li>
<li><a href="/features">Full-featured</a> team chat service</li>
<li><a href="/integrations">Hundreds of integrations</a></li>
<li><a href="/integrations/">Hundreds of integrations</a></li>
<li>Advanced <a href="/help/roles-and-permissions">roles</a> and <a href="/help/stream-permissions">permissions</a></li>
<li><a href="/help/roles-and-permissions">Guest accounts</a></li>
</ul>

View File

@ -48,7 +48,7 @@
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
<div class="dropdown-list">
<a href="/integrations">
<a href="/integrations/">
<h4 class="integration-category selected" data-category="all">All</h4>
</a>
{% for category in categories_dict.keys() %}
@ -74,7 +74,7 @@
<div class="catalog">
<div class="integration-categories-sidebar">
<h3>{% trans %}Categories{% endtrans %}</h3>
<a href="/integrations">
<a href="/integrations/">
<h4 data-category="all" class="integration-category selected">{% trans %}All{% endtrans %}</h4>
</a>
{% for category in categories_dict.keys() %}
@ -143,7 +143,7 @@
<div id="integration-instructions-group">
<div id="integration-instruction-block" class="integration-instruction-block">
<div class="categories"></div>
<a href="/integrations" id="integration-list-link" class="no-underline"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i><span>Back to list</span></a>
<a href="/integrations/" id="integration-list-link" class="no-underline"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i><span>Back to list</span></a>
</div>
{% for integration in integrations_dict.values() %}

View File

@ -69,7 +69,7 @@ class PorticoDocumentationSpider(BaseDocumentationSpider):
"http://localhost:9981/plans",
"http://localhost:9981/team",
"http://localhost:9981/apps",
"http://localhost:9981/integrations",
"http://localhost:9981/integrations/",
"http://localhost:9981/terms",
"http://localhost:9981/privacy",
"http://localhost:9981/features",

View File

@ -361,7 +361,7 @@ function integration_events() {
});
$(window).on("popstate", () => {
if (window.location.pathname.startsWith("/integrations")) {
if (window.location.pathname.startsWith("/integrations/")) {
dispatch("LOAD_PATH");
} else {
window.location = window.location.href;

View File

@ -124,7 +124,7 @@
</a>
</li>
<li role="presentation" class="hidden-for-spectators">
<a href="/integrations" target="_blank" rel="noopener noreferrer" role="menuitem">
<a href="/integrations/" target="_blank" rel="noopener noreferrer" role="menuitem">
<i class="fa fa-github" aria-hidden="true"></i> {{t 'Integrations' }}
</a>
</li>

View File

@ -4,7 +4,7 @@
<div class="tip">
{{#tr}}
Looking for our <z-integrations>integrations</z-integrations> or <z-api>API</z-api> documentation?
{{#*inline "z-integrations"}}<a href="/integrations" target="_blank" rel="noopener noreferrer">{{> @partial-block}}</a>{{/inline}}
{{#*inline "z-integrations"}}<a href="/integrations/" target="_blank" rel="noopener noreferrer">{{> @partial-block}}</a>{{/inline}}
{{#*inline "z-api"}}<a href="/api" target="_blank" rel="noopener noreferrer">{{> @partial-block}}</a>{{/inline}}
{{/tr}}
</div>

View File

@ -12,7 +12,7 @@ from zerver.lib.storage import static_path
"""This module declares all of the (documented) integrations available
in the Zulip server. The Integration class is used as part of
generating the documentation on the /integrations page, while the
generating the documentation on the /integrations/ page, while the
WebhookIntegration class is also used to generate the URLs in
`zproject/urls.py` for webhook integrations.

View File

@ -21,7 +21,7 @@ gear_info = {
"manage-streams": ["Manage streams", "/#streams/subscribed"],
"settings": ["Personal Settings", "/#settings/profile"],
"organization-settings": ["Organization settings", "/#organization/organization-profile"],
"integrations": ["Integrations", "/integrations"],
"integrations": ["Integrations", "/integrations/"],
"stats": ["Usage statistics", "/stats"],
"plans": ["Plans and pricing", "/plans"],
"billing": ["Billing", "/billing"],