projects/genea/out/phpui/edit_event_source.php
1.
<?php
2.
 
3.
/*
4.
 
5.
        Formulaire d'édition pour la table : event_source.
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_event_source.php";
17.
include_once "phpdb/class_event_source_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.
$myevent_source = new event_source$db );
33.
 
34.
 
35.
 
36.
$sqlError false;
37.
 
38.
// Sauvegarde 
39.
if(isset($_POST['submitSave'])) 
40.
41.
    if ($id 0) {
42.
        $results $myevent_source->update
43.
$_REQUEST["a_id"], 
44.
$_REQUEST["a_event_id"], 
45.
$_REQUEST["a_source_id"], 
46.
$_REQUEST["a_document_id"], 
47.
$_REQUEST["a_datecreated"] ); 
48.
 
49.
        if ($results === false) {           
50.
            $userUiMessage .= '<div class="editmessageError">Erreur sauvegarde (id='.$id.') :'.$myevent_source->lasterror.'</div>';        
51.
            $sqlError true;
52.
        }
53.
        else 
54.
            $userUiMessage .= '<div class="editmessageInfo">Sauvegarde effectuée (id='.$id.')</div>';        
55.
    }
56.
    else 
57.
    {
58.
        $results $myevent_source->insert
59.
$_REQUEST["a_event_id"], 
60.
$_REQUEST["a_source_id"], 
61.
$_REQUEST["a_document_id"], 
62.
$_REQUEST["a_datecreated"]  ); 
63.
        echo '<div class="editmessage">';
64.
        if ($results === false) {
65.
            $userUiMessage .= '<div class="editmessageError">Erreur de création :'.$myevent_source->lasterror.'</div>';        
66.
            $sqlError true;
67.
        }
68.
        else {
69.
            $id=$myevent_source->lastInsertId;
70.
            $userUiMessage .= '<div class="editmessageInfo">Création effectuée (id='.$id.')</div>';
71.
        }        
72.
    }
73.
}
74.
 
75.
// Suppression
76.
if(isset($_POST['submitDelete'])) 
77.
78.
    if ($id 0) {
79.
        $results $myevent_source->delete$id ); 
80.
 
81.
        if ($results === false) {
82.
            $userUiMessage .= '<div class="editmessageError">Erreur Suppression (id='.$id.') :'.$myevent_source->lasterror.'</div>';
83.
            $sqlError true;
84.
        }
85.
        else {
86.
            $userUiMessage .= '<div class="editmessageInfo">Suppression effectuée (id='.$id.')</div>';
87.
            $id = -1;
88.
        }
89.
        
90.
    }
91.
}
92.
 
93.
// Select reccord by id :
94.
if ($sqlError === false ) {
95.
    
96.
    if ( isset($_POST['submitSave']) || isset($_POST['submitDelete']) ) 
97.
        $results $myevent_source->select$id );
98.
    else {
99.
        switch ($offset) {
100.
            case '_PREV':
101.
                $results $myevent_source->selectPrev$id );
102.
                $id $results[0]['a.id'];
103.
                break;
104.
            case '_NEXT':
105.
                $results $myevent_source->selectNext$id );
106.
                $id $results[0]['a.id'];
107.
                break;
108.
            default:
109.
                $results $myevent_source->select$id );
110.
                break;
111.
        }                
112.
    }
113.
        
114.
    if ($results === false) {           
115.
        $userUiMessage .= '<div class="editmessageError">Erreur Sql : '.$myevent_source->lasterror.'</div>';        
116.
        $sqlError true;
117.
    }
118.
    /*if ( empty($results) ) {           
119.
        $userUiMessage .= '<div class="editmessageInfo">Cet enregistrement n\'existe plus. id = '.$id.'  </div>';        
120.
        $sqlError = true;
121.
    }
122.
    */    
123.
}
124.
else {     
125.
        $results[0]["a.id"] = $_REQUEST['a_id'];    
126.
        $results[0]["a.event_id"] = $_REQUEST['a_event_id'];
127.
        $results[0]["a.source_id"] = $_REQUEST['a_source_id'];
128.
        $results[0]["a.document_id"] = $_REQUEST['a_document_id'];
129.
        $results[0]["a.datecreated"] = $_REQUEST['a_datecreated'];
130.
        
131.
    }
132.
 
133.
$recordcount $myevent_source->getCount();
134.
 
135.
echo '<div class="formtable">';
136.
 
137.
$protocol strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https'
138.
                === FALSE 'http' 'https';
139.
$host     $_SERVER['HTTP_HOST'];
140.
$script   $_SERVER['SCRIPT_NAME'];
141.
$params   $_SERVER['QUERY_STRING'];
142.
 
143.
$currentUrl $protocol '://' $host $script '?' $params;
144.
 
145.
// xxx  fix enctype
146.
echo '<form id="editform" class="formedit pure-form pure-form-aligned" method="post" action="'.$currentUrl.'"  enctype="multipart/form-data" >';
147.
 
148.
echo '<fieldset>';
149.
 
