projects/genea/out/phpui/edit_depot.php
1.
<?php
2.
 
3.
/*
4.
 
5.
        Formulaire d'édition pour la table : depot.
6.
 
7.
        07/03/2021 10:45
8.
 
9.
        lvardon@laposte.net - 2021
10.
         
11.
        Licence libre
12.
 
13.
*/
14.
 
15.
include_once "dbconnect.php";
16.
include_once "phpdb/class_depot.php";
17.
include_once "phpdb/class_depot_ext.php";
18.
 
19.
if (isset($_REQUEST['a_id_value']))    $id=$_REQUEST['a_id_value'];
20.
else 
21.
    if (isset($_REQUEST['id']))    $id=$_REQUEST['id'];
22.
    else die("Erreur : _REQUEST['id'] est manquant.");  
23.
                
24.
if (isset($_REQUEST['offset']))
25.
    $offset=$_REQUEST['offset'];
26.
else 
27.
    $offset '';
28.
 
29.
$userUiMessage="";
30.
  
31.
// Class instance
32.
$mydepot = new depot$db );
33.
 
34.
  
35.
// Traitement des fichiers télédéposés
36.
 
37.
if ( isset($_REQUEST['a_icon_deletebefore']) && file_exists($_REQUEST["a_icon"])) {    
38.
    unlink($_REQUEST['a_icon']);
39.
    $_REQUEST['a_icon'] = '';
40.
}
41.
if(isset($_FILES['a_icon']) && $_FILES['a_icon']['name'] != '' ){
42.
 
43.
      $errors= array();
44.
      $file_name $_FILES['a_icon']['name'];
45.
      $file_size $_FILES['a_icon']['size'];
46.
      $file_tmp $_FILES['a_icon']['tmp_name'];
47.
      $file_type $_FILES['a_icon']['type'];
48.
      $file_ext=strtolower(end(explode('.',$_FILES['a_icon']['name'])));
49.
           
50.
      $extensions= array( 'jpeg''jpg''png' );
51.
      
52.
      if(in_array($file_ext,$extensions)=== false){
53.
         $errors[]="Extensions autorisées : 'jpeg', 'jpg', 'png'.";
54.
      }
55.
      
56.
      if($file_size 2097152 ) {
57.
         $errors[]='Taille maximum fichier : 2097152 octets.';
58.
      }
59.
      
60.
      if(empty($errors)==true) {
61.
        $dest_dir="documents/icons/";
62.
                    
63.
        if ( file_exists($_REQUEST['a_icon'] ) ) {
64.
            $userUiMessage='<div class="editmessageError">Le fichier existe déjà : '.$_REQUEST["a_icon"].'</div>';
65.
        }
66.
        else {
67.
            move_uploaded_file($file_tmp,$dest_dir.$file_name);
68.
            $_REQUEST['a_icon']= $dest_dir.$file_name// Database url doc update        
69.
            $userUiMessage .= '<div class="editmessageInfo">Fichier déposé : '.$dest_dir.$file_name.'</div>';        
70.
        }
71.
      }else{
72.
        $userUiMessage .= '<div class="editmessageError">';    
73.
        $userUiMessage .= 'Erreur upload :';
74.
        foreach ($errors as $verr) {
75.
            $userUiMessage .= $verr.'<br>';
76.
        }        
77.
        $userUiMessage .= '</div>';                  
78.
      }
79.
}   
80.
 
81.
 
82.
$sqlError false;
83.
 
84.
// Sauvegarde 
85.
if(isset($_POST['submitSave'])) 
86.
87.
    if ($id 0) {
88.
        $results $mydepot->update
89.
$_REQUEST["a_id"], 
90.
$_REQUEST["a_name"], 
91.
$_REQUEST["a_code"], 
92.
$_REQUEST["a_description"], 
93.
$_REQUEST["a_icon"], 
94.
$_REQUEST["a_url"], 
95.
$_REQUEST["a_adress_1"], 
96.
$_REQUEST["a_adress_2"], 
97.
$_REQUEST["a_city"], 
98.
$_REQUEST["a_zip"], 
99.
$_REQUEST["a_country"] ); 
100.
 
