@@ -1131,6 +1131,7 @@ var mv = (function () {
1131
1131
var publisher = "anonymous" ;
1132
1132
var organisation = _userInfo ?. groupFullName || "" ;
1133
1133
var description = document . querySelector ( "#createVersionInput" ) ?. value || data . description
1134
+ let relation = data ?. relation || "" ;
1134
1135
const UUID = data . id ;
1135
1136
const keyworkds = document . querySelector ( "#optKeywords" ) ?. value ;
1136
1137
@@ -1219,13 +1220,7 @@ var mv = (function () {
1219
1220
} ) ;
1220
1221
} ,
1221
1222
1222
- parseApplication ( xml ) {
1223
- const app_identifier = xml . getElementsByTagName ( "dc:identifier" ) [ 0 ] ?. innerHTML
1224
- const app_keywords = xml . getElementsByTagName ( "dc:keywords" ) [ 0 ] ?. innerHTML ;
1225
- const dateXml = xml . getElementsByTagName ( "dc:date" ) [ 0 ] ?. innerHTML ;
1226
- const relation = xml . getElementsByTagName ( "dc:relation" ) [ 0 ] ?. innerHTML ;
1227
- const isPublish = xml . getElementsByTagName ( "config" ) [ 0 ] . getAttribute ( "publish" ) == "true" ;
1228
-
1223
+ manageDraftBadge ( isPublish ) {
1229
1224
if ( isPublish ) {
1230
1225
document . querySelector ( "#toolsbarStudio-unpublish" ) . classList . remove ( "d-none" ) ;
1231
1226
document . querySelector ( ".badge-publish" ) . classList . remove ( "d-none" ) ;
@@ -1235,11 +1230,20 @@ var mv = (function () {
1235
1230
document . querySelector ( ".badge-publish" ) . classList . add ( "d-none" ) ;
1236
1231
document . querySelector ( ".badge-draft" ) . classList . remove ( "d-none" ) ;
1237
1232
}
1233
+ } ,
1234
+
1235
+ parseApplication ( xml ) {
1236
+ const app_identifier = xml . getElementsByTagName ( "dc:identifier" ) [ 0 ] ?. innerHTML
1237
+ const app_keywords = xml . getElementsByTagName ( "dc:keywords" ) [ 0 ] ?. innerHTML ;
1238
+ const dateXml = xml . getElementsByTagName ( "dc:date" ) [ 0 ] ?. innerHTML ;
1239
+ const relation = xml . getElementsByTagName ( "dc:relation" ) [ 0 ] ?. innerHTML ;
1240
+
1241
+ mv . manageDraftBadge ( relation )
1238
1242
if ( _conf . is_php && onlineCard ) {
1239
1243
onlineCard . classList . add ( "d-none" )
1240
1244
}
1241
1245
1242
- newConfiguration ( { id : app_identifier , isFile : true , date : dateXml , publish : isPublish , relation : relation } ) ;
1246
+ newConfiguration ( { id : app_identifier , isFile : true , date : dateXml , relation : relation } ) ;
1243
1247
var proxy = $ ( xml ) . find ( "proxy" ) ;
1244
1248
var olscompletion = $ ( xml ) . find ( "olscompletion" ) ;
1245
1249
if ( olscompletion && olscompletion . attr ( "type" ) ) {
@@ -1510,8 +1514,8 @@ var mv = (function () {
1510
1514
</li>`
1511
1515
} ] ;
1512
1516
1513
- let badgeLabel = app . publish == "true" ? mviewer . tr ( "publish" ) : mviewer . tr ( "draft" ) ;
1514
- let badgeColor = app . publish == "true" ? "badge-publish" : "badge-draft" ;
1517
+ let badgeLabel = app . relation ? mviewer . tr ( "publish" ) : mviewer . tr ( "draft" ) ;
1518
+ let badgeColor = app . relation ? "badge-publish" : "badge-draft" ;
1515
1519
let badge = _conf . is_php ? "" : `<span class="badge ${ badgeColor } ">${ badgeLabel } </span>` ;
1516
1520
const items = `
1517
1521
<div class="list-group-item">
@@ -1905,6 +1909,49 @@ var mv = (function () {
1905
1909
}
1906
1910
return mv . getListeApplications ( value )
1907
1911
} ,
1912
+ nameNormalizer : ( str = "" ) => {
1913
+ return str . normalize ( "NFD" ) . replace ( / [ \u0300 - \u036f ] / g, "" ) . replace ( / [ ^ \w ] / g, '_' ) . replace ( / \s / g, '_' ) . toLowerCase ( )
1914
+ } ,
1915
+ onChangeName : ( { value} , defaultValue ) => {
1916
+ document . querySelector ( "#sendPublishApp" ) . disabled = conflict && v === defaultName ;
1917
+ } ,
1918
+ showNamePublishModal : ( id , name = "" , conflict = false ) => {
1919
+ if ( config . relation ) {
1920
+ return mv . publish ( config . id , config . relation )
1921
+ }
1922
+ const defaultName = name ? mv . nameNormalizer ( name ) : mv . nameNormalizer ( document . querySelector ( "#opt-title" ) . value ) ;
1923
+ const publishAppModal = new bootstrap . Modal ( '#genericModal' ) ;
1924
+ const question = conflict ? "Ce nom existe déjà ! <br> Vous pouvez changer le nom ou annuler." : "Quel nom souhaitez vous utiliser pour la publication ?"
1925
+ genericModalContent . innerHTML = "" ;
1926
+ genericModalContent . innerHTML = `
1927
+ <div class="modal-header">
1928
+ <h5 class="modal-title" i18n="modal.publish.title">Personnalisation</h5>
1929
+ <button type="button" onclick="" class="close" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
1930
+ </div>
1931
+ <div class="modal-body">
1932
+ <p>
1933
+ <strong>${ question } </strong>
1934
+ </p>
1935
+ <!-- input-->
1936
+ <div class="form-group">
1937
+ <label for="relationPublishName">Nouveau nom :</label>
1938
+ <input onchange="${ conflict } ? : mv.onChangeName(this, ${ defaultName } ) : null " maxlength="20" minlength="3" value="${ defaultName } " type="text" class="form-control" id="relationPublishName">
1939
+ </div>
1940
+ <!-- buttons-->
1941
+ <p><strong>Que souhaitez-vous faire ?</strong></p>
1942
+ <a id="sendPublishApp" class="cardsClose save-close zoomCard" data-bs-dismiss="modal" onclick="mv.publish('${ id } ', mv.nameNormalizer(document.getElementById('relationPublishName')?.value))">
1943
+ <i class="ri-tools-fill"></i>
1944
+ <span i18n="tabs.publication.publish_title">${ mviewer . tr ( conflict ? "tabs.publication.publish_retry" : "tabs.publication.publish_title" ) } </span>
1945
+ </a>
1946
+ <a class="cardsClose notsave-close zoomCard" onclick="" data-bs-dismiss="modal">
1947
+ <i class="ri-home-2-line"></i>
1948
+ <span i18n="cancel">Annuler</span>
1949
+ </a>
1950
+ <a class="returnConf-close" data-bs-target="#genericModal" data-bs-toggle="modal" aria-label="Close"><i class="ri-arrow-left-line"></i> <span i18n="modal.exit.previous">Retour</span></a>
1951
+ </div>
1952
+ ` ;
1953
+ publishAppModal . show ( ) ;
1954
+ } ,
1908
1955
showPublishModal : ( shareLink = "" , iframeLink = "" , draftLink = "" ) => {
1909
1956
const publishModal = new bootstrap . Modal ( '#genericModal' ) ;
1910
1957
genericModalContent . innerHTML = "" ;
@@ -1943,16 +1990,16 @@ var mv = (function () {
1943
1990
` ;
1944
1991
publishModal . show ( ) ;
1945
1992
} ,
1946
- publish : ( id ) => {
1993
+ publish : ( id , name = "" ) => {
1947
1994
if ( ! id ) {
1948
1995
return alertCustom ( "L'ID n'est pas renseigné. Veuillez contacter un administrateur." , "danger" ) ;
1949
1996
}
1950
1997
if ( ! config . isFile ) {
1951
1998
return alertCustom ( "Enregistrez une premère fois avant de publier !" , "danger" ) ;
1952
1999
}
1953
- fetch ( `${ _conf . api } /${ id } /publish` )
2000
+ fetch ( `${ _conf . api } /${ id } /publish/ ${ name } ` , )
1954
2001
. then ( r => {
1955
- return r . ok ? r . json ( ) : Promise . reject ( r )
2002
+ return r . ok ? r . json ( ) : Promise . reject ( r ) ;
1956
2003
} )
1957
2004
. then ( data => {
1958
2005
if ( ! _conf ?. mviewer_publish ) {
@@ -1970,15 +2017,19 @@ var mv = (function () {
1970
2017
alertCustom ( "L'application a bien été publiée !" , "success" ) ;
1971
2018
} )
1972
2019
. catch ( err => {
1973
- alertCustom ( "Une erreur s'est produite. Veuillez contacter un administrateur." , "danger" ) ;
2020
+ if ( err . status == 409 ) {
2021
+ mv . showNamePublishModal ( id , name , true ) ;
2022
+ } else {
2023
+ alertCustom ( "Une erreur s'est produite. Veuillez contacter un administrateur." , "danger" ) ;
2024
+ }
1974
2025
} )
1975
2026
} ,
1976
2027
refreshOnPublish : ( file ) => {
1977
2028
const url = _conf . mviewer_instance + file ;
1978
2029
loadApplicationParametersFromRemoteFile ( url ) ;
1979
2030
} ,
1980
2031
unpublish : ( id ) => {
1981
- fetch ( `${ _conf . api } /${ id } /publish` , { method : "DELETE" } )
2032
+ fetch ( `${ _conf . api } /${ id } /publish/ ${ config . relation } ` , { method : "DELETE" } )
1982
2033
. then ( r => {
1983
2034
return r . ok ? r . json ( ) : Promise . reject ( r )
1984
2035
} )
0 commit comments