first refonte

This commit is contained in:
osaajani 2019-10-29 14:57:13 +01:00
commit 9e9cd47b91
226 changed files with 34307 additions and 0 deletions

142
templates/account/show.php Executable file
View file

@ -0,0 +1,142 @@
<?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 \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/>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title"><i class="fa fa-key fa-fw"></i> Modifier mot de passe</h4>
</div>
<div class="panel-body">
<form action="<?php echo \Router::url('Account', 'change_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 \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 \Router::url('Account', 'change_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-share fa-fw"></i> Transfert des SMS par e-mail</h4>
</div>
<div class="panel-body">
<form action="<?php echo \Router::url('Account', 'change_transfer', ['csrf' => $_SESSION['csrf']]); ?>" method="POST">
<div class="form-group">
<label>Transfert activé : </label>
<select name="transfer" class="form-control">
<option value="0">Non</option>
<option value="1" <?php echo $_SESSION['user']['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>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
jQuery(document).ready(function ()
{
jQuery('.action-dropdown a').on('click', function (e)
{
e.preventDefault();
var target = jQuery(this).parents('.action-dropdown').attr('target');
var url = jQuery(this).attr('href');
jQuery(target).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
View 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 \Router::url('Dashboard', 'show'); ?>">Dashboard</a>
</li>
<li>
<i class="fa fa-terminal"></i> <a href="<?php echo \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 \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 \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');

81
templates/command/edit.php Executable file
View file

@ -0,0 +1,81 @@
<?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 \Router::url('Dashboard', 'show'); ?>">Dashboard</a>
</li>
<li>
<i class="fa fa-terminal"></i> <a href="<?php echo \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 \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 \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');

108
templates/command/list.php Executable file
View file

@ -0,0 +1,108 @@
<?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 \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 \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 \Router::url('Command', 'edit'); ?>"><span class="fa fa-edit"></span> Modifier</button>
<button class="btn btn-default" type="submit" formaction="<?php echo \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>
<script>
jQuery(document).ready(function ()
{
jQuery('.action-dropdown a').on('click', function (e)
{
e.preventDefault();
var target = jQuery(this).parents('.action-dropdown').attr('target');
var url = jQuery(this).attr('href');
jQuery(target).find('input:checked').each(function ()
{
url += '/' + jQuery(this).val();
});
window.location = url;
});
});
</script>
<?php
$this->render('incs/footer');

View 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 \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 \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
View 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 \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 \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');

View 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 -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 \Router::url('Connect', 'login'); ?>";
}, 5000);
</script>
<?php
$this->render('incs/footer');

View 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 -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');

View 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>-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');

View 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 -initialiser votre mot de passe viens de vous être envoyé.
</div>
</div>
</div>
</script>
<?php
$this->render('incs/footer');

84
templates/contact/add.php Executable file
View file

@ -0,0 +1,84 @@
<?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 \Router::url('Dashboard', 'show'); ?>">Dashboard</a>
</li>
<li>
<i class="fa fa-user"></i> <a href="<?php echo \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 \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">
<input name="number" type="hidden" id="phone-hidden-input" required>
</div>
</div>
<a class="btn btn-danger" href="<?php echo \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').intlTelInput({
defaultCountry: '<?php $this->s(RASPISMS_SETTINGS_DEFAULT_PHONE_COUNTRY); ?>',
preferredCountries: <?php $this->s(json_encode(explode(',', RASPISMS_SETTINGS_PREFERRED_PHONE_COUNTRY)), false, false); ?>,
nationalMode: true,
utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
});
jQuery('form').on('submit', function(e)
{
e.preventDefault();
jQuery('#phone-hidden-input').val(jQuery('#phone-international-input').intlTelInput("getNumber"));
this.submit();
});
});
</script>
<?php
$this->render('incs/footer');

97
templates/contact/edit.php Executable file
View file

@ -0,0 +1,97 @@
<?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 \Router::url('Dashboard', 'show'); ?>">Dashboard</a>
</li>
<li>
<i class="fa fa-user"></i> <a href="<?php echo \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 \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']); ?>">
<input name="contacts[<?php $this->s($contact['id']); ?>][number]" type="hidden" id="phone-hidden-input-<?php $this->s($contact['id']); ?>" required>
</div>
</div>
<hr/>
<?php
}
?>
<a class="btn btn-danger" href="<?php echo \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').intlTelInput({
defaultCountry: '<?php $this->s(RASPISMS_SETTINGS_DEFAULT_PHONE_COUNTRY); ?>',
preferredCountries: <?php $this->s(json_encode(explode(',', RASPISMS_SETTINGS_PREFERRED_PHONE_COUNTRY)), false, false); ?>,
nationalMode: true,
utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
});
jQuery('form').on('submit', function(e)
{
e.preventDefault();
jQuery('.phone-international-input').each(function(key, value)
{
jQuery('#phone-hidden-input-' + jQuery(this).attr('contact-id')).val(jQuery(this).intlTelInput("getNumber"));
});
this.submit();
});
});
</script>
<?php
$this->render('incs/footer');

