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), * Adding an incoming webhook integration (detailed on this page),
where all the logic for formatting the Zulip messages lives in the where all the logic for formatting the Zulip messages lives in the
Zulip server. This is how most of [Zulip's official 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" support third-party services that just have an "outgoing webhook"
feature (without the third party needing to do any work specific to feature (without the third party needing to do any work specific to
Zulip). 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: guide should help you find the API you need:
* First, check if the tool you'd like to integrate with Zulip * 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 * Next, check if [Zapier](https://zapier.com/apps) or
[IFTTT](https://ifttt.com/search) has an integration. [IFTTT](https://ifttt.com/search) has an integration.
[Zulip's Zapier integration](/integrations/doc/zapier) and [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 Most existing integrations send content from a third-party product into
Zulip. 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 third-party product. Each integration has a page describing how to set it
up. up.

View File

@ -107,7 +107,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 set up 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

View File

@ -5,7 +5,7 @@
The main Zulip codebase is at <https://github.com/zulip/zulip>. It The main Zulip codebase is at <https://github.com/zulip/zulip>. It
contains the Zulip backend (written in Python 3.x and Django), the contains the Zulip backend (written in Python 3.x and Django), the
web app (written in JavaScript and TypeScript) and our library of 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 with other services and applications (see [the directory structure
guide](directory-structure.md)). 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 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 almost a thousand more through Zapier and IFTTT. If you're looking to add an
integration with an existing product, see our 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). [Zapier](https://zapier.com/apps) and [IFTTT](https://ifttt.com/search).
## Anatomy of a bot ## 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 * Users will be logged out of existing sessions on the web, mobile and
desktop apps and need to log in again. 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. to be updated to point to the new organization URL.
We recommend using a [wildcard 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 4. Share the URL for your new Zulip organization, and (recommended) the [Getting
started with Zulip guide](/help/getting-started-with-zulip). started with Zulip guide](/help/getting-started-with-zulip).
5. Migrate any [integrations](/integrations). 5. Migrate any [integrations](/integrations/).
{end_tabs} {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 3. Share the URL for your new Zulip organization, and (recommended) the [Getting
started with Zulip guide](/help/getting-started-with-zulip). started with Zulip guide](/help/getting-started-with-zulip).
4. Migrate any [integrations](/integrations). 4. Migrate any [integrations](/integrations/).
{end_tabs} {end_tabs}

View File

@ -6,7 +6,7 @@ more through [Zapier](/integrations/doc/zapier) and
[Sentry](/integrations/doc/sentry) and [Sentry](/integrations/doc/sentry) and
[Twitter](/integrations/doc/twitter). [Twitter](/integrations/doc/twitter).
* The [integrations page](/integrations) has instructions for * The [integrations page](/integrations/) has instructions for
integrating with each product. integrating with each product.
* If you don't see an integration you need, you can [request it](/help/request-an-integration). * 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. * 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. * Resolving a topic works by moving the messages to a new topic.
* Like with all topic editing, Zulip clients update instantly, so * Like with all topic editing, Zulip clients update instantly, so
human users will likely only send messages to the resolved topic. 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 original topic (`example topic`) after a topic is resolved. This is
useful for alerting integrations, where a repeating alert might have a useful for alerting integrations, where a repeating alert might have a
different cause. You can mark the topic resolved (as normal) once 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 [IFTTT](/integrations/doc/ifttt). Popular Zulip integrations include
[GitHub](/integrations/doc/github) and [GitHub](/integrations/doc/github) and
[Twitter](/integrations/doc/twitter). The [integrations [Twitter](/integrations/doc/twitter). The [integrations
page](/integrations) has instructions for integrating with each page](/integrations/) has instructions for integrating with each
product. product.
## Cleaning up at the end of a class ## 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 # The Zulip API bindings, from its own repository. We integrate with
# these tightly, including fetching content not included in the official # these tightly, including fetching content not included in the official
# PyPI release tarballs, such as logos, assets and documentation files # 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 # the version from Git rather than a PyPI release. Keeping everything in
# one repository simplifies the process of implementing and documenting # one repository simplifies the process of implementing and documenting
# new bots for new contributors. # new bots for new contributors.

View File

@ -109,7 +109,7 @@
<section> <section>
<h2>Apps, integrations, and API.</h2> <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> <h3>INTEGRATIONS</h3>
<p> <p>
Get alerts and updates from your favorite services with Get alerts and updates from your favorite services with

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -124,7 +124,7 @@
</a> </a>
</li> </li>
<li role="presentation" class="hidden-for-spectators"> <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' }} <i class="fa fa-github" aria-hidden="true"></i> {{t 'Integrations' }}
</a> </a>
</li> </li>

View File

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

View File

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

View File

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