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