mirror of https://github.com/zulip/zulip.git
settings: Use url_template for internal names.
This replaces any "url_format_string" or "url_format" with "url_template" for the linkifier settings, including HTML ids, template variables, and etc. This is not affected by any external API changes. Signed-off-by: Zixuan James Li <p359101898@gmail.com>
This commit is contained in:
parent
6f42542320
commit
05a3456581
|
@ -26,10 +26,7 @@ async function test_add_linkifier(page: Page): Promise<void> {
|
||||||
"#(?P<id>[0-9]+)",
|
"#(?P<id>[0-9]+)",
|
||||||
);
|
);
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
await common.get_text_from_selector(
|
await common.get_text_from_selector(page, ".linkifier_row span.linkifier_url_template"),
|
||||||
page,
|
|
||||||
".linkifier_row span.linkifier_url_format_string",
|
|
||||||
),
|
|
||||||
"https://trac.example.com/ticket/{id}",
|
"https://trac.example.com/ticket/{id}",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -74,10 +71,7 @@ async function test_edit_linkifier(page: Page): Promise<void> {
|
||||||
() => document.querySelector(".linkifier_pattern")?.textContent === "(?P<num>[0-9a-f]{40})",
|
() => document.querySelector(".linkifier_pattern")?.textContent === "(?P<num>[0-9a-f]{40})",
|
||||||
);
|
);
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
await common.get_text_from_selector(
|
await common.get_text_from_selector(page, ".linkifier_row span.linkifier_url_template"),
|
||||||
page,
|
|
||||||
".linkifier_row span.linkifier_url_format_string",
|
|
||||||
),
|
|
||||||
"https://trac.example.com/commit/{num}",
|
"https://trac.example.com/commit/{num}",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -102,13 +96,13 @@ async function test_edit_invalid_linkifier(page: Page): Promise<void> {
|
||||||
"Failed: Bad regular expression: bad repetition operator: ????",
|
"Failed: Bad regular expression: bad repetition operator: ????",
|
||||||
);
|
);
|
||||||
|
|
||||||
const edit_linkifier_format_status_selector = "div#edit-linkifier-format-status";
|
const edit_linkifier_template_status_selector = "div#edit-linkifier-template-status";
|
||||||
await page.waitForSelector(edit_linkifier_format_status_selector, {visible: true});
|
await page.waitForSelector(edit_linkifier_template_status_selector, {visible: true});
|
||||||
const edit_linkifier_format_status = await common.get_text_from_selector(
|
const edit_linkifier_template_status = await common.get_text_from_selector(
|
||||||
page,
|
page,
|
||||||
edit_linkifier_format_status_selector,
|
edit_linkifier_template_status_selector,
|
||||||
);
|
);
|
||||||
assert.strictEqual(edit_linkifier_format_status, "Failed: Invalid URL template.");
|
assert.strictEqual(edit_linkifier_template_status, "Failed: Invalid URL template.");
|
||||||
|
|
||||||
await page.click(".dialog_cancel_button");
|
await page.click(".dialog_cancel_button");
|
||||||
await page.waitForSelector("#dialog_widget_modal", {hidden: true});
|
await page.waitForSelector("#dialog_widget_modal", {hidden: true});
|
||||||
|
@ -119,10 +113,7 @@ async function test_edit_invalid_linkifier(page: Page): Promise<void> {
|
||||||
"(?P<num>[0-9a-f]{40})",
|
"(?P<num>[0-9a-f]{40})",
|
||||||
);
|
);
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
await common.get_text_from_selector(
|
await common.get_text_from_selector(page, ".linkifier_row span.linkifier_url_template"),
|
||||||
page,
|
|
||||||
".linkifier_row span.linkifier_url_format_string",
|
|
||||||
),
|
|
||||||
"https://trac.example.com/commit/{num}",
|
"https://trac.example.com/commit/{num}",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ function open_linkifier_edit_form(linkifier_id) {
|
||||||
const html_body = render_admin_linkifier_edit_form({
|
const html_body = render_admin_linkifier_edit_form({
|
||||||
linkifier_id,
|
linkifier_id,
|
||||||
pattern: linkifier.pattern,
|
pattern: linkifier.pattern,
|
||||||
url_format_string: linkifier.url_template,
|
url_template: linkifier.url_template,
|
||||||
});
|
});
|
||||||
|
|
||||||
function submit_linkifier_form() {
|
function submit_linkifier_form() {
|
||||||
|
@ -61,10 +61,10 @@ function open_linkifier_edit_form(linkifier_id) {
|
||||||
const $modal = $("#dialog_widget_modal");
|
const $modal = $("#dialog_widget_modal");
|
||||||
const url = "/json/realm/filters/" + encodeURIComponent(linkifier_id);
|
const url = "/json/realm/filters/" + encodeURIComponent(linkifier_id);
|
||||||
const pattern = $modal.find("#edit-linkifier-pattern").val().trim();
|
const pattern = $modal.find("#edit-linkifier-pattern").val().trim();
|
||||||
const url_format_string = $modal.find("#edit-linkifier-url-format-string").val().trim();
|
const url_template = $modal.find("#edit-linkifier-url-template").val().trim();
|
||||||
const data = {pattern, url_format_string};
|
const data = {pattern, url_template};
|
||||||
const $pattern_status = $modal.find("#edit-linkifier-pattern-status").expectOne();
|
const $pattern_status = $modal.find("#edit-linkifier-pattern-status").expectOne();
|
||||||
const $format_status = $modal.find("#edit-linkifier-format-status").expectOne();
|
const $template_status = $modal.find("#edit-linkifier-template-status").expectOne();
|
||||||
const $dialog_error_element = $modal.find("#dialog_error").expectOne();
|
const $dialog_error_element = $modal.find("#dialog_error").expectOne();
|
||||||
const opts = {
|
const opts = {
|
||||||
success_continuation() {
|
success_continuation() {
|
||||||
|
@ -78,7 +78,7 @@ function open_linkifier_edit_form(linkifier_id) {
|
||||||
handle_linkifier_api_error(
|
handle_linkifier_api_error(
|
||||||
xhr,
|
xhr,
|
||||||
$pattern_status,
|
$pattern_status,
|
||||||
$format_status,
|
$template_status,
|
||||||
$dialog_error_element,
|
$dialog_error_element,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
@ -109,7 +109,7 @@ function open_linkifier_edit_form(linkifier_id) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function handle_linkifier_api_error(xhr, pattern_status, format_status, linkifier_status) {
|
function handle_linkifier_api_error(xhr, pattern_status, template_status, linkifier_status) {
|
||||||
// The endpoint uses the Django ValidationError system for error
|
// The endpoint uses the Django ValidationError system for error
|
||||||
// handling, which returns somewhat complicated error
|
// handling, which returns somewhat complicated error
|
||||||
// dictionaries. This logic parses them.
|
// dictionaries. This logic parses them.
|
||||||
|
@ -120,7 +120,7 @@ function handle_linkifier_api_error(xhr, pattern_status, format_status, linkifie
|
||||||
}
|
}
|
||||||
if (errors.url_template !== undefined) {
|
if (errors.url_template !== undefined) {
|
||||||
xhr.responseText = JSON.stringify({msg: errors.url_template});
|
xhr.responseText = JSON.stringify({msg: errors.url_template});
|
||||||
ui_report.error($t_html({defaultMessage: "Failed"}), xhr, format_status);
|
ui_report.error($t_html({defaultMessage: "Failed"}), xhr, template_status);
|
||||||
}
|
}
|
||||||
if (errors.__all__ !== undefined) {
|
if (errors.__all__ !== undefined) {
|
||||||
xhr.responseText = JSON.stringify({msg: errors.__all__});
|
xhr.responseText = JSON.stringify({msg: errors.__all__});
|
||||||
|
@ -140,7 +140,7 @@ export function populate_linkifiers(linkifiers_data) {
|
||||||
return render_admin_linkifier_list({
|
return render_admin_linkifier_list({
|
||||||
linkifier: {
|
linkifier: {
|
||||||
pattern: linkifier.pattern,
|
pattern: linkifier.pattern,
|
||||||
url_format_string: linkifier.url_template,
|
url_template: linkifier.url_template,
|
||||||
id: linkifier.id,
|
id: linkifier.id,
|
||||||
},
|
},
|
||||||
can_modify: page_params.is_admin,
|
can_modify: page_params.is_admin,
|
||||||
|
@ -211,12 +211,12 @@ export function build_page() {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
const $linkifier_status = $("#admin-linkifier-status");
|
const $linkifier_status = $("#admin-linkifier-status");
|
||||||
const $pattern_status = $("#admin-linkifier-pattern-status");
|
const $pattern_status = $("#admin-linkifier-pattern-status");
|
||||||
const $format_status = $("#admin-linkifier-format-status");
|
const $template_status = $("#admin-linkifier-template-status");
|
||||||
const $add_linkifier_button = $(".new-linkifier-form button");
|
const $add_linkifier_button = $(".new-linkifier-form button");
|
||||||
$add_linkifier_button.prop("disabled", true);
|
$add_linkifier_button.prop("disabled", true);
|
||||||
$linkifier_status.hide();
|
$linkifier_status.hide();
|
||||||
$pattern_status.hide();
|
$pattern_status.hide();
|
||||||
$format_status.hide();
|
$template_status.hide();
|
||||||
const linkifier = {};
|
const linkifier = {};
|
||||||
|
|
||||||
for (const obj of $(this).serializeArray()) {
|
for (const obj of $(this).serializeArray()) {
|
||||||
|
@ -228,7 +228,7 @@ export function build_page() {
|
||||||
data: $(this).serialize(),
|
data: $(this).serialize(),
|
||||||
success(data) {
|
success(data) {
|
||||||
$("#linkifier_pattern").val("");
|
$("#linkifier_pattern").val("");
|
||||||
$("#linkifier_format_string").val("");
|
$("#linkifier_template").val("");
|
||||||
$add_linkifier_button.prop("disabled", false);
|
$add_linkifier_button.prop("disabled", false);
|
||||||
linkifier.id = data.id;
|
linkifier.id = data.id;
|
||||||
ui_report.success(
|
ui_report.success(
|
||||||
|
@ -241,7 +241,7 @@ export function build_page() {
|
||||||
handle_linkifier_api_error(
|
handle_linkifier_api_error(
|
||||||
xhr,
|
xhr,
|
||||||
$pattern_status,
|
$pattern_status,
|
||||||
$format_status,
|
$template_status,
|
||||||
$linkifier_status,
|
$linkifier_status,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
|
@ -246,7 +246,7 @@ h3,
|
||||||
|
|
||||||
#linkifier-settings {
|
#linkifier-settings {
|
||||||
#linkifier_pattern,
|
#linkifier_pattern,
|
||||||
#linkifier_format_string {
|
#linkifier_template {
|
||||||
width: calc(100% - 10em - 6em);
|
width: calc(100% - 10em - 6em);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -726,7 +726,7 @@ input[type="checkbox"] {
|
||||||
}
|
}
|
||||||
|
|
||||||
#admin-linkifier-pattern-status,
|
#admin-linkifier-pattern-status,
|
||||||
#admin-linkifier-format-status {
|
#admin-linkifier-template-status {
|
||||||
margin: 20px 0 0;
|
margin: 20px 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1899,7 +1899,7 @@ $option_title_width: 180px;
|
||||||
|
|
||||||
#edit-linkifier-form {
|
#edit-linkifier-form {
|
||||||
#edit-linkifier-pattern,
|
#edit-linkifier-pattern,
|
||||||
#edit-linkifier-url-format-string {
|
#edit-linkifier-url-template {
|
||||||
width: 400px;
|
width: 400px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1908,7 +1908,7 @@ $option_title_width: 180px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#edit-linkifier-pattern-status,
|
#edit-linkifier-pattern-status,
|
||||||
#edit-linkifier-format-status {
|
#edit-linkifier-template-status {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,9 @@
|
||||||
<div class="alert" id="edit-linkifier-pattern-status"></div>
|
<div class="alert" id="edit-linkifier-pattern-status"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group name_change_container">
|
<div class="input-group name_change_container">
|
||||||
<label for="edit-linkifier-url-format-string" >{{t "URL template" }}</label>
|
<label for="edit-linkifier-url-template" >{{t "URL template" }}</label>
|
||||||
<input type="text" autocomplete="off" id="edit-linkifier-url-format-string" name="url_template" placeholder="https://github.com/zulip/zulip/issues/{id}" value="{{ url_format_string }}" />
|
<input type="text" autocomplete="off" id="edit-linkifier-url-template" name="url_template" placeholder="https://github.com/zulip/zulip/issues/{id}" value="{{ url_template }}" />
|
||||||
<div class="alert" id="edit-linkifier-format-status"></div>
|
<div class="alert" id="edit-linkifier-template-status"></div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<span class="linkifier_pattern">{{pattern}}</span>
|
<span class="linkifier_pattern">{{pattern}}</span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span class="linkifier_url_format_string">{{url_format_string}}</span>
|
<span class="linkifier_url_template">{{url_template}}</span>
|
||||||
</td>
|
</td>
|
||||||
{{#if ../can_modify}}
|
{{#if ../can_modify}}
|
||||||
<td class="no-select actions">
|
<td class="no-select actions">
|
||||||
|
|
|
@ -44,9 +44,9 @@
|
||||||
<div class="alert" id="admin-linkifier-pattern-status"></div>
|
<div class="alert" id="admin-linkifier-pattern-status"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="linkifier_format_string">{{t "URL template" }}</label>
|
<label for="linkifier_template">{{t "URL template" }}</label>
|
||||||
<input type="text" id="linkifier_format_string" name="url_template" placeholder="https://github.com/zulip/zulip/issues/{id}" />
|
<input type="text" id="linkifier_template" name="url_template" placeholder="https://github.com/zulip/zulip/issues/{id}" />
|
||||||
<div class="alert" id="admin-linkifier-format-status"></div>
|
<div class="alert" id="admin-linkifier-template-status"></div>
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="button rounded sea-green">
|
<button type="submit" class="button rounded sea-green">
|
||||||
{{t 'Add linkifier' }}
|
{{t 'Add linkifier' }}
|
||||||
|
|
Loading…
Reference in New Issue