Getting more work done on custom navigation

remotes/upstream/395-custom-blocks-to-database
Mike Koch 7 роки тому
джерело 8db64d903d
коміт 3df5324732

@ -16,15 +16,7 @@ hesk_session_start();
hesk_dbConnect();
hesk_isLoggedIn();
//hesk_checkPermission('can_man_email_tpl');
// Are we performing an action?
$showEditPanel = false;
if (isset($_GET['action'])) {
if ($_GET['action'] == 'edit') {
$showEditPanel = true;
}
}
//hesk_checkPermission('can_man_custom_nav');
// Are we saving?
if (isset($_POST['action'])) {
@ -52,21 +44,6 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
</div>
</div>
<div class="box-body">
<?php if ($showEditPanel): ?>
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<h4>EDIT CUSTOM NAV ELEMENT[!]</h4>
</div>
<div class="panel-body">
<form action="manage_custom_nav_elements.php" method="post">
</form>
</div>
</div>
</div>
</div>
<?php endif; ?>
<div class="row">
<div class="col-md-12">
<?php
@ -149,7 +126,16 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
echo 'INVALID!!';
} ?>
</td>
<td>EDIT, DELETE</td>
<td>
<a href="manage_custom_nav_elements.php?edit=<?php echo $row['id'];?>">
<i class="fa fa-pencil icon-link orange"
data-toggle="tooltip" title="<?php echo $hesklang['edit']; ?>"></i>
</a>
<a href="manage_custom_nav_elements.php?delete=<?php echo $row['id']; ?>">
<i class="fa fa-times icon-link red"
data-toggle="tooltip" title="<?php echo $hesklang['delete']; ?>"></i>
</a>
</td>
</tr>
<?php endwhile; ?>
</tbody>
@ -158,12 +144,37 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php');
</div>
</div>
</div>
<?php
if ($showEditPanel):
?>
<div class="box">
<div class="box-header with-border">
<h1 class="box-title">
Edit Custom Navigation Menu Element
</h1>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse">
<i class="fa fa-minus"></i>
</button>
</div>
</div>
<div class="box-body">
<form action="manage_custom_nav_elements.php" method="post">
</form>
</div>
</div>
<?php endif; ?>
</section>
</div>
<section id="table-row-template" style="display: none">
<tr>
<td data-property="id"></td>
<td data-property="text"></td>
<td data-property="subtext"></td>
<td data-property="icon-url"></td>
<td data-property="place"></td>
<td data-property="action"></td>
</tr>
</section>
<?php
require_once(HESK_PATH . 'inc/footer.inc.php');
exit();
function save()
{
}
require_once(HESK_PATH . 'inc/footer.inc.php');