101.
        if ($results === false) {           
102.
            $userUiMessage .= '<div class="editmessageError">Erreur sauvegarde (id='.$id.') :'.$mydepot->lasterror.'</div>';        
103.
            $sqlError true;
104.
        }
105.
        else 
106.
            $userUiMessage .= '<div class="editmessageInfo">Sauvegarde effectuée (id='.$id.')</div>';        
107.
    }
108.
    else 
109.
    {
110.
        $results $mydepot->insert
111.
$_REQUEST["a_name"], 
112.
$_REQUEST["a_code"], 
113.
$_REQUEST["a_description"], 
114.
$_REQUEST["a_icon"], 
115.
$_REQUEST["a_url"], 
116.
$_REQUEST["a_adress_1"], 
117.
$_REQUEST["a_adress_2"], 
118.
$_REQUEST["a_city"], 
119.
$_REQUEST["a_zip"], 
120.
$_REQUEST["a_country"]  ); 
121.
        echo '<div class="editmessage">';
122.
        if ($results === false) {
123.
            $userUiMessage .= '<div class="editmessageError">Erreur de création :'.$mydepot->lasterror.'</div>';        
124.
            $sqlError true;
125.
        }
126.
        else {
127.
            $id=$mydepot->lastInsertId;
128.
            $userUiMessage .= '<div class="editmessageInfo">Création effectuée (id='.$id.')</div>';
129.
        }        
130.
    }
131.
}
132.
 
133.
// Suppression
134.
if(isset($_POST['submitDelete'])) 
135.
136.
    if ($id 0) {
137.
        $results $mydepot->delete$id ); 
138.
 
139.
        if ($results === false) {
140.
            $userUiMessage .= '<div class="editmessageError">Erreur Suppression (id='.$id.') :'.$mydepot->lasterror.'</div>';
141.
            $sqlError true;
142.
        }
143.
        else {
144.
            $userUiMessage .= '<div class="editmessageInfo">Suppression effectuée (id='.$id.')</div>';
145.
            $id = -1;
146.
        }
147.
        
148.
    }
149.
}
150.
 
151.
// Select reccord by id :
152.
if ($sqlError === false ) {
153.
    
154.
    if ( isset($_POST['submitSave']) || isset($_POST['submitDelete']) ) 
155.
        $results $mydepot->select$id );
156.
    else {
157.
        switch ($offset) {
158.
            case '_PREV':
159.
                $results $mydepot->selectPrev$id );
160.
                $id $results[0]['a.id'];
161.
                break;
162.
            case '_NEXT':
163.
                $results $mydepot->selectNext$id );
164.
                $id $results[0]['a.id'];
165.
                break;
166.
            default:
167.
                $results $mydepot->select$id );
168.
                break;
169.
        }                
170.
    }
171.
        
172.
    if ($results === false) {           
173.
        $userUiMessage .= '<div class="editmessageError">Erreur Sql : '.$mydepot->lasterror.'</div>';        
174.
        $sqlError true;
175.
    }
176.
    /*if ( empty($results) ) {           
177.
        $userUiMessage .= '<div class="editmessageInfo">Cet enregistrement n\'existe plus. id = '.$id.'  </div>';        
178.
        $sqlError = true;
179.
    }
180.
    */    
181.
}
182.
else {     
183.
        $results[0]["a.id"] = $_REQUEST['a_id'];    
184.
        $results[0]["a.code"] = $_REQUEST['a_code'];
185.
        $results[0]["a.name"] = $_REQUEST['a_name'];
186.
        $results[0]["a.description"] = $_REQUEST['a_description'];
187.
        $results[0]["a.url"] = $_REQUEST['a_url'];
188.
        $results[0]["a.adress_1"] = $_REQUEST['a_adress_1'];
189.
        $results[0]["a.adress_2"] = $_REQUEST['a_adress_2'];
190.
        $results[0]["a.city"] = $_REQUEST['a_city'];
191.
        $results[0]["a.zip"] = $_REQUEST['a_zip'];
192.
        $results[0]["a.country"] = $_REQUEST['a_country'];
193.
        $results[0]["a.icon"] = $_REQUEST['a_icon'];
194.
        
195.
    }
196.
 
197.
$recordcount $mydepot->getCount();
198.
 
199.
echo '<div class="formtable">';
200.
 
201.
$protocol strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https'
202.
                === FALSE 'http' 'https';
203.
$host     $_SERVER['HTTP_HOST'];
204.
$script   $_SERVER['SCRIPT_NAME'];
205.
$params   $_SERVER['QUERY_STRING'];
206.
 
207.
$currentUrl $protocol '://' $host $script '?' $params;
208.
 
209.
// xxx  fix enctype
210.
echo '<form id="editform" class="formedit pure-form pure-form-aligned" method="post" action="'.$currentUrl.'"  enctype="multipart/form-data" >';
211.
 
212.
echo '<fieldset>';
213.
 
214.
echo '<legend style="display:inline-block" class="titleedit"><span title="Liste des d&eacute;p&ocirc;ts pour les sources" class="titleedit">D&eacute;pot</span> #'.($id==-1?'?':$id).'/'.$recordcount['count'];
215.
 
216.
echo '<div style="font-size:80%; float:right; display:inline-block;">'.$userUiMessage.'</div>';
217.
 
218.
echo '</legend>';
219.
?>
220.
221.
<input type="hidden" readonly name="a.id.value" value="<?php echo $results[0]["a.id"]; ?>" >
222.
 
223.
<div class="pure-control-group"><label for="aligned-name">id</label>
224.
        <input type="{{edithidden}}" readonly name="a.id" value="<?php echo $results[0]["a.id"]; ?>"         
225.
        style="width:3em;" ><span class="pure-form-message-inline"></span>
226.
</div>
227.
        
228.
        <div class="pure-control-group"><label title="Code, identifiant du dépôt" for="aligned-name">Code</label>
229.
    
230.
            
231.
 
232.
            
233.
                <input type="color"  name="a.code" id="a_code" 
234.
                value="<?php if ( $results[0]["a.code"] !='') echo $results[0]["a.code"]; else echo ''?>"
235.
                style="padding: 3px; margin:0; height:2.5em; width:3em;" 
236.
                
237.
                >            
238.
                <div style="display:inline-block; color:red">&nbsp;</div>
239.
                
240.
            
241.
                        
242.
            <span class="pure-form-message-inline"></span>    
243.
                                
244.
        </div>
245.
        
246.
        <div class="pure-control-group"><label title="Nom du dépôt" for="aligned-name">Nom du dépôt</label>
247.
    
248.
            
249.
            
250.
            
251.
                <input type="text"  class="" name="a.name" id="a_name" 
252.
                value="<?php if ( $results[0]["a.name"] !='') echo $results[0]["a.name"]; else echo ''?>"
253.
                style="width:30em;" 
254.
                >            
255.
                <div style="display:inline-block; color:red">*</div>
256.
                
257.
            
258.
                        
259.
            <span class="pure-form-message-inline"></span>    
260.
                                
261.
        </div>
262.
        
263.
        <div class="pure-control-group"><label title="Description" for="aligned-name">Decription</label>
264.
    
265.
            
266.
                        
267.
            
268.
                <textarea  text rows="4" cols="40" name="a.description" rows="4" cols="30" ><?php if ( $results[0]["a.description"] !='') echo $results[0]["a.description"]; else echo ''?></textarea>
269.
            
270.
                        
271.
            <span class="pure-form-message-inline"></span>    
272.
                                
273.
        </div>
274.
        
275.
        <div class="pure-control-group"><label title="Adresse web du dépôt" for="aligned-name">Url</label>
276.
    
277.
            
278.
 
279.
            
280.
                <input type="text"  class="" name="a.url" id="a_url" 
281.
                value="<?php if ( $results[0]["a.url"] !='') echo $results[0]["a.url"]; else echo ''?>"
282.
                style="width:30em;" 
283.
                >    
284.
                <div style="display:inline-block; color:red">&nbsp;</div>                
285.
                <a href="<?php if ( $results[0]["a.url"] !='') echo $results[0]["a.url"]; else echo ''?>" target="_blank" " >Ouvrir</a>
286.
 
287.
            
288.
                        
289.
            <span class="pure-form-message-inline"></span>    
290.
                                
291.
        </div>
292.
        
293.
        <div class="pure-control-group"><label title="Adresse du dépôt" for="aligned-name">adresse</label>
294.
    
295.
            
296.
            
297.
            
298.
                <input type="text"  class="" name="a.adress_1" id="a_adress_1" 
299.
                value="<?php if ( $results[0]["a.adress_1"] !='') echo $results[0]["a.adress_1"]; else echo ''?>"
300.
                style="width:30em;" 
301.
                >            
302.
                <div style="display:inline-block; color:red">&nbsp;</div>
303.
                
304.
            
305.
                        
306.
            <span class="pure-form-message-inline"></span>    
307.
                                
308.
        </div>
309.
        
310.
        <div class="pure-control-group"><label title="Seconde ligne de l adresse du dépôt" for="aligned-name">adresse (suite)</label>
311.
    
312.
            
313.
            
314.
            
315.
                <input type="text"  class="" name="a.adress_2" id="a_adress_2" 
316.
                value="<?php if ( $results[0]["a.adress_2"] !='') echo $results[0]["a.adress_2"]; else echo ''?>"
317.
                style="width:30em;" 
318.
                >            
319.
                <div style="display:inline-block; color:red">&nbsp;</div>
320.
                
321.
            
322.
                        
323.
            <span class="pure-form-message-inline"></span>    
324.
                                
325.
        </div>
326.
        
327.
        <div class="pure-control-group"><label title="Ville" for="aligned-name">Ville</label>
328.
    
329.
            
330.
            
331.
            
332.
                <input type="text"  class="" name="a.city" id="a_city" 
333.
                value="<?php if ( $results[0]["a.city"] !='') echo $results[0]["a.city"]; else echo ''?>"
334.
                style="width:30em;" 
335.
                >            
336.
                <div style="display:inline-block; color:red">&nbsp;</div>
337.
                
338.
            
339.
                        
340.
            <span class="pure-form-message-inline"></span>    
341.
                                
342.
        </div>
343.
        
344.
        <div class="pure-control-group"><label title="Code Postal" for="aligned-name">Code Postal</label>
345.
    
346.
            
347.
            
348.
            
349.
                <input type="text"  class="" name="a.zip" id="a_zip" 
350.
                value="<?php if ( $results[0]["a.zip"] !='') echo $results[0]["a.zip"]; else echo ''?>"
351.
                style="width:30em;" 
352.
                >            
353.
                <div style="display:inline-block; color:red">&nbsp;</div>
354.
                
355.
            
356.
                        
357.
            <span class="pure-form-message-inline"></span>    
358.
                                
359.
        </div>
360.
        
361.
        <div class="pure-control-group"><label title="Pays" for="aligned-name">Pays</label>
362.
    
363.
            
364.
            
365.
            
366.
                <input type="text"  class="" name="a.country" id="a_country" 
367.
                value="<?php if ( $results[0]["a.country"] !='') echo $results[0]["a.country"]; else echo ''?>"
368.
                style="width:30em;" 
369.
                >            
370.
                <div style="display:inline-block; color:red">&nbsp;</div>
371.
                
372.
            
373.
                        
374.
            <span class="pure-form-message-inline"></span>    
375.
                                
376.
        </div>
377.
        
378.
        <div class="pure-control-group"><label title="Icone associé à ce dépôt" for="aligned-name">icone</label>
379.
    
380.
                
381.
            
382.
            
383.
                <input style="display:inline-block" type="file" class="" name="a.icon" id="a_icon" 
384.
                style="width:32em;" 
385.
                >    
386.
                
387.
                <input type="checkbox" name="a_icon_deletebefore" id="a_icon_deletebefore" title="Supprimer le fichier.">
388.
                                                
389.
                <input type="hidden" class="" name="a_icon" id="a_icon" 
390.
                value="<?php echo $results[0]["a.icon"]; ?>"
391.
                >    
392.
                <div style="display:inline-block; vertical-align:middle" >
393.
                    
394.
                    <?php
395.
                    
396.
                    if (file_exists($results[0]["a.icon"])) {
397.
                        
398.
                        echo '<img width="50" height="50" style="width: 50px; height: 50px;" alt="'.$results[0]["a.icon"].'" title="'.$results[0]["a.icon"].'" src="'.$results[0]["a.icon"].' ">';
399.
                    } else {
400.
                        
401.
                        echo '<img width="50" height="50" style="width: 50px; height: 50px;" alt="Image inexistante" title="Image inexistante" src="img/missing.png">';            
402.
                    }            
403.
                        
404.
                    ?>                    
405.
                    
406.
                </div>
407.
            
408.
                        
409.
            <span class="pure-form-message-inline"></span>    
410.
                                
411.
        </div>
412.
 
413.
<?
414.
 
415.
echo ' <div class="pure-controls">'."\n";
416.
echo '<button type="submit" name = "submitSave" class="formbutton xpure-button xpure-button-primary">Enregistrer</button>'."\n";
417.
$confirmBox "onclick=\"return confirm('Etes vous sûr de vouloir supprimer cet article ?')\"";
418.
if ($id 0)
419.
    echo '<button type="submit" name = "submitDelete" class="formbutton xpure-button xpure-button-primary" '.$confirmBox.'  >Supprimer</button>'."\n";
420.
 
421.
 
422.
parse_str($_SERVER['QUERY_STRING'], $query_string);
423.
 
424.
if ($id != -and $id $recordcount['minid'] ) {     
425.
    $urlPrev='';
426.
    $query_string['id'] = $id;
427.
    $query_string['offset'] = '_PREV';
428.
    $paramPrev http_build_query($query_string);
429.
    $urlPrev $protocol '://' $host $script '?' $paramPrev;
430.
    echo "<a class='formbutton' href='$urlPrev'>Précédent</a>\n";
431.
}
432.
else echo "<a class='formbutton' style='color:gray; pointer-events: none' href=''>Précédent</a>\n";
433.
 
434.
if ($id != -and $id $recordcount['maxid']  ) { 
435.
    $urlNext='';
436.
    $query_string['id'] = $id;
437.
    $query_string['offset'] = '_NEXT';
438.
    $paramNext http_build_query($query_string);
439.
    $urlNext $protocol '://' $host $script '?' $paramNext;
440.
    echo "<a class='formbutton' href='$urlNext'>Suivant</a>\n";
441.
}
442.
else echo "<a class='formbutton' style='color:gray; pointer-events: none' href=''>Suivant</a>\n";
443.
 
444.
    
445.
echo '</div>'."\n";
446.
echo '</fieldset>'."\n";
447.
echo '</form>'."\n";
448.
 
449.
echo '</div>';
450.
 
451.
?>
452.
453.
 
454.
<script type="text/javascript">
455.
    
456.
    $(document).ready(function(){
457.
        
458.
        $(".selectlist").on("click", function() {            
459.
            startModal('selectplaceholder');                                    
460.
            //alert("Id du champ à remplir au retour : [" + $(this).attr('valuebackval')  + "]");
461.
            var url = "phpui/select_" + $(this).attr('valuetable') + ".php?valuebackfield=" + $(this).attr('valuebackfield') + '&valuebackval=' + $(this).attr('valuebackval');
462.
            
463.
            $('#selectplaceholder').load(url, function() {
464.
                $('#selectplaceholder').css("background-color", "white");
465.
                $('#selectplaceholder').css("border", "1px solid #034668");
466.
                //box-shadow: 5px 10px 12px -4px rgba(0,0,0,0.75);
467.
                //-webkit-box-shadow: 5px 10px 12px -4px rgba(0,0,0,0.75);
468.
                //-moz-box-shadow: 5px 10px 12px -4px rgba(0,0,0,0.75);
469.
                $('#selectplaceholder').css("box-shadow", "5px 10px 12px -4px rgba(0,0,0,0.75)");                
470.
                $('#selectplaceholder').css("border-radius", "7px");
471.
            });            
472.
            
473.
        });
474.
    });