106
templates/contact/list.php Executable file
View file

@ -0,0 +1,106 @@
<?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>
</h1>
<ol class="breadcrumb">
<li>
<i class="fa fa-dashboard"></i> <a href="<?php echo \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 $this->s($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 \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 \Router::url('Contact', 'edit'); ?>"><span class="fa fa-edit"></span> Modifier</button>
<button class="btn btn-default" type="submit" formaction="<?php echo \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>
<script>
jQuery(document).ready(function ()
{
jQuery('.action-dropdown a').on('click', function (e)
{
e.preventDefault();
var target = jQuery(this).parents('.action-dropdown').attr('target');
var url = jQuery(this).attr('href');
jQuery(target).find('input:checked').each(function ()
{
url += '/' + jQuery(this).val();
});
window.location = url;
});
});
</script>
<?php
$this->render('incs/footer');

279
templates/dashboard/show.php Executable file
View file

@ -0,0 +1,279 @@
<?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 \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_groupes; ?></div>
<div>Groupes</div>
</div>
</div>
</div>
<a href="<?php echo \Router::url('Groupe', '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 \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-terminal fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge"><?php echo $nb_commands; ?></div>
<div>Commandes</div>
</div>
</div>
</div>
<a href="<?php echo \Router::url('Command', 'list') ?>">
<div class="panel-footer">
<span class="pull-left">Voir les commandes</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-send 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 $this->s($sended['target']); ?></td>
<td><?php $this->s($sended['at']); ?></td>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
<div class="text-right">
<a href="<?php echo \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 $this->s($received['send_by']); ?></td>
<td><?php $this->s($received['at']); ?></td>
<td><?php echo ($received['is_command']) ? 'Oui' : 'Non'; ?></td>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
<div class="text-right">
<a href="<?php echo \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 survenus.
<?php } else { ?>
<div class="list-group">
<?php
foreach ($events as $event)
{
$logo = \controllers\internals\Tool::event_type_to_icon($event['type']);
?>
<a href="#" class="list-group-item">
<span class="badge"><?php $this->s($event['at']); ?></span>
<i class="fa fa-fw <?php echo $logo; ?>"></i> <?php $this->s($event['text']); ?>
</a>
<?php
}
?>
</div>
<div class="text-right">
<a href="<?php echo \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',
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
View 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 \Router::url('Dashboard', 'list'); ?>">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(\Router::url('Discussion', 'show', ['number' => $discussion['number']])); ?>">
<td><?php $this->s($discussion['at']); ?></td>
<td><?php $this->s(isset($discussion['contact']) ? $discussion['contact'] . ' (' . $discussion['number'] . ')' : $discussion['number']); ?></td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
<?php } ?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?php
$this->render('incs/footer');

151
templates/discussion/show.php Executable file
View file

@ -0,0 +1,151 @@
<?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'] . ' (' . $number . ')' : $number); ?></small>
</h1>
<ol class="breadcrumb">
<li>
<i class="fa fa-dashboard"></i> <a href="<?php echo \Router::url('Dashboard', 'show'); ?>">Dashboard</a>
</li>
<li>
<i class="fa fa-comments-o"></i> <a href="<?php echo \Router::url('Discussion', 'list'); ?>">Discussions</a>
</li>
<li class="active">
<?php $this->s($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(\Router::url('Discussion', 'send', ['csrf' => $_SESSION['csrf']])); ?>" method="POST">
<textarea name="content" placeholder="Envoyer un message..."></textarea>
<input type="hidden" name="numbers[]" value="<?php $this->s($number); ?>" />
<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 + "/discussions/getmessages/<?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 (RASPISMS_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 ? (message.status == 'delivered' ? ' <span class="fa fa-check-circle fa-fw text-success"></span>' : '<span class="fa fa-times-circle fa-fw text-danger"></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');

View file

@ -0,0 +1,6 @@
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 http://raspbian-france.fr

View file

@ -0,0 +1,2 @@
Vous avez demandé la -initialisation de votre mot de passe pour le site <?php echo HTTP_PWD; ?>.
Pour -initialisez votre mot de passe, rendez-vous à l'adresse suivante : <?php echo $reset_link; ?>.

115
templates/event/list.php Executable file
View file

@ -0,0 +1,115 @@
<?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 \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" type="submit" formaction="<?php echo \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 \Router::url('events', 'showAll', array('page' => $page - 1)); ?>"><span aria-hidden="true">&larr;</span> Précèdents</a></li>
<?php } ?>
Page : <?php $this->s($page + 1); ?>
<?php if ($limit == $nb_results) { ?>
<li><a href="<?php echo \Router::url('events', 'showAll', array('page' => $page + 1)); ?>">Suivants <span aria-hidden="true">&rarr;</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 target = jQuery(this).parents('.action-dropdown').attr('target');
var url = jQuery(this).attr('href');
jQuery(target).find('input:checked').each(function ()
{
url += '/' + jQuery(this).val();
});
window.location = url;
});
});
</script>
<?php
$this->render('incs/footer');

