mirror of https://github.com/zulip/zulip.git
templates: Move all core app templates into a subdirectory.
This should make it easier to find the templates that are actually part of the core webapp, instead of having them all mixed together with the portico pages.
This commit is contained in:
parent
8fc04a074d
commit
1703e23980
|
@ -46,7 +46,7 @@ See [our docs](../subsystems/html-templates.html) for details on Zulip's
|
||||||
templating systems.
|
templating systems.
|
||||||
|
|
||||||
* `templates/zerver/` For [Jinja2](http://jinja.pocoo.org/) templates
|
* `templates/zerver/` For [Jinja2](http://jinja.pocoo.org/) templates
|
||||||
for the backend (for zerver app).
|
for the backend (for zerver app; logged-in content is in `templates/zerver/app`).
|
||||||
|
|
||||||
* `static/templates/` [Handlebars](http://handlebarsjs.com/) templates for the frontend.
|
* `static/templates/` [Handlebars](http://handlebarsjs.com/) templates for the frontend.
|
||||||
|
|
||||||
|
|
|
@ -32,8 +32,8 @@ renders the template. For example, if you want to find the context
|
||||||
passed to `index.html`, you can do:
|
passed to `index.html`, you can do:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ git grep zerver/index.html '*.py'
|
$ git grep zerver/app/index.html '*.py'
|
||||||
zerver/views/home.py: response = render(request, 'zerver/index.html',
|
zerver/views/home.py: response = render(request, 'zerver/app/index.html',
|
||||||
```
|
```
|
||||||
|
|
||||||
The next line in the code being the context definition.
|
The next line in the code being the context definition.
|
||||||
|
|
|
@ -100,7 +100,7 @@ places:
|
||||||
your changes won't be supported in the frontend processor.
|
your changes won't be supported in the frontend processor.
|
||||||
* If desired, the typeahead logic in `static/js/composebox_typeahead.js`.
|
* If desired, the typeahead logic in `static/js/composebox_typeahead.js`.
|
||||||
* The test suite, probably via adding entries to `zerver/tests/fixtures/markdown_test_cases.json`.
|
* The test suite, probably via adding entries to `zerver/tests/fixtures/markdown_test_cases.json`.
|
||||||
* The in-app markdown documentation (`templates/zerver/markdown_help.html`).
|
* The in-app markdown documentation (`templates/zerver/app/markdown_help.html`).
|
||||||
* The list of changes to markdown at the end of this document.
|
* The list of changes to markdown at the end of this document.
|
||||||
|
|
||||||
Important considerations for any changes are:
|
Important considerations for any changes are:
|
||||||
|
|
|
@ -121,7 +121,7 @@ feature requires UI changes, you may need to add additional CSS to this
|
||||||
file.
|
file.
|
||||||
|
|
||||||
**Templates:** The initial page structure is rendered via Jinja2
|
**Templates:** The initial page structure is rendered via Jinja2
|
||||||
templates located in `templates/zerver`. For JavaScript, Zulip uses
|
templates located in `templates/zerver/app`. For JavaScript, Zulip uses
|
||||||
Handlebars templates located in `static/templates`. Templates are
|
Handlebars templates located in `static/templates`. Templates are
|
||||||
precompiled as part of the build/deploy process.
|
precompiled as part of the build/deploy process.
|
||||||
|
|
||||||
|
|
|
@ -101,7 +101,7 @@ def home(request):
|
||||||
### Writing a template
|
### Writing a template
|
||||||
|
|
||||||
Templates for the main website are found in
|
Templates for the main website are found in
|
||||||
[templates/zerver](https://github.com/zulip/zulip/blob/master/templates/zerver).
|
[templates/zerver/app](https://github.com/zulip/zulip/blob/master/templates/zerver/app).
|
||||||
|
|
||||||
|
|
||||||
## Writing API REST endpoints
|
## Writing API REST endpoints
|
||||||
|
|
|
@ -131,8 +131,8 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
{% include "zerver/message_history.html" %}
|
{% include "zerver/app/message_history.html" %}
|
||||||
{% include "zerver/delete_message.html" %}
|
{% include "zerver/app/delete_message.html" %}
|
||||||
{% include "zerver/compose.html" %}
|
{% include "zerver/app/compose.html" %}
|
||||||
<div id="notifications-area">
|
<div id="notifications-area">
|
||||||
</div>
|
</div>
|
|
@ -41,7 +41,7 @@
|
||||||
|
|
||||||
{{ render_bundle('katex') }}
|
{{ render_bundle('katex') }}
|
||||||
|
|
||||||
{% include "zerver/topic_is_muted.html" %}
|
{% include "zerver/app/topic_is_muted.html" %}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
@ -59,14 +59,14 @@
|
||||||
</script>
|
</script>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% include "zerver/lightbox_overlay.html" %}
|
{% include "zerver/app/lightbox_overlay.html" %}
|
||||||
{% include "zerver/subscriptions.html" %}
|
{% include "zerver/app/subscriptions.html" %}
|
||||||
{% include "zerver/drafts.html" %}
|
{% include "zerver/app/drafts.html" %}
|
||||||
<div id="settings_overlay_container" class="overlay" data-overlay="settings" aria-hidden="true">
|
<div id="settings_overlay_container" class="overlay" data-overlay="settings" aria-hidden="true">
|
||||||
{% include "zerver/settings_overlay.html" %}
|
{% include "zerver/app/settings_overlay.html" %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% include "zerver/navbar.html" %}
|
{% include "zerver/app/navbar.html" %}
|
||||||
|
|
||||||
<div class="fixed-app">
|
<div class="fixed-app">
|
||||||
<div class="app-main">
|
<div class="app-main">
|
||||||
|
@ -105,7 +105,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="app-main">
|
<div class="app-main">
|
||||||
<div class="column-left">
|
<div class="column-left">
|
||||||
{% include "zerver/left_sidebar.html" %}
|
{% include "zerver/app/left_sidebar.html" %}
|
||||||
</div>
|
</div>
|
||||||
<div class="column-middle">
|
<div class="column-middle">
|
||||||
<div class="column-middle-inner tab-content">
|
<div class="column-middle-inner tab-content">
|
||||||
|
@ -132,18 +132,18 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% include "zerver/home.html" %}
|
{% include "zerver/app/home.html" %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if show_debug %}
|
{% if show_debug %}
|
||||||
<div class="tab-pane" id="debug">
|
<div class="tab-pane" id="debug">
|
||||||
{% include "zerver/debug.html" %}
|
{% include "zerver/app/debug.html" %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div><!--/tab-content-->
|
</div><!--/tab-content-->
|
||||||
</div>
|
</div>
|
||||||
<div class="column-right">
|
<div class="column-right">
|
||||||
{% include "zerver/right_sidebar.html" %}
|
{% include "zerver/app/right_sidebar.html" %}
|
||||||
</div><!--/right sidebar-->
|
</div><!--/right sidebar-->
|
||||||
</div><!--/row-->
|
</div><!--/row-->
|
||||||
<div class="informational-overlays overlay new-style" data-overlay="informationalOverlays" aria-hidden="true">
|
<div class="informational-overlays overlay new-style" data-overlay="informationalOverlays" aria-hidden="true">
|
||||||
|
@ -152,16 +152,16 @@
|
||||||
<button class="button no-style exit">×</button>
|
<button class="button no-style exit">×</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="overlay-body">
|
<div class="overlay-body">
|
||||||
{% include "zerver/keyboard_shortcuts.html" %}
|
{% include "zerver/app/keyboard_shortcuts.html" %}
|
||||||
{% include "zerver/search_operators.html" %}
|
{% include "zerver/app/search_operators.html" %}
|
||||||
{% include "zerver/markdown_help.html" %}
|
{% include "zerver/app/markdown_help.html" %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% include "zerver/invite_user.html" %}
|
{% include "zerver/app/invite_user.html" %}
|
||||||
{% include "zerver/bankruptcy.html" %}
|
{% include "zerver/app/bankruptcy.html" %}
|
||||||
{% include "zerver/logout.html" %}
|
{% include "zerver/app/logout.html" %}
|
||||||
{% include "zerver/deprecation_notice.html" %}
|
{% include "zerver/app/deprecation_notice.html" %}
|
||||||
<div class='notifications top-right'></div>
|
<div class='notifications top-right'></div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -136,6 +136,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% include "zerver/settings_sidebar.html" %}
|
{% include "zerver/app/settings_sidebar.html" %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -11,7 +11,7 @@
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
{% include 'zerver/logout.html' %}
|
{% include 'zerver/app/logout.html' %}
|
||||||
<a href="#logout">
|
<a href="#logout">
|
||||||
<span class="logout">
|
<span class="logout">
|
||||||
<i class="icon-vector-off"></i>
|
<i class="icon-vector-off"></i>
|
||||||
|
|
|
@ -100,7 +100,7 @@ def check_html_templates(templates, all_dups):
|
||||||
# prevent cleaning them.
|
# prevent cleaning them.
|
||||||
'templates/corporate/zephyr-mirror.html',
|
'templates/corporate/zephyr-mirror.html',
|
||||||
# Can't clean this because of `preserve_spaces`
|
# Can't clean this because of `preserve_spaces`
|
||||||
'templates/zerver/markdown_help.html',
|
'templates/zerver/app/markdown_help.html',
|
||||||
]
|
]
|
||||||
validate(fn=fn, check_indent=(fn not in bad_files))
|
validate(fn=fn, check_indent=(fn not in bad_files))
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ def check_html_templates(templates, all_dups):
|
||||||
# to convert it to a /help/ markdown article.
|
# to convert it to a /help/ markdown article.
|
||||||
'templates/corporate/zephyr-mirror.html',
|
'templates/corporate/zephyr-mirror.html',
|
||||||
# Can't clean this because of `preserve_spaces`
|
# Can't clean this because of `preserve_spaces`
|
||||||
'templates/zerver/markdown_help.html',
|
'templates/zerver/app/markdown_help.html',
|
||||||
]
|
]
|
||||||
# TODO: Clean these files
|
# TODO: Clean these files
|
||||||
for fn in templates:
|
for fn in templates:
|
||||||
|
|
|
@ -614,7 +614,7 @@ def build_custom_checkers(by_lang):
|
||||||
'bad_lines': ["<p title='foo'></p>"]},
|
'bad_lines': ["<p title='foo'></p>"]},
|
||||||
{'pattern': 'title="[^{\:]',
|
{'pattern': 'title="[^{\:]',
|
||||||
'exclude_line': set([
|
'exclude_line': set([
|
||||||
('templates/zerver/markdown_help.html',
|
('templates/zerver/app/markdown_help.html',
|
||||||
'<td><img alt=":heart:" class="emoji" src="/static/generated/emoji/images/emoji/heart.png" title=":heart:" /></td>')
|
'<td><img alt=":heart:" class="emoji" src="/static/generated/emoji/images/emoji/heart.png" title=":heart:" /></td>')
|
||||||
]),
|
]),
|
||||||
'exclude': set(["templates/zerver/emails"]),
|
'exclude': set(["templates/zerver/emails"]),
|
||||||
|
@ -622,8 +622,8 @@ def build_custom_checkers(by_lang):
|
||||||
{'pattern': '\Walt=["\'][^{"\']',
|
{'pattern': '\Walt=["\'][^{"\']',
|
||||||
'description': "alt argument should be enclosed by _() or it should be an empty string.",
|
'description': "alt argument should be enclosed by _() or it should be an empty string.",
|
||||||
'exclude': set(['static/templates/settings/display-settings.handlebars',
|
'exclude': set(['static/templates/settings/display-settings.handlebars',
|
||||||
'templates/zerver/keyboard_shortcuts.html',
|
'templates/zerver/app/keyboard_shortcuts.html',
|
||||||
'templates/zerver/markdown_help.html']),
|
'templates/zerver/app/markdown_help.html']),
|
||||||
'good_lines': ['<img src="{{source_url}}" alt="{{ _(name) }}" />', '<img alg="" />'],
|
'good_lines': ['<img src="{{source_url}}" alt="{{ _(name) }}" />', '<img alg="" />'],
|
||||||
'bad_lines': ['<img alt="Foo Image" />']},
|
'bad_lines': ['<img alt="Foo Image" />']},
|
||||||
{'pattern': '\Walt=["\']{{ ?["\']',
|
{'pattern': '\Walt=["\']{{ ?["\']',
|
||||||
|
@ -642,7 +642,7 @@ def build_custom_checkers(by_lang):
|
||||||
'exclude_pattern': r'.*style ?=["' + "'" + '](display: ?none|background: {{|color: {{|background-color: {{).*',
|
'exclude_pattern': r'.*style ?=["' + "'" + '](display: ?none|background: {{|color: {{|background-color: {{).*',
|
||||||
'exclude': set([
|
'exclude': set([
|
||||||
# KaTeX output uses style attribute
|
# KaTeX output uses style attribute
|
||||||
'templates/zerver/markdown_help.html',
|
'templates/zerver/app/markdown_help.html',
|
||||||
# 5xx page doesn't have external CSS
|
# 5xx page doesn't have external CSS
|
||||||
'static/html/5xx.html',
|
'static/html/5xx.html',
|
||||||
# Group PMs color is dynamically calculated
|
# Group PMs color is dynamically calculated
|
||||||
|
@ -665,14 +665,14 @@ def build_custom_checkers(by_lang):
|
||||||
'templates/zerver/email_log.html',
|
'templates/zerver/email_log.html',
|
||||||
|
|
||||||
# Probably just needs to be changed to display: none so the exclude works
|
# Probably just needs to be changed to display: none so the exclude works
|
||||||
'templates/zerver/navbar.html',
|
'templates/zerver/app/navbar.html',
|
||||||
|
|
||||||
# Needs the width cleaned up; display: none is fine
|
# Needs the width cleaned up; display: none is fine
|
||||||
'static/templates/settings/account-settings.handlebars',
|
'static/templates/settings/account-settings.handlebars',
|
||||||
|
|
||||||
# Inline styling for an svg; could be moved to CSS files?
|
# Inline styling for an svg; could be moved to CSS files?
|
||||||
'templates/zerver/landing_nav.html',
|
'templates/zerver/landing_nav.html',
|
||||||
'templates/zerver/home.html',
|
'templates/zerver/app/home.html',
|
||||||
'templates/zerver/features.html',
|
'templates/zerver/features.html',
|
||||||
'templates/zerver/portico-header.html',
|
'templates/zerver/portico-header.html',
|
||||||
|
|
||||||
|
|
|
@ -236,7 +236,7 @@ def home_real(request: HttpRequest) -> HttpResponse:
|
||||||
show_invites = False
|
show_invites = False
|
||||||
|
|
||||||
request._log_data['extra'] = "[%s]" % (register_ret["queue_id"],)
|
request._log_data['extra'] = "[%s]" % (register_ret["queue_id"],)
|
||||||
response = render(request, 'zerver/index.html',
|
response = render(request, 'zerver/app/index.html',
|
||||||
context={'user_profile': user_profile,
|
context={'user_profile': user_profile,
|
||||||
'page_params': JSONEncoderForHTML().encode(page_params),
|
'page_params': JSONEncoderForHTML().encode(page_params),
|
||||||
'nofontface': is_buggy_ua(request.META.get("HTTP_USER_AGENT", "Unspecified")),
|
'nofontface': is_buggy_ua(request.META.get("HTTP_USER_AGENT", "Unspecified")),
|
||||||
|
|
Loading…
Reference in New Issue