Skip to content

Commit 56fc0cc

Browse files
committed
Ajout du plugin pour les numéros internationaux
1 parent f39a8f7 commit 56fc0cc

File tree

12 files changed

+730
-54
lines changed

12 files changed

+730
-54
lines changed

controllers/scheduleds.php

+20-3
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,26 @@ public function edit()
8888
$date = new DateTime($scheduled['at']);
8989
$scheduleds[$key]['at'] = $date->format('Y-m-d H:i');
9090

91-
$scheduleds[$key]['numbers'] = $db->getNumbersForScheduled($scheduled['id']);
92-
$scheduleds[$key]['contacts'] = $db->getContactsForScheduled($scheduled['id']);
93-
$scheduleds[$key]['groups'] = $db->getGroupsForScheduled($scheduled['id']);
91+
$scheduleds[$key]['numbers'] = [];
92+
$numbers = $db->getNumbersForScheduled($scheduled['id']);
93+
foreach ($numbers as $number)
94+
{
95+
$scheduleds[$key]['numbers'][] = $number['number'];
96+
}
97+
98+
$scheduleds[$key]['contacts'] = [];
99+
$contacts = $db->getContactsForScheduled($scheduled['id']);
100+
foreach ($contacts as $contact)
101+
{
102+
$scheduleds[$key]['contacts'][] = (int)$contact['id'];
103+
}
104+
105+
$scheduleds[$key]['groups'] = [];
106+
$groups = $db->getGroupsForScheduled($scheduled['id']);
107+
foreach ($groups as $group)
108+
{
109+
$scheduleds[$key]['groups'][] = (int)$group['id'];
110+
}
94111
}
95112

96113
$this->render('scheduleds/edit', array(

css/intlTelInput.css

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

css/style.css

+42
Original file line numberDiff line numberDiff line change
@@ -198,3 +198,45 @@ footer
198198
text-align: center;
199199
padding-top: 10px;
200200
}
201+
202+
/* SCHEDULEDS */
203+
.add-number-button
204+
{
205+
display: inline-block;
206+
color: #DADFE1;
207+
font-size: 35px;
208+
vertical-align: top;
209+
}
210+
211+
.add-number-button:hover
212+
{
213+
color: #3498DB;
214+
cursor: pointer;
215+
}
216+
217+
.scheduleds-number-group
218+
{
219+
border-radius: 3px;
220+
display: inline-block;
221+
position: relative;
222+
margin-right: 20px;
223+
margin-bottom: 0;
224+
}
225+
226+
.remove-scheduleds-number
227+
{
228+
display: inline-block;
229+
position: absolute;
230+
top: 2px;
231+
right: 2px;
232+
color: #bbbbbb;
233+
font-size: 15px;
234+
z-index: 999;
235+
}
236+
237+
.remove-scheduleds-number:hover
238+
{
239+
color: #aaaaaa;
240+
cursor: pointer;
241+
}
242+

img/flags.png

64.6 KB
Loading

img/[email protected]

184 KB
Loading

js/intlTelInput/intlTelInput.min.js

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/intlTelInput/lib/libphonenumber/utils.js

+483
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

templates/contacts/add.php

+21-3
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@
4747
</div>
4848
<div class="form-group">
4949
<label>Numéro de téléphone du contact<span class="italic small-text text-danger"> - Vous devriez utiliser un numéro international (Ex. : +33612345678)</span></label>
50-
<div class="form-group input-group">
51-
<span class="input-group-addon"><span class="fa fa-phone"></span></span>
52-
<input name="phone" class="form-control" type="text" placeholder="Numéro du contact" pattern="(0|\+[1-9]{1,3}|\+1\-[0-9]{3})[1-9][0-9]{8}" required>
50+
<div class="form-group">
51+
<input name="" class="form-control" type="tel" id="phone-international-input">
52+
<input name="phone" type="hidden" id="phone-hidden-input" required>
5353
</div>
5454
</div>
5555
<a class="btn btn-danger" href="<?php echo $this->generateUrl('contacts'); ?>">Annuler</a>
@@ -62,5 +62,23 @@
6262
</div>
6363
</div>
6464
</div>
65+
<script>
66+
jQuery('document').ready(function($)
67+
{
68+
jQuery('#phone-international-input').intlTelInput({
69+
defaultCountry: 'fr',
70+
preferredCountries: ['fr', 'be', 'ca'],
71+
nationalMode: true,
72+
utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
73+
});
74+
75+
jQuery('form').on('submit', function(e)
76+
{
77+
e.preventDefault();
78+
jQuery('#phone-hidden-input').val(jQuery('#phone-international-input').intlTelInput("getNumber"));
79+
this.submit();
80+
});
81+
});
82+
</script>
6583
<?php
6684
$incs->footer();

templates/contacts/edit.php

+25-3
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@
5151
</div>
5252
<div class="form-group">
5353
<label>Numéro de téléphone du contact<span class="italic small-text text-danger"> - Vous devriez utiliser un numéro international (Ex. : +33612345678)</span></label>
54-
<div class="form-group input-group">
55-
<span class="input-group-addon"><span class="fa fa-phone"></span></span>
56-
<input name="contacts[<?php secho($contact['id']); ?>][phone]" class="form-control" type="text" placeholder="Numéro du contact" pattern="(0|\+[1-9]{1,3}|\+1\-[0-9]{3})[1-9][0-9]{8}" required value="<?php secho($contact['number']); ?>">
54+
<div class="form-group">
55+
<input name="" class="form-control phone-international-input" type="tel" contact-id="<?php secho($contact['id']); ?>" value="<?php secho($contact['number']); ?>">
56+
<input name="contacts[<?php secho($contact['id']); ?>][phone]" type="hidden" id="phone-hidden-input-<?php secho($contact['id']); ?>" required>
5757
</div>
5858
</div>
5959
<hr/>
@@ -70,5 +70,27 @@
7070
</div>
7171
</div>
7272
</div>
73+
<script>
74+
jQuery('document').ready(function($)
75+
{
76+
jQuery('.phone-international-input').intlTelInput({
77+
defaultCountry: 'fr',
78+
preferredCountries: ['fr', 'be', 'ca'],
79+
nationalMode: true,
80+
utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
81+
});
82+
83+
jQuery('form').on('submit', function(e)
84+
{
85+
e.preventDefault();
86+
jQuery('.phone-international-input').each(function(key, value)
87+
{
88+
jQuery('#phone-hidden-input-' + jQuery(this).attr('contact-id')).val(jQuery(this).intlTelInput("getNumber"));
89+
});
90+
91+
this.submit();
92+
});
93+
});
94+
</script>
7395
<?php
7496
$incs->footer();

templates/internalIncs/head.php

+4
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@
3131
<script src="<?php echo HTTP_PWD; ?>js/bootstrap-datetimepicker.min.js"></script>
3232
<script src="<?php echo HTTP_PWD; ?>js/locales/bootstrap-datetimepicker.fr.js"></script>
3333
<link href="<?php echo HTTP_PWD; ?>css/bootstrap-datetimepicker.min.css" rel="stylesheet">
34+
<!-- International Phone Number, JS and CSS -->
35+
<script src="<?php echo HTTP_PWD; ?>js/intlTelInput/intlTelInput.min.js"></script>
36+
<link href="<?php echo HTTP_PWD; ?>css/intlTelInput.css" rel="stylesheet">
37+
3438
<!-- Custom JS -->
3539
<script src="<?php echo HTTP_PWD; ?>js/custom.js"></script>
3640

templates/scheduleds/add.php

+62-15
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,15 @@
4747
<input name="date" class="form-control form-datetime" type="text" value="<?php secho($now); ?>" readonly>
4848
</div>
4949
<div class="form-group">
50-
<label>Numéros cibles <span class="italic small-text text-danger"> - Vous devriez utiliser un numéro international (Ex. : +33612345678)</span></label>
51-
<input class="add-numbers form-control" name="numbers[]"/>
50+
<label>Numéros cibles</label>
51+
<div class="form-group scheduleds-number-group-container">
52+
<div class="form-group scheduleds-number-group">
53+
<input name="" class="form-control phone-international-input" type="tel" >
54+
<span class="remove-scheduleds-number fa fa-times"></span>
55+
<input name="numbers[]" type="hidden" class="phone-hidden-input">
56+
</div>
57+
<div class="add-number-button fa fa-plus-circle"></div>
58+
</div>
5259
</div>
5360
<div class="form-group">
5461
<label>Contacts cibles</label>
@@ -71,19 +78,6 @@
7178
<script>
7279
jQuery(document).ready(function()
7380
{
74-
jQuery('.form-datetime').datetimepicker(
75-
{
76-
format: 'yyyy-mm-dd hh:ii:ss',
77-
autoclose: true,
78-
minuteStep: 1,
79-
language: 'fr'
80-
});
81-
82-
jQuery('.add-numbers').each(function()
83-
{
84-
jQuery(this).magicSuggest();
85-
});
86-
8781
jQuery('.add-contacts').each(function()
8882
{
8983
jQuery(this).magicSuggest({
@@ -101,6 +95,59 @@
10195
displayField: 'name',
10296
});
10397
});
98+
99+
jQuery('.phone-international-input').intlTelInput({
100+
defaultCountry: 'fr',
101+
preferredCountries: ['fr', 'be', 'ca'],
102+
nationalMode: true,
103+
utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
104+
});
105+
106+
jQuery('body').on('click', '.remove-scheduleds-number', function(e)
107+
{
108+
jQuery(this).parents('.scheduleds-number-group').remove();
109+
});
110+
111+
jQuery('body').on('click', '.add-number-button', function(e)
112+
{
113+
var newScheduledsNumberGroup = '' +
114+
'<div class="form-group scheduleds-number-group">' +
115+
'<input name="" class="form-control phone-international-input" type="tel" >' +
116+
'<span class="remove-scheduleds-number fa fa-times"></span>' +
117+
'<input name="numbers[]" type="hidden" class="phone-hidden-input">' +
118+
'</div>';
119+
120+
jQuery(this).before(newScheduledsNumberGroup);
121+
122+
jQuery('.phone-international-input').intlTelInput({
123+
defaultCountry: 'fr',
124+
preferredCountries: ['fr', 'be', 'ca'],
125+
nationalMode: true,
126+
utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
127+
});
128+
129+
});
130+
131+
jQuery('.form-datetime').datetimepicker(
132+
{
133+
format: 'yyyy-mm-dd hh:ii:ss',
134+
autoclose: true,
135+
minuteStep: 1,
136+
language: 'fr'
137+
});
138+
139+
140+
jQuery('form').on('submit', function(e)
141+
{
142+
e.preventDefault();
143+
jQuery('.phone-international-input').each(function(key, value)
144+
{
145+
var container = jQuery(this).parents('.scheduleds-number-group');
146+
container.find('.phone-hidden-input').val(jQuery(this).intlTelInput("getNumber"));
147+
});
148+
149+
this.submit();
150+
});
104151
});
105152
</script>
106153
<?php

templates/scheduleds/edit.php

+67-30
Original file line numberDiff line numberDiff line change
@@ -41,27 +41,6 @@
4141
<?php
4242
foreach ($scheduleds as $scheduled)
4343
{
44-
$numbers = array();
45-
foreach ($scheduled['numbers'] as $number)
46-
{
47-
$numbers[] = $number['number'];
48-
}
49-
50-
$contacts = array();
51-
foreach ($scheduled['contacts'] as $contact)
52-
{
53-
$contacts[] = (int)$contact['id'];
54-
}
55-
56-
$groups = array();
57-
foreach ($scheduled['groups'] as $group)
58-
{
59-
$groups[] = (int)$group['id'];
60-
}
61-
62-
$numbers = json_encode($numbers);
63-
$contacts = json_encode($contacts);
64-
$groups = json_encode($groups);
6544
?>
6645
<div class="form-group">
6746
<label>Texte du SMS</label>
@@ -72,16 +51,25 @@
7251
<input name="scheduleds[<?php secho($scheduled['id']); ?>][date]" class="form-control form-datetime" type="text" value="<?php secho($scheduled['at']); ?>" readonly>
7352
</div>
7453
<div class="form-group">
75-
<label>Numéros cibles <span class="italic small-text text-danger"> - Vous devriez utiliser un numéro international (Ex. : +33612345678)</span></label>
76-
<input class="add-numbers form-control" name="scheduleds[<?php secho($scheduled['id']); ?>][numbers][]" value="<?php secho($numbers); ?>"/>
54+
<label>Numéros cibles</label>
55+
<div class="form-group scheduleds-number-group-container" scheduled-id="<?php secho($scheduled['id']); ?>" >
56+
<?php foreach($scheduled['numbers'] as $number) { ?>
57+
<div class="form-group scheduleds-number-group">
58+
<input name="" class="form-control phone-international-input" type="tel" value="<?php secho($number); ?>">
59+
<span class="remove-scheduleds-number fa fa-times"></span>
60+
<input name="scheduleds[<?php secho($scheduled['id']); ?>][numbers][]" type="hidden" class="phone-hidden-input">
61+
</div>
62+
<?php } ?>
63+
<div class="add-number-button fa fa-plus-circle"></div>
64+
</div>
7765
</div>
7866
<div class="form-group">
7967
<label>Contacts cibles</label>
80-
<input class="add-contacts form-control" name="scheduleds[<?php secho($scheduled['id']); ?>][contacts][]" value="<?php secho($contacts); ?>" />
68+
<input class="add-contacts form-control" name="scheduleds[<?php secho($scheduled['id']); ?>][contacts][]" value="<?php secho(json_encode($scheduled['contacts'])); ?>" />
8169
</div>
8270
<div class="form-group">
8371
<label>Groupes cibles</label>
84-
<input class="add-groups form-control" name="scheduleds[<?php secho($scheduled['id']); ?>][groups][]" value="<?php secho($groups); ?>" />
72+
<input class="add-groups form-control" name="scheduleds[<?php secho($scheduled['id']); ?>][groups][]" value="<?php secho(json_encode($scheduled['groups'])); ?>" />
8573
</div>
8674
<hr/>
8775
<?php
@@ -108,11 +96,6 @@
10896
language: 'fr'
10997
});
11098

