Initial Commit

This commit is contained in:
GiacomoHome
2021-09-17 12:41:45 +02:00
commit 9001e4656e
570 changed files with 31013 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
<?php
/**
* Description of Bootstrap
*/
class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{
public function _init()
{
}
public function _initPersonalRouter(){
$router= Zend_Controller_Front::getInstance()->getRouter();
$router->addRoute(
'admin',
new Zend_Controller_Router_Route('admin/:controller/:action',
array(
'module'=>'admin',
'controller'=>'index',
'action'=>'index'
)
)
);
}
}
@@ -0,0 +1,64 @@
<?php
class Admin_ErrorController extends Zend_Controller_Action
{
public function errorAction()
{
$this->view->menuitem = 'home';
$this->view->pageName = 'Ops, si è verificato un errore';
$errors = $this->_getParam('error_handler');
if (!$errors || !$errors instanceof ArrayObject) {
$this->view->message = 'You have reached the error page';
return;
}
switch ($errors->type) {
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
// 404 error -- controller or action not found
$this->getResponse()->setHttpResponseCode(404);
$priority = Zend_Log::NOTICE;
$this->view->error_code = '404';
$this->view->message = 'La pagina richiesta non è stata trovata';
break;
default:
// application error
$this->getResponse()->setHttpResponseCode(500);
$priority = Zend_Log::CRIT;
$this->view->error_code = '500';
$this->view->message = 'Errore Applicazione';
break;
}
// Log exception, if logger available
if ($log = $this->getLog()) {
$log->log($this->view->message, $priority, $errors->exception);
$log->log('Request Parameters', $priority, $errors->request->getParams());
}
// conditionally display exceptions
if ($this->getInvokeArg('displayExceptions') == true) {
$this->view->exception = $errors->exception;
}
print_r($errors->exception->getMessage());
$this->view->request = $errors->request;
}
public function getLog()
{
$bootstrap = $this->getInvokeArg('bootstrap');
if (!$bootstrap->hasResource('Log')) {
return false;
}
$log = $bootstrap->getResource('Log');
return $log;
}
}
@@ -0,0 +1,280 @@
<?php
class Admin_IndexController extends App_Controller_Sections_Section
{
public $_configs;
protected Application_Model_Generic $_genericModel;
protected $_authService;
protected $_ipManager;
protected $_parametriSito;
protected $_datiAziendali;
protected $_VariabiliSito;
public $_MENUITEM;
public $_PAGETITLE;
public $_ICONTITLE;
public $_SECONDLEVEL;
public $_SECONDLEVEL_ACTION;
public $_SIDEBAR_COLLAPSED;
public $_EVENTLOADER;
public $_ANGULARJS_MODULE_NAME;
public function init()
{
$this->_helper->layout->setLayout('admin');
$this->_authService = new App_Service_Auth();
$this->_genericModel = new Application_Model_Generic();
$this->_configs = new App_Service_ConfigManager();
$this->_ipManager = new App_Service_IpManager();
$this->_parametriSito = new App_Service_JsonConfiguration('parametri_sito');
$this->_datiAziendali = new App_Service_JsonConfiguration('dati_aziendali');
$this->_VariabiliSito = new App_Service_VariabiliSito();
$this->_MENUITEM = 'dashboard';
$this->_PAGETITLE = 'DashBoard';
$this->_ICONTITLE = 'fa-dashboard';
$this->_SECONDLEVEL = null;
$this->_SECONDLEVEL_ACTION = null;
$this->_EVENTLOADER = FALSE;
$this->_ANGULARJS_MODULE_NAME = false;
}
public function preDispatch()
{
$this->_SIDEBAR_COLLAPSED = boolval($_COOKIE['ui_sidebar_collapsed']) || false;
$this->view->enableTestSdk = $this->_ipManager->controllaAbilitazioneTestSdk();
}
public function postDispatch()
{
$this->view->controller = $this->getRequest()->getControllerName();
$this->view->action = $this->getRequest()->getActionName();
$this->view->menu = $this->_MENUITEM;
$this->view->pageTitle = $this->_PAGETITLE;
$this->view->iconTitle = $this->_ICONTITLE;
$this->view->secondLevel = $this->_SECONDLEVEL;
$this->view->secondLevelAction = $this->_SECONDLEVEL_ACTION;
$this->view->eventLoader = $this->_EVENTLOADER;
$this->view->sideBarCollapsed = $this->_SIDEBAR_COLLAPSED;
$this->view->angularModuleName = $this->_ANGULARJS_MODULE_NAME;
$this->view->parametriSito = $this->_parametriSito->getAllParams();
$this->view->datiAziendali = $this->_datiAziendali->getAllParams();
}
public function logoutAction()
{
$this->_authService->clear();
return $this->_helper->redirector('index', 'index', 'default');
}
public function indexAction()
{
$this->_EVENTLOADER = 'dashboard';
// $this->_ANGULARJS_MODULE_NAME = 'dashboard';
$this->render('dashboard');
}
public function infoAction(){
$this->_helper->getHelper('layout')->disableLayout();
$this->_helper->viewRenderer->setNoRender();
phpinfo();
}
/*===============================================================================================
* =========================== GESTIONE SETTINGS ============================
* =============================================================================================*/
public function settingsAction()
{
$this->_MENUITEM = "settings";
$this->_PAGETITLE = 'Impostazioni';
$this->_ICONTITLE = 'fa-cogs';
$this->_EVENTLOADER = 'settings';
$this->view->assign($this->_configs->getAllParam());
$this->view->assign($this->_parametriSito->getAllParams());
$this->view->tabname = (!$_COOKIE['settings_tabname']) ? 'generico' : $_COOKIE['settings_tabname'];
$this->view->email_templates = $this->_genericModel->getList('EmailTemplate', null, null);
$this->view->popover_default_param_content = $this->getDefaultParamsPopoverTemplate();
}
public function savesettingsAction()
{
if ($this->getRequest()->isXmlHttpRequest()) {
$this->_helper->getHelper('layout')->disableLayout();
$this->_helper->viewRenderer->setNoRender();
$params = $this->getAllParams();
unset($params['controller']);
unset($params['module']);
unset($params['action']);
unset($params['section']);
$response = array();
switch ($this->_getParam('section')) {
case 'generico':
$params['interrutore_sito'] = (isset($params['interrutore_sito'])) ? 'on' : 'off';
$params['interrutore_services'] = (isset($params['interrutore_services'])) ? 'on' : 'off';
$params['interrutore_webservices_v1'] = (isset($params['interrutore_webservices_v1'])) ? 'on' : 'off';
$response = $this->saveConfigParams($params);
break;
case 'sito':
foreach ($params as $key => $value) {
$this->_parametriSito->set($key, $value);
$response[$key] = 'OK';
}
break;
case 'test':
$params['interrutore_testdb'] = (isset($params['interrutore_testdb'])) ? 'on' : 'off';
$params['interrutore_paypal_test'] = (isset($params['interrutore_paypal_test'])) ? 'on' : 'off';
$params['interrutore_stripe_test'] = (isset($params['interrutore_stripe_test'])) ? 'on' : 'off';
$response = $this->saveConfigParams($params);
break;
case 'accesso':
$response = $this->saveConfigParams($params);
break;
}
if ($this->check_has_error_value($response)) {
$response['stato'] = 'success';
} else {
$response['stato'] = 'error';
}
$response = Zend_Json::encode($response);
$this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody($response);
}
}
public function savenewpasswordAction()
{
if ($this->getRequest()->isXmlHttpRequest()) {
$this->_helper->getHelper('layout')->disableLayout();
$this->_helper->viewRenderer->setNoRender();
$params = $this->getAllParams();
unset($params['controller']);
unset($params['module']);
unset($params['action']);
$response = array();
if (!$params['vecchia_pwd']) {
return $this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody(Zend_Json::encode(array('status' => false, 'message' => 'Inserire la vecchia password')));
}
if (!$params['nuova_pwd']) {
return $this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody(Zend_Json::encode(array('status' => false, 'message' => 'Inserire la nuova password')));
}
if (!$params['nuova_pwd2']) {
return $this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody(Zend_Json::encode(array('status' => false, 'message' => 'Ripeti la nuova password')));
}
if (strtolower($params['nuova_pwd']) == strtolower($params['vecchia_pwd'])) {
return $this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody(Zend_Json::encode(array('status' => false, 'message' => 'La nuova password non può essere uguale a quella corrente')));
}
if (strtolower($params['nuova_pwd']) != strtolower($params['nuova_pwd2'])) {
return $this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody(Zend_Json::encode(array('status' => false, 'message' => 'Le password non coincidono')));
}
$admin = $this->_genericModel->getByColumnName('Users', 'username', 'admin');
//Confronto le password
$passwordSalt = Zend_Registry::get('ENVIROMENTS')->get('password_salt');
if (md5($passwordSalt . $params['vecchia_pwd']) != $admin['password']) {
return $this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody(Zend_Json::encode(array('status' => false, 'message' => 'La vecchia password è errata', 'resetForm' => true)));
}
//Salvo la nuova password
$this->_genericModel->update('Users', $admin['id'], array('password' => md5($passwordSalt . $params['nuova_pwd'])));
$this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody(Zend_Json::encode(array('status' => true)));
}
}
private function checkNullValue($value)
{
return (!$value || strtolower($value) === 'null') ? null : $value;
}
/*===============================================================================================
* =========================== FUNZIONI PRIVATE DEL CONTROLLER =========================
* =============================================================================================*/
public function getMainModel()
{
return $this->_genericModel;
}
protected function saveConfigParams($params)
{
$response = array();
foreach ($params as $key => $value) {
$valori_non_null = array();
if (!$value && in_array($key, $valori_non_null)) {
$response[$key] = 'Errore';
} else {
$this->_configs->set($key, $value);
$response[$key] = 'OK';
}
}
$this->_configs->write();
return $response;
}
/**
* Scorre l'array se trova un valore riconosciuto come errore restituisce false altrimenti true
* @param array $array
* @return boolean
*/
protected function check_has_error_value($array)
{
foreach ($array as $key => $value) {
if ($value == 'Error' || $value == 'Errore' || $value == '0') {
return FALSE;
}
}
return true;
}
/**
* Funzione che genera le indicazioni dei valori dei parametri di default leggendoli dal file di configurazione
* @return string
*/
public function getDefaultParamsPopoverTemplate()
{
$html = '<div><small class=&quot;text-danger&quot;>Inserire il nome variabile senza gli apici</small><br>';
//$html .= '<table class=&quot;table table-bordered table-striped table-popover&quot; ><thead><tr><th>Variabile</th><th>Valore</th></tr></thead><tbody>';
$params = $this->_datiAziendali->getAllParams();
foreach ($params as $key => $val) {
$html .= "<b>%default_" . $key . "%<br> - <small>" . $val . "</small></br>";
}
$html .= '</div>';
return $html;
}
} //Close Class
@@ -0,0 +1,36 @@
<div class="row">
<div class="col-md-12 col-sm-12">
<div class="not-found-404">
<?php if (isset($this->error_code)): ?>
<h2>
<?= $this->error_code; ?>
<i class="iscon-remove-sign skin-text"></i>
</h2>
<?php endif; ?>
<h5>Clicca <a class="text-center" href="<?= $this->url(array(),'default',true); ?>">qui</a> per tornare alla home del sito.</h5>
<?php if (isset($this->exception)): ?>
<h5>Exception information:</h5>
<h5>
<b>Message:</b> <?php echo $this->exception->getMessage() ?>
</h5>
<h3>Stack trace:</h3>
<pre class="text-left"><?php echo $this->exception->getTraceAsString() ?></pre>
<h3>Request Parameters:</h3>
<pre class="text-left"><?php echo $this->escape(var_export($this->request->getParams(), true)) ?></pre>
<?php endif ?>
</div>
</div>
</div>
@@ -0,0 +1,47 @@
<?php if ($this->pageCount > 1): ?>
<ul class="pagination pagination-sm float-right">
<!-- Link alla prima pagina -->
<?php if (isset($this->previous)): ?>
<li class="page-item"><a class="page-link" href="<?= $this -> url(array('page' => $this -> first,'count' => $this -> count,'action'=>$this->action, 'module'=>$this->moduleName),'filterpager',true); ?>"><i class="fa fa-angle-double-left"></i></a>
<?php else: ?>
<li class="page-item disabled"><a class="page-link" href="#"><i class="fa fa-angle-double-left"></i></a></li>
<?php endif; ?>
<!-- Link alla pagina precedente -->
<?php if (isset($this->previous)): ?>
<li class="page-item"><a class="page-link" href="<?= $this -> url(array('page' => $this -> previous,'count' => $this -> count,'action'=>$this->action, 'module'=>$this->moduleName),'filterpager',true); ?>"><i class="fa fa-angle-left"></i></a><li>
<?php else: ?>
<?php endif; ?>
<!-- Link pagina numerata -->
<?php foreach ($this->pagesInRange as $page): ?>
<?php if ($page != $this->current): ?>
<li class="page-item" style="font-size: 10px;"><a class="page-link" href="<?php echo $this -> url(array('page' => $page,'count' => $this -> count,'action'=>$this->action, 'module'=>$this->moduleName),'filterpager',false); ?>">
<?php echo $page; ?>
</a></li>
<?php else: ?>
<li class="active page-item" style="font-size: 10px;"><a class="page-link" href="<?php echo $this -> url(array('page' => $page,'count' => $this -> count,'action'=>$this->action, 'module'=>$this->moduleName),'filterpager',false); ?>"><?php echo $page; ?></a></li>
<?php endif; ?>
<?php endforeach; ?>
<!-- Link alla pagina successiva -->
<?php if (isset($this->next)): ?>
<li class="page-item"><a class="page-link" href="<?= $this -> url(array('page' => $this -> next,'count' => $this -> count,'action'=>$this->action, 'module'=>$this->moduleName),'filterpager',false); ?>"><i class="fa fa-angle-right"></i></a></li>
<?php else: ?>
<?php endif; ?>
<!-- Link all'ultima pagina -->
<?php if (isset($this->next)): ?>
<li class="page-item" style="margin-right:10px;"><a class="page-link" href="<?= $this -> url(array('page' => $this -> last,'count' => $this -> count,'action'=>$this->action),'filterpager',false); ?>"><i class="fa fa-angle-double-right"></i></a></li>
<?php else: ?>
<li class="page-item disabled"><a class="page-link" href="#"><i class="fa fa-angle-double-right"></i></a></li>
<?php endif; ?>
<div class="text-counter">
dal: <?php echo $this -> firstItemNumber; ?> - <?= $this -> lastItemNumber; ?> di <?= $this -> totalItemCount; ?>
</div>
</ul>
<?php endif; ?>
@@ -0,0 +1,20 @@
<div ng-controller="DashboardController">
<div class="content-header">
<h1>
Gestione Spiaggia
<small class="text-muted">Version <?= $this->version; ?></small>
</h1>
<ol class="breadcrumb top0">
<li class="breadcrumb-item"><a href="#"><i class="fa fa-tachometer-alt fa-fw"></i> Home</a></li>
<li class="breadcrumb-item active">Dashboard</li>
</ol>
</div>
<section class="content">
</section>
</div>
@@ -0,0 +1,125 @@
<div class="modal fade" id="modal" data-form="modalForm" tabindex="-1" data-backdrop="false"
role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div id="modal-loader" class="overlay d-none justify-content-center align-items-center">
<i class="fas fa-2x fa-sync fa-spin"></i>
</div>
<div class="modal-header">
<h5 class="modal-title flot-left" id="myModalLabel"><i
class="fa fa-fw <?= ($this->iconTitle) ? $this->iconTitle : 'fa-pencil'; ?> modal_icon"></i>
Email Template</h5>
<button id="close-modal" type="button" class="close float-right" data-dismiss="modal"
aria-hidden="true">&times;
</button>
</div>
<div class="modal-body pdb-0">
<form id="modalForm" name="modalForm" class="compact-form no-border-radius"
action="<?= $this->url(array('controller' => 'index', 'action' => 'salva' . $this->resourceName), $this->moduleName, true); ?>"
data-get="<?= $this->url(array('controller' => 'index', 'action' => 'get' . $this->resourceName), $this->moduleName, true); ?>"
data-delete="<?= $this->url(array('controller' => 'index', 'action' => 'delete' . $this->resourceName, 'id' => $this->id), $this->moduleName, true); ?>"
method="post" role="form">
<input type="hidden" value="" class="form-control" id="id" name="id" form="modalForm" required>
<div class="row">
<div class="col-md-12">
<div id="ErrorDescription" class="alert alert-warning alert-sm d-none"></div>
</div>
<div class="col-12">
<div id="Codice" class="form-group row">
<label for="Codice" class="col-sm-2 col-form-label">Codice</label>
<div class="col-sm-10">
<input type="text" value="" class="form-control" id="Codice" placeholder="" name="Codice">
<!-- Contenitore per la descrizione degli errori -->
<div id="input-error" class="label label-danger hidden"></div>
</div>
</div>
</div>
<div class="col-12">
<div id="Nome" class="form-group row">
<label for="Nome" class="col-sm-2 col-form-label">Nome</label>
<div class="col-sm-10">
<input type="text" value="" class="form-control" id="Nome" placeholder="" name="Nome">
<!-- Contenitore per la descrizione degli errori -->
<div id="input-error" class="label label-danger hidden"></div>
</div>
</div>
</div>
<div class="col-12">
<div id="Tipologia" class="form-group row">
<label for="Tipologia" class="col-sm-2 col-form-label">Tipologia</label>
<div class="col-sm-10">
<select id="Tipologia" name="Tipologia" class="form-control">
<option value="">Scegli...</option>
<option value="HTML">Contenuto HTML</option>
<option value="TEXT">Contenuto solo testo</option>
</select>
<!-- Contenitore per la descrizione degli errori -->
<div id="input-error" class="label label-danger hidden"></div>
</div>
</div>
</div>
<div class="col-12">
<div id="Footer" class="form-group row">
<label for="Footer" class="col-sm-2 col-form-label">Aggiungi footer:</label>
<div class="col-sm-10">
<select id="Footer" name="Footer" class="form-control">
<option value="">Scegli...</option>
<option value="1">Si</option>
<option value="0">No</option>
</select>
<!-- Contenitore per la descrizione degli errori -->
<div id="input-error" class="label label-danger hidden"></div>
</div>
</div>
</div>
<div class="col-12">
<div id="Oggetto" class="form-group row">
<label for="Oggetto" class="col-sm-2 col-form-label">Oggetto email:</label>
<div class="col-sm-10">
<input type="text" value="" class="form-control" id="Oggetto" placeholder=""
name="Oggetto">
<!-- Contenitore per la descrizione degli errori -->
<div id="input-error" class="label label-danger hidden"></div>
</div>
</div>
</div>
<div class="col-12">
<div id="Testo" class="form-group">
<textarea id="Testo" name="Testo" class="form-control summernote" rows="10"></textarea>
<!-- Contenitore per la descrizione degli errori -->
<div id="input-error" class="label label-danger hidden"></div>
</div>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" id="undo" class="btn bg-gray pull-left" data-dismiss="modal"><i
class="fa fa-times"></i>
Chiudi
</button>
<button type="button" id="save" op="insert" class="btn btn-brand"><i class="fa fa-save"></i>
Salva
</button>
</div>
</div>
</div>
</div>
@@ -0,0 +1,95 @@
<!-- Post Modal Form -->
<div class="modal fade" id="filterModal" data-form="filterForm" tabindex="-1" role="dialog"
aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="myModalLabel"><i class="fa fa-filter float-left modal_icon"></i>
Ricerca <?= ucfirst($this->resourceName); ?></h5>
<button id="close-modal" type="button" class="close float-right" data-dismiss="modal"
aria-hidden="true">&times;
</button>
</div>
<div class="modal-body">
<form id="filterForm" name="filterForm"
action="<?= $this->url(array('module' => $this->moduleName, 'controller' => 'index', 'action' => 'list' . $this->resourceName, 'count' => $this->count, 'order' => $this->order, 'tipoOrder' => $this->tipoOrder), 'default', true); ?>"
method="post" class="form" role="form">
<input type="hidden" value="" class="form-control" id="id" placeholder="" name="id" required>
<div class="row">
<div class="col-6">
<div id="Codice" class="form-group">
<div class="row">
<div class="col-md-4"><label>Codice:</label></div>
<div class="col-md-8">
<input type="text" id="Codice" name="Codice"
value="<?= $this->search_params['Codice']; ?>"
class="form-control"/>
</div>
<div id="input-error"
class="col-md-12 form-error hidden label label-danger text-right"></div>
</div>
</div>
</div>
<div class="col-6">
<div id="Nome" class="form-group">
<div class="row">
<div class="col-md-4 no-padding-right"><label title="">Nome:</label></div>
<div class="col-md-8">
<input type="text" id="Nome" name="Nome"
value="<?= $this->search_params['Nome']; ?>"
class="form-control"/>
</div>
<div id="input-error"
class="col-md-12 form-error hidden label label-danger text-right"></div>
</div>
</div>
</div>
<div class="clearfix"></div>
<div class="col-md-12">
<div id="Oggetto" class="form-group">
<div class="row">
<div class="col-md-2 no-padding-right"><label title="">Oggetto:</label></div>
<div class="col-md-10">
<input type="text" id="Oggetto" name="Oggetto"
value="<?= $this->search_params['Oggetto']; ?>"
class="form-control"/>
</div>
<div id="input-error"
class="col-md-12 form-error hidden label label-danger text-right"></div>
</div>
</div>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" id="resetFiltri" class="btn btn-warning"><i class="fa fa-eraser"></i>
Reset Filtri
</button>
<button type="button" id="undo" class="btn btn-danger" data-dismiss="modal"><i class="fa fa-times"></i>
Annulla
</button>
<button type="submit" id="filtra" form="filterForm" class="btn btn-success"><i class="fa fa-filter"></i>
Cerca
</button>
<input type="submit" form="filterForm" class="d-none">
</div>
</div>
</div>
</div>
@@ -0,0 +1,23 @@
<div class="col-12 col-md-4 no-padding-r-sm">
<input type="text" id="Codice_search" name="Codice"
value="<?= $this->search_params['Codice']; ?>"
class="form-control no-border-right-sm" placeholder="Codice"/>
</div>
<div class="col-12 col-md-6 no-padding-r-l-sm">
<input type="text" id="Nome_search" name="Nome" value="<?= $this->search_params['Nome']; ?>"
class="form-control no-border-r-l-sm" placeholder="Nome"/>
</div>
<div class="col-12 col-md-2 no-padding-l-sm">
<?php $totFilter = count($this->CleanFiltersParam($this->search_params)); ?>
<div class="btn-group">
<button type="submit" title="Cerca" class="btn btn-brand btn-flat"><i
class="fa fa-search fa-fw"></i></button>
<a href="<?= $this->url(array('module' => $this->moduleName, 'action' => 'list' . $this->resourceName, 'reset' => 'true'), 'default', true); ?>"
data-toggle="tooltip" data-container="body" data-placement="right"
title="Reset (Filtri attivi: <?= $totFilter; ?> )"
class="btn btn-brand btn-flat"
type="button"><i class="fa fa-times fa-fw"></i></a>
</div>
</div>
@@ -0,0 +1,170 @@
<div class="box box-no-border box-no-shadow pd10 mb-0">
<div class="box-header">
<div class="col-12">
<!--FORM DI RICERCA-->
<div class="float-left box-title search-left hidden-xs">
<form class="form-horizontal" id="searchForm" name="searchForm" method="post"
action="<?= $this->url(array('controller' => 'index', 'action' => 'list' . $this->resourceName), $this->moduleName, true); ?>">
<div class="row">
<?= $this->render("index/$this->resourceName/_searchBlock.phtml"); ?>
</div>
<input type="hidden" id="order" name="order" class="hidden" value="<?= $this->order; ?>"/>
<input type="hidden" id="tipoOrder" name="tipoOrder" class="hidden" value="<?= $this->tipoOrder; ?>"/>
</form>
</div>
<!--BLOCCO FUNZIONI LATO SINISTRA-->
<div class="float-right box-title search-right">
<div class="btn-group">
<?php if ($this->isActiveNewInsert): ?>
<button data-toggle="tooltip" title="Nuovo" id="new" class="btn btn-brand btn-flat" type="button"
data-target="#Modal" data-toggle="modal"><i class="fa fa-plus"></i></button>
<?php endif; ?>
<?php if ($this->isActiveFilterModal): ?>
<button data-toggle="tooltip" title="Filtra" id="filterData" class="btn btn-brand btn-flat"
type="button" data-target="#filterModal" data-toggle="modal">
<?php if ($totFilter > 0): ?>
<span class="badge bg-red"><?= $totFilter; ?></span>
<?php endif; ?>
<i class="fa fa-filter"></i>
</button>
<?php endif; ?>
<div class="dropdown">
<button class="btn btn-flat btn-brand dropdown-toggle" type="button" id="dropdownMenuButton"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="d-none-xs">Selezionati</span> <span class="caret"></span>
</button>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
<a id="delete_select" class="dropdown-item"
href="<?= $this->url(array('controller' => 'index', 'action' => 'deleteselect' . $this->resourceName), $this->moduleName, true); ?>">
<i class="fa fa-trash fa-fw"></i> Elimina</a>
</div>
</div>
</div>
</div>
<div class="clearfix"></div>
</div>
</div>
<!-- INIZIO TABELLA -->
<div class="box-body table-responsive table-wrapper">
<table class="table table-border table-striped flot-header">
<thead>
<?= $this->render("index/$this->resourceName/th.phtml") ?>
</thead>
<tbody id="tablebody">
<?php if (count($this->table) > 0): ?>
<?php foreach ($this->table as $key => $value): ?>
<?= $this->partial("index/$this->resourceName/td.phtml", $value) ?>
<?php endforeach; ?>
<?php else: ?>
<tr>
<?php if ($totFilter <= 0): ?>
<td id="norows" class="no-rows" colspan="5">
<i class="fa fa-exclamation-triangle"></i>
Nessun record presente
</td>
<?php else: ?>
<td id="norows" class="no-rows" colspan="5">
<i class="fa fa-exclamation-triangle"></i>
Nessun risultato trovato in base alla ricerca
</td>
<?php endif; ?>
</tr>
<?php endif; ?>
</tbody>
</table>
</div>
<div class="box-footer clearfix">
<div class="col-12">
<div class="row">
<!--FUNZIONE MULTIPLE-->
<div class="col-4 col-xs-12">
<div class="btn-group btn-group-sm float-left dropup d-none-xs dropdown-multifunction-down">
<button class="btn btn-default btn-flat" type="button">
Selezionati
</button>
<button class="btn btn-default btn-flat dropdown-toggle" data-toggle="dropdown" type="button">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu">
<a id="delete_select" class="dropdown-item"
href="<?= $this->url(array('controller' => 'index', 'action' => 'deleteselect' . $this->resourceName), $this->moduleName, true); ?>">
<i class="fa fa-trash fa-fw"></i> Elimina</a>
</div>
</div>
</div>
<div class="col-8 col-xs-12">
<!--PAGINATOR FOOTER-->
<?php if ($this->table instanceof Zend_Paginator): ?>
<?= $this->paginationControl($this->table, 'Jumping', 'index/_paginator.phtml', array('action' => $this->action, 'count' => $this->count, 'moduleName'=>$this->moduleName)); ?>
<?php endif; ?>
<div class="pagination-counter float-right">
<form name="paginationCounter"
action="<?= $this->url(array('controller' => 'index', 'action' => 'list' . $this->resourceName, 'page' => $this->page, 'count' => $this->count), $this->moduleName, false); ?>"
class="" method="post" role="form">
<div class="input-group input-group-sm">
<label class="text-right d-none-xs mb-1" for="count">
<?php if ($this->totFiltrati != $this->totElementi): ?>
<span>Filtrati <?= $this->totFiltrati ?> su <?= $this->totElementi; ?> totali </span>
<?php else: ?>
<span>Tot. <?= $this->totElementi; ?></span>
<?php endif; ?>
</label>
<input type="text" class="form-control"
id="count" aria-describedby="inputGroup-sizing-sm"
value="" placeholder="<?= $this->count; ?>" name="count"/>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<?php if ($this->isActiveModalDetail): ?>
<?= $this->render("index/$this->resourceName/_modal.phtml"); ?>
<?php endif; ?>
<?php if ($this->isActiveFilterModal): ?>
<?= $this->render("index/$this->resourceName/_modalFilter.phtml"); ?>
<?php endif; ?>
<?php if ($this->idDetail > 0): ?>
<script type="text/javascript">
$(document).ready(function () {
edit(<?= $this->idDetail; ?>);
});
</script>
<?php endif; ?>
@@ -0,0 +1,28 @@
<tr data-id="<?= $this->id ?>">
<td class="text-center"><input type="checkbox" value="<?= $this->id ?>" name="select-elements[]"
id="select-elements"></td>
<td>
<a href="#" id="editLink"><?= $this->Codice; ?></a>
</td>
<td>
<?= $this->Codice; ?>
</td>
<td>
<div class="text-center">
<button id="edit" class="btn btn-sm btn-brand btn-flat" type="button" data-toggle="tooltip"
data-container="body" title="Apri Scheda">
<span class="far fa-file fa-fw"></span>
</button>
<button id="delete" class="btn btn-sm bg-gray btn-flat" type="button" data-toggle="tooltip"
data-container="body" title="Elimina">
<span class="fa fa-trash fa-fw"></span>
</button>
</div>
</td>
</tr>
@@ -0,0 +1,17 @@
<tr>
<th style="width:60px;" class="text-center">
<div class="dropdown">
<button class="btn btn-default btn-sm dropdown-toggle dropdown-icon" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a id="select_all" class="dropdown-item" href="#"><i class="far fa-check-square fa-fw"></i> Tutti</a>
<a id="deselect_all" class="dropdown-item" href="#"><i class="far fa-square fa-fw"></i> Nessuno</a>
<a id="invert_all" class="dropdown-item" href="#"><i class="fa fa-check-square fa-fw"></i> Inverti</a>
</div>
</div>
</th>
<th data-ord="Codice" width="150px">Codice</th>
<th data-ord="Nome">Nome</th>
<th width="100px"></th>
</tr>
@@ -0,0 +1,59 @@
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<div class="card card-brand card-outline">
<div class="card-header p-2">
<ul class="nav nav-pills">
<li class="nav-item"><a class="nav-link setting-tab <?= ($this->tabname == 'generico') ? "active" : ""; ?>" href="#generico" data-toggle="tab"><i class="fa fa-wrench fa-1x"></i> Generale</a></li>
<li class="nav-item"><a class="nav-link setting-tab <?= ($this->tabname == 'sito') ? "active" : ""; ?>" href="#sito" data-toggle="tab"><i class="fa fa-code fa-1x"></i> Parametri Sito</a></li>
<li class="nav-item"><a class="nav-link setting-tab <?= ($this->tabname == 'accesso') ? "active" : ""; ?>" href="#accesso" data-toggle="tab"><i class="fa fa-fw fa-key"></i> Accesso</a></li>
<li class="nav-item"><a class="nav-link setting-tab <?= ($this->tabname == 'test') ? "active" : ""; ?>" href="#test" data-toggle="tab"><i class="fa fa-flask fa-1x"></i> Ambiente Test</a></li>
</ul>
</div>
<div class="card-body">
<div class="tab-content">
<div class="tab-pane <?= ($this->tabname == 'generico') ? 'active' : ''; ?>" id="generico">
<?= $this->render("index/settings_tabs/generali.phtml") ?>
</div>
<div class="tab-pane <?= ($this->tabname == 'sito') ? 'active' : ''; ?>" id="sito">
<?= $this->render("index/settings_tabs/sito.phtml") ?>
</div>
<div class="tab-pane <?= ($this->tabname == 'accesso') ? 'active' : ''; ?>" id="accesso">
<?= $this->render("index/settings_tabs/accesso.phtml") ?>
</div>
<div class="tab-pane <?= ($this->tabname == 'test') ? 'active' : ''; ?>" id="test">
<?= $this->render("index/settings_tabs/test.phtml") ?>
</div>
<!-- /.tab-pane -->
</div>
<!-- /.tab-content -->
</div><!-- /.card-body -->
<div class="card-footer">
<a href="<?= $this->url(array(), 'admin', true); ?>">
<button id="btn-annulla" class="btn btn-default mr-10" type="button"><i
class="fa fa-fw fa-times"></i> Indietro
</button>
</a>
<button class="btn btn-brand btn-save" type="button">
<i class="fa fa-fw fa-save"></i> Salva
</button>
</div>
</div>
<!-- /.nav-tabs-custom -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div><!-- /.container-fluid -->
</section>
@@ -0,0 +1,52 @@
<div class="panel panel-body">
<h4><i class="fa fa-asterisk fa-fw"></i> Password accesso amministratore</h4>
<div class="well no-shadow col-md-7">
<form name="password_form" id="password_form" method="post" autocomplete="off"
action="<?= $this->url(array('controller' => 'index', 'action' => 'savenewpassword'), 'admin', false); ?>">
<div class="form-group row" style="margin-top:10px;">
<label class="col-md-4 control-label">Password corrente</label>
<div class="col-md-8">
<input type="password" value="" form="password_form" class="form-control" autocomplete="off"
id="vecchia_pwd" placeholder="" name="vecchia_pwd">
</div>
<br><br>
<label class="col-md-4 control-label">Nuova Password</label>
<div class="col-md-8">
<input type="password" value="" class="form-control" form="password_form" autocomplete="off"
id="nuova_pwd" placeholder="" name="nuova_pwd">
</div>
<label class="col-md-4 mt-0 control-label">Ripeti Password</label>
<div class="col-md-8 mt-0">
<input type="password" value="" class="form-control border-top-white" form="password_form"
autocomplete="off"
id="nuova_pwd2" placeholder="" name="nuova_pwd2">
</div>
<div class="col-md-12">
<button id="btn-new-passoword" form="password_form"
class="mt-2 mb-0 btn btn-brand float-right"
type="button">
<i class="fa fa-fw fa-check"></i> Reimposta Password
</button>
</div>
</div>
</form>
</div>
<form id="settingsAccesso" name="settingsAccesso"
action="<?= $this->url(array('controller' => 'index', 'action' => 'savesettings'), 'admin', false); ?>"
method="post" class="form-body">
<input type="hidden" id="section" name="section" value="accesso">
</form>
</div>
@@ -0,0 +1,150 @@
<div class="panel-body">
<form id="settingsGenerico" name="settingsGenerico"
action="<?= $this->url(array('controller' => 'index', 'action' => 'savesettings'), 'admin', true); ?>"
method="post" class="form-body">
<h4>Configurazioni</h4>
<input type="hidden" id="section" name="section" value="generico">
<div class="well no-shadow col-md-12">
<div class="row">
<div class="col-xs-12 col-md-6">
<div class="row">
<label class="col-7 control-label">Interrutore Sito</label>
<div class="col-5">
<input type="checkbox" data-bootstrap-switch class="no-shadow" id="interrutore_sito" name="interrutore_sito" <?= ($this->interrutore_sito == 'on') ? 'checked' : ''; ?>>
</div>
<div class="clearfix"></div><br>
<label class="col-md-7 control-label ">Interrutore Services</label>
<div class="col-md-5">
<input type="checkbox" data-bootstrap-switch class="no-shadow" id="interrutore_services" name="interrutore_services" <?= ($this->interrutore_services == 'on') ? 'checked' : ''; ?>>
</div>
<div class="clearfix"></div>
<label class="col-md-7 control-label ">Interrutore Web Services V1</label>
<div class="col-md-5">
<input type="checkbox" data-bootstrap-switch class="no-shadow" id="interrutore_webservices_v1" name="interrutore_webservices_v1" <?= ($this->interrutore_webservices_v1 == 'on') ? 'checked' : ''; ?>>
</div>
</div>
</div>
<div class="col-xs-12 col-md-6">
<div class="form-group row">
<label class="col-md-4 control-label">Ip Web Master</label>
<div class="col-md-8">
<input type="text" class=" form-control no-shadow" id="ip_master" placeholder=""
name="ip_master" value="<?= $this->ip_master; ?>">
</div>
<div class="clearfix"><br></div>
<label class="col-md-4 control-label">Ip Server</label>
<div class="col-md-8">
<input type="text" class=" form-control no-shadow" id="ip_server" placeholder=""
name="ip_server" value="<?= $this->ip_server; ?>">
</div>
<div class="clearfix"></div><br>
<label class="col-md-12 control-label">Altri IP:
<small> Il tuo IP attuale è [<?= $_SERVER['REMOTE_ADDR']; ?>]</small> <small>separare con una virgola.</small></label>
<div class="col-md-12">
<textarea class="form-control no-shadow" id="ip_alternativo" width="100%"
placeholder="" name="ip_alternativo" rows="9"><?= $this->ip_alternativo; ?></textarea>
</div>
</div>
</div>
</div>
</div>
<h4 class="mt-2">Email</h4>
<div class="well no-shadow col-md-12">
<div class="form-group row" style="margin-top:10px;">
<label class="col-md-2 control-label">Email Principale sito:</label>
<div class="col-md-4">
<input type="email" value="<?= $this->email_mittente; ?>" class="form-control"
id="email_mittente" placeholder="" name="email_mittente">
</div>
<label class="col-md-2 control-label">Nome / Alias Email:</label>
<div class="col-md-4">
<input type="text" value="<?= $this->email_mittente_nome; ?>"
class="form-control" id="email_mittente_nome" placeholder=""
name="email_mittente_nome">
</div>
</div>
<div class="form-group row" style="margin-top:10px;">
<div class="col-xs-12">
<hr class="light mt-5">
</div>
<label class="col-md-3 control-label">Email ricezione primo contatto:
<br><small class="text-muted">
<i class="fa fa-fw fa-info-circle"></i> Su questo indirizzo
riceverai le email di contatto dei clienti.
</small></label>
<div class="col-md-3">
<input type="text" value="<?= $this->email_primo_contatto; ?>"
class="form-control" id="email_primo_contatto" placeholder=""
name="email_primo_contatto">
</div>
<label class="col-md-3 control-label">Template Email di contatto:
<br><small class="text-muted">
<i class="fa fa-fw fa-info-circle"></i> Scegli la tipologia di email da inviare. I template sono configurabili dal menù a sinistra "Email Template"
</small></label>
<div class="col-md-3">
<select id="email_contatto_template" name="email_contatto_template" value="<?= $this -> email_contatto_template; ?>" class="form-control">
<option value="">Scegli...</option>
<?php foreach ($this->email_templates as $key => $value): ?>
<option value="<?= $value['Codice'] ?>" <?= ($this ->email_contatto_template == $value['Codice']) ? 'selected' : ''; ?> ><?= $value['Codice'] ?> - <?= $value['Nome'] ?> </option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="form-group row" style="margin-top:10px;">
<div class="col-xs-12">
<hr class="light mt-5">
</div>
<label class="col-md-12 control-label">Footer predefinito email:
<small class="text-muted" data-container="body" data-toggle="popover" title="Valori Predefiniti"
data-placement="top" data-trigger="click | hover" data-html="true"
data-max-width="400px" data-class="popover-default-variables"
data-content="<?= $this->popover_default_param_content; ?>">
<i class="fa fa-info-circle fa-fw"></i> Tabella valori predefiniti
</small></label>
<div class="col-md-12">
<textarea rows="3" class="form-control resize-vertical" id="default_footer_email" placeholder=""
name="default_footer_email"><?= $this->default_footer_email; ?></textarea>
</div>
</div>
</div>
</form>
</div>
@@ -0,0 +1,43 @@
<div class="panel panel-body" style="margin-bottom: 0;min-height: 207px;">
<form id="settingsSito" name="settingsSito"
action="<?= $this->url(array('controller' => 'index', 'action' => 'savesettings'), 'admin', false); ?>"
method="post" class="form-body">
<input type="hidden" id="section" name="section" value="sito">
<h4 class="">MetaTag del sito:</h4>
<div class="well no-shadow col-lg-12">
<div class="form-group row">
<label class="col-lg-12 control-label">Title base del sito: <small class="text-muted">[Il Titolo che compare nella barra del browser]</small></label>
<div class="col-lg-12">
<input type="text" class=" form-control no-shadow" id="base_title"
placeholder=""
name="base_title" value="<?= $this->base_title; ?>">
</div>
<label class="col-lg-12 1 mt-1 control-label">Keywords base: <small class="text-muted">[Principali keywords di ricerca del sito]</small></label>
<div class="col-lg-12">
<input type="text" class=" form-control no-shadow" id="base_keywords"
placeholder=""
name="base_keywords" value="<?= $this->base_keywords; ?>">
</div>
<label class="col-lg-12 mt-1 control-label">Description della home page: <small class="text-muted">[La Description della Home Page]</small></label>
<div class="col-lg-12">
<textarea rows="2" type="text" class="form-control resize-vertical" id="home_description"
name="home_description"><?= $this->home_description; ?></textarea>
</div>
</div>
</div>
</form>
</div>
@@ -0,0 +1,54 @@
<div class="panel panel-body" style="margin-bottom: 0;">
<form id="settingsTest" name="settingsTest"
action="<?= $this->url(array('controller' => 'index', 'action' => 'savesettings'), 'admin', true); ?>"
method="post" class="form-body">
<input type="hidden" id="section" name="section" value="test">
<h4>Ambiente di Test:</h4>
<div class="well no-shadow col-md-12">
<div class="form-group row">
<label class="col-md-3 control-label">Attiva Database Test</label>
<div class="col-md-2">
<input type="checkbox" class="no-shadow" data-bootstrap-switch id="interrutore_testdb" placeholder=""
name="interrutore_testdb" <?= ($this->interrutore_testdb == 'on') ? 'checked' : ''; ?>>
</div>
<label class="col-md-3 control-label">Email account test</label>
<div class="col-md-3">
<input type="text" value="<?= $this->test_email; ?>" class="form-control"
id="test_email" placeholder="" name="test_email">
</div>
</div>
</div>
<!--<h4>Impostazioni Paypal / Stripe:</h4>
<div class="well no-shadow col-lg-12">
<div class="form-group row" style="margin-top:10px;">
<label class="col-lg-3 control-label">Attiva PayPal TEST (Solo IP Abilitati):</label>
<div class="col-lg-1">
<input type="checkbox" class=" no-shadow" id="interrutore_paypal_test" placeholder=""
name="interrutore_paypal_test" <? /*= ($this->interrutore_paypal_test == 'on') ? 'checked' : ''; */ ?>>
</div>
<label class="col-lg-3 control-label">Attiva Stripe TEST (Solo IP abilitati):</label>
<div class="col-lg-1">
<input type="checkbox" class=" no-shadow" id="interrutore_stripe_test" placeholder=""
name="interrutore_stripe_test" <? /*= ($this->interrutore_stripe_test == 'on') ? 'checked' : ''; */ ?>>
</div>
</div>
</div>-->
</form>
</div>
+13
View File
@@ -0,0 +1,13 @@
<?php
class Auth_Bootstrap extends Zend_Application_Module_Bootstrap
{
public function _init()
{
$frontController = Zend_Controller_Front::getInstance();
$frontController->registerPlugin(new Zend_Controller_Plugin_PutHandler());
}
}
@@ -0,0 +1,141 @@
<?php
class Auth_IndexController extends App_Controller_Rest_Controller
{
//ERRORI GENERATI DA QUESTA CLASSE
const CREDENTIAL_MOBILE_USER_ERROR = 'V1AUTH_ERROR_CREDENTIAL_MOBILE_USER_ERROR';
const EMPTY_DATABASE = 'V1AUTH_ERROR_EMPTY_DATABASE';
//ERRORI GENERATI DALLO ZEND_AUTH RICODIFICATI DA ME
const FAILURE_IDENTITY_NOT_FOUND = 'V1AUTH_ERROR_FAILURE_IDENTITY_NOT_FOUND';
const FAILURE_CREDENTIAL_INVALID = 'V1AUTH_ERROR_FAILURE_CREDENTIAL_INVALID';
const FAILURE = 'V1AUTH_ERROR_FAILURE';
protected $_configs;
protected $_authService;
protected $_model;
public function init()
{
$this->_resourceName = 'Users';
$this->_authService = new App_Service_WebServiceV1Auth();
$this->_model = new Application_Model_Generic();
$this->_configs = new App_Service_ConfigManager();
parent::init();
}
public function getAction()
{
try {
switch ($this->_getParam('method')) {
case'check-connection':
$this->_responseData->data = [];
$this->_inArray = true;
break;
case'ora-server':
$format = $this->_getParam('format', 'd/m/Y H:i');
$this->_responseData->data = array('data' => date($format));
break;
default:
$this->disableCallAction();
break;
}
$this->_status = true;
$this->sendResponse();
} catch (Exception $e) {
$this->_status = false;
$this->_responseData->message = $e->getMessage();
$this->sendResponse();
}
}
public function postAction()
{
$this->_helper->getHelper('layout')->disableLayout();
$this->_helper->viewRenderer->setNoRender();
if (preg_match('/application\/json/', $this->getFrontController()->getRequest()->getHeader('Content-Type'))) {
$params = Zend_Json::decode($this->getRequest()->getRawBody());
} else {
$params = $this->getAllParams();
}
if (isset($params['username']) && isset($params['password'])) {
$this->authuser($params['username'], trim($params['password']), $params['staylogin']);
}
}
public function putAction()
{
$this->disableCallAction();
}
public function deleteAction()
{
$this->disableCallAction();
}
//################ FUNZIONI PRIVATE ################################################################################
private function authuser($username, $password, $staylogin = null)
{
$staylogin = ($staylogin == null) ? 0 : $staylogin;
if ($username == null || $password == null) {
return $this->sendErrorResponse("Username e/o password non ricevuti.", App_Service_WebServiceV1Auth::NO_CREDENTIAL_CLOUDUSER);
} else {
$user = $this->_authService->authenticate($username, $password, $staylogin);
switch ($user) {
case Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND:
$this->sendErrorResponse("Username inserito inesistente", App_Service_WebServiceV1Auth::FAILURE_IDENTITY_NOT_FOUND);
break;
case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
$this->sendErrorResponse("Le credenziali inserite non sono valide", App_Service_WebServiceV1Auth::FAILURE_CREDENTIAL_INVALID);
break;
case App_Service_WebServiceV1Auth::ACCOUNT_DEACTIVATED:
$this->sendErrorResponse("Account disattivato. Per informazioni contattare l'amministratore.", App_Service_WebServiceV1Auth::ACCOUNT_DEACTIVATED);
break;
case Zend_Auth_Result::FAILURE:
default:
$this->sendErrorResponse("Errore durante l'autenticazione", App_Service_WebServiceV1Auth::FAILURE);
break;
case Zend_Auth_Result::SUCCESS:
case is_array($user):
break;
}
}
$userData = array_diff_key($user, array_flip(array('password','staylogin','rcode','DataRichiestaResetPw','NumeroResetPw')));
//Aggiungo i dati sull'area di consegna associata all'attività
$userData = $this->getDataByRole($userData);
$this->_responseData->data = $userData;
$this->_status = true;
$this->sendResponse();
}
private function getDataByRole($userData){
switch ($userData['role']){
case 'user':
$userData = array_diff_key($userData, array_flip(array('secret_token', 'rcode',
'Indirizzo', 'Comune', 'Cap', 'Provincia', 'PartitaIva', 'CodiceFiscale',
'Pec', 'Telefono', 'UltimoAccesso', 'Nota', 'Descrizione')));
break;
default:
break;
}
return $userData;
}
}//END CLASS
+42
View File
@@ -0,0 +1,42 @@
<?php
/**
* Description of Bootstrap
*/
class Default_Bootstrap extends Zend_Application_Module_Bootstrap
{
public function _init()
{
}
public function _initPersonalRouter(){
$router= Zend_Controller_Front::getInstance()->getRouter();
$router->addRoute(
'authenticate',
new Zend_Controller_Router_Route('/authenticate',
array(
'module'=>'default',
'controller'=>'index',
'action'=>'authenticate'
)
)
);
$router->addRoute(
'resetpassword',
new Zend_Controller_Router_Route('/resetpassword/:rcode',
array(
'module'=>'default',
'controller'=>'index',
'action'=>'resetpassword',
'rcode' => null
)
)
);
}
}
@@ -0,0 +1,194 @@
<?php
class Default_ErrorController extends Zend_Controller_Action
{
protected $_allowedController;
protected $_allowedModule;
protected $_restModule;
protected $_ignoredMessages;
protected $_ipManager;
public function init()
{
$this->_allowedController = array('admin', 'index', 'error', 'services');
$this->_allowedModule = array('admin', 'default', 'v1', 'monitoring', 'user');
$this->_restModule = array('v1','auth');
$this->_ignoredMessages = array(
"Accesso Scaduto",
"Username e/o password non ricevuti.",
"I dati inseriti non sono validi",
"Le credenziali inserite non sono valide",
"Account disattivato. Per informazioni contattare l'amministratore.",
"Username inserito inesistente"
);
$this->_ipManager = new App_Service_IpManager();
}
public function preDispatch()
{
$this->_response->clearHeader('Access-Control-Allow-Headers');
$this->_response->setHeader('Access-Control-Allow-Headers', 'Access-Control-Allow-Headers,Access-Control-Allow-Methods,Access-Control-Allow-Origin,Authorization,x-requested-with,Content-Type,X-As-Dev-On,,X-As-Dev-Pw,MongoDbName');
$this->_response->clearHeader('Access-Control-Allow-Methods');
$this->_response->setHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, PATCH, DELETE');
$this->_response->clearHeader('Access-Control-Allow-Origin');
$this->_response->setHeader('Access-Control-Allow-Origin', '*');
$this->_response->clearHeader('Access-Control-Allow-Credentials');
$this->_response->setHeader('Access-Control-Allow-Credentials', 'true');
$this->view->allowedIp = $this->_ipManager->allowedIp();
$this->view->responseCode = null;
}
public function errorAction()
{
$errors = $this->_getParam('error_handler');
if ($this->_getParam('module') != 'default') {
$content = array('status' => false);
}
if (!$errors || !$errors instanceof ArrayObject) {
$content['message'] = 'You have reached the error page';
return;
}
switch ($errors->type) {
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
// 404 error -- controller or action not found
$this->getResponse()->setHttpResponseCode(404);
$this->view->responseCode = 404;
$this->view->title = "Adriatica Sistemi soc. coop. - Pagina non trovata - Errore 404";
$priority = Zend_Log::NOTICE;
if (in_array($this->_getParam('module'), $this->_restModule)) {
$content['message'] = 'Page not found';
} else {
$this->view->message = 'Page not found';
}
break;
default:
if ($errors->exception instanceof App_Controller_Errors_WebServiceError) {
// web services error
$content['message'] = $errors->exception->getMyMessage();
$content['errorCode'] = $errors->exception->getErrorCode();
if ($errors->exception->getErrorDetail()) {
$content['errorDetail'] = $errors->exception->getErrorDetail();
}
//Recupero tutti i parametri disponibili sulla richiesta
$allParams = $this->getRequest()->getRawBody();
if(!$allParams){
$allParams = Zend_Json::encode($errors->request->getParams());
}
$dbName = '';$token = ''; $username = '';
if(Zend_Registry::isRegistered('TOKEN')){
$model = new Application_Model_Generic();
$token = Zend_Registry::get('TOKEN');
$user = $model->getByColumnName('users', 'token', $token);
if($user){
$dbName = $user['NomeDB'];
$username = $user['username'];
}
}
$this->getResponse()->setHttpResponseCode(400);
//Zend_Registry::get('log')->info(print_r($errors,true));
if (!in_array($errors->exception->getMessage(), $this->_ignoredMessages))
Zend_Registry::get('error_log')
->setEventItem('url', $errors->request->getRequestUri())
->setEventItem('trace', Zend_Json::encode($errors->exception->getTrace()))
->setEventItem('params', $allParams)
->setEventItem('db_name', $dbName)
->setEventItem('username', $username)
->setEventItem('token', $token)
->setEventItem('section', 'web_service')
->info($content['message']);
} else {
// application error
$this->getResponse()->setHttpResponseCode(500);
$priority = Zend_Log::CRIT;
if (in_array($this->_getParam('module'), $this->_restModule)) {
$content['message'] = $errors->exception->getMessage();
} else {
$this->view->message = $errors->exception->getMessage();
}
}
break;
}
// Log exception, if logger available
if ($log = $this->getLog()) {
$log->log($this->view->message, $priority, $errors->exception);
$log->log('Request Parameters', $priority, $errors->request->getParams());
}
// conditionally display exceptions
if ($this->getInvokeArg('displayExceptions') == true || in_array($this->_getParam('module'), array('admin','monitoring'))) {
if (in_array($this->_getParam('module'), $this->_restModule)) {
$content['exception_trace'] = (array)$errors->exception->getTrace();
} else {
$this->view->exception = $errors->exception;
}
}
if (in_array($this->_getParam('module'), $this->_restModule) && APPLICATION_ENV != 'production') {
$content['request'] = (array)$errors->request;
} else {
$this->view->request = $errors->request;
}
if (in_array($this->_getParam('module'), $this->_restModule)) {
$this->_helper->getHelper('layout')->disableLayout();
$this->_helper->viewRenderer->setNoRender();
$this->getResponse()
->setHeader('Content-Type', 'json')
->setBody($this->_helper->Globalfunction->safeJsonEncode($content))
->sendResponse();
exit(1);
}
//Registro il log dell'errore
//Zend_Registry::get('log')->info(print_r($errors,true));
if (in_array($this->_getParam('module'), $this->_allowedModule)
&& in_array($this->_getParam('controller'), $this->_allowedController)
&& !in_array($errors->exception->getMessage(), $this->_ignoredMessages))
Zend_Registry::get('error_log')->setEventItem('url', $errors->request->getRequestUri())
->setEventItem('trace', Zend_Json::encode($errors->exception->getTrace()))
->setEventItem('params', Zend_Json::encode($errors->request->getParams()))
->setEventItem('section', $this->_getParam('module'))
->info($errors->exception->getMessage());
}
public function getLog()
{
$bootstrap = $this->getInvokeArg('bootstrap');
if (!$bootstrap->hasResource('Log')) {
return false;
}
$log = $bootstrap->getResource('Log');
return $log;
}
public function invalidAction()
{
$content = $this->_helper->json(array('status' => 'error', 'message' => $this->_getParam('message')));
$this->getResponse()
->setHeader('Content-Type', 'json')
->setBody($content)
->sendResponse();
}
}
@@ -0,0 +1,436 @@
<?php
class Default_IndexController extends Zend_Controller_Action
{
/* Proprietà Controller */
protected $_urlHelper;
protected $_genericModel;
protected $_restModel;
protected $_authService;
protected $_configs;
protected $_translate;
protected $_ipManager;
protected $_VariabiliSito;
protected $_rsaCryptor;
protected App_Service_JsonConfiguration $_datiAziendali;
protected App_Service_JsonConfiguration $_parametriSito;
/* Dati metatag del sito */
private $_KEYWORDS;
private $_TITLE;
private $_DESCRIPTION;
/* Dati per le sezioni dinamiche del sito */
private $_MENUITEM;
private $_PAGENAME;
private $_SUBTITLE;
private $_COOKIE_EXPIRE_TIME;
private $_COOKIE_SITE_CREDENTIALS;
public function init()
{
$this->_helper->layout->setLayout('layout');
$this->_urlHelper = $this->_helper->getHelper('url');
$this->_authService = new App_Service_Auth();
$this->_genericModel = new Application_Model_Generic();
$this->_restModel = new Application_Model_Rest();
$this->_configs = new App_Service_ConfigManager();
$this->_translate = Zend_Form::getDefaultTranslator();
$this->_ipManager = new App_Service_IpManager();
$this->_rsaCryptor = new App_Service_RsaCryptor();
$this->_VariabiliSito = new App_Service_VariabiliSito();
$this->_datiAziendali = new App_Service_JsonConfiguration('dati_aziendali');
$this->_parametriSito = new App_Service_JsonConfiguration("parametri_sito");
$this->_TITLE = "home";
$this->_DESCRIPTION = "";
$this->_KEYWORDS = "";
$this->_TITLE = $this->_parametriSito->get('base_title');
$this->_DESCRIPTION = "";
$this->_KEYWORDS = $this->_parametriSito->get('base_keywords');
$BASE_COOKIE_STRING = strtolower(Zend_Registry::get('ENVIROMENTS')->get('site_short_id')) . '_';
$this->_COOKIE_EXPIRE_TIME = time() + (86400 * 30);
$this->_COOKIE_SITE_CREDENTIALS = $BASE_COOKIE_STRING . "CREDENTIALS";
}
public function preDispatch()
{
$action = $this->getRequest()->getActionName();
if ($this->_configs->get('interrutore_sito') == 'off' && $action != 'login' && $action != 'authenticate' && $action != 'offline' && !$this->_ipManager->allowedIp()) {
$this->_helper->redirector('offline', 'index', 'default');
}
if (Zend_Registry::get('Zend_Locale') == 'it') {
$this->view->lang = 'it';
} else {
$this->view->lang = 'en';
}
$this->view->action = $action;
$this->view->controller = $this->getRequest()->getControllerName();
$this->view->enableTestSdk = $this->_ipManager->controllaAbilitazioneTestSdk();
}
public function postDispatch()
{
$this->view->title = $this->_TITLE;
$this->view->keywords = $this->_KEYWORDS;
$this->view->description = $this->_DESCRIPTION;
$this->view->menuitem = $this->_MENUITEM;
$this->view->pagename = $this->_PAGENAME;
$this->view->subtitle = $this->_SUBTITLE;
$this->view->parametriSito = $this->_parametriSito->getAllParams();
$this->view->datiAziendali = $this->_datiAziendali->getAllParams();
}
public function offlineAction()
{
$this->_DESCRIPTION .= "Il Sito è in manutenzuione";
if ($this->_configs->get('interrutore_sito') == 'off') {
$this->_helper->getHelper('layout')->disableLayout();
} else {
$this->_helper->redirector('index', 'index');
}
}
public function loginAction()
{
$this->_helper->layout->setLayout('admin');
$this->view->moduleName = 'default';
$this->view->eventLoader = 'login';
$this->view->formData = $this->recuperaCredenziali();
if (isset($this->_authService->getAuth()->getIdentity()->username))
$this->_helper->redirector('index', $this->_authService->getAuth()->getIdentity()->role);
}
public function authenticateAction()
{
$this->_helper->layout->setLayout('admin');
$this->view->moduleName = 'default';
$this->view->eventLoader = 'login';
$this->view->formData = $this->recuperaCredenziali();
if (!$this->getRequest()->isPost()) {
return $this->_helper->redirector('index');
}
$form = new Application_Form_Default_Index_Auth_Login();
if (!$form->isValid($this->getRequest()->getPost())) {
$this->view->error = 'I campi sono richiesti';
$this->render('login');
return false;
}
if (false === $this->_authService->authenticate($form->getValues())) {
$this->view->error = 'Le credenziali non sono valide!';
$this->render('login');
return false;
}
//memorizzo le credenziali se necessario
$data = $form->getValues();
if ($data['ricorda_password'] == 'on') {
try {
$data['password'] = $this->_rsaCryptor->cripta($data['password']);
setcookie($this->_COOKIE_SITE_CREDENTIALS, Zend_Json::encode($data), $this->_COOKIE_EXPIRE_TIME, "/");
} catch (Exception $e) {
}
} else {
setcookie($this->_COOKIE_SITE_CREDENTIALS, "", $this->_COOKIE_EXPIRE_TIME, "/");
}
//Accesso andato a buon fine
//Generazione del Token temporaneo per l'accesso
$user = $this->_authService->getIdentity();
if ($user->role !== 'admin') {
if ($user->token != null) {
$token = $user->token; //Esistente uso quello già presente
} else {
do { //se non esiste ne genero uno nuovo e controllo che sia univoco
$token = hash('sha1', $user->username . date('YmdHis') . mt_rand(5, 10));
if ($this->_genericModel->getByColumnName('Users', 'token', $token)) {
$exist = true;
} else {
$exist = false;
}
$user->token = $token;
} while ($exist);
}
$this->_genericModel->update('Users', $user->id, array('UltimoLogin' => date('Y-m-d H:i:s'), 'token' => $token));
} else {
$this->_genericModel->update('Users', $user->id, array('UltimoLogin' => date('Y-m-d H:i:s')));
}
$this->_genericModel->insert('Accesslog', array('ip' => $_SERVER['REMOTE_ADDR'], 'tipo' => $this->_authService->getIdentity()->role));
return $this->_helper->redirector('index', 'index', $this->_authService->getIdentity()->role);
}
public function indexAction()
{
// $this->_helper->getHelper('layout')->disableLayout();
/*if (isset($this->_authService->getAuth()->getIdentity()->username))
$this->_helper->redirector('index', $this->_authService->getAuth()->getIdentity()->role);
else
$this->_helper->redirector('login', 'index', 'default');*/
}
/**
* =====================================================================================================================
* ========= ELENCO PAGINE STATIC ACTION ===============================================
* =====================================================================================================================
*/
public function assistenzaAction()
{
}
public function caratteristicheAction()
{
}
public function acquistaAction()
{
}
public function downloadsoftwareAction()
{
}
public function copyrightAction()
{
}
public function privacyAction()
{
$this->redirect("https://www.iubenda.com/privacy-policy/70038880");
}
public function cookiepolicyAction()
{
$this->redirect("https://www.iubenda.com/privacy-policy/70038880/cookie-policy");
}
/**
* =====================================================================================================================
* ========= ACTION SPECIALI ===========================================================
* =====================================================================================================================
*/
public function resetpasswordAction()
{
$this->_helper->layout->setLayout('admin');
$this->view->moduleName = 'default';
$rcode = $this->getParam('rcode', null);
$this->view->hideForm = false;
$this->view->rcode = $rcode;
if (!$rcode && $this->getRequest()->isPost()) {
$email = $this->_getParam('Email', null);
if (!$email) {
$this->view->errorMessage = "Inserire un email corretta!";
return;
}
$users = $this->_genericModel->getByColumnName('Users', 'Email', $email);
if (!$users || !$users['stato'] || $users['role'] === 'admin') {
$this->view->warningMessage = "Nessuna corrispondenza per l'email inserita.";
$this->view->hideForm = true;
return;
}
if ($users['NumeroResetPw'] > 5) {
$this->view->warningMessage = "Hai effettuato troppe richieste per il reseet password, attendi 48 ore o contatta l'amministrazione su xxxx";
$this->view->hideForm = true;
return;
}
//Genero rcode e incremento il numero di richieste già effettuate per il limite max
$numeroReset = ($users['NumeroResetPw']) ? $users['NumeroResetPw'] : 0;
$numeroReset += 1;
$rcode = md5($users['PartitaIva'] . date('YmdHis'));
$this->_genericModel->update('Users', $users['id'], array('DataRichiestaResetPw' => date('Y-m-d H:i:s'), 'rcode' => $rcode, 'NumeroResetPw' => $numeroReset));
$users['rcode'] = $rcode;
//Invio email di recupero
$this->inviaEmailDiRecuperoPassword($users);
$this->view->successMessage = "Ti è stata inviata una email per effettuare il reset della password, consulta la tua casella di posta e segui le istruzioni.";
$this->view->hideForm = true;
return;
}
// FINE RICHIESTA
// INIZIO RESET PASSWORD
if ($rcode) {
//Controllo del codice rcode
$utente = $this->_genericModel->getByColumnName('Users', 'rcode', $rcode);
if (!$utente) {
$this->view->warningMessage = "La richiesta è scaduta, effettuare una nuova richiesta!";
$this->view->rcode = false;
return;
}
if ($this->getRequest()->isPost()) {
$form = new Application_Form_Default_Index_Auth_ResetPw();
if (!$form->isValid($this->getAllParams())) {
$this->view->errorMessage = "Ci sono errori di compilazione, controllare i campi!";
$this->view->errorForm = $form->getMessages();
$this->view->formData = $form->getValues();
return;
}
$data = $form->getValues();
$nuovaPassword = md5(Zend_Registry::get('ENVIROMENTS')->get('password_salt') . $data['password']);
//Inserimento nuova password nel db
$this->_genericModel->update('Users', $utente['id'], array('password' => $nuovaPassword, 'rcode' => null, 'NumeroResetPw' => 0));
$this->view->successMessage = 'La password è stata reimpostata correttamente, effettua un nuovo login <a href="' .
$this->_urlHelper->url(array('action' => 'login', 'controller' => 'index'), 'default', true) . '">cliccando qui.</a>';
$this->view->hideForm = true;
return;
}
}
}
public function sendcontactAction()
{
$this->_helper->getHelper('layout')->disableLayout();
$this->_helper->viewRenderer->setNoRender();
if ($this->getRequest()->isXmlHttpRequest()) {
$form = new Application_Form_Index_Contact_Add();
if (!$form->isValid($this->getAllParams())) {
return $this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody(Zend_Json::encode(array(
'success' => false,
'message' => $form->getMessages(),
)));
}
try {
$emailTemplate = $this->_genericModel->getByColumnName('EmailTemplate', 'Codice', $this->_configs->get('email_contatto_template'));
if (!$emailTemplate) {
return $this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody(Zend_Json::encode(array(
'success' => false,
'message' => "Email template non trovato o non assegnato",
)));
}
$this->_helper->Email->sendEmailByTemplate($this->_configs->get('email_primo_contatto'), $emailTemplate, $form->getValues());
//Incremento il contatore contatti email
$numContatti = $this->_VariabiliSito->get('I_Numero_Contatti_Email');
$this->_VariabiliSito->set('I_Numero_Contatti_Email', ++$numContatti);
$response['success'] = true;
} catch (Zend_Exception $e) {
return $this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody(Zend_Json::encode(array(
'success' => false,
'message' => "si è verificato un errore durante l'invio del messaggio",
)));
}
$this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody(Zend_Json::encode($response));
} else {
$this->getResponse()->setHeader('Content-type', 'application/json;charset=UTF-8')->setBody(Zend_Json::encode(array('success' => false, 'errore' => 'Operazione non consentita')));
}
}
public function sitemapAction()
{
$this->_helper->getHelper('layout')->disableLayout();
$this->_helper->viewRenderer->setNoRender();
header('Content-type: text/xml');
header('Pragma: public');
header('Cache-control: private');
header('Expires: -1');
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">';
/*echo '<url>';
echo '<loc>https://sfdasdas.com/</loc>';
echo '<changefreq>monthly</changefreq>';
echo '</url>';*/
echo '</urlset>';
}
/**
* =====================================================================================================================
* ========= FUNZIONI PRIVATE DEL CONTROLLER ===========================================
* =====================================================================================================================
*/
private function recuperaCredenziali()
{
//Recupero eventuali credenziali memorizzate
if (isset($_COOKIE[$this->_COOKIE_SITE_CREDENTIALS])) {
$credentials = Zend_Json::decode($_COOKIE[$this->_COOKIE_SITE_CREDENTIALS]);
if ($credentials['ricorda_password'] == 'on') {
try {
$credentials['password'] = $this->_rsaCryptor->decripta($credentials['password']);
} catch (Exception $e) {
$credentials = array('ricorda_password' => 'off');
}
return $credentials;
}
}
return array('ricorda_password' => 'on');
}
private function inviaEmailDiRecuperoPassword($user)
{
//Invio email per conferma
$emailTemplate = $this->_genericModel->getByColumnName('EmailTemplate', 'Codice', 'EMAIL_RECUPERO_PASSWORD');
if (!$emailTemplate) {
throw new Exception("Errore invio email richiesta recupero password");
}
$params = $user;
$params['link'] = $this->getRequest()->getScheme() . '://' . $this->getRequest()->getHttpHost()
. $this->_urlHelper->url(array('rcode' => $params['rcode']), 'resetpassword', true);
$this->_helper->Email->sendEmailByTemplate($params['Email'], $emailTemplate, $params);
}
}
@@ -0,0 +1,73 @@
<?php
class Default_ServicesController extends Zend_Controller_Action
{
protected $_configs;
protected $_ipManager;
protected $_genericModel;
public function init()
{
$this->_helper->getHelper('layout')->disableLayout();
$this->_configs = new App_Service_ConfigManager();
$this->_ipManager = new App_Service_IpManager();
$this->_genericModel = new Application_Model_Generic();
}
public function preDispatch()
{
$action = $this->getRequest()->getActionName();
if ($this->_configs->get('interrutore_services') == 'off' && $action != 'offline') {
$this->_helper->redirector('offline', 'services');
}
}
public function postDispatch()
{
}
public function offlineAction()
{
$this->_helper->viewRenderer->setNoRender();
echo 'I servizi sono al momento disabilitati.';
}
public function indexAction()
{
$this->_helper->redirector('index', 'index');
}
/**
* =====================================================================================================================
* ================ SERVIZI ================================================
* =====================================================================================================================
*/
/**
* =====================================================================================================================
* ========= FUNZIONI CRON DEL CPANEL ===================================================
* =====================================================================================================================
*/
/**
* =====================================================================================================================
* ========= FUNZIONI PRIVATE DEL CONTROLLER ===========================================
* =====================================================================================================================
*/
private function _errorToLog($e, $message)
{
Zend_Registry::get('error_log')->setEventItem('url', $this->getRequest()->getRequestUri())
->setEventItem('trace', Zend_Json::encode($e->getTrace()))
->setEventItem('params', Zend_Json::encode([]))
->setEventItem('section', 'services')
->info($message);
}
}
@@ -0,0 +1,34 @@
<?php if ($this->responseCode == 404): ?>
<section class="ptb-80 bbs1 bc-light">
<div class="container">
<h2 class="heading-thick mb-30">404 <span> - Pagina non Trovata</span></h2>
<p>La pagina che stavi cercando di raggiungere a questo indirizzo sembra non esistere.<br>
Questo è di solito il risultato di un link errato o non aggiornato.</p>
<a href="<?= $this->url(array(),'default',true); ?>" class="btn btn-theme btn-theme-primary">Vai alla home del sito!</a>
</div><!-- End Container -->
</section><!-- End Section -->
<?php else: ?>
<h1>Si è verificato un errore</h1>
<h2><?php echo $this->message ?></h2>
<?php endif; ?>
<?php if (isset($this->exception) && $this->allowedIp): ?>
<h3>Exception information:</h3>
<p>
<b>Message:</b> <?php echo $this->exception->getMessage() ?>
</p>
<h3>Stack trace:</h3>
<pre><?php echo $this->exception->getTraceAsString() ?>
</pre>
<h3>Request Parameters:</h3>
<pre><?php echo $this->escape(var_export($this->request->getParams(), true)) ?>
</pre>
<?php endif ?>
@@ -0,0 +1,365 @@
<section class="pt-8 pt-md-11 pb-10 pb-md-15 bg-primary">
<!-- Shape -->
<div class="shape shape-blur-3 text-white">
<svg viewBox="0 0 1738 487" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 0h1420.92s713.43 457.505 0 485.868C707.502 514.231 0 0 0 0z" fill="url(#paint0_linear)"/>
<defs>
<linearGradient id="paint0_linear" x1="0" y1="0" x2="1049.98" y2="912.68"
gradientUnits="userSpaceOnUse">
<stop stop-color="currentColor" stop-opacity=".075"/>
<stop offset="1" stop-color="currentColor" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>
</div>
<!-- Content -->
<div class="container">
<div class="row justify-content-center">
<div class="col-12 col-md-10 col-lg-8 text-center">
<!-- Heading -->
<h2 class="display-3 text-white">
Acquista Gestione Spiaggia
</h2>
</div>
</div> <!-- / .row -->
</div> <!-- / .container -->
</section>
<!-- SHAPE -->
<div class="position-relative">
<div class="shape shape-bottom shape-fluid-x text-light">
<svg viewBox="0 0 2880 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 48h2880V0h-720C1442.5 52 720 0 720 0H0v48z" fill="currentColor"/>
</svg>
</div>
</div>
<!-- PRICING -->
<section class="mt-n8 mt-md-n14 mb-3">
<div class="container mb-7">
<div class="row gx-4 justify-content-center">
<div class="col-12 col-md-6">
<!-- Card -->
<div class="card shadow-lg mb-6 mb-md-0">
<div class="card-body">
<!-- Preheading -->
<div class="text-center mb-3">
<span class="badge rounded-pill bg-primary-soft">
<span class="h6 text-uppercase">Licenza Gestione Spiaggia Enterprise</span>
</span>
</div>
<!-- Price -->
<div class="d-flex justify-content-center">
<span class="h2 mb-0 mt-2">€</span>
<span class="price display-2 mb-0" data-annual="0" data-monthly="0">185</span>
<span class="h2 align-self-end mb-1 ms-2"> + iva</span>
</div>
<!-- Text -->
<p class="text-center text-muted mb-5">
Annuali
</p>
<!-- List -->
<div class="d-flex">
<!-- Badge -->
<div class="badge badge-rounded-circle bg-success-soft mt-1 me-4">
<i class="fe fe-check"></i>
</div>
<!-- Text -->
<p class="mb-5">
Tutte le <a href="<?= $this->url(['action' => 'caratteristiche'], 'it', true); ?>">funzionalità</a>
</p>
</div>
<div class="d-flex">
<!-- Badge -->
<div class="badge badge-rounded-circle bg-success-soft mt-1 me-4">
<i class="fe fe-check"></i>
</div>
<!-- Text -->
<p class="mb-5">
1000 Fatture elettroniche incluse
</p>
</div>
<div class="d-flex">
<!-- Badge -->
<div class="badge badge-rounded-circle bg-success-soft mt-1 me-4">
<i class="fe fe-check"></i>
</div>
<!-- Text -->
<p class="mb-5">
15 Ticket di assistenza telefonica
</p>
</div>
<!-- Button -->
<a href="#!" class="btn w-100 btn-primary lift ms-auto">
Acquista <i class="fe fe-arrow-right ms-3"></i>
</a>
</div>
</div>
</div>
</div> <!-- / .row -->
</div> <!-- / .container -->
<div class="row justify-content-center">
<div class="col-12 col-md-10 col-md-8 text-center mt-10 mb-5">
<!-- Heading -->
<h2>
- Pacchetti e Servizi Aggiuntivi -
</h2>
<!-- Text -->
<p class="fs-lg text-muted mb-6 mb-md-6">
I pacchetti e servizi aggiuntivi sono acquistabili solo in abbinamento ad una licenza valida
</p>
</div>
</div> <!-- / .row -->
<div class="container">
<div class="row gx-4 justify-content-center">
<div class="col-12 col-md-4">
<!-- Card -->
<div class="card shadow-lg mb-6 mb-md-0">
<div class="card-body">
<!-- Preheading -->
<div class="text-center mb-3">
<span class="badge rounded-pill bg-primary-soft">
<span class="h6 text-uppercase">Assistenza Telefonica</span>
</span>
</div>
<!-- Price -->
<div class="d-flex justify-content-center">
<span class="h2 mb-0 mt-2">€</span>
<span class="price display-2 mb-0" data-annual="29" data-monthly="49">80</span>
<span class="h2 align-self-end mb-1 ms-2"> + iva</span>
</div>
<!-- Text -->
<p class="text-center text-muted mb-5">
Pacchetto Aggiuntivo
</p>
<!-- List -->
<div class="d-flex">
<!-- Badge -->
<div class="badge badge-rounded-circle bg-success-soft mt-1 me-4">
<i class="fe fe-check"></i>
</div>
<!-- Text -->
<p>
100 Minuti / 10 Ticket
</p>
</div>
<!-- Button -->
<a href="#!" class="btn w-100 btn-primary-soft lift ms-auto">
Acquista <i class="fe fe-arrow-right ms-3"></i>
</a>
</div>
</div>
</div>
<div class="col-12 col-md-4">
<!-- Card -->
<div class="card shadow-lg mb-md-0">
<div class="card-body">
<!-- Preheading -->
<div class="text-center mb-3">
<span class="badge rounded-pill bg-primary-soft">
<span class="h6 text-uppercase">Fatture Elettroniche</span>
</span>
</div>
<!-- Price -->
<div class="d-flex justify-content-center">
<span class="h2 mb-0 mt-2">€</span>
<span class="price display-2 mb-0" data-annual="49" data-monthly="69">70</span>
<span class="h2 align-self-end mb-1 ms-2">+ iva</span>
</div>
<!-- Text -->
<p class="text-center text-muted mb-5">
Pacchetto Aggiuntivo
</p>
<!-- List -->
<div class="d-flex">
<!-- Badge -->
<div class="badge badge-rounded-circle bg-success-soft mt-1 me-4">
<i class="fe fe-check"></i>
</div>
<!-- Text -->
<p>
1000 Fatture Elettroniche
</p>
</div>
<!-- Button -->
<a href="#!" class="btn w-100 btn-primary-soft lift ms-auto">
Acquista <i class="fe fe-arrow-right ms-3"></i>
</a>
</div>
</div>
</div>
</div> <!-- / .row -->
</div> <!-- / .container -->
</section>
<!-- SHAPE -->
<div class="position-relative">
<div class="shape shape-bottom shape-fluid-x text-white">
<svg viewBox="0 0 2880 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 48h2880V0h-720C1442.5 52 720 0 720 0H0v48z" fill="currentColor"/>
</svg>
</div>
</div>
<!-- FAQ -->
<section class="py-8 py-md-11 bg-white border-bottom">
<div class="container">
<div class="row justify-content-center">
<div class="col-12 col-md-10 col-md-8 text-center">
<!-- Badge -->
<span class="badge rounded-pill bg-primary-desat-soft mb-3">
<span class="h6 text-uppercase">FAQ</span>
</span>
<!-- Heading -->
<h2>
Domande Frequenti
</h2>
<!-- Text -->
<p class="fs-lg text-muted mb-7 mb-md-9">
Rispondiamo alle domande più comuni che potresti avere.
</p>
</div>
</div> <!-- / .row -->
<div class="row lh-5">
<div class="col-12 col-md-6">
<!-- Heading -->
<h3>
Come procedo all'acquisto?
</h3>
<!-- Text -->
<p class="text-gray-800 mb-6 mb-md-8">
Per acquistare la licenza o un pacchetto aggiuntivo ti basta cliccare sul prodotto e una volta
aperto il carrello seguire la semplice procedura di acquisto, al termine del pagamento riceverei una
mail con i dati di attivzione entro 24 ore.
</p>
<!-- Heading -->
<h3>
Come attivo la licenza d'uso?
</h3>
<!-- Text -->
<p class="text-gray-800 mb-6">
Una volta terminata la procedura d'acquisto invieremo tramite e-mail <span class="text-muted">(solitamente in giornata
all'email indicata)</span> la fattura contenente i codici licenza necessari per l'attivazione
del software.<br>
<span class="text-muted mt-1">
<small>I codici delle licenze sono calcolati in base alla partita iva della
vostra azienda, ed una volta concessa non può più essere modificata.</small>
</span>
</p>
</div>
<div class="col-12 col-md-6">
<!-- Heading -->
<h3>
Quanto dura la licenza?
</h3>
<!-- Text -->
<p class="text-gray-800 mb-9">
La licenza ha una durata di 365 gg dalla data di acquisto; in caso l'acquisto venga effettuato prima
della scadenza la licenza verrà ricalcolata dalla data di scadenza.
</p>
<!-- Heading -->
<h3>
Quali metodi di pagamenti sono accettati?
</h3>
<!-- Text -->
<p class="text-gray-800 mb-6 mb-md-0">
I metodi di pagamento accettati sono: carta di credito, carte prepagate o conto PayPal, altrimenti
tramite bonifico bancario.<br>
<small><span class="text-muted">In caso di pagamento tramite bonifico bancario al termine della procedura è consigliato stampare
l'ordine contenente tutti i dati necessari all'acquisto (Coordinate Bancarie ecc..) che dovrà
poi essere inviato insieme alla ricevuta di effettuato pagamento tramite email.</span></small>
<ul class="list-unstyled list-inline list-social mb-6 mb-md-0 mt-2">
<li class="list-inline-item list-social-item">
<img src="./assets/img/icons/payment-methods/maestro.svg" class="list-payment-icon" alt="...">
</li>
<li class="list-inline-item list-social-item me-3">
<img src="./assets/img/icons/payment-methods/mastercard.svg" class="list-payment-icon"
alt="...">
</li>
<li class="list-inline-item list-social-item me-3">
<img src="./assets/img/icons/payment-methods/visa.svg" class="list-payment-icon" alt="...">
</li>
<li class="list-inline-item list-social-item me-3">
<img src="./assets/img/icons/payment-methods/paypal.svg" class="list-payment-icon" alt="...">
</li>
<li class="list-inline-item list-social-item me-3">
<img src="./assets/img/icons/payment-methods/default.svg" class="list-payment-icon" alt="...">
</li>
<li class="list-inline-item list-social-item me-3">
<img src="./assets/img/icons/payment-methods/amex.svg" class="list-payment-icon" alt="...">
</li>
</ul>
</p>
</div>
</div> <!-- / .row -->
</div> <!-- / .container -->
</section>
@@ -0,0 +1,269 @@
<section class="pt-8 pt-md-11 pb-8 pb-md-14">
<div class="container">
<div class="row align-items-center">
<div class="col-12 col-md">
<!-- Heading -->
<h1 class="display-4 mb-2">
Assistenza
</h1>
</div>
<div class="col-auto">
<!-- Buttons -->
<a href="tel:08565690" class="btn btn-primary-soft">
Chiamaci
</a>
</div>
</div> <!-- / .row -->
<div class="row">
<div class="col-12">
<!-- Divider -->
<hr class="my-6 my-md-8">
</div>
</div> <!-- / .row -->
<div class="row">
<div class="col-12 col-md-8">
<!-- Text -->
<p class="fs-lg text-gray-800 mb-4 mb-md-4">
L'Adriatica Sistemi fornisce assistenza dal lunedì al venerdì dalle ore 9:00 alle ore 13:00 nei
giorni lavorativi (con possibilità di tele-assistenza se si dispone di una linea ADSL).
</p>
<p class="fs-lg text-gray-800 mb-4 mb-md-4">
Per Fattura Facile l'assistenza è inclusa per tutta la durata della licenza.
</p>
<p class="fs-lg text-gray-800 mb-6 mb-md-8">
Per maggiori informazioni sull'assistenza <a
href="<?= $this->url(['action' => 'copyright'], 'it', true); ?>">clicca qui.</a>
</p>
<h3>
AGGIORNAMENTI
</h3>
<p>
I nostri software principali hanno la funzione di aggiornamento automatico. Se non è possibile
utilizzare l'aggiornamento automatico o il software non dispone di questa funzione è sufficiente
scaricare il programma completo ed installarlo sul computer da aggiornare (è importante non
disinstallare la versione precedentemente installata, l'installazione del pacchetto completo non
sovrascriverà mai i dati esistenti).
</p>
<!-- Text -->
<h3 class="mt-8" id="manuali">
MANUALI:
</h3>
<!-- List -->
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-primary-soft mt-1 me-4"><i class="fe fe-file"></i></span>
<!-- Text -->
<a class="text-gray-800" target="_blank" href="https://www.gestionespiaggia.it/downloads/manuali/ffp%20-%20maschera%20di%20avvio%20e%20gestione%20archivi.pdf">
Maschera di avvio (Gestione Archivi)
</a>
</div>
<!-- List -->
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-primary-soft mt-1 me-4"><i class="fe fe-file"></i></span>
<!-- Text -->
<a class="text-gray-800" target="_blank" href="https://www.gestionespiaggia.it/downloads/manuali/ffSpostamentoFatturaFacile.pdf">
Spostamento Fattura Facile da computer A ad computer B
</a>
</div>
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-primary-soft mt-1 me-4"><i class="fe fe-file"></i></span>
<!-- Text -->
<a class="text-gray-800" target="_blank" href="https://www.gestionespiaggia.it/downloads/manuali/ffpaggiornamentosoftware.pdf">
Procedura di aggiornamento software
</a>
</div>
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-primary-soft mt-1 me-4"><i class="fe fe-file"></i></span>
<!-- Text -->
<a class="text-gray-800" target="_blank" href="https://www.gestionespiaggia.it/downloads/manuali/creazionetipodipagamento.pdf">
Creazione nuove tipologie di pagamento
</a>
</div>
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-primary-soft mt-1 me-4"><i class="fe fe-file"></i></span>
<!-- Text -->
<a class="text-gray-800" target="_blank" href="https://www.gestionespiaggia.it/downloads/manuali/ffpraggruppamentodocumenti.pdf">
Raggruppamento documenti
</a>
</div>
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-primary-soft mt-1 me-4"><i class="fe fe-file"></i></span>
<!-- Text -->
<a class="text-gray-800" target="_blank" href="https://www.gestionespiaggia.it/downloads/manuali/ffpimportazionearchivio.pdf">
Importazione archivio di Fattura Facile Pro/Pro-E in Fattura Facile
</a>
</div>
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-primary-soft mt-1 me-4"><i class="fe fe-file"></i></span>
<!-- Text -->
<a class="text-gray-800" target="_blank" href="https://www.gestionespiaggia.it/downloads/manuali/ffpinviaredocumentitramiteemail.pdf">
Inviare documenti tramite email
</a>
</div>
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-primary-soft mt-1 me-4"><i class="fe fe-file"></i></span>
<!-- Text -->
<a class="text-gray-800" target="_blank" href="https://www.gestionespiaggia.it/downloads/manuali/aggiungerealiquota.pdf">
Come aggiungere un'aliquota iva
</a>
</div>
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-primary-soft mt-1 me-4"><i class="fe fe-file"></i></span>
<!-- Text -->
<a class="text-gray-800" target="_blank" href="https://www.gestionespiaggia.it/downloads/manuali/FatturaElettronicaConFatturaFacile.pdf">
Fatturazione Elettronica
</a>
</div>
<h3 class="mt-6" id="guide">
GUIDE:
</h3>
<!-- List -->
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-primary-soft mt-1 me-4"><i class="fe fe-file"></i></span>
<!-- Text -->
<a class="text-gray-800" href="https://www.gestionespiaggia.it/downloads/guide/soluzioneproblemi.pdf" target="_blank">
Soluzione problemi (il programma non funziona, vengono visualizzati messaggi di errore ecc...)
</a>
</div>
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-primary-soft mt-1 me-4"><i class="fe fe-file"></i></span>
<!-- Text -->
<a class="text-gray-800" href="https://www.gestionespiaggia.it/downloads/guide/salvataggioarchivi.pdf" target="_blank">
Salvataggio, Spostamento e Ripristino Archivi (valido per tutti i nostri software)
</a>
</div>
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-primary-soft mt-1 me-4"><i class="fe fe-file"></i></span>
<!-- Text -->
<a class="text-gray-800" href="https://www.gestionespiaggia.it/downloads/guide/opzioniinternazionaliedellalingua.pdf" target="_blank">
Opzioni Internazionali e della Lingua (errori di calcolo, errata visualizzazione della data)
</a>
</div>
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-primary-soft mt-1 me-4"><i class="fe fe-file"></i></span>
<!-- Text -->
<a class="text-gray-800" href="https://www.gestionespiaggia.it/downloads/guide/utilizzoinretelocale.pdf" target="_blank">
Configurazione "Multipostazione" rete LAN
</a>
</div>
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-primary-soft mt-1 me-4"><i class="fe fe-file"></i></span>
<!-- Text -->
<a class="text-gray-800" href="https://www.gestionespiaggia.it/downloads/guide/disinstallazione.pdf" target="_blank">
Procedura di disinstallazione dei software.
</a>
</div>
<h3 class="mt-6" id="driver">
DRIVER & UTILITY:
</h3>
<!-- List -->
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-primary-soft mt-1 me-4"><i
class="fe fe-settings"></i></span>
<!-- Text -->
<a class="text-gray-800" href="https://www.gestionespiaggia.it/downloads/drivereutility/dipendenze.exe">
Dipendenze - Utility per la risoluzione dei problemi legati a dll o ocx
</a>
</div>
</div>
<div class="col-12 col-md-4">
<!-- Card -->
<div class="card shadow-light-lg">
<div class="card-body">
<!-- Heading -->
<h4>
Richiedi Assistenza Tecnica
</h4>
<!-- Text -->
<p class="fs-sm text-gray-800 mb-5">
Tramite il pulsante in basso portrai scaricare il software che permetterà ai nosstri tecnici
di collegarsi in teleassistenza.
</p>
<a href="https://download.anydesk.com/AnyDesk.exe" class="btn btn-primary align-self-center">Teleassistenza</a>
<!-- Heading -->
<h6 class="fw-bold text-uppercase text-gray-700 mb-2 mt-5">
Telefono
</h6>
<!-- Text -->
<p class="fs-sm mb-5">
<a href="tel:08565690" class="text-reset">+39 085 65690</a>
</p>
<!-- Heading -->
<h6 class="fw-bold text-uppercase text-gray-700 mb-2">
Email
</h6>
<!-- Text -->
<p class="fs-sm mb-0">
<a href="mailto:info@adriaticasistetmi.it" class="text-reset">info@adriaticasistetmi.it</a>
</p>
</div>
</div>
</div>
</div> <!-- / .row -->
</div> <!-- / .container -->
</section>
@@ -0,0 +1,578 @@
<section class="pt-6 pt-md-8">
<div class="container pb-8 pb-md-11">
<div class="row justify-content-center">
<div class="col-12 col-md-10 col-lg-8 text-center">
<!-- Badge -->
<span class="badge rounded-pill bg-primary-desat-soft mb-3">
<span class="h6 text-uppercase">Caratteristiche</span>
</span>
<!-- Heading -->
<h2>
Scopri tutte le <span class="text-primary">funzionalità</span> di Fattura Facile.
</h2>
</div>
</div> <!-- / .row -->
<div class="row mt-10">
<div class="col-12">
<!-- Table -->
<div class="table-responsive mb-7 mb-md-9">
<table class="table table-align-middle">
<thead>
<tr>
<th>
<span class="h6 text-uppercase fw-bold">
Caratteristica
</span>
</th>
<th>
<span class="h6 text-uppercase fw-bold">
</span>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p class="mb-1">
GESTIONE DOCUMENTI
</p>
<ul class="fs-sm text-muted mb-0">
<li>Fatture,D.D.T.,Preventivi</li>
<li>Ordini clienti / fornitori</li>
<li>Documenti da fornitore</li>
<li>Documenti parametrici</li>
<li>Creazione automatica e/o manuale della scadenze dei pagamenti</li>
<li>Gestione allegati</li>
<li>Creazione autotmatica articoli ed aggiornamento listino</li>
<li>Esportazione / importazione documenti</li>
<li>Fatture o altro documento direttamente da preventivi, DDT, ordini ...</li>
<li>Raggruppamento documenti</li>
<li>Ricerca avanzata documenti</li>
<li>Ri.Ba.</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
FATTURA ELETTRONICA
</p>
<p class="fs-sm text-muted mb-2">
Esportazione fatture in formato XML
</p>
<p class="fs-sm text-muted mb-2">
<b>Funzionalità integrate nel software per:</b>
<ul class="fs-sm text-muted">
<li>Invio fatture elettroniche a clienti</li>
<li>Possivilità di invio automatico email di cortesia per le Fattura Elettroniche accettate dall'AdE </li>
<li>Ricezione fattura elettroniche da fornitore</li>
<li>Importazione fatture elettroniche</li>
<li>Firma automatica su tutti i documenti</li>
<li>Conservazione sostitutiva per 10 anni delle fatture elettroniche e notifiche
<li>Download massivo fatture elettroniche in formato xml</li>
</li>
</ul>
</p>
<p class="fs-sm text-muted mb-0">
<b>Note:</b>
<ul class="fs-sm text-muted">
<li>1.000 Fatture Elettroniche (attive + passive) incluse nella licenza d'uso,
cumulabili e senza scadenza.
</li>
<li>Il Codice Destinatario viene fornito all'attivazione del servizio di
Fatturazione Elettronica incluso nella licenza
(il Codice Destinatario deve essere inserito nel Cassetto Fiscale e comunicato
ai propri fornitori)
</li>
<li>Compatibile con sistemi successivi a Windows XP</li>
<li>Richiesta connessione ad Internet</li>
<li>Dimensione massima del file fattura elettronica con allegati:
<br> < 500 kb invio verso privati
<br> < 5.000 Kb verso Pubblica Amministrazione
</li>
</ul>
</p>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
CONTATTI
</p>
<ul class="fs-sm text-muted mb-0">
<li>Anagrafiche clienti/fornitori</li>
<li>Ricerca avanzata anagrafiche</li>
<li>Gestione allegati</li>
<li>Banca e pagamenti</li>
<li>Destinazione</li>
<li>Documenti</li>
<li>Crediti</li>
<li>Articoli</li>
<li>Stampa etichette</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
MAGAZZINO
</p>
<ul class="fs-sm text-muted mb-0">
<li>Scheda articolo</li>
<li>Stampa etichette</li>
<li>Storico movimenti articoli</li>
<li>Lista articoli / sottoscora / ordinati</li>
<li>Creazione documento inventario / ordine</li>
<li>Calcolo valore magazzino</li>
<li>Listini (modifica, aggiornamento e stampa)</li>
<li>Notifica articoli sottoscorta</li>
<li>Gestione lotti</li>
<li>Gestione allegati</li>
<li>Inventario con riallineamento giacenze</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
SCADENZARIO
</p>
<ul class="fs-sm text-muted mb-0">
<li>Scadenze pagamenti clienti e fornitori</li>
<li>Saldo parziale / totale scadenze</li>
<li>Notifica crediti in scadenza e/o scaduti</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
STATISTICHE
</p>
<ul class="fs-sm text-muted mb-0">
<li>Lista documenti e totali per cliente</li>
<li>Totali e dettaglio articoli</li>
<li>Totali articoli per gruppi appartenenza</li>
<li>Totali per iva</li>
<li>Elenco clienti / fornitori</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
AGENDA
</p>
<ul class="fs-sm text-muted mb-0">
<li>Gestione semplificata di appuntamenti ed impegni</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
CALENDARIO APPUNTAMENTI
</p>
<ul class="fs-sm text-muted mb-0">
<li>Calendario e agenda professionale per la gestione degli appuntamenti</li>
<li>Ricerca avanzata e gestione stati appuntamento</li>
<li>Campi ed intervalli orari parametrici</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
PROMEMORIA
</p>
<ul class="fs-sm text-muted mb-0">
<li>Gestione appunti</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
PRIMA NOTA
</p>
<ul class="fs-sm text-muted mb-0">
<li>Inserimento manuale movimenti</li>
<li>Creazione automatica movimenti da registrazione documenti e saldo pagamenti.</li>
<li>(gestione regole per la creazione automatica dei movimenti)</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
AGENDA PAGAMENTI
</p>
<ul class="fs-sm text-muted mb-0">
<li>Agenda indipendente per l'inserimento semplificato delle scadenze dei pagamenti</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
DIARIO PRESENZE
</p>
<ul class="fs-sm text-muted mb-0">
<li>Agenda per memorizzare le ore di presenza dei collaboratori</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
AGENTI
</p>
<ul class="fs-sm text-muted mb-0">
<li>Gestione agenti</li>
<li>Calcolo provvigioni con % su importo fatture</li>
<li>Calcolo provvigioni con tabella provvigioni (su articoli e sconti applicati)</li>
<li>Stampa e saldo provvigioni agenti</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
BANCO
</p>
<ul class="fs-sm text-muted mb-5">
<li>Interfaccia grafica "vendita al banco"</li>
<li>Collegabile con misuratori fiscali*</li>
<li>Compatibile con monitor touch screen</li>
<li>Compatibile con stampantine termiche**</li>
</ul>
<p class="fs-sm text-muted mb-0">
<small>
*Tutti i misuratori che utilizzano il protocollo Xon-Xoff (per maggiori informazioni è consigliabile contattarci telefonicamente).
<br>**Stampanti dotati di driver per Windows.
</small>
</p>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
GESTIONE UTENTI
</p>
<ul class="fs-sm text-muted mb-0">
<li>Gestione utenti e permessi</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
GESTIONE ARCHIVI
</p>
<ul class="fs-sm text-muted mb-0">
<li>Creazione e manutenzione archivi</li>
<li>Backup manuale e/o automatico</li>
<li>Ottimizzazione archivio</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
UTILITY E VERTICALIZZAZIONI
</p>
<ul class="fs-sm text-muted mb-0">
<li>Calcolatrice</li>
<li>Importazione anagrafiche contatti</li>
<li>Importazione anagrafiche articoli</li>
<li>Controllo e download automatico aggiornamenti software</li>
<li>Verticalizzazioni (carrozzeria, vetreria, panificio, mercato ittico)</li>
<li>Utility (calcolo superficie marmo, calcolo litri, calcolo quantità da prezzo totale)</li>
<li>Varie (lettere di sollecito, stampa bollettino postale td123)</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
PDF E INVIO EMAIL
</p>
<ul class="fs-sm text-muted mb-5">
<li>Esportazione documenti in formato PDF ***</li>
<li>Invio automatico email di cortesia per le Fattura Elettroniche </li>
</ul>
<p class="fs-sm text-muted mb-0">
<small>
*** per sistemi precedenti a Window 10 è necessario utilizzare PDFCreator
</small>
</p>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
ALTRO
</p>
<ul class="fs-sm text-muted mb-0">
<li>Prezzi unitari fino a 6 decimali</li>
<li>Quantità fino a 4 decimali</li>
<li>Modalità prezzi iva inclusa / iva esclusa</li>
<li>Ritenuta d'acconto</li>
<li>Acconto, bollo, incentivo</li>
<li>Spese incasso, trasporto e varie</li>
<li>Gestione lotti</li>
<li>Campi aggiuntivi per matricole, colli</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
GESTIONE INTERVENTI
</p>
<ul class="fs-sm text-muted mb-0">
<li>Interventi, calendario interventi, storico interventi (per la programmazione esterna delle assistenze)</li>
<li>Riparazioni, storico riparazioni (per la gestione interna delle riparazioni)</li>
<li>Apparecchiature clienti</li>
<li>Contratti, calendario contratti</li>
<li>Programmazione interventi</li>
<li>Ticket</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
<tr>
<td>
<p class="mb-1">
MULTIPOSTAZIONE
</p>
<ul class="fs-sm text-muted mb-0">
<li>Possibilità di lavorare contemporaneamente da più postazioni sullo stesso archivio (condiviso su rete ethernet con massimo 5 postazioni attive simultaneamente).</li>
<li>Possibilità' di utilizzare la licenza su tutti i computer dell'azienda (con stessa Partita IVA)</li>
</ul>
</td>
<td class="text-reset text-decoration-none text-center align-top">
<span class="badge fs-4 badge-rounded-circle bg-success-soft"><i
class="fe fe-check"></i></span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div> <!-- / .row -->
</div> <!-- / .container -->
</section>
<!-- CTA -->
<section class="py-10 py-md-10 bg-dark">
<div class="container">
<div class="row justify-content-center">
<div class="col-12 col-md-10 col-lg-8 text-center">
<!-- Heading -->
<h1 class="display-4 text-white">
Prova tutte le caratteristiche ...
</h1>
<!-- Text -->
<p class="fs-lg text-muted mb-6 mb-md-8">
Scarica il software gratuitamente e prova tutte le sue funzionalità
</p>
<!-- Button -->
<a href="<?= $this->url(['action' => 'downloadsoftware'], 'it', true); ?>"
class="btn btn-primary-desat lift">
Provalo Ora <i class="fe fe-arrow-right ms-2"></i>
</a>
</div>
</div> <!-- / .row -->
</div> <!-- / .container -->
</section>
<!-- CURVE -->
<div class="position-relative">
<div class="shape shape-bottom shape-fluid-x text-gray-200">
<svg viewBox="0 0 2880 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 48h2880V0h-720C1442.5 52 720 0 720 0H0v48z" fill="currentColor"/>
</svg>
</div>
</div>
@@ -0,0 +1,94 @@
<section class="pt-8 pt-md-11 pb-8 pb-md-14">
<div class="container">
<div class="row align-items-center">
<div class="col-12 col-md">
<!-- Heading -->
<h1 class="display-4 mb-2">
Copyright
</h1>
</div>
</div> <!-- / .row -->
<div class="row">
<div class="col-12">
<!-- Divider -->
<hr class="my-6 my-md-8">
</div>
</div> <!-- / .row -->
<div class="row">
<div class="col-12 col-md-12" style="text-align: justify;">
<!-- Heading -->
<h3 class="mt-5">
OGGETTO
</h3>
<!-- Text -->
<p class="">
Il servizio di assistenza telefonica, esclusivamente sui software della Adriatica Sistemi che la
prevedono, viene fornito dalle ore 8.30 alle 13.00 e dal lunedì al venerdì, esclusi i giorni festivi
e feriali non lavorativi per un massimo di 150 minuti annui, suddivisi in scatti da dieci minuti
ciascuno. Per le telefonate di durata inferiore a dieci minuti, verrà in ogni caso conteggiato uno
scatto o una chiamata, con un massimo di n. 15 telefonate annue. É esclusa la presenza in loco di
personale tecnico ed ogni fornitura di materiali o pezzi di ricambio. Il servizio di assistenza
telefonica fornisce al Cliente la possibilità di parlare al telefono con un tecnico che potrà anche
operare in teleassistenza (se il computer su cui bisogna intervenire dispone di una connessione
internet) e riguarda la risoluzione di problemi o la consulenza circa l'utilizzo di tutti i software
prodotti da Adriatica Sistemi, regolarmente acquistati e licenziati. Sono esclusi dal servizio i
prodotti in versione DEMO e i prodotti di terzi. Il mancato utilizzo delle telefonate a
disposizione, sia esso totale o parziale, non dà diritto alla restituzione del prezzo pattuito.
</p>
<!-- Text -->
<h3>
RISERVATEZZA
</h3>
<p class="">
La Adriatica Sistemi si impegna a prendere ogni ragionevole misura per assicurare che tutte le
informazioni di carattere segreto o riservato conosciute dal Cliente che rimangano tali, come pure
tutti i dati elaborati in ordine a quelle informazioni.
</p>
<!-- Text -->
<h3>
COPYRIGHT
</h3>
<p class="">
La Adriatica Sistemi rimane l'unica titolare dei diritti proprietari e di sfruttamento economico
relativi a invenzioni e programmi (inclusi software, documentazione e programmi scritti, studi, ecc)
e a quant'altro sia stato preparato, realizzato, sviluppato in funzione dei servizi acquistati dal
Cliente, al quale è concesso solo un diritto d'uso limitato e non trasferibile.
</p>
<h3>RESPONSABILITA'</h3>
<p class="">
La Adriatica Sistemi si impegna ad impiegare la migliore tecnologia di cui è a conoscenza e le
migliori risorse a sua disposizione per fornire i Servizi oggetto del presente contratto. Il Cliente
conviene e concorda che Adriatica Sistemi non potrà in alcun caso essere ritenuta responsabile dei
ritardi o malfunzionamenti nella prestazione dei Servizi dipendenti da eventi fuori dal ragionevole
controllo della stessa quali, a titolo esemplificativo: (i) eventi di forza maggiore; (ii) eventi
dipendenti da fatto di terzi quali, a titolo meramente esemplificativo, l'interruzione o il
malfunzionamento dei servizi degli operatori di telecomunicazioni e/o delle linee elettriche; (iii)
malfunzionamento dei terminali o degli altri sistemi di comunicazione utilizzati dal Cliente. In
caso di interruzione del Servizio la Adriatica Sistemi si impegna a ripristinare il Servizio nel
minor tempo possibile. Il Cliente, inoltre, conviene e concorda che Adriatica Sistemi non potrà in
alcun caso essere ritenuta responsabile per atti od omissioni compiuti dal Cliente e in contrasto
con le obbligazioni da questi assunte ai sensi delle presenti condizioni o di quelle del singolo
software acquistato, così come non potrà essere ritenuta responsabile per malfunzionamenti dovuti a
vizi dei mezzi indispensabili all'accesso, ad un uso improprio degli stessi e/o delle modalità di
accesso al servizio da parte del Cliente o di terzi. La Adriatica Sistemi non potrà essere in nessun
caso ritenuta responsabile nei confronti del Cliente o di terzi per perdita di profitto, mancato
guadagno, né per qualsiasi altra forma di lucro cessante o danno indiretto e consequenziale connesso
all'esecuzione del presente contratto.
</p>
</div>
</div> <!-- / .row -->
</div> <!-- / .container -->
</section>
@@ -0,0 +1,26 @@
<!-- CTA -->
<section class="py-10 py-md-14 bg-dark">
<div class="container">
<div class="row justify-content-center">
<div class="col-12 col-md-10 col-lg-8 text-center">
<!-- Heading -->
<h1 class="display-4 text-white">
Avvio del download ...
</h1>
<!-- Text -->
<p class="fs-lg text-muted mb-6 mb-md-8">
è in corso il download del software Fattura Facile<br>
in caso non dovesse avviarsi automaticamente utilizzare il pulsante.
</p>
<!-- Button -->
<a href="https://www.gestionespiaggia.it/downloads/fatturafacileinstall.exe" class="btn btn-primary-desat lift">
Scarica <i class="fe fe-arrow-right ms-2"></i>
</a>
</div>
</div> <!-- / .row -->
</div> <!-- / .container -->
</section>
@@ -0,0 +1,380 @@
<!-- WELCOME -->
<section class="position-relative py-8 py-md-11 mb-9">
<!-- Shape -->
<div class="shape shape-fluid-x shape-blur-1 text-gray-200">
<svg viewBox="0 0 723 569" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M703.969 241.602l-.006-.003C716.081 262.97 723 287.677 723 314c0 68.917-47.425 126.757-111.42 142.665L246.7 556.937C226.465 564.729 204.481 569 181.5 569 81.26 569 0 487.74 0 387.5c0-34.256 9.49-66.296 25.985-93.633l-.016.008L141.512 77.548C162.753 33.305 207.123 2.273 258.951.12l.008-.12h251.04l.003.01c41.848.557 78.081 24.378 96.356 59.12l.001-.005 97.61 182.477z"
fill="currentColor"/>
</svg>
</div>
<!-- Contetn -->
<div class="container">
<div class="row align-items-center">
<div class="col-12 col-md-6 order-md-2">
<!-- Image -->
<div class="img-skewed img-skewed-start mb-8 mb-md-0">
<img src="assets/img/screenshots/desktop/home_screen.png" alt="..."
class="screenshot img-fluid mw-md-130" data-aos="img-skewed-item-start" data-aos-delay="100">
</div>
</div>
<div class="col-12 col-md-6 order-md-1" data-aos="fade-up">
<!-- Heading -->
<h1 class="display-3">
Fattura
<span class="text-primary">Facile</span>
</h1>
<!-- Text -->
<p class="lead text-muted mb-6 mb-md-8">
Il software gestionale che permette di gestire con estrema semplicità fatture, fatture elettroniche,
d.d.t., preventivi, magazzino e scadenze.
</p>
<!-- Buttons -->
<a href="<?= $this->url(['action' => 'downloadsoftware'], 'it', true); ?>"
class="btn btn-primary me-1 lift">
Download <i class="fe fe-arrow-right ms-3"></i>
</a>
<a href="<?= $this->url(['action' => 'acquista'], 'it', true); ?>" class="btn btn-primary-soft lift">
Acquista
</a>
</div>
</div> <!-- / .row -->
</div> <!-- / .container -->
</section>
<!-- FEATURES -->
<section class="py-8 py-md-11 bg-white">
<div class="container">
<div class="row">
<div class="col-12 col-md-4" data-aos="fade-up">
<!-- Icon -->
<div class="icon text-primary mb-3">
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<polygon points="0 0 24 0 24 24 0 24"/>
<path d="M4.85714286,1 L11.7364114,1 C12.0910962,1 12.4343066,1.12568431 12.7051108,1.35473959 L17.4686994,5.3839416 C17.8056532,5.66894833 18,6.08787823 18,6.52920201 L18,19.0833333 C18,20.8738751 17.9795521,21 16.1428571,21 L4.85714286,21 C3.02044787,21 3,20.8738751 3,19.0833333 L3,2.91666667 C3,1.12612489 3.02044787,1 4.85714286,1 Z M8,12 C7.44771525,12 7,12.4477153 7,13 C7,13.5522847 7.44771525,14 8,14 L15,14 C15.5522847,14 16,13.5522847 16,13 C16,12.4477153 15.5522847,12 15,12 L8,12 Z M8,16 C7.44771525,16 7,16.4477153 7,17 C7,17.5522847 7.44771525,18 8,18 L11,18 C11.5522847,18 12,17.5522847 12,17 C12,16.4477153 11.5522847,16 11,16 L8,16 Z"
fill="#000000" fill-rule="nonzero" opacity="0.3"/>
<path d="M6.85714286,3 L14.7364114,3 C15.0910962,3 15.4343066,3.12568431 15.7051108,3.35473959 L20.4686994,7.3839416 C20.8056532,7.66894833 21,8.08787823 21,8.52920201 L21,21.0833333 C21,22.8738751 20.9795521,23 19.1428571,23 L6.85714286,23 C5.02044787,23 5,22.8738751 5,21.0833333 L5,4.91666667 C5,3.12612489 5.02044787,3 6.85714286,3 Z M8,12 C7.44771525,12 7,12.4477153 7,13 C7,13.5522847 7.44771525,14 8,14 L15,14 C15.5522847,14 16,13.5522847 16,13 C16,12.4477153 15.5522847,12 15,12 L8,12 Z M8,16 C7.44771525,16 7,16.4477153 7,17 C7,17.5522847 7.44771525,18 8,18 L11,18 C11.5522847,18 12,17.5522847 12,17 C12,16.4477153 11.5522847,16 11,16 L8,16 Z"
fill="#000000" fill-rule="nonzero"/>
</g>
</svg>
</div>
<!-- Heading -->
<h3>
Gestione Documenti
</h3>
<!-- Text -->
<p class="text-muted mb-6 mb-md-0">
Crea rapidamente e facilemente tutti i documenti di cui hai bisogno Fatture,Fatture Elettroniche,
D.D.T., Preventivi, Ordini clienti / fornitori, Documenti da fornitore
</p>
</div>
<div class="col-12 col-md-4" data-aos="fade-up" data-aos-delay="50">
<!-- Icon -->
<div class="icon text-primary mb-3">
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<g fill="none" fill-rule="evenodd">
<path d="M0 0h24v24H0z"/>
<path d="M17.272 8.685a1 1 0 111.456-1.37l4 4.25a1 1 0 010 1.37l-4 4.25a1 1 0 01-1.456-1.37l3.355-3.565-3.355-3.565zm-10.544 0L3.373 12.25l3.355 3.565a1 1 0 01-1.456 1.37l-4-4.25a1 1 0 010-1.37l4-4.25a1 1 0 011.456 1.37z"
fill="#335EEA"/>
<rect fill="#335EEA" opacity=".3" transform="rotate(15 12 12)" x="11" y="4" width="2"
height="16" rx="1"/>
</g>
</svg>
</div>
<!-- Heading -->
<h3>
Fattura Elettronica
</h3>
<!-- Text -->
<p class="text-muted mb-6 mb-md-0">
Senza avvalersi di nessun altro strumento o servizio, inviare, firmare, ricevere e conservare le
Fatture Elettroniche, il tutto rapidamente e dall'interno del software.
</p>
</div>
<div class="col-12 col-md-4" data-aos="fade-up" data-aos-delay="100">
<!-- Icon -->
<div class="icon text-primary mb-3">
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect x="0" y="0" width="24" height="24"/>
<path d="M18,2 L20,2 C21.6568542,2 23,3.34314575 23,5 L23,19 C23,20.6568542 21.6568542,22 20,22 L18,22 L18,2 Z"
fill="#000000" opacity="0.3"/>
<path d="M5,2 L17,2 C18.6568542,2 20,3.34314575 20,5 L20,19 C20,20.6568542 18.6568542,22 17,22 L5,22 C4.44771525,22 4,21.5522847 4,21 L4,3 C4,2.44771525 4.44771525,2 5,2 Z M12,11 C13.1045695,11 14,10.1045695 14,9 C14,7.8954305 13.1045695,7 12,7 C10.8954305,7 10,7.8954305 10,9 C10,10.1045695 10.8954305,11 12,11 Z M7.00036205,16.4995035 C6.98863236,16.6619875 7.26484009,17 7.4041679,17 C11.463736,17 14.5228466,17 16.5815,17 C16.9988413,17 17.0053266,16.6221713 16.9988413,16.5 C16.8360465,13.4332455 14.6506758,12 11.9907452,12 C9.36772908,12 7.21569918,13.5165724 7.00036205,16.4995035 Z"
fill="#000000"/>
</g>
</svg>
</div>
<!-- Heading -->
<h3>
Contatti
</h3>
<!-- Text -->
<p class="text-muted mb-0">
Gestisci le anagrafiche clienti e sfrutta tutte le funzionalità di Ricerca avanzata, Gestione
allegati, Banca e pagamenti, Destinazioni, Articoli, Stampa etichette
</p>
</div>
</div> <!-- / .row -->
<div class="row mt-10">
<div class="col-12 col-md-4" data-aos="fade-up">
<!-- Icon -->
<div class="icon text-primary mb-3">
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect x="0" y="0" width="24" height="24"/>
<path d="M4,7 L20,7 L20,19.5 C20,20.3284271 19.3284271,21 18.5,21 L5.5,21 C4.67157288,21 4,20.3284271 4,19.5 L4,7 Z M10,10 C9.44771525,10 9,10.4477153 9,11 C9,11.5522847 9.44771525,12 10,12 L14,12 C14.5522847,12 15,11.5522847 15,11 C15,10.4477153 14.5522847,10 14,10 L10,10 Z"
fill="#000000"/>
<rect fill="#000000" opacity="0.3" x="2" y="3" width="20" height="4" rx="1"/>
</g>
</svg>
</div>
<!-- Heading -->
<h3>
Magazzino
</h3>
<!-- Text -->
<p class="text-muted mb-6 mb-md-0">
Gestione degli articoli di magazzino e generazione automatica dello storico dei movimenti, gestione
listini, e calcolo del valore di magazzino, lotti e allegati.
</p>
</div>
<div class="col-12 col-md-4" data-aos="fade-up" data-aos-delay="50">
<!-- Icon -->
<div class="icon text-primary mb-3">
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect x="0" y="0" width="24" height="24"/>
<path d="M13.6855025,18.7082217 C15.9113859,17.8189707 18.682885,17.2495635 22,17 C22,16.9325178 22,13.1012863 22,5.50630526 L21.9999762,5.50630526 C21.9999762,5.23017604 21.7761292,5.00632908 21.5,5.00632908 C21.4957817,5.00632908 21.4915635,5.00638247 21.4873465,5.00648922 C18.658231,5.07811173 15.8291155,5.74261533 13,7 C13,7.04449645 13,10.79246 13,18.2438906 L12.9999854,18.2438906 C12.9999854,18.520041 13.2238496,18.7439052 13.5,18.7439052 C13.5635398,18.7439052 13.6264972,18.7317946 13.6855025,18.7082217 Z" fill="#000000"/>
<path d="M10.3144829,18.7082217 C8.08859955,17.8189707 5.31710038,17.2495635 1.99998542,17 C1.99998542,16.9325178 1.99998542,13.1012863 1.99998542,5.50630526 L2.00000925,5.50630526 C2.00000925,5.23017604 2.22385621,5.00632908 2.49998542,5.00632908 C2.50420375,5.00632908 2.5084219,5.00638247 2.51263888,5.00648922 C5.34175439,5.07811173 8.17086991,5.74261533 10.9999854,7 C10.9999854,7.04449645 10.9999854,10.79246 10.9999854,18.2438906 L11,18.2438906 C11,18.520041 10.7761358,18.7439052 10.4999854,18.7439052 C10.4364457,18.7439052 10.3734882,18.7317946 10.3144829,18.7082217 Z" fill="#000000" opacity="0.3"/>
</g>
</svg>
</div>
<!-- Heading -->
<h3>
Scadenzario
</h3>
<!-- Text -->
<p class="text-muted mb-6 mb-md-0">
Consulta le scadenza dei pagamenti di clienti e fornotori, effettua un saldo parziale della
scadenza, notifica crediti in scadenza o scaduti.
</p>
</div>
<div class="col-12 col-md-4" data-aos="fade-up" data-aos-delay="100">
<!-- Icon -->
<div class="icon text-primary mb-3">
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect x="0" y="0" width="24" height="24"/>
<rect fill="#000000" opacity="0.3" x="17" y="4" width="3" height="13" rx="1.5"/>
<rect fill="#000000" opacity="0.3" x="12" y="9" width="3" height="8" rx="1.5"/>
<path d="M5,19 L20,19 C20.5522847,19 21,19.4477153 21,20 C21,20.5522847 20.5522847,21 20,21 L4,21 C3.44771525,21 3,20.5522847 3,20 L3,4 C3,3.44771525 3.44771525,3 4,3 C4.55228475,3 5,3.44771525 5,4 L5,19 Z"
fill="#000000" fill-rule="nonzero"/>
<rect fill="#000000" opacity="0.3" x="7" y="11" width="3" height="6" rx="1.5"/>
</g>
</svg>
</div>
<!-- Heading -->
<h3>
Statistiche
</h3>
<!-- Text -->
<p class="text-muted mb-0">
Consulta le statistiche per visualizzare la lista documenti e totali per cliente, o il dettaglio
articoli, totali iva ed elenco clienti / fornitori.
</p>
</div>
</div>
<div class="row mt-10 justify-content-center">
<div class="col-12 col-md-6" data-aos="fade-up">
<!-- Button -->
<a href="<?= $this->url(['action' => 'caratteristiche'], 'it', true); ?>" class="btn w-100 btn-primary d-flex align-items-center lift">
Scopri tutte le caratteristiche <i class="fe fe-arrow-right ms-auto"></i>
</a>
</div>
</div>
</div> <!-- / .container -->
</section>
<div class="position-relative">
<div class="shape shape-bottom shape-fluid-x text-light">
<svg viewBox="0 0 2880 480" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M720 0c720 240 1440 240 1440 240h720v240H0V0h720z" fill="currentColor"></path></svg> </div>
</div>
<!-- PRICING -->
<section class="pt-9 pb-10 py-md-11 bg-gradient-light-white">
<div class="container">
<div class="row justify-content-center">
<div class="col-12 col-md-10 col-lg-8 text-center">
<!-- Heading -->
<h2>
<span class="text-primary">Prezzi</span>
</h2>
<!-- Text -->
<p class="lead text-gray-700">
Un unica licenza annuale con tutte le funzionalità incluse
</p>
</div>
</div> <!-- / .row -->
<div class="row justify-content-center mt-3">
<div class="col-6 col-md-5 col-lg-5">
<!-- Card -->
<div class="card card-border card-border-xl border-primary shadow-light-lg mb-6 mb-md-0 lift lift-lg">
<div class="card-body">
<!-- Badge -->
<h6 class="fw-bold text-uppercase text-center text-success mb-5">Enterprise</h6>
<!-- Price -->
<div class="d-flex justify-content-center">
<span class="h2 mb-0 mt-2">€</span>
<span class="price display-2 mb-0" data-annual="29" data-monthly="49">185</span>
<span class="h2 align-self-end mb-1 ms-1"> + iva</span>
</div>
<!-- Text -->
<p class="text-center text-muted mb-6 mb-md-8">
Annuali
</p>
<!-- List -->
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-success-soft mt-1 me-4">
<i class="fe fe-check"></i>
</span>
<!-- Text -->
<p>
Gestione documenti
</p>
</div>
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-success-soft mt-1 me-4">
<i class="fe fe-check"></i>
</span>
<!-- Text -->
<p>
Fatturazione elettronica con 1000 fatture incluse
</p>
</div>
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-success-soft mt-1 me-4">
<i class="fe fe-check"></i>
</span>
<!-- Text -->
<p>
Gestione anagrafiche clienti e articoli
</p>
</div>
<div class="d-flex">
<!-- Badge -->
<span class="badge badge-rounded-circle bg-success-soft mt-1 me-4">
<i class="fe fe-check"></i>
</span>
<!-- Text -->
<p class="mb-0">
Assistenza telefonica inclusa per un anno <a
href="<?= $this->url(['action' => 'assistenza'], 'it', true); ?>">qui tutti i
dettagli</a>
</p>
</div>
</div>
</div>
</div>
</div> <!-- / .row -->
</div> <!-- / .container -->
</section>
<!-- CTA -->
<section class="py-10 py-md-14 bg-dark">
<div class="container">
<div class="row justify-content-center">
<div class="col-12 col-md-10 col-lg-8 text-center">
<!-- Heading -->
<h1 class="display-4 text-white">
Scopri tutte le caratteristiche ...
</h1>
<!-- Text -->
<p class="fs-lg text-muted mb-6 mb-md-8">
Scarica il software gratuitamente e prova tutte le sue funzionalità
</p>
<!-- Button -->
<a href="<?= $this->url(['action' => 'downloadsoftware'], 'it', true); ?>"
class="btn btn-primary-desat lift">
Provalo Ora <i class="fe fe-arrow-right ms-2"></i>
</a>
</div>
</div> <!-- / .row -->
</div> <!-- / .container -->
</section>
<!-- CURVE -->
<div class="position-relative">
<div class="shape shape-bottom shape-fluid-x text-gray-200">
<svg viewBox="0 0 2880 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 48h2880V0h-720C1442.5 52 720 0 720 0H0v48z" fill="currentColor"/>
</svg>
</div>
</div>
@@ -0,0 +1,71 @@
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="theme-color" content="#fff">
<title><?= $this->datiAziendali['NomeSito']; ?></title>
<link href="https://fonts.googleapis.com/css?family=Open+Sans|Pacifico" rel="stylesheet">
<style>
html {
width:100%;
height:100%;
background:#fff;
font-family: 'Open Sans', sans-serif;
}
.center-box{
padding: 10px;
text-align:center;
max-width: 450px;
position: fixed;
top: 45%;
left: 50%;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
z-index: 100;
}
.center-box img{
width: 100%;
}
h1{
color: #333;
font-size: 2.7em;
border-top: 1px solid #fff;
margin-bottom: 5px;
font-weight: normal;
padding-top: 10px;
margin-top: 0;
}
img{
margin-bottom: 15px;
}
a{
color: #777;
}
</style>
</head>
<body>
<div class="center-box">
<?php if(file_exists(APPLICATION_PATH . "/../public/baseImg/logo_as_full.png")): ?>
<img src="../public/baseImg/logo_as_full.png" />
<?php else: ?>
<img src="../public/baseImg/no_logo.png" />
<?php endif; ?>
<a href="mailto:<?= $this->Config('email_mittente'); ?>"><?= $this->Config('email_mittente'); ?></a>
</div>
</body>
</html>
@@ -0,0 +1,29 @@
<?php
/**
* Description of Bootstrap
*/
class Monitoring_Bootstrap extends Zend_Application_Module_Bootstrap
{
public function _init()
{
}
public function _initPersonalRouter(){
$router= Zend_Controller_Front::getInstance()->getRouter();
$router->addRoute(
'monitoring',
new Zend_Controller_Router_Route('monitoring/:controller/:action',
array(
'module'=>'monitoring',
'controller'=>'index',
'action'=>'index'
)
)
);
}
}
@@ -0,0 +1,115 @@
<?php
class Monitoring_IndexController extends App_Controller_Sections_Section
{
protected $_genericModel;
protected $_authService;
protected $_ipManager;
protected $_parametriSito;
protected $_datiAziendali;
public $_configs;
public $_MENUITEM;
public $_PAGETITLE;
public $_ICONTITLE;
public $_SECONDLEVEL;
public $_SECONDLEVEL_ACTION;
public $_SIDEBAR_COLLAPSED;
public $_EVENTLOADER;
public function init()
{
$this->_helper->layout->setLayout('admin');
$this->_authService = new App_Service_Auth();
$this->_genericModel = new Application_Model_Generic();
$this->_configs = new App_Service_ConfigManager();
$this->_ipManager = new App_Service_IpManager();
$this->_parametriSito = new App_Service_JsonConfiguration('parametri_sito');
$this->_datiAziendali = new App_Service_JsonConfiguration('dati_aziendali');
$this->_MENUITEM = 'dashboard';
$this->_PAGETITLE = 'DashBoard';
$this->_ICONTITLE = 'fa-dashboard';
$this->_SECONDLEVEL = null;
$this->_SECONDLEVEL_ACTION = null;
$this->_EVENTLOADER = FALSE;
}
public function preDispatch()
{
$this->view->moduleName = 'monitoring';
if ($this->_getParam('update')) {
$this->view->update = $this->_getParam('update');
} else {
$this->view->update = '0';
}
if ($this->_getParam('err')) {
$this->view->error = $this->_getParam('err');
} else {
$this->view->error = '0';
}
//Controllo delle notifiche
$nNot = $this->_genericModel->countFiltered('Errorlog', array('state = ?' => 1));
$this->view->notification = $nNot;
if ($nNot > 0) {
$this->view->notificationlist = $this->_genericModel->customQuery("SELECT COUNT(*) as tot, section, state FROM `error_log` WHERE state = '1' GROUP BY section");
}
$this->_SIDEBAR_COLLAPSED = $_COOKIE['ui_sidebar_collapsed'];
$this->view->enableTestSdk = $this->_ipManager->controllaAbilitazioneTestSdk();
}
public function postDispatch()
{
$this->view->action = $this->getRequest()->getActionName();
$this->view->menu = $this->_MENUITEM;
$this->view->pageTitle = $this->_PAGETITLE;
$this->view->iconTitle = $this->_ICONTITLE;
$this->view->secondLevel = $this->_SECONDLEVEL;
$this->view->secondLevelAction = $this->_SECONDLEVEL_ACTION;
$this->view->sideBarCollapsed = $this->_SIDEBAR_COLLAPSED;
$this->view->eventLoader = $this->_EVENTLOADER;
$this->view->parametriSito = $this->_parametriSito->getAllParams();
$this->view->datiAziendali = $this->_datiAziendali->getAllParams();
}
public function logoutAction()
{
$this->_authService->clear();
return $this->_helper->redirector('index', 'index', 'default');
}
public function indexAction()
{
}
/*===============================================================================================
* =========================== FUNZIONI PRIVATE DEL CONTROLLER =========================
* =============================================================================================*/
public function getMainModel()
{
return $this->_genericModel;
}
} //Close Class
@@ -0,0 +1,47 @@
<?php if ($this->pageCount > 1): ?>
<ul class="pagination pagination-sm float-right">
<!-- Link alla prima pagina -->
<?php if (isset($this->previous)): ?>
<li class="page-item"><a class="page-link" href="<?= $this -> url(array('page' => $this -> first,'count' => $this -> count,'action'=>$this->action ,'module'=>$this->moduleName),'filterpager',true); ?>"><i class="fa fa-angle-double-left"></i></a>
<?php else: ?>
<li class="page-item disabled"><a class="page-link" href="#"><i class="fa fa-angle-double-left"></i></a></li>
<?php endif; ?>
<!-- Link alla pagina precedente -->
<?php if (isset($this->previous)): ?>
<li class="page-item"><a class="page-link" href="<?= $this -> url(array('page' => $this -> previous,'count' => $this -> count,'action'=>$this->action, 'module'=>$this->moduleName),'filterpager',true); ?>"><i class="fa fa-angle-left"></i></a><li>
<?php else: ?>
<?php endif; ?>
<!-- Link pagina numerata -->
<?php foreach ($this->pagesInRange as $page): ?>
<?php if ($page != $this->current): ?>
<li class="page-item" style="font-size: 10px;"><a class="page-link" href="<?php echo $this -> url(array('page' => $page,'count' => $this -> count,'action'=>$this->action, 'module'=>$this->moduleName),'filterpager',false); ?>">
<?php echo $page; ?>
</a></li>
<?php else: ?>
<li class="active page-item" style="font-size: 10px;"><a class="page-link" href="<?php echo $this -> url(array('page' => $page,'count' => $this -> count,'action'=>$this->action, 'module'=>$this->moduleName),'filterpager',false); ?>"><?php echo $page; ?></a></li>
<?php endif; ?>
<?php endforeach; ?>
<!-- Link alla pagina successiva -->
<?php if (isset($this->next)): ?>
<li class="page-item"><a class="page-link" href="<?= $this -> url(array('page' => $this -> next,'count' => $this -> count,'action'=>$this->action, 'module'=>$this->moduleName),'filterpager',false); ?>"><i class="fa fa-angle-right"></i></a></li>
<?php else: ?>
<?php endif; ?>
<!-- Link all'ultima pagina -->
<?php if (isset($this->next)): ?>
<li class="page-item" style="margin-right:10px;"><a class="page-link" href="<?= $this -> url(array('page' => $this -> last,'count' => $this -> count,'action'=>$this->action),'filterpager',false); ?>"><i class="fa fa-angle-double-right"></i></a></li>
<?php else: ?>
<li class="page-item disabled"><a class="page-link" href="#"><i class="fa fa-angle-double-right"></i></a></li>
<?php endif; ?>
<div class="text-counter">
dal: <?php echo $this -> firstItemNumber; ?> - <?= $this -> lastItemNumber; ?> di <?= $this -> totalItemCount; ?>
</div>
</ul>
<?php endif; ?>
@@ -0,0 +1,54 @@
<div class="modal fade" id="modal" data-form="modalForm" tabindex="-1" data-backdrop="false"
role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div id="modal-loader" class="overlay d-none justify-content-center align-items-center">
<i class="fas fa-2x fa-sync fa-spin"></i>
</div>
<div class="modal-header">
<h5 class="modal-title flot-left" id="myModalLabel"><i
class="fa fa-fw <?= ($this->iconTitle) ? $this->iconTitle : 'fa-pencil'; ?> modal_icon"></i>
Log</h5>
<button id="close-modal" type="button" class="close float-right" data-dismiss="modal"
aria-hidden="true">&times;
</button>
</div>
<div class="modal-body pdb-0">
<form id="modalForm" name="modalForm" class="compact-form no-border-radius"
action="<?= $this->url(array('controller' => 'index', 'action' => 'salva' . $this->resourceName), $this->moduleName, true); ?>"
data-get="<?= $this->url(array('controller' => 'index', 'action' => 'get' . $this->resourceName), $this->moduleName, true); ?>"
data-delete="<?= $this->url(array('controller' => 'index', 'action' => 'delete' . $this->resourceName, 'id' => $this->id), $this->moduleName, true); ?>"
method="post" role="form">
<input type="hidden" value="" class="form-control" id="id" name="id" form="modalForm" required>
<div class="row">
<div class="col-md-12">
<div id="ErrorDescription" class="alert alert-warning alert-sm d-none"></div>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" id="undo" class="btn btn-default pull-left" data-dismiss="modal"><i
class="fa fa-times"></i>
Chiudi
</button>
<button type="button" id="save" op="insert" class="btn btn-success"><i class="fa fa-save"></i>
Salva
</button>
</div>
</div>
</div>
</div>
@@ -0,0 +1,26 @@
<div class="col-12 col-md-4 no-padding-r-sm">
<input type="text" id="data_search" name="data" daterangepicker
value="<?= $this->search_params['data']; ?>" class="form-control no-border-right-sm"
placeholder="Data Inserimento"/>
<input type="hidden" value="DATERANGE" name="dataOP" id="dataOP"/>
</div>
<div class="col-12 col-md-6 no-padding-r-l-sm">
<input type="text" id="ip_search" name="ip" value="<?= $this->search_params['ip']; ?>"
class="form-control no-border-right-sm" placeholder="Ip"/>
<input type="hidden" value="LIKE" name="ipOP" id="ipOP"/>
</div>
<div class="col-12 col-md-2 no-padding-l-sm">
<?php $totFilter = count($this->CleanFiltersParam($this->search_params)); ?>
<div class="btn-group">
<button type="submit" title="Cerca" class="btn btn-brand btn-flat"><i
class="fa fa-search fa-fw"></i></button>
<a href="<?= $this->url(array('module' => $this->moduleName, 'action' => 'list' . $this->resourceName, 'reset' => 'true'), 'default', true); ?>"
data-toggle="tooltip" data-container="body" data-placement="right"
title="Reset (Filtri attivi: <?= $totFilter; ?> )"
class="btn btn-<?= ($totFilter > 0) ? 'danger' : 'info'; ?> btn-flat"
type="button"><i class="fa fa-times fa-fw"></i></a>
</div>
</div>
@@ -0,0 +1,170 @@
<div class="box box-no-border box-no-shadow pd10 mb-0">
<div class="box-header">
<div class="col-12">
<!--FORM DI RICERCA-->
<div class="float-left box-title search-left hidden-xs">
<form class="form-horizontal" id="searchForm" name="searchForm" method="post"
action="<?= $this->url(array('controller' => 'index', 'action' => 'list' . $this->resourceName), $this->moduleName, true); ?>">
<div class="row">
<?= $this->render("index/$this->resourceName/_searchBlock.phtml"); ?>
</div>
<input type="hidden" id="order" name="order" class="hidden" value="<?= $this->order; ?>"/>
<input type="hidden" id="tipoOrder" name="tipoOrder" class="hidden" value="<?= $this->tipoOrder; ?>"/>
</form>
</div>
<!--BLOCCO FUNZIONI LATO SINISTRA-->
<div class="float-right box-title search-right">
<div class="btn-group">
<?php if ($this->isActiveNewInsert): ?>
<button data-toggle="tooltip" title="Nuovo" id="new" class="btn btn-brand btn-flat" type="button"
data-target="#Modal" data-toggle="modal"><i class="fa fa-plus"></i></button>
<?php endif; ?>
<?php if ($this->isActiveFilterModal): ?>
<button data-toggle="tooltip" title="Filtra" id="filterData" class="btn btn-brand btn-flat"
type="button" data-target="#filterModal" data-toggle="modal">
<?php if ($totFilter > 0): ?>
<span class="badge bg-red"><?= $totFilter; ?></span>
<?php endif; ?>
<i class="fa fa-filter"></i>
</button>
<?php endif; ?>
<div class="dropdown">
<button class="btn btn-flat btn-brand dropdown-toggle" type="button" id="dropdownMenuButton"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="d-none-xs">Selezionati</span> <span class="caret"></span>
</button>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
<a id="delete_select" class="dropdown-item"
href="<?= $this->url(array('controller' => 'index', 'action' => 'deleteselect' . $this->resourceName), $this->moduleName, true); ?>">
<i class="fa fa-trash fa-fw"></i> Elimina</a>
</div>
</div>
</div>
</div>
<div class="clearfix"></div>
</div>
</div>
<!-- INIZIO TABELLA -->
<div class="box-body table-responsive table-wrapper">
<table class="table table-border table-striped flot-header">
<thead>
<?= $this->render("index/$this->resourceName/th.phtml") ?>
</thead>
<tbody id="tablebody">
<?php if (count($this->table) > 0): ?>
<?php foreach ($this->table as $key => $value): ?>
<?= $this->partial("index/$this->resourceName/td.phtml", $value) ?>
<?php endforeach; ?>
<?php else: ?>
<tr>
<?php if ($totFilter <= 0): ?>
<td id="norows" class="no-rows" colspan="6">
<i class="fa fa-exclamation-triangle"></i>
Nessun record presente
</td>
<?php else: ?>
<td id="norows" class="no-rows" colspan="6">
<i class="fa fa-exclamation-triangle"></i>
Nessun risultato trovato in base alla ricerca
</td>
<?php endif; ?>
</tr>
<?php endif; ?>
</tbody>
</table>
</div>
<div class="box-footer clearfix">
<div class="col-12">
<div class="row">
<!--FUNZIONE MULTIPLE-->
<div class="col-4 col-xs-12">
<div class="btn-group btn-group-sm float-left dropup d-none-xs dropdown-multifunction-down">
<button class="btn btn-default btn-flat" type="button">
Selezionati
</button>
<button class="btn btn-default btn-flat dropdown-toggle" data-toggle="dropdown" type="button">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu">
<a id="delete_select" class="dropdown-item"
href="<?= $this->url(array('controller' => 'index', 'action' => 'deleteselect' . $this->resourceName), $this->moduleName, true); ?>">
<i class="fa fa-trash fa-fw"></i> Elimina</a>
</div>
</div>
</div>
<div class="col-8 col-xs-12">
<!--PAGINATOR FOOTER-->
<?php if ($this->table instanceof Zend_Paginator): ?>
<?= $this->paginationControl($this->table, 'Jumping', 'index/_paginator.phtml', array('action' => $this->action, 'count' => $this->count, 'moduleName'=>$this->moduleName)); ?>
<?php endif; ?>
<div class="pagination-counter float-right">
<form name="paginationCounter"
action="<?= $this->url(array('controller' => 'index', 'action' => 'list' . $this->resourceName, 'page' => $this->page, 'count' => $this->count), $this->moduleName, false); ?>"
class="" method="post" role="form">
<div class="input-group input-group-sm">
<label class="text-right d-none-xs mb-1" for="count">
<?php if ($this->totFiltrati != $this->totElementi): ?>
<span>Filtrati <?= $this->totFiltrati ?> su <?= $this->totElementi; ?> totali </span>
<?php else: ?>
<span>Tot. <?= $this->totElementi; ?></span>
<?php endif; ?>
</label>
<input type="text" class="form-control"
id="count" aria-describedby="inputGroup-sizing-sm"
value="" placeholder="<?= $this->count; ?>" name="count"/>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<?php if ($this->isActiveModalDetail): ?>
<?= $this->render("index/$this->resourceName/_modal.phtml"); ?>
<?php endif; ?>
<?php if ($this->isActiveFilterModal): ?>
<?= $this->render("index/$this->resourceName/_modalFilter.phtml"); ?>
<?php endif; ?>
<?php if ($this->idDetail > 0): ?>
<script type="text/javascript">
$(document).ready(function () {
edit(<?= $this->idDetail; ?>);
});
</script>
<?php endif; ?>
@@ -0,0 +1,41 @@
<tr data-id="<?= $this->id ?>">
<td class="text-center"><input type="checkbox" value="<?= $this->id ?>" name="select-items[]"
id="select-items"></td>
<td class="text-center"><?= $this->ExtractData($this->data, 'withtime', true); ?></td>
<td class="text-center"><?= $this->ip; ?></td>
<td>
<?php switch ($this->tipo):
case'admin': ?>
<span class="label label-danger">
<?php break;
case'monitoring': ?>
<span class="label label-warning">
<?php break;
case'forum': ?>
<span class="label label-info">
<?php break;
case 'bloggers': ?>
<span class="label bg-fuchsia">
<?php break;
case 'rivenditori': ?>
<span class="label bg-olive">
<?php break;
case'eWinfatt': ?>
<span class="label label-success">
<?php break; ?>
<?php endswitch; ?>
<?= ucfirst($this->tipo); ?></span>
</td>
<td>
<div class="text-center">
<button id="delete" class="btn btn-sm btn-danger btn-flat" type="button" data-toggle="tooltip"
data-container="body" title="Elimina">
<span class="fa fa-trash fa-fw"></span>
</button>
</div>
</td>
</tr>
@@ -0,0 +1,22 @@
<tr>
<th style="width:60px;" class="text-center">
<div class="dropdown">
<button class="btn btn-default btn-sm dropdown-toggle dropdown-icon" type="button" id="dropdownMenuButton"
data-boundary="window"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a id="select_all" class="dropdown-item" href="#"><i class="far fa-check-square fa-fw"></i> Tutti</a>
<a id="deselect_all" class="dropdown-item" href="#"><i class="far fa-square fa-fw"></i> Nessuno</a>
<a id="invert_all" class="dropdown-item" href="#"><i class="fa fa-check-square fa-fw"></i> Inverti</a>
</div>
</div>
</th>
<th data-ord="data" style="width:120px;" class="text-center">Data</th>
<th data-ord="ip" style="width:100px;"class="text-center">Ip</th>
<th data-ord="tipo" class="">Tipo</th>
<th width="100px"></th>
</tr>
@@ -0,0 +1,45 @@
<div class="modal fade" id="modal" data-form="modalForm" tabindex="-1" data-backdrop="false"
role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div id="modal-loader" class="overlay d-none justify-content-center align-items-center">
<i class="fas fa-2x fa-sync fa-spin"></i>
</div>
<div class="modal-header">
<h5 class="modal-title flot-left" id="myModalLabel"><i
class="fa fa-fw <?= ($this->iconTitle) ? $this->iconTitle : 'fa-pencil'; ?> modal_icon"></i>
Log</h5>
<button id="close-modal" type="button" class="close float-right" data-dismiss="modal"
aria-hidden="true">&times;
</button>
</div>
<div class="modal-body pdb-0">
<form id="modalForm" name="modalForm" class="compact-form no-border-radius"
action="<?= $this->url(array('controller' => 'index', 'action' => 'salva' . $this->resourceName), $this->moduleName, true); ?>"
data-get="<?= $this->url(array('controller' => 'index', 'action' => 'get' . $this->resourceName), $this->moduleName, true); ?>"
data-delete="<?= $this->url(array('controller' => 'index', 'action' => 'delete' . $this->resourceName, 'id' => $this->id), $this->moduleName, true); ?>"
method="post" role="form">
<div id="main_contenitor">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" id="undo" class="btn btn-default pull-left" data-dismiss="modal"><i
class="fa fa-times"></i>
Chiudi
</button>
</div>
</div>
</div>
</div>
@@ -0,0 +1,32 @@
<div class="col-12 col-md-4 no-padding-r-sm">
<input type="text" daterangepicker id="data" name="data" value="<?= $this->search_params['data']; ?>" class="form-control no-border-right-sm"
placeholder="Data Inserimento"/>
<input type="hidden" value="DATERANGE" name="dataOP" id="dataOP" />
</div>
<div class="col-12 col-md-3 no-padding-r-l-sm">
<input type="text" id="msg_search" name="msg" value="<?= $this->search_params['msg']; ?>" class="form-control no-border-right-sm" placeholder="Messaggio"/>
<input type="hidden" value="LIKE" name="msgOP" id="msgOP" />
</div>
<div class="col-12 col-md-3 no-padding-r-l-sm">
<select id="state" name="state" class="form-control no-border-right-sm">
<option <?= ($this->search_params['state'] == '') ? 'selected':''; ?> value="">Stato...</option>
<option <?= ($this->search_params['state'] == '1') ? 'selected':''; ?> value="1">New</option>
<option <?= ($this->search_params['state'] == '2') ? 'selected':''; ?> value="2">Pending</option>
<option <?= ($this->search_params['state'] == '3') ? 'selected':''; ?> value="3">Resolved</option>
<option <?= ($this->search_params['state'] == '4') ? 'selected':''; ?> value="4">Viewed</option>
</select>
</div>
<div class="col-12 col-md-2 no-padding-l-sm">
<?php $totFilter = count($this->CleanFiltersParam($this->search_params)); ?>
<div class="btn-group">
<button type="submit" title="Cerca" class="btn btn-brand btn-flat"><i class="fa fa-search fa-fw"></i></button>
<a href="<?= $this->url(array('module'=>$this->moduleName,'action'=>'list'.$this->resourceName,'reset'=>'true'),'default',true); ?>"
data-toggle="tooltip" data-container="body" data-placement="right"
title="Reset (Filtri attivi: <?= $totFilter; ?> )"
class="btn btn-<?= ($totFilter > 0) ? 'danger':'info'; ?> btn-flat"
type="button"><i class="fa fa-times fa-fw"></i></a>
</div>
</div>
@@ -0,0 +1,63 @@
<p><i class="fa fa-fw fa-link"></i> Url: <br><?= $this->baseUrl; ?><?= $this->url; ?></p>
<?php if($this->section === 'web_service'): ?>
<div class="row">
<div class="col-md-3">
<p><i class="fa fa-fw fa-database"></i> NomeDB: <br><?= $this->db_name; ?></p>
</div>
<div class="col-md-3">
<p><i class="fa fa-fw fa-user"></i> Username: <br><?= $this->username; ?></p>
</div>
<div class="col-md-6">
<p><i class="fa fa-fw fa-key"></i> Token: <br><?= $this->token; ?></p>
</div>
</div>
<?php endif; ?>
<div><i class="fa fa-fw fa-envelope"></i> Messaggio:</div>
<div class="form-box-container" style="padding: 10px;">
<?= $this->msg; ?>
</div>
<div><i class="fa fa-fw fa-code"></i> Stack Trace:</div>
<div class="table-responsive">
<table class="table table-striped table-bordered">
<tbody>
<tr>
<th>File</th>
<th>Line</th>
<th>Function</th>
<th>Class</th>
</tr>
<?php foreach ($this->trace as $key => $value): ?>
<tr>
<td title="<?= $value['file']; ?>"><?= $value['file']; ?></td>
<td><?= $value['line']; ?></td>
<td><?= $value['function']; ?></td>
<td><?= $value['class']; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<br>
<div><i class="fa fa-fw fa-list"></i> Parametri:</div>
<div class="table-responsive" style="padding: 0;">
<table class="table table-striped">
<tbody>
<tr>
<th>Parametro</th>
<th>Valore</th>
</tr>
<?php foreach ($this->params as $key => $value): ?>
<tr>
<td><?= $key; ?></td>
<td><?= $value; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
@@ -0,0 +1,173 @@
<div class="box box-no-border box-no-shadow pd10 mb-0">
<div class="box-header">
<div class="col-12">
<!--FORM DI RICERCA-->
<div class="float-left box-title search-left hidden-xs">
<form class="form-horizontal" id="searchForm" name="searchForm" method="post"
action="<?= $this->url(array('controller' => 'index', 'action' => 'list' . $this->resourceName), $this->moduleName, true); ?>">
<div class="row">
<?= $this->render("index/$this->resourceName/_searchBlock.phtml"); ?>
</div>
<input type="hidden" id="order" name="order" class="hidden" value="<?= $this->order; ?>"/>
<input type="hidden" id="tipoOrder" name="tipoOrder" class="hidden" value="<?= $this->tipoOrder; ?>"/>
</form>
</div>
<!--BLOCCO FUNZIONI LATO SINISTRA-->
<div class="float-right box-title search-right">
<div class="btn-group">
<?php if ($this->isActiveNewInsert): ?>
<button data-toggle="tooltip" title="Nuovo" id="new" class="btn btn-brand btn-flat" type="button"
data-target="#Modal" data-toggle="modal"><i class="fa fa-plus"></i></button>
<?php endif; ?>
<?php if ($this->isActiveFilterModal): ?>
<button data-toggle="tooltip" title="Filtra" id="filterData" class="btn btn-brand btn-flat"
type="button" data-target="#filterModal" data-toggle="modal">
<?php if ($totFilter > 0): ?>
<span class="badge bg-red"><?= $totFilter; ?></span>
<?php endif; ?>
<i class="fa fa-filter"></i>
</button>
<?php endif; ?>
<div class="dropdown">
<button class="btn btn-flat btn-brand dropdown-toggle" type="button" id="dropdownMenuButton"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="d-none-xs">Selezionati</span> <span class="caret"></span>
</button>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
<a id="delete_select" class="dropdown-item"
href="<?= $this->url(array('controller' => 'index', 'action' => 'deleteselect' . $this->resourceName), $this->moduleName, true); ?>">
<i class="fa fa-trash fa-fw"></i> Elimina</a>
<a id="setstate_select" class="dropdown-item"
href="<?= $this->url(array('controller' => 'index', 'action' => 'setstateselect' . $this->resourceName), $this->moduleName, true); ?>">
Imposta Stato</a>
</div>
</div>
</div>
</div>
<div class="clearfix"></div>
</div>
</div>
<!-- INIZIO TABELLA -->
<div class="box-body table-responsive table-wrapper">
<table class="table table-border table-striped flot-header">
<thead>
<?= $this->render("index/$this->resourceName/th.phtml") ?>
</thead>
<tbody id="tablebody">
<?php if (count($this->table) > 0): ?>
<?php foreach ($this->table as $key => $value): ?>
<?= $this->partial("index/$this->resourceName/td.phtml", $value) ?>
<?php endforeach; ?>
<?php else: ?>
<tr>
<?php if ($totFilter <= 0): ?>
<td id="norows" class="no-rows" colspan="6">
<i class="fa fa-exclamation-triangle"></i>
Nessun record presente
</td>
<?php else: ?>
<td id="norows" class="no-rows" colspan="6">
<i class="fa fa-exclamation-triangle"></i>
Nessun risultato trovato in base alla ricerca
</td>
<?php endif; ?>
</tr>
<?php endif; ?>
</tbody>
</table>
</div>
<div class="box-footer clearfix">
<div class="col-12">
<div class="row">
<!--FUNZIONE MULTIPLE-->
<div class="col-4 col-xs-12">
<div class="btn-group btn-group-sm float-left dropup d-none-xs dropdown-multifunction-down">
<button class="btn btn-default btn-flat" type="button">
Selezionati
</button>
<button class="btn btn-default btn-flat dropdown-toggle" data-toggle="dropdown" type="button">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu">
<a id="delete_select" class="dropdown-item"
href="<?= $this->url(array('controller' => 'index', 'action' => 'deleteselect' . $this->resourceName), $this->moduleName, true); ?>">
<i class="fa fa-trash fa-fw"></i> Elimina</a>
</div>
</div>
</div>
<div class="col-8 col-xs-12">
<!--PAGINATOR FOOTER-->
<?php if ($this->table instanceof Zend_Paginator): ?>
<?= $this->paginationControl($this->table, 'Jumping', 'index/_paginator.phtml', array('action' => $this->action, 'count' => $this->count, 'moduleName'=>$this->moduleName)); ?>
<?php endif; ?>
<div class="pagination-counter float-right">
<form name="paginationCounter"
action="<?= $this->url(array('controller' => 'index', 'action' => 'list' . $this->resourceName, 'page' => $this->page, 'count' => $this->count), $this->moduleName, false); ?>"
class="" method="post" role="form">
<div class="input-group input-group-sm">
<label class="text-right d-none-xs mb-1" for="count">
<?php if ($this->totFiltrati != $this->totElementi): ?>
<span>Filtrati <?= $this->totFiltrati ?> su <?= $this->totElementi; ?> totali </span>
<?php else: ?>
<span>Tot. <?= $this->totElementi; ?></span>
<?php endif; ?>
</label>
<input type="text" class="form-control"
id="count" aria-describedby="inputGroup-sizing-sm"
value="" placeholder="<?= $this->count; ?>" name="count"/>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<?php if ($this->isActiveModalDetail): ?>
<?= $this->render("index/$this->resourceName/_modal.phtml"); ?>
<?php endif; ?>
<?php if ($this->isActiveFilterModal): ?>
<?= $this->render("index/$this->resourceName/_modalFilter.phtml"); ?>
<?php endif; ?>
<?php if ($this->idDetail > 0): ?>
<script type="text/javascript">
$(document).ready(function () {
edit(<?= $this->idDetail; ?>);
});
</script>
<?php endif; ?>
@@ -0,0 +1,60 @@
<tr data-id="<?= $this->id ?>" data-state="<?= $this->state ?>">
<td class="text-center"><input type="checkbox" value="<?= $this->id ?>" name="select-elements[]" id="select-elements"></td>
<td class="text-center"><?= $this->ExtractData($this->data,'withtime',true); ?></td>
<td><?= htmlspecialchars($this->msg); ?></td>
<td><?= htmlspecialchars($this->username); ?></td>
<td><?= htmlspecialchars($this->db_name); ?></td>
<td><?php switch($this->state):
case'1': ?>
<span class="badge bg-red">New
<?php break;
case'2': ?>
<span class="badge bg-warning">Pending
<?php break;
case'4': ?>
<span class="badge bg-warning">Viewed
<?php break;
case'3': ?>
<span class="badge bg-success">Resolved
<?php break; ?>
<?php endswitch; ?>
</span></td>
<td><span class="badge bg-gray"><?= $this->section; ?></span></td>
<td>
<div class="text-center">
<button id="edit" class="btn btn-sm btn-brand btn-flat" type="button" data-toggle="tooltip" data-container="body" title="Dettaglio">
<span class="fa fa-search-plus"></span>
</button>
<?php switch($this->state):
case'1': ?>
<button id="set-state" class="btn btn-sm btn-warning btn-flat" type="button" data-toggle="tooltip" title="Visto" data-state="4" data-url="<?= $this -> url(array('controller' => 'index', 'action' => 'setstateerrorlog', 'id' => $this->id), 'monitoring', true); ?>">
<span class="fa fa-eye"></span>
</button>
<?php break;
case'2': ?>
<button id="set-state" class="btn btn-sm btn-success btn-flat" type="button" data-toggle="tooltip" title="Risolvi" data-state="3" data-url="<?= $this -> url(array('controller' => 'index', 'action' => 'setstateerrorlog', 'id' => $this->id), 'monitoring', true); ?>">
<span class="fa fa-check"></span>
</button>
<?php break;
case'3': ?>
<button id="set-state" class="btn btn-sm btn-warning btn-flat" type="button" data-toggle="tooltip" title="Attesa" data-state="2" data-url="<?= $this -> url(array('controller' => 'index', 'action' => 'setstateerrorlog', 'id' => $this->id), 'monitoring', true); ?>">
<span class="fa fa-eye-slash"></span>
</button>
<?php break;
case'4': ?>
<button id="set-state" class="btn btn-sm btn-success btn-flat" type="button" data-toggle="tooltip" title="Risolvi" data-state="3" data-url="<?= $this -> url(array('controller' => 'index', 'action' => 'setstateerrorlog', 'id' => $this->id), 'monitoring', true); ?>">
<span class="fa fa-check"></span>
</button>
<?php break; ?>
<?php endswitch; ?>
<button id="delete" class="btn btn-sm btn-danger btn-flat" type="button" data-toggle="tooltip" title="Elimina">
<span class="fa fa-trash"></span>
</button>
</div>
</td>
</tr>
@@ -0,0 +1,25 @@
<tr>
<th style="width:60px;" class="text-center">
<div class="dropdown">
<button class="btn btn-default btn-sm dropdown-toggle dropdown-icon" type="button" id="dropdownMenuButton"
data-boundary="window"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a id="select_all" class="dropdown-item" href="#"><i class="far fa-check-square fa-fw"></i> Tutti</a>
<a id="deselect_all" class="dropdown-item" href="#"><i class="far fa-square fa-fw"></i> Nessuno</a>
<a id="invert_all" class="dropdown-item" href="#"><i class="fa fa-check-square fa-fw"></i> Inverti</a>
</div>
</div>
</th>
<th data-ord="data" style="width:135px;" class="text-center">Data</th>
<th data-ord="msg" class="">Messaggio di errore</th>
<th data-ord="username">Username</th>
<th data-ord="username">Db Name</th>
<th data-ord="state" style="min-width:100px;">Stato</th>
<th data-ord="section" style="min-width:80px;">Section</th>
<th width="150px"></th>
</tr>
@@ -0,0 +1,45 @@
<div class="modal fade" id="modal" data-form="modalForm" tabindex="-1" data-backdrop="false"
role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div id="modal-loader" class="overlay d-none justify-content-center align-items-center">
<i class="fas fa-2x fa-sync fa-spin"></i>
</div>
<div class="modal-header">
<h5 class="modal-title flot-left" id="myModalLabel"><i
class="fa fa-fw <?= ($this->iconTitle) ? $this->iconTitle : 'fa-pencil'; ?> modal_icon"></i>
Log Invio</h5>
<button id="close-modal" type="button" class="close float-right" data-dismiss="modal"
aria-hidden="true">&times;
</button>
</div>
<div class="modal-body pdb-0">
<form id="modalForm" name="modalForm" class="compact-form no-border-radius"
action="<?= $this->url(array('controller' => 'index', 'action' => 'salva' . $this->resourceName), $this->moduleName, true); ?>"
data-get="<?= $this->url(array('controller' => 'index', 'action' => 'get' . $this->resourceName), $this->moduleName, true); ?>"
data-delete="<?= $this->url(array('controller' => 'index', 'action' => 'delete' . $this->resourceName, 'id' => $this->id), $this->moduleName, true); ?>"
method="post" role="form">
<div id="main_contenitor">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" id="undo" class="btn btn-default pull-left" data-dismiss="modal"><i
class="fa fa-times"></i>
Chiudi
</button>
</div>
</div>
</div>
</div>
@@ -0,0 +1,27 @@
<div class="col-12 col-md-4 no-padding-r-sm">
<input type="text" daterangepicker id="DataInvio_search" name="DataInvio" value="<?= $this->search_params['DataInvio']; ?>" class="form-control no-border-right-sm"
placeholder="Data Invio"/>
<input type="hidden" value="DATERANGE" name="DataInvioOP" id="DataInvioOP" />
</div>
<div class="col-12 col-md-3 no-padding-r-l-sm">
<input type="text" id="message_search" name="message" value="<?= $this->search_params['message']; ?>" class="form-control no-border-right-sm" placeholder="Messaggio"/>
<input type="hidden" value="LIKE" name="messageOP" id="messageOP" />
</div>
<div class="col-12 col-md-3 no-padding-r-l-sm">
<input type="text" id="processed_emails_search" name="processed_emails" value="<?= $this->search_params['processed_emails']; ?>" class="form-control no-border-right-sm" placeholder="Processed"/>
<input type="hidden" value="LIKE" name="processed_emailsOP" id="processed_emailsOP" />
</div>
<div class="col-12 col-md-2 no-padding-l-sm">
<?php $totFilter = count($this->CleanFiltersParam($this->search_params)); ?>
<div class="btn-group">
<button type="submit" title="Cerca" class="btn btn-brand btn-flat"><i class="fa fa-search fa-fw"></i></button>
<a href="<?= $this->url(array('module'=>$this->moduleName,'action'=>'list'.$this->resourceName,'reset'=>'true'),'default',true); ?>"
data-toggle="tooltip" data-container="body" data-placement="right"
title="Reset (Filtri attivi: <?= $totFilter; ?> )"
class="btn btn-<?= ($totFilter > 0) ? 'danger':'info'; ?> btn-flat"
type="button"><i class="fa fa-times fa-fw"></i></a>
</div>
</div>
@@ -0,0 +1,64 @@
<p><i class="fa fa-fw fa-link"></i> Data: <br><?= $this->DataInvio; ?></p>
<div><i class="fa fa-fw fa-envelope"></i> Messaggio:</div>
<div class="form-box-container" style="padding: 10px;">
<?= $this->message; ?>
</div>
<div><i class="fa fa-fw fa-code"></i> Processed:</div>
<div class="table-responsive">
<table class="table table-striped table-bordered">
<tbody>
<tr>
<th>Id</th>
<th>Email</th>
<th>Stato Precedente</th>
<th>Nuovo Stato</th>
</tr>
<?php if(count($this->processed_emails) <= 0): ?>
<tr>
<td colspan="4">Nessun invio</td>
</tr>
<?php else: ?>
<?php foreach ($this->processed_emails as $key => $value): ?>
<tr>
<td><?= $value['EmailId']; ?></td>
<td><?= $value['EmailDestinatario']; ?></td>
<td><?= $value['StatoPrecedente']; ?></td>
<td><?= $value['NuovoStato']; ?></td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
</tbody>
</table>
</div>
<br>
<div><i class="fa fa-fw fa-list"></i> Errori:</div>
<div class="table-responsive" style="padding: 0;">
<table class="table table-striped">
<tbody>
<tr>
<th>EmailId</th>
<th>Email</th>
<th>StatoPrecedente</th>
<th>Message</th>
</tr>
<?php if(count($this->errors) <= 0): ?>
<tr>
<td colspan="4">Nessun errore</td>
</tr>
<?php else: ?>
<?php foreach ($this->errors as $key => $value): ?>
<tr>
<td><?= $value['EmailId']; ?></td>
<td><?= $value['EmailDestinatario']; ?></td>
<td><?= $value['StatoPrecedente']; ?></td>
<td><?= $value['message']; ?></td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
</tbody>
</table>
</div>
@@ -0,0 +1,173 @@
<div class="box box-no-border box-no-shadow pd10 mb-0">
<div class="box-header">
<div class="col-12">
<!--FORM DI RICERCA-->
<div class="float-left box-title search-left hidden-xs">
<form class="form-horizontal" id="searchForm" name="searchForm" method="post"
action="<?= $this->url(array('controller' => 'index', 'action' => 'list' . $this->resourceName), $this->moduleName, true); ?>">
<div class="row">
<?= $this->render("index/$this->resourceName/_searchBlock.phtml"); ?>
</div>
<input type="hidden" id="order" name="order" class="hidden" value="<?= $this->order; ?>"/>
<input type="hidden" id="tipoOrder" name="tipoOrder" class="hidden" value="<?= $this->tipoOrder; ?>"/>
</form>
</div>
<!--BLOCCO FUNZIONI LATO SINISTRA-->
<div class="float-right box-title search-right">
<div class="btn-group">
<?php if ($this->isActiveNewInsert): ?>
<button data-toggle="tooltip" title="Nuovo" id="new" class="btn btn-brand btn-flat" type="button"
data-target="#Modal" data-toggle="modal"><i class="fa fa-plus"></i></button>
<?php endif; ?>
<?php if ($this->isActiveFilterModal): ?>
<button data-toggle="tooltip" title="Filtra" id="filterData" class="btn btn-brand btn-flat"
type="button" data-target="#filterModal" data-toggle="modal">
<?php if ($totFilter > 0): ?>
<span class="badge bg-red"><?= $totFilter; ?></span>
<?php endif; ?>
<i class="fa fa-filter"></i>
</button>
<?php endif; ?>
<div class="dropdown">
<button class="btn btn-flat btn-brand dropdown-toggle" type="button" id="dropdownMenuButton"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="d-none-xs">Selezionati</span> <span class="caret"></span>
</button>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
<a id="delete_select" class="dropdown-item"
href="<?= $this->url(array('controller' => 'index', 'action' => 'deleteselect' . $this->resourceName), $this->moduleName, true); ?>">
<i class="fa fa-trash fa-fw"></i> Elimina</a>
<!--<a id="setstate_select" class="dropdown-item"
href="<?/*= $this->url(array('controller' => 'index', 'action' => 'setstateselect' . $this->resourceName), $this->moduleName, true); */?>">
Imposta Stato</a>-->
</div>
</div>
</div>
</div>
<div class="clearfix"></div>
</div>
</div>
<!-- INIZIO TABELLA -->
<div class="box-body table-responsive table-wrapper">
<table class="table table-border table-striped flot-header">
<thead>
<?= $this->render("index/$this->resourceName/th.phtml") ?>
</thead>
<tbody id="tablebody">
<?php if (count($this->table) > 0): ?>
<?php foreach ($this->table as $key => $value): ?>
<?= $this->partial("index/$this->resourceName/td.phtml", $value) ?>
<?php endforeach; ?>
<?php else: ?>
<tr>
<?php if ($totFilter <= 0): ?>
<td id="norows" class="no-rows" colspan="6">
<i class="fa fa-exclamation-triangle"></i>
Nessun record presente
</td>
<?php else: ?>
<td id="norows" class="no-rows" colspan="6">
<i class="fa fa-exclamation-triangle"></i>
Nessun risultato trovato in base alla ricerca
</td>
<?php endif; ?>
</tr>
<?php endif; ?>
</tbody>
</table>
</div>
<div class="box-footer clearfix">
<div class="col-12">
<div class="row">
<!--FUNZIONE MULTIPLE-->
<div class="col-4 col-xs-12">
<div class="btn-group btn-group-sm float-left dropup d-none-xs dropdown-multifunction-down">
<button class="btn btn-default btn-flat" type="button">
Selezionati
</button>
<button class="btn btn-default btn-flat dropdown-toggle" data-toggle="dropdown" type="button">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu">
<a id="delete_select" class="dropdown-item"
href="<?= $this->url(array('controller' => 'index', 'action' => 'deleteselect' . $this->resourceName), $this->moduleName, true); ?>">
<i class="fa fa-trash fa-fw"></i> Elimina</a>
</div>
</div>
</div>
<div class="col-8 col-xs-12">
<!--PAGINATOR FOOTER-->
<?php if ($this->table instanceof Zend_Paginator): ?>
<?= $this->paginationControl($this->table, 'Jumping', 'index/_paginator.phtml', array('action' => $this->action, 'count' => $this->count, 'moduleName'=>$this->moduleName)); ?>
<?php endif; ?>
<div class="pagination-counter float-right">
<form name="paginationCounter"
action="<?= $this->url(array('controller' => 'index', 'action' => 'list' . $this->resourceName, 'page' => $this->page, 'count' => $this->count), $this->moduleName, false); ?>"
class="" method="post" role="form">
<div class="input-group input-group-sm">
<label class="text-right d-none-xs mb-1" for="count">
<?php if ($this->totFiltrati != $this->totElementi): ?>
<span>Filtrati <?= $this->totFiltrati ?> su <?= $this->totElementi; ?> totali </span>
<?php else: ?>
<span>Tot. <?= $this->totElementi; ?></span>
<?php endif; ?>
</label>
<input type="text" class="form-control"
id="count" aria-describedby="inputGroup-sizing-sm"
value="" placeholder="<?= $this->count; ?>" name="count"/>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<?php if ($this->isActiveModalDetail): ?>
<?= $this->render("index/$this->resourceName/_modal.phtml"); ?>
<?php endif; ?>
<?php if ($this->isActiveFilterModal): ?>
<?= $this->render("index/$this->resourceName/_modalFilter.phtml"); ?>
<?php endif; ?>
<?php if ($this->idDetail > 0): ?>
<script type="text/javascript">
$(document).ready(function () {
edit(<?= $this->idDetail; ?>);
});
</script>
<?php endif; ?>
@@ -0,0 +1,19 @@
<tr data-id="<?= $this->id ?>">
<td class="text-center"><input type="checkbox" value="<?= $this->id ?>" name="select-elements[]" id="select-elements"></td>
<td class="text-center"><?= $this->ExtractData($this->DataInvio,'withtime',true); ?></td>
<td><?= htmlspecialchars($this->message); ?></td>
<td>
<div class="text-center">
<button id="edit" class="btn btn-sm btn-brand btn-flat" type="button" data-toggle="tooltip" data-container="body" title="Dettaglio">
<span class="fa fa-search-plus"></span>
</button>
<button id="delete" class="btn btn-sm btn-danger btn-flat" type="button" data-toggle="tooltip" title="Elimina">
<span class="fa fa-trash"></span>
</button>
</div>
</td>
</tr>
@@ -0,0 +1,21 @@
<tr>
<th style="width:60px;" class="text-center">
<div class="dropdown">
<button class="btn btn-default btn-sm dropdown-toggle dropdown-icon" type="button" id="dropdownMenuButton"
data-boundary="window"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a id="select_all" class="dropdown-item" href="#"><i class="far fa-check-square fa-fw"></i> Tutti</a>
<a id="deselect_all" class="dropdown-item" href="#"><i class="far fa-square fa-fw"></i> Nessuno</a>
<a id="invert_all" class="dropdown-item" href="#"><i class="fa fa-check-square fa-fw"></i> Inverti</a>
</div>
</div>
</th>
<th data-ord="data" style="width:135px;" class="text-center">Data</th>
<th data-ord="msg" class="">Messaggio</th>
<th width="150px"></th>
</tr>
@@ -0,0 +1,6 @@
<a href="<?= $this->url(array('controller' => 'index', 'action' => 'listerrorlog'), 'monitoring', true); ?>"
class="dropdown-item">
<i class="fas fa-warning danger"></i>
<?= $this->tot ?> errori per la sezione <?= $this->section ?>
<!--<span class="float-right text-muted text-sm">3 mins</span>-->
</a>
+37
View File
@@ -0,0 +1,37 @@
<?php
class V1_Bootstrap extends Zend_Application_Module_Bootstrap
{
public function _init()
{
$frontController = Zend_Controller_Front::getInstance();
$frontController->registerPlugin(new Zend_Controller_Plugin_PutHandler());
}
public function _initPersonalRouter()
{
$router = Zend_Controller_Front::getInstance()->getRouter();
$router->addRoute(
'paginator',
new Zend_Controller_Router_Route('/:module/:controller/list/:page/:count/*',
array(
'module' => 'v1',
'action' => 'get'
)
)
);
$router->addRoute(
'getmethod',
new Zend_Controller_Router_Route('/:module/:controller/m/:method/*',
array(
'module' => 'v1',
'action' => 'get'
)
)
);
}
}
@@ -0,0 +1,50 @@
<?php
class V1_IndexController extends App_Controller_Rest_Controller
{
public function init()
{
$this->_resourceName = 'Abstract';
parent::init();
}
public function indexAction()
{
try {
$this->_responseData->message = 'As Fb2b.net WS';
$this->_status = true;
$this->sendResponse();
} catch (Exception $e) {
$this->_responseData->message = $e->getMessage();
$this->_responseData->trace = $e->getTrace();
$this->sendResponse();
}
}
public function getAction()
{
$this->_responseData->message = 'Funzione non disponibile';
$this->sendResponse();
}
public function postAction()
{
$this->_responseData->message = 'Funzione non disponibile';
$this->sendResponse();
}
public function putAction()
{
$this->_responseData->message = 'Funzione non disponibile';
$this->sendResponse();
}
public function deleteAction()
{
$this->_responseData->message = 'Funzione non disponibile';
$this->sendResponse();
}
}//END CLASS
@@ -0,0 +1,48 @@
<?php
class V1_UsersController extends App_Controller_Rest_Controller
{
protected $_authInfo;
public function init()
{
$this->_resourceName = 'Users';
$this->_authInfo = new App_Service_Auth();
parent::init();
}
public function postAction()
{
$this->disableCallAction();
}
public function putAction()
{
$this->disableCallAction();
}
public function deleteAction()
{
$this->disableCallAction();
}
//-----------------------------------------------
public function switchMethodFunction($method)
{
switch ($method) {
default:
$this->defaultGetList();
break;
}
}
public function getSingleElementManipulate($data)
{
return array_diff_key($data, array_flip(array('token', 'password', 'staylogin')));
}
}//END CLASS