77
templates/groupe/add.php Executable file
View 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 \Router::url('Dashboard', 'show'); ?>">Dashboard</a>
</li>
<li>
<i class="fa fa-group"></i> <a href="<?php echo \Router::url('Groupe', '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 \Router::url('Groupe', '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 au groupe</label>
<input class="add-contacts form-control" name="contacts[]"/>
</div>
<a class="btn btn-danger" href="<?php echo \Router::url('Groupe', '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 \Router::url('Contact', 'json_list'); ?>',
valueField: 'id',
displayField: 'name',
name: 'contacts[]'
});
});
});
</script>
<?php
$this->render('incs/footer');

92
templates/groupe/edit.php Executable file
View 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 \Router::url('Dashboard', 'show'); ?>">Dashboard</a>
</li>
<li>
<i class="fa fa-group"></i> <a href="<?php echo \Router::url('Groupe', '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 \Router::url('Groupe', 'update', ['csrf' => $_SESSION['csrf']]);?>" method="POST">
<?php
foreach ($groupes as $groupe)
{
$contacts = array();
foreach ($groupe['contacts'] as $contact)
{
$contacts[] = (int)$contact['id'];
}
$contacts = json_encode($contacts);
?>
<input name="groupes[<?php $this->s($groupe['id']); ?>][groupe][id]" type="hidden" value="<?php $this->s($groupe['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="groupes[<?php $this->s($groupe['id']); ?>][name]" class="form-control" type="text" placeholder="Nom groupe" autofocus required value="<?php $this->s($groupe['name']); ?>">
</div>
</div>
<div class="form-group">
<label>Contacts du groupe</label>
<input class="add-contacts form-control" name="groupes[<?php $this->s($groupe['id']); ?>][contacts_ids][]" value="<?php $this->s($contacts); ?>"/>
</div>
<hr/>
<?php
}
?>
<a class="btn btn-danger" href="<?php echo \Router::url('Groupe', '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 \Router::url('Contact', 'json_list'); ?>',
valueField: 'id',
displayField: 'name',
});
});
});
</script>
<?php
$this->render('incs/footer');

106
templates/groupe/list.php Executable file
View file

@ -0,0 +1,106 @@
<?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 \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 (!$groupes) { ?>
<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 ($groupes as $groupe)
{
?>
<tr>
<td><?php $this->s($groupe['id']); ?></td>
<td><?php $this->s($groupe['name']); ?></td>
<td><?php $this->s($groupe['nb_contacts']); ?></td>
<td><input type="checkbox" name="ids[]" value="<?php $this->s($groupe['id']); ?>"></td>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
<?php } ?>
<div>
<div class="col-xs-6 no-padding">
<a class="btn btn-success" href="<?php echo \Router::url('Groupe', 'add'); ?>"><span class="fa fa-plus"></span> Ajouter un groupe</a>
</div>
<?php if ($groupes) { ?>
<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 \Router::url('Groupe', 'edit'); ?>"><span class="fa fa-edit"></span> Modifier</button>
<button class="btn btn-default" type="submit" formaction="<?php echo \Router::url('Groupe', '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 target = jQuery(this).parents('.action-dropdown').attr('target');
var url = jQuery(this).attr('href');
jQuery(target).find('input:checked').each(function ()
{
url += '/' + jQuery(this).val();
});
window.location = url;
});
});
</script>
<?php
$this->render('incs/footer');

21
templates/incs/footer.php Executable file
View file

@ -0,0 +1,21 @@
<footer class="text-center">
RaspiSMS a été créé pour vous par le site <a href="http://raspbian-france.fr">Raspbian-France</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 (RASPISMS_SETTINGS_SMS_RECEPTION_SOUND) { ?>
<audio id="reception-sound">
<source src="<?php echo HTTP_PWD_SOUND; ?>/sounds/receptionSound.ogg" type="audio/ogg">
<source src="<?php echo HTTP_PWD_SOUND; ?>/sounds/receptionSound.mp3" type="audio/mpeg">
<source src="<?php echo HTTP_PWD_SOUND; ?>/sounds/receptionSound.wav" type="audio/wav">
</audio>
<?php } ?>
<?php if (ENVIRONMENT == 'dev') { ?>
<script>
<?php while ($message = \modules\DescartesSessionMessages\internals\DescartesSessionMessages::getNext()) { ?>
alert('<?php echo $message['type'] . ' : ' . $message['text']; ?>');
<?php } ?>
</script>
<?php } ?>
</body>
</html>