150.
echo '<legend style="display:inline-block" class="titleedit"><span title="Association des &eacute;v&eacute;nements aux sources" class="titleedit">Even. source</span> #'.($id==-1?'?':$id).'/'.$recordcount['count'];
151.
 
152.
echo '<div style="font-size:80%; float:right; display:inline-block;">'.$userUiMessage.'</div>';
153.
 
154.
echo '</legend>';
155.
?>
156.
157.
<input type="hidden" readonly name="a.id.value" value="<?php echo $results[0]["a.id"]; ?>" >
158.
 
159.
<div class="pure-control-group"><label for="aligned-name">a_id</label>
160.
        <input type="{{edithidden}}" readonly name="a.id" value="<?php echo $results[0]["a.id"]; ?>"         
161.
        style="width:12em;" ><span class="pure-form-message-inline"></span>
162.
</div>
163.
        
164.
        <div class="pure-control-group"><label title="" for="aligned-name">a_event_id</label>
165.
    
166.
                    
167.
            
168.
            
169.
                <input type="hidden"  name="a.event_id" id="a_event_id" 
170.
                value="<?php echo $results[0]["a.event_id"]; ?>
171.
                style="width:12em;" 
172.
                >
173.
                <input readonly type="text" style="width:{{fkeditlen}}em;"  id="valback_a_event_id"  value="<?php echo ($results[0]["b1.name"]) ;?>">
174.
                <div style="display:inline-block; color:red">*</div>
175.
                <a class="selectlist" valuetable="event" valuefield="id" valuebackfield="a_event_id" valuebackval="valback_a_event_id" href="#" >Select</a>    
176.
            
177.
                        
178.
            <span class="pure-form-message-inline"></span>    
179.
                                
180.
        </div>
181.
        
182.
        <div class="pure-control-group"><label title="" for="aligned-name">a_source_id</label>
183.
    
184.
                    
185.
            
186.
            
187.
                <input type="hidden"  name="a.source_id" id="a_source_id" 
188.
                value="<?php echo $results[0]["a.source_id"]; ?>
189.
                style="width:12em;" 
190.
                >
191.
                <input readonly type="text" style="width:{{fkeditlen}}em;"  id="valback_a_source_id"  value="<?php echo ($results[0]["c2.name"]) ;?>">
192.
                <div style="display:inline-block; color:red">*</div>
193.
                <a class="selectlist" valuetable="source" valuefield="id" valuebackfield="a_source_id" valuebackval="valback_a_source_id" href="#" >Select</a>    
194.
            
195.
                        
196.
            <span class="pure-form-message-inline"></span>    
197.
                                
198.
        </div>
199.
        
200.
        <div class="pure-control-group"><label title="" for="aligned-name">a_document_id</label>
201.
    
202.
                    
203.
            
204.
            
205.
                <input type="hidden"  name="a.document_id" id="a_document_id" 
206.
                value="<?php echo $results[0]["a.document_id"]; ?>
207.
                style="width:12em;" 
208.
                >
209.
                <input readonly type="text" style="width:{{fkeditlen}}em;"  id="valback_a_document_id"  value="<?php echo ($results[0]["d3.name"]) ;?>">
210.
                <div style="display:inline-block; color:red">&nbsp;</div>
211.
                <a class="selectlist" valuetable="document" valuefield="id" valuebackfield="a_document_id" valuebackval="valback_a_document_id" href="#" >Select</a>    
212.
            
213.
                        
214.
            <span class="pure-form-message-inline"></span>    
215.
                                
216.
        </div>
217.
        
218.
        <div class="pure-control-group"><label title="" for="aligned-name">a_datecreated</label>
219.
    
220.
            
221.
                        
222.
            <span class="pure-form-message-inline"></span>    
223.
                                
224.
        </div>
225.
 
226.
<?
227.
 
228.
echo ' <div class="pure-controls">'."\n";
229.
echo '<button type="submit" name = "submitSave" class="formbutton xpure-button xpure-button-primary">Enregistrer</button>'."\n";
230.
$confirmBox "onclick=\"return confirm('Etes vous sûr de vouloir supprimer cet article ?')\"";
231.
if ($id 0)
232.
    echo '<button type="submit" name = "submitDelete" class="formbutton xpure-button xpure-button-primary" '.$confirmBox.'  >Supprimer</button>'."\n";
233.
 
234.
 
235.
parse_str($_SERVER['QUERY_STRING'], $query_string);
236.
 
237.
if ($id != -and $id $recordcount['minid'] ) {     
238.
    $urlPrev='';
239.
    $query_string['id'] = $id;
240.
    $query_string['offset'] = '_PREV';
241.
    $paramPrev http_build_query($query_string);
242.
    $urlPrev $protocol '://' $host $script '?' $paramPrev;
243.
    echo "<a class='formbutton' href='$urlPrev'>Précédent</a>\n";
244.
}
245.
else echo "<a class='formbutton' style='color:gray; pointer-events: none' href=''>Précédent</a>\n";
246.
 
247.
if ($id != -and $id $recordcount['maxid']  ) { 
248.
    $urlNext='';
249.
    $query_string['id'] = $id;
250.
    $query_string['offset'] = '_NEXT';
251.
    $paramNext http_build_query($query_string);
252.
    $urlNext $protocol '://' $host $script '?' $paramNext;
253.
    echo "<a class='formbutton' href='$urlNext'>Suivant</a>\n";
254.
}
255.
else echo "<a class='formbutton' style='color:gray; pointer-events: none' href=''>Suivant</a>\n";
256.
 
257.
    
258.
echo '</div>'."\n";
259.
echo '</fieldset>'."\n";
260.
echo '</form>'."\n";
261.
 
262.
echo '</div>';
263.
 
264.
?>
265.
266.
 
267.
<script type="text/javascript">
268.
    
269.
    $(document).ready(function(){
270.
        
271.
        $(".selectlist").on("click", function() {            
272.
            startModal('selectplaceholder');                                    
273.
            //alert("Id du champ à remplir au retour : [" + $(this).attr('valuebackval')  + "]");
274.
            var url = "phpui/select_" + $(this).attr('valuetable') + ".php?valuebackfield=" + $(this).attr('valuebackfield') + '&valuebackval=' + $(this).attr('valuebackval');
275.
            
276.
            $('#selectplaceholder').load(url, function() {
277.
                $('#selectplaceholder').css("background-color", "white");
278.
                $('#selectplaceholder').css("border", "1px solid #034668");
279.
                //box-shadow: 5px 10px 12px -4px rgba(0,0,0,0.75);
280.
                //-webkit-box-shadow: 5px 10px 12px -4px rgba(0,0,0,0.75);
281.
                //-moz-box-shadow: 5px 10px 12px -4px rgba(0,0,0,0.75);
282.
                $('#selectplaceholder').css("box-shadow", "5px 10px 12px -4px rgba(0,0,0,0.75)");                
283.
                $('#selectplaceholder').css("border-radius", "7px");
284.
            });            
285.
            
286.
        });
287.
    });
288.
 
289.
    function startModal(id) {
290.
        $("body").prepend(
291.
            "<div id='PopupMask' style='position:fixed;width:100%;height:100%;z-index:10;background-color:gray;'></div>"+
292.
            "<div style='position: fixed;top: 50%;left: 50%; transform: translate(-50%, -50%);' "+
293.
                "id='selectplaceholder'><img  width='180' height='60' src='img/loading.gif'></div>");
294.
        $("#PopupMask").css('opacity', 0.5);  
295.
        $("#"+id).data('saveZindex', $("#"+id).css( "z-index"));
296.
        $("#"+id).data('savePosition', $("#"+id).css( "position"));
297.
        $("#"+id).css( "z-index" , 11 );
298.
        $("#"+id).css( "position" , "fixed" );
299.
    }
300.
 
301.
</script>
302.
 
303.
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
304.
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
305.
 
306.
<script>
307.
 
308.
    // Disable autofill
309.
    $(".datepicker").prop("autocomplete", "off");
310.
 
311.
    $( function() {
312.
        
313.
        $.datepicker.regional['fr'] = {
314.
                yearRange: '1:2099',
315.
                changeMonth: true,
316.
                changeYear: true,
317.
                closeText: 'Fermer',
318.
                prevText: '&#x3c;Préc',
319.
                nextText: 'Suiv&#x3e;',
320.
                currentText: 'Aujourd\'hui',
321.
                monthNames: ['Janvier','Fevrier','Mars','Avril','Mai','Juin',
322.
                'Juillet','Aout','Septembre','Octobre','Novembre','Decembre'],
323.
                monthNamesShort: ['Jan','Fev','Mar','Avr','Mai','Jun',
324.
                'Jul','Aou','Sep','Oct','Nov','Dec'],
325.
                dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
326.
                dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
327.
                dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
328.
                weekHeader: 'Sm',
329.
                dateFormat: 'dd/mm/yy',
330.
                firstDay: 1,
331.
                /*isRTL: false,*/
332.
                /*showMonthAfterYear: false,*/
333.
                /*yearSuffix: '',*/
334.
                /*minDate: 0,*/
335.
                /*maxDate: '+12M +0D',*/
336.
                numberOfMonths: 1,
337.
                showButtonPanel: true
338.
            };
339.
                        
340.
        $.datepicker.setDefaults($.datepicker.regional['fr']);
341.
                
342.
        $(".datepicker" ).datepicker().on("show", function() {
343.
                            var formDate = $(this).val()                            
344.
                            $(this).val(formDate).datepicker('update');
345.
                        });
346.
                                
347.
    } );
348.
 
349.
    $("#over").remove();
350.
    
351.
    // Page quit confirmation
352.
    var form = $('#editform'),
353.
      original = form.serialize()
354.
 
355.
    form.submit(function(){
356.
        $('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> ');
357.
        window.onbeforeunload = null
358.
    })
359.
 
360.
    window.onbeforeunload = function(){
361.
      if (form.serialize() != original)
362.
        return "Confirmez-vous l'abandon de vos modifications ?"
363.
    }
364.
 
365.
</script>
366.
  
367.