Commit 5c02cbd7 authored by Eric Seigne's avatar Eric Seigne
Browse files

avancees pour modification d'une LDF, mise en conformite des noms des champs...

avancees pour modification d'une LDF, mise en conformite des noms des champs de l'app avec le serveur pour simplifier le code
parent 5f66a32e
......@@ -69,14 +69,14 @@ ons-row {
#ladate {
width: 200px;
}
#depart, #arrivee, #objet {
#depart, #arrivee, #label {
width: 150px;
}
label[for=ht], label[for=ttc], label[for=tva1], label[for=tva2], label[for=tva3], label[for=tva4], label[for=distance] {
label[for=ht], label[for=ttc], label[for=tvaVal1], label[for=tvaVal2], label[for=tvaVal3], label[for=tvaVal4], label[for=distance] {
width: 40px;
top: 10px;
}
#ht, #ttc, #tva1, #tva2, #tva3, #tva4, #distance {
#ht, #ttc, #tvaVal1, #tvaVal2, #tvaVal3, #tvaVal4, #distance {
width: 260px;
}
#listeDepart, #listeArrivee, #listeObjets {
......@@ -105,14 +105,14 @@ ons-row {
#ladate {
width: 230px;
}
#depart, #arrivee, #objet {
#depart, #arrivee, #label {
width: 180px;
}
label[for=ht], label[for=ttc], label[for=tva1], label[for=tva2], label[for=tva3], label[for=tva4], label[for=distance] {
label[for=ht], label[for=ttc], label[for=tvaVal1], label[for=tvaVal2], label[for=tvaVal3], label[for=tvaVal4], label[for=distance] {
width: 40px;
top: 10px;
}
#ht, #ttc, #tva1, #tva2, #tva3, #tva4, #distance {
#ht, #ttc, #tvaVal1, #tvaVal2, #tvaVal3, #tvaVal4, #distance {
width: 280px;
}
#listeDepart, #listeArrivee, #listeObjets {
......@@ -140,14 +140,14 @@ ons-row {
#ladate {
width: 230px;
}
#depart, #arrivee, #objet {
#depart, #arrivee, #label {
width: 180px;
}
label[for=ht], label[for=ttc], label[for=tva1], label[for=tva2], label[for=tva3], label[for=tva4], label[for=distance] {
label[for=ht], label[for=ttc], label[for=tvaVal1], label[for=tvaVal2], label[for=tvaVal3], label[for=tvaVal4], label[for=distance] {
width: 40px;
top: 10px;
}
#ht, #ttc, #tva1, #tva2, #tva3, #tva4, #distance {
#ht, #ttc, #tvaVal1, #tvaVal2, #tvaVal3, #tvaVal4, #distance {
width: 280px;
}
#listeDepart, #listeArrivee, #listeObjets {
......@@ -195,16 +195,16 @@ label[for=ladate], label[for=objet] {
font-style: italic;
}
#depart, #arrivee, #objet {
#depart, #arrivee, #label {
float: left;
}
label[for=ht], label[for=ttc], label[for=tva1], label[for=tva2], label[for=tva3], label[for=tva4], label[for=distance] {
label[for=ht], label[for=ttc], label[for=tvaVal1], label[for=tvaVal2], label[for=tvaVal3], label[for=tvaVal4], label[for=distance] {
float: right;
position: relative;
}
#ht, #ttc, #tva1, #tva2, #tva3, #tva4, #distance {
#ht, #ttc, #tvaVal1, #tvaVal2, #tvaVal3, #tvaVal4, #distance {
float: left;
}
......
<div class="row">
<div class="column">
<h2>Détail: frais n°<div id="ldfId"></div></h2>
<h2>Détail: frais n°<div id="ldfId"></div>
</h2>
</div>
</div>
......@@ -15,11 +16,11 @@
</div>
<script type="text/javascript">
$(document).ready(function() {
$(document).ready(function () {
setPageTitle("Details Frais");
let el = document.querySelector('#contenuLDFImage');
let pz = new PinchZoom(el,{});
let pz = new PinchZoom(el, {});
$('#ldfId').text(localGetData("ldfId"));
$('#contenuLDF').empty();
......@@ -31,24 +32,27 @@
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'Bearer ' + localGetData("api_token"));
},
success: function(data) {
myDebug(data);
success: function (result) {
dataLDF = result;
//Pour forcer la persistance des données ... il faut modifier l'objet...
dataLDF['moyenPaiement'] = result.paiement_slug;
myDebug(dataLDF);
globalNetworkResponse = Date.now();
var ladate = dateFormatDDMMYYYY(data.ladate);
var ladate = dateFormatDDMMYYYY(dataLDF.ladate);
var loadthis = "";
if(data.isUpdatable) {
loadthis = "<a href=\"\">Modifier ce frais</a>";
if (dataLDF.isUpdatable) {
loadthis = "<input type=\"button\" onclick=\"gotoPage('frais-" + dataLDF.frais_slug + ".html',false);\" value=\"Modifier cet enregistrement\" />";
}
else {
loadthis = "<i>Document archivé, non modifiable</i>";
}
loadthis += "<ul><li><b>Date :</b> " + ladate + "</li><li><b>Objet :</b> " + data.texte + "</li><li><b>Montant :</b> " + data.montant + "</li></ul>";
loadthis += "<ul><li><b>Date :</b> " + ladate + "</li><li><b>Objet :</b> " + dataLDF.texte + "</li><li><b>Montant :</b> " + dataLDF.montant + "</li></ul>";
$(loadthis).hide().appendTo($('#contenuLDF')).fadeIn(1000);
//$('#contenuLDFImage').empty();
//image du genre /ldfImages/demo@cap-rel.fr/20191009-restauration-louis-2K4hoz5pdy.jpeg
var imgURI = localGetData("api_server") + "/api/ldfImages/" + localGetData("email") + "/" + data.fileName;
var imgURI = localGetData("api_server") + "/api/ldfImages/" + localGetData("email") + "/" + dataLDF.fileName;
$.ajax({
url: imgURI,
timeout: 5000,
......@@ -56,15 +60,16 @@
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'Bearer ' + localGetData("api_token"));
},
success: function(dataImg) {
success: function (dataImg) {
globalNetworkResponse = Date.now();
hideWait();
//var image = "<img id=\"imageZoomable\" src=\"data:image;base64," + dataImg + "\" style=\"min-height: 200px; max-width: 200px;\"/>";
//$(image).hide().appendTo($('#contenuLDFImage')).fadeIn(1000);
let imageSrc = "data:image;base64," + dataImg;
$("#imageZoomable").attr("src",imageSrc);
$("#imageZoomable").attr("src", imageSrc);
dataLDF.photoFacturette = imageSrc;
},
error: function(result) {
error: function (result) {
hideWait();
//pas trop grave pour l'image :)
//alert('error');
......@@ -73,7 +78,7 @@
},
error: function(result) {
error: function (result) {
hideWait();
//TODO message a faire
//alert('Erreur de transfert réseau ...');
......
<form id="leform" name="leform">
<input type="hidden" name="typeFrais" value="carburant">
<input type="hidden" id="updateID" name="updateID" value="0">
<div class="row">
<input type="text" id="photoFacturette" name="photoFacturette" value="">
</div>
......@@ -21,10 +22,10 @@
<label for="ttc">TTC</label>
<input name="ttc" id="ttc" type="number" inputmode="decimal" placeholder="Montant TTC">
<input name="label" id="objet" type="hidden" value="Carburant">
<input name="label" id="label" type="hidden" value="Carburant">
<!-- <ons-list style="clear: both;">
<input required name="label" id="objet" type="text" placeholder="Informations...">
<ons-list-item id="listeObjets" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#objet">
<input required name="label" id="label" type="text" placeholder="Informations...">
<ons-list-item id="listeObjets" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#label">
Favoris...
</ons-list-item>
</ons-list> -->
......
<form id="leform" name="leform">
<input type="hidden" name="typeFrais" value="divers">
<input type="hidden" id="updateID" name="updateID" value="0">
<div class="row">
<input type="text" id="photoFacturette" name="photoFacturette" value="">
</div>
......@@ -21,33 +22,33 @@
<div id="interobjets"></div>
<input type="button" onclick="computeHTAmount(20, tva4);" value="Calcul TVA 20% automatique" />
<input type="button" onclick="computeHTAmount(20, tvaVal4);" value="Calcul TVA 20% automatique" />
<label for="tva1">2.10%</label>
<input type="hidden" name="tauxtva1" value="2.1">
<input name="tva1" id="tva1" type="number" inputmode="decimal" placeholder="Montant TVA 2.10%">
<label for="tvaVal1">2.10%</label>
<input type="hidden" name="tvaTx1" value="2.1">
<input name="tvaVal1" id="tvaVal1" type="number" inputmode="decimal" placeholder="Montant TVA 2.10%">
<div id="interobjets"></div>
<label for="tva2">5.5%</label>
<input type="hidden" name="tauxtva2" value="5.5">
<input name="tva2" id="tva2" type="number" inputmode="decimal" placeholder="Montant TVA 5.5%">
<label for="tvaVal2">5.5%</label>
<input type="hidden" name="tvaTx2" value="5.5">
<input name="tvaVal2" id="tvaVal2" type="number" inputmode="decimal" placeholder="Montant TVA 5.5%">
<div id="interobjets"></div>
<label for="tva3">10%</label>
<input type="hidden" name="tauxtva3" value="10">
<input name="tva3" id="tva3" type="number" inputmode="decimal" placeholder="Montant TVA 10%">
<label for="tvaVal3">10%</label>
<input type="hidden" name="tvaTx3" value="10">
<input name="tvaVal3" id="tvaVal3" type="number" inputmode="decimal" placeholder="Montant TVA 10%">
<div id="interobjets"></div>
<label for="tva4">20%</label>
<input type="hidden" name="tauxtva4" value="20">
<input name="tva4" id="tva4" type="number" inputmode="decimal" placeholder="Montant TVA 20%">
<label for="tvaVal4">20%</label>
<input type="hidden" name="tvaTx4" value="20">
<input name="tvaVal4" id="tvaVal4" type="number" inputmode="decimal" placeholder="Montant TVA 20%">
<ons-list style="clear: both;">
<input required name="label" id="objet" type="text" placeholder="Objet ...">
<ons-list-item id="listeObjets" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#objet">
<input required name="label" id="label" type="text" placeholder="Objet ...">
<ons-list-item id="listeObjets" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#label">
Favoris...
</ons-list-item>
</ons-list>
......
<form id="leform" name="leform">
<input type="hidden" name="typeFrais" value="hotel">
<input type="hidden" id="updateID" name="updateID" value="0">
<div class="row">
<input type="text" id="photoFacturette" name="photoFacturette" value="">
</div>
......@@ -26,8 +27,8 @@
<div id="interobjets"></div>
<ons-list style="clear: both;">
<input required name="label" id="objet" type="text" placeholder="Hôtel ...">
<ons-list-item id="listeObjets" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#objet">
<input required name="label" id="label" type="text" placeholder="Hôtel ...">
<ons-list-item id="listeObjets" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#label">
Favoris...
</ons-list-item>
</ons-list>
......
<form id="leform" name="leform">
<input type="hidden" name="typeFrais" value="ik">
<input type="hidden" id="updateID" name="updateID" value="0">
<div class="row">
<div class="column">
......@@ -10,14 +11,14 @@
<ons-list style="clear: both;">
<input required name="depart" id="depart" type="text" placeholder="Ville de départ">
<ons-list-item id="listeDepart" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#objet">
<ons-list-item id="listeDepart" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#label">
Favoris...
</ons-list-item>
</ons-list>
<ons-list style="clear: both;">
<input required name="arrivee" id="arrivee" type="text" placeholder="Ville d'arrivée">
<ons-list-item id="listeArrivee" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#objet">
<ons-list-item id="listeArrivee" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#label">
Favoris...
</ons-list-item>
</ons-list>
......@@ -30,8 +31,8 @@
<input required name="distance" id="distance" type="number" inputmode="decimal" placeholder="Entrez ici la distance en km" value="" style="text-overflow: 'km';">
<ons-list style="clear: both;">
<input required name="label" id="objet" type="text" placeholder="Objet: Déplacement client..." value="">
<ons-list-item id="listeObjets" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#objet">
<input required name="label" id="label" type="text" placeholder="Objet: Déplacement client..." value="">
<ons-list-item id="listeObjets" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#label">
Favoris...
</ons-list-item>
</ons-list>
......
<form id="leform" name="leform">
<input type="hidden" name="typeFrais" value="peage">
<input type="hidden" id="updateID" name="updateID" value="0">
<div class="row">
<input type="text" id="photoFacturette" name="photoFacturette" value="">
</div>
......@@ -22,14 +23,14 @@
<div id="interobjets"></div>
<input type="button" onclick="computeHT(20, ht);" value="Calcul HT TVA 20% automatique" />
<input type="hidden" name="tauxtva1" value="20">
<input type="hidden" name="tvaTx1" value="20">
<label for="ht">HT</label>
<input name="ht" id="ht" type="number" inputmode="decimal" placeholder="Montant HT">
<ons-list style="clear: both;">
<input required name="label" id="objet" type="text" placeholder="Objet ...">
<ons-list-item id="listeObjets" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#objet">
<input required name="label" id="label" type="text" placeholder="Objet ...">
<ons-list-item id="listeObjets" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#label">
Favoris...
</ons-list-item>
</ons-list>
......
<form id="leform" name="leform">
<input type="hidden" name="typeFrais" value="restauration" />
<input type="hidden" id="updateID" name="updateID" value="0">
<div class="row">
<input type="text" id="photoFacturette" name="photoFacturette" value="">
</div>
......@@ -21,27 +22,27 @@
<div id="interobjets"></div>
<input type="button" onclick="computeHTAmount(10, tva2);" value="Calcul TVA 10% automatique" />
<input type="button" onclick="computeHTAmount(10, tvaVal2);" value="Calcul TVA 10% automatique" />
<label for="tva1">5.5%</label>
<input type="hidden" name="tauxtva1" value="5.5">
<input name="tva1" id="tva1" type="number" inputmode="decimal" placeholder="Montant TVA 5.5%">
<label for="tvaVal1">5.5%</label>
<input type="hidden" name="tvaTx1" value="5.5">
<input name="tvaVal1" id="tvaVal1" type="number" inputmode="decimal" placeholder="Montant TVA 5.5%">
<div id="interobjets"></div>
<label for="tva2">10%</label>
<input type="hidden" name="tauxtva2" value="10">
<input name="tva2" id="tva2" type="number" inputmode="decimal" placeholder="Montant TVA 10%">
<label for="tvaVal2">10%</label>
<input type="hidden" name="tvaTx2" value="10">
<input name="tvaVal2" id="tvaVal2" type="number" inputmode="decimal" placeholder="Montant TVA 10%">
<div id="interobjets"></div>
<label for="tva3">20%</label>
<input type="hidden" name="tauxtva3" value="20">
<input name="tva3" id="tva3" type="number" inputmode="decimal" placeholder="Montant TVA 20%">
<label for="tvaVal3">20%</label>
<input type="hidden" name="tvaTx3" value="20">
<input name="tvaVal3" id="tvaVal3" type="number" inputmode="decimal" placeholder="Montant TVA 20%">
<ons-list style="clear: both;">
<input required name="label" id="objet" type="text" placeholder="Restaurant ...">
<ons-list-item id="listeObjets" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#objet">
<input required name="label" id="label" type="text" placeholder="Restaurant ...">
<ons-list-item id="listeObjets" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#label">
Favoris...
</ons-list-item>
</ons-list>
......
<form id="leform" name="leform">
<input type="hidden" name="typeFrais" value="taxi">
<input type="hidden" id="updateID" name="updateID" value="0">
<div class="row">
<input type="text" id="photoFacturette" name="photoFacturette" value="">
</div>
......@@ -22,8 +23,8 @@
<div id="interobjets"></div>
<ons-list style="clear: both;">
<input required name="label" id="objet" type="text" placeholder="Taxi pour ...">
<ons-list-item id="listeObjets" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#objet">
<input required name="label" id="label" type="text" placeholder="Taxi pour ...">
<ons-list-item id="listeObjets" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#label">
Favoris...
</ons-list-item>
</ons-list>
......
<form id="leform" name="leform">
<input type="hidden" name="typeFrais" value="train">
<input type="hidden" id="updateID" name="updateID" value="0">
<div class="row">
<input type="text" id="photoFacturette" name="photoFacturette" value="">
</div>
......@@ -23,8 +24,8 @@
<div id="interobjets"></div>
<ons-list style="clear: both;">
<input required name="label" id="objet" type="text" placeholder="Voyage vers ... pour ...">
<ons-list-item id="listeObjets" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#objet">
<input required name="label" id="label" type="text" placeholder="Voyage vers ... pour ...">
<ons-list-item id="listeObjets" expandable data-role="listview" data-filter="true" data-filter-reveal="true" data-input="#label">
Favoris...
</ons-list-item>
</ons-list>
......
......@@ -436,9 +436,6 @@
$(formId).append('Serveur: <b>' + nom + "</b>");
localStoreData("api_server", adresse);
localStoreData("name_server", nom);
if (adresse.match(/dev/) === "") {
globalDevMode = false;
}
// document.querySelector('ons-list-item').hideExpansion();
}
......
......@@ -57,6 +57,13 @@ function initialiseForm() {
// myDebug('feedPaiements ...');
$('#feedPaiements').load('parts/paiement.html', function () {
$('#feedPaiements').trigger("create");
if (dataLDF != "") {
if (dataLDF['moyenPaiement']) {
myDebug("Choix du moyen de paiement");
$('#moyenPaiement-' + dataLDF['moyenPaiement']).click();
myDebug("On a cliqué");
}
}
});
}
......
......@@ -20,7 +20,6 @@ var globalSyncInProgress = false; // Pour savoir si on est en phase de syn
var globalAppVersion = "1.0.9"; // mis à jour automatiquement à partir du fichier config.xml lors du build android
// **********************************************************************
//liste des donnees que le serveur peut eventuellement échanger avec nous (factorisation de code)
var globalSrvKeys = ['email', 'api_token', 'firstname', 'name', 'adresse', 'cp', 'ville', 'pays', 'send_copy_to', 'compta_email', 'compta_ik', 'compta_peage', 'compta_hotel', 'compta_train', 'compta_carburant', 'compta_taxi', 'compta_restauration', 'compta_divers', 'compta_compteperso', 'compta_tvadeductible', 'official_app_version', 'mode_simple'];
......
......@@ -2,6 +2,8 @@
* (c) Éric Seigne <eric.seigne@cap-rel.fr> - 2019 - GNU AGPLv3
*/
var dataLDF = "";
// Wait for Cordova to connect with the device
//
document.addEventListener("deviceready", NDFonDeviceReady, false);
......@@ -500,7 +502,7 @@ function feedObjets(objets) {
}
function selectLabel(objet) {
if ((typeof objets !== 'undefined') && (objets != null) && (objets != "")) {
$('#objet').val(objet);
$('#label').val(objet);
$('#listeObjets').hide();
}
}
......@@ -521,8 +523,12 @@ function gotoPage(destination, saveHistory = true) {
if (saveHistory) {
historique(destination);
}
$('#container').load(destination);
globalCurrentPage = destination;
$('#container').load(destination, function () {
globalCurrentPage = destination;
if (dataLDF != "") {
completePageAfterGoto(dataLDF);
}
});
//Si on est sur un formulaire on remplace le bouton menu par un bouton save
if (destination.indexOf("upload") >= 0) {
......@@ -531,6 +537,33 @@ function gotoPage(destination, saveHistory = true) {
menu.close();
}
//sera appellee lorsque la page sera bien chargee
function completePageAfterGoto(dataLDF) {
myDebug("completePageAfterGoto ...");
myDebug(dataLDF['id']);
document.getElementById("updateID").value = dataLDF['id'];
fieldsToValidate = ['nom', 'arrivee', 'depart', 'distance', 'label', 'ladate', 'ttc', 'typeFrais', 'moyenPaiement', 'photoFacturette'];
for (let i = 0; i < fieldsToValidate.length; i++) {
field = fieldsToValidate[i];
//cas particuliers
switch (field) {
case 'photoFacturette':
myDebug("On affiche l'image");
$("#smallImage").attr("src", dataLDF[field]);
break;
case 'moyenPaiement':
//cas particulier car il faut attendre que feedPaiement soit chargé ...
break;
default:
if (document.getElementById(field)) {
myDebug("On essaye de completer la valeur de " + field + " par ce qu'on a du serveur " + dataLDF[field]);
document.getElementById(field).value = dataLDF[field];
}
}
}
}
//Demande si on quitte l'appli ...
function askQuitOrMenu() {
myDebug('askQuitOrMenu, titre en cours = ' + globalCurrentTitle + " / " + globalCurrentPage);
......@@ -586,7 +619,7 @@ function historique(page) {
function genericCheckForm() {
let probleme = "";
// myDebug("genericCheckForm");
fieldsToValidate = ['api_server', 'nom', 'arrivee', 'depart', 'distance', 'energievalue', 'label', 'ladate', 'email', 'objet', 'password', 'puissancevalue', 'ttc', 'typeFrais', 'typevalue', 'photoFacturette'];
fieldsToValidate = ['api_server', 'nom', 'arrivee', 'depart', 'distance', 'energievalue', 'label', 'ladate', 'email', 'password', 'puissancevalue', 'ttc', 'typeFrais', 'typevalue', 'photoFacturette'];
fieldsTexte = ["Version de l'application", "Nom", "Arrivée", "Départ", "Distance", "Type de carburant", "Label", "La date", "Courrier électronique", "Objet", "Mot de passe", "Puissance du véhicule", "Montant TTC", "Type de frais", "Type", "Photo de la facturette"];
//Si le compte utilisateur est configuré sur le serveur pour etre en mode simple on exige alors que la photo ...
......@@ -691,7 +724,7 @@ function rSyncOne(idToSync) {
ons.ready(function () {
document.addEventListener('deviceready', function () {
$('#objet').keyup(function () {
$('#label').keyup(function () {
$('#listeObjets').show();
});
......
......@@ -3,11 +3,11 @@ Paiement:
<fieldset data-role="controlgroup" data-type="horizontal" data-mini="true">
<div class="segment" style="width:100%; margin: 0 auto;">
<div class="segment__item">
<input type="radio" name="moyenPaiement" id="moyenPaiement-1" value="perso" checked="checked" class="segment__input" />
<input type="radio" name="moyenPaiement" id="moyenPaiement-perso" value="perso" checked="checked" class="segment__input" />
<div class="segment__button">Personnel</div>
</div>
<div class="segment__item">
<input type="radio" name="moyenPaiement" id="moyenPaiement-2" value="cb-pro" class="segment__input" />
<input type="radio" name="moyenPaiement" id="moyenPaiement-cb-pro" value="cb-pro" class="segment__input" />
<div class="segment__button">Pro (CB)</div>
</div>
<!-- <div class="segment__item">
......@@ -15,7 +15,7 @@ Paiement:
<div class="segment__button">Chèque Pro</div>
</div> -->
<div class="segment__item">
<input type="radio" name="moyenPaiement" id="moyenPaiement-3" value="especes-pro" class="segment__input" />
<input type="radio" name="moyenPaiement" id="moyenPaiement-especes-pro" value="especes-pro" class="segment__input" />
<div class="segment__button">Pro (espèces)</div>
</div>
</div>
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment