2023-02-04 01:15:36 +01:00
< ? php
//Template dashboard
$this -> render ( 'incs/head' , [ 'title' => 'Phones - Edit' ])
?>
< div id = " wrapper " >
< ? php
$this -> render ( 'incs/nav' , [ 'page' => 'phones' ])
?>
< div id = " page-wrapper " >
< div class = " container-fluid " >
<!-- Page Heading -->
< div class = " row " >
< div class = " col-lg-12 " >
< h1 class = " page-header " >
Modification téléphones
</ h1 >
< ol class = " breadcrumb " >
< li >
< i class = " fa fa-dashboard " ></ i > < a href = " <?php echo \ descartes \R outer::url('Dashboard', 'show'); ?> " > Dashboard </ a >
</ li >
< li >
< i class = " fa fa-phone " ></ i > < a href = " <?php echo \ descartes \R outer::url('Phone', 'list'); ?> " > Téléphones </ a >
</ li >
< li class = " active " >
< i class = " fa fa-edit " ></ i > Modifier
</ li >
</ ol >
</ div >
</ div >
<!-- /. row -->
< div class = " row " >
< div class = " col-lg-12 " >
< div class = " panel panel-default " >
< div class = " panel-heading " >
< h3 class = " panel-title " >< i class = " fa fa-phone fa-fw " ></ i > Modification de téléphones </ h3 >
</ div >
< div class = " panel-body " >
< form action = " <?php echo \ descartes \R outer::url('Phone', 'update', ['csrf' => $_SESSION['csrf'] ]);?> " method = " POST " >
< ? php foreach ( $phones as $phone ) { ?>
< div class = " entry-container " data - entry - id = " <?php $this->s ( $phone['id'] ); ?> " >
2023-02-20 15:48:47 +01:00
2023-02-04 01:15:36 +01:00
< div class = " form-group " >
< label > Nom du téléphone </ label >
< p class = " italic small help " >
Le nom du téléphone qui enverra et recevra les messages .
</ p >
< div class = " form-group " >
< input required = " required " name = " phones[<?php $this->s ( $phone['id'] ); ?>][name] " class = " form-control " placeholder = " Nom du téléphone " value = " <?php $this->s ( $phone['name'] ); ?> " >
</ div >
</ div >
2023-02-20 15:48:47 +01:00
< ? php if ( $_SESSION [ 'user' ][ 'settings' ][ 'phone_priority' ]) { ?>
2023-02-05 23:11:58 +01:00
< div class = " form-group " >
2023-02-20 15:48:47 +01:00
< label > Priorité d ' utilisation du téléphone </ label >
< p class = " italic small help " >
Lors de l ' envoi de SMS sans téléphone spécifié , les téléphones avec la plus haute priorité seront utilisés en premier .
</ p >
< div class = " form-group " >
< input required = " required " name = " phones[<?php $this->s ( $phone['id'] ); ?>][priority] " class = " form-control " type = " number " min = " 0 " placeholder = " Priorité d'utilisation " value = " <?php $this->s ( $phone['priority'] ) ?> " >
</ div >
2023-02-05 23:11:58 +01:00
</ div >
2023-02-20 15:48:47 +01:00
< ? php } ?>
2023-02-04 01:15:36 +01:00
< div class = " form-group " >
< label > Type de téléphone </ label >
< p class = " italic small help description-adapter-general " >
Le type de téléphone utilisé par RaspiSMS pour envoyer ou recevoir les SMS . Pour plus d ' information , consultez < a href = " https://documentation.raspisms.fr/users/adapters/overview.html " target = " _blank " > la documentation de RaspiSMS </ a > concernant les différents types de téléphones .
</ p >
< select name = " phones[<?php $this->s ( $phone['id'] ); ?>][adapter] " class = " form-control adapter-select " >
< ? php foreach ( $adapters as $adapter ) { ?>
2023-02-18 16:39:07 +01:00
< ? php if ( $adapter [ 'meta_hidden' ] === false || $phone [ 'adapter' ] == $adapter [ 'meta_classname' ]) { ?>
2023-02-04 01:15:36 +01:00
< option
value = " <?= $adapter['meta_classname'] ?> "
data - description = " <?php $this->s ( $adapter['meta_description'] ); ?> "
data - data - fields = " <?php $this->s (json_encode( $adapter['meta_data_fields'] )); ?> "
2023-02-06 04:35:08 +01:00
< ? php if ( $phone [ 'adapter' ] == $adapter [ 'meta_classname' ]) { ?>
2023-02-18 16:39:07 +01:00
< ? php if ( ! $adapter [ 'meta_hide_data' ]) { ?>
data - phone - adapter - data = " <?php $this->s ( $phone['adapter_data'] ); ?> "
< ? php } ?>
2023-02-06 04:35:08 +01:00
selected
< ? php } ?>
2023-02-04 01:15:36 +01:00
>
< ? php $this -> s ( $adapter [ 'meta_name' ]); ?>
</ option >
< ? php } ?>
< ? php } ?>
</ select >
</ div >
< div class = " form-group well adapter-data-container " >
< div class = " adapter-data-description-container " >
< h4 > Description du téléphone </ h4 >
< div class = " adapter-data-description " ></ div >
</ div >
< div class = " adapter-data-fields-container " >
< h4 > Réglages du téléphone </ h4 >
< div class = " adapter-data-fields " ></ div >
</ div >
</ div >
2023-02-20 15:48:47 +01:00
< ? php if ( $_SESSION [ 'user' ][ 'settings' ][ 'phone_limit' ]) { ?>
< div class = " form-group " >
< label > Limites des volumes d ' envoi du téléphone </ label >
< p class = " italic small help " >
Défini le nombre maximum de SMS qui pourront être envoyés avec ce téléphone sur des périodes de temps données .
</ p >
< div class = " form-group phone-limits-container container-fluid " >
< ? php foreach ( $phone [ 'limits' ] as $limit ) { ?>
< div class = " row phone-limits-group " >
< div class = " col-xs-4 " >
< label > Période </ label >< br />
< ? php $random_id = uniqid (); ?>
< select name = " phones[<?= $phone['id'] ; ?>][limits][<?= $random_id ; ?>][startpoint] " class = " form-control " required >
< option value = " " disabled selected > Période sur laquelle appliquer la limite </ option >
< option < ? = $limit [ 'startpoint' ] == 'today' ? 'selected' : '' ; ?> value="today">Par jour</option>
< option < ? = $limit [ 'startpoint' ] == '-24 hours' ? 'selected' : '' ; ?> value="-24 hours">24 heures glissantes</option>
< option < ? = $limit [ 'startpoint' ] == 'this week midnight' ? 'selected' : '' ; ?> value="this week midnight">Cette semaine</option>
< option < ? = $limit [ 'startpoint' ] == '-7 days' ? 'selected' : '' ; ?> value="-7 days">7 jours glissants</option>
< option < ? = $limit [ 'startpoint' ] == 'this week midnight -1 week' ? 'selected' : '' ; ?> value="this week midnight -1 week">Ces deux dernières semaines</option>
< option < ? = $limit [ 'startpoint' ] == '-14 days' ? 'selected' : '' ; ?> value="-14 days">14 jours glissants</option>
< option < ? = $limit [ 'startpoint' ] == 'this month midnight' ? 'selected' : '' ; ?> value="this month midnight">Ce mois</option>
< option < ? = $limit [ 'startpoint' ] == '-1 month' ? 'selected' : '' ; ?> value="-1 month">1 mois glissant</option>
< option < ? = $limit [ 'startpoint' ] == '-28 days' ? 'selected' : '' ; ?> value="-28 days">28 jours glissants</option>
< option < ? = $limit [ 'startpoint' ] == '-30 days' ? 'selected' : '' ; ?> value="-30 days">30 jours glissants</option>
< option < ? = $limit [ 'startpoint' ] == '-31 days' ? 'selected' : '' ; ?> value="-31 days">31 jours glissants</option>
</ select >
2023-02-04 01:15:36 +01:00
</ div >
2023-02-20 15:48:47 +01:00
< div class = " scheduleds-number-data-container col-xs-8 " >
< label > Volume </ label >
< div class = " form-group " >
< input name = " phones[<?= $phone['id'] ; ?>][limits][<?= $random_id ; ?>][volume] " class = " form-control " type = " number " min = " 1 " value = " <?php $this->s ( $limit['volume'] ); ?> " placeholder = " Nombre de SMS maximum sur la période. " >
</ div >
</ div >
< a href = " # " class = " phone-limits-group-remove " >< span class = " fa fa-times " ></ span ></ a >
2023-02-04 01:15:36 +01:00
</ div >
2023-02-20 15:48:47 +01:00
< ? php } ?>
< div class = " text-center " >< div class = " add-phone-limit-button fa fa-plus-circle " ></ div ></ div >
</ div >
2023-02-04 01:15:36 +01:00
</ div >
2023-02-20 15:48:47 +01:00
< ? php } ?>
2023-02-04 01:15:36 +01:00
</ div >
< hr />
< ? php } ?>
< a class = " btn btn-danger " href = " <?php echo \ descartes \R outer::url('Phone', 'list'); ?> " > Annuler </ a >
< input type = " submit " class = " btn btn-success " value = " Enregistrer le téléphone " />
</ form >
</ div >
</ div >
</ div >
</ div >
</ div >
</ div >
</ div >
< script >
function change_adapter ( target )
{
var phone_id = target . parents ( '.entry-container' ) . attr ( 'data-entry-id' );
var option = target . find ( 'option:selected' );
target . parents ( '.entry-container' ) . find ( '.adapter-data-description' ) . html ( option . attr ( 'data-description' ));
target . parents ( '.entry-container' ) . find ( '.description-adapter-data' ) . text ( option . attr ( 'data-data-help' ));
var data_fields = option . attr ( 'data-data-fields' );
data_fields = JSON . parse ( data_fields );
2023-02-06 04:35:08 +01:00
if ( option . attr ( 'data-phone-adapter-data' ))
{
var phone_adapter_data = option . attr ( 'data-phone-adapter-data' );
phone_adapter_data = JSON . parse ( phone_adapter_data );
}
2023-02-04 01:15:36 +01:00
var numbers = [];
var html = '' ;
jQuery . each ( data_fields , function ( index , field )
{
2023-02-06 04:35:08 +01:00
if ( phone_adapter_data )
{
if ( field . name in phone_adapter_data )
{
value = phone_adapter_data [ field . name ];
}
else
{
value = field . default_value ? field . default_value : null ;
}
}
else
{
value = field . default_value ? field . default_value : null ;
}
2023-02-04 01:15:36 +01:00
if ( field . type == 'phone_number' )
{
var random_id = Math . random () . toString ( 36 ) . substring ( 2 , 15 ) + Math . random () . toString ( 36 ) . substring ( 2 , 15 );
html += '' +
'<div class="form-group">' +
'<label>' + field . title + '</label>' +
'<p class="italic small help">' + field . description + '</p>' +
'<div class="form-group">' +
'<input name="" class="form-control phone-international-input" type="tel" id="' + random_id + '" ' + ( field . required ? 'required' : '' ) + ' ' + ( value ? 'value="' + value + '"' : '' ) + '>' +
'</div>' +
'</div>' ;
var number = {
'id' : random_id ,
'name' : field . name ,
};
numbers . push ( number );
}
else if ( field . type == 'boolean' )
{
html += '' +
'<div class="form-group">' +
'<label>' + field . title + '</label>' +
'<p class="italic small help">' + field . description + '</p>' +
'<div class="form-group">' +
'<input type="checkbox" name="phones[' + phone_id + '][adapter_data][' + field . name + ']" class="form-control" ' + ( field . required ? 'required' : '' ) + ' ' + ( value ? 'value="' + value + '" checked' : 'value="1"' ) + '><label class="switch" for="adapter_data[' + field . name + ']"></label>' +
'</div>' +
'</div>' ;
}
else
{
html += '' +
'<div class="form-group">' +
'<label>' + field . title + '</label>' +
'<p class="italic small help">' + field . description + '</p>' +
'<div class="form-group">' +
'<input name="phones[' + phone_id + '][adapter_data][' + field . name + ']" class="form-control" ' + ( field . required ? 'required' : '' ) + ' ' + ( value ? 'value="' + value + '"' : '' ) + '>' +
'</div>' +
'</div>' ;
}
});
if ( html == '' )
{
html = 'Pas de réglages.' ;
}
target . parents ( '.entry-container' ) . find ( '.adapter-data-fields' ) . html ( html );
for ( i = 0 ; i < numbers . length ; i ++ )
{
var iti_number_input = window . intlTelInput ( document . getElementById ( numbers [ i ] . id ), {
hiddenInput : 'phones[' + phone_id + '][adapter_data][' + numbers [ i ] . name + ']' ,
defaultCountry : '<?php $this->s($_SESSION[' user '][' settings '][' default_phone_country ']); ?>' ,
preferredCountries : < ? php $this -> s ( json_encode ( explode ( ',' , $_SESSION [ 'user' ][ 'settings' ][ 'preferred_phone_country' ])), false , false ); ?> ,
nationalMode : true ,
utilsScript : '<?php echo HTTP_PWD_JS; ?>/intlTelInput/utils.js' ,
});
}
}
jQuery ( 'document' ) . ready ( function ( $ )
{
jQuery ( '.adapter-select' ) . each ( function () {
change_adapter ( jQuery ( this ));
});
jQuery ( '.adapter-select' ) . on ( 'change' , function ( e )
{
change_adapter ( jQuery ( this ));
});
jQuery ( 'body' ) . on ( 'click' , '.phone-limits-group-remove' , function ( e )
{
e . preventDefault ();
jQuery ( this ) . parent ( '.phone-limits-group' ) . remove ();
return false ;
});
jQuery ( 'body' ) . on ( 'click' , '.add-phone-limit-button' , function ( e )
{
var phone_id = jQuery ( this ) . parents ( '.entry-container' ) . attr ( 'data-entry-id' );
var random_id = Math . random () . toString ( 36 ) . substring ( 2 , 15 ) + Math . random () . toString ( 36 ) . substring ( 2 , 15 );
var newLimit = '' +
'<div class="row phone-limits-group">' +
'<div class="col-xs-4">' +
'<label>Période</label><br/>' +
'<select name="phones[' + phone_id + '][limits][' + random_id + '][startpoint]" class="form-control adapter-select" required>' +
'<option value="" disabled selected>Période sur laquelle appliquer la limite</option>' +
'<option value="today">Par jour</option>' +
'<option value="-24 hours">24 heures glissantes</option>' +
'<option value="this week midnight">Cette semaine</option>' +
'<option value="-7 days">7 jours glissants</option>' +
'<option value="this week midnight -1 week">Ces deux dernières semaines</option>' +
'<option value="-14 days">14 jours glissants</option>' +
'<option value="this month midnight">Ce mois</option>' +
'<option value="-1 month">1 mois glissant</option>' +
'<option value="-28 days">28 jours glissants</option>' +
'<option value="-30 days">30 jours glissants</option>' +
'<option value="-31 days">31 jours glissants</option>' +
'</select>' +
'</div>' +
'<div class="scheduleds-number-data-container col-xs-8">' +
'<label>Volume</label>' +
'<div class="form-group">' +
'<input name="phones[' + phone_id + '][limits][' + random_id + '][volume]" class="form-control" type="number" min="1" placeholder="Nombre de SMS maximum sur la période.">' +
'</div>' +
'</div>' +
'<a href="#" class="phone-limits-group-remove"><span class="fa fa-times"></span></a>' +
'</div>' ;
jQuery ( this ) . parent ( 'div' ) . before ( newLimit );
});
});
</ script >
< ? php
$this -> render ( 'incs/footer' );