63
templates/incs/head.php Executable file
View file

@ -0,0 +1,63 @@
<!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; ?>/css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS Theme -->
<link href="<?php echo HTTP_PWD_CSS; ?>/css/sb-admin.css" rel="stylesheet">
<!-- Morris Charts CSS -->
<link href="<?php echo HTTP_PWD_CSS; ?>/css/plugins/morris.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="<?php echo HTTP_PWD_FONT; ?>/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<!-- Custom CSS site -->
<link href="<?php echo HTTP_PWD_CSS; ?>/css/style.css" rel="stylesheet">
<?php
$this->render('incs/phptojs');
?>
<script src="<?php echo HTTP_PWD_JS; ?>/js/jquery.js"></script>
<script src="<?php echo HTTP_PWD_JS; ?>/js/bootstrap.min.js"></script>
<script src="<?php echo HTTP_PWD_JS; ?>/js/plugins/morris/raphael.min.js"></script>
<script src="<?php echo HTTP_PWD_JS; ?>/js/plugins/morris/morris.min.js"></script>
<script src="<?php echo HTTP_PWD_JS; ?>/js/Autolinker.min.js"></script>
<!-- Magic Suggest JS and CSS -->
<script src="<?php echo HTTP_PWD_JS; ?>/js/magicsuggest.min.js"></script>
<link href="<?php echo HTTP_PWD_CC; ?>/css/magicsuggest.css" rel="stylesheet">
<!-- \Datetime Picked JS and CSS -->
<script src="<?php echo HTTP_PWD_JS; ?>/js/bootstrap-datetimepicker.min.js"></script>
<script src="<?php echo HTTP_PWD_JS; ?>/js/locales/bootstrap-datetimepicker.fr.js"></script>
<link href="<?php echo HTTP_PWD_CSS; ?>/css/bootstrap-datetimepicker.min.css" rel="stylesheet">
<!-- International Phone Number, JS and CSS -->
<script src="<?php echo HTTP_PWD_JS; ?>/js/intlTelInput/intlTelInput.min.js"></script>
<link href="<?php echo HTTP_PWD_CSS; ?>/css/intlTelInput.css" rel="stylesheet">
<!-- Custom JS -->
<script src="<?php echo HTTP_PWD_JS; ?>/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>

82
templates/incs/nav.php Executable file
View file

@ -0,0 +1,82 @@
<!-- 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 \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 \Router::url('Account', 'show'); ?>"><i class="fa fa-fw fa-user"></i> Profil</a>
</li>
<li class="divider"></li>
<li>
<a href="<?php echo \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 \Router::url('Dashboard', 'show'); ?>"><i class="fa fa-fw fa-dashboard"></i> Dashboard</a>
</li>
<li <?php echo $page == 'scheduleds' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('Scheduled', 'list'); ?>"><i class="fa fa-fw fa-envelope"></i> SMS</a>
</li>
<li <?php echo $page == 'discussions' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('Discussion', 'list'); ?>"><i class="fa fa-fw fa-comments"></i> Discussions</a>
</li>
<li <?php echo $page == 'commands' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('Command', 'list'); ?>"><i class="fa fa-fw fa-terminal"></i> Commandes</a>
</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')) ? 'in' : ''; ?>">
<li <?php echo $page == 'contacts' ? 'class="active"' : ''; ?>>
<a href="<?php echo \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 \Router::url('Groupe', 'list'); ?>"><i class="fa fa-fw fa-group"></i> Groupes</a>
</li>
</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('sendeds', 'receiveds', 'events', 'smsstop')) ? 'in' : ''; ?>">
<li <?php echo $page == 'sendeds' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('Sended', 'list'); ?>"><i class="fa fa-fw fa-send"></i> SMS envoyés</a>
</li>
<li <?php echo $page == 'receiveds' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('Received', 'list'); ?>"><i class="fa fa-fw fa-download"></i> SMS reçus</a>
</li>
<li <?php echo $page == 'smsstop' ? 'class="active"' : ''; ?>>
<a href="<?php echo \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 \Router::url('Event', 'list'); ?>"><i class="fa fa-fw fa-clock-o"></i> Évènements</a>
</li>
</ul>
</li>
<li <?php echo $page == 'users' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('User', 'list'); ?>"><i class="fa fa-fw fa-user"></i> Utilisateurs</a>
</li>
<?php if ($_SESSION['user']['admin']) { ?>
<li <?php echo $page == 'settings' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('Setting', 'show'); ?>"><i class="fa fa-fw fa-cogs"></i> Réglages</a>
</li>
<?php } ?>
</ul>
</div>
<!-- /.navbar-collapse -->
</nav>

3
templates/incs/phptojs.php Executable file
View file

@ -0,0 +1,3 @@
<script>
var HTTP_PWD = '<?php echo addslashes(HTTP_PWD); ?>';
</script>