111-
jQuery('.add-numbers').each(function()
112-
{
113-
jQuery(this).magicSuggest();
114-
});
115-
11699
jQuery('.add-contacts').each(function()
117100
{
118101
jQuery(this).magicSuggest({
@@ -130,6 +113,60 @@
130113
displayField: 'name',
131114
});
132115
});
116+
117+
jQuery('.phone-international-input').intlTelInput({
118+
defaultCountry: 'fr',
119+
preferredCountries: ['fr', 'be', 'ca'],
120+
nationalMode: true,
121+
utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
122+
});
123+
124+
jQuery('body').on('click', '.remove-scheduleds-number', function(e)
125+
{
126+
jQuery(this).parents('.scheduleds-number-group').remove();
127+
});
128+
129+
jQuery('body').on('click', '.add-number-button', function(e)
130+
{
131+
var scheduledId = jQuery(this).parents('.scheduleds-number-group-container').attr('scheduled-id');
132+
var newScheduledsNumberGroup = '' +
133+
'<div class="form-group scheduleds-number-group">' +
134+
'<input name="" class="form-control phone-international-input" type="tel" >' +
135+
'<span class="remove-scheduleds-number fa fa-times"></span>' +
136+
'<input name="scheduleds[' + scheduledId + '][numbers][]" type="hidden" class="phone-hidden-input">' +
137+
'</div>';
138+
139+
jQuery(this).before(newScheduledsNumberGroup);
140+
141+
jQuery('.phone-international-input').intlTelInput({
142+
defaultCountry: 'fr',
143+
preferredCountries: ['fr', 'be', 'ca'],
144+
nationalMode: true,
145+
utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
146+
});
147+
148+
});
149+
150+
jQuery('.form-datetime').datetimepicker(
151+
{
152+
format: 'yyyy-mm-dd hh:ii:ss',
153+
autoclose: true,
154+
minuteStep: 1,
155+
language: 'fr'
156+
});
157+
158+
159+
jQuery('form').on('submit', function(e)
160+
{
161+
e.preventDefault();
162+
jQuery('.phone-international-input').each(function(key, value)
163+
{
164+
var container = jQuery(this).parents('.scheduleds-number-group');
165+
container.find('.phone-hidden-input').val(jQuery(this).intlTelInput("getNumber"));
166+
});
167+
168+
this.submit();
169+
});
133170
});
134171
</script>
135172
<?php

0 commit comments

Comments
 (0)