Files
upstream-zulip/templates/zerver/integrations/catalog.html
upstream-mirror 64898b2c79
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
snapshot of https://github.com/zulip/zulip.git @ 48c69911c7dd4e03b20552eb3bd77ad8151c1357 (2026-09-15)
2026-09-15 15:05:30 +05:00

121 lines
5.8 KiB
HTML

{% extends "zerver/portico.html" %}
{% set entrypoint = "integrations" %}
{% block customhead %}
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{% endblock %}
{% block hello_page_container %} hello-main{% endblock %}
{% block portico_content %}
{% include 'zerver/marketing_nav.html' %}
{% import 'zerver/integrations/macros.html' as integration_macros %}
<div class="portico-landing integrations">
<div class="main">
<div class="padded-content">
<div class="inner-content">
<div class="integration-main-text">
<header>
<h1 class="portico-page-heading">
Over {{ integrations_count_display }} native integrations.
</h1>
</header>
<p class="portico-page-subheading">
And hundreds more through
<a href="/integrations/zapier">Zapier</a>
and
<a href="/integrations/ifttt">IFTTT</a>.
</p>
</div>
<div id="integration-search">
<div class="searchbar">
<div class="searchbar-reset">
<i class="zulip-icon zulip-icon-search" aria-hidden="true"></i>
<input type="text" class="search_input" placeholder="Search integrations"/>
</div>
</div>
</div>
{% set dropdown_label = 'Filter by category' %}
{% if selected_category_slug != 'all' %}
{% set dropdown_label = categories_dict.get(selected_category_slug, dropdown_label) %}
{% endif %}
<div class="integration-categories-dropdown">
<div class="integration-toggle-categories-dropdown">
<h3 class="dropdown-category-label">{{ dropdown_label }}</h3>
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
<div class="dropdown-list">
<a href="/integrations/" class="integration-category {% if selected_category_slug == 'all' %}selected{% endif %}" data-category="all">
All
</a>
{% for category in categories_dict.keys() %}
<a href="/integrations/category/{{ category }}" class="integration-category {% if selected_category_slug == category %}selected{% endif %}" data-category="{{ category }}">
{{ categories_dict[category] }}
</a>
{% endfor %}
<h3 class="heading">Custom integrations</h3>
<a href="https://zulip.readthedocs.io/en/latest/webhooks/incoming-webhooks-overview.html">
Incoming webhooks
</a>
<a href="/help/writing-bots">
Interactive bots
</a>
<a href="/api/rest">
REST API
</a>
</div>
</div>
<div class="catalog">
<div class="integration-categories-sidebar">
<h3>Categories</h3>
<a href="/integrations/" data-category="all" class="integration-category {% if selected_category_slug == 'all' %}selected{% endif %}">
All
</a>
{% for category in categories_dict.keys() %}
<a href="/integrations/category/{{ category }}" data-category="{{ category }}" class="integration-category {% if selected_category_slug == category %}selected{% endif %}">
{{ categories_dict[category] }}
</a>
{% endfor %}
<h3>Custom integrations</h3>
<a href="https://zulip.readthedocs.io/en/latest/webhooks/incoming-webhooks-overview.html">
Incoming webhooks
</a>
<a href="/help/writing-bots">
Interactive bots
</a>
<a href="/api/rest">
REST API
</a>
</div>
<div class="integration-lozenges">
{% for integration in visible_integrations %}
<a href="/integrations/{{ integration.name }}{% if selected_category_slug != 'all' %}?category={{ selected_category_slug }}{% endif %}">
{{ integration_macros.render_integration_lozenge(integration) }}
</a>
{% endfor %}
<div class="integration-request center">
<p>Don't see an integration you need? We'd love to help.</p>
<div class="hero-buttons center">
<a href="/api/integrations-overview" class="button">
Create your own
</a>
<a href="/help/request-an-integration" class="button">
Request an integration
</a>
</div>
</div>
</div>
</div>
</div> <!-- .inner-content -->
</div> <!-- .padded-content -->
</div> <!-- .main -->
</div> <!-- .portico-landing -->
{% endblock %}