85
templates/internalIncs/nav.php Executable file
View file

@ -0,0 +1,85 @@
<!-- 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 \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($email); ?> <b class="caret"></b></a>
<ul class="dropdown-menu">
<li>
<a href="<?php echo \Router::url('profile'); ?>"><i class="fa fa-fw fa-user"></i> Profil</a>
</li>
<li class="divider"></li>
<li>
<a href="<?php echo \Router::url('connect', '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 \Router::url('Dashboard', 'show'); ?>"><i class="fa fa-fw fa-dashboard"></i> Dashboard</a>
</li>
<li <?php echo $page == 'scheduleds' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('scheduleds'); ?>"><i class="fa fa-fw fa-envelope"></i> SMS</a>
</li>
<li <?php echo $page == 'discussions' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('discussions'); ?>"><i class="fa fa-fw fa-comments"></i> Discussions</a>
</li>
<li <?php echo $page == 'commands' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('Command', 'list'); ?>"><i class="fa fa-fw fa-terminal"></i> Commandes</a>
</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')) ? 'in' : ''; ?>">
<li <?php echo $page == 'contacts' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('contacts'); ?>"><i class="fa fa-fw fa-user"></i> Contacts</a>
</li>
<li <?php echo $page == 'groupes' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('groupes'); ?>"><i class="fa fa-fw fa-group"></i> Groupes</a>
</li>
</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('sendeds', 'receiveds', 'events', 'smsstop')) ? 'in' : ''; ?>">
<li <?php echo $page == 'sendeds' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('sendeds'); ?>"><i class="fa fa-fw fa-send"></i> SMS envoyés</a>
</li>
<li <?php echo $page == 'receiveds' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('receiveds'); ?>"><i class="fa fa-fw fa-download"></i> SMS reçus</a>
</li>
<li <?php echo $page == 'smsstop' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('smsstop'); ?>"><i class="fa fa-fw fa-ban"></i> SMS STOP</a>
</li>
<li <?php echo $page == 'events' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('events'); ?>"><i class="fa fa-fw fa-clock-o"></i> Évènements</a>
</li>
</ul>
</li>
<li <?php echo $page == 'users' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('users'); ?>"><i class="fa fa-fw fa-user"></i> Utilisateurs</a>
</li>
<?php if ($admin) { ?>
<li <?php echo $page == 'webhooks' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('webhooks'); ?>"><i class="fa fa-fw fa-plug"></i> Webhooks</a>
</li>
<li <?php echo $page == 'settings' ? 'class="active"' : ''; ?>>
<a href="<?php echo \Router::url('settings'); ?>"><i class="fa fa-fw fa-cogs"></i> Réglages</a>
</li>
<?php } ?>
</ul>
</div>
<!-- /.navbar-collapse -->
</nav>

126
templates/received/list.php Executable file
View file

@ -0,0 +1,126 @@
<?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 \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>Numéro</th>
<th>Message</th>
<th>Date</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><?php $this->s($received['send_by']); ?></td>
<td><?php $this->s($received['content']); ?></td>
<td><?php $this->s($received['at']); ?></td>
<td><?php echo $received['is_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" type="submit" formaction="<?php echo \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 \Router::url('receiveds', 'showAll', array('page' => $page - 1)); ?>"><span aria-hidden="true">&larr;</span> Précèdents</a></li>
<?php
}
$numero_page = 'Page : ' . ($page + 1);
$this->s($numero_page);
if ($limit == $nb_results)
{
?>
<li><a href="<?php echo \Router::url('receiveds', 'showAll', array('page' => $page + 1)); ?>">Suivants <span aria-hidden="true">&rarr;</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 target = jQuery(this).parents('.action-dropdown').attr('target');
var url = jQuery(this).attr('href');
jQuery(target).find('input:checked').each(function ()
{
url += '/' + jQuery(this).val();
});
window.location = url;
});
});
</script>
<?php
$this->render('incs/footer');

163
templates/scheduled/add.php Executable file
View file