@ -9,6 +9,7 @@ use BusinessLogic\Emails\EmailSenderHelper;
use BusinessLogic\Emails\EmailTemplateParser;
use BusinessLogic\Emails\EmailTemplateRetriever;
use BusinessLogic\Emails\MailgunEmailSender;
use BusinessLogic\Navigation\CustomNavElementHandler;
use BusinessLogic\Security\BanRetriever;
use BusinessLogic\Security\UserContextBuilder;
use BusinessLogic\Security\UserToTicketChecker;
@ -30,6 +31,7 @@ use DataAccess\Files\FileDeleter;
use DataAccess\Files\FileReader;
use DataAccess\Files\FileWriter;
use DataAccess\Logging\LoggingGateway;
use DataAccess\Navigation\CustomNavElementGateway;
use DataAccess\Security\BanGateway;
use DataAccess\Security\UserGateway;
use DataAccess\Settings\ModsForHeskSettingsGateway;
@ -41,6 +43,9 @@ use DataAccess\Tickets\VerifiedEmailGateway;
class ApplicationContext {
public $get;
/**
* ApplicationContext constructor.
*/
function __construct() {
$this->get = array();
@ -50,6 +55,10 @@ class ApplicationContext {
// API Checker
$this->get[ApiChecker::class] = new ApiChecker($this->get[ModsForHeskSettingsGateway::class]);
// Custom Navigation
$this->get[CustomNavElementGateway::class] = new CustomNavElementGateway();
$this->get[CustomNavElementHandler::class] = new CustomNavElementHandler($this->get[CustomNavElementGateway::class]);
// Logging
$this->get[LoggingGateway::class] = new LoggingGateway();

@ -0,0 +1,24 @@
<?php
namespace BusinessLogic\Navigation;
class CustomNavElement {
/* @var $id int*/
public $id;
/* @var $text string[string] */
public $text;
/* @var $subtext string[string]|null */
public $subtext;
/* @var $imageUrl string|null */
public $imageUrl;
/* @var $fontIcon string|null */
public $fontIcon;
/* @var $place int */
public $place;
}

@ -0,0 +1,32 @@
<?php
namespace BusinessLogic\Navigation;
// TODO Test!
use DataAccess\Navigation\CustomNavElementGateway;
class CustomNavElementHandler {
/* @var $customNavElementGateway CustomNavElementGateway */
private $customNavElementGateway;
function __construct($customNavElementGateway) {
$this->customNavElementGateway = $customNavElementGateway;
}
function getAllCustomNavElements($heskSettings) {
return $this->customNavElementGateway->getAllCustomNavElements($heskSettings);
}
function deleteCustomNavElement() {
}
function saveCustomNavElement() {
}
function createCustomNavElement() {
}
}

@ -0,0 +1,10 @@
<?php
namespace BusinessLogic\Navigation;
class CustomNavElementPlace {
const HOMEPAGE_BLOCK = 1;
const CUSTOMER_NAVIGATION = 2;
const ADMIN_NAVIGATION = 3;
}

@ -61,7 +61,6 @@ class UserContext {
* @return UserContext the built user context
*/
static function fromDataRow($dataRow) {
var_dump($dataRow);
$userContext = new UserContext();
$userContext->id = intval($dataRow['id']);
$userContext->username = $dataRow['user'];

@ -0,0 +1,17 @@
<?php
namespace Controllers\Navigation;
use BusinessLogic\Navigation\CustomNavElementHandler;
class CustomNavElementController {
static function getAll() {
global $applicationContext, $hesk_settings;
/* @var $handler CustomNavElementHandler */
$handler = $applicationContext->get[CustomNavElementHandler::class];
output($handler->getAllCustomNavElements($hesk_settings));
}
}

@ -0,0 +1,22 @@
<?php
namespace DataAccess\Navigation;
use DataAccess\CommonDao;
class CustomNavElementGateway extends CommonDao {
function getAllCustomNavElements($heskSettings) {
$this->init();
$rs = hesk_dbQuery("SELECT `t2`.`id` AS `xref_id`, `t2`.*, `t1`.* FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "custom_nav_element` AS `t1`
INNER JOIN `" . hesk_dbEscape($heskSettings['db_pfix']) . "custom_nav_element_to_text` AS `t2`
ON `t1`.`id` = `t2`.`nav_element_id`");
while ($row = hesk_dbFetchAssoc($rs)) {
var_dump($row);
}
$this->close();
}
}

@ -186,6 +186,8 @@ Link::all(array(
/* Internal use only routes */
// Resend email response
'/v1-internal/staff/tickets/{i}/resend-email' => \Controllers\Tickets\ResendTicketEmailToCustomerController::class,
// Custom Navigation
'/v1-internal/custom-navigation' => \Controllers\Navigation\CustomNavElementController::class . '::getAll',
// Any URL that doesn't match goes to the 404 handler
'404' => 'handle404'

@ -52,6 +52,7 @@ $hesklang['resend_email_notification'] = 'Re-send Email Notification';
$hesklang['email_notification_sent'] = 'Email notification sent!';
$hesklang['email_notification_resend_failed'] = 'Error occurred when trying to send notification email.';
$hesklang['edit_category'] = 'Edit Category';
$hesklang['custom_nav_element_deleted'] = 'Custom Navigation Element Deleted!';
// ADDED OR MODIFIED IN Mods for HESK 3.0.0
$hesklang['you_have_x_messages'] = 'You have %s new %s'; // %s: Number of new messages, "message" or "messages", depending on #

Завантаження…
Відмінити
Зберегти