PageSourceSearch

https://forum.ircam.fr/static/bundler/assets/ProjectCreate.ce.fd19725d.js

js ircam.fr collected 2026-10-01 07:46:40 UTC 19,109 bytes, 2 lines download raw bytes

1var be=Object.defineProperty,Ee=Object.defineProperties;var ye=Object.getOwnPropertyDescriptors;var ae=Object.getOwnPropertySymbols;var je=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable;var re=(i,a,r)=>a in i?be(i,a,{enumerable:!0,configurable:!0,writable:!0,value:r}):i[a]=r,N=(i,a)=>{for(var r in a||(a={}))je.call(a,r)&&re(i,r,a[r]);if(ae)for(var r of ae(a))we.call(a,r)&&re(i,r,a[r]);return i},$=(i,a)=>Ee(i,ye(a));import{d as K,k as t,B as ce,C as X,o as _,f as b,g as e,T as G,m as n,u as s,a2 as I,p as Z,s as V,L as ue,j as ke,Z as Pe,a as R,a7 as H,a8 as ie,ad as ne}from"./vendor.ab282fad.js";import{u as Q,_ as B,s as de,r as Re,c as Ve,t as Ce}from"../main.6dfd35bb.js";import{s as Ue}from"./topic.1606eb39.js";import"./preload-helper.b748f90f.js";import{g as Te}from"./get-cookie.1a4e1654.js";import{a as Ie}from"./time.fd922b0d.js";import{S as Fe}from"./SelectTags.af50cf2a.js";import{_ as Le}from"./HTMLEditor.1d44f056.js";import{_ as Me}from"./BtnSubmit.3217cab1.js";import{_ as De}from"./cropper.a70c3f3b.js";import"./VueSelect.acc7add9.js";import"./vue.runtime.esm-bundler.9766f916.js";import"./main.8db00f82.js";const Ae={class:"c-field__wrapper"},qe={for:"project_external_repository_url",class:"c-field__label"},Se=e("span",{class:"c-field__required-star"},"*",-1),Ne=["onClick"],$e=["value"],He=["innerHTML"],Be=K({props:{modelValue:null},emits:["update:modelValue"],setup(i){const a=i,{t:r}=Q({messages:{en:{externalRepo:"External git repository",help:'The URL must be formatted like <i>https://host/owner/repo</i> (without the <i>.git</i> suffix).<br>We currently only accept external repositories from the Ircam <a href="https://git.forum.ircam.fr">public</a> or <a href="https://forge-2.ircam.fr">private</a> Gitlab and <a href="https://github.com">GitHub</a>.',invalidFormat:"Invalid repository URL",loadingValid:"Checking URL..."},fr:{externalRepo:"D\xE9p\xF4t externe git",help:`L'URL doit avoir le format suivant <i>https://h\xF4te/utilisateur/d\xE9p\xF4t</i> (sans le suffixe <i>.git</i>).<br>Nous n'acceptons actuellement que les d\xE9p\xF4ts externes h\xE9berg\xE9s sur <a href="https://github.com">GitHub</a> ainsi que le Gitlab <a href="https://git.forum.ircam.fr">public</a> ou <a href="https://forge-2.ircam.fr">priv\xE9</a> de l'Ircam.`,invalidFormat:"URL de d\xE9p\xF4t invalide",loadingValid:"V\xE9rirication de l'URL..."}}}),E=t(!1),m=t(!1),g=t();ce(()=>{X([E,m],()=>{var h;if(E.value){g.value.setCustomValidity(r("loadingValid"));return}if(((h=g.value)==null?void 0:h.value.length)&&!m.value){g.value.setCustomValidity(r("invalidFormat"));return}g.value.setCustomValidity("")},{immediate:!0})}),X(()=>a.modelValue,C,{immediate:!0});let f=null,c=null;function y(h,u){c!==null&&clearTimeout(c),f!==null&&(f.abort(),f=null),c=setTimeout(h,u)}async function C(){if(!a.modelValue){m.value=!1;return}const h=new URL("/api/projects/validate_external_repository/",window.location.href);h.searchParams.set("url",de(a.modelValue)),E.value=!0,y(async()=>{try{f=new AbortController;const u=await Re(h.toString(),{signal:f.signal});m.value=u.valid,E.value=!1}catch(u){if(u instanceof Error&&u.name==="AbortError")return;throw u}finally{f=null}},300)}return(h,u)=>(_(),b(ue,null,[e("div",Ae,[e("label",qe,[G(n(s(r)("externalRepo"))+" ",1),Se]),i.modelValue?(_(),b("button",{key:0,type:"button",class:"c-field__button","aria-label":"Validate external repository",onClick:I(C,["prevent"])},[E.value?(_(),Z(B,{key:0,class:"c-field__icon c-button__icon--spin",name:"spinner-thin"})):m.value?(_(),Z(B,{key:2,class:"c-field__icon",name:"check",color:"#71c989"})):(_(),Z(B,{key:1,class:"c-field__icon",name:"cancel",color:"#ff4545"}))],8,Ne)):V("",!0),e("input",{id:"project_external_repository_url",ref_key:"input",ref:g,type:"text",name:"project_external_repository_url",value:i.modelValue,class:"c-field__input c-input_project_external_git_repository",placeholder:"https://",required:"",onInput:u[0]||(u[0]=v=>h.$emit("update:modelValue",v.currentTarget.value))},null,40,$e)]),e("small",{class:"c-field__hint",innerHTML:s(r)("help")},null,8,He)],64))}}),Ge={class:"c-field__wrapper"},ze={for:"project_external_url",class:"c-field__label"},Oe=e("span",{class:"c-field__required-star"},"*",-1),We=["onClick"],Je=["value"],Ze=["innerHTML"],Xe=K({props:{modelValue:null},emits:["update:modelValue"],setup(i){const a=i,{t:r}=Q({messages:{en:{externalProject:"External project URL",help:"External link to the project.",loadingValid:"Checking URL..."},fr:{externalProject:"URL du projet externe",help:"Lien vers le projet externe.",loadingValid:"V\xE9rirication de l'URL..."}}}),E=t(),m=t(!1);X(()=>a.modelValue,g,{immediate:!0});async function g(){if(!a.modelValue){m.value=!1;return}return f(a.modelValue)}function f(c){return c.includes("http")?c:"http://"+c}return(c,y)=>(_(),b(ue,null,[e("div",Ge,[e("label",ze,[G(n(s(r)("externalProject"))+" ",1),Oe]),i.modelValue?(_(),b("button",{key:0,t
1ype:"button",class:"c-field__button","aria-label":"Validate external url",onClick:I(g,["prevent"])},null,8,We)):V("",!0),e("input",{id:"project_external_url",ref_key:"input",ref:E,type:"text",name:"project_external_url",value:i.modelValue,class:"c-field__input c-input_project_external_url",placeholder:"URL",required:"",onInput:y[0]||(y[0]=C=>c.$emit("update:modelValue",C.currentTarget.value))},null,40,Je)]),e("small",{class:"c-field__hint",innerHTML:s(r)("help")},null,8,Ze)],64))}}),Ke={class:"c-project__create-component c-container c-container--centered"},Qe={class:"c-banner u-mbm"},Ye={class:"c-banner__title"},et={class:"u-mts"},tt={class:"c-button__label"},ot=["innerHTML"],lt={key:0,class:"c-message c-message--error u-mbm"},st={class:"c-form__fields"},at={class:"c-form__field c-field"},rt={class:"c-field__wrapper"},it={for:"project_title",class:"c-field__label"},nt=e("span",{class:"c-field__required-star"},"*",-1),ct={class:"c-form__field c-field"},ut={class:"c-field__wrapper"},dt={for:"project_description",class:"c-field__label"},pt=e("span",{class:"c-field__required-star"},"*",-1),_t={class:"c-form__field c-field c-project-form_tags"},mt={class:"c-field__wrapper"},ft={for:"tags",class:"c-field__label"},ht={class:"c-field__hint"},vt={class:"c-form__fields"},gt={class:"c-form__field c-field"},xt={class:"c-field__wrapper"},bt=e("label",{class:"c-field__label"},"Image",-1),Et={class:"c-field__hint"},yt=["value"],jt={class:"content"},wt={class:"cropper-area"},kt={key:0,class:"actions"},Pt=["disabled","onClick"],Rt=e("span",{class:"c-button__label"},"Crop",-1),Vt=[Rt],Ct=["disabled","onClick"],Ut=e("span",{class:"c-button__label"},"Reset",-1),Tt=[Ut],It=["disabled","onClick"],Ft={class:"c-button__label"},Lt={key:0,class:"preview-area"},Mt={class:"cropped-image u-mts"},Dt=e("label",{class:"c-field__label"},"Cropped image",-1),At=["src"],qt={class:"c-form__fields"},St={class:"c-form__field c-field"},Nt={class:"c-field__wrapper"},$t={class:"c-field__label"},Ht={class:"c-field__choice"},Bt={class:"c-field__text"},Gt={class:"c-field__choice"},zt={class:"c-field__text"},Ot={key:1,class:"c-form__fields"},Wt={class:"c-form__field c-field"},Jt={class:"c-form__field c-field"},Zt={key:2,class:"c-form__fields"},Xt={class:"c-form__field c-field"},Kt={class:"c-field__wrapper"},Qt={for:"readme",class:"c-field__label"},Yt={class:"c-form__actions u-flex-center"},fo=K({props:{userName:null,isInternalUser:{type:Boolean}},setup(i){const a=i,{userName:r}=ke(a),E="https://"+window.location.hostname+"/profile/"+r.value,m=t(),g=t("draft"),f=t(""),c=t(""),y=t([]),C=t(!1),h=t(!1),u=t(!1),v=t(!0),z=t(!1),Y=t(!1),ee=t(""),te=t(""),O=t(""),W=t(""),M=t("");ce(()=>{const o=new URLSearchParams(window.location.search).get("isInternalProject");o!==null&&(v.value=o==="true")}),Pe(()=>{});const j=t(),D=t(""),A=t(""),q=t(""),x=t(),w=t(),U=t(),T=t(),J=t(),oe=t(),P=t(!1),le=t(!1);function pe(p){if(w.value=p.target.value,w.value)if(w.value.endsWith(".jpg")||w.value.endsWith(".png")){const o=w.value.split("/").pop();fetch(w.value).then(l=>l.blob()).then(l=>{if(x.value=new File([l],o),typeof FileReader=="function"){const k=new FileReader;k.onload=L=>{L.target&&(D.value=L.target.result,j.value.replace(L.target.result),T.value&&(T.value.getElementsByTagName("img")[0].style.display="block",P.value=!0,U.value&&(U.value.style.display="block")))},x.value&&k.readAsDataURL(x.value)}else alert("Sorry, FileReader API not supported")})}else alert("Please select an image file (.jpg, .png)"),w.value="",oe.value.value=""}function _e(p){var o;if(p.target&&p.target.files){if(x.value=p.target.files[0],((o=x.value)==null?void 0:o.type.indexOf("image/"))===-1){alert("Please select an image file");return}if(typeof FileReader=="function"){const l=new FileReader;l.onload=k=>{k.target&&(D.value=k.target.result,j.value.replace(k.target.result),T.value&&(T.value.getElementsByTagName("img")[0].style.display="block",P.value=!0,U.value&&(U.value.style.display="block")))},x.value&&l.readAsDataURL(x.value)}else alert("Sorry, FileReader API not supported")}}function me(){A.value=JSON.stringify(j.value.getData(),null,4)}function fe(){q.value=j.value.getCroppedCanvas().toDataURL(),me(),le.value=!0}function he(){j.value.reset()}function ve(){D.value="",A.value="",q.value="",x.value=void 0,P.value=!1,J.value!==void 0&&(J.value.value=""),le.value=!1,T.value.getElementsByTagName("img")[0].style.display="none",U.value=d
1ocument.getElementsByClassName("cropper-container")[0],U.value.style.display="none",j.value.clear(),j.value.replace(""),j.value.destroy()}async function ge(){const p={status:g.value,title:f.value,description:c.value,topics:y.value.map(o=>Ue(o)),show_download_repo:C.value,show_commits:h.value};return v.value?v.value&&!u.value?$(N({},p),{is_readme_in_repo:u.value,readme_cms_content:M.value,is_premium:z.value,is_protected:Y.value,protection_endpoint:ee.value,protection_unlock_url:te.value}):$(N({},p),{is_readme_in_repo:u.value,is_premium:z.value,is_protected:Y.value,protection_endpoint:ee.value,protection_unlock_url:te.value}):$(N({},p),{external_git_repository:de(O.value),external_url:W.value,is_readme_in_repo:!0,readme_cms_content:M.value,is_premium:z.value})}const se=t(!1),F=Ve(async()=>{const p=await ge(),o=await Ce(p);if(await Ie(1e3),x.value){const l=new FormData(m.value);l.append("banner_image",x.value),l.append("banner_crop_data",""),A.value&&l.append("banner_crop_data",A.value);const k="/api/projects/"+o.forum_project_id+"/",L=Te("csrftoken");await fetch(k,{credentials:"include",method:"PUT",mode:"same-origin",headers:{"X-CSRFToken":L},body:l}).then(S=>{S.status===200||S.text().then(xe=>{throw new Error(xe)})}).catch(S=>{console.log(S)}).finally(()=>{})}return window.location.href=o.forum_project_url,se.value=!0,o},{error(){m.value&&m.value.scrollIntoView({behavior:"smooth"})}}),{t:d}=Q({messages:{en:{status:"Status",published:"Public",notPublished:"Private",statusHint:"Makes the project accessible by you only and prevents it from showing up in collections and search results. The repository and the discussion room will still be accessible to the public.",createNewProject:"Create a new project",backToProfile:"back to profile",intro:"A project allows you to publish and share programs and data. It includes <strong>versions</strong> that represent the development of the project. Each version may contain <strong>files</strong> (programs or data), as well as <strong>links</strong> to external resources such as a site presenting the documentation. Also, it is possible to choose whether the project is hosted locally on this site, hosted by the forum's git server or even to reference an existing project on other git servers, such as github for example. In the latter case, your project will be a reflection of an already existing project.",name:"Name",description:"Description",required:"required",imageHint:"Add an image from a file or url.",tags:"Tags",tagsHints:"Please use proposed tags if they already exist in uppercase/lowercase",projectType:"Project Type",localProject:"Local project hosted on the Forum",externalProject:"External project referenced on the Forum",accessMode:"Acces mode",forumRelease:"Version files uploaded into the Forum (recommended)",externalRelease:"Link to an external releases list (Github/Gitlab)",README:"README",readmeEditMode:"README edit mode",editReadmeInRepo:"Edit the README in the repository",editReadmeInCMS:"Edit the README in the Forum CMS",isPremium:"Premium project",isProtected:"Protected project",projectProtection:"Project protection",protectionHint:"If this is a premium project protected by an authorization key",protectionEndpoint:"Protection endpoint",protectionUnlockUrl:"Protection unlock url",downloadButton:"Download button",downloadGitRefArchive:"Download a .zip of the git repository",withoutGitRefArchive:"Do not download the repository source files",projectRepository:"Project repository",showProjectCommits:"Show project commits",createProject:"Create the project",delete:"Delete"},fr:{status:"Statut",published:"Public",notPublished:"Priv\xE9",statusHint:"Rends le projet accessible par vous uniquement et l'emp\xEAche d'appara\xEEtre dans les collections et les r\xE9sultats de recherche. Le d\xE9p\xF4t et le salon de discussion seront toujours accessibles.",createNewProject:"Cr\xE9er un nouveau projet",backToProfile:"retour au profil",intro:"Un projet vous permet de publier et de partager des programmes et des donn\xE9es. Il se constitue de <strong>versions</strong> qui repr\xE9sentent les \xE9tapes du d\xE9veloppement du projet. Chaque version peut contenir des <strong>fichiers</strong> (programmes ou donn\xE9es), ainsi que des <strong>liens</strong> vers des ressources ext\xE9rieures telles qu'un site pr\xE9sentant la documentation par exemple. Enfin, il est possible de choisir si le projet est h\xE9berg\xE9 localement sur ce site, ou s'il est h\xE9berg\xE9 par le serveur git du forum, ou encore de r\xE9f\xE9rencer un projet existant sur d'autres serveur git, comme github par exemple. Dans ce dernier cas, votre projet sera un reflet d'un projet d\xE9j\xE0 existant.",name:"Nom",description:"Description",required:"requis",imageHint:"Ajouter une image a partir d'un ficher ou d'une url.",tags:"Tags",tagsHints:"Veuillez utiliser les tags propos\xE9s s'ils existent d\xE9j\xE0 en majuscule/minuscule",projectType:"Type de projet",localProject:"Projet local h\xE9berg\xE9 sur le Forum",externalProject:"Projet externe r\xE9f\xE9renc\xE9 sur le Forum",accessMode:"Mode d'acc\xE8s",forumRelease:"Fichiers upload\xE9 sur le Forum (recommand\xE9)",externalRelease:"Lien vers une liste de releases externe (Github/Gitlab)",README:"README",readmeEditMode:"Mode d'\xE9dition du README",editReadmeInRepo:"Editer le README dans le d\xE9p\xF4t",editReadmeInCMS:"Editer le README dans le CMS du Forum",isPremium:"Projet premium",isProtected:"Projet prot\xE9g\xE9",projectProtection:"Protection du projet",protectionHint:"Projet prot\xE9g\xE9 par une cl\xE9 d'authorisation",protectionEndpoint:"Point d'acc\xE8s de la protection",protectionUnlockUrl:"Lien de d\xE9verouillage de la protection",downloadButton:"Bouton de t\xE9l\xE9chargement",downloadGitRefArchive:"T\xE9l\xE9charger un .zip du d\xE9p\xF4t git",withoutGitRefArchive:"Ne pas t\xE9l\xE9charger les fichiers sources du d\xE9p\xF4t",projectRepository:"D\xE9p\xF4t du projet",showProjectCommits:"Afficher les commits du projet",createProject:"Cr\xE9er le projet",delete:"Supprimer"}}});return(p,o)=>(_(),b("div",Ke,[e("div",Qe,[e("h1",Ye,n(s(d)("createNewProject")),1),e("p",et,[e("a",{href:E,class:"c-button c-button--small c-button--transparent"},[R(B,{class:"u-mrxs",width:"24",height:"24",name:"arrow-left"}),e("span",tt,n(s(d)("backToProfile")),1)])]),e("p",{class:"c-banner__introduction",innerHTML:s(d)("intro")},null,8,ot)]),e("form",{ref_key:"form",ref:m,class:"c-form u-mbl",onSubmit:o[8]||(o[8]=I((...l)=>s(F).exec&&s(F).exec(...l),["prevent"]))},[s(F).err?(_(),b("div",lt,[e("p",null,n(s(F).err),1)])):V("",!0),e("fieldset",st,[e("div",at,[e("div",rt,[e
1("label",it,[G(n(s(d)("name"))+" ",1),nt]),H(e("input",{id:"project_title","onUpdate:modelValue":o[0]||(o[0]=l=>f.value=l),type:"text",name:"project_title",class:"c-project-form_name-input c-field__input",required:""},null,512),[[ie,f.value]])])]),e("div",ct,[e("div",ut,[e("label",dt,[G(n(s(d)("description"))+" ",1),pt]),H(e("textarea",{id:"project_description","onUpdate:modelValue":o[1]||(o[1]=l=>c.value=l),name:"project_description",cols:"30",rows:"10",class:"c-field__input",required:""},null,512),[[ie,c.value]])])]),e("div",_t,[e("div",mt,[e("label",ft,n(s(d)("tags")),1),R(Fe,{id:"tags",modelValue:y.value,"onUpdate:modelValue":o[2]||(o[2]=l=>y.value=l)},null,8,["modelValue"]),e("small",ht,"("+n(s(d)("tagsHints"))+")",1)])])]),e("fieldset",vt,[e("div",gt,[e("div",xt,[bt,e("small",Et,n(s(d)("imageHint")),1),e("input",{ref_key:"imageUploadInput",ref:J,type:"file",name:"image_upload",accept:"image/*",class:"u-mts",onChange:_e},null,544),e("input",{ref_key:"imageUrlInput",ref:oe,type:"text",name:"image_url",value:w.value,class:"c-field__input c-input_project_image_url u-mts",placeholder:"URL",onInput:pe},null,40,yt),e("div",jt,[e("section",wt,[e("div",{ref_key:"imgCropperElement",ref:T,class:"img-cropper c-project_cropper-editor"},[R(s(De),{ref_key:"cropper",ref:j,"auto-crop-area":1,src:D.value,preview:".preview"},null,8,["src"])],512),P.value?(_(),b("div",kt,[e("button",{type:"button",class:"c-button u-mrs",disabled:!P.value,onClick:I(fe,["prevent"])},Vt,8,Pt),e("button",{type:"button",class:"c-button c-button-cancel",disabled:!P.value,onClick:I(he,["prevent"])},Tt,8,Ct),e("button",{type:"button",class:"c-button c-button-delete",disabled:!P.value,onClick:I(ve,["prevent"])},[e("span",Ft,n(s(d)("delete")),1)],8,It)])):V("",!0)]),q.value?(_(),b("section",Lt,[e("div",Mt,[Dt,e("img",{src:q.value,alt:"Cropped Image"},null,8,At)])])):V("",!0)])])])]),e("fieldset",qt,[e("div",St,[e("div",Nt,[e("span",$t,n(s(d)("projectType")),1),e("label",Ht,[H(e("input",{"onUpdate:modelValue":o[3]||(o[3]=l=>v.value=l),type:"radio",name:"projectType",value:!0,class:"c-field__input"},null,512),[[ne,v.value]]),e("span",Bt,n(s(d)("localProject")),1)]),e("label",Gt,[H(e("input",{"onUpdate:modelValue":o[4]||(o[4]=l=>v.value=l),type:"radio",name:"projectType",value:!1,class:"c-field__input"},null,512),[[ne,v.value]]),e("span",zt,n(s(d)("externalProject")),1)])])])]),v.value?V("",!0):(_(),b("fieldset",Ot,[e("div",Wt,[R(Xe,{modelValue:W.value,"onUpdate:modelValue":o[5]||(o[5]=l=>W.value=l)},null,8,["modelValue"])]),e("div",Jt,[R(Be,{modelValue:O.value,"onUpdate:modelValue":o[6]||(o[6]=l=>O.value=l)},null,8,["modelValue"])])])),v.value?(_(),b("fieldset",Zt,[e("div",Xt,[e("div",Kt,[e("label",Qt,n(s(d)("README")),1),R(Le,{id:"readme",modelValue:M.value,"onUpdate:modelValue":o[7]||(o[7]=l=>M.value=l),"has-relative-urls":!0},null,8,["modelValue"])])])])):V("",!0),e("fieldset",Yt,[R(Me,{loading:s(F).loading||se.value,label:s(d)("createProject"),"show-icon":!0,class:"u-color-invert"},null,8,["loading","label"])])],544)]))}});export{fo as default};
2//# sourceMappingURL=ProjectCreate.ce.fd19725d.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.