@@ -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 ( proxy ) {
@@ -1511,8 +1515,8 @@ var mv = (function () {
1511
1515
</li>`
1512
1516
} ] ;
1513
1517
1514
- let badgeLabel = app . publish == "true" ? mviewer . tr ( "publish" ) : mviewer . tr ( "draft" ) ;
1515
- let badgeColor = app . publish == "true" ? "badge-publish" : "badge-draft" ;
1518
+ let badgeLabel = app . relation ? mviewer . tr ( "publish" ) : mviewer . tr ( "draft" ) ;
1519
+ let badgeColor = app . relation ? "badge-publish" : "badge-draft" ;
1516
1520
let badge = _conf . is_php ? "" : `<span class="badge ${ badgeColor } ">${ badgeLabel } </span>` ;
1517
1521
const items = `
1518
1522
<div class="list-group-item">
@@ -1961,6 +1965,49 @@ var mv = (function () {
1961
1965
'data-url' :row . xml
1962
1966
}
1963
1967
} ,
1968
+ nameNormalizer : ( str = "" ) => {
1969
+ return str . normalize ( "NFD" ) . replace ( / [ \u0300 - \u036f ] / g, "" ) . replace ( / [ ^ \w ] / g, '_' ) . replace ( / \s / g, '_' ) . toLowerCase ( )
1970
+ } ,
1971
+ onChangeName : ( { value} , defaultValue ) => {
1972
+ document . querySelector ( "#sendPublishApp" ) . disabled = conflict && v === defaultName ;
1973
+ } ,
1974
+ showNamePublishModal : ( id , name = "" , conflict = false ) => {
1975
+ if ( config . relation ) {
1976
+ return mv . publish ( config . id , config . relation )
1977
+ }
1978
+ const defaultName = name ? mv . nameNormalizer ( name ) : mv . nameNormalizer ( document . querySelector ( "#opt-title" ) . value ) ;
1979
+ const publishAppModal = new bootstrap . Modal ( '#genericModal' ) ;
1980
+ const question = conflict ? "Ce nom existe déjà ! <br> Vous pouvez changer le nom ou annuler." : "Quel nom souhaitez vous utiliser pour la publication ?"
1981
+ genericModalContent . innerHTML = "" ;
1982
+ genericModalContent . innerHTML = `
1983
+ <div class="modal-header">
1984
+ <h5 class="modal-title" i18n="modal.publish.title">Personnalisation</h5>
1985
+ <button type="button" onclick="" class="close" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
1986
+ </div>
1987
+ <div class="modal-body">
1988
+ <p>
1989
+ <strong>${ question } </strong>
1990
+ </p>
1991
+ <!-- input-->
1992
+ <div class="form-group">
1993
+ <label for="relationPublishName">Nouveau nom :</label>
1994
+ <input onchange="${ conflict } ? : mv.onChangeName(this, ${ defaultName } ) : null " maxlength="20" minlength="3" value="${ defaultName } " type="text" class="form-control" id="relationPublishName">
1995
+ </div>
1996
+ <!-- buttons-->
1997
+ <p><strong>Que souhaitez-vous faire ?</strong></p>
1998
+ <a id="sendPublishApp" class="cardsClose save-close zoomCard" data-bs-dismiss="modal" onclick="mv.publish('${ id } ', mv.nameNormalizer(document.getElementById('relationPublishName')?.value))">
1999
+ <i class="ri-tools-fill"></i>
2000
+ <span i18n="tabs.publication.publish_title">${ mviewer . tr ( conflict ? "tabs.publication.publish_retry" : "tabs.publication.publish_title" ) } </span>
2001
+ </a>
2002
+ <a class="cardsClose notsave-close zoomCard" onclick="" data-bs-dismiss="modal">
2003
+ <i class="ri-home-2-line"></i>
2004
+ <span i18n="cancel">Annuler</span>
2005
+ </a>
2006
+ <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>
2007
+ </div>
2008
+ ` ;
2009
+ publishAppModal . show ( ) ;
2010
+ } ,
1964
2011
showPublishModal : ( shareLink = "" , iframeLink = "" , draftLink = "" ) => {
1965
2012
const publishModal = new bootstrap . Modal ( '#genericModal' ) ;
1966
2013
genericModalContent . innerHTML = "" ;
@@ -1999,16 +2046,16 @@ var mv = (function () {
1999
2046
` ;
2000
2047
publishModal . show ( ) ;
2001
2048
} ,
2002
- publish : ( id ) => {
2049
+ publish : ( id , name = "" ) => {
2003
2050
if ( ! id ) {
2004
2051
return alertCustom ( "L'ID n'est pas renseigné. Veuillez contacter un administrateur." , "danger" ) ;
2005
2052
}
2006
2053
if ( ! config . isFile ) {
2007
2054
return alertCustom ( "Enregistrez une premère fois avant de publier !" , "danger" ) ;
2008
2055
}
2009
- fetch ( `${ _conf . api } /${ id } /publish` )
2056
+ fetch ( `${ _conf . api } /${ id } /publish/ ${ name } ` , )
2010
2057
. then ( r => {
2011
- return r . ok ? r . json ( ) : Promise . reject ( r )
2058
+ return r . ok ? r . json ( ) : Promise . reject ( r ) ;
2012
2059
} )
2013
2060
. then ( data => {
2014
2061
if ( ! _conf ?. mviewer_publish ) {
@@ -2026,15 +2073,19 @@ var mv = (function () {
2026
2073
alertCustom ( "L'application a bien été publiée !" , "success" ) ;
2027
2074
} )
2028
2075
. catch ( err => {
2029
- alertCustom ( "Une erreur s'est produite. Veuillez contacter un administrateur." , "danger" ) ;
2076
+ if ( err . status == 409 ) {
2077
+ mv . showNamePublishModal ( id , name , true ) ;
2078
+ } else {
2079
+ alertCustom ( "Une erreur s'est produite. Veuillez contacter un administrateur." , "danger" ) ;
2080
+ }
2030
2081
} )
2031
2082
} ,
2032
2083
refreshOnPublish : ( file ) => {
2033
2084
const url = _conf . mviewer_instance + file ;
2034
2085
loadApplicationParametersFromRemoteFile ( url ) ;
2035
2086
} ,
2036
2087
unpublish : ( id ) => {
2037
- fetch ( `${ _conf . api } /${ id } /publish` , { method : "DELETE" } )
2088
+ fetch ( `${ _conf . api } /${ id } /publish/ ${ config . relation } ` , { method : "DELETE" } )
2038
2089
. then ( r => {
2039
2090
return r . ok ? r . json ( ) : Promise . reject ( r )
2040
2091
} )
0 commit comments