',a='
',s='
\n Error:\n {0}\n \n
',d='
\n Success!\n {0}\n \n
',c='
',m='
',u='
';function p(e){var t=i.format(e.title),o=(0,r.default)(t);"string"==typeof e.body?o.find(".modal-body").append("
".concat(e.body,"
")):o.find(".modal-body").append((0,r.default)(e.body));var n=(0,r.default)(c.format(e.button));return e.success&&(0,r.default)(n).click(function(){e.success()}),e.large&&o.find(".modal-dialog").addClass("modal-lg"),o.find(".modal-footer").append(n),(0,r.default)("main").append(o),o.modal("show"),(0,r.default)(o).on("hidden.bs.modal",function(){(0,r.default)(this).modal("dispose")}),o}function f(e){(0,r.default)("#ezq--notifications-toast-container").length||(0,r.default)("body").append((0,r.default)("
").attr({id:"ezq--notifications-toast-container"}).css({position:"fixed",bottom:"0",right:"0","min-width":"20%"}));var t=l.format(e.title,e.body),o=(0,r.default)(t);if(e.onclose&&(0,r.default)(o).find("button[data-dismiss=toast]").click(function(){e.onclose()}),e.onclick){var n=(0,r.default)(o).find(".toast-body");n.addClass("cursor-pointer"),n.click(function(){e.onclick()})}var s=!1!==e.autohide,i=!1!==e.animation,a=e.delay||1e4;return(0,r.default)("#ezq--notifications-toast-container").prepend(o),o.toast({autohide:s,delay:a,animation:i}),o.toast("show"),o}function j(e){var t=i.format(e.title),o=(0,r.default)(t);"string"==typeof e.body?o.find(".modal-body").append("
".concat(e.body,"
")):o.find(".modal-body").append((0,r.default)(e.body));var n=(0,r.default)(u),s=(0,r.default)(m);return o.find(".modal-footer").append(s),o.find(".modal-footer").append(n),(0,r.default)("main").append(o),(0,r.default)(o).on("hidden.bs.modal",function(){(0,r.default)(this).modal("dispose")}),(0,r.default)(n).click(function(){e.success()}),o.modal("show"),o}function _(e){if(e.target){var t=(0,r.default)(e.target);return t.find(".progress-bar").css("width",e.width+"%"),t}var o=a.format(e.width),n=i.format(e.title),s=(0,r.default)(n);return s.find(".modal-body").append((0,r.default)(o)),(0,r.default)("main").append(s),s.modal("show")}function h(e){var t={success:d,error:s}[e.type].format(e.body);return(0,r.default)(t)}var v={ezAlert:p,ezToast:f,ezQuery:j,ezProgressBar:_,ezBadge:h};t.default=v},"./CTFd/themes/core/assets/js/fetch.js":function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,o("./node_modules/whatwg-fetch/fetch.js");var n,s=(n=o("./CTFd/themes/core/assets/js/config.js"))&&n.__esModule?n:{default:n};var i=window.fetch;t.default=function(e,t){return void 0===t&&(t={method:"GET",credentials:"same-origin",headers:{}}),e=s.default.urlRoot+e,void 0===t.headers&&(t.headers={}),t.credentials="same-origin",t.headers.Accept="application/json",t.headers["Content-Type"]="application/json",t.headers["CSRF-Token"]=s.default.csrfNonce,i(e,t)}},"./CTFd/themes/core/assets/js/pages/main.js":function(e,t,o){var n=p(o("./CTFd/themes/core/assets/js/CTFd.js")),s=p(o("./node_modules/jquery/dist/jquery.js")),i=p(o("./node_modules/moment/moment.js")),a=p(o("./node_modules/nunjucks/browser/nunjucks.js")),r=o("./node_modules/howler/dist/howler.js"),l=p(o("./CTFd/themes/core/assets/js/events.js")),d=p(o("./CTFd/themes/core/assets/js/config.js")),c=p(o("./CTFd/themes/core/assets/js/styles.js")),m=p(o("./CTFd/themes/core/assets/js/times.js")),u=p(o("./CTFd/themes/core/assets/js/helpers.js"));function p(e){return e&&e.__esModule?e:{default:e}}n.default.init(window.init),window.CTFd=n.default,window.helpers=u.default,window.$=s.default,window.Moment=i.default,window.nunjucks=a.default,window.Howl=r.Howl,(0,s.default)(function(){(0,c.default)(),(0,m.default)(),(0,l.default)(d.default.urlRoot)})},"./CTFd/themes/core/assets/js/pages/teams/private.js":function(e,t,o){o("./CTFd/themes/core/assets/js/pages/main.js"),o("./CTFd/themes/core/assets/js/utils.js");var i=n(o("./CTFd/themes/core/assets/js/CTFd.js"));o("./node_modules/bootstrap/js/dist/modal.js");var l=n(o("./node_modules/jquery/dist/jquery.js")),a=o("./CTFd/themes/core/assets/js/ezq.js");function n(e){return e&&e.__esModule?e:{default:e}}(0,l.default)(function(){window.team_captain&&((0,l.default)(".edit-team").click(function(){(0,l.default)("#team-edit-modal").modal()}),(0,l.default)(".edit-captain").click(function(){(0,l.default)("#team-captain-modal").modal()}));var r=(0,l.default)("#team-info-form");r.submit(function(e){e.preventDefault(),(0,l.default)("#results").empty();var t=(0,l.default)(this).serializeJSON();for(var o in t.fields=[],t)if(o.match(/fields\[\d+\]/)){var n={},s=parseInt(o.slice(7,-1));n.field_id=s,n.value=t[o],t.fields.push(n),delete t[o]}i.default.fetch("/api/v1/teams/me",{method:"PATCH",credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(t)}).then(function(e){400===e.status?e.json().then(function(i){if(!i.success){var a='
\n Error:\n {0}\n \n
';Object.keys(i.errors).map(function(e){var t=r.find("input[name={0}]".format(e)),o=(0,l.default)(t);o.addClass("input-filled-invalid"),o.removeClass("input-filled-valid");var n=i.errors[e],s=a.format(n);(0,l.default)("#results").append(s)})}}):200===e.status&&e.json().then(function(e){e.success&&window.location.reload()})})}),(0,l.default)("#team-captain-form").submit(function(e){e.preventDefault();var t=(0,l.default)("#team-captain-form").serializeJSON(!0);i.default.fetch("/api/v1/teams/me",{method:"PATCH",credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(t)}).then(function(e){return e.json()}).then(function(s){s.success?window.location.reload():((0,l.default)("#team-captain-form > #results").empty(),Object.keys(s.errors).forEach(function(e,t){(0,l.default)("#team-captain-form > #results").append((0,a.ezBadge)({type:"error",body:s.errors[e]}));var o=(0,l.default)("#team-captain-form").find("select[name={0}]".format(e)),n=(0,l.default)(o);n.addClass("input-filled-invalid"),n.removeClass("input-filled-valid")}))})})})},"./CTFd/themes/core/assets/js/patch.js":function(e,t,o){var n,r=(n=o("./node_modules/q/q.js"))&&n.__esModule?n:{default:n},s=o("./CTFd/themes/core/assets/js/api.js");function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function l(e,t){return function(t){for(var e=1;e
>4*s&255).toString(16)).substr(-2)}return n},t.htmlEntities=function(e){return(0,a.default)("").text(e).html()},t.cumulativeSum=function(e){for(var t=e.concat(),o=0;o'),(0,a.default)("th.sort-col").click(function(){var e=(0,a.default)(this).parents("table").eq(0),t=e.find("tr:gt(0)").toArray().sort(function(s){return function(e,t){var o=i(e,s),n=i(t,s);return a.default.isNumeric(o)&&a.default.isNumeric(n)?o-n:o.toString().localeCompare(n)}}((0,a.default)(this).index()));this.asc=!this.asc,this.asc||(t=t.reverse());for(var o=0;o
- {{ form.name.label }}
+ {{ form.name.label }}
{{ form.name(class="form-control") }}
- {{ form.password.label }}
+ {{ form.password.label }}
{{ form.password(class="form-control") }}
+
+ {{ render_extra_fields(form.extra) }}
+
After creating your team, share the team name and password with your teammates so they can join your team.
diff --git a/CTFd/themes/core/templates/teams/private.html b/CTFd/themes/core/templates/teams/private.html
index 45d3e63d..585af365 100644
--- a/CTFd/themes/core/templates/teams/private.html
+++ b/CTFd/themes/core/templates/teams/private.html
@@ -15,6 +15,7 @@
{% with form = Forms.teams.TeamSettingsForm(obj=team) %}
+ {% from "macros/forms.html" import render_extra_fields %}