Changeset View
Changeset View
Standalone View
Standalone View
assets/src/bundles/add_forge/request-dashboard.js
/** | /** | ||||
* Copyright (C) 2022 The Software Heritage developers | * Copyright (C) 2022 The Software Heritage developers | ||||
* See the AUTHORS file at the top-level directory of this distribution | * See the AUTHORS file at the top-level directory of this distribution | ||||
* License: GNU Affero General Public License version 3, or any later version | * License: GNU Affero General Public License version 3, or any later version | ||||
* See top-level LICENSE file for more information | * See top-level LICENSE file for more information | ||||
*/ | */ | ||||
import {handleFetchError, csrfPost, getHumanReadableDate} from 'utils/functions'; | import { handleFetchError, csrfPost, getHumanReadableDate } from 'utils/functions'; | ||||
import emailTempate from './forge-admin-email.ejs'; | import emailTempate from './forge-admin-email.ejs'; | ||||
import requestHistoryItem from './add-request-history-item.ejs'; | import requestHistoryItem from './add-request-history-item.ejs'; | ||||
let forgeRequest; | let forgeRequest; | ||||
export function onRequestDashboardLoad(requestId) { | export function onRequestDashboardLoad(requestId) { | ||||
$(document).ready(() => { | $(document).ready(() => { | ||||
populateRequestDetails(requestId); | populateRequestDetails(requestId); | ||||
$('#contactForgeAdmin').click((event) => { | $('#contactForgeAdmin').click((event) => { | ||||
contactForgeAdmin(event); | contactForgeAdmin(event); | ||||
}); | }); | ||||
$('#updateRequestForm').submit(async function(event) { | $('#updateRequestForm').submit(async function (event) { | ||||
event.preventDefault(); | event.preventDefault(); | ||||
try { | try { | ||||
const response = await csrfPost($(this).attr('action'), | const response = await csrfPost($(this).attr('action'), | ||||
{'Content-Type': 'application/x-www-form-urlencoded'}, | { 'Content-Type': 'application/x-www-form-urlencoded' }, | ||||
$(this).serialize()); | $(this).serialize()); | ||||
handleFetchError(response); | handleFetchError(response); | ||||
$('#userMessage').text('The request status has been updated '); | $('#userMessage').text('The request status has been updated '); | ||||
$('#userMessage').removeClass('badge-danger'); | $('#userMessage').removeClass('badge-danger'); | ||||
$('#userMessage').addClass('badge-success'); | $('#userMessage').addClass('badge-success'); | ||||
populateRequestDetails(requestId); | populateRequestDetails(requestId); | ||||
} catch (response) { | } catch (response) { | ||||
$('#userMessage').text('Sorry; Updating the request failed'); | $('#userMessage').text('Sorry; Updating the request failed'); | ||||
$('#userMessage').removeClass('badge-success'); | $('#userMessage').removeClass('badge-success'); | ||||
Show All 17 Lines | try { | ||||
$('#requestContactConsent').text(forgeRequest.submitter_forward_username); | $('#requestContactConsent').text(forgeRequest.submitter_forward_username); | ||||
$('#requestContactEmail').text(forgeRequest.forge_contact_email); | $('#requestContactEmail').text(forgeRequest.forge_contact_email); | ||||
$('#submitterMessage').text(forgeRequest.forge_contact_comment); | $('#submitterMessage').text(forgeRequest.forge_contact_comment); | ||||
$('#updateComment').val(''); | $('#updateComment').val(''); | ||||
// Setting data for the email, now adding static data | // Setting data for the email, now adding static data | ||||
$('#contactForgeAdmin').attr('emailTo', forgeRequest.forge_contact_email); | $('#contactForgeAdmin').attr('emailTo', forgeRequest.forge_contact_email); | ||||
$('#contactForgeAdmin').attr('emailCc', forgeRequest.inbound_email_address); | $('#contactForgeAdmin').attr('emailCc', forgeRequest.inbound_email_address); | ||||
$('#contactForgeAdmin').attr('emailSubject', `Software Heritage archival request for ${forgeRequest.forge_domain}`); | $('#contactForgeAdmin').attr('emailSubject', `Software Heritage archival notification for ${forgeRequest.forge_domain}`); | ||||
populateRequestHistory(data.history); | populateRequestHistory(data.history); | ||||
populateDecisionSelectOption(forgeRequest.status); | populateDecisionSelectOption(forgeRequest.status); | ||||
} catch (e) { | } catch (e) { | ||||
if (e instanceof Response) { | if (e instanceof Response) { | ||||
// The fetch request failed (in handleFetchError), show the error message | // The fetch request failed (in handleFetchError), show the error message | ||||
$('#fetchError').removeClass('d-none'); | $('#fetchError').removeClass('d-none'); | ||||
$('#requestDetails').addClass('d-none'); | $('#requestDetails').addClass('d-none'); | ||||
} else { | } else { | ||||
▲ Show 20 Lines • Show All 56 Lines • ▼ Show 20 Lines | export function populateDecisionSelectOption(currentStatus) { | ||||
); | ); | ||||
} | } | ||||
function contactForgeAdmin(event) { | function contactForgeAdmin(event) { | ||||
// Open the mailclient with pre-filled text | // Open the mailclient with pre-filled text | ||||
const mailTo = encodeURIComponent($('#contactForgeAdmin').attr('emailTo')); | const mailTo = encodeURIComponent($('#contactForgeAdmin').attr('emailTo')); | ||||
const mailCc = encodeURIComponent($('#contactForgeAdmin').attr('emailCc')); | const mailCc = encodeURIComponent($('#contactForgeAdmin').attr('emailCc')); | ||||
const subject = encodeURIComponent($('#contactForgeAdmin').attr('emailSubject')); | const subject = encodeURIComponent($('#contactForgeAdmin').attr('emailSubject')); | ||||
const emailText = encodeURIComponent(emailTempate({'forgeUrl': forgeRequest.forge_url}).trim().replace(/\n/g, '\r\n')); | const emailText = encodeURIComponent(emailTempate({ 'forgeUrl': forgeRequest.forge_url }).trim().replace(/\n/g, '\r\n')); | ||||
const w = window.open('', '_blank', '', true); | const w = window.open('', '_blank', '', true); | ||||
w.location.href = `mailto:${mailTo}?Cc=${mailCc}&Reply-To=${mailCc}&Subject=${subject}&body=${emailText}`; | w.location.href = `mailto:${mailTo}?Cc=${mailCc}&Reply-To=${mailCc}&Subject=${subject}&body=${emailText}`; | ||||
w.focus(); | w.focus(); | ||||
} | } |