mirror of https://github.com/zulip/zulip.git
web: Save a needless 301 redirect from /integrations to /integrations/.
This commit is contained in:
parent
5967dda35d
commit
a1570ff3dd
|
@ -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).
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)).
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}
|
||||
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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() %}
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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"],
|
||||
|
|
Loading…
Reference in New Issue