@ -0,0 +1,163 @@
<?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 \Router::url('Dashboard', 'list'); ?>">Dashboard</a>
</li>
<li>
<i class="fa fa-calendar"></i> <a href="<?php echo \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-calendar fa-fw"></i> Ajout d'un SMS programmé</h3>
</div>
<div class="panel-body">
<form action="<?php echo \Router::url('Scheduled', 'create', ['csrf' => $_SESSION['csrf']]);?>" method="POST">
<div class="form-group">
<label>Texte du SMS</label>
<textarea name="content" class="form-control" required></textarea>
</div>
<div class="form-group">
<label>Date d'envoi du SMS</label>
<input name="date" class="form-control form-datetime" 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>
<input name="numbers[]" type="hidden" class="phone-hidden-input">
</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[]"/>
</div>
<div class="form-group">
<label>Groupes cibles</label>
<input class="add-groupes form-control" name="groupes[]"/>
</div>
<?php if (RASPISMS_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 /> Oui
<input name="admin" type="radio" value="0" required checked/> Non
</div>
</div>
<?php } ?>
<a class="btn btn-danger" href="<?php echo \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>
<script>
jQuery(document).ready(function()
{
jQuery('.add-contacts').each(function()
{
jQuery(this).magicSuggest({
data: '<?php echo \Router::url('Contact', 'json_list'); ?>',
valueField: 'id',
displayField: 'name',
});
});
jQuery('.add-groupes').each(function()
{
jQuery(this).magicSuggest({
data: '<?php echo \Router::url('Groupe', 'json_list'); ?>',
valueField: 'id',
displayField: 'name',
});
});
jQuery('.phone-international-input').intlTelInput({
defaultCountry: '<?php $this->s(RASPISMS_SETTINGS_DEFAULT_PHONE_COUNTRY); ?>',
preferredCountries: <?php $this->s(json_encode(explode(',', RASPISMS_SETTINGS_PREFERRED_PHONE_COUNTRY)), false, false); ?>,
nationalMode: true,
utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
});
jQuery('body').on('click', '.remove-scheduleds-number', function(e)
{
jQuery(this).parents('.scheduleds-number-groupe').remove();
});
jQuery('body').on('click', '.add-number-button', function(e)
{
var newScheduledsNumberGroupe = '' +
'<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>' +
'<input name="numbers[]" type="hidden" class="phone-hidden-input">' +
'</div>';
jQuery(this).before(newScheduledsNumberGroupe);
jQuery('.phone-international-input').intlTelInput({
defaultCountry: '<?php $this->s(RASPISMS_SETTINGS_DEFAULT_PHONE_COUNTRY); ?>',
preferredCountries: <?php $this->s(json_encode(explode(',', RASPISMS_SETTINGS_PREFERRED_PHONE_COUNTRY)), false, false); ?>,
nationalMode: true,
utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
});
});
jQuery('.form-datetime').datetimepicker(
{
format: 'yyyy-mm-dd hh:ii:ss',
autoclose: true,
minuteStep: 1,
language: 'fr'
});
jQuery('form').on('submit', function(e)
{
e.preventDefault();
jQuery('.phone-international-input').each(function(key, value)
{
var container = jQuery(this).parents('.scheduleds-number-groupe');
container.find('.phone-hidden-input').val(jQuery(this).intlTelInput("getNumber"));
});
this.submit();
});
});
</script>
<?php
$this->render('incs/footer');

179
templates/scheduled/edit.php Executable file
View file

@ -0,0 +1,179 @@
<?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 \Router::url('Dashboard', 'show'); ?>">Dashboard</a>
</li>
<li>
<i class="fa fa-calendar"></i> <a href="<?php echo \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 \Router::url('Scheduled', 'update', ['csrf' => $_SESSION['csrf']]);?>" method="POST">
<?php foreach ($scheduleds as $scheduled) { ?>
<div class="form-group">
<label>Texte du SMS</label>
<textarea name="scheduleds[<?php $this->s($scheduled['id']); ?>][content]" class="form-control" required><?php $this->s($scheduled['content'], true); ?></textarea>
</div>
<div class="form-group">
<label>Date d'envoi du SMS</label>
<input name="scheduleds[<?php $this->s($scheduled['id']); ?>][date]" class="form-control form-datetime" 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); ?>">
<span class="remove-scheduleds-number fa fa-times"></span>
<input name="scheduleds[<?php $this->s($scheduled['id']); ?>][numbers][]" type="hidden" class="phone-hidden-input">
</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']); ?>][groupes][]" value="<?php $this->s(json_encode($scheduled['groupes'])); ?>" />
</div>
<?php if (RASPISMS_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 } ?>
<hr/>
<?php
}
?>
<a class="btn btn-danger" href="<?php echo \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>
<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 \Router::url('Contact', 'json_list'); ?>',
valueField: 'id',
displayField: 'name',
});
});
jQuery('.add-groupes').each(function()
{
jQuery(this).magicSuggest({
data: '<?php echo \Router::url('Groupe', 'json_list'); ?>',
valueField: 'id',
displayField: 'name',
});
});
jQuery('.phone-international-input').intlTelInput({
defaultCountry: '<?php $this->s(RASPISMS_SETTINGS_DEFAULT_PHONE_COUNTRY); ?>',
preferredCountries: <?php $this->s(json_encode(explode(',', RASPISMS_SETTINGS_PREFERRED_PHONE_COUNTRY)), false, false); ?>,
nationalMode: true,
utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
});
jQuery('body').on('click', '.remove-scheduleds-number', function(e)
{
jQuery(this).parents('.scheduleds-number-groupe').remove();
});
jQuery('body').on('click', '.add-number-button', function(e)
{
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" >' +
'<span class="remove-scheduleds-number fa fa-times"></span>' +
'<input name="scheduleds[' + scheduledId + '][numbers][]" type="hidden" class="phone-hidden-input">' +
'</div>';
jQuery(this).before(newScheduledsNumberGroupe);
jQuery('.phone-international-input').intlTelInput({
defaultCountry: '<?php $this->s(RASPISMS_SETTINGS_DEFAULT_PHONE_COUNTRY); ?>',
preferredCountries: <?php $this->s(json_encode(explode(',', RASPISMS_SETTINGS_PREFERRED_PHONE_COUNTRY)), false, false); ?>,
nationalMode: true,
utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
});
});
jQuery('.form-datetime').datetimepicker(
{
format: 'yyyy-mm-dd hh:ii:ss',
autoclose: true,
minuteStep: 1,
language: 'fr'
});
jQuery('form').on('submit', function(e)
{
e.preventDefault();
jQuery('.phone-international-input').each(function(key, value)
{
var container = jQuery(this).parents('.scheduleds-number-groupe');
container.find('.phone-hidden-input').val(jQuery(this).intlTelInput("getNumber"));
});
this.submit();
});
});
</script>
<?php
$this->render('incs/footer');

