1245 eslint linting (#1486)

* Adds `yarn lint` to `make lint`
* Closes #1245
This commit is contained in:
Kevin Chung
2020-06-12 03:11:45 -04:00
committed by GitHub
parent a30437c1fa
commit c3897f9527
61 changed files with 308 additions and 344 deletions

View File

@@ -13,5 +13,6 @@ module.exports = {
"sourceType": "module" "sourceType": "module"
}, },
"rules": { "rules": {
"no-unused-vars": ["error", { "argsIgnorePattern": "^_" }]
} }
}; };

View File

@@ -1,5 +1,6 @@
import $ from "jquery"; import $ from "jquery";
import { ezToast } from "core/ezq"; import { ezToast, ezQuery } from "core/ezq";
import { htmlEntities } from "core/utils";
import CTFd from "core/CTFd"; import CTFd from "core/CTFd";
import nunjucks from "nunjucks"; import nunjucks from "nunjucks";
@@ -90,11 +91,11 @@ function renderSubmissionResponse(response, cb) {
} }
$(() => { $(() => {
$(".preview-challenge").click(function(event) { $(".preview-challenge").click(function(_event) {
window.challenge = new Object(); window.challenge = new Object();
$.get(CTFd.config.urlRoot + "/api/v1/challenges/" + CHALLENGE_ID, function( $.get(
response CTFd.config.urlRoot + "/api/v1/challenges/" + window.CHALLENGE_ID,
) { function(response) {
const challenge_data = response.data; const challenge_data = response.data;
challenge_data["solves"] = null; challenge_data["solves"] = null;
@@ -116,16 +117,13 @@ $(() => {
$("#challenge-window").append(template.render(challenge_data)); $("#challenge-window").append(template.render(challenge_data));
$(".challenge-solves").click(function(event) {
getsolves($("#challenge-id").val());
});
$(".nav-tabs a").click(function(event) { $(".nav-tabs a").click(function(event) {
event.preventDefault(); event.preventDefault();
$(this).tab("show"); $(this).tab("show");
}); });
// Handle modal toggling // Handle modal toggling
$("#challenge-window").on("hide.bs.modal", function(event) { $("#challenge-window").on("hide.bs.modal", function(_event) {
$("#submission-input").removeClass("wrong"); $("#submission-input").removeClass("wrong");
$("#submission-input").removeClass("correct"); $("#submission-input").removeClass("correct");
$("#incorrect-key").slideUp(); $("#incorrect-key").slideUp();
@@ -150,24 +148,6 @@ $(() => {
} }
}); });
$(".input-field").bind({
focus: function() {
$(this)
.parent()
.addClass("input--filled");
$label = $(this).siblings(".input-label");
},
blur: function() {
if ($(this).val() === "") {
$(this)
.parent()
.removeClass("input--filled");
$label = $(this).siblings(".input-label");
$label.removeClass("input--hide");
}
}
});
window.challenge.postRender(); window.challenge.postRender();
window.location.replace( window.location.replace(
window.location.href.split("#")[0] + "#preview" window.location.href.split("#")[0] + "#preview"
@@ -178,17 +158,18 @@ $(() => {
); );
} }
); );
}); }
);
}); });
$(".delete-challenge").click(function(event) { $(".delete-challenge").click(function(_event) {
ezQuery({ ezQuery({
title: "Delete Challenge", title: "Delete Challenge",
body: "Are you sure you want to delete {0}".format( body: "Are you sure you want to delete {0}".format(
"<strong>" + htmlentities(CHALLENGE_NAME) + "</strong>" "<strong>" + htmlEntities(window.CHALLENGE_NAME) + "</strong>"
), ),
success: function() { success: function() {
CTFd.fetch("/api/v1/challenges/" + CHALLENGE_ID, { CTFd.fetch("/api/v1/challenges/" + window.CHALLENGE_ID, {
method: "DELETE" method: "DELETE"
}).then(function(response) { }).then(function(response) {
if (response.success) { if (response.success) {
@@ -203,7 +184,7 @@ $(() => {
event.preventDefault(); event.preventDefault();
const params = $(event.target).serializeJSON(true); const params = $(event.target).serializeJSON(true);
CTFd.fetch("/api/v1/challenges/" + CHALLENGE_ID, { CTFd.fetch("/api/v1/challenges/" + window.CHALLENGE_ID, {
method: "PATCH", method: "PATCH",
credentials: "same-origin", credentials: "same-origin",
headers: { headers: {

View File

@@ -7,17 +7,17 @@ export function addFile(event) {
event.preventDefault(); event.preventDefault();
let form = event.target; let form = event.target;
let data = { let data = {
challenge: CHALLENGE_ID, challenge: window.CHALLENGE_ID,
type: "challenge" type: "challenge"
}; };
helpers.files.upload(form, data, function(response) { helpers.files.upload(form, data, function(_response) {
setTimeout(function() { setTimeout(function() {
window.location.reload(); window.location.reload();
}, 700); }, 700);
}); });
} }
export function deleteFile(event) { export function deleteFile(_event) {
const file_id = $(this).attr("file-id"); const file_id = $(this).attr("file-id");
const row = $(this) const row = $(this)
.parent() .parent()

View File

@@ -29,7 +29,7 @@ export function deleteFlag(event) {
}); });
} }
export function addFlagModal(event) { export function addFlagModal(_event) {
$.get(CTFd.config.urlRoot + "/api/v1/flags/types", function(response) { $.get(CTFd.config.urlRoot + "/api/v1/flags/types", function(response) {
const data = response.data; const data = response.data;
const flag_type_select = $("#flags-create-select"); const flag_type_select = $("#flags-create-select");
@@ -52,7 +52,7 @@ export function addFlagModal(event) {
$("#flag-edit-modal form").submit(function(event) { $("#flag-edit-modal form").submit(function(event) {
event.preventDefault(); event.preventDefault();
const params = $(this).serializeJSON(true); const params = $(this).serializeJSON(true);
params["challenge"] = CHALLENGE_ID; params["challenge"] = window.CHALLENGE_ID;
CTFd.fetch("/api/v1/flags", { CTFd.fetch("/api/v1/flags", {
method: "POST", method: "POST",
credentials: "same-origin", credentials: "same-origin",
@@ -65,7 +65,7 @@ export function addFlagModal(event) {
.then(function(response) { .then(function(response) {
return response.json(); return response.json();
}) })
.then(function(response) { .then(function(_response) {
window.location.reload(); window.location.reload();
}); });
}); });

View File

@@ -1,37 +1,6 @@
import $ from "jquery"; import $ from "jquery";
import CTFd from "core/CTFd"; import CTFd from "core/CTFd";
import { ezQuery, ezAlert } from "core/ezq"; import { ezQuery } from "core/ezq";
function hint(id) {
return CTFd.fetch("/api/v1/hints/" + id + "?preview=true", {
method: "GET",
credentials: "same-origin",
headers: {
Accept: "application/json",
"Content-Type": "application/json"
}
});
}
function loadhint(hintid) {
const md = CTFd.lib.markdown();
hint(hintid).then(function(response) {
if (response.data.content) {
ezAlert({
title: "Hint",
body: md.render(response.data.content),
button: "Got it!"
});
} else {
ezAlert({
title: "Error",
body: "Error loading hint!",
button: "OK"
});
}
});
}
export function showHintModal(event) { export function showHintModal(event) {
event.preventDefault(); event.preventDefault();
@@ -116,7 +85,7 @@ export function deleteHint(event) {
export function editHint(event) { export function editHint(event) {
event.preventDefault(); event.preventDefault();
const params = $(this).serializeJSON(true); const params = $(this).serializeJSON(true);
params["challenge"] = CHALLENGE_ID; params["challenge"] = window.CHALLENGE_ID;
let method = "POST"; let method = "POST";
let url = "/api/v1/hints"; let url = "/api/v1/hints";

View File

@@ -1,4 +1,5 @@
import CTFd from "core/CTFd"; import CTFd from "core/CTFd";
import nunjucks from "nunjucks";
import $ from "jquery"; import $ from "jquery";
window.challenge = new Object(); window.challenge = new Object();
@@ -63,7 +64,7 @@ $.get(CTFd.config.urlRoot + "/api/v1/challenges/types", function(response) {
} }
}); });
function createChallenge(event) { function createChallenge(_event) {
const challenge = $(this) const challenge = $(this)
.find("option:selected") .find("option:selected")
.data("meta"); .data("meta");

View File

@@ -10,15 +10,15 @@ export function addRequirement(event) {
return; return;
} }
CHALLENGE_REQUIREMENTS.prerequisites.push( window.CHALLENGE_REQUIREMENTS.prerequisites.push(
parseInt(requirements["prerequisite"]) parseInt(requirements["prerequisite"])
); );
const params = { const params = {
requirements: CHALLENGE_REQUIREMENTS requirements: window.CHALLENGE_REQUIREMENTS
}; };
CTFd.fetch("/api/v1/challenges/" + CHALLENGE_ID, { CTFd.fetch("/api/v1/challenges/" + window.CHALLENGE_ID, {
method: "PATCH", method: "PATCH",
credentials: "same-origin", credentials: "same-origin",
headers: { headers: {
@@ -38,18 +38,18 @@ export function addRequirement(event) {
}); });
} }
export function deleteRequirement(event) { export function deleteRequirement(_event) {
const challenge_id = $(this).attr("challenge-id"); const challenge_id = $(this).attr("challenge-id");
const row = $(this) const row = $(this)
.parent() .parent()
.parent(); .parent();
CHALLENGE_REQUIREMENTS.prerequisites.pop(challenge_id); window.CHALLENGE_REQUIREMENTS.prerequisites.pop(challenge_id);
const params = { const params = {
requirements: CHALLENGE_REQUIREMENTS requirements: window.CHALLENGE_REQUIREMENTS
}; };
CTFd.fetch("/api/v1/challenges/" + CHALLENGE_ID, { CTFd.fetch("/api/v1/challenges/" + window.CHALLENGE_ID, {
method: "PATCH", method: "PATCH",
credentials: "same-origin", credentials: "same-origin",
headers: { headers: {

View File

@@ -1,7 +1,7 @@
import $ from "jquery"; import $ from "jquery";
import CTFd from "core/CTFd"; import CTFd from "core/CTFd";
export function deleteTag(event) { export function deleteTag(_event) {
const $elem = $(this); const $elem = $(this);
const tag_id = $elem.attr("tag-id"); const tag_id = $elem.attr("tag-id");
@@ -22,7 +22,7 @@ export function addTag(event) {
const tag = $elem.val(); const tag = $elem.val();
const params = { const params = {
value: tag, value: tag,
challenge: CHALLENGE_ID challenge: window.CHALLENGE_ID
}; };
CTFd.api.post_tag_list({}, params).then(response => { CTFd.api.post_tag_list({}, params).then(response => {

View File

@@ -5,7 +5,6 @@ import "bootstrap/js/dist/tab";
import CTFd from "core/CTFd"; import CTFd from "core/CTFd";
import { htmlEntities } from "core/utils"; import { htmlEntities } from "core/utils";
import { ezQuery, ezAlert, ezToast } from "core/ezq"; import { ezQuery, ezAlert, ezToast } from "core/ezq";
import nunjucks from "nunjucks";
import { default as helpers } from "core/helpers"; import { default as helpers } from "core/helpers";
import { addFile, deleteFile } from "../challenges/files"; import { addFile, deleteFile } from "../challenges/files";
import { addTag, deleteTag } from "../challenges/tags"; import { addTag, deleteTag } from "../challenges/tags";
@@ -39,7 +38,7 @@ const loadHint = id => {
displayHint(response.data); displayHint(response.data);
return; return;
} }
displayUnlock(id); // displayUnlock(id);
}); });
}; };
@@ -201,7 +200,7 @@ function handleChallengeOptions(event) {
Promise.all([ Promise.all([
// Save flag // Save flag
new Promise(function(resolve, reject) { new Promise(function(resolve, _reject) {
if (flag_params.content.length == 0) { if (flag_params.content.length == 0) {
resolve(); resolve();
return; return;
@@ -219,7 +218,7 @@ function handleChallengeOptions(event) {
}); });
}), }),
// Upload files // Upload files
new Promise(function(resolve, reject) { new Promise(function(resolve, _reject) {
let form = event.target; let form = event.target;
let data = { let data = {
challenge: params.challenge_id, challenge: params.challenge_id,
@@ -231,12 +230,12 @@ function handleChallengeOptions(event) {
} }
resolve(); resolve();
}) })
]).then(responses => { ]).then(_responses => {
save_challenge(); save_challenge();
}); });
} }
function createChallenge(event) { function createChallenge(_event) {
const challenge = $(this) const challenge = $(this)
.find("option:selected") .find("option:selected")
.data("meta"); .data("meta");
@@ -248,12 +247,12 @@ function createChallenge(event) {
} }
$(() => { $(() => {
$(".preview-challenge").click(function(e) { $(".preview-challenge").click(function(_e) {
window.challenge = new Object(); window.challenge = new Object();
CTFd._internal.challenge = {}; CTFd._internal.challenge = {};
$.get(CTFd.config.urlRoot + "/api/v1/challenges/" + CHALLENGE_ID, function( $.get(
response CTFd.config.urlRoot + "/api/v1/challenges/" + window.CHALLENGE_ID,
) { function(response) {
const challenge = CTFd._internal.challenge; const challenge = CTFd._internal.challenge;
var challenge_data = response.data; var challenge_data = response.data;
challenge_data["solves"] = null; challenge_data["solves"] = null;
@@ -277,7 +276,7 @@ $(() => {
}); });
// Handle modal toggling // Handle modal toggling
$("#challenge-window").on("hide.bs.modal", function(event) { $("#challenge-window").on("hide.bs.modal", function(_event) {
$("#challenge-input").removeClass("wrong"); $("#challenge-input").removeClass("wrong");
$("#challenge-input").removeClass("correct"); $("#challenge-input").removeClass("correct");
$("#incorrect-key").slideUp(); $("#incorrect-key").slideUp();
@@ -286,7 +285,7 @@ $(() => {
$("#too-fast").slideUp(); $("#too-fast").slideUp();
}); });
$(".load-hint").on("click", function(event) { $(".load-hint").on("click", function(_event) {
loadHint($(this).data("hint-id")); loadHint($(this).data("hint-id"));
}); });
@@ -314,17 +313,18 @@ $(() => {
$("#challenge-window").modal(); $("#challenge-window").modal();
} }
); );
}); }
);
}); });
$(".delete-challenge").click(function(e) { $(".delete-challenge").click(function(_e) {
ezQuery({ ezQuery({
title: "Delete Challenge", title: "Delete Challenge",
body: "Are you sure you want to delete {0}".format( body: "Are you sure you want to delete {0}".format(
"<strong>" + htmlEntities(CHALLENGE_NAME) + "</strong>" "<strong>" + htmlEntities(window.CHALLENGE_NAME) + "</strong>"
), ),
success: function() { success: function() {
CTFd.fetch("/api/v1/challenges/" + CHALLENGE_ID, { CTFd.fetch("/api/v1/challenges/" + window.CHALLENGE_ID, {
method: "DELETE" method: "DELETE"
}) })
.then(function(response) { .then(function(response) {
@@ -343,7 +343,7 @@ $(() => {
e.preventDefault(); e.preventDefault();
var params = $(e.target).serializeJSON(true); var params = $(e.target).serializeJSON(true);
CTFd.fetch("/api/v1/challenges/" + CHALLENGE_ID + "/flags", { CTFd.fetch("/api/v1/challenges/" + window.CHALLENGE_ID + "/flags", {
method: "GET", method: "GET",
credentials: "same-origin", credentials: "same-origin",
headers: { headers: {
@@ -356,7 +356,7 @@ $(() => {
}) })
.then(function(response) { .then(function(response) {
let update_challenge = function() { let update_challenge = function() {
CTFd.fetch("/api/v1/challenges/" + CHALLENGE_ID, { CTFd.fetch("/api/v1/challenges/" + window.CHALLENGE_ID, {
method: "PATCH", method: "PATCH",
credentials: "same-origin", credentials: "same-origin",
headers: { headers: {

View File

@@ -3,7 +3,7 @@ import CTFd from "core/CTFd";
import $ from "jquery"; import $ from "jquery";
import { ezAlert, ezQuery } from "core/ezq"; import { ezAlert, ezQuery } from "core/ezq";
function deleteSelectedChallenges(event) { function deleteSelectedChallenges(_event) {
let challengeIDs = $("input[data-challenge-id]:checked").map(function() { let challengeIDs = $("input[data-challenge-id]:checked").map(function() {
return $(this).data("challenge-id"); return $(this).data("challenge-id");
}); });
@@ -21,14 +21,14 @@ function deleteSelectedChallenges(event) {
}) })
); );
} }
Promise.all(reqs).then(responses => { Promise.all(reqs).then(_responses => {
window.location.reload(); window.location.reload();
}); });
} }
}); });
} }
function bulkEditChallenges(event) { function bulkEditChallenges(_event) {
let challengeIDs = $("input[data-challenge-id]:checked").map(function() { let challengeIDs = $("input[data-challenge-id]:checked").map(function() {
return $(this).data("challenge-id"); return $(this).data("challenge-id");
}); });
@@ -67,7 +67,7 @@ function bulkEditChallenges(event) {
}) })
); );
} }
Promise.all(reqs).then(responses => { Promise.all(reqs).then(_responses => {
window.location.reload(); window.location.reload();
}); });
} }

View File

@@ -6,7 +6,7 @@ import moment from "moment-timezone";
import CTFd from "core/CTFd"; import CTFd from "core/CTFd";
import { default as helpers } from "core/helpers"; import { default as helpers } from "core/helpers";
import $ from "jquery"; import $ from "jquery";
import { ezQuery, ezProgressBar } from "core/ezq"; import { ezQuery, ezProgressBar, ezAlert } from "core/ezq";
import CodeMirror from "codemirror"; import CodeMirror from "codemirror";
import "codemirror/mode/htmlmixed/htmlmixed.js"; import "codemirror/mode/htmlmixed/htmlmixed.js";
@@ -110,7 +110,7 @@ function updateConfigs(event) {
} }
}); });
CTFd.api.patch_config_list({}, params).then(response => { CTFd.api.patch_config_list({}, params).then(_response => {
window.location.reload(); window.location.reload();
}); });
} }
@@ -154,7 +154,7 @@ function removeLogo() {
}; };
CTFd.api CTFd.api
.patch_config({ configKey: "ctf_logo" }, params) .patch_config({ configKey: "ctf_logo" }, params)
.then(response => { .then(_response => {
window.location.reload(); window.location.reload();
}); });
} }
@@ -182,7 +182,6 @@ function importConfig(event) {
contentType: false, contentType: false,
statusCode: { statusCode: {
500: function(resp) { 500: function(resp) {
console.log(resp.responseText);
alert(resp.responseText); alert(resp.responseText);
} }
}, },
@@ -199,7 +198,7 @@ function importConfig(event) {
}; };
return xhr; return xhr;
}, },
success: function(data) { success: function(_data) {
pg = ezProgressBar({ pg = ezProgressBar({
target: pg, target: pg,
width: 100 width: 100
@@ -216,7 +215,6 @@ function importConfig(event) {
function exportConfig(event) { function exportConfig(event) {
event.preventDefault(); event.preventDefault();
const href = CTFd.config.urlRoot + "/admin/export";
window.location.href = $(this).attr("href"); window.location.href = $(this).attr("href");
} }
@@ -262,7 +260,7 @@ $(() => {
// Handle refreshing codemirror when switching tabs. // Handle refreshing codemirror when switching tabs.
// Better than the autorefresh approach b/c there's no flicker // Better than the autorefresh approach b/c there's no flicker
$("a[href='#theme']").on("shown.bs.tab", function(e) { $("a[href='#theme']").on("shown.bs.tab", function(_e) {
theme_header_editor.refresh(); theme_header_editor.refresh();
theme_footer_editor.refresh(); theme_footer_editor.refresh();
theme_settings_editor.refresh(); theme_settings_editor.refresh();

View File

@@ -93,7 +93,7 @@ function show_files(data) {
.text(fname) .text(fname)
); );
link.click(function(e) { link.click(function(_e) {
var media_div = $(this).parent(); var media_div = $(this).parent();
var icon = $(this).find("i")[0]; var icon = $(this).find("i")[0];
var f_loc = media_div.attr("data-location"); var f_loc = media_div.attr("data-location");
@@ -190,14 +190,14 @@ function submit_form() {
} }
function preview_page() { function preview_page() {
editor.save(); // Save the CodeMirror data to the Textarea window.editor.save(); // Save the CodeMirror data to the Textarea
$("#page-edit").attr("action", CTFd.config.urlRoot + "/admin/pages/preview"); $("#page-edit").attr("action", CTFd.config.urlRoot + "/admin/pages/preview");
$("#page-edit").attr("target", "_blank"); $("#page-edit").attr("target", "_blank");
$("#page-edit").submit(); $("#page-edit").submit();
} }
function upload_media() { function upload_media() {
helpers.files.upload($("#media-library-upload"), {}, function(data) { helpers.files.upload($("#media-library-upload"), {}, function(_data) {
refresh_files(); refresh_files();
}); });
} }
@@ -213,7 +213,7 @@ $(() => {
} }
); );
$("#media-insert").click(function(e) { $("#media-insert").click(function(_e) {
var tag = ""; var tag = "";
try { try {
tag = $("#media-icon") tag = $("#media-icon")
@@ -230,15 +230,15 @@ $(() => {
} else { } else {
entry = "[{0}]({1})".format(fname, link); entry = "[{0}]({1})".format(fname, link);
} }
insert_at_cursor(editor, entry); insert_at_cursor(window.editor, entry);
}); });
$("#media-download").click(function(e) { $("#media-download").click(function(_e) {
var link = $("#media-link").val(); var link = $("#media-link").val();
window.open(link, "_blank"); window.open(link, "_blank");
}); });
$("#media-delete").click(function(e) { $("#media-delete").click(function(_e) {
var file_id = $(this).attr("data-id"); var file_id = $(this).attr("data-id");
ezQuery({ ezQuery({
title: "Delete File?", title: "Delete File?",

View File

@@ -3,7 +3,7 @@ import CTFd from "core/CTFd";
import $ from "jquery"; import $ from "jquery";
import { ezQuery } from "core/ezq"; import { ezQuery } from "core/ezq";
function deleteSelectedUsers(event) { function deleteSelectedUsers(_event) {
let pageIDs = $("input[data-page-id]:checked").map(function() { let pageIDs = $("input[data-page-id]:checked").map(function() {
return $(this).data("page-id"); return $(this).data("page-id");
}); });
@@ -21,7 +21,7 @@ function deleteSelectedUsers(event) {
}) })
); );
} }
Promise.all(reqs).then(responses => { Promise.all(reqs).then(_responses => {
window.location.reload(); window.location.reload();
}); });
} }

View File

@@ -1,7 +1,7 @@
import "./main"; import "./main";
import CTFd from "core/CTFd"; import CTFd from "core/CTFd";
import $ from "jquery"; import $ from "jquery";
import { ezAlert, ezQuery } from "core/ezq"; import { ezAlert } from "core/ezq";
const api_func = { const api_func = {
users: (x, y) => CTFd.api.patch_user_public({ userId: x }, y), users: (x, y) => CTFd.api.patch_user_public({ userId: x }, y),
@@ -46,12 +46,12 @@ function toggleSelectedAccounts(accountIDs, action) {
for (var accId of accountIDs) { for (var accId of accountIDs) {
reqs.push(api_func[CTFd.config.userMode](accId, params)); reqs.push(api_func[CTFd.config.userMode](accId, params));
} }
Promise.all(reqs).then(responses => { Promise.all(reqs).then(_responses => {
window.location.reload(); window.location.reload();
}); });
} }
function bulkToggleAccounts(event) { function bulkToggleAccounts(_event) {
let accountIDs = $("input[data-account-id]:checked").map(function() { let accountIDs = $("input[data-account-id]:checked").map(function() {
return $(this).data("account-id"); return $(this).data("account-id");
}); });

View File

@@ -3,6 +3,7 @@ import "core/utils";
import CTFd from "core/CTFd"; import CTFd from "core/CTFd";
import $ from "jquery"; import $ from "jquery";
import Plotly from "plotly.js-basic-dist"; import Plotly from "plotly.js-basic-dist";
// eslint-disable-next-line no-unused-vars
import { createGraph, updateGraph } from "core/graphs"; import { createGraph, updateGraph } from "core/graphs";
const graph_configs = { const graph_configs = {

View File

@@ -4,7 +4,7 @@ import $ from "jquery";
import { htmlEntities } from "core/utils"; import { htmlEntities } from "core/utils";
import { ezQuery } from "core/ezq"; import { ezQuery } from "core/ezq";
function deleteCorrectSubmission(event) { function deleteCorrectSubmission(_event) {
const key_id = $(this).data("submission-id"); const key_id = $(this).data("submission-id");
const $elem = $(this) const $elem = $(this)
.parent() .parent()
@@ -40,7 +40,7 @@ function deleteCorrectSubmission(event) {
}); });
} }
function deleteSelectedSubmissions(event) { function deleteSelectedSubmissions(_event) {
let submissionIDs = $("input[data-submission-id]:checked").map(function() { let submissionIDs = $("input[data-submission-id]:checked").map(function() {
return $(this).data("submission-id"); return $(this).data("submission-id");
}); });
@@ -54,7 +54,7 @@ function deleteSelectedSubmissions(event) {
for (var subId of submissionIDs) { for (var subId of submissionIDs) {
reqs.push(CTFd.api.delete_submission({ submissionId: subId })); reqs.push(CTFd.api.delete_submission({ submissionId: subId }));
} }
Promise.all(reqs).then(responses => { Promise.all(reqs).then(_responses => {
window.location.reload(); window.location.reload();
}); });
} }

View File

@@ -27,7 +27,7 @@ function createTeam(event) {
window.location = CTFd.config.urlRoot + "/admin/teams/" + team_id; window.location = CTFd.config.urlRoot + "/admin/teams/" + team_id;
} else { } else {
$("#team-info-form > #results").empty(); $("#team-info-form > #results").empty();
Object.keys(response.errors).forEach(function(key, index) { Object.keys(response.errors).forEach(function(key, _index) {
$("#team-info-form > #results").append( $("#team-info-form > #results").append(
ezBadge({ ezBadge({
type: "error", type: "error",
@@ -47,7 +47,7 @@ function updateTeam(event) {
event.preventDefault(); event.preventDefault();
const params = $("#team-info-edit-form").serializeJSON(true); const params = $("#team-info-edit-form").serializeJSON(true);
CTFd.fetch("/api/v1/teams/" + TEAM_ID, { CTFd.fetch("/api/v1/teams/" + window.TEAM_ID, {
method: "PATCH", method: "PATCH",
credentials: "same-origin", credentials: "same-origin",
headers: { headers: {
@@ -64,7 +64,7 @@ function updateTeam(event) {
window.location.reload(); window.location.reload();
} else { } else {
$("#team-info-form > #results").empty(); $("#team-info-form > #results").empty();
Object.keys(response.errors).forEach(function(key, index) { Object.keys(response.errors).forEach(function(key, _index) {
$("#team-info-form > #results").append( $("#team-info-form > #results").append(
ezBadge({ ezBadge({
type: "error", type: "error",
@@ -114,14 +114,14 @@ function deleteSelectedSubmissions(event, target) {
for (var subId of submissionIDs) { for (var subId of submissionIDs) {
reqs.push(CTFd.api.delete_submission({ submissionId: subId })); reqs.push(CTFd.api.delete_submission({ submissionId: subId }));
} }
Promise.all(reqs).then(responses => { Promise.all(reqs).then(_responses => {
window.location.reload(); window.location.reload();
}); });
} }
}); });
} }
function deleteSelectedAwards(event) { function deleteSelectedAwards(_event) {
let awardIDs = $("input[data-award-id]:checked").map(function() { let awardIDs = $("input[data-award-id]:checked").map(function() {
return $(this).data("award-id"); return $(this).data("award-id");
}); });
@@ -143,7 +143,7 @@ function deleteSelectedAwards(event) {
}); });
reqs.push(req); reqs.push(req);
} }
Promise.all(reqs).then(responses => { Promise.all(reqs).then(_responses => {
window.location.reload(); window.location.reload();
}); });
} }
@@ -163,12 +163,12 @@ function solveSelectedMissingChallenges(event) {
title: `Mark Correct`, title: `Mark Correct`,
body: `Are you sure you want to mark ${ body: `Are you sure you want to mark ${
challengeIDs.length challengeIDs.length
} challenges correct for ${htmlEntities(TEAM_NAME)}?`, } ${target} correct for ${htmlEntities(window.TEAM_NAME)}?`,
success: function() { success: function() {
ezAlert({ ezAlert({
title: `User Attribution`, title: `User Attribution`,
body: ` body: `
Which user on ${htmlEntities(TEAM_NAME)} solved these challenges? Which user on ${htmlEntities(window.TEAM_NAME)} solved these challenges?
<div class="pb-3" id="query-team-member-solve"> <div class="pb-3" id="query-team-member-solve">
${$("#team-member-select").html()} ${$("#team-member-select").html()}
</div> </div>
@@ -181,7 +181,7 @@ function solveSelectedMissingChallenges(event) {
let params = { let params = {
provided: "MARKED AS SOLVED BY ADMIN", provided: "MARKED AS SOLVED BY ADMIN",
user_id: USER_ID, user_id: USER_ID,
team_id: TEAM_ID, team_id: window.TEAM_ID,
challenge_id: challengeID, challenge_id: challengeID,
type: "correct" type: "correct"
}; };
@@ -197,7 +197,7 @@ function solveSelectedMissingChallenges(event) {
}); });
reqs.push(req); reqs.push(req);
} }
Promise.all(reqs).then(responses => { Promise.all(reqs).then(_responses => {
window.location.reload(); window.location.reload();
}); });
} }
@@ -300,7 +300,7 @@ $(() => {
e.preventDefault(); e.preventDefault();
const params = $("#team-captain-form").serializeJSON(true); const params = $("#team-captain-form").serializeJSON(true);
CTFd.fetch("/api/v1/teams/" + TEAM_ID, { CTFd.fetch("/api/v1/teams/" + window.TEAM_ID, {
method: "PATCH", method: "PATCH",
credentials: "same-origin", credentials: "same-origin",
headers: { headers: {
@@ -317,7 +317,7 @@ $(() => {
window.location.reload(); window.location.reload();
} else { } else {
$("#team-captain-form > #results").empty(); $("#team-captain-form > #results").empty();
Object.keys(response.errors).forEach(function(key, index) { Object.keys(response.errors).forEach(function(key, _index) {
$("#team-captain-form > #results").append( $("#team-captain-form > #results").append(
ezBadge({ ezBadge({
type: "error", type: "error",
@@ -335,19 +335,19 @@ $(() => {
}); });
}); });
$(".edit-team").click(function(e) { $(".edit-team").click(function(_e) {
$("#team-info-edit-modal").modal("toggle"); $("#team-info-edit-modal").modal("toggle");
}); });
$(".edit-captain").click(function(e) { $(".edit-captain").click(function(_e) {
$("#team-captain-modal").modal("toggle"); $("#team-captain-modal").modal("toggle");
}); });
$(".award-team").click(function(e) { $(".award-team").click(function(_e) {
$("#team-award-modal").modal("toggle"); $("#team-award-modal").modal("toggle");
}); });
$(".addresses-team").click(function(event) { $(".addresses-team").click(function(_event) {
$("#team-addresses-modal").modal("toggle"); $("#team-addresses-modal").modal("toggle");
}); });
@@ -355,7 +355,7 @@ $(() => {
e.preventDefault(); e.preventDefault();
const params = $("#user-award-form").serializeJSON(true); const params = $("#user-award-form").serializeJSON(true);
params["user_id"] = $("#award-member-input").val(); params["user_id"] = $("#award-member-input").val();
params["team_id"] = TEAM_ID; params["team_id"] = window.TEAM_ID;
$("#user-award-form > #results").empty(); $("#user-award-form > #results").empty();
@@ -387,7 +387,7 @@ $(() => {
window.location.reload(); window.location.reload();
} else { } else {
$("#user-award-form > #results").empty(); $("#user-award-form > #results").empty();
Object.keys(response.errors).forEach(function(key, index) { Object.keys(response.errors).forEach(function(key, _index) {
$("#user-award-form > #results").append( $("#user-award-form > #results").append(
ezBadge({ ezBadge({
type: "error", type: "error",
@@ -420,10 +420,10 @@ $(() => {
title: "Remove Member", title: "Remove Member",
body: "Are you sure you want to remove {0} from {1}? <br><br><strong>All of their challenges solves, attempts, awards, and unlocked hints will also be deleted!</strong>".format( body: "Are you sure you want to remove {0} from {1}? <br><br><strong>All of their challenges solves, attempts, awards, and unlocked hints will also be deleted!</strong>".format(
"<strong>" + htmlEntities(member_name) + "</strong>", "<strong>" + htmlEntities(member_name) + "</strong>",
"<strong>" + htmlEntities(TEAM_NAME) + "</strong>" "<strong>" + htmlEntities(window.TEAM_NAME) + "</strong>"
), ),
success: function() { success: function() {
CTFd.fetch("/api/v1/teams/" + TEAM_ID + "/members", { CTFd.fetch("/api/v1/teams/" + window.TEAM_ID + "/members", {
method: "DELETE", method: "DELETE",
body: JSON.stringify(params) body: JSON.stringify(params)
}) })
@@ -439,14 +439,14 @@ $(() => {
}); });
}); });
$(".delete-team").click(function(e) { $(".delete-team").click(function(_e) {
ezQuery({ ezQuery({
title: "Delete Team", title: "Delete Team",
body: "Are you sure you want to delete {0}".format( body: "Are you sure you want to delete {0}".format(
"<strong>" + htmlEntities(TEAM_NAME) + "</strong>" "<strong>" + htmlEntities(window.TEAM_NAME) + "</strong>"
), ),
success: function() { success: function() {
CTFd.fetch("/api/v1/teams/" + TEAM_ID, { CTFd.fetch("/api/v1/teams/" + window.TEAM_ID, {
method: "DELETE" method: "DELETE"
}) })
.then(function(response) { .then(function(response) {

View File

@@ -3,7 +3,7 @@ import CTFd from "core/CTFd";
import $ from "jquery"; import $ from "jquery";
import { ezAlert, ezQuery } from "core/ezq"; import { ezAlert, ezQuery } from "core/ezq";
function deleteSelectedTeams(event) { function deleteSelectedTeams(_event) {
let teamIDs = $("input[data-team-id]:checked").map(function() { let teamIDs = $("input[data-team-id]:checked").map(function() {
return $(this).data("team-id"); return $(this).data("team-id");
}); });
@@ -21,14 +21,14 @@ function deleteSelectedTeams(event) {
}) })
); );
} }
Promise.all(reqs).then(responses => { Promise.all(reqs).then(_responses => {
window.location.reload(); window.location.reload();
}); });
} }
}); });
} }
function bulkEditTeams(event) { function bulkEditTeams(_event) {
let teamIDs = $("input[data-team-id]:checked").map(function() { let teamIDs = $("input[data-team-id]:checked").map(function() {
return $(this).data("team-id"); return $(this).data("team-id");
}); });
@@ -67,7 +67,7 @@ function bulkEditTeams(event) {
}) })
); );
} }
Promise.all(reqs).then(responses => { Promise.all(reqs).then(_responses => {
window.location.reload(); window.location.reload();
}); });
} }

View File

@@ -35,7 +35,7 @@ function createUser(event) {
window.location = CTFd.config.urlRoot + "/admin/users/" + user_id; window.location = CTFd.config.urlRoot + "/admin/users/" + user_id;
} else { } else {
$("#user-info-create-form > #results").empty(); $("#user-info-create-form > #results").empty();
Object.keys(response.errors).forEach(function(key, index) { Object.keys(response.errors).forEach(function(key, _index) {
$("#user-info-create-form > #results").append( $("#user-info-create-form > #results").append(
ezBadge({ ezBadge({
type: "error", type: "error",
@@ -55,7 +55,7 @@ function updateUser(event) {
event.preventDefault(); event.preventDefault();
const params = $("#user-info-edit-form").serializeJSON(true); const params = $("#user-info-edit-form").serializeJSON(true);
CTFd.fetch("/api/v1/users/" + USER_ID, { CTFd.fetch("/api/v1/users/" + window.USER_ID, {
method: "PATCH", method: "PATCH",
credentials: "same-origin", credentials: "same-origin",
headers: { headers: {
@@ -72,7 +72,7 @@ function updateUser(event) {
window.location.reload(); window.location.reload();
} else { } else {
$("#user-info-edit-form > #results").empty(); $("#user-info-edit-form > #results").empty();
Object.keys(response.errors).forEach(function(key, index) { Object.keys(response.errors).forEach(function(key, _index) {
$("#user-info-edit-form > #results").append( $("#user-info-edit-form > #results").append(
ezBadge({ ezBadge({
type: "error", type: "error",
@@ -95,10 +95,10 @@ function deleteUser(event) {
ezQuery({ ezQuery({
title: "Delete User", title: "Delete User",
body: "Are you sure you want to delete {0}".format( body: "Are you sure you want to delete {0}".format(
"<strong>" + htmlEntities(USER_NAME) + "</strong>" "<strong>" + htmlEntities(window.USER_NAME) + "</strong>"
), ),
success: function() { success: function() {
CTFd.fetch("/api/v1/users/" + USER_ID, { CTFd.fetch("/api/v1/users/" + window.USER_ID, {
method: "DELETE" method: "DELETE"
}) })
.then(function(response) { .then(function(response) {
@@ -116,7 +116,7 @@ function deleteUser(event) {
function awardUser(event) { function awardUser(event) {
event.preventDefault(); event.preventDefault();
const params = $("#user-award-form").serializeJSON(true); const params = $("#user-award-form").serializeJSON(true);
params["user_id"] = USER_ID; params["user_id"] = window.USER_ID;
CTFd.fetch("/api/v1/awards", { CTFd.fetch("/api/v1/awards", {
method: "POST", method: "POST",
@@ -135,7 +135,7 @@ function awardUser(event) {
window.location.reload(); window.location.reload();
} else { } else {
$("#user-award-form > #results").empty(); $("#user-award-form > #results").empty();
Object.keys(response.errors).forEach(function(key, index) { Object.keys(response.errors).forEach(function(key, _index) {
$("#user-award-form > #results").append( $("#user-award-form > #results").append(
ezBadge({ ezBadge({
type: "error", type: "error",
@@ -154,7 +154,7 @@ function awardUser(event) {
function emailUser(event) { function emailUser(event) {
event.preventDefault(); event.preventDefault();
var params = $("#user-mail-form").serializeJSON(true); var params = $("#user-mail-form").serializeJSON(true);
CTFd.fetch("/api/v1/users/" + USER_ID + "/email", { CTFd.fetch("/api/v1/users/" + window.USER_ID + "/email", {
method: "POST", method: "POST",
credentials: "same-origin", credentials: "same-origin",
headers: { headers: {
@@ -179,7 +179,7 @@ function emailUser(event) {
.val(""); .val("");
} else { } else {
$("#user-mail-form > #results").empty(); $("#user-mail-form > #results").empty();
Object.keys(response.errors).forEach(function(key, index) { Object.keys(response.errors).forEach(function(key, _index) {
$("#user-mail-form > #results").append( $("#user-mail-form > #results").append(
ezBadge({ ezBadge({
type: "error", type: "error",
@@ -231,14 +231,14 @@ function deleteSelectedSubmissions(event, target) {
for (var subId of submissionIDs) { for (var subId of submissionIDs) {
reqs.push(CTFd.api.delete_submission({ submissionId: subId })); reqs.push(CTFd.api.delete_submission({ submissionId: subId }));
} }
Promise.all(reqs).then(responses => { Promise.all(reqs).then(_responses => {
window.location.reload(); window.location.reload();
}); });
} }
}); });
} }
function deleteSelectedAwards(event) { function deleteSelectedAwards(_event) {
let awardIDs = $("input[data-award-id]:checked").map(function() { let awardIDs = $("input[data-award-id]:checked").map(function() {
return $(this).data("award-id"); return $(this).data("award-id");
}); });
@@ -260,7 +260,7 @@ function deleteSelectedAwards(event) {
}); });
reqs.push(req); reqs.push(req);
} }
Promise.all(reqs).then(responses => { Promise.all(reqs).then(_responses => {
window.location.reload(); window.location.reload();
}); });
} }
@@ -280,14 +280,14 @@ function solveSelectedMissingChallenges(event) {
title: `Mark Correct`, title: `Mark Correct`,
body: `Are you sure you want to mark ${ body: `Are you sure you want to mark ${
challengeIDs.length challengeIDs.length
} correct for ${htmlEntities(USER_NAME)}?`, } ${target} correct for ${htmlEntities(window.USER_NAME)}?`,
success: function() { success: function() {
const reqs = []; const reqs = [];
for (var challengeID of challengeIDs) { for (var challengeID of challengeIDs) {
let params = { let params = {
provided: "MARKED AS SOLVED BY ADMIN", provided: "MARKED AS SOLVED BY ADMIN",
user_id: USER_ID, user_id: window.USER_ID,
team_id: TEAM_ID, team_id: window.TEAM_ID,
challenge_id: challengeID, challenge_id: challengeID,
type: "correct" type: "correct"
}; };
@@ -303,7 +303,7 @@ function solveSelectedMissingChallenges(event) {
}); });
reqs.push(req); reqs.push(req);
} }
Promise.all(reqs).then(responses => { Promise.all(reqs).then(_responses => {
window.location.reload(); window.location.reload();
}); });
} }
@@ -402,19 +402,19 @@ const updateGraphs = (type, id, name, account_id) => {
$(() => { $(() => {
$(".delete-user").click(deleteUser); $(".delete-user").click(deleteUser);
$(".edit-user").click(function(event) { $(".edit-user").click(function(_event) {
$("#user-info-modal").modal("toggle"); $("#user-info-modal").modal("toggle");
}); });
$(".award-user").click(function(event) { $(".award-user").click(function(_event) {
$("#user-award-modal").modal("toggle"); $("#user-award-modal").modal("toggle");
}); });
$(".email-user").click(function(event) { $(".email-user").click(function(_event) {
$("#user-email-modal").modal("toggle"); $("#user-email-modal").modal("toggle");
}); });
$(".addresses-user").click(function(event) { $(".addresses-user").click(function(_event) {
$("#user-addresses-modal").modal("toggle"); $("#user-addresses-modal").modal("toggle");
}); });

View File

@@ -3,7 +3,7 @@ import CTFd from "core/CTFd";
import $ from "jquery"; import $ from "jquery";
import { ezAlert, ezQuery } from "core/ezq"; import { ezAlert, ezQuery } from "core/ezq";
function deleteSelectedUsers(event) { function deleteSelectedUsers(_event) {
let userIDs = $("input[data-user-id]:checked").map(function() { let userIDs = $("input[data-user-id]:checked").map(function() {
return $(this).data("user-id"); return $(this).data("user-id");
}); });
@@ -21,14 +21,14 @@ function deleteSelectedUsers(event) {
}) })
); );
} }
Promise.all(reqs).then(responses => { Promise.all(reqs).then(_responses => {
window.location.reload(); window.location.reload();
}); });
} }
}); });
} }
function bulkEditUsers(event) { function bulkEditUsers(_event) {
let userIDs = $("input[data-user-id]:checked").map(function() { let userIDs = $("input[data-user-id]:checked").map(function() {
return $(this).data("user-id"); return $(this).data("user-id");
}); });
@@ -75,7 +75,7 @@ function bulkEditUsers(event) {
}) })
); );
} }
Promise.all(reqs).then(responses => { Promise.all(reqs).then(_responses => {
window.location.reload(); window.location.reload();
}); });
} }

View File

@@ -20,7 +20,7 @@ export default () => {
} }
}); });
$(".modal").on("show.bs.modal", function(e) { $(".modal").on("show.bs.modal", function(_e) {
$(".form-control").each(function() { $(".form-control").each(function() {
if ($(this).val()) { if ($(this).val()) {
$(this).addClass("input-filled-valid"); $(this).addClass("input-filled-valid");

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -162,7 +162,7 @@
/***/ (function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
; ;
eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/admin/assets/js/pages/main.js\");\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! core/CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _ezq = __webpack_require__(/*! core/ezq */ \"./CTFd/themes/core/assets/js/ezq.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction deleteSelectedChallenges(event) {\n var challengeIDs = (0, _jquery.default)(\"input[data-challenge-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"challenge-id\");\n });\n var target = challengeIDs.length === 1 ? \"challenge\" : \"challenges\";\n (0, _ezq.ezQuery)({\n title: \"Delete Challenges\",\n body: \"Are you sure you want to delete \".concat(challengeIDs.length, \" \").concat(target, \"?\"),\n success: function success() {\n var reqs = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = challengeIDs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var chalID = _step.value;\n reqs.push(_CTFd.default.fetch(\"/api/v1/challenges/\".concat(chalID), {\n method: \"DELETE\"\n }));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n Promise.all(reqs).then(function (responses) {\n window.location.reload();\n });\n }\n });\n}\n\nfunction bulkEditChallenges(event) {\n var challengeIDs = (0, _jquery.default)(\"input[data-challenge-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"challenge-id\");\n });\n (0, _ezq.ezAlert)({\n title: \"Edit Challenges\",\n body: (0, _jquery.default)(\"\\n <form id=\\\"challenges-bulk-edit\\\">\\n <div class=\\\"form-group\\\">\\n <label>Category</label>\\n <input type=\\\"text\\\" name=\\\"category\\\" data-initial=\\\"\\\" value=\\\"\\\">\\n </div>\\n <div class=\\\"form-group\\\">\\n <label>Value</label>\\n <input type=\\\"number\\\" name=\\\"value\\\" data-initial=\\\"\\\" value=\\\"\\\">\\n </div>\\n <div class=\\\"form-group\\\">\\n <label>State</label>\\n <select name=\\\"state\\\" data-initial=\\\"\\\">\\n <option value=\\\"\\\">--</option>\\n <option value=\\\"visible\\\">Visible</option>\\n <option value=\\\"hidden\\\">Hidden</option>\\n </select>\\n </div>\\n </form>\\n \"),\n button: \"Submit\",\n success: function success() {\n var data = (0, _jquery.default)(\"#challenges-bulk-edit\").serializeJSON(true);\n var reqs = [];\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = challengeIDs[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var chalID = _step2.value;\n reqs.push(_CTFd.default.fetch(\"/api/v1/challenges/\".concat(chalID), {\n method: \"PATCH\",\n body: JSON.stringify(data)\n }));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n Promise.all(reqs).then(function (responses) {\n window.location.reload();\n });\n }\n });\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\"#challenges-delete-button\").click(deleteSelectedChallenges);\n (0, _jquery.default)(\"#challenges-edit-button\").click(bulkEditChallenges);\n});\n\n//# sourceURL=webpack:///./CTFd/themes/admin/assets/js/pages/challenges.js?"); eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/admin/assets/js/pages/main.js\");\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! core/CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _ezq = __webpack_require__(/*! core/ezq */ \"./CTFd/themes/core/assets/js/ezq.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction deleteSelectedChallenges(_event) {\n var challengeIDs = (0, _jquery.default)(\"input[data-challenge-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"challenge-id\");\n });\n var target = challengeIDs.length === 1 ? \"challenge\" : \"challenges\";\n (0, _ezq.ezQuery)({\n title: \"Delete Challenges\",\n body: \"Are you sure you want to delete \".concat(challengeIDs.length, \" \").concat(target, \"?\"),\n success: function success() {\n var reqs = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = challengeIDs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var chalID = _step.value;\n reqs.push(_CTFd.default.fetch(\"/api/v1/challenges/\".concat(chalID), {\n method: \"DELETE\"\n }));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n Promise.all(reqs).then(function (_responses) {\n window.location.reload();\n });\n }\n });\n}\n\nfunction bulkEditChallenges(_event) {\n var challengeIDs = (0, _jquery.default)(\"input[data-challenge-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"challenge-id\");\n });\n (0, _ezq.ezAlert)({\n title: \"Edit Challenges\",\n body: (0, _jquery.default)(\"\\n <form id=\\\"challenges-bulk-edit\\\">\\n <div class=\\\"form-group\\\">\\n <label>Category</label>\\n <input type=\\\"text\\\" name=\\\"category\\\" data-initial=\\\"\\\" value=\\\"\\\">\\n </div>\\n <div class=\\\"form-group\\\">\\n <label>Value</label>\\n <input type=\\\"number\\\" name=\\\"value\\\" data-initial=\\\"\\\" value=\\\"\\\">\\n </div>\\n <div class=\\\"form-group\\\">\\n <label>State</label>\\n <select name=\\\"state\\\" data-initial=\\\"\\\">\\n <option value=\\\"\\\">--</option>\\n <option value=\\\"visible\\\">Visible</option>\\n <option value=\\\"hidden\\\">Hidden</option>\\n </select>\\n </div>\\n </form>\\n \"),\n button: \"Submit\",\n success: function success() {\n var data = (0, _jquery.default)(\"#challenges-bulk-edit\").serializeJSON(true);\n var reqs = [];\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = challengeIDs[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var chalID = _step2.value;\n reqs.push(_CTFd.default.fetch(\"/api/v1/challenges/\".concat(chalID), {\n method: \"PATCH\",\n body: JSON.stringify(data)\n }));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n Promise.all(reqs).then(function (_responses) {\n window.location.reload();\n });\n }\n });\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\"#challenges-delete-button\").click(deleteSelectedChallenges);\n (0, _jquery.default)(\"#challenges-edit-button\").click(bulkEditChallenges);\n});\n\n//# sourceURL=webpack:///./CTFd/themes/admin/assets/js/pages/challenges.js?");
/***/ }) /***/ })

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -162,7 +162,7 @@
/***/ (function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
; ;
eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/admin/assets/js/pages/main.js\");\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! core/CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _ezq = __webpack_require__(/*! core/ezq */ \"./CTFd/themes/core/assets/js/ezq.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction deleteSelectedUsers(event) {\n var pageIDs = (0, _jquery.default)(\"input[data-page-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"page-id\");\n });\n var target = pageIDs.length === 1 ? \"page\" : \"pages\";\n (0, _ezq.ezQuery)({\n title: \"Delete Pages\",\n body: \"Are you sure you want to delete \".concat(pageIDs.length, \" \").concat(target, \"?\"),\n success: function success() {\n var reqs = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = pageIDs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var pageID = _step.value;\n reqs.push(_CTFd.default.fetch(\"/api/v1/pages/\".concat(pageID), {\n method: \"DELETE\"\n }));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n Promise.all(reqs).then(function (responses) {\n window.location.reload();\n });\n }\n });\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\"#pages-delete-button\").click(deleteSelectedUsers);\n});\n\n//# sourceURL=webpack:///./CTFd/themes/admin/assets/js/pages/pages.js?"); eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/admin/assets/js/pages/main.js\");\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! core/CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _ezq = __webpack_require__(/*! core/ezq */ \"./CTFd/themes/core/assets/js/ezq.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction deleteSelectedUsers(_event) {\n var pageIDs = (0, _jquery.default)(\"input[data-page-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"page-id\");\n });\n var target = pageIDs.length === 1 ? \"page\" : \"pages\";\n (0, _ezq.ezQuery)({\n title: \"Delete Pages\",\n body: \"Are you sure you want to delete \".concat(pageIDs.length, \" \").concat(target, \"?\"),\n success: function success() {\n var reqs = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = pageIDs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var pageID = _step.value;\n reqs.push(_CTFd.default.fetch(\"/api/v1/pages/\".concat(pageID), {\n method: \"DELETE\"\n }));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n Promise.all(reqs).then(function (_responses) {\n window.location.reload();\n });\n }\n });\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\"#pages-delete-button\").click(deleteSelectedUsers);\n});\n\n//# sourceURL=webpack:///./CTFd/themes/admin/assets/js/pages/pages.js?");
/***/ }) /***/ })

View File

@@ -162,7 +162,7 @@
/***/ (function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
; ;
eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/admin/assets/js/pages/main.js\");\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! core/CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _ezq = __webpack_require__(/*! core/ezq */ \"./CTFd/themes/core/assets/js/ezq.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar api_func = {\n users: function users(x, y) {\n return _CTFd.default.api.patch_user_public({\n userId: x\n }, y);\n },\n teams: function teams(x, y) {\n return _CTFd.default.api.patch_team_public({\n teamId: x\n }, y);\n }\n};\n\nfunction toggleAccount() {\n var $btn = (0, _jquery.default)(this);\n var id = $btn.data(\"account-id\");\n var state = $btn.data(\"state\");\n var hidden = undefined;\n\n if (state === \"visible\") {\n hidden = true;\n } else if (state === \"hidden\") {\n hidden = false;\n }\n\n var params = {\n hidden: hidden\n };\n\n api_func[_CTFd.default.config.userMode](id, params).then(function (response) {\n if (response.success) {\n if (hidden) {\n $btn.data(\"state\", \"hidden\");\n $btn.addClass(\"btn-danger\").removeClass(\"btn-success\");\n $btn.text(\"Hidden\");\n } else {\n $btn.data(\"state\", \"visible\");\n $btn.addClass(\"btn-success\").removeClass(\"btn-danger\");\n $btn.text(\"Visible\");\n }\n }\n });\n}\n\nfunction toggleSelectedAccounts(accountIDs, action) {\n var params = {\n hidden: action === \"hidden\" ? true : false\n };\n var reqs = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = accountIDs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var accId = _step.value;\n reqs.push(api_func[_CTFd.default.config.userMode](accId, params));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n Promise.all(reqs).then(function (responses) {\n window.location.reload();\n });\n}\n\nfunction bulkToggleAccounts(event) {\n var accountIDs = (0, _jquery.default)(\"input[data-account-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"account-id\");\n });\n (0, _ezq.ezAlert)({\n title: \"Toggle Visibility\",\n body: (0, _jquery.default)(\"\\n <form id=\\\"scoreboard-bulk-edit\\\">\\n <div class=\\\"form-group\\\">\\n <label>Visibility</label>\\n <select name=\\\"visibility\\\" data-initial=\\\"\\\">\\n <option value=\\\"\\\">--</option>\\n <option value=\\\"visible\\\">Visible</option>\\n <option value=\\\"hidden\\\">Hidden</option>\\n </select>\\n </div>\\n </form>\\n \"),\n button: \"Submit\",\n success: function success() {\n var data = (0, _jquery.default)(\"#scoreboard-bulk-edit\").serializeJSON(true);\n var state = data.visibility;\n toggleSelectedAccounts(accountIDs, state);\n }\n });\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\".scoreboard-toggle\").click(toggleAccount);\n (0, _jquery.default)(\"#scoreboard-edit-button\").click(bulkToggleAccounts);\n});\n\n//# sourceURL=webpack:///./CTFd/themes/admin/assets/js/pages/scoreboard.js?"); eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/admin/assets/js/pages/main.js\");\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! core/CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _ezq = __webpack_require__(/*! core/ezq */ \"./CTFd/themes/core/assets/js/ezq.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar api_func = {\n users: function users(x, y) {\n return _CTFd.default.api.patch_user_public({\n userId: x\n }, y);\n },\n teams: function teams(x, y) {\n return _CTFd.default.api.patch_team_public({\n teamId: x\n }, y);\n }\n};\n\nfunction toggleAccount() {\n var $btn = (0, _jquery.default)(this);\n var id = $btn.data(\"account-id\");\n var state = $btn.data(\"state\");\n var hidden = undefined;\n\n if (state === \"visible\") {\n hidden = true;\n } else if (state === \"hidden\") {\n hidden = false;\n }\n\n var params = {\n hidden: hidden\n };\n\n api_func[_CTFd.default.config.userMode](id, params).then(function (response) {\n if (response.success) {\n if (hidden) {\n $btn.data(\"state\", \"hidden\");\n $btn.addClass(\"btn-danger\").removeClass(\"btn-success\");\n $btn.text(\"Hidden\");\n } else {\n $btn.data(\"state\", \"visible\");\n $btn.addClass(\"btn-success\").removeClass(\"btn-danger\");\n $btn.text(\"Visible\");\n }\n }\n });\n}\n\nfunction toggleSelectedAccounts(accountIDs, action) {\n var params = {\n hidden: action === \"hidden\" ? true : false\n };\n var reqs = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = accountIDs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var accId = _step.value;\n reqs.push(api_func[_CTFd.default.config.userMode](accId, params));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n Promise.all(reqs).then(function (_responses) {\n window.location.reload();\n });\n}\n\nfunction bulkToggleAccounts(_event) {\n var accountIDs = (0, _jquery.default)(\"input[data-account-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"account-id\");\n });\n (0, _ezq.ezAlert)({\n title: \"Toggle Visibility\",\n body: (0, _jquery.default)(\"\\n <form id=\\\"scoreboard-bulk-edit\\\">\\n <div class=\\\"form-group\\\">\\n <label>Visibility</label>\\n <select name=\\\"visibility\\\" data-initial=\\\"\\\">\\n <option value=\\\"\\\">--</option>\\n <option value=\\\"visible\\\">Visible</option>\\n <option value=\\\"hidden\\\">Hidden</option>\\n </select>\\n </div>\\n </form>\\n \"),\n button: \"Submit\",\n success: function success() {\n var data = (0, _jquery.default)(\"#scoreboard-bulk-edit\").serializeJSON(true);\n var state = data.visibility;\n toggleSelectedAccounts(accountIDs, state);\n }\n });\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\".scoreboard-toggle\").click(toggleAccount);\n (0, _jquery.default)(\"#scoreboard-edit-button\").click(bulkToggleAccounts);\n});\n\n//# sourceURL=webpack:///./CTFd/themes/admin/assets/js/pages/scoreboard.js?");
/***/ }) /***/ })

File diff suppressed because one or more lines are too long

View File

@@ -162,7 +162,7 @@
/***/ (function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
; ;
eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/admin/assets/js/pages/main.js\");\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! core/CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _utils = __webpack_require__(/*! core/utils */ \"./CTFd/themes/core/assets/js/utils.js\");\n\nvar _ezq = __webpack_require__(/*! core/ezq */ \"./CTFd/themes/core/assets/js/ezq.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction deleteCorrectSubmission(event) {\n var key_id = (0, _jquery.default)(this).data(\"submission-id\");\n var $elem = (0, _jquery.default)(this).parent().parent();\n var chal_name = $elem.find(\".chal\").text().trim();\n var team_name = $elem.find(\".team\").text().trim();\n var row = (0, _jquery.default)(this).parent().parent();\n (0, _ezq.ezQuery)({\n title: \"Delete Submission\",\n body: \"Are you sure you want to delete correct submission from {0} for challenge {1}\".format(\"<strong>\" + (0, _utils.htmlEntities)(team_name) + \"</strong>\", \"<strong>\" + (0, _utils.htmlEntities)(chal_name) + \"</strong>\"),\n success: function success() {\n _CTFd.default.api.delete_submission({\n submissionId: key_id\n }).then(function (response) {\n if (response.success) {\n row.remove();\n }\n });\n }\n });\n}\n\nfunction deleteSelectedSubmissions(event) {\n var submissionIDs = (0, _jquery.default)(\"input[data-submission-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"submission-id\");\n });\n var target = submissionIDs.length === 1 ? \"submission\" : \"submissions\";\n (0, _ezq.ezQuery)({\n title: \"Delete Submissions\",\n body: \"Are you sure you want to delete \".concat(submissionIDs.length, \" \").concat(target, \"?\"),\n success: function success() {\n var reqs = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = submissionIDs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var subId = _step.value;\n reqs.push(_CTFd.default.api.delete_submission({\n submissionId: subId\n }));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n Promise.all(reqs).then(function (responses) {\n window.location.reload();\n });\n }\n });\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\".delete-correct-submission\").click(deleteCorrectSubmission);\n (0, _jquery.default)(\"#submission-delete-button\").click(deleteSelectedSubmissions);\n});\n\n//# sourceURL=webpack:///./CTFd/themes/admin/assets/js/pages/submissions.js?"); eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/admin/assets/js/pages/main.js\");\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! core/CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _utils = __webpack_require__(/*! core/utils */ \"./CTFd/themes/core/assets/js/utils.js\");\n\nvar _ezq = __webpack_require__(/*! core/ezq */ \"./CTFd/themes/core/assets/js/ezq.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction deleteCorrectSubmission(_event) {\n var key_id = (0, _jquery.default)(this).data(\"submission-id\");\n var $elem = (0, _jquery.default)(this).parent().parent();\n var chal_name = $elem.find(\".chal\").text().trim();\n var team_name = $elem.find(\".team\").text().trim();\n var row = (0, _jquery.default)(this).parent().parent();\n (0, _ezq.ezQuery)({\n title: \"Delete Submission\",\n body: \"Are you sure you want to delete correct submission from {0} for challenge {1}\".format(\"<strong>\" + (0, _utils.htmlEntities)(team_name) + \"</strong>\", \"<strong>\" + (0, _utils.htmlEntities)(chal_name) + \"</strong>\"),\n success: function success() {\n _CTFd.default.api.delete_submission({\n submissionId: key_id\n }).then(function (response) {\n if (response.success) {\n row.remove();\n }\n });\n }\n });\n}\n\nfunction deleteSelectedSubmissions(_event) {\n var submissionIDs = (0, _jquery.default)(\"input[data-submission-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"submission-id\");\n });\n var target = submissionIDs.length === 1 ? \"submission\" : \"submissions\";\n (0, _ezq.ezQuery)({\n title: \"Delete Submissions\",\n body: \"Are you sure you want to delete \".concat(submissionIDs.length, \" \").concat(target, \"?\"),\n success: function success() {\n var reqs = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = submissionIDs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var subId = _step.value;\n reqs.push(_CTFd.default.api.delete_submission({\n submissionId: subId\n }));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n Promise.all(reqs).then(function (_responses) {\n window.location.reload();\n });\n }\n });\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\".delete-correct-submission\").click(deleteCorrectSubmission);\n (0, _jquery.default)(\"#submission-delete-button\").click(deleteSelectedSubmissions);\n});\n\n//# sourceURL=webpack:///./CTFd/themes/admin/assets/js/pages/submissions.js?");
/***/ }) /***/ })

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -162,7 +162,7 @@
/***/ (function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
; ;
eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/admin/assets/js/pages/main.js\");\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! core/CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _ezq = __webpack_require__(/*! core/ezq */ \"./CTFd/themes/core/assets/js/ezq.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction deleteSelectedTeams(event) {\n var teamIDs = (0, _jquery.default)(\"input[data-team-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"team-id\");\n });\n var target = teamIDs.length === 1 ? \"team\" : \"teams\";\n (0, _ezq.ezQuery)({\n title: \"Delete Teams\",\n body: \"Are you sure you want to delete \".concat(teamIDs.length, \" \").concat(target, \"?\"),\n success: function success() {\n var reqs = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = teamIDs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var teamID = _step.value;\n reqs.push(_CTFd.default.fetch(\"/api/v1/teams/\".concat(teamID), {\n method: \"DELETE\"\n }));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n Promise.all(reqs).then(function (responses) {\n window.location.reload();\n });\n }\n });\n}\n\nfunction bulkEditTeams(event) {\n var teamIDs = (0, _jquery.default)(\"input[data-team-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"team-id\");\n });\n (0, _ezq.ezAlert)({\n title: \"Edit Teams\",\n body: (0, _jquery.default)(\"\\n <form id=\\\"teams-bulk-edit\\\">\\n <div class=\\\"form-group\\\">\\n <label>Banned</label>\\n <select name=\\\"banned\\\" data-initial=\\\"\\\">\\n <option value=\\\"\\\">--</option>\\n <option value=\\\"true\\\">True</option>\\n <option value=\\\"false\\\">False</option>\\n </select>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label>Hidden</label>\\n <select name=\\\"hidden\\\" data-initial=\\\"\\\">\\n <option value=\\\"\\\">--</option>\\n <option value=\\\"true\\\">True</option>\\n <option value=\\\"false\\\">False</option>\\n </select>\\n </div>\\n </form>\\n \"),\n button: \"Submit\",\n success: function success() {\n var data = (0, _jquery.default)(\"#teams-bulk-edit\").serializeJSON(true);\n var reqs = [];\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = teamIDs[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var teamID = _step2.value;\n reqs.push(_CTFd.default.fetch(\"/api/v1/teams/\".concat(teamID), {\n method: \"PATCH\",\n body: JSON.stringify(data)\n }));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n Promise.all(reqs).then(function (responses) {\n window.location.reload();\n });\n }\n });\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\"#teams-delete-button\").click(deleteSelectedTeams);\n (0, _jquery.default)(\"#teams-edit-button\").click(bulkEditTeams);\n});\n\n//# sourceURL=webpack:///./CTFd/themes/admin/assets/js/pages/teams.js?"); eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/admin/assets/js/pages/main.js\");\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! core/CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _ezq = __webpack_require__(/*! core/ezq */ \"./CTFd/themes/core/assets/js/ezq.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction deleteSelectedTeams(_event) {\n var teamIDs = (0, _jquery.default)(\"input[data-team-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"team-id\");\n });\n var target = teamIDs.length === 1 ? \"team\" : \"teams\";\n (0, _ezq.ezQuery)({\n title: \"Delete Teams\",\n body: \"Are you sure you want to delete \".concat(teamIDs.length, \" \").concat(target, \"?\"),\n success: function success() {\n var reqs = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = teamIDs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var teamID = _step.value;\n reqs.push(_CTFd.default.fetch(\"/api/v1/teams/\".concat(teamID), {\n method: \"DELETE\"\n }));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n Promise.all(reqs).then(function (_responses) {\n window.location.reload();\n });\n }\n });\n}\n\nfunction bulkEditTeams(_event) {\n var teamIDs = (0, _jquery.default)(\"input[data-team-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"team-id\");\n });\n (0, _ezq.ezAlert)({\n title: \"Edit Teams\",\n body: (0, _jquery.default)(\"\\n <form id=\\\"teams-bulk-edit\\\">\\n <div class=\\\"form-group\\\">\\n <label>Banned</label>\\n <select name=\\\"banned\\\" data-initial=\\\"\\\">\\n <option value=\\\"\\\">--</option>\\n <option value=\\\"true\\\">True</option>\\n <option value=\\\"false\\\">False</option>\\n </select>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label>Hidden</label>\\n <select name=\\\"hidden\\\" data-initial=\\\"\\\">\\n <option value=\\\"\\\">--</option>\\n <option value=\\\"true\\\">True</option>\\n <option value=\\\"false\\\">False</option>\\n </select>\\n </div>\\n </form>\\n \"),\n button: \"Submit\",\n success: function success() {\n var data = (0, _jquery.default)(\"#teams-bulk-edit\").serializeJSON(true);\n var reqs = [];\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = teamIDs[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var teamID = _step2.value;\n reqs.push(_CTFd.default.fetch(\"/api/v1/teams/\".concat(teamID), {\n method: \"PATCH\",\n body: JSON.stringify(data)\n }));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n Promise.all(reqs).then(function (_responses) {\n window.location.reload();\n });\n }\n });\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\"#teams-delete-button\").click(deleteSelectedTeams);\n (0, _jquery.default)(\"#teams-edit-button\").click(bulkEditTeams);\n});\n\n//# sourceURL=webpack:///./CTFd/themes/admin/assets/js/pages/teams.js?");
/***/ }) /***/ })

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -162,7 +162,7 @@
/***/ (function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
; ;
eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/admin/assets/js/pages/main.js\");\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! core/CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _ezq = __webpack_require__(/*! core/ezq */ \"./CTFd/themes/core/assets/js/ezq.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction deleteSelectedUsers(event) {\n var userIDs = (0, _jquery.default)(\"input[data-user-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"user-id\");\n });\n var target = userIDs.length === 1 ? \"user\" : \"users\";\n (0, _ezq.ezQuery)({\n title: \"Delete Users\",\n body: \"Are you sure you want to delete \".concat(userIDs.length, \" \").concat(target, \"?\"),\n success: function success() {\n var reqs = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = userIDs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var userID = _step.value;\n reqs.push(_CTFd.default.fetch(\"/api/v1/users/\".concat(userID), {\n method: \"DELETE\"\n }));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n Promise.all(reqs).then(function (responses) {\n window.location.reload();\n });\n }\n });\n}\n\nfunction bulkEditUsers(event) {\n var userIDs = (0, _jquery.default)(\"input[data-user-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"user-id\");\n });\n (0, _ezq.ezAlert)({\n title: \"Edit Users\",\n body: (0, _jquery.default)(\"\\n <form id=\\\"users-bulk-edit\\\">\\n <div class=\\\"form-group\\\">\\n <label>Verified</label>\\n <select name=\\\"verified\\\" data-initial=\\\"\\\">\\n <option value=\\\"\\\">--</option>\\n <option value=\\\"true\\\">True</option>\\n <option value=\\\"false\\\">False</option>\\n </select>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label>Banned</label>\\n <select name=\\\"banned\\\" data-initial=\\\"\\\">\\n <option value=\\\"\\\">--</option>\\n <option value=\\\"true\\\">True</option>\\n <option value=\\\"false\\\">False</option>\\n </select>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label>Hidden</label>\\n <select name=\\\"hidden\\\" data-initial=\\\"\\\">\\n <option value=\\\"\\\">--</option>\\n <option value=\\\"true\\\">True</option>\\n <option value=\\\"false\\\">False</option>\\n </select>\\n </div>\\n </form>\\n \"),\n button: \"Submit\",\n success: function success() {\n var data = (0, _jquery.default)(\"#users-bulk-edit\").serializeJSON(true);\n var reqs = [];\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = userIDs[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var userID = _step2.value;\n reqs.push(_CTFd.default.fetch(\"/api/v1/users/\".concat(userID), {\n method: \"PATCH\",\n body: JSON.stringify(data)\n }));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n Promise.all(reqs).then(function (responses) {\n window.location.reload();\n });\n }\n });\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\"#users-delete-button\").click(deleteSelectedUsers);\n (0, _jquery.default)(\"#users-edit-button\").click(bulkEditUsers);\n});\n\n//# sourceURL=webpack:///./CTFd/themes/admin/assets/js/pages/users.js?"); eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/admin/assets/js/pages/main.js\");\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! core/CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _ezq = __webpack_require__(/*! core/ezq */ \"./CTFd/themes/core/assets/js/ezq.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction deleteSelectedUsers(_event) {\n var userIDs = (0, _jquery.default)(\"input[data-user-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"user-id\");\n });\n var target = userIDs.length === 1 ? \"user\" : \"users\";\n (0, _ezq.ezQuery)({\n title: \"Delete Users\",\n body: \"Are you sure you want to delete \".concat(userIDs.length, \" \").concat(target, \"?\"),\n success: function success() {\n var reqs = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = userIDs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var userID = _step.value;\n reqs.push(_CTFd.default.fetch(\"/api/v1/users/\".concat(userID), {\n method: \"DELETE\"\n }));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n Promise.all(reqs).then(function (_responses) {\n window.location.reload();\n });\n }\n });\n}\n\nfunction bulkEditUsers(_event) {\n var userIDs = (0, _jquery.default)(\"input[data-user-id]:checked\").map(function () {\n return (0, _jquery.default)(this).data(\"user-id\");\n });\n (0, _ezq.ezAlert)({\n title: \"Edit Users\",\n body: (0, _jquery.default)(\"\\n <form id=\\\"users-bulk-edit\\\">\\n <div class=\\\"form-group\\\">\\n <label>Verified</label>\\n <select name=\\\"verified\\\" data-initial=\\\"\\\">\\n <option value=\\\"\\\">--</option>\\n <option value=\\\"true\\\">True</option>\\n <option value=\\\"false\\\">False</option>\\n </select>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label>Banned</label>\\n <select name=\\\"banned\\\" data-initial=\\\"\\\">\\n <option value=\\\"\\\">--</option>\\n <option value=\\\"true\\\">True</option>\\n <option value=\\\"false\\\">False</option>\\n </select>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label>Hidden</label>\\n <select name=\\\"hidden\\\" data-initial=\\\"\\\">\\n <option value=\\\"\\\">--</option>\\n <option value=\\\"true\\\">True</option>\\n <option value=\\\"false\\\">False</option>\\n </select>\\n </div>\\n </form>\\n \"),\n button: \"Submit\",\n success: function success() {\n var data = (0, _jquery.default)(\"#users-bulk-edit\").serializeJSON(true);\n var reqs = [];\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = userIDs[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var userID = _step2.value;\n reqs.push(_CTFd.default.fetch(\"/api/v1/users/\".concat(userID), {\n method: \"PATCH\",\n body: JSON.stringify(data)\n }));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n Promise.all(reqs).then(function (_responses) {\n window.location.reload();\n });\n }\n });\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\"#users-delete-button\").click(deleteSelectedUsers);\n (0, _jquery.default)(\"#users-edit-button\").click(bulkEditUsers);\n});\n\n//# sourceURL=webpack:///./CTFd/themes/admin/assets/js/pages/users.js?");
/***/ }) /***/ })

View File

@@ -3610,4 +3610,5 @@ let API = (function() {
return API; return API;
})(); })();
// eslint-disable-next-line no-undef
exports.API = API; exports.API = API;

View File

@@ -42,7 +42,7 @@ export default root => {
function render(data) { function render(data) {
switch (data.type) { switch (data.type) {
case "toast": case "toast": {
inc_notification_counter(); inc_notification_counter();
// Trim toast body to length // Trim toast body to length
let length = 50; let length = 50;
@@ -72,7 +72,8 @@ export default root => {
} }
}); });
break; break;
case "alert": }
case "alert": {
inc_notification_counter(); inc_notification_counter();
ezAlert({ ezAlert({
title: data.title, title: data.title,
@@ -83,13 +84,16 @@ export default root => {
} }
}); });
break; break;
case "background": }
case "background": {
inc_notification_counter(); inc_notification_counter();
break; break;
default: }
default: {
inc_notification_counter(); inc_notification_counter();
break; break;
} }
}
if (data.sound) { if (data.sound) {
howl.play(); howl.play();

View File

@@ -22,11 +22,11 @@ const graph_configs = {
orientation: "h" orientation: "h"
} }
}, },
fn: (type, id, name, account_id) => fn: (type, id, name, _account_id) =>
`CTFd_score_${type}_${name}_${id}_${new Date() `CTFd_score_${type}_${name}_${id}_${new Date()
.toISOString() .toISOString()
.slice(0, 19)}`, .slice(0, 19)}`,
format: (type, id, name, account_id, responses) => { format: (type, id, name, _account_id, responses) => {
const times = []; const times = [];
const scores = []; const scores = [];
const solves = responses[0].data; const solves = responses[0].data;
@@ -74,7 +74,7 @@ const graph_configs = {
}, },
height: "400px" height: "400px"
}, },
fn: (type, id, name, account_id) => fn: (type, id, name, _account_id) =>
`CTFd_submissions_${type}_${name}_${id}_${new Date() `CTFd_submissions_${type}_${name}_${id}_${new Date()
.toISOString() .toISOString()
.slice(0, 19)}`, .slice(0, 19)}`,
@@ -122,7 +122,7 @@ const graph_configs = {
}, },
height: "400px" height: "400px"
}, },
fn: (type, id, name, account_id) => fn: (type, id, name, _account_id) =>
`CTFd_submissions_${type}_${name}_${id}_${new Date() `CTFd_submissions_${type}_${name}_${id}_${new Date()
.toISOString() .toISOString()
.slice(0, 19)}`, .slice(0, 19)}`,
@@ -164,7 +164,6 @@ export function createGraph(
const $elem = $(target); const $elem = $(target);
$elem.empty(); $elem.empty();
if ($elem[0] === undefined) { if ($elem[0] === undefined) {
console.log("Couldn't find graph target: " + target);
return; return;
} }
$elem[0].fn = cfg.fn(type, id, name, account_id); $elem[0].fn = cfg.fn(type, id, name, account_id);

View File

@@ -76,7 +76,7 @@ const displayChal = chal => {
} }
} }
$(".challenge-solves").click(function(event) { $(".challenge-solves").click(function(_event) {
getSolves($("#challenge-id").val()); getSolves($("#challenge-id").val());
}); });
$(".nav-tabs a").click(function(event) { $(".nav-tabs a").click(function(event) {
@@ -85,7 +85,7 @@ const displayChal = chal => {
}); });
// Handle modal toggling // Handle modal toggling
$("#challenge-window").on("hide.bs.modal", function(event) { $("#challenge-window").on("hide.bs.modal", function(_event) {
$("#challenge-input").removeClass("wrong"); $("#challenge-input").removeClass("wrong");
$("#challenge-input").removeClass("correct"); $("#challenge-input").removeClass("correct");
$("#incorrect-key").slideUp(); $("#incorrect-key").slideUp();
@@ -94,7 +94,7 @@ const displayChal = chal => {
$("#too-fast").slideUp(); $("#too-fast").slideUp();
}); });
$(".load-hint").on("click", function(event) { $(".load-hint").on("click", function(_event) {
loadHint($(this).data("hint-id")); loadHint($(this).data("hint-id"));
}); });
@@ -329,7 +329,7 @@ function loadChals() {
.append(chalwrap); .append(chalwrap);
} }
$(".challenge-button").click(function(event) { $(".challenge-button").click(function(_event) {
loadChal(this.value); loadChal(this.value);
getSolves(this.value); getSolves(this.value);
}); });
@@ -360,16 +360,16 @@ $(() => {
$(this).tab("show"); $(this).tab("show");
}); });
$("#challenge-window").on("hidden.bs.modal", function(event) { $("#challenge-window").on("hidden.bs.modal", function(_event) {
$(".nav-tabs a:first").tab("show"); $(".nav-tabs a:first").tab("show");
history.replaceState("", window.document.title, window.location.pathname); history.replaceState("", window.document.title, window.location.pathname);
}); });
$(".challenge-solves").click(function(event) { $(".challenge-solves").click(function(_event) {
getSolves($("#challenge-id").val()); getSolves($("#challenge-id").val());
}); });
$("#challenge-window").on("hide.bs.modal", function(event) { $("#challenge-window").on("hide.bs.modal", function(_event) {
$("#challenge-input").removeClass("wrong"); $("#challenge-input").removeClass("wrong");
$("#challenge-input").removeClass("correct"); $("#challenge-input").removeClass("correct");
$("#incorrect-key").slideUp(); $("#incorrect-key").slideUp();

View File

@@ -1,6 +1,5 @@
import "./main"; import "./main";
import $ from "jquery"; import $ from "jquery";
import CTFd from "../CTFd";
import { clear_notification_counter } from "../utils"; import { clear_notification_counter } from "../utils";
$(() => { $(() => {

View File

@@ -111,7 +111,7 @@ $(() => {
$("#user-profile-form").submit(profileUpdate); $("#user-profile-form").submit(profileUpdate);
$("#user-token-form").submit(tokenGenerate); $("#user-token-form").submit(tokenGenerate);
$(".delete-token").click(deleteToken); $(".delete-token").click(deleteToken);
$(".nav-pills a").click(function(event) { $(".nav-pills a").click(function(_event) {
window.location.hash = this.hash; window.location.hash = this.hash;
}); });

View File

@@ -1,7 +1,6 @@
import "./main"; import "./main";
import $ from "jquery"; import $ from "jquery";
import Moment from "moment-timezone"; import Moment from "moment-timezone";
import moment from "moment-timezone";
import CTFd from "../CTFd"; import CTFd from "../CTFd";
function switchTab(event) { function switchTab(event) {
@@ -13,7 +12,7 @@ function switchTab(event) {
.closest("[role=tabpanel]") .closest("[role=tabpanel]")
.find("input,textarea") .find("input,textarea")
.each(function(i, e) { .each(function(i, e) {
$e = $(e); let $e = $(e);
let status = e.checkValidity(); let status = e.checkValidity();
if (status === false) { if (status === false) {
$e.removeClass("input-filled-valid"); $e.removeClass("input-filled-valid");
@@ -33,7 +32,7 @@ function switchTab(event) {
function processDateTime(datetime) { function processDateTime(datetime) {
let date_picker = $(`#${datetime}-date`); let date_picker = $(`#${datetime}-date`);
let time_picker = $(`#${datetime}-time`); let time_picker = $(`#${datetime}-time`);
return function(event) { return function(_event) {
let unix_time = Moment( let unix_time = Moment(
`${date_picker.val()} ${time_picker.val()}`, `${date_picker.val()} ${time_picker.val()}`,
"YYYY-MM-DD HH:mm" "YYYY-MM-DD HH:mm"
@@ -44,7 +43,7 @@ function processDateTime(datetime) {
}; };
} }
function mlcSetup(event) { function mlcSetup(_event) {
let params = { let params = {
name: $("#ctf_name").val(), name: $("#ctf_name").val(),
type: "jeopardy", type: "jeopardy",
@@ -57,7 +56,7 @@ function mlcSetup(event) {
start: $("#start-preview").val(), start: $("#start-preview").val(),
end: $("#end-preview").val(), end: $("#end-preview").val(),
platform: "CTFd", platform: "CTFd",
state: STATE state: window.STATE
}; };
const ret = []; const ret = [];
@@ -88,7 +87,7 @@ $(() => {
$("#start-date,#start-time").change(processDateTime("start")); $("#start-date,#start-time").change(processDateTime("start"));
$("#end-date,#end-time").change(processDateTime("end")); $("#end-date,#end-time").change(processDateTime("end"));
$("#config-color-picker").on("input", function(e) { $("#config-color-picker").on("input", function(_e) {
$("#config-color-input").val($(this).val()); $("#config-color-input").val($(this).val());
}); });

View File

@@ -3,6 +3,7 @@ import "../../utils";
import CTFd from "../../CTFd"; import CTFd from "../../CTFd";
import "bootstrap/js/dist/modal"; import "bootstrap/js/dist/modal";
import $ from "jquery"; import $ from "jquery";
import { ezBadge } from "../../ezq";
$(() => { $(() => {
if (window.team_captain) { if (window.team_captain) {
@@ -34,6 +35,12 @@ $(() => {
if (response.status === 400) { if (response.status === 400) {
response.json().then(function(object) { response.json().then(function(object) {
if (!object.success) { if (!object.success) {
const error_template =
'<div class="alert alert-danger alert-dismissable" role="alert">\n' +
' <span class="sr-only">Error:</span>\n' +
" {0}\n" +
' <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>\n' +
"</div>";
Object.keys(object.errors).map(function(error) { Object.keys(object.errors).map(function(error) {
var i = form.find("input[name={0}]".format(error)); var i = form.find("input[name={0}]".format(error));
var input = $(i); var input = $(i);
@@ -76,9 +83,9 @@ $(() => {
window.location.reload(); window.location.reload();
} else { } else {
$("#team-captain-form > #results").empty(); $("#team-captain-form > #results").empty();
Object.keys(response.errors).forEach(function(key, index) { Object.keys(response.errors).forEach(function(key, _index) {
$("#team-captain-form > #results").append( $("#team-captain-form > #results").append(
ezbadge({ ezBadge({
type: "error", type: "error",
body: response.errors[key] body: response.errors[key]
}) })

View File

@@ -108,7 +108,9 @@ WindowController.prototype.handleEvent = function(event) {
if (data.id !== this.id) { if (data.id !== this.id) {
this[data.type](data); this[data.type](data);
} }
} catch (error) {} } catch (error) {
// Ignore error
}
} }
}; };
@@ -134,7 +136,7 @@ WindowController.prototype.bye = function(event) {
this.check(); this.check();
}; };
WindowController.prototype.check = function(event) { WindowController.prototype.check = function(_event) {
var now = +new Date(), var now = +new Date(),
takeMaster = true, takeMaster = true,
id; id;
@@ -164,6 +166,7 @@ WindowController.prototype.broadcast = function(type, data) {
try { try {
localStorage.setItem("broadcast", JSON.stringify(event)); localStorage.setItem("broadcast", JSON.stringify(event));
} catch (error) { } catch (error) {
// eslint-disable-next-line no-console
console.log(error); console.log(error);
} }
}; };

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -162,7 +162,7 @@
/***/ (function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
; ;
eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/core/assets/js/pages/main.js\");\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! ../CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./CTFd/themes/core/assets/js/utils.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _jquery.default)(function () {\n (0, _utils.clear_notification_counter)();\n});\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/pages/notifications.js?"); eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/core/assets/js/pages/main.js\");\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./CTFd/themes/core/assets/js/utils.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _jquery.default)(function () {\n (0, _utils.clear_notification_counter)();\n});\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/pages/notifications.js?");
/***/ }) /***/ })

File diff suppressed because one or more lines are too long

View File

@@ -162,7 +162,7 @@
/***/ (function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
; ;
eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/core/assets/js/pages/main.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./CTFd/themes/core/assets/js/utils.js\");\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! ../CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nvar _ezq = __webpack_require__(/*! ../ezq */ \"./CTFd/themes/core/assets/js/ezq.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar error_template = '<div class=\"alert alert-danger alert-dismissable\" role=\"alert\">\\n' + ' <span class=\"sr-only\">Error:</span>\\n' + \" {0}\\n\" + ' <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\\n' + \"</div>\";\nvar success_template = '<div class=\"alert alert-success alert-dismissable submit-row\" role=\"alert\">\\n' + \" <strong>Success!</strong>\\n\" + \" Your profile has been updated\\n\" + ' <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\\n' + \"</div>\";\n\nfunction profileUpdate(event) {\n event.preventDefault();\n (0, _jquery.default)(\"#results\").empty();\n var $form = (0, _jquery.default)(this);\n var params = $form.serializeJSON(true);\n\n _CTFd.default.api.patch_user_private({}, params).then(function (response) {\n if (response.success) {\n (0, _jquery.default)(\"#results\").html(success_template);\n } else if (\"errors\" in response) {\n Object.keys(response.errors).map(function (error) {\n var i = $form.find(\"input[name={0}]\".format(error));\n var input = (0, _jquery.default)(i);\n input.addClass(\"input-filled-invalid\");\n input.removeClass(\"input-filled-valid\");\n var error_msg = response.errors[error];\n (0, _jquery.default)(\"#results\").append(error_template.format(error_msg));\n });\n }\n });\n}\n\nfunction tokenGenerate(event) {\n event.preventDefault();\n var $form = (0, _jquery.default)(this);\n var params = $form.serializeJSON(true);\n\n _CTFd.default.fetch(\"/api/v1/tokens\", {\n method: \"POST\",\n body: JSON.stringify(params)\n }).then(function (response) {\n return response.json();\n }).then(function (response) {\n if (response.success) {\n var body = (0, _jquery.default)(\"\\n <p>Please copy your API Key, it won't be shown again!</p>\\n <div class=\\\"input-group mb-3\\\">\\n <input type=\\\"text\\\" id=\\\"user-token-result\\\" class=\\\"form-control\\\" value=\\\"\".concat(response.data.value, \"\\\" readonly>\\n <div class=\\\"input-group-append\\\">\\n <button class=\\\"btn btn-outline-secondary\\\" type=\\\"button\\\">\\n <i class=\\\"fas fa-clipboard\\\"></i>\\n </button>\\n </div>\\n </div>\\n \"));\n body.find(\"button\").click(function (event) {\n (0, _utils.copyToClipboard)(event, \"#user-token-result\");\n });\n (0, _ezq.ezAlert)({\n title: \"API Key Generated\",\n body: body,\n button: \"Got it!\",\n large: true\n });\n }\n });\n}\n\nfunction deleteToken(event) {\n event.preventDefault();\n var $elem = (0, _jquery.default)(this);\n var id = $elem.data(\"token-id\");\n (0, _ezq.ezQuery)({\n title: \"Delete Token\",\n body: \"Are you sure you want to delete this token?\",\n success: function success() {\n _CTFd.default.fetch(\"/api/v1/tokens/\" + id, {\n method: \"DELETE\"\n }).then(function (response) {\n return response.json();\n }).then(function (response) {\n if (response.success) {\n $elem.parent().parent().remove();\n }\n });\n }\n });\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\"#user-profile-form\").submit(profileUpdate);\n (0, _jquery.default)(\"#user-token-form\").submit(tokenGenerate);\n (0, _jquery.default)(\".delete-token\").click(deleteToken);\n (0, _jquery.default)(\".nav-pills a\").click(function (event) {\n window.location.hash = this.hash;\n }); // Load location hash\n\n var hash = window.location.hash;\n\n if (hash) {\n hash = hash.replace(\"<>[]'\\\"\", \"\");\n (0, _jquery.default)('.nav-pills a[href=\"' + hash + '\"]').tab(\"show\");\n }\n});\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/pages/settings.js?"); eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/core/assets/js/pages/main.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./CTFd/themes/core/assets/js/utils.js\");\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! ../CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nvar _ezq = __webpack_require__(/*! ../ezq */ \"./CTFd/themes/core/assets/js/ezq.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar error_template = '<div class=\"alert alert-danger alert-dismissable\" role=\"alert\">\\n' + ' <span class=\"sr-only\">Error:</span>\\n' + \" {0}\\n\" + ' <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\\n' + \"</div>\";\nvar success_template = '<div class=\"alert alert-success alert-dismissable submit-row\" role=\"alert\">\\n' + \" <strong>Success!</strong>\\n\" + \" Your profile has been updated\\n\" + ' <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\\n' + \"</div>\";\n\nfunction profileUpdate(event) {\n event.preventDefault();\n (0, _jquery.default)(\"#results\").empty();\n var $form = (0, _jquery.default)(this);\n var params = $form.serializeJSON(true);\n\n _CTFd.default.api.patch_user_private({}, params).then(function (response) {\n if (response.success) {\n (0, _jquery.default)(\"#results\").html(success_template);\n } else if (\"errors\" in response) {\n Object.keys(response.errors).map(function (error) {\n var i = $form.find(\"input[name={0}]\".format(error));\n var input = (0, _jquery.default)(i);\n input.addClass(\"input-filled-invalid\");\n input.removeClass(\"input-filled-valid\");\n var error_msg = response.errors[error];\n (0, _jquery.default)(\"#results\").append(error_template.format(error_msg));\n });\n }\n });\n}\n\nfunction tokenGenerate(event) {\n event.preventDefault();\n var $form = (0, _jquery.default)(this);\n var params = $form.serializeJSON(true);\n\n _CTFd.default.fetch(\"/api/v1/tokens\", {\n method: \"POST\",\n body: JSON.stringify(params)\n }).then(function (response) {\n return response.json();\n }).then(function (response) {\n if (response.success) {\n var body = (0, _jquery.default)(\"\\n <p>Please copy your API Key, it won't be shown again!</p>\\n <div class=\\\"input-group mb-3\\\">\\n <input type=\\\"text\\\" id=\\\"user-token-result\\\" class=\\\"form-control\\\" value=\\\"\".concat(response.data.value, \"\\\" readonly>\\n <div class=\\\"input-group-append\\\">\\n <button class=\\\"btn btn-outline-secondary\\\" type=\\\"button\\\">\\n <i class=\\\"fas fa-clipboard\\\"></i>\\n </button>\\n </div>\\n </div>\\n \"));\n body.find(\"button\").click(function (event) {\n (0, _utils.copyToClipboard)(event, \"#user-token-result\");\n });\n (0, _ezq.ezAlert)({\n title: \"API Key Generated\",\n body: body,\n button: \"Got it!\",\n large: true\n });\n }\n });\n}\n\nfunction deleteToken(event) {\n event.preventDefault();\n var $elem = (0, _jquery.default)(this);\n var id = $elem.data(\"token-id\");\n (0, _ezq.ezQuery)({\n title: \"Delete Token\",\n body: \"Are you sure you want to delete this token?\",\n success: function success() {\n _CTFd.default.fetch(\"/api/v1/tokens/\" + id, {\n method: \"DELETE\"\n }).then(function (response) {\n return response.json();\n }).then(function (response) {\n if (response.success) {\n $elem.parent().parent().remove();\n }\n });\n }\n });\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\"#user-profile-form\").submit(profileUpdate);\n (0, _jquery.default)(\"#user-token-form\").submit(tokenGenerate);\n (0, _jquery.default)(\".delete-token\").click(deleteToken);\n (0, _jquery.default)(\".nav-pills a\").click(function (_event) {\n window.location.hash = this.hash;\n }); // Load location hash\n\n var hash = window.location.hash;\n\n if (hash) {\n hash = hash.replace(\"<>[]'\\\"\", \"\");\n (0, _jquery.default)('.nav-pills a[href=\"' + hash + '\"]').tab(\"show\");\n }\n});\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/pages/settings.js?");
/***/ }) /***/ })

View File

@@ -162,7 +162,7 @@
/***/ (function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
; ;
eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/core/assets/js/pages/main.js\");\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _momentTimezone = _interopRequireDefault(__webpack_require__(/*! moment-timezone */ \"./node_modules/moment-timezone/index.js\"));\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! ../CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction switchTab(event) {\n event.preventDefault(); // Handle tab validation\n\n var valid_tab = true;\n (0, _jquery.default)(event.target).closest(\"[role=tabpanel]\").find(\"input,textarea\").each(function (i, e) {\n $e = (0, _jquery.default)(e);\n var status = e.checkValidity();\n\n if (status === false) {\n $e.removeClass(\"input-filled-valid\");\n $e.addClass(\"input-filled-invalid\");\n valid_tab = false;\n }\n });\n\n if (valid_tab == false) {\n return;\n }\n\n var href = (0, _jquery.default)(event.target).data(\"href\");\n (0, _jquery.default)(\".nav a[href=\\\"\".concat(href, \"\\\"]\")).tab(\"show\");\n}\n\nfunction processDateTime(datetime) {\n var date_picker = (0, _jquery.default)(\"#\".concat(datetime, \"-date\"));\n var time_picker = (0, _jquery.default)(\"#\".concat(datetime, \"-time\"));\n return function (event) {\n var unix_time = (0, _momentTimezone.default)(\"\".concat(date_picker.val(), \" \").concat(time_picker.val()), \"YYYY-MM-DD HH:mm\").utc().format(\"X\");\n (0, _jquery.default)(\"#\".concat(datetime, \"-preview\")).val(unix_time);\n };\n}\n\nfunction mlcSetup(event) {\n var params = {\n name: (0, _jquery.default)(\"#ctf_name\").val(),\n type: \"jeopardy\",\n description: (0, _jquery.default)(\"#ctf_description\").val(),\n user_mode: (0, _jquery.default)(\"#user_mode\").val(),\n event_url: window.location.origin + _CTFd.default.config.urlRoot,\n redirect_url: window.location.origin + _CTFd.default.config.urlRoot + \"/redirect\",\n integration_setup_url: window.location.origin + _CTFd.default.config.urlRoot + \"/setup/integrations\",\n start: (0, _jquery.default)(\"#start-preview\").val(),\n end: (0, _jquery.default)(\"#end-preview\").val(),\n platform: \"CTFd\",\n state: STATE\n };\n var ret = [];\n\n for (var p in params) {\n ret.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(params[p]));\n }\n\n window.open(\"https://www.majorleaguecyber.org/events/new?\" + ret.join(\"&\"), \"_blank\");\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\".tab-next\").click(switchTab);\n (0, _jquery.default)(\"input\").on(\"keypress\", function (e) {\n // Hook Enter button\n if (e.keyCode == 13) {\n e.preventDefault();\n (0, _jquery.default)(e.target).closest(\".tab-pane\").find(\"button[data-href]\").click();\n }\n });\n (0, _jquery.default)(\"#integration-mlc\").click(mlcSetup);\n (0, _jquery.default)(\"#start-date,#start-time\").change(processDateTime(\"start\"));\n (0, _jquery.default)(\"#end-date,#end-time\").change(processDateTime(\"end\"));\n (0, _jquery.default)(\"#config-color-picker\").on(\"input\", function (e) {\n (0, _jquery.default)(\"#config-color-input\").val((0, _jquery.default)(this).val());\n });\n (0, _jquery.default)(\"#config-color-reset\").click(function () {\n (0, _jquery.default)(\"#config-color-input\").val(\"\");\n (0, _jquery.default)(\"#config-color-picker\").val(\"\");\n });\n window.addEventListener(\"storage\", function (event) {\n if (event.key == \"integrations\" && event.newValue) {\n var integration = JSON.parse(event.newValue);\n\n if (integration[\"name\"] == \"mlc\") {\n (0, _jquery.default)(\"#integration-mlc\").text(\"Already Configured\").attr(\"disabled\", true);\n window.focus();\n localStorage.removeItem(\"integrations\");\n }\n }\n });\n (0, _jquery.default)(\"#setup-form\").submit(function (e) {\n if ((0, _jquery.default)(\"#newsletter-checkbox\").prop(\"checked\")) {\n var email = (0, _jquery.default)(e.target).find(\"input[name=email]\").val();\n\n _jquery.default.ajax({\n type: \"POST\",\n url: \"https://ctfd.us15.list-manage.com/subscribe/post-json?u=6c7fa6feeced52775aec9d015&id=dd1484208e&c=?\",\n data: {\n EMAIL: email,\n subscribe: \"Subscribe\",\n b_6c7fa6feeced52775aec9d015_dd1484208e: \"\"\n },\n dataType: \"jsonp\",\n contentType: \"application/json; charset=utf-8\"\n });\n }\n });\n});\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/pages/setup.js?"); eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/core/assets/js/pages/main.js\");\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _momentTimezone = _interopRequireDefault(__webpack_require__(/*! moment-timezone */ \"./node_modules/moment-timezone/index.js\"));\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! ../CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction switchTab(event) {\n event.preventDefault(); // Handle tab validation\n\n var valid_tab = true;\n (0, _jquery.default)(event.target).closest(\"[role=tabpanel]\").find(\"input,textarea\").each(function (i, e) {\n var $e = (0, _jquery.default)(e);\n var status = e.checkValidity();\n\n if (status === false) {\n $e.removeClass(\"input-filled-valid\");\n $e.addClass(\"input-filled-invalid\");\n valid_tab = false;\n }\n });\n\n if (valid_tab == false) {\n return;\n }\n\n var href = (0, _jquery.default)(event.target).data(\"href\");\n (0, _jquery.default)(\".nav a[href=\\\"\".concat(href, \"\\\"]\")).tab(\"show\");\n}\n\nfunction processDateTime(datetime) {\n var date_picker = (0, _jquery.default)(\"#\".concat(datetime, \"-date\"));\n var time_picker = (0, _jquery.default)(\"#\".concat(datetime, \"-time\"));\n return function (_event) {\n var unix_time = (0, _momentTimezone.default)(\"\".concat(date_picker.val(), \" \").concat(time_picker.val()), \"YYYY-MM-DD HH:mm\").utc().format(\"X\");\n (0, _jquery.default)(\"#\".concat(datetime, \"-preview\")).val(unix_time);\n };\n}\n\nfunction mlcSetup(_event) {\n var params = {\n name: (0, _jquery.default)(\"#ctf_name\").val(),\n type: \"jeopardy\",\n description: (0, _jquery.default)(\"#ctf_description\").val(),\n user_mode: (0, _jquery.default)(\"#user_mode\").val(),\n event_url: window.location.origin + _CTFd.default.config.urlRoot,\n redirect_url: window.location.origin + _CTFd.default.config.urlRoot + \"/redirect\",\n integration_setup_url: window.location.origin + _CTFd.default.config.urlRoot + \"/setup/integrations\",\n start: (0, _jquery.default)(\"#start-preview\").val(),\n end: (0, _jquery.default)(\"#end-preview\").val(),\n platform: \"CTFd\",\n state: window.STATE\n };\n var ret = [];\n\n for (var p in params) {\n ret.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(params[p]));\n }\n\n window.open(\"https://www.majorleaguecyber.org/events/new?\" + ret.join(\"&\"), \"_blank\");\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\".tab-next\").click(switchTab);\n (0, _jquery.default)(\"input\").on(\"keypress\", function (e) {\n // Hook Enter button\n if (e.keyCode == 13) {\n e.preventDefault();\n (0, _jquery.default)(e.target).closest(\".tab-pane\").find(\"button[data-href]\").click();\n }\n });\n (0, _jquery.default)(\"#integration-mlc\").click(mlcSetup);\n (0, _jquery.default)(\"#start-date,#start-time\").change(processDateTime(\"start\"));\n (0, _jquery.default)(\"#end-date,#end-time\").change(processDateTime(\"end\"));\n (0, _jquery.default)(\"#config-color-picker\").on(\"input\", function (_e) {\n (0, _jquery.default)(\"#config-color-input\").val((0, _jquery.default)(this).val());\n });\n (0, _jquery.default)(\"#config-color-reset\").click(function () {\n (0, _jquery.default)(\"#config-color-input\").val(\"\");\n (0, _jquery.default)(\"#config-color-picker\").val(\"\");\n });\n window.addEventListener(\"storage\", function (event) {\n if (event.key == \"integrations\" && event.newValue) {\n var integration = JSON.parse(event.newValue);\n\n if (integration[\"name\"] == \"mlc\") {\n (0, _jquery.default)(\"#integration-mlc\").text(\"Already Configured\").attr(\"disabled\", true);\n window.focus();\n localStorage.removeItem(\"integrations\");\n }\n }\n });\n (0, _jquery.default)(\"#setup-form\").submit(function (e) {\n if ((0, _jquery.default)(\"#newsletter-checkbox\").prop(\"checked\")) {\n var email = (0, _jquery.default)(e.target).find(\"input[name=email]\").val();\n\n _jquery.default.ajax({\n type: \"POST\",\n url: \"https://ctfd.us15.list-manage.com/subscribe/post-json?u=6c7fa6feeced52775aec9d015&id=dd1484208e&c=?\",\n data: {\n EMAIL: email,\n subscribe: \"Subscribe\",\n b_6c7fa6feeced52775aec9d015_dd1484208e: \"\"\n },\n dataType: \"jsonp\",\n contentType: \"application/json; charset=utf-8\"\n });\n }\n });\n});\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/pages/setup.js?");
/***/ }) /***/ })

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -162,7 +162,7 @@
/***/ (function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
; ;
eval("\n\n__webpack_require__(/*! ../main */ \"./CTFd/themes/core/assets/js/pages/main.js\");\n\n__webpack_require__(/*! ../../utils */ \"./CTFd/themes/core/assets/js/utils.js\");\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! ../../CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\n__webpack_require__(/*! bootstrap/js/dist/modal */ \"./node_modules/bootstrap/js/dist/modal.js\");\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _jquery.default)(function () {\n if (window.team_captain) {\n (0, _jquery.default)(\".edit-team\").click(function () {\n (0, _jquery.default)(\"#team-edit-modal\").modal();\n });\n (0, _jquery.default)(\".edit-captain\").click(function () {\n (0, _jquery.default)(\"#team-captain-modal\").modal();\n });\n }\n\n var form = (0, _jquery.default)(\"#team-info-form\");\n form.submit(function (e) {\n e.preventDefault();\n (0, _jquery.default)(\"#results\").empty();\n var params = (0, _jquery.default)(this).serializeJSON();\n var method = \"PATCH\";\n var url = \"/api/v1/teams/me\";\n\n _CTFd.default.fetch(url, {\n method: method,\n credentials: \"same-origin\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(params)\n }).then(function (response) {\n if (response.status === 400) {\n response.json().then(function (object) {\n if (!object.success) {\n Object.keys(object.errors).map(function (error) {\n var i = form.find(\"input[name={0}]\".format(error));\n var input = (0, _jquery.default)(i);\n input.addClass(\"input-filled-invalid\");\n input.removeClass(\"input-filled-valid\");\n var error_msg = object.errors[error];\n var alert = error_template.format(error_msg);\n (0, _jquery.default)(\"#results\").append(alert);\n });\n }\n });\n } else if (response.status === 200) {\n response.json().then(function (object) {\n if (object.success) {\n window.location.reload();\n }\n });\n }\n });\n });\n (0, _jquery.default)(\"#team-captain-form\").submit(function (e) {\n e.preventDefault();\n var params = (0, _jquery.default)(\"#team-captain-form\").serializeJSON(true);\n\n _CTFd.default.fetch(\"/api/v1/teams/me\", {\n method: \"PATCH\",\n credentials: \"same-origin\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(params)\n }).then(function (response) {\n return response.json();\n }).then(function (response) {\n if (response.success) {\n window.location.reload();\n } else {\n (0, _jquery.default)(\"#team-captain-form > #results\").empty();\n Object.keys(response.errors).forEach(function (key, index) {\n (0, _jquery.default)(\"#team-captain-form > #results\").append(ezbadge({\n type: \"error\",\n body: response.errors[key]\n }));\n var i = (0, _jquery.default)(\"#team-captain-form\").find(\"select[name={0}]\".format(key));\n var input = (0, _jquery.default)(i);\n input.addClass(\"input-filled-invalid\");\n input.removeClass(\"input-filled-valid\");\n });\n }\n });\n });\n});\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/pages/teams/private.js?"); eval("\n\n__webpack_require__(/*! ../main */ \"./CTFd/themes/core/assets/js/pages/main.js\");\n\n__webpack_require__(/*! ../../utils */ \"./CTFd/themes/core/assets/js/utils.js\");\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! ../../CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\n__webpack_require__(/*! bootstrap/js/dist/modal */ \"./node_modules/bootstrap/js/dist/modal.js\");\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _ezq = __webpack_require__(/*! ../../ezq */ \"./CTFd/themes/core/assets/js/ezq.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _jquery.default)(function () {\n if (window.team_captain) {\n (0, _jquery.default)(\".edit-team\").click(function () {\n (0, _jquery.default)(\"#team-edit-modal\").modal();\n });\n (0, _jquery.default)(\".edit-captain\").click(function () {\n (0, _jquery.default)(\"#team-captain-modal\").modal();\n });\n }\n\n var form = (0, _jquery.default)(\"#team-info-form\");\n form.submit(function (e) {\n e.preventDefault();\n (0, _jquery.default)(\"#results\").empty();\n var params = (0, _jquery.default)(this).serializeJSON();\n var method = \"PATCH\";\n var url = \"/api/v1/teams/me\";\n\n _CTFd.default.fetch(url, {\n method: method,\n credentials: \"same-origin\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(params)\n }).then(function (response) {\n if (response.status === 400) {\n response.json().then(function (object) {\n if (!object.success) {\n var error_template = '<div class=\"alert alert-danger alert-dismissable\" role=\"alert\">\\n' + ' <span class=\"sr-only\">Error:</span>\\n' + \" {0}\\n\" + ' <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\\n' + \"</div>\";\n Object.keys(object.errors).map(function (error) {\n var i = form.find(\"input[name={0}]\".format(error));\n var input = (0, _jquery.default)(i);\n input.addClass(\"input-filled-invalid\");\n input.removeClass(\"input-filled-valid\");\n var error_msg = object.errors[error];\n var alert = error_template.format(error_msg);\n (0, _jquery.default)(\"#results\").append(alert);\n });\n }\n });\n } else if (response.status === 200) {\n response.json().then(function (object) {\n if (object.success) {\n window.location.reload();\n }\n });\n }\n });\n });\n (0, _jquery.default)(\"#team-captain-form\").submit(function (e) {\n e.preventDefault();\n var params = (0, _jquery.default)(\"#team-captain-form\").serializeJSON(true);\n\n _CTFd.default.fetch(\"/api/v1/teams/me\", {\n method: \"PATCH\",\n credentials: \"same-origin\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(params)\n }).then(function (response) {\n return response.json();\n }).then(function (response) {\n if (response.success) {\n window.location.reload();\n } else {\n (0, _jquery.default)(\"#team-captain-form > #results\").empty();\n Object.keys(response.errors).forEach(function (key, _index) {\n (0, _jquery.default)(\"#team-captain-form > #results\").append((0, _ezq.ezBadge)({\n type: \"error\",\n body: response.errors[key]\n }));\n var i = (0, _jquery.default)(\"#team-captain-form\").find(\"select[name={0}]\".format(key));\n var input = (0, _jquery.default)(i);\n input.addClass(\"input-filled-invalid\");\n input.removeClass(\"input-filled-valid\");\n });\n }\n });\n });\n});\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/pages/teams/private.js?");
/***/ }) /***/ })

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,6 @@
lint: lint:
flake8 --ignore=E402,E501,E712,W503,E203 --exclude=CTFd/uploads CTFd/ migrations/ tests/ flake8 --ignore=E402,E501,E712,W503,E203 --exclude=CTFd/uploads CTFd/ migrations/ tests/
yarn lint
black --check --exclude=CTFd/uploads --exclude=node_modules . black --check --exclude=CTFd/uploads --exclude=node_modules .
prettier --check 'CTFd/themes/**/assets/**/*' prettier --check 'CTFd/themes/**/assets/**/*'