diff --git a/CTFd/themes/admin/assets/js/pages/challenges.js b/CTFd/themes/admin/assets/js/pages/challenges.js index 478a6b417cbb870bc4dd8bbb083ac8ada3d20252..b115578f29428c4361e305d7ec2a0cd7a257f5e2 100644 --- a/CTFd/themes/admin/assets/js/pages/challenges.js +++ b/CTFd/themes/admin/assets/js/pages/challenges.js @@ -412,6 +412,15 @@ function bulkEditChallenges(_event) { <option value="hidden">Caché</option> </select> </div> + <div class="form-group"> + <label>Type</label> + <select name="type" data-initial=""> + <option value="">--</option> + <option value="standard">Standard</option> + <option value="manual">Manuel</option> + <option value="manualRecursive">Manuel Récursif</option> + </select> + </div> </form> `), button: "Soumettre", diff --git a/CTFd/themes/admin/static/assets/pages/challenges.d31a596d.js b/CTFd/themes/admin/static/assets/pages/challenges.ae541f6c.js similarity index 89% rename from CTFd/themes/admin/static/assets/pages/challenges.d31a596d.js rename to CTFd/themes/admin/static/assets/pages/challenges.ae541f6c.js index 4d873ee1044d4e5a38fe3d22c067c1ff34d3af51..e5967225bd7b267c0c65a7e553f60439c521762d 100644 --- a/CTFd/themes/admin/static/assets/pages/challenges.d31a596d.js +++ b/CTFd/themes/admin/static/assets/pages/challenges.ae541f6c.js @@ -1,4 +1,4 @@ -import{u as E,C as m,j as i,D as p,x as S}from"./main.b0151f5b.js";document.addEventListener("DOMContentLoaded",function(h){document.getElementById("btn-file-input").addEventListener("click",function(t){document.getElementById("thumbsnail-get-path").click()}),document.getElementById("thumbsnail-get-path").addEventListener("change",function(t){const e=t.target.files[0];let a=document.getElementById("thumbsnail-upload-form");const l=new FormData(a);if(l.append("file",e),E.files.upload(l,a,function(r){const f=r.data[0],c=m.config.urlRoot+"/files/"+f.location;document.getElementById("thumbsnail-path").value=c,console.log("Miniature t\xE9l\xE9charg\xE9e avec succ\xE8s:",c);const D=document.getElementById("image-preview");D.src=c,D.style.display="block"}),e){const r=new FileReader;r.onload=function(f){const c=document.getElementById("image-preview");c.src=f.target.result,c.style.display="block"},r.readAsDataURL(e)}});const o=Object.keys(document.categories),d=document.getElementById("categories-selector");o.forEach(t=>{const e=document.createElement("option");e.value=t,e.textContent=t,e.textContent!="D\xE9fi Flash"&&d.appendChild(e)});const s=document.createElement("option");s.value="other",s.textContent="Other (type below)",d.appendChild(s);const n=document.getElementById("categories-selector-input");d.value=="other"||o.length==0?(n.style.display="block",n.name="category"):(n.style.display="none",n.value="",n.name=""),d.addEventListener("change",function(){d.value=="other"||o.length==0?(n.style.display="block",n.name="category"):(n.style.display="none",n.value="",n.name="")});let u=0;document.querySelectorAll("td.id").forEach(function(t){const e=parseInt(t.textContent);!isNaN(e)&&e>u&&(u=e)});const g=u+1;document.getElementById("challenge_id_texte").textContent=g,document.getElementById("challenge_id").value=g;function v(){const t=i("#challenge-create-options-quick").serializeJSON();let e=document.getElementById("categories-selector"),a=document.getElementById("categories-selector-input"),l=document.getElementById("time-selector-input");e.hidden&&t.type!="flash"?(l.hidden=!0,a.hidden=!1,e.hidden=!1):!e.hidden&&t.type=="flash"&&(l.hidden=!1,a.hidden=!0,e.hidden=!0)}function b(t){p({title:"Choisir P\xE9riode",body:`<div class="mb-3" style="text-align: center;"> +import{u as E,C as m,j as i,D as p,x as S}from"./main.b0151f5b.js";document.addEventListener("DOMContentLoaded",function(g){document.getElementById("btn-file-input").addEventListener("click",function(t){document.getElementById("thumbsnail-get-path").click()}),document.getElementById("thumbsnail-get-path").addEventListener("change",function(t){const e=t.target.files[0];let a=document.getElementById("thumbsnail-upload-form");const l=new FormData(a);if(l.append("file",e),E.files.upload(l,a,function(r){const f=r.data[0],c=m.config.urlRoot+"/files/"+f.location;document.getElementById("thumbsnail-path").value=c,console.log("Miniature t\xE9l\xE9charg\xE9e avec succ\xE8s:",c);const v=document.getElementById("image-preview");v.src=c,v.style.display="block"}),e){const r=new FileReader;r.onload=function(f){const c=document.getElementById("image-preview");c.src=f.target.result,c.style.display="block"},r.readAsDataURL(e)}});const o=Object.keys(document.categories),d=document.getElementById("categories-selector");o.forEach(t=>{const e=document.createElement("option");e.value=t,e.textContent=t,e.textContent!="D\xE9fi Flash"&&d.appendChild(e)});const s=document.createElement("option");s.value="other",s.textContent="Other (type below)",d.appendChild(s);const n=document.getElementById("categories-selector-input");d.value=="other"||o.length==0?(n.style.display="block",n.name="category"):(n.style.display="none",n.value="",n.name=""),d.addEventListener("change",function(){d.value=="other"||o.length==0?(n.style.display="block",n.name="category"):(n.style.display="none",n.value="",n.name="")});let u=0;document.querySelectorAll("td.id").forEach(function(t){const e=parseInt(t.textContent);!isNaN(e)&&e>u&&(u=e)});const h=u+1;document.getElementById("challenge_id_texte").textContent=h,document.getElementById("challenge_id").value=h;function D(){const t=i("#challenge-create-options-quick").serializeJSON();let e=document.getElementById("categories-selector"),a=document.getElementById("categories-selector-input"),l=document.getElementById("time-selector-input");e.hidden&&t.type!="flash"?(l.hidden=!0,a.hidden=!1,e.hidden=!1):!e.hidden&&t.type=="flash"&&(l.hidden=!1,a.hidden=!0,e.hidden=!0)}function b(t){p({title:"Choisir P\xE9riode",body:`<div class="mb-3" style="text-align: center;"> <label>D\xE9but</label> <div class="row" style="justify-content: space-around;"> @@ -73,7 +73,7 @@ import{u as E,C as m,j as i,D as p,x as S}from"./main.b0151f5b.js";document.addE <\/script>`,button:"Ok",success:function(){console.log("done")}})}function y(t){const e=i("#challenge-create-options-quick").serializeJSON();if(delete e.challenge_id,delete e.flag_type,e.type!="flash")delete e.startTime,delete e.endTime;else if(e.category="D\xE9fi Flash",e.startTime>=e.endTime)return p({title:"P\xE9riode de temps invalide",body:"Veuillez choisir une p\xE9riode de temps valide",button:"Ok"}),!1;e.description="",m.fetch("/api/v1/challenges",{method:"POST",credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(e)}).then(function(a){return console.log("hello2"),a.json()}).then(function(a){if(a.success){if(a.data.type=="manualRecursive"){const l={value:"R\xE9cursif",challenge:a.data.id};m.api.post_tag_list({},l).then(r=>{})}if(a.data.type=="flash"){const l={value:"Flash",challenge:a.data.id};m.api.post_tag_list({},l).then(r=>{})}setTimeout(function(){window.location.reload(!0)},500)}else{let l="";for(const r in a.errors)l+=a.errors[r].join(` `),l+=` -`;p({title:"Erreur",body:l,button:"Ok"})}})}document.getElementById("submit-button").addEventListener("click",function(t){t.preventDefault(),y()}),document.getElementById("challenge-create-options-quick-selector").addEventListener("keypress",function(t){t.key==="Enter"&&(t.preventDefault(),y())}),document.getElementById("challenge-type").addEventListener("change",function(t){v()}),document.getElementById("time-selector-input").addEventListener("click",function(t){t.preventDefault(),b()})});function I(h){let o=i("input[data-challenge-id]:checked").map(function(){return i(this).data("challenge-id")}),d=o.length===1?"challenge":"challenges";S({title:"Supprimer un d\xE9fi",body:`\xCAtes-vous certain de vouloir supprimer ${o.length} ${d}?`,success:function(){const s=[];for(var n of o)s.push(m.fetch(`/api/v1/challenges/${n}`,{method:"DELETE"}));Promise.all(s).then(u=>{window.location.reload()})}})}function M(h){let o=i("input[data-challenge-id]:checked").map(function(){return i(this).data("challenge-id")});p({title:"Modifier un d\xE9fi",body:i(` +`;p({title:"Erreur",body:l,button:"Ok"})}})}document.getElementById("submit-button").addEventListener("click",function(t){t.preventDefault(),y()}),document.getElementById("challenge-create-options-quick-selector").addEventListener("keypress",function(t){t.key==="Enter"&&(t.preventDefault(),y())}),document.getElementById("challenge-type").addEventListener("change",function(t){D()}),document.getElementById("time-selector-input").addEventListener("click",function(t){t.preventDefault(),b()})});function M(g){let o=i("input[data-challenge-id]:checked").map(function(){return i(this).data("challenge-id")}),d=o.length===1?"challenge":"challenges";S({title:"Supprimer un d\xE9fi",body:`\xCAtes-vous certain de vouloir supprimer ${o.length} ${d}?`,success:function(){const s=[];for(var n of o)s.push(m.fetch(`/api/v1/challenges/${n}`,{method:"DELETE"}));Promise.all(s).then(u=>{window.location.reload()})}})}function I(g){let o=i("input[data-challenge-id]:checked").map(function(){return i(this).data("challenge-id")});p({title:"Modifier un d\xE9fi",body:i(` <form id="challenges-bulk-edit"> <div class="form-group"> <label>Cat\xE9gorie</label> @@ -91,5 +91,14 @@ import{u as E,C as m,j as i,D as p,x as S}from"./main.b0151f5b.js";document.addE <option value="hidden">Cach\xE9</option> </select> </div> + <div class="form-group"> + <label>Type</label> + <select name="type" data-initial=""> + <option value="">--</option> + <option value="standard">Standard</option> + <option value="manual">Manuel</option> + <option value="manualRecursive">Manuel R\xE9cursif</option> + </select> + </div> </form> - `),button:"Soumettre",success:function(){let d=i("#challenges-bulk-edit").serializeJSON(!0);const s=[];for(var n of o)s.push(m.fetch(`/api/v1/challenges/${n}`,{method:"PATCH",body:JSON.stringify(d)}));Promise.all(s).then(u=>{window.location.reload()})}})}i(()=>{i("#challenges-delete-button").click(I),i("#challenges-edit-button").click(M)}); + `),button:"Soumettre",success:function(){let d=i("#challenges-bulk-edit").serializeJSON(!0);const s=[];for(var n of o)s.push(m.fetch(`/api/v1/challenges/${n}`,{method:"PATCH",body:JSON.stringify(d)}));Promise.all(s).then(u=>{window.location.reload()})}})}i(()=>{i("#challenges-delete-button").click(M),i("#challenges-edit-button").click(I)}); diff --git a/CTFd/themes/admin/static/manifest.json b/CTFd/themes/admin/static/manifest.json index 62f9ca78ebf70bbe70760adef279464f7d606ab4..5a085e98b905eff7487e147c9ca4d30583e10e9d 100644 --- a/CTFd/themes/admin/static/manifest.json +++ b/CTFd/themes/admin/static/manifest.json @@ -18,7 +18,7 @@ ] }, "assets/js/pages/challenges.js": { - "file": "assets/pages/challenges.d31a596d.js", + "file": "assets/pages/challenges.ae541f6c.js", "src": "assets/js/pages/challenges.js", "isEntry": true, "imports": [ @@ -178,27 +178,22 @@ "_echarts.common.75806e9f.js" ] }, - "CommentBox.css": { - "file": "assets/CommentBox.23213b39.css", - "src": "CommentBox.css" - }, "assets/js/pages/challenge.css": { "file": "assets/challenge.66ec3ebe.css", "src": "assets/js/pages/challenge.css" }, - "assets/css/challenge-board.scss": { - "file": "assets/challenge-board.44e07e05.css", - "src": "assets/css/challenge-board.scss", - "isEntry": true + "CommentBox.css": { + "file": "assets/CommentBox.23213b39.css", + "src": "CommentBox.css" }, "assets/css/admin.scss": { "file": "assets/admin.3594ea3f.css", "src": "assets/css/admin.scss", "isEntry": true }, - "assets/css/fonts.scss": { - "file": "assets/fonts.ffb05726.css", - "src": "assets/css/fonts.scss", + "assets/css/challenge-board.scss": { + "file": "assets/challenge-board.44e07e05.css", + "src": "assets/css/challenge-board.scss", "isEntry": true }, "assets/css/codemirror.scss": { @@ -206,6 +201,11 @@ "src": "assets/css/codemirror.scss", "isEntry": true }, + "assets/css/fonts.scss": { + "file": "assets/fonts.ffb05726.css", + "src": "assets/css/fonts.scss", + "isEntry": true + }, "assets/css/main.scss": { "file": "assets/main.088f55c6.css", "src": "assets/css/main.scss", diff --git a/CTFd/themes/admin/templates/challenges/update.html b/CTFd/themes/admin/templates/challenges/update.html index 2cfbe3a5334e55646f0571622aa30f113ff235bf..b10fc6c44e1d2b6216bf53aa10e4694ba7c28575 100644 --- a/CTFd/themes/admin/templates/challenges/update.html +++ b/CTFd/themes/admin/templates/challenges/update.html @@ -90,7 +90,6 @@ {% block time %} - <input type="hidden" name="type" value="standard"> {% endblock %} {% block flags %}