106
templates/scheduled/list.php Executable file
View file

@ -0,0 +1,106 @@
<?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 \Router::url('Dashboard', 'list'); ?>">Dashboard</a>
</li>
<li class="active">
<i class="fa fa-calendar"></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-calendar fa-fw"></i> Liste des SMS programmés</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['content']); ?></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 \Router::url('Scheduled', 'add'); ?>"><span class="fa fa-plus"></span> Ajouter un SMS programmé</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 \Router::url('Scheduled', 'edit'); ?>"><span class="fa fa-edit"></span> Modifier</button>
<button class="btn btn-default" type="submit" formaction="<?php echo \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 target = jQuery(this).parents('.action-dropdown').attr('target');
var url = jQuery(this).attr('href');
jQuery(target).find('input:checked').each(function ()
{
url += '/' + jQuery(this).val();
});
window.location = url;
});
});
</script>
<?php
$this->render('incs/footer');

116
templates/sended/list.php Executable file
View file

@ -0,0 +1,116 @@
<?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 \Router::url('Dashboard', 'show'); ?>">Dashboard</a>
</li>
<li class="active">
<i class="fa fa-send"></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-send 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>Numéro</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><?php $this->s($sended['target']); ?></td>
<td><?php $this->s($sended['content']); ?></td>
<td><?php $this->s($sended['at']); ?></td>
<td><?php $this->s($sended['delivered'] ? 'Délivré' : ($sended['failed'] ? 'Échoué' : 'Inconnu')); ?></td>
<?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" type="submit" formaction="<?php echo \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 \Router::url('Sended', 'list', array('page' => $page - 1)); ?>"><span aria-hidden="true">&larr;</span> Précèdents</a></li>
<?php } ?>
Page : <?php $this->s($page + 1); ?>
<?php if ($limit == $nb_results) { ?>
<li><a href="<?php echo \Router::url('sendeds', 'showAll', array('page' => $page + 1)); ?>">Suivants <span aria-hidden="true">&rarr;</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 target = jQuery(this).parents('.action-dropdown').attr('target');
var url = jQuery(this).attr('href');
jQuery(target).find('input:checked').each(function ()
{
url += '/' + jQuery(this).val();
});
window.location = url;
});
});
</script>
<?php
$this->render('incs/footer');

192
templates/setting/show.php Executable file
View file

@ -0,0 +1,192 @@
<?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 \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 \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 RASPISMS_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-link fa-fw"></i> Détection des URL dans les discussions</h4>
</div>
<div class="panel-body">
<form action="<?php echo \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 RASPISMS_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 \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(RASPISMS_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-music fa-fw"></i> Son sur reception d'un SMS</h4>
</div>
<div class="panel-body">
<form action="<?php echo \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 RASPISMS_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>
<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 \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 RASPISMS_SETTINGS_SMSSTOPS ? '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 \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(RASPISMS_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 \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 RASPISMS_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>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
jQuery(document).ready(function ()
{
jQuery('.action-dropdown a').on('click', function (e)
{
e.preventDefault();
var target = jQuery(this).parents('.action-dropdown').attr('target');
var url = jQuery(this).attr('href');
jQuery(target).find('input:checked').each(function ()
{
url += '/' + jQuery(this).val();
});
window.location = url;
});
});
</script>
<?php
$this->render('incs/footer');

120
templates/smsstop/list.php Executable file
View file