475.
 
476.
    function startModal(id) {
477.
        $("body").prepend(
478.
            "<div id='PopupMask' style='position:fixed;width:100%;height:100%;z-index:10;background-color:gray;'></div>"+
479.
            "<div style='position: fixed;top: 50%;left: 50%; transform: translate(-50%, -50%);' "+
480.
                "id='selectplaceholder'><img  width='180' height='60' src='img/loading.gif'></div>");
481.
        $("#PopupMask").css('opacity', 0.5);  
482.
        $("#"+id).data('saveZindex', $("#"+id).css( "z-index"));
483.
        $("#"+id).data('savePosition', $("#"+id).css( "position"));
484.
        $("#"+id).css( "z-index" , 11 );
485.
        $("#"+id).css( "position" , "fixed" );
486.
    }
487.
 
488.
</script>
489.
 
490.
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
491.
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
492.
 
493.
<script>
494.
 
495.
    // Disable autofill
496.
    $(".datepicker").prop("autocomplete", "off");
497.
 
498.
    $( function() {
499.
        
500.
        $.datepicker.regional['fr'] = {
501.
                yearRange: '1:2099',
502.
                changeMonth: true,
503.
                changeYear: true,
504.
                closeText: 'Fermer',
505.
                prevText: '&#x3c;Préc',
506.
                nextText: 'Suiv&#x3e;',
507.
                currentText: 'Aujourd\'hui',
508.
                monthNames: ['Janvier','Fevrier','Mars','Avril','Mai','Juin',
509.
                'Juillet','Aout','Septembre','Octobre','Novembre','Decembre'],
510.
                monthNamesShort: ['Jan','Fev','Mar','Avr','Mai','Jun',
511.
                'Jul','Aou','Sep','Oct','Nov','Dec'],
512.
                dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
513.
                dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
514.
                dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
515.
                weekHeader: 'Sm',
516.
                dateFormat: 'dd/mm/yy',
517.
                firstDay: 1,
518.
                /*isRTL: false,*/
519.
                /*showMonthAfterYear: false,*/
520.
                /*yearSuffix: '',*/
521.
                /*minDate: 0,*/
522.
                /*maxDate: '+12M +0D',*/
523.
                numberOfMonths: 1,
524.
                showButtonPanel: true
525.
            };
526.
                        
527.
        $.datepicker.setDefaults($.datepicker.regional['fr']);
528.
                
529.
        $(".datepicker" ).datepicker().on("show", function() {
530.
                            var formDate = $(this).val()                            
531.
                            $(this).val(formDate).datepicker('update');
532.
                        });
533.
                                
534.
    } );
535.
 
536.
    $("#over").remove();
537.
    
538.
    // Page quit confirmation
539.
    var form = $('#editform'),
540.
      original = form.serialize()
541.
 
542.
    form.submit(function(){
543.
        $('body').append('<div id="over" style="background:rgba(0,0,0, 0.05); position:fixed; top:0; left:0; width:100%; height:100%;"> <img style="position:absolute; top:0; left:0; right:0; bottom:0; margin:auto;"  width="180" height="60" src="img/loading.gif"> </div> ');
544.
        window.onbeforeunload = null
545.
    })
546.
 
547.
    window.onbeforeunload = function(){
548.
      if (form.serialize() != original)
549.
        return "Confirmez-vous l'abandon de vos modifications ?"
550.
    }
551.
 
552.
</script>
553.
  
554.