mirror of
https://github.com/RaspbianFrance/raspisms.git
synced 2025-04-21 08:56:27 +02:00
remove makefile
This commit is contained in:
parent
f955cf3db0
commit
38a8b023cb
276 changed files with 0 additions and 138 deletions
134
templates/account/show.php
Executable file
134
templates/account/show.php
Executable file
|
@ -0,0 +1,134 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Profile - Show'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'Account - Show']);
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>Profil</small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-user"></i> Profil
|
||||
</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-user fa-fw"></i> Mon profil</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-child fa-fw"></i> Mes données</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<strong>Adresse e-mail :</strong> <?php $this->s($_SESSION['user']['email']); ?><br/>
|
||||
<strong>Niveau administrateur :</strong> <?php echo $_SESSION['user']['admin'] ? 'Oui' : 'Non'; ?><br/>
|
||||
<strong>Clef API :</strong> <?php echo $_SESSION['user']['api_key']; ?><br/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-lock fa-fw"></i> Modifier mot de passe</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Account', 'update_password', ['csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Mot de passe :</label>
|
||||
<input name="password" type="password" class="form-control" placeholder="Nouveau mot de passe" />
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-success">Mettre à jour les données</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-trash-o fa-fw"></i> Supprimer ce compte</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Account', 'delete', ['csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="delete_account" type="checkbox" value="1" /> Je suis totalement sûr de vouloir supprimer ce compte
|
||||
</label>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-danger">Supprimer ce compte</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-at fa-fw"></i> Modifier e-mail</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Account', 'update_email', ['csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Adresse e-mail :</label>
|
||||
<input name="email" type="email" class="form-control" placeholder="Nouvelle adresse e-mail" />
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-success">Mettre à jour les données</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-key fa-fw"></i> Modifier clef API</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="text-center">
|
||||
<a class="btn btn-success" href="<?= \descartes\Router::url('Account', 'update_api_key', ['csrf' => $_SESSION['csrf']]); ?>"><i class="fa fa-refresh"></i> Générer une nouvelle clef API</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function ()
|
||||
{
|
||||
jQuery('.action-dropdown a').on('click', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var destination = jQuery(this).parents('.action-dropdown').attr('destination');
|
||||
var url = jQuery(this).attr('href');
|
||||
jQuery(destination).find('input:checked').each(function ()
|
||||
{
|
||||
url += '/' + jQuery(this).val();
|
||||
});
|
||||
window.location = url;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
72
templates/command/add.php
Executable file
72
templates/command/add.php
Executable file
|
@ -0,0 +1,72 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Command - Add'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'commands'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Nouvelle commande
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-terminal"></i> <a href="<?php echo \descartes\Router::url('Command', 'list'); ?>">Commandes</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-plus"></i> Nouveau
|
||||
</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-terminal fa-fw"></i> Ajout d'une nouvelle commande</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Command', 'create', ['csrf' => $_SESSION['csrf']]);?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Nom commande</label>
|
||||
<div class="form-group">
|
||||
<input name="name" class="form-control" type="text" placeholder="Nom commande" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Commande à appeler (la commande sera appelée depuis le dossier "<?php echo PWD_SCRIPTS; ?>")</label>
|
||||
<div class="form-group input-group">
|
||||
<span class="input-group-addon"><span class="fa fa-link"></span></span>
|
||||
<input name="script" class="form-control" type="text" placeholder="Ex : chauffage/monter.sh" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Niveau administrateur obligatoire</label>
|
||||
<div class="form-group">
|
||||
<input name="admin" type="radio" value="1" required /> Oui
|
||||
<input name="admin" type="radio" value="0" required /> Non
|
||||
</div>
|
||||
</div>
|
||||
<a class="btn btn-danger" href="<?php echo \descartes\Router::url('Command', 'list'); ?>">Annuler</a>
|
||||
<input type="submit" class="btn btn-success" value="Enregistrer la commande" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
76
templates/command/edit.php
Executable file
76
templates/command/edit.php
Executable file
|
@ -0,0 +1,76 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Command - Edit'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'commands'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Modification commandes
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-terminal"></i> <a href="<?php echo \descartes\Router::url('Command', 'list'); ?>">Commandes</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-edit fa-fw"></i>Modification de commandes</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Command', 'update', ['csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<?php foreach ($commands as $command) { ?>
|
||||
<input type="hidden" value="<?php $this->s($command['id']); ?>" name="commands[<?php $this->s($command['id']); ?>][id]" />
|
||||
<div class="form-group">
|
||||
<label>Nom commande</label>
|
||||
<div class="form-group">
|
||||
<input value="<?php $this->s($command['name']); ?>" name="commands[<?php $this->s($command['id']); ?>][name]" class="form-control" type="text" placeholder="Nom commande" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Commande à appeler (la commande sera appelée depuis le dossier "<?php echo PWD_SCRIPTS; ?>")</label>
|
||||
<div class="form-group input-group">
|
||||
<span class="input-group-addon"><span class="fa fa-link"></span></span>
|
||||
<input value="<?php $this->s($command['script']); ?>" name="commands[<?php $this->s($command['id']); ?>][script]" class="form-control" type="text" placeholder="Ex : chauffage/monter.sh" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Niveau administrateur obligatoire</label>
|
||||
<div class="form-group">
|
||||
<input <?php echo $command['admin'] ? 'checked' : ''; ?> name="commands[<?php $this->s($command['id']); ?>][admin]" type="radio" value="1" required /> Oui
|
||||
<input <?php echo $command['admin'] ? '' : 'checked'; ?> name="commands[<?php $this->s($command['id']); ?>][admin]" type="radio" value="0" required /> Non
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
<?php } ?>
|
||||
<a class="btn btn-danger" href="<?php echo \descartes\Router::url('Command', 'list'); ?>">Annuler</a>
|
||||
<input type="submit" class="btn btn-success" value="Enregistrer la commande" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
87
templates/command/list.php
Executable file
87
templates/command/list.php
Executable file
|
@ -0,0 +1,87 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Commands - Show All'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'commands'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>Commandes</small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-terminal"></i> Commandes
|
||||
</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-terminal fa-fw"></i> Liste des commandes</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form method="GET">
|
||||
<?php if (!$commands) { ?>
|
||||
<p>Aucune commande n'a été créée pour le moment.</p>
|
||||
<?php } else { ?>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover table-striped" id="table-commands">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Nom</th>
|
||||
<th>Script</th>
|
||||
<th>Admin obligatoire</th>
|
||||
<th style="width:5%;">Sélectionner</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($commands as $command) { ?>
|
||||
<tr>
|
||||
<td><?php $this->s($command['id']); ?></td>
|
||||
<td><?php $this->s($command['name']); ?></td>
|
||||
<td><?php $this->s($command['script']); ?></td>
|
||||
<td><?php echo $command['admin'] ? 'Oui' : 'Non' ; ?></td>
|
||||
<td><input type="checkbox" name="ids[]" value="<?php $this->s($command['id']); ?>"></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div>
|
||||
<div class="col-xs-6 no-padding">
|
||||
<a class="btn btn-success" href="<?php echo \descartes\Router::url('Command', 'add'); ?>"><span class="fa fa-plus"></span> Ajouter une commande</a>
|
||||
</div>
|
||||
<?php if ($commands) { ?>
|
||||
<div class="text-right col-xs-6 no-padding">
|
||||
<strong>Action pour la séléction :</strong>
|
||||
<button class="btn btn-default" type="submit" formaction="<?php echo \descartes\Router::url('Command', 'edit'); ?>"><span class="fa fa-edit"></span> Modifier</button>
|
||||
<button class="btn btn-default btn-confirm" type="submit" formaction="<?php echo \descartes\Router::url('Command', 'delete', ['csrf' => $_SESSION['csrf']]); ?>"><span class="fa fa-trash-o"></span> Supprimer</button>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
111
templates/conditional_group/add.php
Executable file
111
templates/conditional_group/add.php
Executable file
|
@ -0,0 +1,111 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Groupes Conditionnels - Add'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'conditional_groupes'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Nouveau groupe conditionnel
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-bullseye"></i> <a href="<?php echo \descartes\Router::url('ConditionalGroup', 'list'); ?>">Groupes Conditionnels</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-plus"></i> Nouveau
|
||||
</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-bullseye fa-fw"></i> Ajout d'un groupe conditionnel</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('ConditionalGroup', 'create', ['csrf' => $_SESSION['csrf']]);?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Nom du groupe conditionnel</label>
|
||||
<div class="form-group input-group">
|
||||
<span class="input-group-addon"><span class="fa fa-users"></span></span>
|
||||
<input name="name" class="form-control" type="text" placeholder="Nom groupe" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Condition</label>
|
||||
<p class="italic small help">
|
||||
Les conditions vous permettent de définir dynamiquement les contacts qui appartiennent au groupe en utilisant leurs données additionnelles. Pour plus d'informations consultez la documentation relative à <a href="#">l'utilisation des groupes conditionnels.</a><br/>
|
||||
Vous pouvez prévisualiser les contacts qui feront parti du groupe en cliquant sur le bouton <b>"Prévisualiser les contacts"</b>.
|
||||
</p>
|
||||
<input class="form-control" name="condition" placeholder="Ex : contact.datas.gender == 'male'"/>
|
||||
<div class="scheduled-preview-container">
|
||||
<a class="btn btn-info preview-button" href="#">Prévisualiser les contacts</a>
|
||||
</div>
|
||||
</div>
|
||||
<a class="btn btn-danger" href="<?php echo \descartes\Router::url('ConditionalGroup', 'list'); ?>">Annuler</a>
|
||||
<input type="submit" class="btn btn-success" value="Enregistrer le groupe" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" tabindex="-1" id="preview-text-modal">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title">Prévisualisation des contacts</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<pre></pre>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function()
|
||||
{
|
||||
jQuery('body').on('click', '.preview-button', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var condition = jQuery(this).parents('.form-group').find('input').val();
|
||||
|
||||
var datas = {
|
||||
'condition' : condition,
|
||||
};
|
||||
|
||||
jQuery.ajax({
|
||||
type: "POST",
|
||||
url: HTTP_PWD + '/conditional_group/preview/',
|
||||
data: datas,
|
||||
success: function (datas) {
|
||||
jQuery('#preview-text-modal').find('.modal-body pre').text(datas.result);
|
||||
jQuery('#preview-text-modal').modal({'keyboard': true});
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
83
templates/conditional_group/edit.php
Executable file
83
templates/conditional_group/edit.php
Executable file
|
@ -0,0 +1,83 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Groupes Conditionnels - Edit'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'conditional_groupes'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Modification groupes conditionnels
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-bullseye"></i> <a href="<?php echo \descartes\Router::url('ConditionalGroup', 'list'); ?>">Groupes Conditionnels</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-edit fa-fw"></i> Modification des groupes conditionnels</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('ConditionalGroup', 'update', ['csrf' => $_SESSION['csrf']]);?>" method="POST">
|
||||
<?php foreach ($groups as $group) { ?>
|
||||
<input name="groups[<?php $this->s($group['id']); ?>][group][id]" type="hidden" value="<?php $this->s($group['id']); ?>">
|
||||
<div class="form-group">
|
||||
<label>Nom du groupe conditionnel</label>
|
||||
<div class="form-group input-group">
|
||||
<span class="input-group-addon"><span class="fa fa-user"></span></span>
|
||||
<input name="groups[<?php $this->s($group['id']); ?>][name]" class="form-control" type="text" placeholder="Nom groupe" autofocus required value="<?php $this->s($group['name']); ?>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Condition</label>
|
||||
<p class="italic small help">
|
||||
Les conditions vous permettent de définir dynamiquement les contacts qui appartiennent au groupe en utilisant leurs données additionnelles. Pour plus d'informations consultez la documentation relative à <a href="#">l'utilisation des groupes conditionnels.</a>
|
||||
</p>
|
||||
<input class="form-control" name="groups[<?php $this->s($group['id']); ?>][condition]" value="<?php $this->s($group['condition']); ?>"/>
|
||||
</div>
|
||||
<hr/>
|
||||
<?php } ?>
|
||||
<a class="btn btn-danger" href="<?php echo \descartes\Router::url('ConditionalGroup', 'list'); ?>">Annuler</a>
|
||||
<input type="submit" class="btn btn-success" value="Enregistrer le groupe" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function()
|
||||
{
|
||||
jQuery('.add-contacts').each(function()
|
||||
{
|
||||
jQuery(this).magicSuggest({
|
||||
data: '<?php echo \descartes\Router::url('Contact', 'json_list'); ?>',
|
||||
valueField: 'id',
|
||||
displayField: 'name',
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
102
templates/conditional_group/list.php
Executable file
102
templates/conditional_group/list.php
Executable file
|
@ -0,0 +1,102 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'ConditionalGroupes Conditionnels - Show All'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'conditional_groupes'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>Groupes Conditionnels</small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-bullseye"></i> Groupes Conditionnels
|
||||
</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-bullseye fa-fw"></i> Liste des groupes conditionnels</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form method="GET">
|
||||
<?php if (!$groups) { ?>
|
||||
<p>Aucun groupe n'a été formé pour le moment.</p>
|
||||
<?php } else { ?>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover table-striped" id="table-groupes">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Nom</th>
|
||||
<th>Condition</th>
|
||||
<th style="width:5%;">Sélectionner</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($groups as $group) { ?>
|
||||
<tr>
|
||||
<td><?php $this->s($group['id']); ?></td>
|
||||
<td><?php $this->s($group['name']); ?></td>
|
||||
<td><?php $this->s($group['condition']); ?></td>
|
||||
<td><input type="checkbox" name="ids[]" value="<?php $this->s($group['id']); ?>"></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div>
|
||||
<div class="col-xs-6 no-padding">
|
||||
<a class="btn btn-success" href="<?php echo \descartes\Router::url('ConditionalGroup', 'add'); ?>"><span class="fa fa-plus"></span> Ajouter un groupe conditionnel</a>
|
||||
</div>
|
||||
<?php if ($groups) { ?>
|
||||
<div class="text-right col-xs-6 no-padding">
|
||||
<strong>Action pour la séléction :</strong>
|
||||
<button class="btn btn-default" type="submit" formaction="<?php echo \descartes\Router::url('Scheduled', 'add', ['prefilled' => 'conditional_groups']); ?>"><span class="fa fa-send"></span> Envoyer un message</button>
|
||||
<button class="btn btn-default" type="submit" formaction="<?php echo \descartes\Router::url('ConditionalGroup', 'edit'); ?>"><span class="fa fa-edit"></span> Modifier</button>
|
||||
<button class="btn btn-default btn-confirm" type="submit" formaction="<?php echo \descartes\Router::url('ConditionalGroup', 'delete', ['csrf' => $_SESSION['csrf']]); ?>"><span class="fa fa-trash-o"></span> Supprimer</button>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function ()
|
||||
{
|
||||
jQuery('.action-dropdown a').on('click', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var destination = jQuery(this).parents('.action-dropdown').attr('destination');
|
||||
var url = jQuery(this).attr('href');
|
||||
jQuery(destination).find('input:checked').each(function ()
|
||||
{
|
||||
url += '/' + jQuery(this).val();
|
||||
});
|
||||
window.location = url;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
25
templates/connect/forget-password.php
Executable file
25
templates/connect/forget-password.php
Executable file
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Forget Password'])
|
||||
?>
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<form class="col-xs-10 col-xs-offset-1 col-md-4 col-md-offset-4 connexion-form" action="<?php echo \descartes\Router::url('Connect', 'send_reset_password', ['csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<h2>Mot de passe oublié</h2>
|
||||
<div class="form-group">
|
||||
<label>Adresse e-mail</label>
|
||||
<div class="form-group input-group">
|
||||
<span class="input-group-addon"><span class="fa fa-at"></span></span>
|
||||
<input name="mail" class="form-control" type="email" placeholder="Ex : john.doe@example.tld" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a class="forget-password-link" href="<?php echo \descartes\Router::url('Connect', 'login'); ?>">Se connecter ?</a>
|
||||
<button class="btn btn-primary btn-lg btn-block">Renvoyer nouveau mot de passe</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
31
templates/connect/login.php
Executable file
31
templates/connect/login.php
Executable file
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Connexion'])
|
||||
?>
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<form class="col-xs-10 col-xs-offset-1 col-md-4 col-md-offset-4 connexion-form" action="<?php echo \descartes\Router::url('Connect', 'connection'); ?>" method="POST">
|
||||
<h2>Connexion - RaspiSMS</h2>
|
||||
<div class="form-group">
|
||||
<label>Adresse e-mail</label>
|
||||
<div class="form-group input-group">
|
||||
<span class="input-group-addon"><span class="fa fa-at"></span></span>
|
||||
<input name="mail" class="form-control" type="email" placeholder="Ex : john.doe@example.tld" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Mot de passe</label>
|
||||
<div class="form-group input-group">
|
||||
<span class="input-group-addon"><span class="fa fa-lock"></span></span>
|
||||
<input name="password" class="form-control" type="password" placeholder="Your password" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a class="forget-password-link" href="<?php echo \descartes\Router::url('Connect', 'forget_password'); ?>">Mot de passe oublié ?</a>
|
||||
<button class="btn btn-primary btn-lg btn-block">Connexion</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
22
templates/connect/reset-password-done.php
Executable file
22
templates/connect/reset-password-done.php
Executable file
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
$this->render('incs/head', ['title' => 'Mot de passe ré-initialisé'])
|
||||
?>
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<h2>Mot de passe ré-initialisé</h2>
|
||||
<div class="col-xs-8 col-xs-offset-2 text-center">
|
||||
<img src="<?php HTTP_PWD_IMG; ?>/reinitialize-password-validation.png" />
|
||||
</div>
|
||||
<div class="col-xs-8 col-xs-offset-2 text-center">
|
||||
Votre mot de passe a bien été mis à jour, vous allez êtres redirigé vers la page de connexion dans quelques secondes.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
window.setTimeout(function () {
|
||||
location.href = "<?php echo \descartes\Router::url('Connect', 'login'); ?>";
|
||||
}, 5000);
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
20
templates/connect/reset-password-invalid.php
Executable file
20
templates/connect/reset-password-invalid.php
Executable file
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Réinitialisation du mot de passe'])
|
||||
?>
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<h2>Erreur lors de la réinitialisation</h2>
|
||||
<div class="col-xs-8 col-xs-offset-2 text-center">
|
||||
<img src="<?php HTTP_PWD_IMG; ?>/reinitialize-password-error.png" />
|
||||
</div>
|
||||
<div class="col-xs-8 col-xs-offset-2 text-center">
|
||||
Le lien de ré-initialisation que vous avez utilisé est incorrect ou expiré.<br/>
|
||||
Merci de re-demander un modification de votre mot de passe.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
24
templates/connect/reset-password.php
Executable file
24
templates/connect/reset-password.php
Executable file
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Réinitilisation du mot de passer'])
|
||||
?>
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<form class="col-xs-10 col-xs-offset-1 col-md-4 col-md-offset-4 connexion-form" action="" method="POST">
|
||||
<h2>Ré-initialiez votre mot de passe</h2>
|
||||
<div class="form-group">
|
||||
<label>Nouveau mot de passe</label>
|
||||
<div class="form-group input-group">
|
||||
<span class="input-group-addon"><span class="fa fa-lock"></span></span>
|
||||
<input name="password" class="form-control" type="password" placeholder="Votre nouveau mot de passe" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary btn-lg btn-block">Mettre à jour le mot de passe</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
19
templates/connect/send-reset-password.php
Executable file
19
templates/connect/send-reset-password.php
Executable file
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Demande de réinitialisation du mot de passe'])
|
||||
?>
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<h2>Email envoyé</h2>
|
||||
<div class="col-xs-8 col-xs-offset-2 text-center">
|
||||
<img src="<?php HTTP_PWD_IMG; ?>/send-email.png" />
|
||||
</div>
|
||||
<div class="col-xs-8 col-xs-offset-2 text-center">
|
||||
Un email avec un lien vous permettant de ré-initialiser votre mot de passe viens de vous être envoyé.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
162
templates/contact/add.php
Executable file
162
templates/contact/add.php
Executable file
|
@ -0,0 +1,162 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Contacts - Show All'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'contacts'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Nouveau contact
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-user"></i> <a href="<?php echo \descartes\Router::url('Contact', 'list'); ?>">Contacts</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-plus"></i> Nouveau
|
||||
</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-user fa-fw"></i> Ajout d'un contact</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Contact', 'create', ['csrf' => $_SESSION['csrf']]);?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Nom contact</label>
|
||||
<div class="form-group input-group">
|
||||
<span class="input-group-addon"><span class="fa fa-user"></span></span>
|
||||
<input name="name" class="form-control" type="text" placeholder="Nom contact" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Numéro de téléphone du contact</label>
|
||||
<div class="form-group">
|
||||
<input name="" class="form-control" type="tel" id="phone-international-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Données du contact</label>
|
||||
<p class="italic small help" id="description-datas">
|
||||
Les données d'un contact vous permettent de l'enrichir afin de pouvoir accéder à ces données au sein d'un message via <a href="#">l'utilisation de templates.</a><br/>
|
||||
Laissez vide si vous ne souhaitez pas renseigner d'informations supplémentaires pour le contact. Utilisez uniquement des lettres, des chiffres et des underscore pour les noms de données, ni espace ni caractères spéciaux.
|
||||
</p>
|
||||
<div class="contact-datas-container">
|
||||
<div class="form-group">
|
||||
<input name="" class="form-control contact-data-name" type="text" placeholder="Nom de la donnée" pattern="[a-zA-Z0-9_]*">
|
||||
:
|
||||
<input name="" class="form-control contact-data-value" type="text" placeholder="Valeur de la donnée">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a class="btn btn-danger" href="<?php echo \descartes\Router::url('Contact', 'list'); ?>">Annuler</a>
|
||||
<input type="submit" class="btn btn-success" value="Enregistrer le contact" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery('document').ready(function($)
|
||||
{
|
||||
var number_input = jQuery('#phone-international-input')[0];
|
||||
var iti_number_input = window.intlTelInput(number_input, {
|
||||
hiddenInput: 'number',
|
||||
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,
|
||||
<?php if ($_SESSION['user']['settings']['authorized_phone_country'] ?? false) { ?>
|
||||
onlyCountries: <?php $this->s(json_encode(explode(',', $_SESSION['user']['settings']['authorized_phone_country'])), false, false); ?>,
|
||||
<?php } ?>
|
||||
utilsScript: '<?php echo HTTP_PWD_JS; ?>/intlTelInput/utils.js'
|
||||
});
|
||||
|
||||
|
||||
jQuery('.contact-datas-container').on('input', '.contact-data-value, .contact-data-name', function (e)
|
||||
{
|
||||
var focus_group = jQuery(this).parent('.form-group');
|
||||
var focus_input = this;
|
||||
var input_name = focus_group.find('.contact-data-name');
|
||||
var input_value = focus_group.find('.contact-data-value');
|
||||
|
||||
jQuery('.contact-datas-container .form-group').each(function (e)
|
||||
{
|
||||
var current_input_name = jQuery(this).find('.contact-data-name');
|
||||
var current_input_value = jQuery(this).find('.contact-data-value');
|
||||
|
||||
if (current_input_value.is(focus_input) || current_input_name.is(focus_input))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (jQuery(current_input_name).val() === '' && jQuery(current_input_value).val() === '')
|
||||
{
|
||||
jQuery(this).remove();
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
if (input_name.val() === '' || input_value.val() === '')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
var template = '' +
|
||||
'<div class="form-group">' +
|
||||
'<input name="" class="form-control contact-data-name" type="text" placeholder="Nom de la donnée" pattern="[a-zA-Z0-9_]*">' +
|
||||
' : ' +
|
||||
'<input name="" class="form-control contact-data-value" type="text" placeholder="Valeur de la donnée">' +
|
||||
' <a href="#" class="contact-datas-remove"><span class="fa fa-times"></span></a>' +
|
||||
'</div>';
|
||||
jQuery('.contact-datas-container').append(template);
|
||||
});
|
||||
|
||||
jQuery('.contact-datas-container').on('click', '.contact-datas-remove', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
if (jQuery('.contact-datas-container .form-group').length > 1)
|
||||
{
|
||||
jQuery(this).parent('.form-group').remove();
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
jQuery('form').on('submit', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
|
||||
jQuery('.contact-datas-container .form-group').each(function ()
|
||||
{
|
||||
var name = jQuery(this).find('.contact-data-name').val();
|
||||
name = name.replace(/\W/g, '');
|
||||
name = 'datas[' + name + ']';
|
||||
jQuery(this).find('.contact-data-value').attr('name', name);
|
||||
});
|
||||
|
||||
e.currentTarget.submit();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
192
templates/contact/edit.php
Executable file
192
templates/contact/edit.php
Executable file
|
@ -0,0 +1,192 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Contacts - Edit'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'contacts'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Modification contacts
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-user"></i> <a href="<?php echo \descartes\Router::url('Contact', 'list'); ?>">Contacts</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-edit fa-fw"></i> Modification de contacts</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Contact', 'update', ['csrf' => $_SESSION['csrf']]);?>" method="POST">
|
||||
<?php foreach ($contacts as $contact) { ?>
|
||||
<div class="form-group">
|
||||
<input name="contacts[<?php $this->s($contact['id']); ?>][id]" type="hidden" value="<?php $this->s($contact['id']); ?>">
|
||||
<label>Nom contact</label>
|
||||
<div class="form-group input-group">
|
||||
<span class="input-group-addon"><span class="fa fa-user"></span></span>
|
||||
<input name="contacts[<?php $this->s($contact['id']); ?>][name]" class="form-control" type="text" placeholder="Nom contact" autofocus required value="<?php $this->s($contact['name']); ?>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Numéro de téléphone du contact</label>
|
||||
<div class="form-group">
|
||||
<input name="" class="form-control phone-international-input" type="tel" contact-id="<?php $this->s($contact['id']); ?>" value="<?php $this->s($contact['number']); ?>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Données du contact</label>
|
||||
<p class="italic small help" id="description-datas">
|
||||
Les données d'un contact vous permettent de l'enrichir afin de pouvoir accéder à ces données au sein d'un message via <a href="#">l'utilisation de templates.</a><br/>
|
||||
Laissez vide si vous ne souhaitez pas renseigner d'informations supplémentaires pour le contact. Utilisez uniquement des lettres, des chiffres et des underscore pour les noms de données, ni espace ni caractères spéciaux.
|
||||
</p>
|
||||
<div class="contact-datas-container" data-id-contact="<?php $this->s($contact['id']); ?>">
|
||||
<?php if (!$contact['datas']) { ?>
|
||||
<div class="form-group">
|
||||
<input name="" class="form-control contact-data-name" type="text" placeholder="Nom de la donnée" pattern="[a-zA-Z0-9_]*">
|
||||
:
|
||||
<input name="" class="form-control contact-data-value" type="text" placeholder="Valeur de la donnée">
|
||||
</div>
|
||||
<?php } else {?>
|
||||
<?php foreach ($contact['datas'] as $name => $data) { ?>
|
||||
<div class="form-group">
|
||||
<input name="" class="form-control contact-data-name" type="text" placeholder="Nom de la donnée" pattern="[a-zA-Z0-9_]*" value="<?php $this->s($name); ?>">
|
||||
:
|
||||
<input name="" class="form-control contact-data-value" type="text" placeholder="Valeur de la donnée" value="<?php $this->s($data); ?>">
|
||||
<a href="#" class="contact-datas-remove"><span class="fa fa-times"></span></a>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div class="form-group">
|
||||
<input name="" class="form-control contact-data-name" type="text" placeholder="Nom de la donnée" pattern="[a-zA-Z0-9_]*">
|
||||
:
|
||||
<input name="" class="form-control contact-data-value" type="text" placeholder="Valeur de la donnée">
|
||||
<a href="#" class="contact-datas-remove"><span class="fa fa-times"></span></a>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
<?php } ?>
|
||||
<a class="btn btn-danger" href="<?php echo \descartes\Router::url('Contact', 'list'); ?>">Annuler</a>
|
||||
<input type="submit" class="btn btn-success" value="Enregistrer le contact" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery('document').ready(function($)
|
||||
{
|
||||
jQuery('.phone-international-input').each(function()
|
||||
{
|
||||
var number_input = this;
|
||||
var hidden_input_name = 'contacts[' + jQuery(number_input).attr('contact-id') + '][number]';
|
||||
var iti_number_input = window.intlTelInput(number_input, {
|
||||
hiddenInput: hidden_input_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); ?>,
|
||||
<?php if ($_SESSION['user']['settings']['authorized_phone_country'] ?? false) { ?>
|
||||
onlyCountries: <?php $this->s(json_encode(explode(',', $_SESSION['user']['settings']['authorized_phone_country'])), false, false); ?>,
|
||||
<?php } ?>
|
||||
nationalMode: true,
|
||||
utilsScript: '<?php echo HTTP_PWD_JS; ?>/intlTelInput/utils.js'
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
jQuery('.contact-datas-container').on('input', '.contact-data-value, .contact-data-name', function (e)
|
||||
{
|
||||
var focus_group = jQuery(this).parent('.form-group');
|
||||
var focus_input = this;
|
||||
var input_name = focus_group.find('.contact-data-name');
|
||||
var input_value = focus_group.find('.contact-data-value');
|
||||
|
||||
var datas_container = jQuery(this).parents('.contact-datas-container');
|
||||
|
||||
datas_container.find('.form-group').each(function (e)
|
||||
{
|
||||
console.log(this);
|
||||
var current_input_name = jQuery(this).find('.contact-data-name');
|
||||
var current_input_value = jQuery(this).find('.contact-data-value');
|
||||
|
||||
if (current_input_value.is(focus_input) || current_input_name.is(focus_input))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (jQuery(current_input_name).val() === '' && jQuery(current_input_value).val() === '')
|
||||
{
|
||||
jQuery(this).remove();
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
if (input_name.val() === '' || input_value.val() === '')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
var template = '' +
|
||||
'<div class="form-group">' +
|
||||
'<input name="" class="form-control contact-data-name" type="text" placeholder="Nom de la donnée" pattern="[a-zA-Z0-9_]*">' +
|
||||
' : ' +
|
||||
'<input name="" class="form-control contact-data-value" type="text" placeholder="Valeur de la donnée">' +
|
||||
' <a href="#" class="contact-datas-remove"><span class="fa fa-times"></span></a>' +
|
||||
'</div>';
|
||||
datas_container.append(template);
|
||||
});
|
||||
|
||||
jQuery('.contact-datas-container').on('click', '.contact-datas-remove', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
if (jQuery('.contact-datas-container .form-group').length > 1)
|
||||
{
|
||||
jQuery(this).parent('.form-group').remove();
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
jQuery('form').on('submit', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
|
||||
jQuery('.contact-datas-container .form-group').each(function ()
|
||||
{
|
||||
var contact_id = jQuery(this).parents('.contact-datas-container').attr('data-id-contact');
|
||||
var name = jQuery(this).find('.contact-data-name').val();
|
||||
name = name.replace(/\W/g, '');
|
||||
|
||||
name = 'contacts[' + contact_id + '][datas][' + name + ']';
|
||||
jQuery(this).find('.contact-data-value').attr('name', name);
|
||||
});
|
||||
|
||||
e.currentTarget.submit();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
143
templates/contact/list.php
Executable file
143
templates/contact/list.php
Executable file
|
@ -0,0 +1,143 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Contacts - Show All'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'contacts'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>Contacts</small>
|
||||
<a class="btn btn-info float-right" id="btn-export" href="#"><span class="fa fa-upload"></span> Exporter la liste des contacts</a>
|
||||
<a class="btn btn-info float-right" id="btn-import" href="#" style="margin-right: 10px;"><span class="fa fa-download"></span> Importer une liste de contacts</a>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-user"></i> Contacts
|
||||
</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-user fa-fw"></i> Liste des contacts</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form method="GET">
|
||||
<?php if (!$contacts) { ?>
|
||||
<p>Aucun contact n'est enregistré pour le moment.</p>
|
||||
<?php } else { ?>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover table-striped" id="table-contacts">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Nom</th>
|
||||
<th>Numéro</th>
|
||||
<th style="width:5%;">Sélectionner</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($contacts as $contact) { ?>
|
||||
<tr>
|
||||
<td><?php $this->s($contact['id']); ?></td>
|
||||
<td><?php $this->s($contact['name']); ?></td>
|
||||
<td><?php echo(\controllers\internals\Tool::phone_link($contact['number'])); ?></td>
|
||||
<td><input type="checkbox" name="ids[]" value="<?php $this->s($contact['id']); ?>"></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div>
|
||||
<div class="col-xs-6 no-padding">
|
||||
<a class="btn btn-success" href="<?php echo \descartes\Router::url('Contact', 'add'); ?>"><span class="fa fa-plus"></span> Ajouter un contact</a>
|
||||
</div>
|
||||
<?php if ($contacts) { ?>
|
||||
<div class="text-right col-xs-6 no-padding">
|
||||
<strong>Action pour la séléction :</strong>
|
||||
<button class="btn btn-default" type="submit" formaction="<?php echo \descartes\Router::url('Scheduled', 'add', ['prefilled' => 'contacts']); ?>"><span class="fa fa-send"></span> Envoyer un message</button>
|
||||
<button class="btn btn-default" type="submit" formaction="<?php echo \descartes\Router::url('Contact', 'edit'); ?>"><span class="fa fa-edit"></span> Modifier</button>
|
||||
<button class="btn btn-default btn-confirm" type="submit" formaction="<?php echo \descartes\Router::url('Contact', 'delete', ['csrf' => $_SESSION['csrf']]); ?>"><span class="fa fa-trash-o"></span> Supprimer</button>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" tabindex="-1" id="import-modal">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<form action="<?php $this->s(\descartes\Router::url('Contact', 'import', ['csrf' => $_SESSION['csrf']])); ?>" method="POST" enctype="multipart/form-data">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title">Importer une liste de contacts</h4>
|
||||
</div>
|
||||
<div class="modal-body text-center">
|
||||
<p>Vous pouvez importer une liste aux formats suivants : CSV ou JSON.</p>
|
||||
<input id="contacts_list_file" type="file" name="contacts_list_file" class="hidden" required="required">
|
||||
<label class="btn btn-default" for="contacts_list_file"><span class="fa fa-file-text-o hidden invalid-icon"></span><span class="fa fa-check hidden valid-icon"></span> Choisir le fichier</label>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a type="button" class="btn btn-danger" data-dismiss="modal">Annuler</a>
|
||||
<input type="submit" class="btn btn-success" value="Valider" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" tabindex="-1" id="export-modal">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<form action="<?php $this->s(\descartes\Router::url('Contact', 'import', ['csrf' => $_SESSION['csrf']])); ?>" method="POST" enctype="multipart/form-data">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title">Exporter la liste des contacts</h4>
|
||||
</div>
|
||||
<div class="modal-body text-center">
|
||||
<p>Vous pouvez exporter la liste aux formats suivants.</p>
|
||||
<a target="_blank" href="<?php $this->s(\descartes\Router::url('Contact', 'export', ['format' => 'csv'])); ?>" class="btn btn-default">CSV</a>
|
||||
<a target="_blank" href="<?php $this->s(\descartes\Router::url('Contact', 'export', ['format' => 'json'])); ?>" class="btn btn-default">JSON</a>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a type="button" class="btn btn-danger" data-dismiss="modal">Annuler</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function()
|
||||
{
|
||||
jQuery('body').on('click', '#btn-import', function ()
|
||||
{
|
||||
jQuery('#import-modal').modal({'keyboard': true});
|
||||
});
|
||||
|
||||
jQuery('body').on('click', '#btn-export', function ()
|
||||
{
|
||||
jQuery('#export-modal').modal({'keyboard': true});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
264
templates/dashboard/show.php
Executable file
264
templates/dashboard/show.php
Executable file
|
@ -0,0 +1,264 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head')
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'dashboard'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>Statistiques d'utilisation</small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li class="active">
|
||||
<i class="fa fa-dashboard"></i> Dashboard
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.row -->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-3 col-md-6">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<div class="row">
|
||||
<div class="col-xs-3">
|
||||
<i class="fa fa-user fa-5x"></i>
|
||||
</div>
|
||||
<div class="col-xs-9 text-right">
|
||||
<div class="huge"><?php echo $nb_contacts; ?></div>
|
||||
<div>Contacts</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a href="<?php echo \descartes\Router::url('Contact', 'list') ?>">
|
||||
<div class="panel-footer">
|
||||
<span class="pull-left">Voir vos contacts</span>
|
||||
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-3 col-md-6">
|
||||
<div class="panel panel-green">
|
||||
<div class="panel-heading">
|
||||
<div class="row">
|
||||
<div class="col-xs-3">
|
||||
<i class="fa fa-group fa-5x"></i>
|
||||
</div>
|
||||
<div class="col-xs-9 text-right">
|
||||
<div class="huge"><?php echo $nb_groups; ?></div>
|
||||
<div>Groupes</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a href="<?php echo \descartes\Router::url('Group', 'list') ?>">
|
||||
<div class="panel-footer">
|
||||
<span class="pull-left">Voir les groupes</span>
|
||||
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-3 col-md-6">
|
||||
<div class="panel panel-yellow">
|
||||
<div class="panel-heading">
|
||||
<div class="row">
|
||||
<div class="col-xs-3">
|
||||
<i class="fa fa-calendar fa-5x"></i>
|
||||
</div>
|
||||
<div class="col-xs-9 text-right">
|
||||
<div class="huge"><?php echo $nb_scheduleds; ?></div>
|
||||
<div>SMS programmés</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a href="<?php echo \descartes\Router::url('Scheduled', 'list') ?>">
|
||||
<div class="panel-footer">
|
||||
<span class="pull-left">Voir les SMS programmés</span>
|
||||
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-3 col-md-6">
|
||||
<div class="panel panel-red">
|
||||
<div class="panel-heading">
|
||||
<div class="row">
|
||||
<div class="col-xs-3">
|
||||
<i class="fa fa-eye-slash fa-5x"></i>
|
||||
</div>
|
||||
<div class="col-xs-9 text-right">
|
||||
<div class="huge"><?php echo $nb_unreads; ?></div>
|
||||
<div>SMS non lus</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a href="<?php echo \descartes\Router::url('Received', 'list_unread') ?>">
|
||||
<div class="panel-footer">
|
||||
<span class="pull-left">Voir les SMS non lus</span>
|
||||
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</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-area-chart fa-fw"></i> Activité de la semaine : </h3>
|
||||
<span style="color: #5CB85C;">SMS envoyés (moyenne = <?php echo $avg_sendeds; ?> par jour).</span><br/>
|
||||
<span style="color: #EDAB4D">SMS reçus (moyenne = <?php echo $avg_receiveds; ?> par jour).</span>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div id="morris-area-chart"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.row -->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-4">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-upload fa-fw"></i> SMS Envoyés</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<?php if (!$sendeds) { ?>
|
||||
Vous n'avez envoyé aucun SMS pour l'instant.
|
||||
<?php } else { ?>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Numéro</th>
|
||||
<th>Date</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($sendeds as $sended) { ?>
|
||||
<tr>
|
||||
<td><?php echo \controllers\internals\Tool::phone_link($sended['destination']); ?></td>
|
||||
<td><?php $this->s($sended['at']); ?></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<a href="<?php echo \descartes\Router::url('Sended', 'list'); ?>">Voir tous les SMS envoyés <i class="fa fa-arrow-circle-right"></i></a>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-download fa-fw"></i> SMS Reçus</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<?php if (!$receiveds) { ?>
|
||||
Vous n'avez reçu aucun SMS pour l'instant.
|
||||
<?php } else { ?>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Numéro</th>
|
||||
<th>Date</th>
|
||||
<th>Commande</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($receiveds as $received) { ?>
|
||||
<tr>
|
||||
<td><?php echo \controllers\internals\Tool::phone_link($received['origin']); ?></td>
|
||||
<td><?php $this->s($received['at']); ?></td>
|
||||
<td><?php echo ($received['command']) ? 'Oui' : 'Non'; ?></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<a href="<?php echo \descartes\Router::url('Received', 'list'); ?>">Voir tous les SMS reçus <i class="fa fa-arrow-circle-right"></i></a>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-clock-o fa-fw"></i> Évènements survenus</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<?php if (!$events) { ?>
|
||||
Aucun évènement n'est encore survenu.
|
||||
<?php } else { ?>
|
||||
<div class="list-group">
|
||||
<?php foreach ($events as $event) { ?>
|
||||
<a href="#" class="list-group-item">
|
||||
<span class="badge"><?php $this->s($event['at']); ?></span>
|
||||
<i class="fa fa-fw <?php echo \controllers\internals\Tool::event_type_to_icon($event['type']); ?>"></i> <?php $this->s($event['text']); ?>
|
||||
</a>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<a href="<?php echo \descartes\Router::url('Event', 'list'); ?>">Voirs tous les évènements survenus <i class="fa fa-arrow-circle-right"></i></a>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.row -->
|
||||
|
||||
</div>
|
||||
<!-- /.container-fluid -->
|
||||
|
||||
</div>
|
||||
<!-- /#page-wrapper -->
|
||||
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function()
|
||||
{
|
||||
Morris.Area({
|
||||
element: 'morris-area-chart',
|
||||
behaveLikeLine: true,
|
||||
fillOpacity: 0.4,
|
||||
data: <?php echo $datas_area_chart;?>,
|
||||
xkey: 'period',
|
||||
parseTime: false,
|
||||
ykeys: ['sendeds', 'receiveds'],
|
||||
labels: ['SMS envoyés', 'SMS reçus'],
|
||||
lineColors: ['#5CB85C', '#EDAB4D'],
|
||||
goals: [<?php echo $avg_sendeds; ?>, <?php echo $avg_receiveds; ?>],
|
||||
goalLineColors: ['#5CB85C', '#EDAB4D'],
|
||||
goalStrokeWidth: 2,
|
||||
pointSize: 4,
|
||||
hideHover: 'auto',
|
||||
resize: true
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<!-- /#wrapper -->
|
||||
<?php
|
||||
$this->render('incs/footer');
|
67
templates/discussion/list.php
Executable file
67
templates/discussion/list.php
Executable file
|
@ -0,0 +1,67 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Discussions - Show All'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'discussions'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>Discussions</small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-comments-o"></i> Discussions
|
||||
</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-comments-o fa-fw"></i> Liste des discussions</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<?php if (!$discussions) { ?>
|
||||
Aucune discussion n'est en cours actuellement.
|
||||
<?php } else { ?>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover table-striped" id="table-discussions">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Date du dernier message</th>
|
||||
<th>Numéro</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($discussions as $discussion) { ?>
|
||||
<tr class="goto" url="<?php $this->s(\descartes\Router::url('Discussion', 'show', ['number' => $discussion['number']])); ?>">
|
||||
<td><?php $this->s($discussion['at']); ?></td>
|
||||
<td><?php $this->s(isset($discussion['contact']) ? $discussion['contact'] . ' (' . \controllers\internals\Tool::phone_format($discussion['number']) . ')' : \controllers\internals\Tool::phone_format($discussion['number'])); ?></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
154
templates/discussion/show.php
Executable file
154
templates/discussion/show.php
Executable file
|
@ -0,0 +1,154 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Discussions - Show All'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'discussions'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Discussion <small><?php $this->s($contact ? $contact['name'] . ' (' . \controllers\internals\Tool::phone_format($number) . ')' : \controllers\internals\Tool::phone_format($number)); ?></small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-comments-o"></i> <a href="<?php echo \descartes\Router::url('Discussion', 'list'); ?>">Discussions</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<?php $this->s(\controllers\internals\Tool::phone_format($number)); ?>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.row -->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-12 discussion-container">
|
||||
<div class="text-center"><i class="fa fa-spinner fa-spin"></i></div>
|
||||
</div>
|
||||
<div class="col-lg-12 message-input-container">
|
||||
<div class="discussion-message message-input">
|
||||
<form class="send-message-discussion" action="<?php $this->s(\descartes\Router::url('Discussion', 'send', ['csrf' => $_SESSION['csrf']])); ?>" method="POST">
|
||||
<textarea name="text" placeholder="Envoyer un message..."></textarea>
|
||||
<input type="hidden" name="destination" value="<?php $this->s($number); ?>" />
|
||||
<?php if ($response_number ) { ?>
|
||||
<input type="hidden" name="origin" value="<?php $this->s($response_number); ?>" />
|
||||
<?php } ?>
|
||||
<button class="btn" ><span class="fa fa-fw fa-send-o"></span> Envoyer</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function () {
|
||||
|
||||
var alreadyReceivedMessages = [];
|
||||
|
||||
/**
|
||||
* Cette fonction vérifie régulièrement les sms pour mettre à jour l'affichage
|
||||
*/
|
||||
function getmessages ()
|
||||
{
|
||||
ajaxTransactionId = Date.now();
|
||||
jQuery.getJSON(HTTP_PWD + "/discussion/getmessage/<?php echo htmlspecialchars(urlencode($number)); ?>/" + ajaxTransactionId , function( data ) {
|
||||
|
||||
if (data.transaction_id != ajaxTransactionId)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
jQuery('.discussion-container').html('');
|
||||
|
||||
|
||||
$.each(data.messages, function(key, message) {
|
||||
|
||||
<?php if ($_SESSION['user']['settings']['detect_url']) { ?>
|
||||
//On ajoute la detection de lien dans le texte du message
|
||||
message.text = Autolinker.link(message.text, {newWindow:true});
|
||||
<?php } ?>
|
||||
|
||||
switch (message.type)
|
||||
{
|
||||
case 'received' :
|
||||
var texte = '' +
|
||||
'<div class="clearfix message-container">' +
|
||||
'<div class="discussion-message message-received">' +
|
||||
'<div class="discussion-message-text">' + message.text + '</div>' +
|
||||
'<div class="discussion-message-date">' + message.date + '</div>' +
|
||||
'</div>' +
|
||||
'</div>';
|
||||
|
||||
if (alreadyReceivedMessages.indexOf(message.md5) == -1)
|
||||
{
|
||||
playReceptionSound();
|
||||
alreadyReceivedMessages.push(message.md5);
|
||||
}
|
||||
|
||||
break;
|
||||
case 'sended' :
|
||||
var texte = '' +
|
||||
'<div class="clearfix message-container">' +
|
||||
'<div class="discussion-message message-sended">' +
|
||||
'<div class="discussion-message-text">' + message.text + '</div>' +
|
||||
'<div class="discussion-message-date">' + message.date + ' ' + (message.status == 'delivered' ? '<span class="fa fa-check-circle fa-fw text-success"></span>' : (message.status == 'failed' ? '<span class="fa fa-times-circle fa-fw text-danger"></span>' : '<span class="fa fa-clock-o fa-fw text-info"></span>' )) + '</div>' +
|
||||
'</div>' +
|
||||
'</div>';
|
||||
break;
|
||||
case 'inprogress' :
|
||||
var texte = '' +
|
||||
'<div class="clearfix message-container">' +
|
||||
'<div class="discussion-message message-sended">' +
|
||||
'<div class="message-in-progress-hover"><i class="fa fa-spinner fa-spin"></i></div>' +
|
||||
'<div class="discussion-message-text">' + message.text + '</div>' +
|
||||
'<div class="discussion-message-date">' + message.date + '</div>' +
|
||||
'</div>' +
|
||||
'</div>';
|
||||
break;
|
||||
default :
|
||||
var texte = '';
|
||||
break;
|
||||
}
|
||||
|
||||
jQuery('.discussion-container').append(texte);
|
||||
});
|
||||
scrollDownDiscussion();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction permet de fixer la taille de la fenetre de discussion
|
||||
*/
|
||||
function fullHeightDiscussion()
|
||||
{
|
||||
var containerPosition = jQuery('.discussion-container').position();
|
||||
var windowHeight = jQuery(window).height();
|
||||
var messageInputContainer = jQuery('.message-input-container').outerHeight();
|
||||
var footerHeight = jQuery('footer').outerHeight();
|
||||
|
||||
var containerHeight = Math.floor(windowHeight - (containerPosition.top + footerHeight * 2 + messageInputContainer));
|
||||
|
||||
jQuery('.discussion-container').outerHeight(containerHeight);
|
||||
}
|
||||
|
||||
fullHeightDiscussion();
|
||||
|
||||
jQuery(window).on('resize', function () {
|
||||
fullHeightDiscussion();
|
||||
});
|
||||
|
||||
var getmessagesInterval = setInterval(getmessages, 2500);
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
7
templates/email/create-user.php
Executable file
7
templates/email/create-user.php
Executable file
|
@ -0,0 +1,7 @@
|
|||
Votre compte a été créé sur le site <?php echo HTTP_PWD; ?> avec les identifiants suivants :
|
||||
Adresse e-mail : <?php echo $email; ?>
|
||||
|
||||
Mot de passe : <?php echo $password; ?>
|
||||
|
||||
--------------------------------------------------------------------------------------------
|
||||
Pour plus d'informations sur le système RaspiSMS, rendez-vous sur le site https://raspisms.raspberry-pi.fr
|
5
templates/email/reset-password.php
Executable file
5
templates/email/reset-password.php
Executable file
|
@ -0,0 +1,5 @@
|
|||
Vous avez demandé la ré-initialisation de votre mot de passe pour le site <?php echo HTTP_PWD; ?>.
|
||||
Pour ré-initialisez votre mot de passe, rendez-vous à l'adresse suivante : <?php echo $reset_link; ?>.
|
||||
|
||||
--------------------------------------------------------------------------------------------
|
||||
Pour plus d'informations sur le système RaspiSMS, rendez-vous sur le site https://raspisms.raspberry-pi.fr
|
5
templates/email/transfer-sms.php
Executable file
5
templates/email/transfer-sms.php
Executable file
|
@ -0,0 +1,5 @@
|
|||
Vous avez reçu un nouveau SMS :
|
||||
Date : <?= $sms['at'] ?>
|
||||
Origine : <?= $sms['origin'] ?>
|
||||
Destination : <?= $sms['destination'] ?>
|
||||
Message : <?= $sms['text'] ?>
|
112
templates/event/list.php
Executable file
112
templates/event/list.php
Executable file
|
@ -0,0 +1,112 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Events - Show All'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'events'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>Évènements</small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-clock-o"></i> Évènements
|
||||
</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-clock-o fa-fw"></i> Liste des évènements</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form method="GET">
|
||||
<?php if (!$events) { ?>
|
||||
<p>Aucun évènement n'a été enregistré pour le moment.</p>
|
||||
<?php } else { ?>
|
||||
<div class="table-events">
|
||||
<table class="table table-bordered table-hover table-striped" id="table-events">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Type</th>
|
||||
<th>Date</th>
|
||||
<th>Texte</th>
|
||||
<?php if ($_SESSION['user']['admin']) { ?><th>Sélectionner</th><?php } ?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($events as $event) { ?>
|
||||
<tr>
|
||||
<td><?php $this->s($event['id']); ?></td>
|
||||
<td><span class="fa fa-fw <?php echo \controllers\internals\Tool::event_type_to_icon($event['type']); ?>"></span></td>
|
||||
<td><?php $this->s($event['at']); ?></td>
|
||||
<td><?php $this->s($event['text']); ?></td>
|
||||
<?php if ($_SESSION['user']['admin']) { ?>
|
||||
<td><input name="ids[]" type="checkbox" value="<?php $this->s($event['id']); ?>"></td>
|
||||
<?php } ?>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<?php if ($_SESSION['user']['admin']) { ?>
|
||||
<div class="text-right col-xs-12 no-padding">
|
||||
<strong>Action pour la séléction :</strong>
|
||||
<button class="btn btn-default btn-confirm" type="submit" formaction="<?php echo \descartes\Router::url('Event', 'delete', ['csrf' => $_SESSION['csrf']]); ?>"><span class="fa fa-trash-o"></span> Supprimer</button>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<ul class="pager">
|
||||
<?php if ($page) { ?>
|
||||
<li><a href="<?php echo \descartes\Router::url('Event', 'list', array('page' => $page - 1)); ?>"><span aria-hidden="true">←</span> Précèdents</a></li>
|
||||
<?php } ?>
|
||||
|
||||
Page : <?php $this->s($page + 1); ?>
|
||||
|
||||
<?php if ($limit == $nb_results) { ?>
|
||||
<li><a href="<?php echo \descartes\Router::url('Event', 'list', array('page' => $page + 1)); ?>">Suivants <span aria-hidden="true">→</span></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function ()
|
||||
{
|
||||
jQuery('.action-dropdown a').on('click', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var destination = jQuery(this).parents('.action-dropdown').attr('destination');
|
||||
var url = jQuery(this).attr('href');
|
||||
jQuery(destination).find('input:checked').each(function ()
|
||||
{
|
||||
url += '/' + jQuery(this).val();
|
||||
});
|
||||
window.location = url;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
77
templates/group/add.php
Executable file
77
templates/group/add.php
Executable file
|
@ -0,0 +1,77 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Groupes - Add'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'groupes'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Nouveau groupe
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-group"></i> <a href="<?php echo \descartes\Router::url('Group', 'list'); ?>">Groupes</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-plus"></i> Nouveau
|
||||
</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-group fa-fw"></i> Ajout d'un groupe</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Group', 'create', ['csrf' => $_SESSION['csrf']]);?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Nom du groupe</label>
|
||||
<div class="form-group input-group">
|
||||
<span class="input-group-addon"><span class="fa fa-users"></span></span>
|
||||
<input name="name" class="form-control" type="text" placeholder="Nom groupe" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Contacts du groupe</label>
|
||||
<input class="add-contacts form-control" name="contacts[]"/>
|
||||
</div>
|
||||
<a class="btn btn-danger" href="<?php echo \descartes\Router::url('Group', 'list'); ?>">Annuler</a>
|
||||
<input type="submit" class="btn btn-success" value="Enregistrer le groupe" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function()
|
||||
{
|
||||
jQuery('.add-contacts').each(function()
|
||||
{
|
||||
jQuery(this).magicSuggest({
|
||||
data: '<?php echo \descartes\Router::url('Contact', 'json_list'); ?>',
|
||||
valueField: 'id',
|
||||
displayField: 'name',
|
||||
name: 'contacts[]'
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
92
templates/group/edit.php
Executable file
92
templates/group/edit.php
Executable file
|
@ -0,0 +1,92 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Groupes - Edit'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'groupes'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Modification groupes
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-group"></i> <a href="<?php echo \descartes\Router::url('Group', 'list'); ?>">Groupes</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-edit fa-fw"></i> Modification de groupes</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Group', 'update', ['csrf' => $_SESSION['csrf']]);?>" method="POST">
|
||||
<?php
|
||||
foreach ($groups as $group)
|
||||
{
|
||||
$contacts = array();
|
||||
foreach ($group['contacts'] as $contact)
|
||||
{
|
||||
$contacts[] = (int)$contact['id'];
|
||||
}
|
||||
$contacts = json_encode($contacts);
|
||||
|
||||
?>
|
||||
<input name="groups[<?php $this->s($group['id']); ?>][group][id]" type="hidden" value="<?php $this->s($group['id']); ?>">
|
||||
<div class="form-group">
|
||||
<label>Nom groupe</label>
|
||||
<div class="form-group input-group">
|
||||
<span class="input-group-addon"><span class="fa fa-user"></span></span>
|
||||
<input name="groups[<?php $this->s($group['id']); ?>][name]" class="form-control" type="text" placeholder="Nom groupe" autofocus required value="<?php $this->s($group['name']); ?>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Contacts du groupe</label>
|
||||
<input class="add-contacts form-control" name="groups[<?php $this->s($group['id']); ?>][contacts_ids][]" value="<?php $this->s($contacts); ?>"/>
|
||||
</div>
|
||||
<hr/>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<a class="btn btn-danger" href="<?php echo \descartes\Router::url('Group', 'list'); ?>">Annuler</a>
|
||||
<input type="submit" class="btn btn-success" value="Enregistrer le groupe" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function()
|
||||
{
|
||||
jQuery('.add-contacts').each(function()
|
||||
{
|
||||
jQuery(this).magicSuggest({
|
||||
data: '<?php echo \descartes\Router::url('Contact', 'json_list'); ?>',
|
||||
valueField: 'id',
|
||||
displayField: 'name',
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
102
templates/group/list.php
Executable file
102
templates/group/list.php
Executable file
|
@ -0,0 +1,102 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Groupes - Show All'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'groupes'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>Groupes</small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-group"></i> Groupes
|
||||
</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-group fa-fw"></i> Liste des groupes</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form method="GET">
|
||||
<?php if (!$groups) { ?>
|
||||
<p>Aucun groupe n'a été formé pour le moment.</p>
|
||||
<?php } else { ?>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover table-striped" id="table-groupes">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Nom</th>
|
||||
<th>Nombre de contacts</th>
|
||||
<th style="width:5%;">Sélectionner</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($groups as $group) { ?>
|
||||
<tr>
|
||||
<td><?php $this->s($group['id']); ?></td>
|
||||
<td><?php $this->s($group['name']); ?></td>
|
||||
<td><?php $this->s($group['nb_contacts']); ?></td>
|
||||
<td><input type="checkbox" name="ids[]" value="<?php $this->s($group['id']); ?>"></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div>
|
||||
<div class="col-xs-6 no-padding">
|
||||
<a class="btn btn-success" href="<?php echo \descartes\Router::url('Group', 'add'); ?>"><span class="fa fa-plus"></span> Ajouter un groupe</a>
|
||||
</div>
|
||||
<?php if ($groups) { ?>
|
||||
<div class="text-right col-xs-6 no-padding">
|
||||
<strong>Action pour la séléction :</strong>
|
||||
<button class="btn btn-default" type="submit" formaction="<?php echo \descartes\Router::url('Scheduled', 'add', ['prefilled' => 'groups']); ?>"><span class="fa fa-send"></span> Envoyer un message</button>
|
||||
<button class="btn btn-default" type="submit" formaction="<?php echo \descartes\Router::url('Group', 'edit'); ?>"><span class="fa fa-edit"></span> Modifier</button>
|
||||
<button class="btn btn-default btn-confirm" type="submit" formaction="<?php echo \descartes\Router::url('Group', 'delete', ['csrf' => $_SESSION['csrf']]); ?>"><span class="fa fa-trash-o"></span> Supprimer</button>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function ()
|
||||
{
|
||||
jQuery('.action-dropdown a').on('click', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var destination = jQuery(this).parents('.action-dropdown').attr('destination');
|
||||
var url = jQuery(this).attr('href');
|
||||
jQuery(destination).find('input:checked').each(function ()
|
||||
{
|
||||
url += '/' + jQuery(this).val();
|
||||
});
|
||||
window.location = url;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
27
templates/incs/footer.php
Executable file
27
templates/incs/footer.php
Executable file
|
@ -0,0 +1,27 @@
|
|||
<footer class="text-center">
|
||||
RaspiSMS a été créé pour vous par le site <a href="https://raspberry-pi.fr">Raspberry Pi FR</a>, site dédié à la Raspberry Pi<br/>
|
||||
Copyright 2014. RaspiSMS est un programme sous <a href="https://www.gnu.org/licenses/gpl.txt" rel="nofollow">licence GNU GPL</a>.<br/>
|
||||
</footer>
|
||||
|
||||
<?php if ($_SESSION['user']['settings']['sms_reception_sound'] ?? false) { ?>
|
||||
<audio id="reception-sound">
|
||||
<source src="<?php echo HTTP_PWD_SOUND; ?>/receptionSound.ogg" type="audio/ogg">
|
||||
<source src="<?php echo HTTP_PWD_SOUND; ?>/receptionSound.mp3" type="audio/mpeg">
|
||||
<source src="<?php echo HTTP_PWD_SOUND; ?>/receptionSound.wav" type="audio/wav">
|
||||
</audio>
|
||||
<?php } ?>
|
||||
|
||||
<?php if (ENV == 'dev') { ?>
|
||||
<script>
|
||||
<?php while ($message = \FlashMessage\FlashMessage::next()) { ?>
|
||||
alert('<?php $this->s($message['type'] . ' : ' . $message['text']); ?>');
|
||||
<?php } ?>
|
||||
</script>
|
||||
<?php } ?>
|
||||
|
||||
<?php if (! ($_SESSION['user']['settings']['display_help'] ?? false)) { ?>
|
||||
<style>.help {display: none;}</style>
|
||||
<?php } ?>
|
||||
|
||||
</body>
|
||||
</html>
|
67
templates/incs/head.php
Executable file
67
templates/incs/head.php
Executable file
|
@ -0,0 +1,67 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title><?php echo !empty($title) ? $title . ' - ' . WEBSITE_TITLE : WEBSITE_TITLE; ?></title>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta name="author" content="<?php echo WEBSITE_AUTHOR; ?>" />
|
||||
|
||||
<link rel="icon" type="image/png" href="<?php echo HTTP_PWD_IMG; ?>/favicon.png" />
|
||||
|
||||
<!-- Bootstrap Core CSS -->
|
||||
<link href="<?php echo HTTP_PWD_CSS; ?>/bootstrap.min.css" rel="stylesheet">
|
||||
<!-- Custom CSS Theme -->
|
||||
<link href="<?php echo HTTP_PWD_CSS; ?>/sb-admin.css" rel="stylesheet">
|
||||
<!-- Morris Charts CSS -->
|
||||
<link href="<?php echo HTTP_PWD_CSS; ?>/plugins/morris.css" rel="stylesheet">
|
||||
<!-- Custom Fonts -->
|
||||
<link href="<?php echo HTTP_PWD_FONT; ?>/fonts-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||
<!-- Custom CSS site -->
|
||||
<link href="<?php echo HTTP_PWD_CSS; ?>/style.css" rel="stylesheet">
|
||||
|
||||
<?php $this->render('incs/phptojs'); ?>
|
||||
|
||||
<script src="<?php echo HTTP_PWD_JS; ?>/jquery.js"></script>
|
||||
<script src="<?php echo HTTP_PWD_JS; ?>/jquery.shiftcheckbox.js"></script>
|
||||
<script src="<?php echo HTTP_PWD_JS; ?>/bootstrap.min.js"></script>
|
||||
<script src="<?php echo HTTP_PWD_JS; ?>/plugins/morris/raphael-min.js"></script>
|
||||
<script src="<?php echo HTTP_PWD_JS; ?>/plugins/morris/morris.min.js"></script>
|
||||
<script src="<?php echo HTTP_PWD_JS; ?>/Autolinker.min.js"></script>
|
||||
<!-- Magic Suggest JS and CSS -->
|
||||
<script src="<?php echo HTTP_PWD_JS; ?>/magicsuggest.min.js"></script>
|
||||
<link href="<?php echo HTTP_PWD_CSS; ?>/magicsuggest.css" rel="stylesheet">
|
||||
<!-- \Datetime Picked JS and CSS -->
|
||||
<script src="<?php echo HTTP_PWD_JS; ?>/bootstrap-datetimepicker.min.js"></script>
|
||||
<script src="<?php echo HTTP_PWD_JS; ?>/locales/bootstrap-datetimepicker.fr.js"></script>
|
||||
<link href="<?php echo HTTP_PWD_CSS; ?>/bootstrap-datetimepicker.min.css" rel="stylesheet">
|
||||
<!-- International Phone Number, JS and CSS -->
|
||||
<script src="<?php echo HTTP_PWD_JS; ?>/intlTelInput/intlTelInput.min.js"></script>
|
||||
<link href="<?php echo HTTP_PWD_CSS; ?>/intlTelInput.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom JS -->
|
||||
<script src="<?php echo HTTP_PWD_JS; ?>/custom.js"></script>
|
||||
|
||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
<script>
|
||||
jQuery(document).ready(function ()
|
||||
{
|
||||
<?php if (!empty($_SESSION['errormessage'])) { ?>
|
||||
showMessage('<?php $this->s($_SESSION['errormessage'], false, true); ?>', 0);
|
||||
<?php unset($_SESSION['errormessage']); ?>
|
||||
<?php } ?>
|
||||
|
||||
<?php if (!empty($_SESSION['successmessage'])) { ?>
|
||||
showMessage('<?php $this->s($_SESSION['successmessage'], false, true); ?>', 1);
|
||||
<?php unset($_SESSION['successmessage']); ?>
|
||||
<?php } ?>
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="popup-alerts-container"></div>
|
105
templates/incs/nav.php
Executable file
105
templates/incs/nav.php
Executable file
|
@ -0,0 +1,105 @@
|
|||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
|
||||
<!-- Brand and toggle get grouped for better mobile display -->
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">RaspiSMS</a>
|
||||
</div>
|
||||
|
||||
<!-- Top Menu Items -->
|
||||
<ul class="nav navbar-right top-nav">
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-fw fa-user"></i> <?php $this->s($_SESSION['user']['email'] ?? 'Mon compte'); ?> <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li>
|
||||
<a href="<?php echo \descartes\Router::url('Account', 'show'); ?>"><i class="fa fa-fw fa-user"></i> Profil</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li>
|
||||
<a href="<?php echo \descartes\Router::url('Account', 'logout'); ?>"><i class="fa fa-fw fa-power-off"></i> Déconnexion</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
|
||||
<div class="collapse navbar-collapse navbar-ex1-collapse">
|
||||
<ul class="nav navbar-nav side-nav">
|
||||
<li <?php echo $page == 'dashboard' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>"><i class="fa fa-fw fa-dashboard"></i> Dashboard</a>
|
||||
</li>
|
||||
<li <?php echo $page == 'discussions' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo \descartes\Router::url('Discussion', 'list'); ?>"><i class="fa fa-fw fa-comments"></i> Discussions</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="javascript:;" data-toggle="collapse" data-target="#smss"><i class="fa fa-fw fa-envelope"></i> SMS <i class="fa fa-fw fa-caret-down"></i></a>
|
||||
<ul id="smss" class="collapse <?php echo in_array($page, array('scheduleds', 'sendeds', 'receiveds')) ? 'in' : ''; ?>">
|
||||
<li <?php echo $page == 'scheduleds' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo \descartes\Router::url('Scheduled', 'list'); ?>"><i class="fa fa-fw fa-send"></i> Nouveau SMS</a>
|
||||
</li>
|
||||
<li <?php echo $page == 'sendeds' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo \descartes\Router::url('Sended', 'list'); ?>"><i class="fa fa-fw fa-upload"></i> SMS envoyés</a>
|
||||
</li>
|
||||
<li <?php echo $page == 'receiveds' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo \descartes\Router::url('Received', 'list'); ?>"><i class="fa fa-fw fa-download"></i> SMS reçus</a>
|
||||
</li>
|
||||
<li <?php echo $page == 'receiveds_unread' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo \descartes\Router::url('Received', 'list_unread'); ?>"><i class="fa fa-fw fa-eye-slash"></i> SMS non lus</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="javascript:;" data-toggle="collapse" data-target="#repertoire"><i class="fa fa-fw fa-book"></i> Répertoire <i class="fa fa-fw fa-caret-down"></i></a>
|
||||
<ul id="repertoire" class="collapse <?php echo in_array($page, array('contacts', 'groupes', 'conditional_groupes')) ? 'in' : ''; ?>">
|
||||
<li <?php echo $page == 'contacts' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo \descartes\Router::url('Contact', 'list'); ?>"><i class="fa fa-fw fa-user"></i> Contacts</a>
|
||||
</li>
|
||||
<li <?php echo $page == 'groupes' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo \descartes\Router::url('Group', 'list'); ?>"><i class="fa fa-fw fa-group"></i> Groupes</a>
|
||||
</li>
|
||||
<?php if ($_SESSION['user']['settings']['conditional_group'] ?? false) { ?>
|
||||
<li <?php echo $page == 'conditional_groupes' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo \descartes\Router::url('ConditionalGroup', 'list'); ?>"><i class="fa fa-fw fa-bullseye"></i> Groupes Conditionnels</a>
|
||||
</li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="javascript:;" data-toggle="collapse" data-target="#logs"><i class="fa fa-fw fa-file-text"></i> Logs <i class="fa fa-fw fa-caret-down"></i></a>
|
||||
<ul id="logs" class="collapse <?php echo in_array($page, array('events', 'smsstop')) ? 'in' : ''; ?>">
|
||||
<li <?php echo $page == 'smsstop' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo \descartes\Router::url('SmsStop', 'list'); ?>"><i class="fa fa-fw fa-ban"></i> SMS STOP</a>
|
||||
</li>
|
||||
<li <?php echo $page == 'events' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo \descartes\Router::url('Event', 'list'); ?>"><i class="fa fa-fw fa-clock-o"></i> Évènements</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li <?php echo $page == 'commands' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo \descartes\Router::url('Command', 'list'); ?>"><i class="fa fa-fw fa-terminal"></i> Commandes</a>
|
||||
</li>
|
||||
<?php if ($_SESSION['user']['settings']['webhook'] ?? false) { ?>
|
||||
<li <?php echo $page == 'webhooks' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo \descartes\Router::url('Webhook', 'list'); ?>"><i class="fa fa-fw fa-plug"></i> Webhooks</a>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<li <?php echo $page == 'phones' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo \descartes\Router::url('Phone', 'list'); ?>"><i class="fa fa-fw fa-phone"></i> Téléphones</a>
|
||||
</li>
|
||||
<li <?php echo $page == 'settings' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo \descartes\Router::url('Setting', 'show'); ?>"><i class="fa fa-fw fa-cogs"></i> Réglages</a>
|
||||
</li>
|
||||
<?php if (\controllers\internals\Tool::is_admin()) { ?>
|
||||
<li <?php echo $page == 'users' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo \descartes\Router::url('User', 'list'); ?>"><i class="fa fa-fw fa-user"></i> Utilisateurs</a>
|
||||
</li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- /.navbar-collapse -->
|
||||
</nav>
|
3
templates/incs/phptojs.php
Executable file
3
templates/incs/phptojs.php
Executable file
|
@ -0,0 +1,3 @@
|
|||
<script>
|
||||
var HTTP_PWD = '<?php echo addslashes(HTTP_PWD); ?>';
|
||||
</script>
|
128
templates/phone/add.php
Executable file
128
templates/phone/add.php
Executable file
|
@ -0,0 +1,128 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Phones - Show All'])
|
||||
?>
|
||||
<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">
|
||||
Nouveau téléphone
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-phone"></i> <a href="<?php echo \descartes\Router::url('Phone', 'list'); ?>">Téléphones</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-plus"></i> Nouveau
|
||||
</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> Ajout d'un téléphone</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Phone', 'create', ['csrf' => $_SESSION['csrf']]);?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Numéro de téléphone</label>
|
||||
<p class="italic small help">
|
||||
Le numéro de téléphone qui enverra et recevra les messages.
|
||||
</p>
|
||||
<div class="form-group">
|
||||
<input name="" class="form-control" type="tel" id="phone-international-input" placeholder="Numéro de téléphone à utiliser.">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Adaptateur logiciel du téléphone : </label>
|
||||
<p class="italic small help" id="description-adapter">
|
||||
L'adaptateur logiciel utilisé par RaspiSMS pour communiquer avec le téléphone. Pour plus d'information, consultez <a href="https://raspisms.raspberry-pi.fr/documentation" target="_blank">la documentation de RaspiSMS</a> concernant les adaptateurs logiciels.
|
||||
</p>
|
||||
<select name="adapter" class="form-control" id="adapter-select">
|
||||
<?php foreach ($adapters as $adapter) { ?>
|
||||
<option
|
||||
value="<?= $adapter['meta_classname'] ?>"
|
||||
title="<?php $this->s($adapter['meta_description']); ?>"
|
||||
data-description="<?php $this->s($adapter['meta_description']); ?>"
|
||||
data-datas-help="<?php $this->s($adapter['meta_datas_help']); ?>"
|
||||
data-datas-fields="<?php $this->s(json_encode($adapter['meta_datas_fields'])); ?>"
|
||||
>
|
||||
<?php $this->s($adapter['meta_name']); ?>
|
||||
</option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
<div id="adapter-datas-fields-container">
|
||||
</div>
|
||||
<a class="btn btn-danger" href="<?php echo \descartes\Router::url('Phone', 'list'); ?>">Annuler</a>
|
||||
<input type="submit" class="btn btn-success" value="Enregistrer le phone" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
|
||||
function change_adapter ()
|
||||
{
|
||||
var option = jQuery('#adapter-select').find('option:selected');
|
||||
jQuery('#description-adapter').text(option.attr('data-description'));
|
||||
jQuery('#description-adapter-datas').text(option.attr('data-datas-help'));
|
||||
|
||||
var datas_fields = option.attr('data-datas-fields');
|
||||
datas_fields = JSON.parse(datas_fields);
|
||||
|
||||
|
||||
var html = '';
|
||||
jQuery.each(datas_fields, function (index, field)
|
||||
{
|
||||
html += '<div class="form-group">' +
|
||||
'<label>' + field.title + '</label>' +
|
||||
'<p class="italic small help">' + field.description + '</p>' +
|
||||
'<div class="form-group">' +
|
||||
'<input name="adapter_datas[' + field.name + ']" class="form-control" ' + (field.required ? 'required' : '') + ' >' +
|
||||
'</div>' +
|
||||
'</div>';
|
||||
});
|
||||
|
||||
jQuery('#adapter-datas-fields-container').html(html);
|
||||
}
|
||||
|
||||
jQuery('document').ready(function($)
|
||||
{
|
||||
change_adapter();
|
||||
|
||||
jQuery('#adapter-select').on('change', function (e)
|
||||
{
|
||||
change_adapter();
|
||||
});
|
||||
|
||||
var number_input = jQuery('#phone-international-input')[0];
|
||||
var iti_number_input = window.intlTelInput(number_input, {
|
||||
hiddenInput: 'number',
|
||||
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'
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
95
templates/phone/list.php
Executable file
95
templates/phone/list.php
Executable file
|
@ -0,0 +1,95 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Phones - Show All'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'phone'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>Téléphones</small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-phone"></i> Téléphones
|
||||
</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> Liste des téléphones</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form method="GET">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover table-striped" id="table-phones">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Numéro</th>
|
||||
<th>Adaptateur</th>
|
||||
<th style="width:5%;">Sélectionner</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($phones as $phone) { ?>
|
||||
<tr>
|
||||
<td><?php $this->s($phone['id']); ?></td>
|
||||
<td><?php $this->s(\controllers\internals\Tool::phone_format($phone['number'])); ?></td>
|
||||
<td><?php $this->s($phone['adapter']); ?></td>
|
||||
<td><input type="checkbox" value="<?php $this->s($phone['id']); ?>" name="ids[]"></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<div class="col-xs-6 no-padding">
|
||||
<a class="btn btn-success" href="<?php echo \descartes\Router::url('Phone', 'add'); ?>"><span class="fa fa-plus"></span> Ajouter un téléphone</a>
|
||||
</div>
|
||||
<div class="text-right col-xs-6 no-padding">
|
||||
<strong>Action pour la séléction :</strong>
|
||||
<button class="btn btn-default btn-confirm" type="submit" formaction="<?php echo \descartes\Router::url('Phone', 'delete', ['csrf' => $_SESSION['csrf']]); ?>"><span class="fa fa-trash-o"></span> Supprimer</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function ()
|
||||
{
|
||||
jQuery('.action-dropdown a').on('click', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var destination = jQuery(this).parents('.action-dropdown').attr('destination');
|
||||
var url = jQuery(this).attr('href');
|
||||
jQuery(destination).find('input:checked').each(function ()
|
||||
{
|
||||
url += '/' + jQuery(this).val();
|
||||
});
|
||||
window.location = url;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
115
templates/received/list.php
Executable file
115
templates/received/list.php
Executable file
|
@ -0,0 +1,115 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Receiveds - Show All'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'receiveds'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>SMS reçus</small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-download "></i> SMS reçus
|
||||
</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-download fa-fw"></i> Liste des SMS reçus</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form method="GET">
|
||||
<?php if (!$receiveds) { ?>
|
||||
<p>Aucun SMS n'a été reçu pour le moment.</p>
|
||||
<?php } else { ?>
|
||||
<div class="table-receiveds">
|
||||
<table class="table table-bordered table-hover table-striped" id="table-receiveds">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>De</th>
|
||||
<th>À</th>
|
||||
<th>Message</th>
|
||||
<th>Date</th>
|
||||
<th>Status</th>
|
||||
<th>Commande</th>
|
||||
<?php if ($_SESSION['user']['admin']) { ?><th>Sélectionner</th><?php } ?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($receiveds as $received) { ?>
|
||||
<tr>
|
||||
<td><?php $this->s($received['id']); ?></td>
|
||||
<td class="no-wrap"><?php echo(\controllers\internals\Tool::phone_link($received['origin'])); ?></td>
|
||||
<td class="no-wrap"><?php echo(\controllers\internals\Tool::phone_link($received['destination'])); ?></td>
|
||||
<td><?php $this->s($received['text']); ?></td>
|
||||
<td><?php $this->s($received['at']); ?></td>
|
||||
<td><?php echo ($received['status'] == 'read' ? 'Lu' : 'Non lu'); ?></td>
|
||||
<td><?php echo $received['command'] ? 'Oui' : 'Non'; ?></td>
|
||||
<?php if ($_SESSION['user']['admin']) { ?><td><input name="ids[]" type="checkbox" value="<?php $this->s($received['id']); ?>"></td><?php } ?>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<?php if ($_SESSION['user']['admin']) { ?>
|
||||
<div class="text-right col-xs-12 no-padding">
|
||||
<strong>Action pour la séléction :</strong>
|
||||
<button class="btn btn-default btn-confirm" type="submit" formaction="<?php echo \descartes\Router::url('Received', 'delete', ['csrf' => $_SESSION['csrf']]); ?>"><span class="fa fa-trash-o"></span> Supprimer</button>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<ul class="pager">
|
||||
<?php if ($page) { ?>
|
||||
<li><a href="<?php echo \descartes\Router::url('Received', 'list', array('page' => $page - 1)); ?>"><span aria-hidden="true">←</span> Précèdents</a></li>
|
||||
<?php } ?>
|
||||
<?php $this->s('Page : ' . ($page + 1)); ?>
|
||||
|
||||
<?php if ($limit == $nb_results) { ?>
|
||||
<li><a href="<?php echo \descartes\Router::url('Received', 'list', array('page' => $page + 1)); ?>">Suivants <span aria-hidden="true">→</span></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function ()
|
||||
{
|
||||
jQuery('.action-dropdown a').on('click', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var destination = jQuery(this).parents('.action-dropdown').attr('destination');
|
||||
var url = jQuery(this).attr('href');
|
||||
jQuery(destination).find('input:checked').each(function ()
|
||||
{
|
||||
url += '/' + jQuery(this).val();
|
||||
});
|
||||
window.location = url;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
81
templates/received/list_unread.php
Executable file
81
templates/received/list_unread.php
Executable file
|
@ -0,0 +1,81 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Receiveds - Unread'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'receiveds_unread'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>SMS non lus</small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-eye-slash "></i> SMS non lus
|
||||
</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-eye-slash fa-fw"></i> Liste des SMS non lus</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form method="GET">
|
||||
<?php if (!$receiveds) { ?>
|
||||
<p>Aucun SMS non lu à afficher.</p>
|
||||
<?php } else { ?>
|
||||
<div class="table-receiveds">
|
||||
<table class="table table-bordered table-hover table-striped" id="table-receiveds">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>De</th>
|
||||
<th>À</th>
|
||||
<th>Message</th>
|
||||
<th>Date</th>
|
||||
<th>Status</th>
|
||||
<th>Commande</th>
|
||||
<?php if ($_SESSION['user']['admin']) { ?><th>Sélectionner</th><?php } ?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($receiveds as $received) { ?>
|
||||
<tr>
|
||||
<td><?php $this->s($received['id']); ?></td>
|
||||
<td class="no-wrap"><?php echo(\controllers\internals\Tool::phone_link($received['origin'])); ?></td>
|
||||
<td class="no-wrap"><?php echo(\controllers\internals\Tool::phone_link($received['destination'])); ?></td>
|
||||
<td><?php $this->s($received['text']); ?></td>
|
||||
<td><?php $this->s($received['at']); ?></td>
|
||||
<td><?php echo ($received['status'] == 'read' ? 'Lu' : 'Non lu'); ?></td>
|
||||
<td><?php echo $received['command'] ? 'Oui' : 'Non'; ?></td>
|
||||
<?php if ($_SESSION['user']['admin']) { ?><td><input name="ids[]" type="checkbox" value="<?php $this->s($received['id']); ?>"></td><?php } ?>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
263
templates/scheduled/add.php
Executable file
263
templates/scheduled/add.php
Executable file
|
@ -0,0 +1,263 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Scheduleds - Add'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'scheduleds'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Nouveau SMS programmé
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-send"></i> <a href="<?php echo \descartes\Router::url('Scheduled', 'list'); ?>">Scheduleds</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-plus"></i> Nouveau
|
||||
</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-send fa-fw"></i> Création d'un nouveau SMS</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Scheduled', 'create', ['csrf' => $_SESSION['csrf']]);?>" method="POST" enctype="multipart/form-data">
|
||||
<div class="form-group">
|
||||
<label>Texte du SMS</label>
|
||||
<?php if ($_SESSION['user']['settings']['templating']) { ?>
|
||||
<p class="italic small help description-scheduled-text">
|
||||
Vous pouvez utilisez des fonctionnalités de templating pour indiquer des valeures génériques qui seront remplacées par les données du contact au moment de l'envoie. Pour plus d'information, consultez la documentation sur <a href="#">l'utilisation des templates.</a><br/>
|
||||
Vous pouvez obtenir une prévisualisation du résultat pour un contact en cliquant sur le boutton <b>"Prévisualiser"</b>.
|
||||
</p>
|
||||
<?php } ?>
|
||||
<textarea name="text" class="form-control" required></textarea>
|
||||
<?php if ($_SESSION['user']['settings']['templating']) { ?>
|
||||
<div class="scheduled-preview-container">
|
||||
<label>Prévisualiser pour : </label>
|
||||
<select name="" class="form-control">
|
||||
<?php foreach ($contacts as $contact) { ?>
|
||||
<option value="<?php $this->s($contact['id']); ?>"><?php $this->s($contact['name']); ?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
<a class="btn btn-info preview-button" href="#">Prévisualiser</a>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
|
||||
<?php if ($_SESSION['user']['settings']['mms'] ?? false) { ?>
|
||||
<div class="form-group">
|
||||
<label>Ajouter un média</label>
|
||||
<p class="italic small help description-scheduled-media">
|
||||
Le média sera utilisé uniquement si le téléphone utilisé supporte l'envoi de MMS. Pour plus d'information, consultez la documentation sur <a href="#">l'utilisation des MMS.</a>
|
||||
</p>
|
||||
<input class="" name="media" value="" type="file" />
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div class="form-group">
|
||||
<label>Date d'envoi du SMS</label>
|
||||
<input name="at" class="form-control form-datetime auto-width" type="text" value="<?php $this->s($now); ?>" readonly>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Numéros cibles</label>
|
||||
<div class="form-group scheduleds-number-groupe-container">
|
||||
<div class="form-group scheduleds-number-groupe">
|
||||
<input name="" class="form-control phone-international-input" type="tel" >
|
||||
<span class="remove-scheduleds-number fa fa-times"></span>
|
||||
</div>
|
||||
<div class="add-number-button fa fa-plus-circle"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Contacts cibles</label>
|
||||
<input class="add-contacts form-control" name="contacts[]" value="<?php $this->s(json_encode($prefilled_contacts)); ?>" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Groupes cibles</label>
|
||||
<input class="add-groupes form-control" name="groups[]" value="<?php $this->s(json_encode($prefilled_groups)); ?>" />
|
||||
</div>
|
||||
<?php if ($_SESSION['user']['settings']['conditional_group'] ?? false) { ?>
|
||||
<div class="form-group">
|
||||
<label>Groupes conditionnels cibles</label>
|
||||
<input class="add-conditional-groups form-control" name="conditional_groups[]" value="<?php $this->s(json_encode($prefilled_conditional_groups)); ?>"/>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<?php if ($_SESSION['user']['settings']['sms_flash']) { ?>
|
||||
<div class="form-group">
|
||||
<label>Envoyer comme un SMS Flash : </label>
|
||||
<div class="form-group">
|
||||
<input name="flash" type="radio" value="1" required /> Oui
|
||||
<input name="flash" type="radio" value="0" required checked/> Non
|
||||
</div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div class="form-group">
|
||||
<label>Numéro à employer : </label>
|
||||
<select name="origin" class="form-control">
|
||||
<option value="">N'importe lequel</option>
|
||||
<?php foreach ($phones as $phone) { ?>
|
||||
<option value="<?php $this->s($phone['number']); ?>"><?php $this->s($phone['number']); ?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
<a class="btn btn-danger" href="<?php echo \descartes\Router::url('Scheduled', 'list'); ?>">Annuler</a>
|
||||
<input type="submit" class="btn btn-success" value="Enregistrer le SMS" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" tabindex="-1" id="scheduled-preview-text-modal">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title">Prévisualisation du message</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<pre></pre>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
jQuery(document).ready(function()
|
||||
{
|
||||
var number_inputs = [];
|
||||
|
||||
jQuery('.add-contacts').each(function()
|
||||
{
|
||||
jQuery(this).magicSuggest({
|
||||
data: '<?php echo \descartes\Router::url('Contact', 'json_list'); ?>',
|
||||
valueField: 'id',
|
||||
displayField: 'name',
|
||||
});
|
||||
});
|
||||
|
||||
jQuery('.add-groupes').each(function()
|
||||
{
|
||||
jQuery(this).magicSuggest({
|
||||
data: '<?php echo \descartes\Router::url('Group', 'json_list'); ?>',
|
||||
valueField: 'id',
|
||||
displayField: 'name',
|
||||
});
|
||||
});
|
||||
|
||||
jQuery('.add-conditional-groups').each(function()
|
||||
{
|
||||
jQuery(this).magicSuggest({
|
||||
data: '<?php echo \descartes\Router::url('ConditionalGroup', 'json_list'); ?>',
|
||||
valueField: 'id',
|
||||
displayField: 'name',
|
||||
});
|
||||
});
|
||||
|
||||
jQuery('body').on('click', '.remove-scheduleds-number', function(e)
|
||||
{
|
||||
jQuery(this).parents('.scheduleds-number-groupe').remove();
|
||||
});
|
||||
|
||||
jQuery('.form-datetime').datetimepicker(
|
||||
{
|
||||
format: 'yyyy-mm-dd hh:ii:ss',
|
||||
autoclose: true,
|
||||
minuteStep: 1,
|
||||
language: 'fr'
|
||||
});
|
||||
|
||||
|
||||
//intlTelInput
|
||||
jQuery('body').on('click', '.add-number-button', function(e)
|
||||
{
|
||||
var random_id = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
|
||||
var newScheduledsNumberGroupe = '' +
|
||||
'<div class="form-group scheduleds-number-groupe">' +
|
||||
'<input name="" class="form-control phone-international-input" type="tel" id="' + random_id + '">' +
|
||||
' <span class="remove-scheduleds-number fa fa-times"></span>' +
|
||||
'</div>';
|
||||
|
||||
jQuery(this).before(newScheduledsNumberGroupe);
|
||||
|
||||
var number_input = jQuery('#' + random_id)[0];
|
||||
var iti_number_input = window.intlTelInput(number_input, {
|
||||
hiddenInput: 'numbers[]',
|
||||
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); ?>,
|
||||
<?php if ($_SESSION['user']['settings']['authorized_phone_country'] ?? false) { ?>
|
||||
onlyCountries: <?php $this->s(json_encode(explode(',', $_SESSION['user']['settings']['authorized_phone_country'])), false, false); ?>,
|
||||
<?php } ?>
|
||||
nationalMode: true,
|
||||
utilsScript: '<?php echo HTTP_PWD_JS; ?>/intlTelInput/utils.js'
|
||||
});
|
||||
|
||||
number_inputs.push({
|
||||
'number_input': number_input,
|
||||
'iti_number_input': iti_number_input,
|
||||
});
|
||||
});
|
||||
|
||||
var number_input = jQuery('.phone-international-input')[0];
|
||||
var iti_number_input = window.intlTelInput(number_input, {
|
||||
hiddenInput: 'numbers[]',
|
||||
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); ?>,
|
||||
<?php if ($_SESSION['user']['settings']['authorized_phone_country'] ?? false) { ?>
|
||||
onlyCountries: <?php $this->s(json_encode(explode(',', $_SESSION['user']['settings']['authorized_phone_country'])), false, false); ?>,
|
||||
<?php } ?>
|
||||
nationalMode: true,
|
||||
utilsScript: '<?php echo HTTP_PWD_JS; ?>/intlTelInput/utils.js'
|
||||
});
|
||||
|
||||
number_inputs.push({
|
||||
'number_input': number_input,
|
||||
'iti_number_input': iti_number_input,
|
||||
});
|
||||
|
||||
jQuery('body').on('click', '.preview-button', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var id_contact = jQuery(this).parents('.scheduled-preview-container').find('select').val();
|
||||
var template = jQuery(this).parents('.form-group').find('textarea').val();
|
||||
|
||||
var datas = {
|
||||
'id_contact' : id_contact,
|
||||
'template' : template,
|
||||
};
|
||||
|
||||
jQuery.ajax({
|
||||
type: "POST",
|
||||
url: HTTP_PWD + '/template/preview',
|
||||
data: datas,
|
||||
success: function (datas) {
|
||||
jQuery('#scheduled-preview-text-modal').find('.modal-body pre').text(datas.result);
|
||||
jQuery('#scheduled-preview-text-modal').modal({'keyboard': true});
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
275
templates/scheduled/edit.php
Executable file
275
templates/scheduled/edit.php
Executable file
|
@ -0,0 +1,275 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Scheduleds - Edit'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'scheduleds'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Modifier SMS programmés
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-calendar"></i> <a href="<?php echo \descartes\Router::url('Scheduled', 'list'); ?>">Scheduleds</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-edit fa-fw"></i> Modification des SMS programmés</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Scheduled', 'update', ['csrf' => $_SESSION['csrf']]);?>" method="POST" enctype="multipart/form-data">
|
||||
<?php foreach ($scheduleds as $scheduled) { ?>
|
||||
<div class="form-group">
|
||||
<label>Texte du SMS</label>
|
||||
<?php if ($_SESSION['user']['settings']['templating']) { ?>
|
||||
<p class="italic small help description-scheduled-text">
|
||||
Vous pouvez utilisez des fonctionnalités de templating pour indiquer des valeures génériques qui seront remplacées par les données du contact au moment de l'envoie. Pour plus d'information, consultez la documentation sur <a href="#">l'utilisation des templates.</a><br/>
|
||||
Vous pouvez obtenir une prévisualisation du résultat pour un contact en cliquant sur le boutton <b>"Prévisualiser"</b>.
|
||||
</p>
|
||||
<?php } ?>
|
||||
<textarea name="scheduleds[<?php $this->s($scheduled['id']); ?>][text]" class="form-control" required><?php $this->s($scheduled['text'], true); ?></textarea>
|
||||
<?php if ($_SESSION['user']['settings']['templating']) { ?>
|
||||
<div class="scheduled-preview-container">
|
||||
<label>Prévisualiser pour : </label>
|
||||
<select name="" class="form-control">
|
||||
<?php foreach ($contacts as $contact) { ?>
|
||||
<option value="<?php $this->s($contact['id']); ?>"><?php $this->s($contact['name']); ?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
<a class="btn btn-info preview-button" href="#">Prévisualiser</a>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<?php if ($_SESSION['user']['settings']['mms'] ?? false) { ?>
|
||||
<div class="form-group">
|
||||
<label>Ajouter un média</label>
|
||||
<p class="italic small help description-scheduled-media">
|
||||
Le média sera utilisé uniquement si le téléphone utilisé supporte l'envoi de MMS. Pour plus d'information, consultez la documentation sur <a href="#">l'utilisation des MMS.</a>
|
||||
</p>
|
||||
<?php if ($scheduled['media']) { ?>
|
||||
<div class="current-media-container">
|
||||
<input type="hidden" name="scheduleds[<?php $this->s($scheduled['id']); ?>][current_media]" value="1">
|
||||
<p class="inline-block">Un média est déjà lié à ce message.</p>
|
||||
<a href="#" class="btn btn-warning btn-delete-media">Supprimer le média</a>
|
||||
</div>
|
||||
<input class="hidden" name="media_<?php $this->s($scheduled['id']); ?>" type="file" />
|
||||
<?php } else { ?>
|
||||
<input name="media_<?php $this->s($scheduled['id']); ?>" type="file" />
|
||||
<?php } ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div class="form-group">
|
||||
<label>Date d'envoi du SMS</label>
|
||||
<input name="scheduleds[<?php $this->s($scheduled['id']); ?>][at]" class="form-control form-datetime auto-width" type="text" value="<?php $this->s($scheduled['at']); ?>" readonly>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Numéros cibles</label>
|
||||
<div class="form-group scheduleds-number-groupe-container" scheduled-id="<?php $this->s($scheduled['id']); ?>" >
|
||||
<?php foreach ($scheduled['numbers'] as $number) { ?>
|
||||
<div class="form-group scheduleds-number-groupe">
|
||||
<input name="" class="form-control phone-international-input" type="tel" value="<?php $this->s($number); ?>" scheduled-id="<?php $this->s($scheduled['id']); ?>">
|
||||
<span class="remove-scheduleds-number fa fa-times"></span>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div class="add-number-button fa fa-plus-circle"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Contacts cibles</label>
|
||||
<input class="add-contacts form-control" name="scheduleds[<?php $this->s($scheduled['id']); ?>][contacts][]" value="<?php $this->s(json_encode($scheduled['contacts'])); ?>" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Groupes cibles</label>
|
||||
<input class="add-groupes form-control" name="scheduleds[<?php $this->s($scheduled['id']); ?>][groups][]" value="<?php $this->s(json_encode($scheduled['groups'])); ?>" />
|
||||
</div>
|
||||
<?php if ($_SESSION['user']['settings']['conditional_group'] ?? false) { ?>
|
||||
<div class="form-group">
|
||||
<label>Groupes conditionnels cibles</label>
|
||||
<input class="add-conditional-groups form-control" name="scheduleds[<?php $this->s($scheduled['id']); ?>][conditional_groups][]" value="<?php $this->s(json_encode($scheduled['conditional_groups'])); ?>" />
|
||||
</div>
|
||||
<?php } ?>
|
||||
<?php if ($_SESSION['user']['settings']['sms_flash']) { ?>
|
||||
<div class="form-group">
|
||||
<label>Envoyer comme un SMS Flash : </label>
|
||||
<div class="form-group">
|
||||
<input name="admin" type="radio" value="1" required <?php echo ($scheduled['flash'] ? 'checked' : ''); ?> /> Oui
|
||||
<input name="admin" type="radio" value="0" required <?php echo ($scheduled['flash'] ? '' : 'checked'); ?> /> Non
|
||||
</div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div class="form-group">
|
||||
<label>Numéro à employer : </label>
|
||||
<select name="scheduleds[<?php $this->s($scheduled['id']); ?>][origin]" class="form-control">
|
||||
<option <?php echo ($scheduled['origin'] ? '' : 'selected="selected"'); ?> value="">N'importe lequel</option>
|
||||
<?php foreach ($phones as $phone) { ?>
|
||||
<option <?php echo ($scheduled['origin'] == $phone['number'] ? 'selected="selected"' : '' ); ?> value="<?php $this->s($phone['number']); ?>"><?php $this->s($phone['number']); ?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
<hr/>
|
||||
<?php } ?>
|
||||
<a class="btn btn-danger" href="<?php echo \descartes\Router::url('Scheduled', 'list'); ?>">Annuler</a>
|
||||
<input type="submit" class="btn btn-success" value="Enregistrer le SMS" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" tabindex="-1" id="scheduled-preview-text-modal">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title">Prévisualisation du message</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<pre></pre>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function()
|
||||
{
|
||||
jQuery('.form-datetime').datetimepicker(
|
||||
{
|
||||
format: 'yyyy-mm-dd hh:ii:ss',
|
||||
autoclose: true,
|
||||
minuteStep: 1,
|
||||
language: 'fr'
|
||||
});
|
||||
|
||||
jQuery('.add-contacts').each(function()
|
||||
{
|
||||
jQuery(this).magicSuggest({
|
||||
data: '<?php echo \descartes\Router::url('Contact', 'json_list'); ?>',
|
||||
valueField: 'id',
|
||||
displayField: 'name',
|
||||
});
|
||||
});
|
||||
|
||||
jQuery('.add-groupes').each(function()
|
||||
{
|
||||
jQuery(this).magicSuggest({
|
||||
data: '<?php echo \descartes\Router::url('Group', 'json_list'); ?>',
|
||||
valueField: 'id',
|
||||
displayField: 'name',
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
jQuery('.add-conditional-groups').each(function()
|
||||
{
|
||||
jQuery(this).magicSuggest({
|
||||
data: '<?php echo \descartes\Router::url('ConditionalGroup', 'json_list'); ?>',
|
||||
valueField: 'id',
|
||||
displayField: 'name',
|
||||
});
|
||||
});
|
||||
|
||||
jQuery('body').on('click', '.remove-scheduleds-number', function(e)
|
||||
{
|
||||
jQuery(this).parents('.scheduleds-number-groupe').remove();
|
||||
});
|
||||
|
||||
jQuery('.phone-international-input').each(function ()
|
||||
{
|
||||
var hidden_input_name = 'scheduleds[' + jQuery(this).attr('scheduled-id') + '][numbers][]';
|
||||
window.intlTelInput(this, {
|
||||
hiddenInput: hidden_input_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); ?>,
|
||||
<?php if ($_SESSION['user']['settings']['authorized_phone_country'] ?? false) { ?>
|
||||
onlyCountries: <?php $this->s(json_encode(explode(',', $_SESSION['user']['settings']['authorized_phone_country'])), false, false); ?>,
|
||||
<?php } ?>
|
||||
nationalMode: true,
|
||||
utilsScript: '<?php echo HTTP_PWD_JS; ?>/intlTelInput/utils.js'
|
||||
});
|
||||
});
|
||||
|
||||
jQuery('body').on('click', '.add-number-button', function(e)
|
||||
{
|
||||
var random_id = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
|
||||
var scheduledId = jQuery(this).parents('.scheduleds-number-groupe-container').attr('scheduled-id');
|
||||
var newScheduledsNumberGroupe = '' +
|
||||
'<div class="form-group scheduleds-number-groupe">' +
|
||||
'<input name="" class="form-control phone-international-input" type="tel" scheduled-id="' + scheduledId + '" id="' + random_id + '">' +
|
||||
' <span class="remove-scheduleds-number fa fa-times"></span>' +
|
||||
'</div>';
|
||||
|
||||
jQuery(this).before(newScheduledsNumberGroupe);
|
||||
|
||||
var hidden_input_name = 'scheduleds[' + scheduledId + '][numbers][]';
|
||||
var phone_input = jQuery('#' + random_id)[0];
|
||||
window.intlTelInput(phone_input, {
|
||||
hiddenInput: hidden_input_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); ?>,
|
||||
<?php if ($_SESSION['user']['settings']['authorized_phone_country'] ?? false) { ?>
|
||||
onlyCountries: <?php $this->s(json_encode(explode(',', $_SESSION['user']['settings']['authorized_phone_country'])), false, false); ?>,
|
||||
<?php } ?>
|
||||
nationalMode: true,
|
||||
utilsScript: '<?php echo HTTP_PWD_JS; ?>/intlTelInput/utils.js'
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
jQuery('body').on('click', '.btn-delete-media', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
jQuery(this).parents('.form-group').find('input').removeClass('hidden');
|
||||
jQuery(this).parents('.form-group').find('.current-media-container').remove();
|
||||
});
|
||||
|
||||
jQuery('body').on('click', '.preview-button', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var id_contact = jQuery(this).parents('.scheduled-preview-container').find('select').val();
|
||||
var template = jQuery(this).parents('.form-group').find('textarea').val();
|
||||
|
||||
var datas = {
|
||||
'id_contact' : id_contact,
|
||||
'template' : template,
|
||||
};
|
||||
|
||||
jQuery.ajax({
|
||||
type: "POST",
|
||||
url: HTTP_PWD + '/template/preview',
|
||||
data: datas,
|
||||
success: function (datas) {
|
||||
jQuery('#scheduled-preview-text-modal').find('.modal-body pre').text(datas.result);
|
||||
jQuery('#scheduled-preview-text-modal').modal({'keyboard': true});
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
101
templates/scheduled/list.php
Executable file
101
templates/scheduled/list.php
Executable file
|
@ -0,0 +1,101 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Scheduleds - Show All'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'scheduleds'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>Scheduleds</small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-send"></i> Scheduleds
|
||||
</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-send fa-fw"></i> Liste des SMS à envoyer</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form method="GET">
|
||||
<?php if (!$scheduleds) { ?>
|
||||
<p>Aucun SMS n'est actuellement programmé.</p>
|
||||
<?php } else { ?>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover table-striped" id="table-scheduleds">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Date</th>
|
||||
<th>Contenu</th>
|
||||
<th style="width:5%;">Sélectionner</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($scheduleds as $scheduled) { ?>
|
||||
<tr>
|
||||
<td><?php $this->s($scheduled['id']); ?></td>
|
||||
<td><?php $this->s($scheduled['at']); ?></td>
|
||||
<td><?php $this->s($scheduled['text']); ?></td>
|
||||
<td><input type="checkbox" name="ids[]" value="<?php $this->s($scheduled['id']); ?>"></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div>
|
||||
<div class="col-xs-6 no-padding">
|
||||
<a class="btn btn-success" href="<?php echo \descartes\Router::url('Scheduled', 'add'); ?>"><span class="fa fa-plus"></span> Créer un nouveau SMS</a>
|
||||
</div>
|
||||
<?php if ($scheduleds) { ?>
|
||||
<div class="text-right col-xs-6 no-padding">
|
||||
<strong>Action pour la séléction :</strong>
|
||||
<button class="btn btn-default" type="submit" formaction="<?php echo \descartes\Router::url('Scheduled', 'edit'); ?>"><span class="fa fa-edit"></span> Modifier</button>
|
||||
<button class="btn btn-default btn-confirm" type="submit" formaction="<?php echo \descartes\Router::url('Scheduled', 'delete', ['csrf' => $_SESSION['csrf']]); ?>"><span class="fa fa-trash-o"></span> Supprimer</button>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function ()
|
||||
{
|
||||
jQuery('.action-dropdown a').on('click', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var destination = jQuery(this).parents('.action-dropdown').attr('destination');
|
||||
var url = jQuery(this).attr('href');
|
||||
jQuery(destination).find('input:checked').each(function ()
|
||||
{
|
||||
url += '/' + jQuery(this).val();
|
||||
});
|
||||
window.location = url;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
126
templates/sended/list.php
Executable file
126
templates/sended/list.php
Executable file
|
@ -0,0 +1,126 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Sendeds - Show All'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'sendeds'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>SMS envoyés</small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-upload"></i> SMS envoyés
|
||||
</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-upload fa-fw"></i> Liste des SMS envoyés</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form method="GET">
|
||||
<?php if (!$sendeds) { ?>
|
||||
<p>Aucun SMS n'a été envoyé pour le moment.</p>
|
||||
<?php } else { ?>
|
||||
<div class="table-sendeds">
|
||||
<table class="table table-bordered table-hover table-striped" id="table-sendeds">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>De</th>
|
||||
<th>À</th>
|
||||
<th>Message</th>
|
||||
<th>Date</th>
|
||||
<th>Statut</th>
|
||||
<?php if ($_SESSION['user']['admin']) { ?>
|
||||
<th>Sélectionner</th>
|
||||
<?php } ?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($sendeds as $sended) { ?>
|
||||
<tr>
|
||||
<td><?php $this->s($sended['id']); ?></td>
|
||||
<td class="no-wrap"><?php echo(\controllers\internals\Tool::phone_link($sended['origin'])); ?></td>
|
||||
<td class="no-wrap"><?php echo(\controllers\internals\Tool::phone_link($sended['destination'])); ?></td>
|
||||
<td><?php $this->s($sended['text']); ?></td>
|
||||
<td><?php $this->s($sended['at']); ?></td>
|
||||
|
||||
<?php if ($sended['status'] == 'unknown') { ?>
|
||||
<td>Inconnu</td>
|
||||
<?php } elseif ($sended['status'] == 'delivered') { ?>
|
||||
<td>Délivré</td>
|
||||
<?php } elseif ($sended['status'] == 'failed') { ?>
|
||||
<td>Échoué</td>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($_SESSION['user']['admin']) { ?>
|
||||
<td><input name="ids[]" type="checkbox" value="<?php $this->s($sended['id']); ?>"></td>
|
||||
<?php } ?>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<?php if ($_SESSION['user']['admin']) { ?>
|
||||
<div class="text-right col-xs-12 no-padding">
|
||||
<strong>Action pour la séléction :</strong>
|
||||
<button class="btn btn-default btn-confirm" type="submit" formaction="<?php echo \descartes\Router::url('Sended', 'delete', ['csrf' => $_SESSION['csrf']]); ?>"><span class="fa fa-trash-o"></span> Supprimer</button>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<ul class="pager">
|
||||
<?php if ($page) { ?>
|
||||
<li><a href="<?php echo \descartes\Router::url('Sended', 'list', array('page' => $page - 1)); ?>"><span aria-hidden="true">←</span> Précèdents</a></li>
|
||||
<?php } ?>
|
||||
|
||||
Page : <?php $this->s($page + 1); ?>
|
||||
|
||||
<?php if ($limit == $nb_results) { ?>
|
||||
<li><a href="<?php echo \descartes\Router::url('Sended', 'list', array('page' => $page + 1)); ?>">Suivants <span aria-hidden="true">→</span></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function ()
|
||||
{
|
||||
jQuery('.action-dropdown a').on('click', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var destination = jQuery(this).parents('.action-dropdown').attr('destination');
|
||||
var url = jQuery(this).attr('href');
|
||||
jQuery(destination).find('input:checked').each(function ()
|
||||
{
|
||||
url += '/' + jQuery(this).val();
|
||||
});
|
||||
window.location = url;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
305
templates/setting/show.php
Executable file
305
templates/setting/show.php
Executable file
|
@ -0,0 +1,305 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Réglages'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'settings'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>Réglages</small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-cogs"></i> Réglages
|
||||
</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-cogs fa-fw"></i> Les réglages de RaspiSMS</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-share fa-fw"></i> Transfert des SMS par e-mail</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Setting', 'update', ['setting_name' => 'transfer', 'csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Transfert activé : </label>
|
||||
<select name="setting_value" class="form-control">
|
||||
<option value="0">Non</option>
|
||||
<option value="1" <?php echo $_SESSION['user']['settings']['transfer'] ? 'selected' : ''; ?>>Oui</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-success">Mettre à jour les données</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-picture-o fa-fw"></i> Support des MMS</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Setting', 'update', ['setting_name' => 'mms', 'csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Activer les MMS : </label>
|
||||
<select name="setting_value" class="form-control">
|
||||
<option value="0">Non</option>
|
||||
<option value="1" <?php echo $_SESSION['user']['settings']['mms'] ? 'selected' : ''; ?>>Oui</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-success">Mettre à jour les données</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-link fa-fw"></i> Détection des URL dans les discussions</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Setting', 'update', ['setting_name' => 'detect_url', 'csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Détection activé : </label>
|
||||
<select name="setting_value" class="form-control">
|
||||
<option value="0">Non</option>
|
||||
<option value="1" <?php echo $_SESSION['user']['settings']['detect_url'] ? 'selected' : ''; ?>>Oui</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-success">Mettre à jour les données</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-phone fa-fw"></i> Pays préférés numéros internationaux</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Setting', 'update', ['setting_name' => 'preferred_phone_country', 'csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Code des pays (norme ISO 3166-1 alpha-2) séparés par des virgules : </label>
|
||||
<input name="setting_value" class="form-control" value="<?php $this->s($_SESSION['user']['settings']['preferred_phone_country']); ?>" />
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-success">Mettre à jour les données</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-flag fa-fw"></i> Pays autorisés pour l'envoi</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Setting', 'update', ['setting_name' => 'preferred_phone_country', 'csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Code des pays (norme ISO 3166-1 alpha-2) séparés par des virgules (laissez vide pour tout autoriser) : </label>
|
||||
<input name="setting_value" class="form-control" value="<?php $this->s($_SESSION['user']['settings']['authorized_phone_country']); ?>" />
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-success">Mettre à jour les données</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-music fa-fw"></i> Son sur reception d'un SMS</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Setting', 'update', ['setting_name' => 'sms_reception_sound', 'csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Jouer un son quand vous recevez un SMS : </label>
|
||||
<select name="setting_value" class="form-control">
|
||||
<option value="0">Non</option>
|
||||
<option value="1" <?php echo $_SESSION['user']['settings']['sms_reception_sound'] ? 'selected' : ''; ?>>Oui</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-success">Mettre à jour les données</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-question-circle fa-fw"></i> Affichage de l'aide</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Setting', 'update', ['setting_name' => 'display_help', 'csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Afficher l'aide : </label>
|
||||
<select name="setting_value" class="form-control">
|
||||
<option value="0">Non</option>
|
||||
<option value="1" <?php echo $_SESSION['user']['settings']['display_help'] ? 'selected' : ''; ?>>Oui</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-success">Mettre à jour les données</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-ban fa-fw"></i> Activation de SMS-STOP</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Setting', 'update', ['setting_name' => 'smsstop', 'csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>SMS STOP activé : </label>
|
||||
<select name="setting_value" class="form-control">
|
||||
<option value="0">Non</option>
|
||||
<option value="1" <?php echo $_SESSION['user']['settings']['smsstop'] ? 'selected' : ''; ?>>Oui</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-success">Mettre à jour les données</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-plug fa-fw"></i> Activation de Webhooks</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Setting', 'update', ['setting_name' => 'webhook', 'csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Webhooks activé : </label>
|
||||
<select name="setting_value" class="form-control">
|
||||
<option value="0">Non</option>
|
||||
<option value="1" <?php echo $_SESSION['user']['settings']['webhook'] ? 'selected' : ''; ?>>Oui</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-success">Mettre à jour les données</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-phone fa-fw"></i> Pays par défaut numéros internationaux</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Setting', 'update', ['setting_name' => 'default_phone_country', 'csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Code du pays (norme ISO 3166-1 alpha-2) : </label>
|
||||
<input name="setting_value" class="form-control" value="<?php $this->s($_SESSION['user']['settings']['default_phone_country']); ?>" />
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-success">Mettre à jour les données</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-flash fa-fw"></i> Support des SMS Flash</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Setting', 'update', ['setting_name' => 'sms_flash', 'csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>SMS Flash activé : </label>
|
||||
<select name="setting_value" class="form-control">
|
||||
<option value="0">Non</option>
|
||||
<option value="1" <?php echo $_SESSION['user']['settings']['sms_flash'] ? 'selected' : ''; ?>>Oui</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-success">Mettre à jour les données</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-bullseye fa-fw"></i> Support des groupes conditionnels</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Setting', 'update', ['setting_name' => 'conditional_group', 'csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Groupes conditionnels activés : </label>
|
||||
<select name="setting_value" class="form-control">
|
||||
<option value="0">Non</option>
|
||||
<option value="1" <?php echo $_SESSION['user']['settings']['conditional_group'] ? 'selected' : ''; ?>>Oui</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-success">Mettre à jour les données</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-code fa-fw"></i> Support du templating</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Setting', 'update', ['setting_name' => 'templating', 'csrf' => $_SESSION['csrf']]); ?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Templating activé : </label>
|
||||
<select name="setting_value" class="form-control">
|
||||
<option value="0">Non</option>
|
||||
<option value="1" <?php echo $_SESSION['user']['settings']['templating'] ? 'selected' : ''; ?>>Oui</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-success">Mettre à jour les données</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function ()
|
||||
{
|
||||
jQuery('.action-dropdown a').on('click', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var destination = jQuery(this).parents('.action-dropdown').attr('destination');
|
||||
var url = jQuery(this).attr('href');
|
||||
jQuery(destination).find('input:checked').each(function ()
|
||||
{
|
||||
url += '/' + jQuery(this).val();
|
||||
});
|
||||
window.location = url;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
107
templates/smsstop/list.php
Executable file
107
templates/smsstop/list.php
Executable file
|
@ -0,0 +1,107 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'SMS STOP - Show All'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'smsstop'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>SMS STOP</small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-ban"></i> SMS STOP
|
||||
</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-ban fa-fw"></i> Liste SMS STOP</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form method="GET">
|
||||
<?php if (!$smsstops) { ?>
|
||||
<p>Aucun SMS STOP n'a été reçu pour le moment.</p>
|
||||
<?php } else { ?>
|
||||
<div class="table-events">
|
||||
<table class="table table-bordered table-hover table-striped" id="table-smsstop">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Numéro</th>
|
||||
<?php if ($_SESSION['user']['admin']) { ?><th>Sélectionner</th><?php } ?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($smsstops as $smsstop) { ?>
|
||||
<tr>
|
||||
<td><?php $this->s($smsstop['id']); ?></td>
|
||||
<td><?php echo(\controllers\internals\Tool::phone_link($smsstop['number'])); ?></td>
|
||||
<?php if ($_SESSION['user']['admin']) { ?>
|
||||
<td><input name="ids[]" type="checkbox" value="<?php $this->s($smsstop['id']); ?>"></td>
|
||||
<?php } ?>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<?php if ($_SESSION['user']['admin']) { ?>
|
||||
<div class="text-right col-xs-12 no-padding">
|
||||
<strong>Action pour la séléction :</strong>
|
||||
<button class="btn btn-default btn-confirm" type="submit" formaction="<?php echo \descartes\Router::url('SmsStop', 'delete', ['csrf' => $_SESSION['csrf']]); ?>"><span class="fa fa-trash-o"></span> Supprimer</button>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<ul class="pager">
|
||||
<?php if ($page) { ?>
|
||||
<li><a href="<?php echo \descartes\Router::url('SmsStop', 'list', array('page' => $page - 1)); ?>"><span aria-hidden="true">←</span> Précèdents</a></li>
|
||||
<?php } ?>
|
||||
<?php $this->s('Page : ' . ($page + 1)); ?>
|
||||
|
||||
<?php if ($limit == $nb_results) { ?>
|
||||
<li><a href="<?php echo \descartes\Router::url('SmsStop', 'list', array('page' => $page + 1)); ?>">Suivants <span aria-hidden="true">→</span></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function ()
|
||||
{
|
||||
jQuery('.action-dropdown a').on('click', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var destination = jQuery(this).parents('.action-dropdown').attr('destination');
|
||||
var url = jQuery(this).attr('href');
|
||||
jQuery(destination).find('input:checked').each(function ()
|
||||
{
|
||||
url += '/' + jQuery(this).val();
|
||||
});
|
||||
window.location = url;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
75
templates/user/add.php
Executable file
75
templates/user/add.php
Executable file
|
@ -0,0 +1,75 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Users - Show All'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'users'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Nouvel utilisateur
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-user"></i> <a href="<?php echo \descartes\Router::url('User', 'list'); ?>">Utilisateurs</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-plus"></i> Nouveau
|
||||
</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-user fa-fw"></i> Ajout d'un utilisateur</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('User', 'create', ['csrf' => $_SESSION['csrf']]);?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>Adresse e-mail</label>
|
||||
<div class="form-group input-group">
|
||||
<span class="input-group-addon"><span class="fa fa-at"></span></span>
|
||||
<input name="email" class="form-control" type="email" placeholder="Adresse e-mail de l'utilisateur" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Mot de passe (laissez vide pour générer le mot de passe automatiquement)</label>
|
||||
<div class="form-group input-group">
|
||||
<span class="input-group-addon"><span class="fa fa-lock"></span></span>
|
||||
<input name="password" class="form-control" type="password" placeholder="Mot de passe de l'utilisateur" >
|
||||
</div>
|
||||
</div>
|
||||
<?php if (isset($_SESSION['user']['admin']) && $_SESSION['user']['admin']) { ?>
|
||||
<div class="form-group">
|
||||
<label>Niveau administrateur : </label>
|
||||
<div class="form-group">
|
||||
<input name="admin" type="radio" value="1" required /> Oui
|
||||
<input name="admin" type="radio" value="0" required /> Non
|
||||
</div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<a class="btn btn-danger" href="<?php echo \descartes\Router::url('User', 'list'); ?>">Annuler</a>
|
||||
<input type="submit" class="btn btn-success" value="Enregistrer le user" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
95
templates/user/list.php
Executable file
95
templates/user/list.php
Executable file
|
@ -0,0 +1,95 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
|
||||
$this->render('incs/head', ['title' => 'Users - Show All'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'users'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>Utilisateurs</small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-user"></i> Utilisateurs
|
||||
</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-user fa-fw"></i> Liste des utilisateurs</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form method="GET">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover table-striped" id="table-users">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Email</th>
|
||||
<th>Admin</th>
|
||||
<th style="width:5%;">Sélectionner</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($users as $user) { ?>
|
||||
<tr>
|
||||
<td><?php $this->s($user['id']); ?></td>
|
||||
<td><?php $this->s($user['email']); ?></td>
|
||||
<td><?php $this->s($user['admin']); ?></td>
|
||||
<td><input type="checkbox" value="<?php $this->s($user['id']); ?>" name="ids[]"></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<div class="col-xs-6 no-padding">
|
||||
<a class="btn btn-success" href="<?php echo \descartes\Router::url('User', 'add'); ?>"><span class="fa fa-plus"></span> Ajouter un utilisateur</a>
|
||||
</div>
|
||||
<div class="text-right col-xs-6 no-padding">
|
||||
<strong>Action pour la séléction :</strong>
|
||||
<button class="btn btn-default" type="submit" formaction="<?php echo \descartes\Router::url('User', 'delete', ['csrf' => $_SESSION['csrf']]); ?>"><span class="fa fa-trash-o"></span> Supprimer</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(document).ready(function ()
|
||||
{
|
||||
jQuery('.action-dropdown a').on('click', function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var destination = jQuery(this).parents('.action-dropdown').attr('destination');
|
||||
var url = jQuery(this).attr('href');
|
||||
jQuery(destination).find('input:checked').each(function ()
|
||||
{
|
||||
url += '/' + jQuery(this).val();
|
||||
});
|
||||
window.location = url;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
63
templates/webhook/add.php
Executable file
63
templates/webhook/add.php
Executable file
|
@ -0,0 +1,63 @@
|
|||
<?php
|
||||
$this->render('incs/head', ['title' => 'Webhooks - Add'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'webhooks'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Nouveau webhook
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-plug"></i> <a href="<?php echo \descartes\Router::url('Webhook', 'list'); ?>">Webhooks</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-plus"></i> Nouveau
|
||||
</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-plug fa-fw"></i> Ajout d'un nouveau webhook</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Webhook', 'create', ['csrf' => $_SESSION['csrf']]);?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>URL cible</label>
|
||||
<div class="form-group">
|
||||
<input name="url" class="form-control" type="text" placeholder="http://example.fr/webhook/" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Type de Webhook</label>
|
||||
<select name="type" class="form-control" required>
|
||||
<option value="receive_sms">Réception d'un SMS</option>
|
||||
<option value="send_sms">Envoi d'un SMS</option>
|
||||
</select>
|
||||
</div>
|
||||
<a class="btn btn-danger" href="<?php echo \descartes\Router::url('Webhook', 'list'); ?>">Annuler</a>
|
||||
<input type="submit" class="btn btn-success" value="Enregistrer le webhook" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
68
templates/webhook/edit.php
Executable file
68
templates/webhook/edit.php
Executable file
|
@ -0,0 +1,68 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
$this->render('incs/head', ['title' => 'Webhooks - Edit'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'webhooks'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Modification webhooks
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-plug"></i> <a href="<?php echo \descartes\Router::url('Webhook', 'list'); ?>">Webhooks</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-edit fa-fw"></i>Modification de webhooks</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo \descartes\Router::url('Webhook', 'update', ['csrf' => $_SESSION['csrf']]);?>" method="POST">
|
||||
<?php foreach ($webhooks as $webhook) { ?>
|
||||
<input type="hidden" value="<?php $this->s($webhook['id']); ?>" name="webhooks[<?php $this->s($webhook['id']); ?>][id]" />
|
||||
<div class="form-group">
|
||||
<label>URL cible</label>
|
||||
<div class="form-group">
|
||||
<input value="<?php $this->s($webhook['url']); ?>" name="webhooks[<?php $this->s($webhook['id']); ?>][url]" class="form-control" type="text" placeholder="http://example.fr/webhook/" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Type de Webhook</label>
|
||||
<select name="webhooks[<?php $this->s($webhook['id']); ?>][type]" class="form-control" required>
|
||||
<option <?php echo $webhook['type'] == 'receive_sms' ? 'selected="selected"' : '' ?> value="receive_sms">Réception d'un SMS</option>
|
||||
<option <?php echo $webhook['type'] == 'send_sms' ? 'selected="selected"' : '' ?> value="send_sms">Envoi d'un SMS</option>
|
||||
</select>
|
||||
</div>
|
||||
<hr/>
|
||||
<?php } ?>
|
||||
<a class="btn btn-danger" href="<?php echo \descartes\Router::url('Webhook', 'list'); ?>">Annuler</a>
|
||||
<input type="submit" class="btn btn-success" value="Enregistrer la webhook" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
83
templates/webhook/list.php
Executable file
83
templates/webhook/list.php
Executable file
|
@ -0,0 +1,83 @@
|
|||
<?php
|
||||
$this->render('incs/head', ['title' => 'Webhooks - Show All'])
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$this->render('incs/nav', ['page' => 'webhooks'])
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>Webhooks</small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo \descartes\Router::url('Dashboard', 'show'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-plug"></i> Webhooks
|
||||
</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-plug fa-fw"></i> Liste des webhooks</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form method="GET">
|
||||
<?php if (!$webhooks) { ?>
|
||||
<p>Aucun webhook n'a été créé pour le moment.</p>
|
||||
<?php } else { ?>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover table-striped" id="table-webhooks">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Url</th>
|
||||
<th>Type de webhook</th>
|
||||
<th style="width:5%;">Sélectionner</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($webhooks as $webhook) { ?>
|
||||
<tr>
|
||||
<td><?php $this->s($webhook['id']); ?></td>
|
||||
<td><?php $this->s($webhook['url']); ?></td>
|
||||
<td><?php $this->s($webhook['type'] == 'send_sms' ? 'Envoi de SMS' : 'Reception de SMS'); ?></td>
|
||||
<td><input type="checkbox" name="ids[]" value="<?php $this->s($webhook['id']); ?>"></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div>
|
||||
<div class="col-xs-6 no-padding">
|
||||
<a class="btn btn-success" href="<?php echo \descartes\Router::url('Webhook', 'add'); ?>"><span class="fa fa-plus"></span> Ajouter un webhook</a>
|
||||
</div>
|
||||
<?php if ($webhooks) { ?>
|
||||
<div class="text-right col-xs-6 no-padding">
|
||||
<strong>Action pour la séléction :</strong>
|
||||
<button class="btn btn-default" type="submit" formaction="<?php echo \descartes\Router::url('Webhook', 'edit'); ?>"><span class="fa fa-edit"></span> Modifier</button>
|
||||
<button class="btn btn-default btn-confirm" type="submit" formaction="<?php echo \descartes\Router::url('Webhook', 'delete', ['csrf' => $_SESSION['csrf']]); ?>"><span class="fa fa-trash-o"></span> Supprimer</button>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
$this->render('incs/footer');
|
Loading…
Add table
Add a link
Reference in a new issue