@ -0,0 +1,120 @@
<?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 \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 $this->s($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" type="submit" formaction="<?php echo \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 \Router::url('smsstop', 'showAll', array('page' => $page - 1)); ?>"><span aria-hidden="true">&larr;</span> Précèdents</a></li>
<?php
}
$numero_page = 'Page : ' . ($page + 1);
$this->s($numero_page);
if ($limit == $nb_results)
{
?>
<li><a href="<?php echo \Router::url('smsstop', 'showAll', array('page' => $page + 1)); ?>">Suivants <span aria-hidden="true">&rarr;</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 target = jQuery(this).parents('.action-dropdown').attr('target');
var url = jQuery(this).attr('href');
jQuery(target).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
View 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 \Router::url('Dashboard', 'show'); ?>">Dashboard</a>
</li>
<li>
<i class="fa fa-user"></i> <a href="<?php echo \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 \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 \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');

100
templates/user/list.php Executable file
View file

@ -0,0 +1,100 @@
<?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 \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 \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 \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 target = jQuery(this).parents('.action-dropdown').attr('target');
var url = jQuery(this).attr('href');
jQuery(target).find('input:checked').each(function ()
{
url += '/' + jQuery(this).val();
});
window.location = url;
});
});
</script>
<?php
$this->render('incs/footer');

66
templates/webhook/add.php Executable file
View file

@ -0,0 +1,66 @@
<?php
//Template dashboard
$incs = new internalIncs();
$incs->head('Webhook - Add');
?>
<div id="wrapper">
<?php
$incs->nav('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 \Router::url('Dashboard', 'show'); ?>">Dashboard</a>
</li>
<li>
<i class="fa fa-plug"></i> <a href="<?php echo \Router::url('webhooks'); ?>">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 \Router::url('webhooks', 'create', [$_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>
<?php foreach (internalConstants::WEBHOOK_TYPE as $key => $value) { ?>
<option value="<?php $this->s($value); ?>"><?php $this->s($key); ?></option>
<?php } ?>
</select>
</div>
<a class="btn btn-danger" href="<?php echo \Router::url('webhooks'); ?>">Annuler</a>
<input type="submit" class="btn btn-success" value="Enregistrer le webhook" />
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?php
$incs->footer();

74
templates/webhook/edit.php Executable file
View file

@ -0,0 +1,74 @@
<?php
//Template dashboard
$incs = new internalIncs();
$incs->head('Webhook - Edit');
?>
<div id="wrapper">
<?php
$incs->nav('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 \Router::url('Dashboard', 'show'); ?>">Dashboard</a>
</li>
<li>
<i class="fa fa-plug"></i> <a href="<?php echo \Router::url('webhooks'); ?>">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 \Router::url('webhooks', 'update', [$_SESSION['csrf']]);?>" method="POST">
<?php
foreach ($webhooks as $webhook)
{
?>
<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>
<?php foreach (internalConstants::WEBHOOK_TYPE as $key => $value) { ?>
<option <?php echo ($webhook['type'] == $value ? 'selected' : ''); ?> value="<?php $this->s($value); ?>"><?php $this->s($key); ?></option>
<?php } ?>
</select>
</div>
<hr/>
<?php
}
?>
<a class="btn btn-danger" href="<?php echo \Router::url('webhooks'); ?>">Annuler</a>
<input type="submit" class="btn btn-success" value="Enregistrer la webhook" />
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?php
$incs->footer();

103
templates/webhook/list.php Executable file
View file

@ -0,0 +1,103 @@
<?php
//Template dashboard
$incs = new internalIncs();
$incs->head('Webhooks - Show All');
?>
<div id="wrapper">
<?php
$incs->nav('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 \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">
<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 echo array_search($webhook['type'], internalConstants::WEBHOOK_TYPE); ?></td>
<td><input type="checkbox" value="<?php $this->s($webhook['id']); ?>"></td>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
<div>
<div class="col-xs-6 no-padding">
<a class="btn btn-success" href="<?php echo \Router::url('webhooks', 'add'); ?>"><span class="fa fa-plus"></span> Ajouter un webhook</a>
</div>
<div class="text-right col-xs-6 no-padding">
<strong>Action pour la séléction :</strong>
<div class="btn-groupe action-dropdown" target="#table-webhooks">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">Action pour la sélection <span class="caret"></span></button>
<ul class="dropdown-menu pull-right" role="menu">
<li><a href="<?php echo \Router::url('webhooks', 'edit', [$_SESSION['csrf']]); ?>"><span class="fa fa-edit"></span> Modifier</a></li>
<li><a href="<?php echo \Router::url('webhooks', 'delete', [$_SESSION['csrf']]); ?>"><span class="fa fa-trash-o"></span> Supprimer</a></li>
</ul>
</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 target = jQuery(this).parents('.action-dropdown').attr('target');
var url = jQuery(this).attr('href');
jQuery(target).find('input:checked').each(function ()
{
url += '/' + jQuery(this).val();
});
window.location = url;
});
});
</script>
<?php
$incs->footer();