Browse Source

Getting more work done on custom navigation

tags/3.1.0
Mike Koch 2 years ago
parent
commit
3df5324732

+ 42
- 31
admin/manage_custom_nav_elements.php View File

@@ -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
- 0
api/ApplicationContext.php View File

@@ -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();


+ 24
- 0
api/BusinessLogic/Navigation/CustomNavElement.php View File

@@ -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;
}

+ 32
- 0
api/BusinessLogic/Navigation/CustomNavElementHandler.php View File

@@ -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() {

}
}

+ 10
- 0
api/BusinessLogic/Navigation/CustomNavElementPlace.php View File

@@ -0,0 +1,10 @@
<?php

namespace BusinessLogic\Navigation;


class CustomNavElementPlace {
const HOMEPAGE_BLOCK = 1;
const CUSTOMER_NAVIGATION = 2;
const ADMIN_NAVIGATION = 3;
}

+ 0
- 1
api/BusinessLogic/Security/UserContext.php View File

@@ -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'];

+ 17
- 0
api/Controllers/Navigation/CustomNavElementController.php View File

@@ -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));
}
}

+ 22
- 0
api/DataAccess/Navigation/CustomNavElementGateway.php View File

@@ -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();
}
}

+ 2
- 0
api/index.php View File

@@ -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'

+ 1
- 0
language/en/text.php View File

@@ -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 #

Loading…
Cancel
Save