Spade
Mini Shell
| Directory:~$ /home/lmsyaran/public_html/joomla4/ |
| [Home] [System Details] [Kill Me] |
AbstractView.php000064400000004412151156057600007662 0ustar00<?php
/**
* @package OSL
* @subpackage View
*
* @copyright Copyright (C) 2016 Ossolution Team, Inc. All rights
reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
namespace OSL\View;
use Exception, JText;
use OSL\Container\Container;
use OSL\Model\Model;
/**
* Class AbstractView
*
* Joomla CMS Base View Class
*/
abstract class AbstractView
{
/**
* Name of the view
*
* @var string
*/
protected $name;
/**
* The model object.
*
* @var Model
*/
protected $model;
/**
* Determine the view has a model associated with it or not.
* If set to No, no model will be created and assigned to the view method
when the view is being created
*
* @var boolean
*/
public $hasModel = true;
/**
* Constructor
*
* @param Container $container
* @param array $config
*
* @throws Exception
*/
public function __construct(Container $container, $config = array())
{
$this->container = $container;
// Set the view name
if (isset($config['name']))
{
$this->name = $config['name'];
}
else
{
$className = get_class($this);
$r = null;
if (!preg_match('/(.*)\\\\View\\\\(.*)\\\\(.*)/i', $className,
$r))
{
throw new Exception(JText::_('Could not detect the name from
class' . $className), 500);
}
$this->name = $r[2];
}
if (isset($config['has_model']))
{
$this->hasModel = $config['has_model'];
}
$this->initialize();
}
/**
* Get name of the current view
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set the model object
*
* @param Model $model
*/
public function setModel(Model $model)
{
$this->model = $model;
}
/**
* Get the model object
*
* @return Model
*/
public function getModel()
{
return $this->model;
}
/**
* Method to escape output.
*
* @param string $output The output to escape.
*
* @return string The escaped output.
*
*/
public function escape($output)
{
return $output;
}
/**
* This blank method give child class a chance to init the class further
after being constructed
*/
protected function initialize()
{
}
}CsvView.php000064400000000436151156057600006654 0ustar00<?php
/**
* @package OSL
* @subpackage View
*
* @copyright Copyright (C) 2016 Ossolution Team, Inc. All rights
reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
namespace OSL\View;
class CsvView extends AbstractView
{
}HtmlView.php000064400000047512151156057600007033 0ustar00<?php
/**
* Joomla! Content Management System
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
* @license GNU General Public License version 2 or later; see
LICENSE.txt
*/
namespace Joomla\CMS\MVC\View;
defined('JPATH_PLATFORM') or die;
/**
* Base class for a Joomla View
*
* Class holding methods for displaying presentation data.
*
* @since 2.5.5
*/
class HtmlView extends \JObject
{
/**
* The active document object
*
* @var \JDocument
* @since 3.0
*/
public $document;
/**
* The name of the view
*
* @var array
* @since 3.0
*/
protected $_name = null;
/**
* Registered models
*
* @var array
* @since 3.0
*/
protected $_models = array();
/**
* The base path of the view
*
* @var string
* @since 3.0
*/
protected $_basePath = null;
/**
* The default model
*
* @var string
* @since 3.0
*/
protected $_defaultModel = null;
/**
* Layout name
*
* @var string
* @since 3.0
*/
protected $_layout = 'default';
/**
* Layout extension
*
* @var string
* @since 3.0
*/
protected $_layoutExt = 'php';
/**
* Layout template
*
* @var string
* @since 3.0
*/
protected $_layoutTemplate = '_';
/**
* The set of search directories for resources (templates)
*
* @var array
* @since 3.0
*/
protected $_path = array('template' => array(),
'helper' => array());
/**
* The name of the default template source file.
*
* @var string
* @since 3.0
*/
protected $_template = null;
/**
* The output of the template script.
*
* @var string
* @since 3.0
*/
protected $_output = null;
/**
* Callback for escaping.
*
* @var string
* @since 3.0
* @deprecated 3.0
*/
protected $_escape = 'htmlspecialchars';
/**
* Charset to use in escaping mechanisms; defaults to urf8 (UTF-8)
*
* @var string
* @since 3.0
*/
protected $_charset = 'UTF-8';
/**
* Constructor
*
* @param array $config A named configuration array for object
construction.
* name: the name (optional) of the view
(defaults to the view class name suffix).
* charset: the character set to use for display
* escape: the name (optional) of the function to
use for escaping strings
* base_path: the parent path (optional) of the
views directory (defaults to the component folder)
* template_plath: the path (optional) of the
layout directory (defaults to base_path + /views/ + view name
* helper_path: the path (optional) of the helper
files (defaults to base_path + /helpers/)
* layout: the layout (optional) to use to
display the view
*
* @since 3.0
*/
public function __construct($config = array())
{
// Set the view name
if (empty($this->_name))
{
if (array_key_exists('name', $config))
{
$this->_name = $config['name'];
}
else
{
$this->_name = $this->getName();
}
}
// Set the charset (used by the variable escaping functions)
if (array_key_exists('charset', $config))
{
\JLog::add('Setting a custom charset for escaping is deprecated.
Override \JViewLegacy::escape() instead.', \JLog::WARNING,
'deprecated');
$this->_charset = $config['charset'];
}
// User-defined escaping callback
if (array_key_exists('escape', $config))
{
$this->setEscape($config['escape']);
}
// Set a base path for use by the view
if (array_key_exists('base_path', $config))
{
$this->_basePath = $config['base_path'];
}
else
{
$this->_basePath = JPATH_COMPONENT;
}
// Set the default template search path
if (array_key_exists('template_path', $config))
{
// User-defined dirs
$this->_setPath('template',
$config['template_path']);
}
elseif (is_dir($this->_basePath . '/view'))
{
$this->_setPath('template', $this->_basePath .
'/view/' . $this->getName() . '/tmpl');
}
else
{
$this->_setPath('template', $this->_basePath .
'/views/' . $this->getName() . '/tmpl');
}
// Set the default helper search path
if (array_key_exists('helper_path', $config))
{
// User-defined dirs
$this->_setPath('helper',
$config['helper_path']);
}
else
{
$this->_setPath('helper', $this->_basePath .
'/helpers');
}
// Set the layout
if (array_key_exists('layout', $config))
{
$this->setLayout($config['layout']);
}
else
{
$this->setLayout('default');
}
$this->baseurl = \JUri::base(true);
}
/**
* Execute and display a template script.
*
* @param string $tpl The name of the template file to parse;
automatically searches through the template paths.
*
* @return mixed A string if successful, otherwise an Error object.
*
* @see \JViewLegacy::loadTemplate()
* @since 3.0
*/
public function display($tpl = null)
{
$result = $this->loadTemplate($tpl);
if ($result instanceof \Exception)
{
return $result;
}
echo $result;
}
/**
* Assigns variables to the view script via differing strategies.
*
* This method is overloaded; you can assign all the properties of
* an object, an associative array, or a single value by name.
*
* You are not allowed to set variables that begin with an underscore;
* these are either private properties for \JView or private variables
* within the template script itself.
*
* <code>
* $view = new \Joomla\CMS\View\HtmlView;
*
* // Assign directly
* $view->var1 = 'something';
* $view->var2 = 'else';
*
* // Assign by name and value
* $view->assign('var1', 'something');
* $view->assign('var2', 'else');
*
* // Assign by assoc-array
* $ary = array('var1' => 'something',
'var2' => 'else');
* $view->assign($obj);
*
* // Assign by object
* $obj = new \stdClass;
* $obj->var1 = 'something';
* $obj->var2 = 'else';
* $view->assign($obj);
*
* </code>
*
* @return boolean True on success, false on failure.
*
* @since 3.0
* @deprecated 3.0 Use native PHP syntax.
*/
public function assign()
{
\JLog::add(__METHOD__ . ' is deprecated. Use native PHP
syntax.', \JLog::WARNING, 'deprecated');
// Get the arguments; there may be 1 or 2.
$arg0 = @func_get_arg(0);
$arg1 = @func_get_arg(1);
// Assign by object
if (is_object($arg0))
{
// Assign public properties
foreach (get_object_vars($arg0) as $key => $val)
{
if (strpos($key, '_') !== 0)
{
$this->$key = $val;
}
}
return true;
}
// Assign by associative array
if (is_array($arg0))
{
foreach ($arg0 as $key => $val)
{
if (strpos($key, '_') !== 0)
{
$this->$key = $val;
}
}
return true;
}
// Assign by string name and mixed value.
// We use array_key_exists() instead of isset() because isset()
// fails if the value is set to null.
if (is_string($arg0) && strpos($arg0, '_') !== 0
&& func_num_args() > 1)
{
$this->$arg0 = $arg1;
return true;
}
// $arg0 was not object, array, or string.
return false;
}
/**
* Assign variable for the view (by reference).
*
* You are not allowed to set variables that begin with an underscore;
* these are either private properties for \JView or private variables
* within the template script itself.
*
* <code>
* $view = new \JView;
*
* // Assign by name and value
* $view->assignRef('var1', $ref);
*
* // Assign directly
* $view->var1 = &$ref;
* </code>
*
* @param string $key The name for the reference in the view.
* @param mixed &$val The referenced variable.
*
* @return boolean True on success, false on failure.
*
* @since 3.0
* @deprecated 3.0 Use native PHP syntax.
*/
public function assignRef($key, &$val)
{
\JLog::add(__METHOD__ . ' is deprecated. Use native PHP
syntax.', \JLog::WARNING, 'deprecated');
if (is_string($key) && strpos($key, '_') !== 0)
{
$this->$key = &$val;
return true;
}
return false;
}
/**
* Escapes a value for output in a view script.
*
* If escaping mechanism is either htmlspecialchars or htmlentities, uses
* {@link $_encoding} setting.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*
* @note the ENT_COMPAT flag will be replaced by ENT_QUOTES in Joomla 4.0
to also escape single quotes
*
* @since 3.0
*/
public function escape($var)
{
if (in_array($this->_escape, array('htmlspecialchars',
'htmlentities')))
{
return call_user_func($this->_escape, $var, ENT_COMPAT,
$this->_charset);
}
return call_user_func($this->_escape, $var);
}
/**
* Method to get data from a registered model or a property of the view
*
* @param string $property The name of the method to call on the model
or the property to get
* @param string $default The name of the model to reference or the
default value [optional]
*
* @return mixed The return value of the method
*
* @since 3.0
*/
public function get($property, $default = null)
{
// If $model is null we use the default model
if ($default === null)
{
$model = $this->_defaultModel;
}
else
{
$model = strtolower($default);
}
// First check to make sure the model requested exists
if (isset($this->_models[$model]))
{
// Model exists, let's build the method name
$method = 'get' . ucfirst($property);
// Does the method exist?
if (method_exists($this->_models[$model], $method))
{
// The method exists, let's call it and return what we get
$result = $this->_models[$model]->$method();
return $result;
}
}
// Degrade to \JObject::get
$result = parent::get($property, $default);
return $result;
}
/**
* Method to get the model object
*
* @param string $name The name of the model (optional)
*
* @return mixed \JModelLegacy object
*
* @since 3.0
*/
public function getModel($name = null)
{
if ($name === null)
{
$name = $this->_defaultModel;
}
return $this->_models[strtolower($name)];
}
/**
* Get the layout.
*
* @return string The layout name
*
* @since 3.0
*/
public function getLayout()
{
return $this->_layout;
}
/**
* Get the layout template.
*
* @return string The layout template name
*
* @since 3.0
*/
public function getLayoutTemplate()
{
return $this->_layoutTemplate;
}
/**
* Method to get the view name
*
* The model name by default parsed using the classname, or it can be set
* by passing a $config['name'] in the class constructor
*
* @return string The name of the model
*
* @since 3.0
* @throws \Exception
*/
public function getName()
{
if (empty($this->_name))
{
$classname = get_class($this);
$viewpos = strpos($classname, 'View');
if ($viewpos === false)
{
throw new
\Exception(\JText::_('JLIB_APPLICATION_ERROR_VIEW_GET_NAME'),
500);
}
$this->_name = strtolower(substr($classname, $viewpos + 4));
}
return $this->_name;
}
/**
* Method to add a model to the view. We support a multiple model single
* view system by which models are referenced by classname. A caveat to
the
* classname referencing is that any classname prepended by \JModel will
be
* referenced by the name without \JModel, eg. \JModelCategory is just
* Category.
*
* @param \JModelLegacy $model The model to add to the view.
* @param boolean $default Is this the default model?
*
* @return \JModelLegacy The added model.
*
* @since 3.0
*/
public function setModel($model, $default = false)
{
$name = strtolower($model->getName());
$this->_models[$name] = $model;
if ($default)
{
$this->_defaultModel = $name;
}
return $model;
}
/**
* Sets the layout name to use
*
* @param string $layout The layout name or a string in format
<template>:<layout file>
*
* @return string Previous value.
*
* @since 3.0
*/
public function setLayout($layout)
{
$previous = $this->_layout;
if (strpos($layout, ':') === false)
{
$this->_layout = $layout;
}
else
{
// Convert parameter to array based on :
$temp = explode(':', $layout);
$this->_layout = $temp[1];
// Set layout template
$this->_layoutTemplate = $temp[0];
}
return $previous;
}
/**
* Allows a different extension for the layout files to be used
*
* @param string $value The extension.
*
* @return string Previous value
*
* @since 3.0
*/
public function setLayoutExt($value)
{
$previous = $this->_layoutExt;
if ($value = preg_replace('#[^A-Za-z0-9]#', '',
trim($value)))
{
$this->_layoutExt = $value;
}
return $previous;
}
/**
* Sets the _escape() callback.
*
* @param mixed $spec The callback for _escape() to use.
*
* @return void
*
* @since 3.0
* @deprecated 3.0 Override \JViewLegacy::escape() instead.
*/
public function setEscape($spec)
{
\JLog::add(__METHOD__ . ' is deprecated. Override
\JViewLegacy::escape() instead.', \JLog::WARNING,
'deprecated');
$this->_escape = $spec;
}
/**
* Adds to the stack of view script paths in LIFO order.
*
* @param mixed $path A directory path or an array of paths.
*
* @return void
*
* @since 3.0
*/
public function addTemplatePath($path)
{
$this->_addPath('template', $path);
}
/**
* Adds to the stack of helper script paths in LIFO order.
*
* @param mixed $path A directory path or an array of paths.
*
* @return void
*
* @since 3.0
*/
public function addHelperPath($path)
{
$this->_addPath('helper', $path);
}
/**
* Load a template file -- first look in the templates folder for an
override
*
* @param string $tpl The name of the template source file;
automatically searches the template paths and compiles as needed.
*
* @return string The output of the the template script.
*
* @since 3.0
* @throws \Exception
*/
public function loadTemplate($tpl = null)
{
// Clear prior output
$this->_output = null;
$template = \JFactory::getApplication()->getTemplate();
$layout = $this->getLayout();
$layoutTemplate = $this->getLayoutTemplate();
// Create the template file name based on the layout
$file = isset($tpl) ? $layout . '_' . $tpl : $layout;
// Clean the file name
$file = preg_replace('/[^A-Z0-9_\.-]/i', '', $file);
$tpl = isset($tpl) ? preg_replace('/[^A-Z0-9_\.-]/i',
'', $tpl) : $tpl;
// Load the language file for the template
$lang = \JFactory::getLanguage();
$lang->load('tpl_' . $template, JPATH_BASE, null, false,
true)
|| $lang->load('tpl_' . $template, JPATH_THEMES .
"/$template", null, false, true);
// Change the template folder if alternative layout is in different
template
if (isset($layoutTemplate) && $layoutTemplate !== '_'
&& $layoutTemplate != $template)
{
$this->_path['template'] = str_replace(
JPATH_THEMES . DIRECTORY_SEPARATOR . $template,
JPATH_THEMES . DIRECTORY_SEPARATOR . $layoutTemplate,
$this->_path['template']
);
}
// Load the template script
jimport('joomla.filesystem.path');
$filetofind = $this->_createFileName('template',
array('name' => $file));
$this->_template = \JPath::find($this->_path['template'],
$filetofind);
// If alternate layout can't be found, fall back to default layout
if ($this->_template == false)
{
$filetofind = $this->_createFileName('',
array('name' => 'default' . (isset($tpl) ?
'_' . $tpl : $tpl)));
$this->_template =
\JPath::find($this->_path['template'], $filetofind);
}
if ($this->_template != false)
{
// Unset so as not to introduce into template scope
unset($tpl, $file);
// Never allow a 'this' property
if (isset($this->this))
{
unset($this->this);
}
// Start capturing output into a buffer
ob_start();
// Include the requested template filename in the local scope
// (this will execute the view logic).
include $this->_template;
// Done with the requested template; get the buffer and
// clear it.
$this->_output = ob_get_contents();
ob_end_clean();
return $this->_output;
}
else
{
throw new
\Exception(\JText::sprintf('JLIB_APPLICATION_ERROR_LAYOUTFILE_NOT_FOUND',
$file), 500);
}
}
/**
* Load a helper file
*
* @param string $hlp The name of the helper source file automatically
searches the helper paths and compiles as needed.
*
* @return void
*
* @since 3.0
*/
public function loadHelper($hlp = null)
{
// Clean the file name
$file = preg_replace('/[^A-Z0-9_\.-]/i', '', $hlp);
// Load the template script
jimport('joomla.filesystem.path');
$helper = \JPath::find($this->_path['helper'],
$this->_createFileName('helper', array('name' =>
$file)));
if ($helper != false)
{
// Include the requested template filename in the local scope
include_once $helper;
}
}
/**
* Sets an entire array of search paths for templates or resources.
*
* @param string $type The type of path to set, typically
'template'.
* @param mixed $path The new search path, or an array of search
paths. If null or false, resets to the current directory only.
*
* @return void
*
* @since 3.0
*/
protected function _setPath($type, $path)
{
$component = \JApplicationHelper::getComponentName();
$app = \JFactory::getApplication();
// Clear out the prior search dirs
$this->_path[$type] = array();
// Actually add the user-specified directories
$this->_addPath($type, $path);
// Always add the fallback directories as last resort
switch (strtolower($type))
{
case 'template':
// Set the alternative template search dir
if (isset($app))
{
$component = preg_replace('/[^A-Z0-9_\.-]/i', '',
$component);
$fallback = JPATH_THEMES . '/' . $app->getTemplate() .
'/html/' . $component . '/' . $this->getName();
$this->_addPath('template', $fallback);
}
break;
}
}
/**
* Adds to the search path for templates and resources.
*
* @param string $type The type of path to add.
* @param mixed $path The directory or stream, or an array of either,
to search.
*
* @return void
*
* @since 3.0
*/
protected function _addPath($type, $path)
{
jimport('joomla.filesystem.path');
// Loop through the path directories
foreach ((array) $path as $dir)
{
// Clean up the path
$dir = \JPath::clean($dir);
// Add trailing separators as needed
if (substr($dir, -1) != DIRECTORY_SEPARATOR)
{
// Directory
$dir .= DIRECTORY_SEPARATOR;
}
// Add to the top of the search dirs
array_unshift($this->_path[$type], $dir);
}
}
/**
* Create the filename for a resource
*
* @param string $type The resource type to create the filename for
* @param array $parts An associative array of filename information
*
* @return string The filename
*
* @since 3.0
*/
protected function _createFileName($type, $parts = array())
{
switch ($type)
{
case 'template':
$filename = strtolower($parts['name']) . '.' .
$this->_layoutExt;
break;
default:
$filename = strtolower($parts['name']) . '.php';
break;
}
return $filename;
}
/**
* Returns the form object
*
* @return mixed A \JForm object on success, false on failure
*
* @since 3.2
*/
public function getForm()
{
if (!is_object($this->form))
{
$this->form = $this->get('Form');
}
return $this->form;
}
/**
* Sets the document title according to Global Configuration options
*
* @param string $title The page title
*
* @return void
*
* @since 3.6
*/
public function setDocumentTitle($title)
{
$app = \JFactory::getApplication();
// Check for empty title and add site name if param is set
if (empty($title))
{
$title = $app->get('sitename');
}
elseif ($app->get('sitename_pagetitles', 0) == 1)
{
$title = \JText::sprintf('JPAGETITLE',
$app->get('sitename'), $title);
}
elseif ($app->get('sitename_pagetitles', 0) == 2)
{
$title = \JText::sprintf('JPAGETITLE', $title,
$app->get('sitename'));
}
$this->document->setTitle($title);
}
}
ItemView.php000064400000006576151156057600007032 0ustar00<?php
/**
* @package OSL
* @subpackage View
*
* @copyright Copyright (C) 2016 Ossolution Team, Inc. All rights
reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
namespace OSL\View;
use OSL\Utils\Html as HtmlUtils;
use JHtml, JLanguageHelper, JToolbarHelper, JText;
/**
* Class ItemView
*
* Joomla CMS Item View Class. This class is used to display details
information of an item
* or display form allow add/editing items
*
* @property \OSL\Model\AdminModel $model
*
*/
class ItemView extends HtmlView
{
/**
* The model state.
*
* @var \OSL\Model\State
*/
protected $state;
/**
* The record which is being added/edited
*
* @var Object
*/
protected $item;
/**
* The array which keeps list of "list" options which will be
displayed on the form
*
* @var array $lists
*/
protected $lists = array();
/**
* Active languages use on the site
*
* @var array
*/
protected $languages = array();
/**
* Method to prepare all the data for the view before it is displayed
*/
protected function beforeRender()
{
$this->state = $this->model->getState();
$this->item = $this->model->getData();
if (property_exists($this->item, 'published'))
{
$this->lists['published'] =
HtmlUtils::getBooleanInput('published',
$this->item->published);
}
if (property_exists($this->item, 'access'))
{
$this->lists['access'] = JHtml::_('access.level',
'access', $this->item->access,
'class="form-select"', false);
}
if (property_exists($this->item, 'language'))
{
$this->lists['language'] =
JHtml::_('select.genericlist',
JHtml::_('contentlanguage.existing', true, true),
'language', 'class="form-select"',
'value', 'text', $this->item->language);
}
$this->languages = JLanguageHelper::getLanguages();
if ($this->isAdminView)
{
$this->addToolbar();
}
}
/**
* Add toolbar buttons for add/edit item form
*/
protected function addToolbar()
{
$helperClass = $this->container->componentNamespace .
'\\Site\\Helper\\Helper';
if (is_callable($helperClass . '::getActions'))
{
$canDo = call_user_func(array($helperClass, 'getActions'),
$this->name, $this->state);
}
else
{
$canDo = call_user_func(array('\\OSL\Utils\\Helper',
'getActions'), $this->container->option);
}
if ($this->item->id)
{
$toolbarTitle = $this->container->languagePrefix . '_' .
$this->name . '_EDIT';
}
else
{
$toolbarTitle = $this->container->languagePrefix . '_' .
$this->name . '_NEW';
}
JToolbarHelper::title(JText::_(strtoupper($toolbarTitle)));
if (($canDo->get('core.edit') ||
($canDo->get('core.create'))) &&
!in_array('save', $this->hideButtons))
{
JToolbarHelper::apply('apply', 'JTOOLBAR_APPLY');
JToolbarHelper::save('save', 'JTOOLBAR_SAVE');
}
if ($canDo->get('core.create') &&
!in_array('save2new', $this->hideButtons))
{
JToolbarHelper::custom('save2new', 'save-new.png',
'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
}
if ($this->item->id &&
$canDo->get('core.create') &&
!in_array('save2copy', $this->hideButtons))
{
JToolbarHelper::save2copy('save2copy');
}
if ($this->item->id)
{
JToolbarHelper::cancel('cancel', 'JTOOLBAR_CLOSE');
}
else
{
JToolbarHelper::cancel('cancel',
'JTOOLBAR_CANCEL');
}
}
}JsonView.php000064400000000437151156057600007033 0ustar00<?php
/**
* @package OSL
* @subpackage View
*
* @copyright Copyright (C) 2016 Ossolution Team, Inc. All rights
reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
namespace OSL\View;
class JsonView extends AbstractView
{
}ListView.php000064400000007634151156057610007044 0ustar00<?php
/**
* @package OSL
* @subpackage View
*
* @copyright Copyright (C) 2016 Ossolution Team, Inc. All rights
reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
namespace OSL\View;
use JHtml, JHtmlSidebar,
JText, JToolbarHelper;
/**
* Joomla CMS View List class, used to render list of records from
front-end or back-end of your component
*
* @package OSF
* @subpackage View
* @since 1.0
*
* @property \OSL\Model\ListModel $model
*/
class ListView extends HtmlView
{
/**
* The model state
*
* @var \OSL\Model\State
*/
protected $state;
/**
* List of records which will be displayed
*
* @var array
*/
protected $items;
/**
* The pagination object
*
* @var \JPagination
*/
protected $pagination;
/**
* The array which keeps list of "list" options which will used
to display as the filter on the list
*
* @var array $lists
*/
protected $lists = array();
/**
* The sidebar
*
* @var string
*/
protected $sidebar = '';
/**
* Prepare the view before it is displayed
*
*/
protected function beforeRender()
{
$this->state = $this->model->getState();
$this->items = $this->model->getData();
$this->pagination = $this->model->getPagination();
if ($this->isAdminView)
{
$this->lists['filter_state'] =
str_replace('class="inputbox"',
'class="input-medium"',
JHtml::_('grid.state', $this->state->filter_state));
$this->lists['filter_access'] =
JHtml::_('access.level', 'filter_access',
$this->state->filter_access, 'class="input-medium"
onchange="submit();"', true);
$this->lists['filter_language'] =
JHtml::_('select.genericlist',
JHtml::_('contentlanguage.existing', true, true),
'filter_language',
' onchange="submit();" ', 'value',
'text', $this->state->filter_language);
$helperClass = $this->container->componentNamespace .
'\\Site\\Helper\\Html';
if (is_callable($helperClass . '::addSubMenus'))
{
call_user_func(array($helperClass, 'addSubMenus'),
$this->name);
}
else
{
\OSL\Utils\Html::addSubMenus($this->container->option,
$this->name);
}
if (version_compare(JVERSION, '4.0.0-dev', '<'))
{
$this->sidebar = JHtmlSidebar::render();
}
$this->addToolbar();
}
}
/**
* Method to add toolbar buttons
*
*/
protected function addToolbar()
{
$helperClass = $this->container->componentNamespace .
'\\Site\\Helper\\Helper';
if (is_callable($helperClass . '::getActions'))
{
$canDo = call_user_func(array($helperClass, 'getActions'),
$this->name, $this->state);
}
else
{
$canDo = call_user_func(array('\\OSL\Utils\\Helper',
'getActions'), $this->container->option);
}
$languagePrefix = $this->container->languagePrefix;
JToolbarHelper::title(JText::_(strtoupper($languagePrefix . '_'
. $this->container->inflector->singularize($this->name) .
'_MANAGEMENT')), 'link ' . $this->name);
if ($canDo->get('core.create') &&
!in_array('add', $this->hideButtons))
{
JToolbarHelper::addNew('add', 'JTOOLBAR_NEW');
}
if ($canDo->get('core.edit') &&
isset($this->items[0]) && !in_array('edit',
$this->hideButtons))
{
JToolbarHelper::editList('edit', 'JTOOLBAR_EDIT');
}
if ($canDo->get('core.delete') &&
isset($this->items[0]) && !in_array('delete',
$this->hideButtons))
{
JToolbarHelper::deleteList(JText::_($languagePrefix .
'_DELETE_CONFIRM'), 'delete');
}
if ($canDo->get('core.edit.state') &&
!in_array('publish', $this->hideButtons))
{
if (isset($this->items[0]->published) ||
isset($this->items[0]->state))
{
JToolbarHelper::publish('publish',
'JTOOLBAR_PUBLISH', true);
JToolbarHelper::unpublish('unpublish',
'JTOOLBAR_UNPUBLISH', true);
}
}
if ($canDo->get('core.admin'))
{
JToolbarHelper::preferences($this->container->option);
}
}
}AbstractBlock.php000064400000001536151160146260010002 0ustar00<?php
namespace Nextend\Framework\View;
use Nextend\Framework\Pattern\GetPathTrait;
use Nextend\Framework\Pattern\MVCHelperTrait;
abstract class AbstractBlock {
use GetPathTrait;
use MVCHelperTrait;
/**
* AbstractBlock constructor.
*
* @param MVCHelperTrait $MVCHelper
*/
final public function __construct($MVCHelper) {
$this->setMVCHelper($MVCHelper);
$this->init();
}
protected function init() {
}
protected function renderTemplatePart($templateName) {
include self::getPath() . '/' . $templateName .
'.php';
}
/**
* Returns the HTML code of the display method
*
* @return string
*/
public function toHTML() {
ob_start();
$this->display();
return ob_get_clean();
}
public abstract function display();
}AbstractLayout.php000064400000003106151160146260010220 0ustar00<?php
namespace Nextend\Framework\View;
use Nextend\Framework\Pattern\GetPathTrait;
use Nextend\Framework\Pattern\MVCHelperTrait;
abstract class AbstractLayout {
use GetPathTrait;
use MVCHelperTrait;
/** @var AbstractView */
protected $view;
/**
* @var AbstractBlock[]|string[]|array[]
*/
protected $contentBlocks = array();
protected $state = array();
/**
* AbstractLayout constructor.
*
* @param AbstractView $view
*
*/
public function __construct($view) {
$this->view = $view;
$this->setMVCHelper($view);
$this->getApplicationType()
->setLayout($this);
$this->enqueueAssets();
}
protected function enqueueAssets() {
$this->getApplicationType()
->enqueueAssets();
}
/**
* @param string $html
*/
public function addContent($html) {
$this->contentBlocks[] = $html;
}
/**
* @param AbstractBlock $block
*/
public function addContentBlock($block) {
$this->contentBlocks[] = $block;
}
public function displayContent() {
foreach ($this->contentBlocks AS $content) {
if (is_string($content)) {
echo $content;
} else if (is_array($content)) {
echo call_user_func_array($content[0], $content[1]);
} else {
$content->display();
}
}
}
public function setState($name, $value) {
$this->state[$name] = $value;
}
public abstract function render();
}AbstractViewAjax.php000064400000001511151160146260010457 0ustar00<?php
namespace Nextend\Framework\View;
use Nextend\Framework\Controller\AbstractController;
use Nextend\Framework\Pattern\GetPathTrait;
use Nextend\Framework\Pattern\MVCHelperTrait;
abstract class AbstractViewAjax {
use GetPathTrait;
use MVCHelperTrait;
/** @var AbstractController */
protected $controller;
/**
* AbstractViewAjax constructor.
*
* @param AbstractController $controller
*
*/
public function __construct($controller) {
$this->controller = $controller;
$this->setMVCHelper($controller);
}
protected function render($templateName) {
ob_start();
include self::getPath() . '/Template/' . $templateName .
'.php';
return ob_get_clean();
}
/**
* @return string
*/
public abstract function display();
}Html.php000064400000024172151160146260006171 0ustar00<?php
namespace Nextend\Framework\View;
use Nextend\Framework\Platform\Platform;
use Nextend\Framework\Settings;
class Html {
private static $closeSingleTags = true;
/**
* @var boolean whether to render special attributes value. Defaults to
true. Can be set to false for HTML5.
* @since 1.1.13
*/
private static $renderSpecialAttributesValue = true;
/**
* Generates an HTML element.
*
* @param string $tag the tag name
* @param array $htmlOptions the element attributes. The values will
be HTML-encoded using
* {@link encodeAttribute()}. If an
'encode' attribute is given and its value is false,
* the rest of the attribute values will
NOT be HTML-encoded. Since version 1.1.5,
* attributes whose value is null will not
be rendered.
* @param mixed $content the content to be enclosed between open
and close element tags. It will not be
* HTML-encoded. If false, it means there
is no body content.
* @param boolean $closeTag whether to generate the close tag.
*
* @return string the generated HTML element tag
*/
public static function tag($tag, $htmlOptions = array(), $content =
"", $closeTag = true) {
$html = '<' . $tag .
self::renderAttributes($htmlOptions);
if ($content === false) return $closeTag &&
self::$closeSingleTags ? $html . ' />' : $html .
'>'; else
return $closeTag ? $html . '>' . $content .
'</' . $tag . '>' : $html . '>' .
$content;
}
/**
* Generates an open HTML element.
*
* @param string $tag the tag name
* @param array $htmlOptions the element attributes. The values will
be HTML-encoded using
* {@link encodeAttribute()}.
* If an 'encode' attribute is
given and its value is false,
* the rest of the attribute values will NOT
be HTML-encoded.
* Since version 1.1.5, attributes whose
value is null will not be rendered.
*
* @return string the generated HTML element tag
*/
public static function openTag($tag, $htmlOptions = array()) {
return '<' . $tag .
self::renderAttributes($htmlOptions) . '>';
}
/**
* Generates a close HTML element.
*
* @param string $tag the tag name
*
* @return string the generated HTML element tag
*/
public static function closeTag($tag) {
return '</' . $tag . '>';
}
/**
* Generates an image tag.
*
* @param string $src the image URL
* @param string $alt the alternative text display
* @param array $htmlOptions additional HTML attributes (see {@link
tag}).
*
* @return string the generated image tag
*/
public static function image($src, $alt = '', $htmlOptions =
array()) {
$htmlOptions['src'] = $src;
$htmlOptions['alt'] = $alt;
return self::tag('img', $htmlOptions, false, false);
}
/**
* Renders the HTML tag attributes.
* Since version 1.1.5, attributes whose value is null will not be
rendered.
* Special attributes, such as 'checked',
'disabled', 'readonly', will be rendered
* properly based on their corresponding boolean value.
*
* @param array $htmlOptions attributes to be rendered
*
* @return string the rendering result
*/
public static function renderAttributes($htmlOptions = array()) {
static $specialAttributes = array(
'autofocus' => 1,
'autoplay' => 1,
'controls' => 1,
'declare' => 1,
'default' => 1,
'disabled' => 1,
'ismap' => 1,
'loop' => 1,
'muted' => 1,
'playsinline' => 1,
'webkit-playsinline' => 1,
'nohref' => 1,
'noresize' => 1,
'novalidate' => 1,
'open' => 1,
'reversed' => 1,
'scoped' => 1,
'seamless' => 1,
'selected' => 1,
'typemustmatch' => 1,
'lazyload' => 1,
), $specialAttributesNoValue = array(
'defer' => 1,
'async' => 1
);
if (empty($htmlOptions)) {
return '';
}
if (isset($htmlOptions['style']) &&
empty($htmlOptions['style'])) {
unset($htmlOptions['style']);
}
$html = '';
if (isset($htmlOptions['encode'])) {
$raw = !$htmlOptions['encode'];
unset($htmlOptions['encode']);
} else
$raw = false;
foreach ($htmlOptions as $name => $value) {
if (isset($specialAttributes[$name])) {
if ($value) {
$html .= ' ' . $name;
if (self::$renderSpecialAttributesValue) $html .=
'="' . $name . '"';
}
} else if (isset($specialAttributesNoValue[$name])) {
$html .= ' ' . $name;
} else if ($value !== null) $html .= ' ' . $name .
'="' . ($raw ? $value : self::encodeAttribute($value)) .
'"';
}
return $html;
}
/**
* @param $text
*
* @return string
*/
public static function encode($text) {
return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
}
/**
* @param $text
*
* @return string
*/
public static function encodeAttribute($text) {
/**
* Do not encode: '
*/
return htmlspecialchars($text, ENT_COMPAT | ENT_HTML5,
'UTF-8');
}
public static function link($name, $url = '#', $htmlOptions =
array()) {
$htmlOptions["href"] = $url;
$url = self::openTag("a", $htmlOptions);
if (isset($htmlOptions["encode"]) &&
$htmlOptions["encode"]) {
$url .= self::encode($name);
} else {
$url .= $name;
}
$url .= self::closeTag("a");
return $url;
}
/**
* Insert stylesheet
*
* @param string $script
* @param bool $file
* @param array $scriptOptions
*
* @return string
*/
public static function style($script, $file = false, $scriptOptions =
array()) {
if ($file) {
$options = array(
"rel" => "stylesheet",
"type" => "text/css",
"href" => $script
);
$options = array_merge($options, $scriptOptions);
return self::tag('link', $options, false, false);
}
return self::tag("style", $scriptOptions, $script);
}
/**
* Insert script
*
* @param string $script
*
* @return string
*/
public static function script($script) {
return self::tag('script', array(
'encode' => false
), $script);
}
public static function scriptFile($script, $attributes = array()) {
return self::tag('script', array(
'src' => $script
) + self::getScriptAttributes() + $attributes, '');
}
private static function getScriptAttributes() {
static $attributes = null;
if (Platform::isAdmin()) {
return array();
}
if ($attributes === null) {
if (class_exists('\\Nextend\\Framework\\Settings',
false)) {
$value =
trim(html_entity_decode(strip_tags(Settings::get('scriptattributes',
''))));
$_attributes = explode(' ',
str_replace('\'', "",
str_replace("\"", "", $value)));
if (!empty($value) && !empty($_attributes)) {
foreach ($_attributes as $attr) {
if (strpos($attr, '=') !== false) {
$atts = explode("=", $attr);
if (count($atts) <= 2) {
$attributes[$atts[0]] = $atts[1];
} else {
$attributes[$attr] = $attr;
}
} else {
$attributes[$attr] = $attr;
}
}
} else {
$attributes = array();
}
} else {
return array();
}
}
return $attributes;
}
/**
* @param array $array1
* @param array $array2 [optional]
* @param array $_ [optional]
*
* @return array the resulting array.
* @since 4.0
* @since 5.0
*/
public static function mergeAttributes($array1, $array2 = null, $_ =
null) {
$arguments = func_get_args();
$target = array_shift($arguments);
foreach ($arguments as $array) {
if (isset($array['style'])) {
if (!isset($target['style']))
$target['style'] = '';
$target['style'] .= $array['style'];
unset($array['style']);
}
if (isset($array['class'])) {
if (empty($target['class'])) {
$target['class'] = $array['class'];
} else {
$target['class'] .= ' ' .
$array['class'];
}
unset($array['class']);
}
$target = array_merge($target, $array);
}
return $target;
}
public static function addExcludeLazyLoadAttributes($target = array())
{
return self::mergeAttributes($target,
self::getExcludeLazyLoadAttributes());
}
public static function getExcludeLazyLoadAttributes() {
static $attrs;
if ($attrs === null) {
$attrs = array(
'class' => 'skip-lazy',
'data-skip-lazy' => 1
);
if (defined('JETPACK__VERSION')) {
$attrs['class'] .= '
jetpack-lazy-image';
}
}
return $attrs;
}
}Activities/Html.php000064400000003531151160230030010256 0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
namespace OSSolution\HelpdeskPro\Admin\View\Activities;
use JHtmlSidebar;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use OSL\Utils\Html as HtmlUtisl;
use OSL\View\HtmlView;
// no direct access
defined('_JEXEC') or die;
/***
* @property \OSSolution\HelpdeskPro\Admin\Model\Activities $model
*/
class Html extends HtmlView
{
protected $lists = [];
protected function beforeRender()
{
$state = $this->model->getState();
$users = $this->model->getUsers();
$options = [];
$options[] = HTMLHelper::_('select.option', 0,
Text::_('Select User'), 'id', 'username');
$options = array_merge($options, $users);
$this->lists['filter_user_id'] =
HTMLHelper::_('select.genericlist', $options,
'filter_user_id', 'onchange="submit();"
class="form-select"', 'id', 'username',
$state->filter_user_id);
$this->lists['filter_start_hour'] =
HTMLHelper::_('select.integerlist', 0, 23, 1,
'filter_start_hour', ' class="input-mini" ',
$state->filter_start_hour);
$this->lists['filter_end_hour'] =
HTMLHelper::_('select.integerlist', 0, 23, 1,
'filter_end_hour', ' class="input-mini" ',
$state->filter_end_hour);
$this->data = $this->model->getData();
$userMap = [];
foreach ($users as $user)
{
$userMap[$user->id] = $user->username;
}
if (!\HelpdeskproHelper::isJoomla4())
{
// Add sidebar
HtmlUtisl::addSubMenus($this->container->option, $this->name);
$this->sidebar = JHtmlSidebar::render();
}
else
{
$this->sidebar = '';
}
$this->state = $state;
$this->userMap = $userMap;
}
}Activities/tmpl/default.php000064400000006516151160230040011761
0ustar00<?php
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Toolbar\ToolbarHelper;
ToolbarHelper::title(Text::_('Activities Report'),
'generic.png');
?>
<div class="row-fluid">
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<form
action="index.php?option=com_helpdeskpro&view=activities"
method="post" name="adminForm"
id="adminForm">
<div id="filter-bar" class="btn-toolbar">
<table width="100%">
<tr style="font-size: 14px !important;">
<td>
<?php echo $this->lists['filter_user_id']; ?>
</td>
<td>
<?php echo '<strong>' . Text::_('Start Date:
') . '<strong>' . HTMLHelper::_('calendar',
HTMLHelper::_('date', $this->state->filter_start_date,
'Y-m-d', null), 'filter_start_date',
'filter_start_date', '%Y-%m-%d',
array('class' => 'input-small')); ?>
</td>
<td>
<?php echo '<strong>' . Text::_('End Date:
') . '</strong>' . HTMLHelper::_('calendar',
HTMLHelper::_('date', $this->state->filter_end_date,
'Y-m-d', null), 'filter_end_date',
'filter_end_date', '%Y-%m-%d', array('class'
=> 'input-small')); ?>
</td>
<td>
<?php echo '<strong>' . Text::_('Hour
between ') . '</strong>' .
$this->lists['filter_start_hour'] . '<strong>'
. Text::_('And ') . '</strong>' .
$this->lists['filter_end_hour']; ?>
</td>
<td>
<input type="submit" class="btn btn-primary"
/>
</td>
</tr>
</table>
</div>
<div class="clearfix"></div>
<table class="adminlist table table-striped">
<thead>
<tr>
<th>
<?php echo Text::_('HDP_USER'); ?>
</th>
<th>
<?php echo Text::_('Date / Time'); ?>
</th>
<th>
<?php echo Text::_('Category'); ?>
</th>
<th>
<?php echo Text::_('HDP_TICKET'); ?>
</th>
<th width="60%">
<?php echo Text::_('Comment');?>
</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="5" style="font-weight: 18px;
text-align: center;">
<?php echo Text::sprintf('Total activities:
<strong>%s</strong>', count($this->data)); ?>
</td>
</tr>
</tfoot>
<tbody>
<?php
$toDayDate = Factory::getDate('now',
Factory::getConfig()->get('offset'))->format('Y-m-d');
foreach($this->data as $activity)
{
?>
<tr>
<td>
<?php echo $this->userMap[$activity->user_id]; ?>
</td>
<td>
<?php
if (HTMLHelper::_('date', $activity->date_added,
'Y-m-d') == $toDayDate)
{
echo HTMLHelper::_('date', $activity->date_added,
'G:i');
}
else
{
echo HTMLHelper::_('date', $activity->date_added,
'm-d-Y G:i');
}
?>
</td>
<td>
<?php echo $activity->category_title; ?>
</td>
<td>
<a
href="index.php?option=com_helpdeskpro&view=ticket&id=<?php
echo $activity->ticket_id ?>"
target="_blank">#<?php echo $activity->ticket_id;
?></a>
</td>
<td>
<?php echo JHtmlString::truncate($activity->message, 200);
?>
</td>
</tr>
<?php
}
?>
</tbody>
</table>
</form>
</div>
</div>Article/Html.php000064400000001531151160230040007534
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
namespace OSSolution\HelpdeskPro\Admin\View\Article;
use OSL\View\ItemView;
use OSSolution\HelpdeskPro\Site\Helper\Database as
HelpdeskproHelperDatabase;
use OSSolution\HelpdeskPro\Site\Helper\Html as HelpdeskproHelperHtml;
defined('_JEXEC') or die;
class Html extends ItemView
{
protected function beforeRender()
{
parent::beforeRender();
$rows = HelpdeskproHelperDatabase::getAllCategories('title',
array(), '', 2);
$this->lists['category_id'] =
HelpdeskproHelperHtml::buildCategoryDropdown($this->item->category_id,
'category_id', 'class="input-large
form-select"', $rows);
}
}Article/tmpl/default.php000064400000006325151160230040011236
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\Editor\Editor;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Multilanguage;
use Joomla\CMS\Language\Text;
$editor =
Editor::getInstance(Factory::getConfig()->get('editor'));
$translatable = Multilanguage::isEnabled() &&
count($this->languages);
if (HelpdeskproHelper::isJoomla4())
{
$tabApiPrefix = 'uitab.';
}
else
{
$tabApiPrefix = 'bootstrap.';
}
?>
<form
action="index.php?option=com_helpdeskpro&view=article"
method="post" name="adminForm" id="adminForm"
class="form form-horizontal">
<?php
if ($translatable)
{
echo HTMLHelper::_($tabApiPrefix . 'startTabSet',
'article', array('active' =>
'general-page'));
echo HTMLHelper::_($tabApiPrefix . 'addTab',
'article', 'general-page',
Text::_('HDP_GENERAL', true));
}
?>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TITLE'); ?>
</div>
<div class="controls">
<input class="input-xxlarge form-control"
type="text" name="title" id="title"
size="40" maxlength="250"
value="<?php echo $this->item->title;
?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_ALIAS'); ?>
</div>
<div class="controls">
<input class="form-control"
type="text" name="alias" id="alias"
size="40" maxlength="250"
value="<?php echo $this->item->alias;
?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_CATEGORY'); ?>
</div>
<div class="controls">
<?php echo $this->lists['category_id'];
?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TEXT'); ?>
</div>
<div class="controls">
<?php echo $editor->display('text',
$this->item->text, '100%', '250', '75',
'10'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_PUBLISHED'); ?>
</div>
<div class="controls">
<?php echo $this->lists['published'];
?>
</div>
</div>
<?php
if ($translatable)
{
echo HTMLHelper::_($tabApiPrefix . 'endTab');
echo $this->loadTemplate('translation',
['editor' => $editor]);
echo HTMLHelper::_($tabApiPrefix . 'endTabSet');
}
?>
<?php echo HTMLHelper::_('form.token'); ?>
<input type="hidden" name="id"
value="<?php echo $this->item->id; ?>"/>
<input type="hidden" name="task"
value=""/>
</form>Article/tmpl/default_translation.php000064400000004457151160230040013660
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Uri\Uri;
$rootUri = Uri::root();
if (HelpdeskproHelper::isJoomla4())
{
$tabApiPrefix = 'uitab.';
}
else
{
$tabApiPrefix = 'bootstrap.';
}
echo HTMLHelper::_($tabApiPrefix . 'addTab', 'article',
'translation-page', Text::_('HDP_TRANSLATION', true));
echo HTMLHelper::_($tabApiPrefix . 'startTabSet',
'item-translation', array('active' =>
'translation-page-'.$this->languages[0]->sef));
foreach ($this->languages as $language)
{
$sef = $language->sef;
echo HTMLHelper::_($tabApiPrefix . 'addTab',
'item-translation', 'translation-page-' . $sef,
$language->title . ' <img src="' . $rootUri .
'media/com_helpdeskpro/assets/flags/' . $sef . '.png"
/>');
?>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TITLE'); ?>
</div>
<div class="controls">
<input class="input-xxlarge form-control"
type="text" name="title_<?php echo $sef; ?>"
id="title_<?php echo $sef; ?>"
size="" maxlength="250"
value="<?php echo
$this->item->{'title_' . $sef}; ?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_ALIAS'); ?>
</div>
<div class="controls">
<input class="input-xlarge" type="text"
name="alias_<?php echo $sef; ?>"
id="alias_<?php echo $sef; ?>"
size="" maxlength="250"
value="<?php echo
$this->item->{'alias_' . $sef}; ?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_DESCRIPTION'); ?>
</div>
<div class="controls">
<?php echo $editor->display('text_' . $sef,
$this->item->{'text_' . $sef}, '100%',
'250', '75', '10'); ?>
</div>
</div>
<?php
echo HTMLHelper::_($tabApiPrefix . 'endTab');
}
echo HTMLHelper::_($tabApiPrefix . 'endTabSet');
echo HTMLHelper::_($tabApiPrefix .
'endTab');Articles/Html.php000064400000001607151160230040007723
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
namespace OSSolution\HelpdeskPro\Admin\View\Articles;
use OSL\View\ListView;
use OSSolution\HelpdeskPro\Site\Helper\Database as
HelpdeskproHelperDatabase;
use OSSolution\HelpdeskPro\Site\Helper\Html as HelpdeskproHelperHtml;
defined('_JEXEC') or die;
class Html extends ListView
{
protected function beforeRender()
{
parent::beforeRender();
$rows = HelpdeskproHelperDatabase::getAllCategories('title',
array(), '', 2);
$this->lists['filter_category_id'] =
HelpdeskproHelperHtml::buildCategoryDropdown($this->state->filter_category_id,
'filter_category_id', 'class="input-large
form-select" onchange="submit();"', $rows);
}
}Articles/tmpl/default.php000064400000013721151160230040011417
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
HTMLHelper::_('bootstrap.tooltip');
if (!HelpdeskproHelper::isJoomla4())
{
HTMLHelper::_('formbehavior.chosen', 'select');
}
$ordering = ($this->state->filter_order ==
'tbl.ordering');
if ($ordering)
{
$saveOrderingUrl =
'index.php?option=com_helpdeskpro&task=article.save_order_ajax';
HTMLHelper::_('sortablelist.sortable', 'articlesList',
'adminForm', strtolower($this->state->filter_order_Dir),
$saveOrderingUrl);
}
$customOptions = array(
'filtersHidden' => true,
'defaultLimit' =>
Factory::getApplication()->get('list_limit', 20),
'searchFieldSelector' => '#filter_search',
'orderFieldSelector' => '#filter_full_ordering'
);
?>
<form
action="index.php?option=com_helpdeskpro&view=articles"
method="post" name="adminForm"
id="adminForm">
<div class="row-fluid">
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
Text::_('HDP_SEARCH_ARTICLES_DESC');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
Text::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->filter_search); ?>"
class="hasTooltip form-control" title="<?php echo
HTMLHelper::tooltipText('HDP_FILTER_SEARCH_ARTICLES_DESC');
?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn hasTooltip"
title="<?php echo
HTMLHelper::tooltipText('JSEARCH_FILTER_SUBMIT');
?>"><span
class="icon-search"></span></button>
<button type="button" class="btn hasTooltip"
title="<?php echo
HTMLHelper::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.getElementById('filter_search').value='';this.form.submit();"><span
class="icon-remove"></span></button>
</div>
<div class="btn-group pull-right hidden-phone">
<?php echo $this->lists['filter_category_id']; ?>
<?php echo $this->lists['filter_state']; ?>
</div>
</div>
<div class="clearfix"></div>
<table class="adminlist table table-striped"
id="articlesList">
<thead>
<tr>
<th width="5">
<?php echo HTMLHelper::_('searchtools.sort',
'', 'tbl.ordering',
$this->state->filter_order_Dir, $this->state->filter_order,
null, 'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20">
<input type="checkbox" name="toggle"
value="" onclick="Joomla.checkAll(this);"/>
</th>
<th class="title" style="text-align:
left;">
<?php echo HTMLHelper::_('searchtools.sort',
Text::_('HDP_TITLE'), 'tbl.title',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th class="title" style="text-align:
left;">
<?php echo HTMLHelper::_('searchtools.sort',
Text::_('HDP_CATEGORY'), 'b.title',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th class="center">
<?php echo HTMLHelper::_('searchtools.sort',
Text::_('HDP_HITS'), 'b.hits',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th width="5%">
<?php echo HTMLHelper::_('searchtools.sort',
Text::_('HDP_PUBLISHED'), 'tbl.published',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th width="2%">
<?php echo HTMLHelper::_('searchtools.sort',
Text::_('HDP_ID'), 'tbl.id',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="7">
<?php echo $this->pagination->getListFooter(); ?>
</td>
</tr>
</tfoot>
<tbody>
<?php
$k = 0;
for ($i = 0, $n = count($this->items); $i < $n; $i++)
{
$row = $this->items[$i];
$link =
Route::_('index.php?option=com_helpdeskpro&view=article&id='
. $row->id);
$checked = HTMLHelper::_('grid.id', $i, $row->id);
$published = HTMLHelper::_('jgrid.published',
$row->published, $i);
?>
<tr class="<?php echo "row$k"; ?>">
<td class="order nowrap center hidden-phone">
<?php
$iconClass = '';
if (!$ordering)
{
$iconClass = ' inactive tip-top hasTooltip"';
}
?>
<span class="sortable-handler<?php echo $iconClass
?>">
<i class="icon-menu"></i>
</span>
<?php if ($ordering) : ?>
<input type="text" style="display:none"
name="order[]" size="5" value="<?php echo
$row->ordering ?>" class="width-20 text-area-order
"/>
<?php endif; ?>
</td>
<td>
<?php echo $checked; ?>
</td>
<td>
<a href="<?php echo $link; ?>">
<?php echo $row->title; ?>
</a>
</td>
<td>
<?php echo $row->category_title; ?>
</td>
<td class="center">
<?php echo $row->hits; ?>
</td>
<td class="center">
<?php echo $published; ?>
</td>
<td class="center">
<?php echo $row->id; ?>
</td>
</tr>
<?php
$k = 1 - $k;
}
?>
</tbody>
</table>
</div>
</div>
<input type="hidden" name="task"
value=""/>
<input type="hidden" name="boxchecked"
value="0"/>
<input type="hidden" name="filter_order"
value="<?php echo $this->state->filter_order;
?>"/>
<input type="hidden" name="filter_order_Dir"
value="<?php echo $this->state->filter_order_Dir;
?>"/>
<input type="hidden" id="filter_full_ordering"
name="filter_full_ordering" value="" />
<?php echo HTMLHelper::_('form.token'); ?>
</form>Categories/Html.php000064400000002351151160230040010237
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
namespace OSSolution\HelpdeskPro\Admin\View\Categories;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use OSL\View\ListView;
use OSSolution\HelpdeskPro\Site\Helper\Html as HelpdeskproHelperHtml;
defined('_JEXEC') or die;
class Html extends ListView
{
protected function beforeRender()
{
parent::beforeRender();
$this->lists['filter_parent_id'] =
HelpdeskproHelperHtml::buildCategoryDropdown($this->state->filter_parent_id,
'filter_parent_id', 'onchange="submit();"
class="form-select"');
$options = array();
$options[] = HTMLHelper::_('select.option', 0,
Text::_('HDP_CATEGORY_TYPE'));
$options[] = HTMLHelper::_('select.option', 1,
Text::_('HDP_TICKETS'));
$options[] = HTMLHelper::_('select.option', 2,
Text::_('HDP_KNOWLEDGE_BASE'));
$this->lists['filter_category_type'] =
HTMLHelper::_('select.genericlist', $options,
'filter_category_type', 'onchange="submit();"
class="form-select"', 'value', 'text',
$this->state->filter_category_type);
}
}Categories/tmpl/default.php000064400000017764151160230040011751
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
defined('_JEXEC') or die;
HTMLHelper::_('bootstrap.tooltip');
if (!HelpdeskproHelper::isJoomla4())
{
HTMLHelper::_('formbehavior.chosen', 'select');
}
$ordering = ($this->state->filter_order ==
'tbl.ordering');
if ($ordering)
{
$saveOrderingUrl =
'index.php?option=com_helpdeskpro&task=category.save_order_ajax';
if (HelpdeskproHelper::isJoomla4())
{
\Joomla\CMS\HTML\HTMLHelper::_('draggablelist.draggable');
}
else
{
HTMLHelper::_('sortablelist.sortable',
'categoryList', 'adminForm',
strtolower($this->state->filter_order_Dir), $saveOrderingUrl, false,
true);
}
}
$customOptions = array(
'filtersHidden' => true,
'defaultLimit' =>
$this->container->appConfig->get('list_limit', 20),
'searchFieldSelector' => '#filter_search',
'orderFieldSelector' => '#filter_full_ordering'
);
HTMLHelper::_('searchtools.form', '#adminForm',
$customOptions);
$this->ordering = array();
if (count($this->items))
{
foreach ($this->items as &$item)
{
$this->ordering[$item->parent_id][] = $item->id;
}
}
?>
<form
action="index.php?option=com_helpdeskpro&view=categories"
method="post" name="adminForm"
id="adminForm">
<div class="row-fluid">
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<div id="filter-bar" class="btn-toolbar
js-stools">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
Text::_('HDP_SEARCH_CATEGORIES_DESC'); ?></label>
<input type="text" name="filter_search"
id="filter_search"
placeholder="<?php echo
Text::_('JSEARCH_FILTER'); ?>"
value="<?php echo
$this->escape($this->state->filter_search); ?>"
class="hasTooltip form-control"
title="<?php echo
HTMLHelper::tooltipText('HDP_FILTER_SEARCH_CATEGORIES_DESC');
?>"/>
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn hasTooltip"
title="<?php echo
HTMLHelper::tooltipText('JSEARCH_FILTER_SUBMIT');
?>"><span
class="icon-search"></span></button>
<button type="button" class="btn hasTooltip"
title="<?php echo
HTMLHelper::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.getElementById('filter_search').value='';this.form.submit();"><span
class="icon-remove"></span></button>
</div>
<div class="btn-group pull-right hidden-phone">
<?php echo $this->lists['filter_parent_id']; ?>
<?php echo $this->lists['filter_category_type'];
?>
<?php echo $this->lists['filter_state']; ?>
</div>
</div>
<div class="clearfix"></div>
<table class="adminlist table table-striped"
id="categoryList">
<thead>
<tr>
<th width="1%" class="nowrap center
hidden-phone">
<?php echo HTMLHelper::_('searchtools.sort',
'', 'tbl.ordering',
$this->state->filter_order_Dir, $this->state->filter_order,
null, 'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20">
<input type="checkbox" name="toggle"
value="" onclick="Joomla.checkAll(this);"/>
</th>
<th class="title">
<?php echo HTMLHelper::_('searchtools.sort',
Text::_('HDP_TITLE'), 'tbl.title',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th class="title">
<?php echo HTMLHelper::_('searchtools.sort',
Text::_('HDP_CATEGORY_TYPE'), 'tbl.category_type',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th class="title" width="15%">
<?php echo Text::_('HDP_NUMBER_TICKETS'); ?>
</th>
<th width="5%">
<?php echo HTMLHelper::_('searchtools.sort',
Text::_('HDP_PUBLISHED'), 'tbl.published',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th width="2%">
<?php echo HTMLHelper::_('searchtools.sort',
Text::_('HDP_ID'), 'tbl.id',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="7">
<?php echo $this->pagination->getListFooter(); ?>
</td>
</tr>
</tfoot>
<tbody <?php if ($ordering) :?>
class="js-draggable" data-url="<?php echo
$saveOrderingUrl; ?>" data-direction="<?php echo
strtolower($listDirn); ?>" data-nested="false"<?php
endif; ?>>
<?php
$k = 0;
$categoryTypes = array(
0 => Text::_('HDP_BOTH'),
1 => Text::_('HDP_TICKETS'),
2 => Text::_('HDP_KNOWLEDGE_BASE'),
);
for ($i = 0, $n = count($this->items); $i < $n; $i++)
{
$row = $this->items[$i];
$link =
Route::_('index.php?option=com_helpdeskpro&view=category&id='
. $row->id);
$checked = HTMLHelper::_('grid.id', $i, $row->id);
$published = HTMLHelper::_('jgrid.published',
$row->published, $i);
// Get the parents of item for sorting
if ($row->level > 1)
{
$parentsStr = "";
$_currentParentId = $row->parent_id;
$parentsStr = " " . $_currentParentId;
for ($i2 = 0; $i2 < $row->level; $i2++)
{
foreach ($this->ordering as $k => $v)
{
$v = implode("-", $v);
$v = "-" . $v . "-";
if (strpos($v, "-" . $_currentParentId . "-")
!== false)
{
$parentsStr .= " " . $k;
$_currentParentId = $k;
break;
}
}
}
}
else
{
$parentsStr = "";
}
if (HelpdeskproHelper::isJoomla4())
{
?>
<tr class="row<?php echo $i % 2;
?>" data-draggable-group="<?php echo $row->parent_id;
?>" item-id="<?php echo $row->id ?>"
parents="<?php echo $parentsStr ?>" level="<?php
echo $row->level ?>">
<?php
}
else
{
?>
<tr class="row<?php echo $i % 2;
?>" sortable-group-id="<?php echo $row->parent_id;
?>" item-id="<?php echo $row->id ?>"
parents="<?php echo $parentsStr ?>" level="<?php
echo $row->level ?>">
<?php
}
?>
<td class="order nowrap center hidden-phone">
<?php
$iconClass = '';
if (!$ordering)
{
$iconClass = ' inactive tip-top hasTooltip"';
}
?>
<span class="sortable-handler<?php echo $iconClass
?>">
<i class="icon-menu"></i>
</span>
<?php if ($ordering) : ?>
<input type="text" style="display:none"
name="order[]" size="5" value="<?php echo
$row->ordering ?>" class="width-20 text-area-order
"/>
<?php endif; ?>
</td>
<td>
<?php echo $checked; ?>
</td>
<td>
<a href="<?php echo $link; ?>">
<?php echo $row->treename; ?>
</a>
</td>
<td>
<?php echo $categoryTypes[$row->category_type]; ?>
</td>
<td class="center">
<?php echo $row->total_tickets; ?>
</td>
<td class="center">
<?php echo $published; ?>
</td>
<td class="center">
<?php echo $row->id; ?>
</td>
</tr>
<?php
$k = 1 - $k;
}
?>
</tbody>
</table>
</div>
</div>
<input type="hidden" name="task"
value=""/>
<input type="hidden" name="boxchecked"
value="0"/>
<input type="hidden" name="filter_order"
value="<?php echo $this->state->filter_order;
?>"/>
<input type="hidden" name="filter_order_Dir"
value="<?php echo $this->state->filter_order_Dir;
?>"/>
<input type="hidden" id="filter_full_ordering"
name="filter_full_ordering" value=""/>
<?php echo HTMLHelper::_('form.token'); ?>
</form>Category/Html.php000064400000002561151160230040007732
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
namespace OSSolution\HelpdeskPro\Admin\View\Category;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use OSL\View\ItemView;
use OSSolution\HelpdeskPro\Site\Helper\Html as HelpdeskproHelperHtml;
// no direct access
defined('_JEXEC') or die;
class Html extends ItemView
{
protected function beforeRender()
{
parent::beforeRender();
$db = $this->container->db;
$query = $db->getQuery(true)
->select('*')
->from('#__helpdeskpro_categories')
->order('title');
$db->setQuery($query);
$rows = $db->loadObjectList();
$this->lists['parent_id'] =
HelpdeskproHelperHtml::buildCategoryDropdown($this->item->parent_id,
'parent_id', 'class="form-select"', $rows);
$options = [];
$options[] = HTMLHelper::_('select.option', 0,
Text::_('HDP_BOTH'));
$options[] = HTMLHelper::_('select.option', 1,
Text::_('HDP_TICKETS'));
$options[] = HTMLHelper::_('select.option', 2,
Text::_('HDP_KNOWLEDGE_BASE'));
$this->lists['category_type'] =
HTMLHelper::_('select.genericlist', $options,
'category_type', 'class="form-select"',
'value', 'text', $this->item->category_type);
}
}Category/tmpl/default.php000064400000011004151160230040011416
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\Editor\Editor;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Multilanguage;
use Joomla\CMS\Language\Text;
if (HelpdeskproHelper::isJoomla4())
{
$tabApiPrefix = 'uitab.';
}
else
{
$tabApiPrefix = 'bootstrap.';
}
$editor =
Editor::getInstance(Factory::getConfig()->get('editor'));
$translatable = Multilanguage::isEnabled() &&
count($this->languages);
?>
<form
action="index.php?option=com_helpdeskpro&view=category"
method="post" name="adminForm" id="adminForm"
class="form form-horizontal">
<?php
if ($translatable)
{
echo HTMLHelper::_($tabApiPrefix . 'startTabSet',
'category', array('active' =>
'general-page'));
echo HTMLHelper::_($tabApiPrefix . 'addTab',
'category', 'general-page',
Text::_('HDP_GENERAL', true));
}
?>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TITLE'); ?>
</div>
<div class="controls">
<input class="form-control"
type="text" name="title" id="title"
size="40" maxlength="250"
value="<?php echo
$this->item->title; ?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_ALIAS'); ?>
</div>
<div class="controls">
<input class="form-control"
type="text" name="alias" id="alias"
size="40" maxlength="250"
value="<?php echo
$this->item->alias; ?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_PARENT_CATEGORY');
?>
</div>
<div class="controls">
<?php echo $this->lists['parent_id'];
?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_ACCESS_LEVEL');
?>
</div>
<div class="controls">
<?php echo $this->lists['access'];
?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_MANAGERS'); ?>
</div>
<div class="controls">
<input type="text"
name="managers" class="form-control input-xxlarge"
value="<?php echo
$this->item->managers; ?>"
placeholder="<?php echo
Text::_('HDP_MANAGERS_EXPLAIN'); ?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_DESCRIPTION');
?>
</div>
<div class="controls">
<?php echo
$editor->display('description',
$this->item->description, '100%', '250',
'75', '10'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_CATEGORY_TYPE');
?>
</div>
<div class="controls">
<?php echo
$this->lists['category_type']; ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_PUBLISHED');
?>
</div>
<div class="controls">
<?php echo $this->lists['published'];
?>
</div>
</div>
<?php
if ($translatable)
{
echo HTMLHelper::_($tabApiPrefix . 'endTab');
echo $this->loadTemplate('translation',
['editor' => $editor]);
echo HTMLHelper::_($tabApiPrefix . 'endTabSet');
}
?>
<?php echo HTMLHelper::_('form.token'); ?>
<input type="hidden" name="id"
value="<?php echo $this->item->id; ?>"/>
<input type="hidden" name="task"
value=""/>
</form>Category/tmpl/default_translation.php000064400000004464151160230040014050
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Uri\Uri;
$rootUri = Uri::root();
if (HelpdeskproHelper::isJoomla4())
{
$tabApiPrefix = 'uitab.';
}
else
{
$tabApiPrefix = 'bootstrap.';
}
echo HTMLHelper::_($tabApiPrefix . 'addTab',
'category', 'translation-page',
Text::_('HDP_TRANSLATION', true));
echo HTMLHelper::_($tabApiPrefix . 'startTabSet',
'item-translation', array('active' =>
'translation-page-'.$this->languages[0]->sef));
foreach ($this->languages as $language)
{
$sef = $language->sef;
echo HTMLHelper::_($tabApiPrefix . 'addTab',
'item-translation', 'translation-page-' . $sef,
$language->title . ' <img src="' . $rootUri .
'media/com_helpdeskpro/assets/flags/' . $sef . '.png"
/>');
?>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TITLE'); ?>
</div>
<div class="controls">
<input class="input-xlarge" type="text"
name="title_<?php echo $sef; ?>"
id="title_<?php echo $sef; ?>"
size="" maxlength="250"
value="<?php echo
$this->item->{'title_' . $sef}; ?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_ALIAS'); ?>
</div>
<div class="controls">
<input class="input-xlarge" type="text"
name="alias_<?php echo $sef; ?>"
id="alias_<?php echo $sef; ?>"
size="" maxlength="250"
value="<?php echo
$this->item->{'alias_' . $sef}; ?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_DESCRIPTION'); ?>
</div>
<div class="controls">
<?php echo $editor->display('description_' .
$sef, $this->item->{'description_' . $sef},
'100%', '250', '75', '10'); ?>
</div>
</div>
<?php
echo HTMLHelper::_($tabApiPrefix . 'endTab');
}
echo HTMLHelper::_($tabApiPrefix . 'endTabSet');
echo HTMLHelper::_($tabApiPrefix .
'endTab');Configuration/Html.php000064400000017371151160230040010771
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
namespace OSSolution\HelpdeskPro\Admin\View\Configuration;
use Joomla\CMS\Editor\Editor;
use Joomla\CMS\Filesystem\Folder;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Plugin\PluginHelper;
use OSL\View\HtmlView;
use OSSolution\HelpdeskPro\Site\Helper\Database as
HelpdeskproHelperDatabase;
use OSSolution\HelpdeskPro\Site\Helper\Helper as HelpdeskproHelper;
defined('_JEXEC') or die;
class Html extends HtmlView
{
protected function beforeRender()
{
jimport('joomla.filesystem.folder');
$config = HelpdeskproHelper::getConfig();
$languages = [
'Php',
'JScript',
'Css',
'Xml',
'Plain',
'AS3',
'Bash',
'Cpp',
'CSharp',
'Delphi',
'Diff',
'Groovy',
'Java',
'JavaFX',
'Perl',
'PowerShell',
'Python',
'Ruby',
'Scala',
'Sql',
'Vb',
];
$options = [];
foreach ($languages as $language)
{
$options[] = HTMLHelper::_('select.option', $language,
$language);
}
$lists['programming_languages'] =
HTMLHelper::_('select.genericlist', $options,
'programming_languages[]', ' class="form-select"
multiple="multiple" ', 'value', 'text',
explode(',', $config->programming_languages));
$statuses =
HelpdeskproHelperDatabase::getAllStatuses();
$options = [];
$options[] = HTMLHelper::_('select.option',
0, Text::_('HDP_SELECT'), 'id', 'title');
$options = array_merge($options, $statuses);
$lists['new_ticket_status_id'] =
HTMLHelper::_('select.genericlist', $options,
'new_ticket_status_id',
[
'option.text.toHtml' => false,
'option.text' => 'title',
'option.key' => 'id',
'list.attr' =>
'class="form-select"',
'list.select' =>
$config->new_ticket_status_id]);
$options = [];
$options[] = HTMLHelper::_('select.option', 0,
Text::_('HDP_DONOT_CHANGE'), 'id', 'title');
$options = array_merge($options, $statuses);
$lists['ticket_status_when_customer_add_comment'] =
HTMLHelper::_('select.genericlist', $options,
'ticket_status_when_customer_add_comment',
[
'option.text.toHtml' => false,
'option.text' => 'title',
'option.key' => 'id',
'list.attr' =>
'class="form-select" ',
'list.select' =>
$config->ticket_status_when_customer_add_comment]);
$lists['ticket_status_when_admin_add_comment'] =
HTMLHelper::_('select.genericlist', $options,
'ticket_status_when_admin_add_comment',
[
'option.text.toHtml' => false,
'option.text' => 'title',
'option.key' => 'id',
'list.attr' =>
'class="form-select" ',
'list.select' =>
$config->ticket_status_when_admin_add_comment]);
$lists['closed_ticket_status'] =
HTMLHelper::_('select.genericlist', $options,
'closed_ticket_status',
[
'option.text.toHtml' => false,
'option.text' => 'title',
'option.key' => 'id',
'list.attr' =>
'class="form-select"',
'list.select' =>
$config->closed_ticket_status]);
if ($config->manager_default_status_filters)
{
$statusFilters = explode(',',
$config->manager_default_status_filters);
}
else
{
$statusFilters = [$config->new_ticket_status_id,
$config->ticket_status_when_customer_add_comment];
}
$lists['manager_default_status_filters'] =
HTMLHelper::_('select.genericlist', $statuses,
'manager_default_status_filters[]',
[
'option.text.toHtml' => false,
'option.text' => 'title',
'option.key' => 'id',
'list.attr' =>
'class="form-select" multiple',
'list.select' => $statusFilters]);
$options = [];
$options[] =
HTMLHelper::_('select.option', 0,
Text::_('HDP_SELECT'), 'id', 'title');
$options = array_merge($options,
HelpdeskproHelperDatabase::getAllPriorities());
$lists['default_ticket_priority_id'] =
HTMLHelper::_('select.genericlist', $options,
'default_ticket_priority_id',
[
'option.text.toHtml' => false,
'option.text' => 'title',
'option.key' => 'id',
'list.attr' =>
'class="form-select"',
'list.select' =>
$config->default_ticket_priority_id]);
$options = [];
$options[] = HTMLHelper::_('select.option', 0,
Text::_('Select'));
$options[] = HTMLHelper::_('select.option',
'1', Text::_('Byte'));
$options[] = HTMLHelper::_('select.option',
'2', Text::_('Kb'));
$options[] = HTMLHelper::_('select.option',
'3', Text::_('Mb'));
$lists['max_filesize_type'] =
HTMLHelper::_('select.genericlist', $options,
'max_filesize_type', 'class="input-small form-select
d-inline"', 'value', 'text',
$config->max_filesize_type ? $config->max_filesize_type : 3);
$options = [];
if (!HelpdeskproHelper::isJoomla4())
{
$options[] = HTMLHelper::_('select.option', 2,
Text::_('HDP_VERSION_2'));
$options[] = HTMLHelper::_('select.option', 3,
Text::_('HDP_VERSION_3'));
}
$options[] = HTMLHelper::_('select.option', 4,
Text::_('HDP_VERSION_4'));
$options[] = HTMLHelper::_('select.option', 5,
Text::_('HDP_VERSION_5'));
$options[] = HTMLHelper::_('select.option', 'uikit3',
Text::_('HDP_UIKIT_3'));
// Get extra UI options
$files = Folder::files(JPATH_ADMINISTRATOR .
'/components/com_helpdeskpro/libraries/ui', '.php');
foreach ($files as $file)
{
if (in_array($file, ['abstract.php',
'bootstrap2.php', 'uikit3.php',
'bootstrap3.php', 'bootstrap4.php',
'bootstrap5.php', 'interface.php']))
{
continue;
}
$file = str_replace('.php', '', $file);
$options[] = HTMLHelper::_('select.option', $file,
ucfirst($file));
}
$lists['twitter_bootstrap_version'] =
HTMLHelper::_('select.genericlist', $options,
'twitter_bootstrap_version',
'class="form-select"', 'value',
'text', $config->get('twitter_bootstrap_version',
2));
$options = [];
$options[] = HTMLHelper::_('select.option', 0,
Text::_('JNO'));
$options[] = HTMLHelper::_('select.option', '1',
Text::_('JYES'));
$options[] = HTMLHelper::_('select.option', '2',
Text::_('HDP_FOR_PUBLIC_USERS_ONLY'));
$lists['enable_captcha'] =
HTMLHelper::_('select.genericlist', $options,
'enable_captcha',
[
'option.text.toHtml' => false,
'list.attr' =>
'class="form-select"',
'list.select' => $config->enable_captcha]);
$options = [];
$options[] = HTMLHelper::_('select.option', '',
Text::_('HDP_STAFF_DISPLAY_FIELD'));
$options[] = HTMLHelper::_('select.option',
'username', Text::_('Username'));
$options[] = HTMLHelper::_('select.option', 'email',
Text::_('Email'));
$options[] = HTMLHelper::_('select.option', 'name',
Text::_('Name'));
$lists['staff_display_field'] =
HTMLHelper::_('select.genericlist', $options,
'staff_display_field',
[
'option.text.toHtml' => false,
'list.attr' =>
'class="form-select"',
'list.select' =>
$config->get('staff_display_field', 'username')]);
$editorPlugin = '';
if (PluginHelper::isEnabled('editors',
'codemirror'))
{
$editorPlugin = 'codemirror';
}
elseif (PluginHelper::isEnabled('editor', 'none'))
{
$editorPlugin = 'none';
}
if ($editorPlugin)
{
$this->editor = Editor::getInstance($editorPlugin);
}
else
{
$this->editor = null;
}
$this->lists = $lists;
$this->config = $config;
}
}Configuration/tmpl/default.php000064400000040736151160230040012466
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Toolbar\ToolbarHelper;
use OSL\Utils\Html as HtmlUtils;
defined('_JEXEC') or die;
HTMLHelper::_('bootstrap.tooltip');
$document = Factory::getDocument();
$document->addStyleDeclaration(".hasTip{display:block
!important}");
ToolbarHelper::title(Text::_('Configuration'),
'generic.png');
ToolbarHelper::apply('apply', 'JTOOLBAR_APPLY');
ToolbarHelper::save('save');
ToolbarHelper::cancel('cancel');
if (Factory::getUser()->authorise('core.admin',
'com_helpdeskpro'))
{
ToolbarHelper::preferences('com_helpdeskpro');
}
$config = $this->config;
if (HelpdeskproHelper::isJoomla4())
{
$tabApiPrefix = 'uitab.';
}
else
{
$tabApiPrefix = 'bootstrap.';
}
?>
<form
action="index.php?option=com_helpdeskpro&view=configuration"
method="post" name="adminForm" id="adminForm"
class="form-horizontal hdp-configuration">
<?php
echo HTMLHelper::_($tabApiPrefix . 'startTabSet',
'configuration', array('active' =>
'general-page'));
echo HTMLHelper::_($tabApiPrefix . 'addTab',
'configuration', 'general-page',
Text::_('HDP_GENERAL', true));
?>
<div class="span6">
<fieldset class="form-horizontal">
<legend><?php echo
Text::_('HDP_GENERAL_SETTINGS'); ?></legend>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('download_id',
Text::_('HDP_DOWNLOAD_ID'),
Text::_('HDP_DOWNLOAD_ID_EXPLAIN')); ?>
</div>
<div class="controls">
<input type="text"
name="download_id" class="input-xlarge form-control"
value="<?php echo $config->download_id; ?>"
size="60" />
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('allow_public_user_submit_ticket',
Text::_('HDP_ALLOW_PUBLIC_USER_SUBMIT_TICKETS')); ?>
</div>
<div class="controls">
<?php echo
HtmlUtils::getBooleanInput('allow_public_user_submit_ticket',
$config->allow_public_user_submit_ticket); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('load_twttier_bootstrap_framework_in_frontend',
Text::_('HDP_LOAD_TWITTER_BOOTSTRAP_FRAMEWORK'),
Text::_('HDP_LOAD_TWITTER_BOOTSTRAP_FRAMEWORK_EXPLAIN')); ?>
</div>
<div class="controls">
<?php echo
HtmlUtils::getBooleanInput('load_twttier_bootstrap_framework_in_frontend',
$config->load_twttier_bootstrap_framework_in_frontend); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('twitter_bootstrap_version',
Text::_('HDP_TWITTER_BOOTSTRAP_VERSION'),
Text::_('HDP_TWITTER_BOOTSTRAP_VERSION_EXPLAIN')); ?>
</div>
<div class="controls">
<?php echo
$this->lists['twitter_bootstrap_version'];?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('enable_captcha',
Text::_('HDP_ENABLE_CAPTCHA')); ?>
</div>
<div class="controls">
<?php echo
$this->lists['enable_captcha']; ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('use_html_editor',
Text::_('HDP_USE_HTML_EDITOR'),
Text::_('HDP_USE_HTML_EDITOR_EXPLAIN')); ?>
</div>
<div class="controls">
<?php echo
HtmlUtils::getBooleanInput('use_html_editor',
$config->use_html_editor); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('date_format',
Text::_('HDP_DATE_FORMAT')); ?>
</div>
<div class="controls">
<input type="text"
name="date_format" value="<?php echo
$config->date_format; ?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('default_ticket_priority_id',
Text::_('HDP_DEFAULT_TICKET_PRIORITY')); ?>
</div>
<div class="controls">
<?php echo
$this->lists['default_ticket_priority_id']; ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('new_ticket_status_id',
Text::_('HDP_NEW_TICKET_STATUS')); ?>
</div>
<div class="controls">
<?php echo
$this->lists['new_ticket_status_id']; ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('ticket_status_when_customer_add_comment',
Text::_('HDP_TICKET_STATUS_WHEN_CUSTOMER_ADD_COMMENT')); ?>
</div>
<div class="controls">
<?php echo
$this->lists['ticket_status_when_customer_add_comment'];
?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('ticket_status_when_admin_add_comment',
Text::_('HDP_TICKET_STATUS_WHEN_ADMIN_ADD_COMMENT')); ?>
</div>
<div class="controls">
<?php echo
$this->lists['ticket_status_when_admin_add_comment']; ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('closed_ticket_status',
Text::_('HDP_CLOSED_TICKET_STATUS')); ?>
</div>
<div class="controls">
<?php echo
$this->lists['closed_ticket_status']; ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('manager_default_status_filters',
Text::_('HDP_MANAGER_DEFAULT_STATUS_FILTERS'),
Text::_('HDP_MANAGER_DEFAULT_STATUS_FILTERS_EXPLAIN')); ?>
</div>
<div class="controls">
<?php echo
$this->lists['manager_default_status_filters']; ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('enable_attachment',
Text::_('HDP_ENABLE_ATTACHMENT'),
Text::_('HDP_ENABLE_ATTACHMENT_EXPLAIN')); ?>
</div>
<div class="controls">
<?php echo
HtmlUtils::getBooleanInput('enable_attachment',
$config->enable_attachment); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('enable_rating',
Text::_('HDP_ENABLE_RATING'),
Text::_('HDP_ENABLE_RATING_EXPLAIN')); ?>
</div>
<div class="controls">
<?php echo
HtmlUtils::getBooleanInput('enable_rating',
$config->get('enable_rating', 1)); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('allowed_file_types',
Text::_('HDP_ALLOWED_FILE_TYPES')); ?>
</div>
<div class="controls">
<input type="text"
class="form-control" name="allowed_file_types"
size="30"
value="<?php echo
$config->allowed_file_types; ?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('max_number_attachments',
Text::_('HDP_MAX_NUMBER_ATTACHMENS_PER_MESSAGE')); ?>
</div>
<div class="controls">
<input type="text" class="input-small
form-control" name="max_number_attachments"
size="30"
value="<?php echo
$config->max_number_attachments ? $config->max_number_attachments :
3; ?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('max_filesize_type',
Text::_('HDP_MAX_UPLOAD_FILE_SIZE'),
Text::_('HDP_MAX_UPLOAD_FILE_SIZE_EXPLAIN')); ?>
</div>
<div class="controls">
<input type="text"
name="max_file_size" class="input-mini form-control
d-inline" value="<?php echo
$this->config->max_file_size; ?>" size="5" />
<?php echo
$this->lists['max_filesize_type'] ;
?> <?php echo
Text::_('HDP_DEFAULT_INI_SETTING'); ?>: <strong><?php
echo ini_get('upload_max_filesize'); ?></strong>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('process_bb_code',
Text::_('HDP_PROCESS_BBCODE')); ?>
</div>
<div class="controls">
<?php echo
HtmlUtils::getBooleanInput('process_bb_code',
$config->process_bb_code); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('highlight_code',
Text::_('HDP_HIGHTLIGHT_CODE')); ?>
</div>
<div class="controls">
<?php echo
HtmlUtils::getBooleanInput('highlight_code',
$config->highlight_code); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('programming_languages',
Text::_('HDP_PROGRAMING_LANGUAGES'),
Text::_('HDP_PROGRAMING_LANGUAGES_EXPLAIN')); ?>
</div>
<div class="controls">
<?php echo
$this->lists['programming_languages']; ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('staff_group_id',
Text::_('HDP_STAFF_GROUP'),
Text::_('HDP_STAFF_GROUP_EXPLAIN')); ?>
</div>
<div class="controls">
<?php echo
HTMLHelper::_('access.usergroup', 'staff_group_id',
$config->staff_group_id, 'class="form-select"');
?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('staff_group_id',
Text::_('HDP_STAFF_DISPLAY_FIELD'),
Text::_('HDP_STAFF_DISPLAY_FIELD_EXPLAIN')); ?>
</div>
<div class="controls">
<?php echo $this->lists['staff_display_field'];
?>
</div>
</div>
</fieldset>
</div>
<div class="span6">
<fieldset class="form-horizontal">
<legend><?php echo
Text::_('HDP_EMAIL_SETTINGS'); ?></legend>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('from_name',
Text::_('HDP_FROM_NAME'),
Text::_('HDP_FROM_NAME_EXPLAIN')); ?>
</div>
<div class="controls">
<input type="text"
name="from_name" class="form-control"
value="<?php echo $config->from_name; ?>"
size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('from_email',
Text::_('HDP_FROM_EMAIL'),
Text::_('HDP_FROM_EMAIL_EXPLAIN')); ?>
</div>
<div class="controls">
<input type="text"
name="from_email" class="form-control"
value="<?php echo
$config->from_email; ?>" size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo HtmlUtils::getFieldLabel('from_email',
Text::_('HDP_REPLY_TO_EMAIL'),
Text::_('HDP_REPLY_TO_EMAIL_EXPLAIN')); ?>
</div>
<div class="controls">
<input type="text" name="reply_to_email"
class="form-control"
value="<?php echo $config->reply_to_email;
?>" size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('notification_emails',
Text::_('HDP_NOTIFICATION_EMAILS'),
Text::_('HDP_NOTIFICATION_EMAILS_EXPLAIN')); ?>
</div>
<div class="controls">
<input type="text"
name="notification_emails" class="form-control"
value="<?php echo
$config->notification_emails; ?>" size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('notify_manager_when_staff_reply',
Text::_('HDP_NOTIFY_MANAGER_WHEN_STAFF_REPLY'),
Text::_('HDP_NOTIFY_MANAGER_WHEN_STAFF_REPLY_EXPLAIN')); ?>
</div>
<div class="controls">
<?php echo
HtmlUtils::getBooleanInput('notify_manager_when_staff_reply',
$config->notify_manager_when_staff_reply); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('notify_other_managers_when_a_manager_reply',
Text::_('HDP_NOTIFY_OTHER_MANAGERS_WHEN_A_MANAGER_REPLY'),
Text::_('HDP_NOTIFY_OTHER_MANAGERS_WHEN_A_MANAGER_REPLY_EXPLAIN'));
?>
</div>
<div class="controls">
<?php echo
HtmlUtils::getBooleanInput('notify_other_managers_when_a_manager_reply',
$config->notify_other_managers_when_a_manager_reply); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('notify_staff_when_customer_reply',
Text::_('HDP_NOTIFY_STAFF_WHEN_CUSTOMER_REPLY'),
Text::_('HDP_NOTIFY_STAFF_WHEN_CUSTOMER_REPLY_EXPLAIN')); ?>
</div>
<div class="controls">
<?php echo
HtmlUtils::getBooleanInput('notify_staff_when_customer_reply',
$config->notify_staff_when_customer_reply); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('send_ticket_attachments_to_email',
Text::_('HDP_SEND_ATTACHMENTS_TO_EMAIL')); ?>
</div>
<div class="controls">
<?php echo
HtmlUtils::getBooleanInput('send_ticket_attachments_to_email',
$config->send_ticket_attachments_to_email); ?>
</div>
</div>
</fieldset>
</div>
<?php
echo HTMLHelper::_($tabApiPrefix . 'endTab');
echo HTMLHelper::_($tabApiPrefix . 'addTab',
'configuration', 'api-page',
Text::_('HDP_API_SETTINGS', true));
echo $this->loadTemplate('api');
echo HTMLHelper::_($tabApiPrefix . 'endTab');
if ($this->editor)
{
echo $this->loadTemplate('custom_css');
}
echo HTMLHelper::_($tabApiPrefix . 'endTabSet');
?>
<div class="clearfix"></div>
<input type="hidden" name="task"
value=""/>
</form>Configuration/tmpl/default_api.php000064400000001727151160230040013314
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
use Joomla\CMS\Language\Text;
use OSL\Utils\Html as HtmlUtils;
?>
<div class="control-group">
<div class="control-label">
<?php echo HtmlUtils::getFieldLabel('enable_api',
Text::_('HDP_ENABLE_API'),
Text::_('HDP_ENABLE_API_EXPLAIN')); ?>
</div>
<div class="controls">
<?php echo HtmlUtils::getBooleanInput('enable_api',
$this->config->get('enable_api', 0)); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo HtmlUtils::getFieldLabel('api_key',
Text::_('HDP_API_KEY'),
Text::_('HDP_API_KEY_EXPLAIN')); ?>
</div>
<div class="controls">
<input type="text" name="api_key"
class="input-xlarge form-control" value="<?php echo
$this->config->api_key; ?>" />
</div>
</div>
Configuration/tmpl/default_custom_css.php000064400000001735151160230040014724
0ustar00<?php
/**
* @package Joomla
* @subpackage Event Booking
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2010 - 2020 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
if (HelpdeskproHelper::isJoomla4())
{
$tabApiPrefix = 'uitab.';
}
else
{
$tabApiPrefix = 'bootstrap.';
}
if (!empty($this->editor))
{
echo HTMLHelper::_($tabApiPrefix . 'addTab',
'configuration', 'custom-css',
Text::_('HDP_CUSTOM_CSS', true));
$customCss = '';
if (file_exists(JPATH_ROOT .
'/media/com_helpdeskpro/assets/css/custom.css'))
{
$customCss = file_get_contents(JPATH_ROOT .
'/media/com_helpdeskpro/assets/css/custom.css');
}
echo $this->editor->display('custom_css', $customCss,
'100%', '550', '75', '8', false,
null, null, null, array('syntax' => 'css'));
echo HTMLHelper::_($tabApiPrefix . 'endTab');
}Email/Html.php000064400000001251151160230040007177 0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
namespace OSSolution\HelpdeskPro\Admin\View\Email;
use OSL\View\HtmlView;
use OSSolution\HelpdeskPro\Site\Helper\Helper as HelpdeskproHelper;
defined('_JEXEC') or die;
class Html extends HtmlView
{
/**
* Prepare data before rendering the view
*
*/
protected function beforeRender()
{
$this->item = HelpdeskproHelper::getEmailMessages();
$this->languages = HelpdeskproHelper::getLanguages();
}
}Email/tmpl/default.php000064400000026155151160230040010705
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\Editor\Editor;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Multilanguage;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Toolbar\ToolbarHelper;
ToolbarHelper::title(Text::_('Email Messages'),
'generic.png');
ToolbarHelper::apply('apply', 'JTOOLBAR_APPLY');
ToolbarHelper::save('save');
ToolbarHelper::cancel('cancel');
if (HelpdeskproHelper::isJoomla4())
{
$tabApiPrefix = 'uitab.';
}
else
{
$tabApiPrefix = 'bootstrap.';
}
$translatable = Multilanguage::isEnabled() &&
count($this->languages);
$editor =
Editor::getInstance(Factory::getConfig()->get('editor'));
?>
<form action="index.php?option=com_helpdeskpro&view=email"
method="post" name="adminForm" id="adminForm"
class="form form-horizontal">
<?php
if ($translatable)
{
echo HTMLHelper::_($tabApiPrefix . 'startTabSet',
'email', array('active' =>
'general-page'));
echo HTMLHelper::_($tabApiPrefix . 'addTab',
'email', 'general-page',
Text::_('HDP_GENERAL', true));
}
?>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_NEW_TICKET_ADMIN_EMAIL_SUBJECT'); ?>
</div>
<div class="controls">
<input type="text"
name="new_ticket_admin_email_subject" class="input-xxlarge
form-control"
value="<?php echo
$this->item->new_ticket_admin_email_subject; ?>"
size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_NEW_TICKET_ADMIN_EMAIL_BODY'); ?>
</div>
<div class="controls">
<?php echo
$editor->display('new_ticket_admin_email_body',
$this->item->new_ticket_admin_email_body, '100%',
'250', '75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_NEW_TICKET_USER_EMAIL_SUBJECT'); ?>
</div>
<div class="controls">
<input type="text"
name="new_ticket_user_email_subject" class="input-xxlarge
form-control"
value="<?php echo
$this->item->new_ticket_user_email_subject; ?>"
size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_NEW_TICKET_USER_EMAIL_BODY'); ?>
</div>
<div class="controls">
<?php echo
$editor->display('new_ticket_user_email_body',
$this->item->new_ticket_user_email_body, '100%',
'250', '75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_TICKET_UPDATED_ADMIN_EMAIL_SUBJECT'); ?>
</div>
<div class="controls">
<input type="text"
name="ticket_updated_admin_email_subject"
class="input-xxlarge form-control"
value="<?php echo
$this->item->ticket_updated_admin_email_subject; ?>"
size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_TICKET_UPDATED_ADMIN_EMAIL_BODY'); ?>
</div>
<div class="controls">
<?php echo
$editor->display('ticket_updated_admin_email_body',
$this->item->ticket_updated_admin_email_body, '100%',
'250', '75', '8'); ?>
</div>
<div class="controls">
<strong><?php echo
Text::_('HDP_AVAILABLE_TAGS'); ?></strong>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_TICKET_UPDATED_USER_EMAIL_SUBJECT'); ?>
</div>
<div class="controls">
<input type="text"
name="ticket_updated_user_email_subject"
class="input-xxlarge form-control"
value="<?php echo
$this->item->ticket_updated_user_email_subject; ?>"
size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_TICKET_UPDATED_USER_EMAIL_BODY'); ?>
</div>
<div class="controls">
<?php echo
$editor->display('ticket_updated_user_email_body',
$this->item->ticket_updated_user_email_body, '100%',
'250', '75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_TICKET_ASSIGN_EMAIL_SUBJECT'); ?>
</div>
<div class="controls">
<input type="text"
name="ticket_assiged_email_subject" class="input-xxlarge
form-control"
value="<?php echo
$this->item->ticket_assiged_email_subject; ?>"
size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_TICKET_ASSIGN_EMAIL_BODY'); ?>
</div>
<div class="controls">
<?php echo
$editor->display('ticket_assiged_email_body',
$this->item->ticket_assiged_email_body, '100%',
'250', '75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_CUSTOMER_TICKET_ASSIGN_EMAIL_SUBJECT'); ?>
</div>
<div class="controls">
<input type="text"
name="customer_ticket_assigned_email_subject"
class="input-xxlarge form-control"
value="<?php echo
$this->item->customer_ticket_assigned_email_subject; ?>"
size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_CUSTOMER_TICKET_ASSIGN_EMAIL_BODY'); ?>
</div>
<div class="controls">
<?php echo
$editor->display('customer_ticket_assigned_email_body',
$this->item->customer_ticket_assigned_email_body, '100%',
'250', '75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_CUSTOMER_TICKET_CLOSED_EMAIL_SUBJECT'); ?>
</div>
<div class="controls">
<input type="text"
name="customer_ticket_closed_email_subject"
class="input-xxlarge form-control"
value="<?php echo
$this->item->customer_ticket_closed_email_subject; ?>"
size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_CUSTOMER_TICKET_CLOSED_EMAIL_BODY'); ?>
</div>
<div class="controls">
<?php echo
$editor->display('customer_ticket_closed_email_body',
$this->item->customer_ticket_closed_email_body, '100%',
'250', '75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_MANAGER_TICKET_CLOSED_EMAIL_SUBJECT'); ?>
</div>
<div class="controls">
<input type="text"
name="manager_ticket_closed_email_subject"
class="input-xxlarge form-control"
value="<?php echo
$this->item->manager_ticket_closed_email_subject; ?>"
size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_MANAGER_TICKET_CLOSED_EMAIL_BODY'); ?>
</div>
<div class="controls">
<?php echo
$editor->display('manager_ticket_closed_email_body',
$this->item->manager_ticket_closed_email_body, '100%',
'250', '75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_CUSTOMER_TICKET_STATUS_CHANGED_EMAIL_SUBJECT');
?>
</div>
<div class="controls">
<input type="text"
name="customer_ticket_status_changed_email_subject"
class="input-xxlarge form-control"
value="<?php echo
$this->item->customer_ticket_status_changed_email_subject;
?>" size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_CUSTOMER_TICKET_STATUS_CHANGED_EMAIL_BODY'); ?>
</div>
<div class="controls">
<?php echo
$editor->display('customer_ticket_status_changed_email_body',
$this->item->customer_ticket_status_changed_email_body,
'100%', '250', '75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_MANAGER_TICKET_STATUS_CHANGED_EMAIL_SUBJECT');
?>
</div>
<div class="controls">
<input type="text"
name="manager_ticket_status_changed_email_subject"
class="input-xxlarge form-control"
value="<?php echo
$this->item->manager_ticket_status_changed_email_subject; ?>"
size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_MANAGER_TICKET_STATUS_CHANGED_EMAIL_BODY'); ?>
</div>
<div class="controls">
<?php echo
$editor->display('manager_ticket_status_changed_email_body',
$this->item->manager_ticket_status_changed_email_body,
'100%', '250', '75', '8'); ?>
</div>
</div>
<?php
if ($translatable)
{
echo HTMLHelper::_($tabApiPrefix . 'endTab');
echo $this->loadTemplate('translation',
['editor' => $editor]);
echo HTMLHelper::_($tabApiPrefix . 'endTabSet');
}
?>
<input type="hidden" name="task"
value=""/>
<?php echo HTMLHelper::_('form.token'); ?>
</form>Email/tmpl/default_translation.php000064400000024466151160230040013326
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Uri\Uri;
$rootUri = Uri::root();
if (HelpdeskproHelper::isJoomla4())
{
$tabApiPrefix = 'uitab.';
}
else
{
$tabApiPrefix = 'bootstrap.';
}
echo HTMLHelper::_($tabApiPrefix . 'addTab', 'email',
'translation-page', Text::_('HDP_TRANSLATION', true));
echo HTMLHelper::_($tabApiPrefix . 'startTabSet',
'email-translation', array('active' =>
'translation-page-'.$this->languages[0]->sef));
foreach ($this->languages as $language)
{
$sef = $language->sef;
echo HTMLHelper::_($tabApiPrefix . 'addTab',
'email-translation', 'translation-page-' . $sef,
$language->title . ' <img src="' . $rootUri .
'media/com_helpdeskpro/assets/flags/' . $sef . '.png"
/>');
?>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_NEW_TICKET_ADMIN_EMAIL_SUBJECT');
?>
</div>
<div class="controls">
<?php
$fieldName = 'new_ticket_admin_email_subject_' . $sef;
?>
<input type="text" name="<?php echo
$fieldName; ?>" class="input-xxlarge form-control"
value="<?php echo
$this->item->{$fieldName}; ?>" size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_NEW_TICKET_ADMIN_EMAIL_BODY');
?>
</div>
<div class="controls">
<?php $fieldName = 'new_ticket_admin_email_body_' . $sef;
?>
<?php echo $editor->display($fieldName,
$this->item->{$fieldName}, '100%', '250',
'75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_NEW_TICKET_USER_EMAIL_SUBJECT');
?>
</div>
<div class="controls">
<?php $fieldName = 'new_ticket_user_email_subject_' . $sef;
?>
<input type="text" name="<?php echo
$fieldName; ?>" class="input-xxlarge form-control"
value="<?php echo
$this->item->{$fieldName}; ?>" size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_NEW_TICKET_USER_EMAIL_BODY');
?>
</div>
<div class="controls">
<?php $fieldName = 'new_ticket_user_email_body_' . $sef;
?>
<?php echo $editor->display($fieldName,
$this->item->{$fieldName}, '100%', '250',
'75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_TICKET_UPDATED_ADMIN_EMAIL_SUBJECT'); ?>
</div>
<div class="controls">
<?php $fieldName = 'ticket_updated_admin_email_subject_' .
$sef; ?>
<input type="text" name="<?php echo
$fieldName; ?>" class="input-xxlarge form-control"
value="<?php echo
$this->item->{$fieldName}; ?>" size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TICKET_UPDATED_ADMIN_EMAIL_BODY');
?>
</div>
<div class="controls">
<?php $fieldName = 'ticket_updated_admin_email_body_' .
$sef; ?>
<?php echo $editor->display($fieldName,
$this->item->{$fieldName}, '100%', '250',
'75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_TICKET_UPDATED_USER_EMAIL_SUBJECT'); ?>
</div>
<div class="controls">
<?php $fieldName = 'ticket_updated_user_email_subject_' .
$sef; ?>
<input type="text" name="<?php echo
$fieldName; ?>" class="input-xxlarge form-control"
value="<?php echo
$this->item->{$fieldName}; ?>" size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TICKET_UPDATED_USER_EMAIL_BODY');
?>
</div>
<div class="controls">
<?php $fieldName = 'ticket_updated_user_email_body_' .
$sef; ?>
<?php echo $editor->display($fieldName,
$this->item->{$fieldName}, '100%', '250',
'75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TICKET_ASSIGN_EMAIL_SUBJECT');
?>
</div>
<div class="controls">
<?php $fieldName = 'ticket_assiged_email_subject_' . $sef;
?>
<input type="text" name="<?php echo
$fieldName; ?>" class="input-xxlarge form-control"
value="<?php echo
$this->item->{$fieldName}; ?>" size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TICKET_ASSIGN_EMAIL_BODY'); ?>
</div>
<div class="controls">
<?php $fieldName = 'ticket_assiged_email_body_' . $sef;
?>
<?php echo $editor->display($fieldName,
$this->item->{$fieldName}, '100%', '250',
'75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TICKET_ASSIGN_EMAIL_SUBJECT');
?>
</div>
<div class="controls">
<?php $fieldName =
'customer_ticket_assigned_email_subject_' . $sef; ?>
<input type="text" name="<?php echo
$fieldName; ?>" class="input-xxlarge form-control"
value="<?php echo
$this->item->{$fieldName}; ?>" size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TICKET_ASSIGN_EMAIL_BODY'); ?>
</div>
<div class="controls">
<?php $fieldName = 'customer_ticket_assigned_email_body_' .
$sef; ?>
<?php echo $editor->display($fieldName,
$this->item->{$fieldName}, '100%', '250',
'75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_CUSTOMER_TICKET_ASSIGN_EMAIL_SUBJECT'); ?>
</div>
<div class="controls">
<?php $fieldName =
'customer_ticket_assigned_email_subject_' . $sef; ?>
<input type="text" name="<?php echo
$fieldName; ?>" class="input-xxlarge form-control"
value="<?php echo
$this->item->{$fieldName}; ?>" size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_CUSTOMER_TICKET_ASSIGN_EMAIL_BODY'); ?>
</div>
<div class="controls">
<?php $fieldName = 'customer_ticket_assigned_email_body_' .
$sef; ?>
<?php echo $editor->display($fieldName,
$this->item->{$fieldName}, '100%', '250',
'75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_CUSTOMER_TICKET_CLOSED_EMAIL_SUBJECT'); ?>
</div>
<div class="controls">
<?php $fieldName = 'customer_ticket_closed_email_subject_'
. $sef; ?>
<input type="text" name="<?php echo
$fieldName; ?>" class="input-xxlarge form-control"
value="<?php echo
$this->item->{$fieldName}; ?>" size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_CUSTOMER_TICKET_CLOSED_EMAIL_BODY'); ?>
</div>
<div class="controls">
<?php $fieldName = 'customer_ticket_closed_email_body_' .
$sef; ?>
<?php echo $editor->display($fieldName,
$this->item->{$fieldName}, '100%', '250',
'75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_MANAGER_TICKET_CLOSED_EMAIL_SUBJECT'); ?>
</div>
<div class="controls">
<?php $fieldName = 'manager_ticket_closed_email_subject_' .
$sef; ?>
<input type="text" name="<?php echo
$fieldName; ?>" class="input-xxlarge form-control"
value="<?php echo
$this->item->{$fieldName}; ?>" size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_MANAGER_TICKET_CLOSED_EMAIL_BODY');
?>
</div>
<div class="controls">
<?php $fieldName = 'manager_ticket_closed_email_body_' .
$sef; ?>
<?php echo $editor->display($fieldName,
$this->item->{$fieldName}, '100%', '250',
'75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_CUSTOMER_TICKET_STATUS_CHANGED_EMAIL_SUBJECT');
?>
</div>
<div class="controls">
<?php $fieldName =
'customer_ticket_status_changed_email_subject_' . $sef; ?>
<input type="text" name="<?php echo
$fieldName; ?>" class="input-xxlarge form-control"
value="<?php echo
$this->item->{$fieldName}; ?>" size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_CUSTOMER_TICKET_STATUS_CHANGED_EMAIL_BODY'); ?>
</div>
<div class="controls">
<?php $fieldName =
'customer_ticket_status_changed_email_body_' . $sef; ?>
<?php echo $editor->display($fieldName,
$this->item->{$fieldName}, '100%', '250',
'75', '8'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_MANAGER_TICKET_STATUS_CHANGED_EMAIL_SUBJECT');
?>
</div>
<div class="controls">
<?php $fieldName =
'manager_ticket_status_changed_email_subject_' . $sef; ?>
<input type="text" name="<?php echo
$fieldName; ?>" class="input-xxlarge form-control"
value="<?php echo
$this->item->{$fieldName}; ?>" size="50"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
Text::_('HDP_MANAGER_TICKET_STATUS_CHANGED_EMAIL_BODY'); ?>
</div>
<div class="controls">
<?php $fieldName =
'manager_ticket_status_changed_email_body_' . $sef; ?>
<?php echo $editor->display($fieldName,
$this->item->{$fieldName}, '100%', '250',
'75', '8'); ?>
</div>
</div>
<?php
echo HTMLHelper::_($tabApiPrefix . 'endTab');
}
echo HTMLHelper::_($tabApiPrefix . 'endTabSet');
echo HTMLHelper::_($tabApiPrefix .
'endTab');Field/Html.php000064400000010703151160230040007175
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
namespace OSSolution\HelpdeskPro\Admin\View\Field;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use OSL\View\ItemView;
use OSSolution\HelpdeskPro\Site\Helper\Database as
HelpdeskproHelperDatabase;
defined('_JEXEC') or die;
class Html extends ItemView
{
protected function beforeRender()
{
parent::beforeRender();
$fieldTypes = [
'Text',
'Textarea',
'List',
'Checkboxes',
'Radio',
'Date',
'Heading',
'Message',
];
$options = [];
$options[] = HTMLHelper::_('select.option', -1,
Text::_('HDP_FIELD_TYPE'));
foreach ($fieldTypes as $fieldType)
{
$options[] = HTMLHelper::_('select.option', $fieldType,
$fieldType);
}
$this->lists['fieldtype'] =
HTMLHelper::_('select.genericlist', $options,
'fieldtype', 'class="form-select"',
'value', 'text', $this->item->fieldtype);
$rows = HelpdeskproHelperDatabase::getAllCategories();
$children = [];
if ($rows)
{
// first pass - collect children
foreach ($rows as $v)
{
$pt = (int) $v->parent_id;
$list = @$children[$pt] ? $children[$pt] : [];
array_push($list, $v);
$children[$pt] = $list;
}
}
$list = HTMLHelper::_('menu.treerecurse', 0, '',
[], $children, 9999, 0, 0);
$options = [];
$options[] = HTMLHelper::_('select.option', -1,
Text::_('HDP_ALL_CATEGORIES'));
foreach ($list as $listItem)
{
$options[] = HTMLHelper::_('select.option', $listItem->id,
$listItem->treename);
}
$selectedCategories = [-1];
if ($this->item->id && $this->item->category_id !=
-1)
{
$db = $this->container->db;
$query = $db->getQuery(true);
$query->select('category_id')
->from('#__helpdeskpro_field_categories')
->where('field_id = ' . $this->item->id);
$db->setQuery($query);
$selectedCategories = $db->loadColumn();
$query->clear();
}
$this->lists['category_id'] =
HTMLHelper::_('select.genericlist', $options,
'category_id[]',
[
'option.text.toHtml' => false,
'option.text' => 'text',
'option.value' => 'value',
'list.attr' =>
'multiple="multiple" size="6"
class="form-select"',
'list.select' => $selectedCategories]);
$options = [];
$options[] =
HTMLHelper::_('select.option', 1, Text::_('Yes'));
$options[] =
HTMLHelper::_('select.option', 2, Text::_('No'));
$this->lists['required'] =
HTMLHelper::_('select.booleanlist', 'required', '
class="form-select" ', $this->item->required);
$this->lists['show_in_list_view'] =
HTMLHelper::_('select.booleanlist',
'show_in_list_view', ' class="form-select" ',
$this->item->show_in_list_view);
$options = [];
$options[] =
HTMLHelper::_('select.option', 0, Text::_('None'));
$options[] =
HTMLHelper::_('select.option', 1, Text::_('Integer
Number'));
$options[] =
HTMLHelper::_('select.option', 2, Text::_('Number'));
$options[] =
HTMLHelper::_('select.option', 3, Text::_('Email'));
$options[] =
HTMLHelper::_('select.option', 4, Text::_('Url'));
$options[] =
HTMLHelper::_('select.option', 5, Text::_('Phone'));
$options[] =
HTMLHelper::_('select.option', 6, Text::_('Past
Date'));
$options[] =
HTMLHelper::_('select.option', 7, Text::_('Ip'));
$options[] =
HTMLHelper::_('select.option', 8, Text::_('Min
size'));
$options[] =
HTMLHelper::_('select.option', 9, Text::_('Max
size'));
$options[] =
HTMLHelper::_('select.option', 10, Text::_('Min
integer'));
$options[] =
HTMLHelper::_('select.option', 11, Text::_('Max
integer'));
$this->lists['datatype_validation'] =
HTMLHelper::_('select.genericlist', $options,
'datatype_validation', 'class="form-select"',
'value', 'text',
$this->item->datatype_validation);
$this->lists['multiple'] =
HTMLHelper::_('select.booleanlist', 'multiple', '
class="form-select" ', $this->item->multiple);
}
}Field/tmpl/default.php000064400000021750151160230040010675
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Multilanguage;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Uri\Uri;
use OSL\Utils\Html as HtmlUtils;
use OSSolution\HelpdeskPro\Site\Helper\Helper as HelpdeskProHelper;
use OSSolution\HelpdeskPro\Site\Helper\Html as HelpdeskproHelperHtml;
HTMLHelper::_('behavior.core');
HTMLHelper::_('jquery.framework');
if (HelpdeskProHelper::isJoomla4())
{
$tabApiPrefix = 'uitab.';
HTMLHelper::_('script', 'system/showon.js',
array('version' => 'auto', 'relative'
=> true));
}
else
{
$tabApiPrefix = 'bootstrap.';
HTMLHelper::_('script', 'jui/cms.js', false, true);
}
HTMLHelper::_('bootstrap.tooltip');
$translatable = Multilanguage::isEnabled() &&
count($this->languages);
$document = Factory::getDocument();
$document->addStyleDeclaration(".hasTip{display:block
!important}");
$document->addScript(Uri::root(true).'/media/com_helpdeskpro/js/admin-field-default.js');
$document->addScriptOptions('validationRules',
json_decode(HelpdeskProHelper::validateEngine()), true);
?>
<form action="index.php?option=com_helpdeskpro&view=field"
method="post" name="adminForm" id="adminForm"
class="form form-horizontal">
<?php
if ($translatable)
{
echo HTMLHelper::_($tabApiPrefix . 'startTabSet',
'field', array('active' =>
'general-page'));
echo HTMLHelper::_($tabApiPrefix . 'addTab',
'field', 'general-page',
Text::_('HDP_GENERAL', true));
}
?>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_CATEGORY'); ?>
</div>
<div class="controls">
<?php echo $this->lists['category_id'];
?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo HtmlUtils::getFieldLabel('name',
Text::_('HDP_NAME'),
Text::_('HDP_FIELD_NAME_REQUIREMNET')); ?>
</div>
<div class="controls">
<input class="form-control"
type="text" name="name" id="name"
size="50" maxlength="250"
value="<?php echo $this->item->name;
?>" />
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TITLE'); ?>
</div>
<div class="controls">
<input class="form-control"
type="text" name="title" id="title"
size="50" maxlength="250"
value="<?php echo $this->item->title;
?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_FIELD_TYPE'); ?>
</div>
<div class="controls">
<?php echo $this->lists['fieldtype'];
?>
</div>
</div>
<div class="control-group" data-showon='<?php
echo HelpdeskproHelperHtml::renderShowOn(array('fieldtype' =>
'List')) ?>'>
<div class="control-label">
<?php echo Text::_('HDP_MULTIPLE'); ?>
</div>
<div class="controls">
<?php echo $this->lists['multiple']; ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_DESCRIPTION'); ?>
</div>
<div class="controls">
<textarea rows="5" cols="50"
name="description" class="form-control"><?php
echo $this->item->description; ?></textarea>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_REQUIRED'); ?>
</div>
<div class="controls">
<?php echo $this->lists['required']; ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo HtmlUtils::getFieldLabel('values',
Text::_('HDP_VALUES'),
Text::_('HDP_EACH_ITEM_IN_ONELINE')); ?>
</div>
<div class="controls">
<textarea rows="5" cols="50"
name="values" class="form-control"><?php echo
$this->item->values; ?></textarea>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('default_values',
Text::_('HDP_DEFAULT_VALUES'),
Text::_('HDP_EACH_ITEM_IN_ONELINE')); ?>
</div>
<div class="controls">
<textarea rows="5" cols="50"
name="default_values" class="form-control"><?php
echo $this->item->default_values; ?></textarea>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_DATATYPE_VALIDATION');
?>
</div>
<div class="controls">
<?php echo
$this->lists['datatype_validation']; ?>
</div>
</div>
<div class="control-group validation-rules">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('validation_rules',
Text::_('HDP_VALIDATION_RULES'),
Text::_('HDP_VALIDATION_RULES_EXPLAIN')); ?>
</div>
<div class="controls">
<input type="text" class="input-xlarge
form-control" size="50" name="validation_rules"
value="<?php echo $this->item->validation_rules ; ?>"
/>
</div>
</div>
<div class="control-group" data-showon='<?php
echo HelpdeskproHelperHtml::renderShowOn(array('fieldtype' =>
'Textarea')); ?>'>
<div class="control-label">
<?php echo Text::_('HDP_ROWS'); ?>
</div>
<div class="controls">
<input class="form-control"
type="text" name="rows" id="rows"
size="10" maxlength="250" value="<?php echo
$this->item->rows; ?>"/>
</div>
</div>
<div class="control-group" data-showon='<?php
echo HelpdeskproHelperHtml::renderShowOn(array('fieldtype' =>
'Textarea')) ?>'>
<div class="control-label">
<?php echo Text::_('HDP_COLS'); ?>
</div>
<div class="controls">
<input class="form-control"
type="text" name="cols" id="cols"
size="10" maxlength="250" value="<?php echo
$this->item->cols; ?>"/>
</div>
</div>
<div class="control-group" data-showon='<?php
echo HelpdeskproHelperHtml::renderShowon(array('fieldtype' =>
array('Text', 'Checkboxes', 'Radio')));
?>'>
<div class="control-label">
<?php echo Text::_('HDP_SIZE'); ?>
</div>
<div class="controls">
<input class="form-control"
type="text" name="size" id="size"
size="10" maxlength="250" value="<?php echo
$this->item->size; ?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_CSS_CLASS'); ?>
</div>
<div class="controls">
<input class="form-control"
type="text" name="css_class" id="css_class"
size="10" maxlength="250" value="<?php echo
$this->item->css_class; ?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_EXTRA'); ?>
</div>
<div class="controls">
<input class="form-control"
type="text" name="extra" id="extra"
size="40" maxlength="250" value="<?php echo
$this->item->extra; ?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo
HtmlUtils::getFieldLabel('show_in_list_view',
Text::_('HDP_SHOW_IN_LIST_VIEW'),
Text::_('HDP_SHOW_IN_LIST_VIEW_EXPLAIN')); ?>
</div>
<div class="controls">
<?php echo
$this->lists['show_in_list_view']; ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_PUBLISHED'); ?>
</div>
<div class="controls">
<?php echo $this->lists['published'];
?>
</div>
</div>
<?php
if ($translatable)
{
echo HTMLHelper::_($tabApiPrefix . 'endTab');
echo $this->loadTemplate('translation');
echo HTMLHelper::_($tabApiPrefix . 'endTabSet');
}
?>
<input type="hidden" name="id"
value="<?php echo $this->item->id; ?>"/>
<input type="hidden" name="task"
value=""/>
<?php echo HTMLHelper::_('form.token'); ?>
</form>Field/tmpl/default_translation.php000064400000005563151160230040013317
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Uri\Uri;
use OSL\Utils\Html as HtmlUtils;
$rootUri = Uri::root();
if (HelpdeskproHelper::isJoomla4())
{
$tabApiPrefix = 'uitab.';
}
else
{
$tabApiPrefix = 'bootstrap.';
}
echo HTMLHelper::_($tabApiPrefix . 'addTab', 'field',
'translation-page', Text::_('HDP_TRANSLATION', true));
echo HTMLHelper::_($tabApiPrefix . 'startTabSet',
'field-translation', array('active' =>
'translation-page-'.$this->languages[0]->sef));
foreach ($this->languages as $language)
{
$sef = $language->sef;
echo HTMLHelper::_($tabApiPrefix . 'addTab',
'field-translation', 'translation-page-' . $sef,
$language->title . ' <img src="' . $rootUri .
'media/com_helpdeskpro/assets/flags/' . $sef . '.png"
/>');
?>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TITLE'); ?>
</div>
<div class="controls">
<input class="input-xlarge form-control"
type="text" name="title_<?php echo $sef; ?>"
id="title_<?php echo $sef; ?>" maxlength="250"
value="<?php echo $this->item->{'title_' . $sef};
?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_DESCRIPTION'); ?>
</div>
<div class="controls">
<textarea rows="5" cols="50"
name="description_<?php echo $sef; ?>"
class="form-control"><?php echo
$this->item->{'description_' . $sef};
?></textarea>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo HtmlUtils::getFieldLabel('values',
Text::_('HDP_VALUES'),
Text::_('HDP_EACH_ITEM_IN_ONELINE')); ?>
</div>
<div class="controls">
<textarea rows="5" cols="50"
name="values_<?php echo $sef; ?>"
class="form-control"><?php echo
$this->item->{'values_' . $sef}; ?></textarea>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo HtmlUtils::getFieldLabel('default_values_',
Text::_('HDP_DEFAULT_VALUES'),
Text::_('HDP_EACH_ITEM_IN_ONELINE')); ?>
</div>
<div class="controls">
<textarea rows="5" cols="50"
name="default_values_<?php echo $sef; ?>"
class="form-control"><?php echo
$this->item->{'default_values_' . $sef};
?></textarea>
</div>
</div>
<?php
echo HTMLHelper::_($tabApiPrefix . 'endTab');
}
echo HTMLHelper::_($tabApiPrefix . 'endTabSet');
echo HTMLHelper::_($tabApiPrefix .
'endTab');Fields/Html.php000064400000001332151160230040007356
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
namespace OSSolution\HelpdeskPro\Admin\View\Fields;
use OSL\View\ListView;
use OSSolution\HelpdeskPro\Site\Helper\Html as HelpdeskproHelperHtml;
defined('_JEXEC') or die;
class Html extends ListView
{
protected function beforeRender()
{
parent::beforeRender();
$this->lists['filter_category_id'] =
HelpdeskproHelperHtml::buildCategoryDropdown($this->state->filter_category_id,
'filter_category_id', 'class="input-large
form-select" onchange="submit();"');
}
}Fields/tmpl/default.php000064400000014600151160230040011054
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
HTMLHelper::_('bootstrap.tooltip');
if (!HelpdeskproHelper::isJoomla4())
{
HTMLHelper::_('formbehavior.chosen', 'select');
}
$ordering = $this->state->filter_order ==
'tbl.ordering';
if ($ordering)
{
$saveOrderingUrl =
'index.php?option=com_helpdeskpro&task=field.save_order_ajax';
if (HelpdeskproHelper::isJoomla4())
{
\Joomla\CMS\HTML\HTMLHelper::_('draggablelist.draggable');
}
else
{
HTMLHelper::_('sortablelist.sortable',
'fieldsList', 'adminForm',
strtolower($this->state->filter_order_Dir), $saveOrderingUrl);
}
}
$customOptions = array(
'filtersHidden' => true,
'defaultLimit' =>
Factory::getApplication()->get('list_limit', 20),
'searchFieldSelector' => '#filter_search',
'orderFieldSelector' => '#filter_full_ordering',
);
HTMLHelper::_('searchtools.form', '#adminForm',
$customOptions);
?>
<form
action="index.php?option=com_helpdeskpro&view=fields"
method="post" name="adminForm"
id="adminForm">
<div class="row-fluid">
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<div id="filter-bar" class="btn-toolbar
js-stools">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
Text::_('HDP_SEARCH_FIELDS_DESC');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
Text::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->filter_search); ?>"
class="hasTooltip form-control" title="<?php echo
HTMLHelper::tooltipText('HDP_FILTER_SEARCH_FIELDS_DESC');
?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn hasTooltip"
title="<?php echo
HTMLHelper::tooltipText('JSEARCH_FILTER_SUBMIT');
?>"><span
class="icon-search"></span></button>
<button type="button" class="btn hasTooltip"
title="<?php echo
HTMLHelper::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.getElementById('filter_search').value='';this.form.submit();"><span
class="icon-remove"></span></button>
</div>
<div class="btn-group pull-right hidden-phone">
<?php echo $this->lists['filter_category_id']; ?>
<?php echo $this->lists['filter_state']; ?>
</div>
</div>
<div class="clearfix"></div>
<table class="adminlist table table-striped"
id="fieldsList">
<thead>
<tr>
<th width="1%" class="nowrap center
hidden-phone">
<?php echo HTMLHelper::_('searchtools.sort',
'', 'tbl.ordering',
$this->state->filter_order_Dir, $this->state->filter_order,
null, 'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20">
<input type="checkbox" name="toggle"
value="" onclick="Joomla.checkAll(this);"/>
</th>
<th class="title">
<?php echo HTMLHelper::_('searchtools.sort',
'HDP_NAME', 'tbl.name',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th class="title">
<?php echo HTMLHelper::_('searchtools.sort',
'HDP_TITLE', 'tbl.title',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th class="title">
<?php echo HTMLHelper::_('searchtools.sort',
'HDP_FIELD_TYPE', 'tbl.field_type',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th class="title center">
<?php echo HTMLHelper::_('searchtools.sort',
'HDP_PUBLISHED', 'tbl.published',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th width="1%" nowrap="nowrap">
<?php echo HTMLHelper::_('searchtools.sort',
'ID', 'tbl.id', $this->state->filter_order_Dir,
$this->state->filter_order); ?>
</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="7">
<?php echo $this->pagination->getListFooter(); ?>
</td>
</tr>
</tfoot>
<tbody <?php if ($ordering) :?>
class="js-draggable" data-url="<?php echo
$saveOrderingUrl; ?>" data-direction="<?php echo
strtolower($this->state->filter_order_Dir); ?>" <?php
endif; ?>>
<?php
$k = 0;
for ($i = 0, $n = count($this->items); $i < $n; $i++)
{
$row = $this->items[$i];
$link =
Route::_('index.php?option=com_helpdeskpro&view=field&id='
. $row->id);
$checked = HTMLHelper::_('grid.id', $i, $row->id);
$published = HTMLHelper::_('jgrid.published',
$row->published, $i);
?>
<tr class="<?php echo "row$k"; ?>">
<td class="order nowrap center hidden-phone">
<?php
$iconClass = '';
if (!$ordering)
{
$iconClass = ' inactive tip-top hasTooltip"';
}
?>
<span class="sortable-handler<?php echo $iconClass
?>">
<i class="icon-menu"></i>
</span>
<?php if ($ordering) : ?>
<input type="text" style="display:none"
name="order[]" size="5" value="<?php echo
$row->ordering ?>" class="width-20 text-area-order
"/>
<?php endif; ?>
</td>
<td>
<?php echo $checked; ?>
</td>
<td>
<a href="<?php echo $link; ?>">
<?php echo $row->name; ?>
</a>
</td>
<td>
<a href="<?php echo $link; ?>">
<?php echo $row->title; ?>
</a>
</td>
<td>
<?php
echo $row->fieldtype;
?>
</td>
<td class="center">
<?php echo $published; ?>
</td>
<td class="center">
<?php echo $row->id; ?>
</td>
</tr>
<?php
$k = 1 - $k;
}
?>
</tbody>
</table>
</div>
</div>
<input type="hidden" name="task"
value=""/>
<input type="hidden" name="boxchecked"
value="0"/>
<input type="hidden" name="filter_order"
value="<?php echo $this->state->filter_order;
?>"/>
<input type="hidden" name="filter_order_Dir"
value="<?php echo $this->state->filter_order_Dir;
?>"/>
<input type="hidden" id="filter_full_ordering"
name="filter_full_ordering" value="" />
<?php echo HTMLHelper::_('form.token'); ?>
</form>Label/Html.php000064400000001142151160230040007166
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
namespace OSSolution\HelpdeskPro\Admin\View\Label;
use Joomla\CMS\Uri\Uri;
use OSL\View\ItemView;
defined('_JEXEC') or die;
class Html extends ItemView
{
protected function beforeRender()
{
parent::beforeRender();
$this->container->document->addScript(Uri::root(true) .
'/media/com_helpdeskpro/admin/assets/js/colorpicker/jscolor.js');
}
}Label/tmpl/default.php000064400000003234151160230040010666
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
?>
<form action="index.php?option=com_helpdeskpro&view=label"
method="post" name="adminForm" id="adminForm"
class="form form-horizontal">
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TITLE'); ?>
</div>
<div class="controls">
<input class="form-control" type="text"
name="title" id="title" size="40"
maxlength="250"
value="<?php echo $this->item->title;
?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_COLOR'); ?>
</div>
<div class="controls">
<input type="text" name="color_code"
class="form-control color {required:false}"
value="<?php echo $this->item->color_code;
?>" size="10"/>
<?php echo Text::_('HDP_COLOR_EXPLAIN'); ?>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_PUBLISHED'); ?>
</div>
<div class="controls">
<?php echo $this->lists['published']; ?>
</div>
</div>
<?php echo HTMLHelper::_('form.token'); ?>
<input type="hidden" name="id" value="<?php
echo $this->item->id; ?>"/>
<input type="hidden" name="task"
value=""/>
</form>Labels/tmpl/default.php000064400000010717151160230040011055
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
HTMLHelper::_('bootstrap.tooltip', '.hasTooltip',
array('placement' => 'top'));
?>
<form
action="index.php?option=com_helpdeskpro&view=labels"
method="post" name="adminForm"
id="adminForm">
<div class="row-fluid">
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
Text::_('HDP_SEARCH_LABELS_DESC');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
Text::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->filter_search); ?>"
class="hasTooltip form-control" title="<?php echo
HTMLHelper::tooltipText('HDP_FILTER_SEARCH_LABELS_DESC');
?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn hasTooltip"
title="<?php echo
HTMLHelper::tooltipText('JSEARCH_FILTER_SUBMIT');
?>"><span
class="icon-search"></span></button>
<button type="button" class="btn hasTooltip"
title="<?php echo
HTMLHelper::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.getElementById('filter_search').value='';this.form.submit();"><span
class="icon-remove"></span></button>
</div>
<div class="btn-group pull-right hidden-phone">
<?php echo $this->lists['filter_state']; ?>
</div>
</div>
<div class="clearfix"></div>
<table class="adminlist table table-striped">
<thead>
<tr>
<th width="5">
<?php echo Text::_('NUM'); ?>
</th>
<th width="20">
<input type="checkbox" name="toggle"
value="" onclick="Joomla.checkAll(this);"/>
</th>
<th class="title" style="text-align:
left;">
<?php echo HTMLHelper::_('grid.sort',
Text::_('HDP_TITLE'), 'tbl.title',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th width="100">
<?php echo HTMLHelper::_('grid.sort',
Text::_('HDP_COLOR'), 'tbl.color_code',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th width="5%">
<?php echo HTMLHelper::_('grid.sort',
Text::_('HDP_PUBLISHED'), 'tbl.published',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th width="2%">
<?php echo HTMLHelper::_('grid.sort',
Text::_('HDP_ID'), 'tbl.id',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="6">
<?php echo $this->pagination->getListFooter(); ?>
</td>
</tr>
</tfoot>
<tbody>
<?php
$k = 0;
for ($i = 0, $n = count($this->items); $i < $n; $i++)
{
$row = $this->items[$i];
$link =
Route::_('index.php?option=com_helpdeskpro&view=label&id='
. $row->id);
$checked = HTMLHelper::_('grid.id', $i, $row->id);
$published = HTMLHelper::_('jgrid.published',
$row->published, $i);
?>
<tr class="<?php echo "row$k"; ?>">
<td>
<?php echo $this->pagination->getRowOffset($i); ?>
</td>
<td>
<?php echo $checked; ?>
</td>
<td>
<a href="<?php echo $link; ?>">
<?php echo $row->title; ?>
</a>
</td>
<td class="center">
<div
style="width:100px; height: 30px; background-color: #<?php
echo $row->color_code; ?>">
</div>
</td>
<td class="center">
<?php echo $published; ?>
</td>
<td class="center">
<?php echo $row->id; ?>
</td>
</tr>
<?php
$k = 1 - $k;
}
?>
</tbody>
</table>
</div>
</div>
<input type="hidden" name="option"
value="com_helpdeskpro"/>
<input type="hidden" name="task"
value=""/>
<input type="hidden" name="boxchecked"
value="0"/>
<input type="hidden" name="filter_order"
value="<?php echo $this->state->filter_order;
?>"/>
<input type="hidden" name="filter_order_Dir"
value="<?php echo $this->state->filter_order_Dir;
?>"/>
<?php echo HTMLHelper::_('form.token'); ?>
</form>Language/Html.php000064400000002344151160230040007677
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
namespace OSSolution\HelpdeskPro\Admin\View\Language;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use OSL\View\HtmlView;
defined('_JEXEC') or die;
class Html extends HtmlView
{
protected function beforeRender()
{
/* @var \Ossolution\Helpdeskpro\Admin\Model\Language $model */
$model = $this->getModel();
$state = $model->getState();
$trans = $model->getTrans();
$languages = $model->getSiteLanguages();
$options = [];
$options[] = HTMLHelper::_('select.option', '',
Text::_('Select Language'));
foreach ($languages as $language)
{
$options[] = HTMLHelper::_('select.option', $language,
$language);
}
$lists['filter_language'] =
HTMLHelper::_('select.genericlist', $options,
'filter_language', ' class="form-select"
onchange="submit();"', 'value', 'text',
$state->filter_language);
$this->trans = $trans;
$this->lists = $lists;
$this->lang = $state->filter_language;
$this->item = 'com_helpdeskpro';
}
}Language/tmpl/default.php000064400000007254151160230040011400
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Uri\Uri;
ToolbarHelper::title( Text::_( 'Translation management'),
'generic.png' );
ToolbarHelper::addNew('new_item', 'New Item');
ToolbarHelper::apply('apply', 'JTOOLBAR_APPLY');
ToolbarHelper::save('save');
ToolbarHelper::cancel('cancel');
$pullLeft = 'pull-left';
$pullRight = 'pull-right';
HTMLHelper::_('jquery.framework');
HTMLHelper::_('behavior.core');
Factory::getDocument()->addScript(Uri::root(true).'/media/com_helpdeskpro/js/admin-language-default.js');
?>
<form
action="index.php?option=com_helpdeskpro&view=language"
method="post" name="adminForm"
id="adminForm">
<div id="j-main-container">
<div id="filter-bar"
class="btn-toolbar">
<div class="filter-search btn-group
pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
Text::_('EB_FILTER_SEARCH_LANGUAGE_DESC');?></label>
<input type="text"
name="filter_search" id="filter_search"
placeholder="<?php echo Text::_('JSEARCH_FILTER');
?>" value="<?php echo
$this->escape($this->state->filter_search); ?>"
class="hasTooltip" title="<?php echo
HTMLHelper::tooltipText('EB_SEARCH_LANGUAGE_DESC'); ?>"
/>
</div>
<div class="btn-group pull-left">
<button id="pf-clear-button"
type="button" class="btn hasTooltip"
title="<?php echo
HTMLHelper::tooltipText('JSEARCH_FILTER_CLEAR');
?>"><span
class="icon-remove"></span></button>
</div>
<div class="btn-group pull-right">
<?php
echo $this->lists['filter_item'];
echo $this->lists['filter_language'];
?>
</div>
</div>
<div class="clearfix"></div>
<table class="table table-striped"
id="lang_table">
<thead>
<tr>
<th class="key" style="width:20%;
text-align: left;">Key</th>
<th class="key" style="width:40%;
text-align: left;">Original</th>
<th class="key" style="width:40%;
text-align: left;">Translation</th>
</tr>
</thead>
<tbody id="pf-translation-table">
<?php
$original = $this->trans['en-GB'][$this->item] ;
$trans = $this->trans[$this->lang][$this->item] ;
foreach ($original as $key=>$value) {
?>
<tr>
<td class="key" style="text-align:
left;"><?php echo $key; ?></td>
<td style="text-align: left;"><?php
echo $value; ?></td>
<td>
<?php
if (isset($trans[$key])) {
$translatedValue = $trans[$key];
$missing = false ;
} else {
$translatedValue = $value;
$missing = true ;
}
?>
<input type="hidden"
name="keys[]" value="<?php echo $key; ?>" />
<input type="text" name="<?php
echo $key; ?>" class="input-xxlarge" size="100"
value="<?php echo $translatedValue; ; ?>" />
<?php
if ($missing) {
?>
<span
style="color:red;">*</span>
<?php
}
?>
</td>
</tr>
<?php
}
?>
</tbody>
</table>
<input type="hidden" name="task"
value="" />
<?php echo HTMLHelper::_( 'form.token' ); ?>
</div>
</form>Priorities/tmpl/default.php000064400000013451151160230040012002
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
if (!HelpdeskproHelper::isJoomla4())
{
HTMLHelper::_('formbehavior.chosen', 'select');
}
HTMLHelper::_('bootstrap.tooltip', '.hasTooltip',
array('placement' => 'top'));
$ordering = ($this->state->filter_order ==
'tbl.ordering');
if ($ordering)
{
$saveOrderingUrl =
'index.php?option=com_helpdeskpro&task=priority.save_order_ajax';
if (HelpdeskproHelper::isJoomla4())
{
\Joomla\CMS\HTML\HTMLHelper::_('draggablelist.draggable');
}
else
{
HTMLHelper::_('sortablelist.sortable', 'fieldsList',
'adminForm', strtolower($this->state->filter_order_Dir),
$saveOrderingUrl);
}
}
$customOptions = array(
'filtersHidden' => true,
'defaultLimit' =>
Factory::getApplication()->get('list_limit', 20),
'searchFieldSelector' => '#filter_search',
'orderFieldSelector' => '#filter_full_ordering'
);
HTMLHelper::_('searchtools.form', '#adminForm',
$customOptions);
?>
<form
action="index.php?option=com_helpdeskpro&view=priorities"
method="post" name="adminForm"
id="adminForm">
<div class="row-fluid">
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<div id="filter-bar" class="btn-toolbar
js-stools">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
Text::_('HDP_SEARCH_PRIORITIES_DESC');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
Text::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->filter_search); ?>"
class="hasTooltip form-control" title="<?php echo
HTMLHelper::tooltipText('HDP_FILTER_SEARCH_PRIORITIES_DESC');
?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn hasTooltip"
title="<?php echo
HTMLHelper::tooltipText('JSEARCH_FILTER_SUBMIT');
?>"><span
class="icon-search"></span></button>
<button type="button" class="btn hasTooltip"
title="<?php echo
HTMLHelper::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.getElementById('filter_search').value='';this.form.submit();"><span
class="icon-remove"></span></button>
</div>
<div class="btn-group pull-right hidden-phone">
<?php echo $this->lists['filter_state']; ?>
</div>
</div>
<div class="clearfix"></div>
<table class="adminlist table table-striped"
id="prioritiesList">
<thead>
<tr>
<th width="5">
<?php echo HTMLHelper::_('searchtools.sort',
'', 'tbl.ordering',
$this->state->filter_order_Dir, $this->state->filter_order,
null, 'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20">
<input type="checkbox" name="toggle"
value="" onclick="Joomla.checkAll(this);"/>
</th>
<th class="title" style="text-align:
left;">
<?php echo HTMLHelper::_('searchtools.sort',
Text::_('HDP_TITLE'), 'tbl.title',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th width="5%">
<?php echo HTMLHelper::_('searchtools.sort',
Text::_('HDP_PUBLISHED'), 'tbl.published',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th width="2%">
<?php echo HTMLHelper::_('searchtools.sort',
Text::_('HDP_ID'), 'tbl.id',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="5">
<?php echo $this->pagination->getListFooter(); ?>
</td>
</tr>
</tfoot>
<tbody <?php if ($ordering) :?>
class="js-draggable" data-url="<?php echo
$saveOrderingUrl; ?>" data-direction="<?php echo
strtolower($this->state->filter_order_Dir); ?>" <?php
endif; ?>>
<?php
$k = 0;
for ($i = 0, $n = count($this->items); $i < $n; $i++)
{
$row = &$this->items[$i];
$link =
Route::_('index.php?option=com_helpdeskpro&view=priority&id='
. $row->id);
$checked = HTMLHelper::_('grid.id', $i, $row->id);
$published = HTMLHelper::_('jgrid.published',
$row->published, $i);
?>
<tr class="<?php echo "row$k"; ?>">
<td class="order nowrap center hidden-phone">
<?php
$iconClass = '';
if (!$ordering)
{
$iconClass = ' inactive tip-top hasTooltip"';
}
?>
<span class="sortable-handler<?php echo $iconClass
?>">
<i class="icon-menu"></i>
</span>
<?php if ($ordering) : ?>
<input type="text" style="display:none"
name="order[]" size="5" value="<?php echo
$row->ordering ?>" class="width-20 text-area-order
"/>
<?php endif; ?>
</td>
<td>
<?php echo $checked; ?>
</td>
<td>
<a href="<?php echo $link; ?>"><?php echo
$row->title; ?></a>
</td>
<td class="center">
<?php echo $published; ?>
</td>
<td class="center">
<?php echo $row->id; ?>
</td>
</tr>
<?php
$k = 1 - $k;
}
?>
</tbody>
</table>
</div>
</div>
<input type="hidden" name="task"
value=""/>
<input type="hidden" name="boxchecked"
value="0"/>
<input type="hidden" name="filter_order"
value="<?php echo $this->state->filter_order;
?>"/>
<input type="hidden" name="filter_order_Dir"
value="<?php echo $this->state->filter_order_Dir;
?>"/>
<input type="hidden" id="filter_full_ordering"
name="filter_full_ordering" value="" />
<?php echo HTMLHelper::_('form.token'); ?>
</form>Priority/tmpl/default.php000064400000003655151160230050011500
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Multilanguage;
use Joomla\CMS\Language\Text;
$translatable = Multilanguage::isEnabled() &&
count($this->languages);
if (HelpdeskproHelper::isJoomla4())
{
$tabApiPrefix = 'uitab.';
}
else
{
$tabApiPrefix = 'bootstrap.';
}
?>
<form
action="index.php?option=com_helpdeskpro&view=priority"
method="post" name="adminForm" id="adminForm"
class="form form-horizontal">
<?php
if ($translatable)
{
echo HTMLHelper::_($tabApiPrefix . 'startTabSet',
'priority', array('active' =>
'general-page'));
echo HTMLHelper::_($tabApiPrefix . 'addTab',
'priority', 'general-page',
Text::_('HDP_GENERAL', true));
}
?>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TITLE'); ?>
</div>
<div class="controls">
<input class="form-control" type="text"
name="title" id="title" size="40"
maxlength="250"
value="<?php echo $this->item->title;
?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_PUBLISHED'); ?>
</div>
<div class="controls">
<?php echo $this->lists['published']; ?>
</div>
</div>
<?php
if ($translatable)
{
echo HTMLHelper::_($tabApiPrefix . 'endTab');
echo $this->loadTemplate('translation');
echo HTMLHelper::_($tabApiPrefix . 'endTabSet');
}
?>
<?php echo HTMLHelper::_('form.token'); ?>
<input type="hidden" name="id"
value="<?php echo $this->item->id; ?>"/>
<input type="hidden" name="task"
value=""/>
</form>Priority/tmpl/default_translation.php000064400000003064151160230050014110
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Uri\Uri;
$rootUri = Uri::root();
if (HelpdeskproHelper::isJoomla4())
{
$tabApiPrefix = 'uitab.';
}
else
{
$tabApiPrefix = 'bootstrap.';
}
echo HTMLHelper::_($tabApiPrefix . 'addTab',
'priority', 'translation-page',
Text::_('HDP_TRANSLATION', true));
echo HTMLHelper::_($tabApiPrefix . 'startTabSet',
'item-translation', array('active' =>
'translation-page-'.$this->languages[0]->sef));
foreach ($this->languages as $language)
{
$sef = $language->sef;
echo HTMLHelper::_($tabApiPrefix . 'addTab',
'item-translation', 'translation-page-' . $sef,
$language->title . ' <img src="' . $rootUri .
'media/com_helpdeskpro/assets/flags/' . $sef . '.png"
/>');
?>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TITLE'); ?>
</div>
<div class="controls">
<input class="input-xlarge" type="text"
name="title_<?php echo $sef; ?>"
id="title_<?php echo $sef; ?>"
size="" maxlength="250"
value="<?php echo
$this->item->{'title_' . $sef}; ?>"/>
</div>
</div>
<?php
echo HTMLHelper::_($tabApiPrefix . 'endTab');
}
echo HTMLHelper::_($tabApiPrefix . 'endTabSet');
echo HTMLHelper::_($tabApiPrefix .
'endTab');Replies/tmpl/default.php000064400000013550151160230050011255
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
HTMLHelper::_('bootstrap.tooltip', '.hasTooltip',
array('placement' => 'top'));
if (!HelpdeskproHelper::isJoomla4())
{
HTMLHelper::_('formbehavior.chosen', 'select');
}
$ordering = ($this->state->filter_order ==
'tbl.ordering');
if ($ordering)
{
$saveOrderingUrl =
'index.php?option=com_helpdeskpro&task=reply.save_order_ajax';
if (HelpdeskproHelper::isJoomla4())
{
\Joomla\CMS\HTML\HTMLHelper::_('draggablelist.draggable');
}
else
{
HTMLHelper::_('sortablelist.sortable', 'fieldsList',
'adminForm', strtolower($this->state->filter_order_Dir),
$saveOrderingUrl);
}
}
$customOptions = array(
'filtersHidden' => true,
'defaultLimit' =>
Factory::getApplication()->get('list_limit', 20),
'searchFieldSelector' => '#filter_search',
'orderFieldSelector' => '#filter_full_ordering'
);
HTMLHelper::_('searchtools.form', '#adminForm',
$customOptions);
?>
<form
action="index.php?option=com_helpdeskpro&view=replies"
method="post" name="adminForm"
id="adminForm">
<div class="row-fluid">
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<div id="filter-bar" class="btn-toolbar
js-stools">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
Text::_('HDP_SEARCH_REPLIES_DESC');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
Text::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->filter_search); ?>"
class="hasTooltip form-control" title="<?php echo
HTMLHelper::tooltipText('HDP_FILTER_SEARCH_REPLIES_DESC');
?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn hasTooltip"
title="<?php echo
HTMLHelper::tooltipText('JSEARCH_FILTER_SUBMIT');
?>"><span
class="icon-search"></span></button>
<button type="button" class="btn hasTooltip"
title="<?php echo
HTMLHelper::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.getElementById('filter_search').value='';this.form.submit();"><span
class="icon-remove"></span></button>
</div>
<div class="btn-group pull-right hidden-phone">
<?php echo $this->lists['filter_state']; ?>
</div>
</div>
<div class="clearfix"></div>
<table class="adminlist table table-striped"
id="repliesList">
<thead>
<tr>
<th width="5">
<?php echo HTMLHelper::_('searchtools.sort',
'', 'tbl.ordering',
$this->state->filter_order_Dir, $this->state->filter_order,
null, 'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20">
<input type="checkbox" name="toggle"
value="" onclick="Joomla.checkAll(this);"/>
</th>
<th class="title" style="text-align:
left;">
<?php echo HTMLHelper::_('grid.sort',
Text::_('HDP_TITLE'), 'tbl.title',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th width="5%">
<?php echo HTMLHelper::_('grid.sort',
Text::_('HDP_PUBLISHED'), 'tbl.published',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th width="2%">
<?php echo HTMLHelper::_('grid.sort',
Text::_('HDP_ID'), 'tbl.id',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="8">
<?php echo $this->pagination->getListFooter(); ?>
</td>
</tr>
</tfoot>
<tbody <?php if ($ordering) :?>
class="js-draggable" data-url="<?php echo
$saveOrderingUrl; ?>" data-direction="<?php echo
strtolower($this->state->filter_order_Dir); ?>" <?php
endif; ?>>
<?php
$k = 0;
for ($i = 0, $n = count($this->items); $i < $n; $i++)
{
$row = &$this->items[$i];
$link =
Route::_('index.php?option=com_helpdeskpro&view=reply&id='
. $row->id);
$checked = HTMLHelper::_('grid.id', $i, $row->id);
$published = HTMLHelper::_('jgrid.published',
$row->published, $i);
?>
<tr class="<?php echo "row$k"; ?>">
<td class="order nowrap center
hidden-phone">
<?php
$iconClass = '';
if (!$ordering)
{
$iconClass = ' inactive tip-top hasTooltip"';
}
?>
<span class="sortable-handler<?php
echo $iconClass ?>">
<i class="icon-menu"></i>
</span>
<?php if ($ordering) : ?>
<input type="text"
style="display:none" name="order[]" size="5"
value="<?php echo $row->ordering ?>"
class="width-20 text-area-order "/>
<?php endif; ?>
</td>
<td>
<?php echo $checked; ?>
</td>
<td>
<a href="<?php echo $link; ?>">
<?php echo $row->title; ?>
</a>
</td>
<td class="center">
<?php echo $published; ?>
</td>
<td class="center">
<?php echo $row->id; ?>
</td>
</tr>
<?php
$k = 1 - $k;
}
?>
</tbody>
</table>
</div>
</div>
<input type="hidden" name="option"
value="com_helpdeskpro"/>
<input type="hidden" name="task"
value=""/>
<input type="hidden" name="boxchecked"
value="0"/>
<input type="hidden" name="filter_order"
value="<?php echo $this->state->filter_order;
?>"/>
<input type="hidden" name="filter_order_Dir"
value="<?php echo $this->state->filter_order_Dir;
?>"/>
<?php echo HTMLHelper::_('form.token'); ?>
</form>Reply/tmpl/default.php000064400000003264151160230050010746
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
defined('_JEXEC') or die;
?>
<form action="index.php?option=com_helpdeskpro&view=reply"
method="post" name="adminForm" id="adminForm"
class="form form-horizontal">
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TITLE'); ?>
</div>
<div class="controls">
<input class="input-xlarge form-control"
type="text" name="title" id="title"
size="40" maxlength="250"
value="<?php echo $this->item->title;
?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_MESSAGE'); ?>
</div>
<div class="controls">
<textarea rows="10" cols="75"
name="message"
id="message" class="input-xxlarge
form-control"><?php echo $this->item->message;
?></textarea>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_PUBLISHED'); ?>
</div>
<div class="controls">
<?php echo $this->lists['published']; ?>
</div>
</div>
<?php echo HTMLHelper::_('form.token'); ?>
<input type="hidden" name="option"
value="com_helpdeskpro"/>
<input type="hidden" name="id" value="<?php
echo $this->item->id; ?>"/>
<input type="hidden" name="task"
value=""/>
</form>Report/Html.php000064400000003424151160230050007430
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
namespace OSSolution\HelpdeskPro\Admin\View\Report;
use JHtmlSidebar;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use OSL\Utils\Html as HtmlUtils;
use OSL\View\HtmlView;
defined('_JEXEC') or die;
class Html extends HtmlView
{
/**
* Array hold data ranger filter
*
* @var array
*/
protected $lists = [];
/**
* Array hold calculated reporting data
*
* @var array
*/
protected $data;
/**
* Prepare data to show on report page
*/
protected function beforeRender()
{
parent::beforeRender();
$options = [];
$options[] = HTMLHelper::_('select.option', '',
Text::_('HDP_CHOOSE_DATE_RANGE'));
$options[] = HTMLHelper::_('select.option', 0,
Text::_('HDP_TODAY'));
$options[] = HTMLHelper::_('select.option', 1,
Text::_('HDP_THIS_WEEK'));
$options[] = HTMLHelper::_('select.option', 2,
Text::_('HDP_THIS_MONTH'));
$options[] = HTMLHelper::_('select.option', 3,
Text::_('HDP_THIS_YEAR'));
$options[] = HTMLHelper::_('select.option', 4,
Text::_('HDP_ALL'));
$this->lists['filter_date_range'] =
HTMLHelper::_('select.genericlist', $options,
'filter_date_range', 'onchange="submit();"
class="form-select"', 'value', 'text',
$this->model->getState('filter_date_range'));
$this->data = $this->model->getData();
if (!\HelpdeskproHelper::isJoomla4())
{
// Add sidebar
HtmlUtils::addSubMenus($this->container->option, $this->name);
$this->sidebar = JHtmlSidebar::render();
}
else
{
$this->sidebar = '';
}
}
}Report/tmpl/default.php000064400000012231151160230050011120
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Toolbar\ToolbarHelper;
ToolbarHelper::title(Text::_('Tickets report'),
'generic.png');
HTMLHelper::_('bootstrap.tooltip', '.hasTooltip',
array('placement' => 'top'));
function sortTickets($a, $b)
{
if ($a->total_tickets == $b->total_tickets)
{
return 0;
}
return ($a->total_tickets > $b->total_tickets) ? -1 : 1;
}
function sortTicketsByManager($a, $b)
{
if ($a['total_tickets'] == $b['total_tickets'])
{
return 0;
}
return ($a['total_tickets'] > $b['total_tickets'])
? -1 : 1;
}
?>
<div class="row-fluid">
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<form
action="index.php?option=com_helpdeskpro&view=report"
method="post" name="adminForm"
id="adminForm">
<table width="100%">
<tr>
<td align="left">
<?php echo $this->lists['filter_date_range']; ?>
</td>
</tr>
</table>
<div id="editcell">
<h2><?php echo Text::_('HDP_TICKET_BY_MANAGERS');
?></h2>
<table class="adminlist table table-striped">
<thead>
<tr>
<th>
<?php echo Text::_('HDP_MANAGER'); ?>
</th>
<?php
$statuses = $this->data['statuses'];
foreach ($statuses as $status)
{
?>
<th>
<?php echo $status->title; ?>
</th>
<?php
}
?>
<th>
<?php echo Text::_('HDP_TOTAL_TICKETS'); ?>
</th>
</tr>
</thead>
<tbody>
<?php
$managers = $this->data['managers'];
usort($managers, 'sortTicketsByManager');
foreach ($managers as $manager)
{
?>
<tr>
<td>
<?php echo $manager['name']; ?>
</td>
<?php
foreach ($statuses as $status)
{
?>
<td>
<?php
if (isset($manager[$status->id]))
{
echo $manager[$status->id];
}
else
{
echo 0;
}
?>
</td>
<?php
}
?>
<td>
<?php echo $manager['total_tickets']; ?>
</td>
</tr>
<?php
}
?>
</tbody>
</table>
<h2><?php echo Text::_('HDP_TICKET_BY_STAFFS');
?></h2>
<table class="adminlist table table-striped">
<thead>
<tr>
<th>
<?php echo Text::_('HDP_STAFF'); ?>
</th>
<?php
$statuses = $this->data['statuses'];
foreach ($statuses as $status)
{
?>
<th>
<?php echo $status->title; ?>
</th>
<?php
}
?>
<th>
<?php echo Text::_('HDP_TOTAL_TICKETS'); ?>
</th>
</tr>
</thead>
<tbody>
<?php
$staffs = $this->data['staffs'];
usort($staffs, 'sortTickets');
foreach ($staffs as $staff)
{
?>
<tr>
<td>
<?php echo $staff->username; ?>
</td>
<?php
foreach ($statuses as $status)
{
?>
<td>
<?php
if (isset($staff->status[$status->id]))
{
echo $staff->status[$status->id];
}
else
{
echo 0;
}
?>
</td>
<?php
}
?>
<td>
<?php echo $staff->total_tickets; ?>
</td>
</tr>
<?php
}
?>
</tbody>
</table>
<h2><?php echo Text::_('HDP_TICKET_BY_CATEGORIES');
?></h2>
<table class="adminlist table table-striped">
<thead>
<tr>
<th>
<?php echo Text::_('Category'); ?>
</th>
<?php
$statuses = $this->data['statuses'];
foreach ($statuses as $status)
{
?>
<th>
<?php echo $status->title; ?>
</th>
<?php
}
?>
<th>
<?php echo Text::_('Total Tickets'); ?>
</th>
</tr>
</thead>
<tbody>
<?php
$categories = $this->data['categories'];
usort($categories, 'sortTickets');
foreach ($categories as $category)
{
if (!$category->total_tickets)
{
continue;
}
?>
<tr>
<td>
<?php echo $category->title; ?>
</td>
<?php
foreach ($statuses as $status)
{
?>
<td>
<?php
if (isset($category->status[$status->id]))
{
echo $category->status[$status->id];
}
else
{
echo 0;
}
?>
</td>
<?php
}
?>
<td>
<?php echo $category->total_tickets; ?>
</td>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
<?php echo HTMLHelper::_('form.token'); ?>
</form>
</div>
</div>Status/tmpl/default.php000064400000004152151160230050011133
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Multilanguage;
use Joomla\CMS\Language\Text;
if (!HelpdeskproHelper::isJoomla4())
{
HTMLHelper::_('formbehavior.chosen', 'select');
}
if (HelpdeskproHelper::isJoomla4())
{
$tabApiPrefix = 'uitab.';
}
else
{
$tabApiPrefix = 'bootstrap.';
}
$translatable = Multilanguage::isEnabled() &&
count($this->languages);
?>
<form
action="index.php?option=com_helpdeskpro&view=status"
method="post" name="adminForm" id="adminForm"
class="form form-horizontal">
<?php
if ($translatable)
{
echo HTMLHelper::_($tabApiPrefix . 'startTabSet',
'status', array('active' =>
'general-page'));
echo HTMLHelper::_($tabApiPrefix . 'addTab',
'status', 'general-page',
Text::_('HDP_GENERAL', true));
}
?>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TITLE'); ?>
</div>
<div class="controls">
<input class="form-control"
type="text" name="title" id="title"
size="40" maxlength="250"
value="<?php echo $this->item->title;
?>"/>
</div>
</div>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_PUBLISHED'); ?>
</div>
<div class="controls">
<?php echo $this->lists['published'];
?>
</div>
</div>
<?php
if ($translatable)
{
echo HTMLHelper::_($tabApiPrefix . 'endTab');
echo $this->loadTemplate('translation');
echo HTMLHelper::_($tabApiPrefix . 'endTabSet');
}
?>
<?php echo HTMLHelper::_('form.token'); ?>
<input type="hidden" name="id"
value="<?php echo $this->item->id; ?>"/>
<input type="hidden" name="task"
value=""/>
</form>Status/tmpl/default_translation.php000064400000002675151160230050013561
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Uri\Uri;
$rootUri = Uri::root();
echo HTMLHelper::_($tabApiPrefix . 'addTab', 'status',
'translation-page', Text::_('HDP_TRANSLATION', true));
echo HTMLHelper::_($tabApiPrefix . 'startTabSet',
'item-translation', array('active' =>
'translation-page-'.$this->languages[0]->sef));
foreach ($this->languages as $language)
{
$sef = $language->sef;
echo HTMLHelper::_($tabApiPrefix . 'addTab',
'item-translation', 'translation-page-' . $sef,
$language->title . ' <img src="' . $rootUri .
'media/com_helpdeskpro/assets/flags/' . $sef . '.png"
/>');
?>
<div class="control-group">
<div class="control-label">
<?php echo Text::_('HDP_TITLE'); ?>
</div>
<div class="controls">
<input class="input-xlarge" type="text"
name="title_<?php echo $sef; ?>"
id="title_<?php echo $sef; ?>"
size="" maxlength="250"
value="<?php echo
$this->item->{'title_' . $sef}; ?>"/>
</div>
</div>
<?php
echo HTMLHelper::_($tabApiPrefix . 'endTab');
}
echo HTMLHelper::_($tabApiPrefix . 'endTabSet');
echo HTMLHelper::_($tabApiPrefix .
'endTab');Statuses/tmpl/default.php000064400000013174151160230050011467
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
if (!HelpdeskproHelper::isJoomla4())
{
HTMLHelper::_('formbehavior.chosen', 'select');
}
HTMLHelper::_('bootstrap.tooltip', '.hasTooltip',
array('placement' => 'top'));
$ordering = $this->state->filter_order == 'tbl.ordering';
if ($ordering)
{
$saveOrderingUrl =
'index.php?option=com_helpdeskpro&task=status.save_order_ajax';
if (HelpdeskproHelper::isJoomla4())
{
\Joomla\CMS\HTML\HTMLHelper::_('draggablelist.draggable');
}
else
{
HTMLHelper::_('sortablelist.sortable', 'fieldsList',
'adminForm', strtolower($this->state->filter_order_Dir),
$saveOrderingUrl);
}
}
$customOptions = array(
'filtersHidden' => true,
'defaultLimit' =>
Factory::getApplication()->get('list_limit', 20),
'searchFieldSelector' => '#filter_search',
'orderFieldSelector' => '#filter_full_ordering'
);
HTMLHelper::_('searchtools.form', '#adminForm',
$customOptions);
?>
<form
action="index.php?option=com_helpdeskpro&view=statuses"
method="post" name="adminForm"
id="adminForm">
<div class="row-fluid">
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<div id="filter-bar" class="btn-toolbar
js-stools">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
Text::_('HDP_SEARCH_STATUSES_DESC');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
Text::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->filter_search); ?>"
class="hasTooltip form-control" title="<?php echo
HTMLHelper::tooltipText('HDP_FILTER_SEARCH_STATUSES_DESC');
?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn hasTooltip"
title="<?php echo
HTMLHelper::tooltipText('JSEARCH_FILTER_SUBMIT');
?>"><span
class="icon-search"></span></button>
<button type="button" class="btn hasTooltip"
title="<?php echo
HTMLHelper::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.getElementById('filter_search').value='';this.form.submit();"><span
class="icon-remove"></span></button>
</div>
<div class="btn-group pull-right hidden-phone">
<?php echo $this->lists['filter_state']; ?>
</div>
</div>
<div class="clearfix"></div>
<table class="adminlist table table-striped"
id="statusList">
<thead>
<tr>
<th width="5">
<?php echo Text::_('NUM'); ?>
</th>
<th width="20">
<input type="checkbox" name="toggle"
value="" onclick="Joomla.checkAll(this);"/>
</th>
<th class="title" style="text-align:
left;">
<?php echo HTMLHelper::_('searchtools.sort',
Text::_('HDP_TITLE'), 'tbl.title',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th width="5%">
<?php echo HTMLHelper::_('searchtools.sort',
Text::_('HDP_PUBLISHED'), 'tbl.published',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th width="2%">
<?php echo HTMLHelper::_('searchtools.sort',
Text::_('HDP_ID'), 'tbl.id',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="4">
<?php echo $this->pagination->getListFooter(); ?>
</td>
</tr>
</tfoot>
<tbody <?php if ($ordering) :?>
class="js-draggable" data-url="<?php echo
$saveOrderingUrl; ?>" data-direction="<?php echo
strtolower($this->state->filter_order_Dir); ?>" <?php
endif; ?>>
<?php
$k = 0;
for ($i = 0, $n = count($this->items); $i < $n; $i++)
{
$row = &$this->items[$i];
$link =
Route::_('index.php?option=com_helpdeskpro&view=status&id='
. $row->id);
$checked = HTMLHelper::_('grid.id', $i, $row->id);
$published = HTMLHelper::_('jgrid.published',
$row->published, $i);
?>
<tr class="<?php echo "row$k"; ?>">
<td class="order nowrap center hidden-phone">
<?php
$iconClass = '';
if (!$ordering)
{
$iconClass = ' inactive tip-top hasTooltip"';
}
?>
<span class="sortable-handler<?php echo $iconClass
?>">
<i class="icon-menu"></i>
</span>
<?php if ($ordering) : ?>
<input type="text" style="display:none"
name="order[]" size="5" value="<?php echo
$row->ordering ?>" class="width-20 text-area-order
"/>
<?php endif; ?>
</td>
<td>
<?php echo $checked; ?>
</td>
<td>
<a href="<?php echo $link; ?>"><?php echo
$row->title; ?></a>
</td>
<td class="center">
<?php echo $published; ?>
</td>
<td class="center">
<?php echo $row->id; ?>
</td>
</tr>
<?php
$k = 1 - $k;
}
?>
</tbody>
</table>
</div>
</div>
<input type="hidden" name="task"
value=""/>
<input type="hidden" name="boxchecked"
value="0"/>
<input type="hidden" name="filter_order"
value="<?php echo $this->state->filter_order;
?>"/>
<input type="hidden" name="filter_order_Dir"
value="<?php echo $this->state->filter_order_Dir;
?>"/>
<input type="hidden" id="filter_full_ordering"
name="filter_full_ordering" value="" />
<?php echo HTMLHelper::_('form.token'); ?>
</form>Ticket/Html.php000064400000014557151160230050007411
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
namespace OSSolution\HelpdeskPro\Admin\View\Ticket;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Uri\Uri;
use OSL\View\ItemView;
use OSSolution\HelpdeskPro\Site\Helper\Database as
HelpdeskproHelperDatabase;
use OSSolution\HelpdeskPro\Site\Helper\Helper as HelpdeskproHelper;
use OSSolution\HelpdeskPro\Site\Helper\Html as HelpdeskproHelperHtml;
defined('_JEXEC') or die;
/**
* @property \OSSolution\HelpdeskPro\Admin\Model\Ticket $model
*/
class Html extends ItemView
{
/**
* Get extra data needed to render the form
*
* @return void
*/
protected function beforeRender()
{
parent::beforeRender();
HelpdeskproHelper::loadEditable();
// Remove the uploaded files data from section
$this->container->session->clear('hdp_uploaded_files');
$this->container->session->clear('hdp_uploaded_files_original_names');
$layout = $this->getLayout();
if ($layout == 'form')
{
$this->beforeRenderTicketForm();
return;
}
if (empty($this->item->id))
{
// Invalid ticket, redirect to ticket list page
$app = $this->container->app;
$app->enqueueMessage(Text::_('HDP_TICKET_NOT_EXISTS'),
'warning');
$app->redirect('index.php?option=com_helpdeskpro&view=tickets');
}
$config = HelpdeskproHelper::getConfig();
$rows = HelpdeskproHelperDatabase::getAllCategories();
$children = [];
if ($rows)
{
// first pass - collect children
foreach ($rows as $v)
{
$pt = (int) $v->parent_id;
$list = @$children[$pt] ? $children[$pt] : [];
array_push($list, $v);
$children[$pt] = $list;
}
}
$categories = HTMLHelper::_('menu.treerecurse', 0,
'', [], $children, 9999, 0, 0);
PluginHelper::importPlugin('helpdeskpro');
//Trigger plugins
$results =
$this->container->app->triggerEvent('onViewTicket',
[$this->item]);
if ($config->highlight_code)
{
HelpdeskproHelper::loadHighlighter();
}
// Add js variables
$maxNumberOfFiles = $config->max_number_attachments ? (int)
$config->max_number_attachments : 1;
$siteUrl = Uri::base();
$this->container->document->addScriptDeclaration("
var maxAttachment = $maxNumberOfFiles;
var currentCategory = 0;
var currentNumberAttachment = 1;
var currentStatus = 0;
var hdpSiteUrl = '$siteUrl';
");
$canConvertToKb = false;
$db = $this->container->db;
$query = $db->getQuery(true);
$query->select('category_type')
->from('#__helpdeskpro_categories')
->where('id = ' . (int) $this->item->category_id);
$db->setQuery($query);
$categoryType = $db->loadResult();
if ($categoryType == 0)
{
$canConvertToKb = true;
}
$db->setQuery($query);
$this->fields =
HelpdeskproHelper::getFields($this->item->category_id);
$this->messages = $this->model->getMessages();
$this->fieldValues = $this->model->getFieldsValue();
$this->rowStatuses = HelpdeskproHelperDatabase::getAllStatuses();
$this->rowPriorities =
HelpdeskproHelperDatabase::getAllPriorities();
$this->rowLabels = HelpdeskproHelperDatabase::getAllLabels();
$this->categories = $categories;
$this->dateFormat = $config->date_format;
$this->config = $config;
$this->results = $results;
$this->onlineUserIds = HelpdeskproHelper::getOnlineUsers();
$this->canConvertToKb = $canConvertToKb;
}
/**
* Generate form allows admin creating new ticket
*/
private function beforeRenderTicketForm()
{
$config = HelpdeskproHelper::getConfig();
$this->lists['category_id'] =
HelpdeskproHelperHtml::buildCategoryDropdown(0, 'category_id',
'onchange="HDP.showFields(this.form);"
class="form-select"');
$options = [];
$options[] = HTMLHelper::_('select.option', 0,
Text::_('HDP_CHOOSE_PRIORITY'), 'id',
'title');
$options = array_merge($options,
HelpdeskproHelperDatabase::getAllPriorities());
$this->lists['priority_id'] =
HTMLHelper::_('select.genericlist', $options,
'priority_id', [
'option.text.toHtml' => false,
'option.text' => 'title',
'option.key' => 'id',
'list.attr' =>
'class="form-select"',
'list.select' =>
$config->default_ticket_priority_id,
]);
$options = [];
$options[] = HTMLHelper::_('select.option', -1,
Text::_('HDP_APPLY_LABEL'), 'id', 'title');
$options[] = HTMLHelper::_('select.option', 0,
Text::_('HDP_NO_LABEL'), 'id', 'title');
$options = array_merge($options,
HelpdeskproHelperDatabase::getAllLabels());
$this->lists['label_id'] =
HTMLHelper::_('select.genericlist', $options,
'label_id', [
'option.text.toHtml' => false,
'option.text' => 'title',
'option.key' => 'id',
'list.attr' =>
'class="form-select"',
'list.select' =>
$config->default_ticket_priority_id,
]);
$rowFields = HelpdeskproHelper::getAllFields();
$form = new \HDPForm($rowFields);
$relation = HelpdeskproHelper::getFieldCategoryRelation();
$form->prepareFormField(0, $relation);
$fieldJs = "fields = new Array();\n";
foreach ($relation as $catId => $fieldList)
{
$fieldJs .= ' fields[' . $catId . '] = new
Array("' . implode('","', $fieldList) .
'");' . "\n";
}
$document = $this->container->document;
$document->addScriptDeclaration($fieldJs);
$maxNumberOfFiles = $config->max_number_attachments ? (int)
$config->max_number_attachments : 1;
$document->addScriptDeclaration("
var maxAttachment = $maxNumberOfFiles;
var currentCategory = 0;
var currentNumberAttachment = 1;
");
$this->form = $form;
$this->config = $config;
}
/**
* Override default toolbar buttons
*/
protected function addToolbar()
{
if ($this->item->id)
{
$toolbarTitle = $this->container->languagePrefix . '_' .
$this->name . '_VIEW';
}
else
{
$toolbarTitle = $this->container->languagePrefix . '_' .
$this->name . '_NEW';
}
ToolbarHelper::title(Text::_(strtoupper($toolbarTitle)));
ToolbarHelper::cancel('ticket.cancel');
}
}Ticket/tmpl/default.php000064400000011716151160230050011077
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\Editor\Editor;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Uri\Uri;
use OSSolution\HelpdeskPro\Site\Helper\Html as HelpdeskproHelperHtml;
$cbIntegration = file_exists(JPATH_ROOT .
'/components/com_comprofiler/comprofiler.php');
$editor =
Editor::getInstance(Factory::getConfig()->get('editor'));
$user = Factory::getUser();
$document = Factory::getDocument();
$rootUri = Uri::root(true);
if (!HelpdeskproHelper::isJoomla4())
{
HTMLHelper::_('formbehavior.chosen', 'select');
}
HTMLHelper::_('behavior.keepalive');
HTMLHelper::_('behavior.core');
if (!HelpdeskproHelper::isJoomla4())
{
HTMLHelper::_('behavior.modal', 'a.hdp-modal');
}
if (!$this->config->use_html_editor &&
$this->config->process_bb_code)
{
$document->addScript($rootUri .
'/media/com_helpdeskpro/assets/js/jquery.selection.js');
$document->addScript($rootUri .
'/media/com_helpdeskpro/assets/js/helpdeskpro.bbcode.js');
}
$document->addScript($rootUri .
'/media/com_helpdeskpro/js/admin-ticket-default.js');
Text::script('HDP_ENTER_COMMENT_FOR_TICKET', true);
$maxNumberOfFiles = $this->config->max_number_attachments ?
$this->config->max_number_attachments : 1;
$this->captchaInvalid = false;
?>
<div id="hdp_container" class="container-fluid">
<form
action="index.php?option=com_helpdeskpro&view=ticket"
method="post" name="adminForm"
id="adminForm"
enctype="multipart/form-data" class="form
form-horizontal">
<!--Toolbar buttons-->
<div class="row-fluid admintable">
<?php
$layoutData = array(
'categories' => $this->categories,
'rowStatuses' => $this->rowStatuses,
'rowPriorities' => $this->rowPriorities,
'isCustomer' => false,
'item' => $this->item,
'user' => $user,
'rowLabels' => $this->rowLabels,
'convertToKb' => $this->canConvertToKb
);
echo
HelpdeskproHelperHtml::loadCommonLayout('common/tmpl/toolbar.php',
$layoutData);
?>
</div>
<div class="row-fluid">
<div id="hdp_left_panel">
<table class="adminform" width="100%">
<tr>
<td style="padding-bottom: 15px;">
<strong>
[#<?php echo $this->item->id ?>] - <?php echo
$this->item->subject; ?>
</strong>
</td>
</tr>
<tr>
<td>
<?php
$layoutData = array(
'item' => $this->item,
'rootUri' => $rootUri,
'config' => $this->config
);
echo
HelpdeskproHelperHtml::loadCommonLayout('common/tmpl/ticket_detail.php',
$layoutData);
?>
</td>
</tr>
<tr>
<th>
<h2 class="hdp_heading
hdp_comments_heading"><?php echo
Text::_('HDP_COMMENTS'); ?>
<a href="javascript:HDP.showMessageBox();">
<span id="hdp_add_comment_link"><?php echo
Text::_('HDP_ADD_COMMENT'); ?></span>
<img width="32" height="32"
src="<?php echo $rootUri .
'/media/com_helpdeskpro/assets/images/icons/icon_add.jpg'
?>">
</a>
</h2>
</th>
</tr>
<?php
$layoutData = array(
'canComment' => true,
'captchaInvalid' => false,
'config' => $this->config,
'maxNumberOfFiles' => $maxNumberOfFiles,
'rootUri' => $rootUri,
'editor' => $editor,
'message' => '',
'captcha' => isset($this->captcha) ?
$this->captcha : ''
);
// Comment form
echo
HelpdeskproHelperHtml::loadCommonLayout('common/tmpl/ticket_add_comment.php',
$layoutData);
// List of comments
$layoutData = array(
'messages' => $this->messages,
'user' => $user,
'cbIntegration' => $cbIntegration,
'rootUri' => $rootUri,
'config' => $this->config
);
echo
HelpdeskproHelperHtml::loadCommonLayout('common/tmpl/ticket_comments.php',
$layoutData);
?>
</table>
</div>
<div id="hdp_right_panel" class="span3">
<?php
// Customer information
$layoutData = array(
'item' => $this->item,
'fields' => $this->fields,
'fieldValues' => $this->fieldValues,
'rootUri' => $rootUri,
'config' => $this->config,
'results' => $this->results
);
echo
HelpdeskproHelperHtml::loadCommonLayout('common/tmpl/ticket_customer_info.php',
$layoutData);
?>
</div>
</div>
<input type="hidden" name="option"
value="com_helpdeskpro"/>
<input type="hidden" name="id"
value="<?php echo $this->item->id; ?>"/>
<input type="hidden" name="task"
value=""/>
<input type="hidden" name="new_value"
value="0"/>
<?php echo HTMLHelper::_('form.token'); ?>
</form>
</div>Ticket/tmpl/form.php000064400000011077151160230050010416
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\Editor\Editor;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Uri\Uri;
$editor =
Editor::getInstance(Factory::getConfig()->get('editor'));
if (!HelpdeskproHelper::isJoomla4())
{
HTMLHelper::_('formbehavior.chosen', 'select');
}
HTMLHelper::_('behavior.core');
HTMLHelper::_('behavior.keepalive');
if (!HelpdeskproHelper::isJoomla4())
{
HTMLHelper::_('behavior.modal', 'a.hdp-modal');
}
$rootUri = Uri::root(true);
$document = Factory::getDocument();
if (!$this->config->use_html_editor &&
$this->config->process_bb_code)
{
$document->addScript($rootUri .
'/media/com_helpdeskpro/assets/js/jquery.selection.js');
$document->addScript($rootUri .
'/media/com_helpdeskpro/assets/js/helpdeskpro.bbcode.js');
}
OSSolution\HelpdeskPro\Site\Helper\Jquery::validateForm();
$document->addScript($rootUri.'/media/com_helpdeskpro/js/admin-ticket-form.js');
?>
<div class="container-fluid">
<form class="form form-horizontal" name="adminForm"
id="adminForm" action="index.php"
method="post"
enctype="multipart/form-data">
<div class="control-group">
<label class="control-label"
for="name"><?php echo Text::_('HDP_NAME');
?><span
class="required">*</span></label>
<div class="controls">
<input type="text" id="name"
name="name" placeholder="<?php echo
Text::_('HDP_CUSTOMER_NAME'); ?>" class="input-large
form-control validate[required]"/>
</div>
</div>
<div class="control-group">
<label class="control-label"
for="email"><?php echo Text::_('HDP_EMAIL');
?><span class="required">*</span></label>
<div class="controls">
<input type="text" id="email"
name="email" placeholder="<?php echo
Text::_('HDP_CUSTOMER_EMAIL'); ?>"
class="input-large form-control
validate[required,custom[email]]"/>
</div>
</div>
<div class="control-group">
<label class="control-label"
for="category_id"><?php echo
Text::_('HDP_CATEGORY'); ?><span
class="required">*</span></label>
<div class="controls">
<?php echo $this->lists['category_id']; ?>
</div>
</div>
<div class="control-group">
<label class="control-label"
for="subject"><?php echo Text::_('HDP_SUBJECT');
?><span
class="required">*</span></label>
<div class="controls">
<input type="text" id="subject"
name="subject" class="input-xxlarge form-control
validate[required]" value="" size="50"/>
</div>
</div>
<div class="control-group">
<label class="control-label"
for="priority_id"><?php echo
Text::_('HDP_PRIORITY'); ?><span
class="required">*</span></label>
<div class="controls">
<?php echo $this->lists['priority_id']; ?>
</div>
</div>
<?php
$fields = $this->form->getFields();
/* @var HDPFormField $field*/
foreach ($fields as $field)
{
echo $field->getControlGroup();
}
?>
<div class="control-group">
<label class="control-label"
for="message"><?php echo Text::_('HDP_MESSAGE');
?><span
class="required">*</span></label>
<div class="controls">
<?php
if ($this->config->use_html_editor)
{
echo $editor->display('message', '',
'100%', '250', '75', '10');
}
else
{
?>
<textarea rows="10" cols="70"
class="hdp_fullwidth" name="message"
class="form-control validate[required]"></textarea>
<?php
}
?>
</div>
</div>
<?php
if ($this->config->enable_attachment)
{
?>
<div class="control-group">
<label class="control-label"><?php echo
Text::_('HDP_ATTACHMENTS'); ?></label>
<div class="controls">
<div id="hdp_ticket_attachments"
class="dropzone needsclick dz-clickable">
</div>
</div>
</div>
<?php
echo
HelpdeskproHelperHtml::loadCommonLayout('common/tmpl/ticket_upload_attachments.php');
}
?>
<div class="form-actions">
<input type="button" name="btnSubmit"
class="btn btn-primary" value="<?php echo
Text::_('HDP_CANCEL'); ?>"
onclick="HDP.ticketList();"/>
<input type="submit" name="btnSubmit"
class="btn btn-primary"
value="<?php echo Text::_('HDP_SUBMIT_TICKET');
?>" />
</div>
<input type="hidden" name="option"
value="com_helpdeskpro"/>
<input type="hidden" name="task"
value="ticket.save"/>
<?php echo HTMLHelper::_('form.token'); ?>
</form>
</div>Tickets/Html.php000064400000013502151160230050007561
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
namespace OSSolution\HelpdeskPro\Admin\View\Tickets;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\Utilities\ArrayHelper;
use OSSolution\HelpdeskPro\Site\Helper\Database as
HelpdeskproHelperDatabase;
use OSSolution\HelpdeskPro\Site\Helper\Helper as HelpdeskproHelper;
use OSSolution\HelpdeskPro\Site\Helper\Html as HelpdeskproHelperHtml;
defined('_JEXEC') or die;
/***
* @property \OSSolution\HelpdeskPro\Admin\Model\Tickets $model
*/
class Html extends \OSL\View\ListView
{
protected function beforeRender()
{
parent::beforeRender();
$user = $this->container->user;
$config = HelpdeskproHelper::getConfig();
// Category filter
$filters = array();
if (!$user->authorise('core.admin',
'com_helpdeskpro'))
{
$managedCategoryIds =
HelpdeskproHelper::getTicketCategoryIds($user->get('username'));
$managedCategoryIds = ArrayHelper::toInteger($managedCategoryIds);
$filters[] = 'id IN (' . implode(',',
$managedCategoryIds) . ')';
}
$rows = HelpdeskproHelperDatabase::getAllCategories('title',
$filters);
$this->lists['filter_category_id'] =
HelpdeskproHelperHtml::buildCategoryDropdown($this->state->filter_category_id,
'filter_category_id', 'class="input-large
form-select" onchange="submit();"', $rows);
// Ticket status filter
$rowStatuses = HelpdeskproHelperDatabase::getAllStatuses();
if (count($rowStatuses))
{
$options = array();
$options[] = HTMLHelper::_('select.option', -1,
Text::_('HDP_TICKET_STATUS'), 'id',
'title');
$options[] = HTMLHelper::_('select.option', 0,
Text::_('HDP_ALL_STATUSES'), 'id', 'title');
$options = array_merge($options, $rowStatuses);
$this->lists['filter_status_id'] =
HTMLHelper::_('select.genericlist', $options,
'filter_status_id',
array(
'option.text.toHtml' => false,
'option.text' => 'title',
'option.key' => 'id',
'list.attr' => 'class="input-medium
form-select" onchange="submit();"',
'list.select' =>
$this->state->filter_status_id));
}
// Ticket priority filter
$rowPriorities = HelpdeskproHelperDatabase::getAllPriorities();
if (count($rowPriorities))
{
$options = array();
$options[] = HTMLHelper::_('select.option', 0,
Text::_('HDP_ALL_PRIORITIES'), 'id',
'title');
$options = array_merge($options, $rowPriorities);
$this->lists['filter_priority_id'] =
HTMLHelper::_('select.genericlist', $options,
'filter_priority_id',
array(
'option.text.toHtml' => false,
'option.text' => 'title',
'option.key' => 'id',
'list.attr' => 'class="input-medium
form-select" onchange="submit();"',
'list.select' =>
$this->state->filter_priority_id));
}
$statusList = array();
foreach ($rowStatuses as $status)
{
$statusList[$status->id] = $status->title;
}
$priorityList = array();
foreach ($rowPriorities as $priority)
{
$priorityList[$priority->id] = $priority->title;
}
// Label filter
$rowLabels = HelpdeskproHelperDatabase::getAllLabels();
if (count($rowLabels))
{
$options = array();
$options[] =
HTMLHelper::_('select.option', 0,
Text::_('HDP_SELECT_LABEL'), 'id', 'title');
$options = array_merge($options, $rowLabels);
$this->lists['filter_label_id'] =
HTMLHelper::_('select.genericlist', $options,
'filter_label_id',
array(
'option.text.toHtml' => false,
'option.text' => 'title',
'option.key' => 'id',
'list.attr' => 'class="input-medium
form-select" onchange="submit();"',
'list.select' =>
$this->state->filter_label_id));
}
/**
* Filter ticket by staff
*/
if (PluginHelper::isEnabled('helpdeskpro',
'assignticket'))
{
$staffDisplayField =
$config->get('staff_display_field', 'username') ?:
'username';
$staffs =
HelpdeskproHelperDatabase::getAllStaffs($config->staff_group_id);
$options = array();
$options[] =
HTMLHelper::_('select.option', 0,
Text::_('HDP_SELECT_STAFF'), 'id',
$staffDisplayField);
$options = array_merge($options, $staffs);
$this->lists['filter_staff_id'] =
HTMLHelper::_('select.genericlist', $options,
'filter_staff_id', 'class="input-medium
form-select" onchange="submit();"', 'id',
$staffDisplayField, $this->state->filter_staff_id);
$rowStaffs = array();
foreach ($staffs as $staff)
{
$rowStaffs[$staff->id] = $staff->{$staffDisplayField};
}
$this->staffs = $rowStaffs;
$this->showStaffColumn = true;
}
$this->fields =
HelpdeskproHelperDatabase::getFieldsOnListView();
$this->fieldValues =
$this->model->getFieldsData($this->fields);
$this->statusList = $statusList;
$this->priorityList = $priorityList;
$this->config = $config;
return true;
}
/**
* Override addToolbar method to add custom toolbar for tickets
management
*/
protected function addToolbar()
{
ToolbarHelper::title(Text::_('HDP_TICKET_MANAGEMENT'),
'link tickets');
ToolbarHelper::addNew('ticket.add');
ToolbarHelper::deleteList(Text::_('HDP_DELETE_CONFIRM'),
'ticket.delete');
ToolbarHelper::custom('ticket.export', 'download',
'download', 'Export Tickets', false);
if ($this->container->user->authorise('core.admin',
'com_helpdeskpro'))
{
ToolbarHelper::preferences('com_helpdeskpro');
}
}
}Tickets/tmpl/default.php000064400000023320151160230050011254
0ustar00<?php
/**
* @version 4.3.0
* @package Joomla
* @subpackage Helpdesk Pro
* @author Tuan Pham Ngoc
* @copyright Copyright (C) 2013 - 2021 Ossolution Team
* @license GNU/GPL, see LICENSE.php
*/
defined('_JEXEC') or die;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
$ordering = $this->state->filter_order == 'tbl.ordering';
HTMLHelper::_('bootstrap.tooltip');
if (!HelpdeskproHelper::isJoomla4())
{
HTMLHelper::_('formbehavior.chosen', 'select');
}
?>
<form
action="index.php?option=com_helpdeskpro&view=tickets"
method="post" name="adminForm"
id="adminForm">
<div class="row-fluid">
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
Text::_('HDP_SEARCH_TICKETS_DESC');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
Text::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->filter_search); ?>"
class="hasTooltip form-control" title="<?php echo
HTMLHelper::tooltipText('HDP_FILTER_SEARCH_TICKETS_DESC');
?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn hasTooltip"
title="<?php echo
HTMLHelper::tooltipText('JSEARCH_FILTER_SUBMIT');
?>"><span
class="icon-search"></span></button>
<button type="button" class="btn hasTooltip"
title="<?php echo
HTMLHelper::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.getElementById('filter_search').value='';this.form.submit();"><span
class="icon-remove"></span></button>
</div>
<div class="btn-group pull-right hidden-phone">
<?php
echo $this->lists['filter_category_id'];
if (isset($this->lists['filter_status_id']))
{
echo $this->lists['filter_status_id'];
}
if (isset($this->lists['filter_priority_id']))
{
echo $this->lists['filter_priority_id'];
}
if (isset($this->lists['filter_label_id']))
{
echo $this->lists['filter_label_id'];
}
if (!empty($this->showStaffColumn))
{
echo $this->lists['filter_staff_id'];
}
?>
</div>
</div>
<div class="clearfix"></div>
<table class="adminlist table table-striped">
<thead>
<tr>
<th width="5">
<?php echo Text::_('NUM'); ?>
</th>
<th width="20">
<input type="checkbox" name="toggle"
value="" onclick="Joomla.checkAll(this);"/>
</th>
<th class="title" style="text-align:
left;">
<?php echo HTMLHelper::_('grid.sort',
Text::_('HDP_TITLE'), 'tbl.subject',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th class="title" style="text-align:
left;">
<?php echo HTMLHelper::_('grid.sort',
Text::_('HDP_CATEGORY'), 'tbl.category_id',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th class="title" style="text-align:
left;">
<?php echo HTMLHelper::_('grid.sort',
Text::_('HDP_USER'), 'c.username',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<?php
foreach ($this->fields as $field)
{
?>
<th class="title">
<?php
if ($field->is_searchable)
{
echo HTMLHelper::_('grid.sort',
Text::_($field->title), 'tbl.' . $field->name,
$this->state->filter_order_Dir, $this->state->filter_order);
}
else
{
echo $field->title;
}
?>
</th>
<?php
}
?>
<th class="title">
<?php echo HTMLHelper::_('grid.sort',
Text::_('HDP_CREATED_DATE'), 'tbl.created_date',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<th class="title">
<?php echo HTMLHelper::_('grid.sort',
Text::_('HDP_MODIFIED_DATE'), 'tbl.modified_date',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<?php
if
(isset($this->lists['filter_status_id']))
{
?>
<th width="8%">
<?php echo
HTMLHelper::_('grid.sort', Text::_('HDP_STATUS'),
'tbl.status_id', $this->state->filter_order_Dir,
$this->state->filter_order); ?>
</th>
<?php
}
if
(isset($this->lists['filter_priority_id']))
{
?>
<th width="8%">
<?php echo
HTMLHelper::_('grid.sort', Text::_('HDP_PRIORITY'),
'tbl.priority_id', $this->state->filter_order_Dir,
$this->state->filter_order); ?>
</th>
<?php
}
if (!empty($this->showStaffColumn))
{
?>
<th width="8%">
<?php echo HTMLHelper::_('grid.sort',
Text::_('HDP_STAFF'), 'tbl.staff_id',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
<?php
}
?>
<th width="2%">
<?php echo HTMLHelper::_('grid.sort',
Text::_('HDP_ID'), 'tbl.id',
$this->state->filter_order_Dir, $this->state->filter_order);
?>
</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="<?php echo 10 + count($this->fields);
?>">
<?php echo $this->pagination->getListFooter(); ?>
</td>
</tr>
</tfoot>
<tbody>
<?php
$k = 0;
for ($i = 0, $n = count($this->items); $i < $n; $i++)
{
$row = $this->items[$i];
$link =
Route::_('index.php?option=com_helpdeskpro&view=ticket&id='
. $row->id);
$checked = HTMLHelper::_('grid.id', $i, $row->id);
if ($row->user_id)
{
$accountLink =
'index.php?option=com_users&task=user.edit&id=' .
$row->user_id;
}
?>
<tr class="<?php echo "row$k"; ?>
hdp-ticket-status-<?php $row->status_id; ?>">
<td>
<?php echo $this->pagination->getRowOffset($i); ?>
</td>
<td>
<?php echo $checked; ?>
</td>
<td>
<a href="<?php echo $link; ?>"><?php echo
$row->subject; ?></a>
<?php
if ($row->label_id)
{
?>
<span class="label_box"
style="background-color: #<?php echo
$row->color_code; ?>"><?php echo $row->label_title;
?></span>
<?php
}
?>
</td>
<td>
<?php echo $row->category_title; ?>
</td>
<td>
<span class="submitter_name"><?php echo
$row->name; ?>
<?php
if ($row->username)
{
?>
<a href="<?php echo $accountLink; ?>"
title="View
Profile"><span>[<strong><?php echo
$row->username; ?></strong>]</span></a>
<?php
}
?>
</span>
<span class="submitter_email"><a
href="mailto:<?php echo $row->email;
?>"><?php echo $row->email; ?></a></span>
</td>
<?php
foreach ($this->fields as $field)
{
?>
<td>
<?php echo
isset($this->fieldValues[$row->id][$field->id]) ?
$this->fieldValues[$row->id][$field->id] : ''; ?>
</td>
<?php
}
?>
<td align="center">
<?php echo HTMLHelper::_('date', $row->created_date,
$this->config->date_format); ?>
</td>
<td align="center">
<?php echo HTMLHelper::_('date',
$row->modified_date, $this->config->date_format); ?>
</td>
<?php
if
(isset($this->lists['filter_status_id']))
{
?>
<td>
<?php echo
@$this->statusList[$row->status_id]; ?>
</td>
<?php
}
if
(isset($this->lists['filter_priority_id']))
{
?>
<td>
<?php echo
$this->priorityList[$row->priority_id]; ?>
</td>
<?php
}
if (!empty($this->showStaffColumn))
{
?>
<td>
<?php echo
$this->staffs[$row->staff_id]; ?>
</td>
<?php
}
?>
<td align="center">
<?php echo $row->id; ?>
</td>
</tr>
<?php
$k = 1 - $k;
}
?>
</tbody>
</table>
</div>
</div>
<input type="hidden" name="task"
value=""/>
<input type="hidden" name="boxchecked"
value="0"/>
<input type="hidden" name="filter_order"
value="<?php echo $this->state->filter_order;
?>"/>
<input type="hidden" name="filter_order_Dir"
value="<?php echo $this->state->filter_order_Dir;
?>"/>
<?php echo HTMLHelper::_('form.token'); ?>
</form>CategoriesView.php000064400000006447151161711620010211
0ustar00<?php
/**
* Joomla! Content Management System
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
* @license GNU General Public License version 2 or later; see
LICENSE.txt
*/
namespace Joomla\CMS\MVC\View;
defined('JPATH_PLATFORM') or die;
/**
* Categories view base class.
*
* @since 3.2
*/
class CategoriesView extends HtmlView
{
/**
* State data
*
* @var \Joomla\Registry\Registry
* @since 3.2
*/
protected $state;
/**
* Category items data
*
* @var array
* @since 3.2
*/
protected $items;
/**
* Language key for default page heading
*
* @var string
* @since 3.2
*/
protected $pageHeading;
/**
* Execute and display a template script.
*
* @param string $tpl The name of the template file to parse;
automatically searches through the template paths.
*
* @return mixed A string if successful, otherwise an Error object.
*
* @since 3.2
*/
public function display($tpl = null)
{
$state = $this->get('State');
$items = $this->get('Items');
$parent = $this->get('Parent');
$app = \JFactory::getApplication();
// Check for errors.
if (count($errors = $this->get('Errors')))
{
$app->enqueueMessage($errors, 'error');
return false;
}
if ($items === false)
{
$app->enqueueMessage(\JText::_('JGLOBAL_CATEGORY_NOT_FOUND'),
'error');
return false;
}
if ($parent == false)
{
$app->enqueueMessage(\JText::_('JGLOBAL_CATEGORY_NOT_FOUND'),
'error');
return false;
}
$params = &$state->params;
$items = array($parent->id => $items);
// Escape strings for HTML output
$this->pageclass_sfx =
htmlspecialchars($params->get('pageclass_sfx'), ENT_COMPAT,
'UTF-8');
$this->maxLevelcat = $params->get('maxLevelcat', -1) <
0 ? PHP_INT_MAX : $params->get('maxLevelcat', PHP_INT_MAX);
$this->params = &$params;
$this->parent = &$parent;
$this->items = &$items;
$this->prepareDocument();
return parent::display($tpl);
}
/**
* Prepares the document
*
* @return void
*
* @since 3.2
*/
protected function prepareDocument()
{
$app = \JFactory::getApplication();
$menus = $app->getMenu();
// Because the application sets a default page title, we need to get it
from the menu item itself
$menu = $menus->getActive();
if ($menu)
{
$this->params->def('page_heading',
$this->params->get('page_title', $menu->title));
}
else
{
$this->params->def('page_heading',
\JText::_($this->pageHeading));
}
$title = $this->params->get('page_title', '');
if (empty($title))
{
$title = $app->get('sitename');
}
elseif ($app->get('sitename_pagetitles', 0) == 1)
{
$title = \JText::sprintf('JPAGETITLE',
$app->get('sitename'), $title);
}
elseif ($app->get('sitename_pagetitles', 0) == 2)
{
$title = \JText::sprintf('JPAGETITLE', $title,
$app->get('sitename'));
}
$this->document->setTitle($title);
if ($this->params->get('menu-meta_description'))
{
$this->document->setDescription($this->params->get('menu-meta_description'));
}
if ($this->params->get('menu-meta_keywords'))
{
$this->document->setMetadata('keywords',
$this->params->get('menu-meta_keywords'));
}
if ($this->params->get('robots'))
{
$this->document->setMetadata('robots',
$this->params->get('robots'));
}
}
}
CategoryFeedView.php000064400000007727151161711620010467 0ustar00<?php
/**
* Joomla! Content Management System
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
* @license GNU General Public License version 2 or later; see
LICENSE.txt
*/
namespace Joomla\CMS\MVC\View;
defined('JPATH_PLATFORM') or die;
/**
* Base feed View class for a category
*
* @since 3.2
*/
class CategoryFeedView extends HtmlView
{
/**
* Execute and display a template script.
*
* @param string $tpl The name of the template file to parse;
automatically searches through the template paths.
*
* @return mixed A string if successful, otherwise an Error object.
*
* @since 3.2
*/
public function display($tpl = null)
{
$app = \JFactory::getApplication();
$document = \JFactory::getDocument();
$extension = $app->input->getString('option');
$contentType = $extension . '.' . $this->viewName;
$ucmType = new \JUcmType;
$ucmRow = $ucmType->getTypeByAlias($contentType);
$ucmMapCommon = json_decode($ucmRow->field_mappings)->common;
$createdField = null;
$titleField = null;
if (is_object($ucmMapCommon))
{
$createdField = $ucmMapCommon->core_created_time;
$titleField = $ucmMapCommon->core_title;
}
elseif (is_array($ucmMapCommon))
{
$createdField = $ucmMapCommon[0]->core_created_time;
$titleField = $ucmMapCommon[0]->core_title;
}
$document->link =
\JRoute::_(\JHelperRoute::getCategoryRoute($app->input->getInt('id'),
$language = 0, $extension));
$app->input->set('limit',
$app->get('feed_limit'));
$siteEmail = $app->get('mailfrom');
$fromName = $app->get('fromname');
$feedEmail = $app->get('feed_email',
'none');
$document->editor = $fromName;
if ($feedEmail !== 'none')
{
$document->editorEmail = $siteEmail;
}
// Get some data from the model
$items = $this->get('Items');
$category = $this->get('Category');
// Don't display feed if category id missing or non existent
if ($category == false || $category->alias === 'root')
{
return \JError::raiseError(404,
\JText::_('JGLOBAL_CATEGORY_NOT_FOUND'));
}
foreach ($items as $item)
{
$this->reconcileNames($item);
// Strip html from feed item title
if ($titleField)
{
$title = $this->escape($item->$titleField);
$title = html_entity_decode($title, ENT_COMPAT, 'UTF-8');
}
else
{
$title = '';
}
// URL link to article
$router = new \JHelperRoute;
$link = \JRoute::_($router->getRoute($item->id, $contentType,
null, null, $item->catid));
// Strip HTML from feed item description text.
$description = $item->description;
$author = $item->created_by_alias ?: $item->author;
$categoryTitle = isset($item->category_title) ?
$item->category_title : $category->title;
if ($createdField)
{
$date = isset($item->$createdField) ? date('r',
strtotime($item->$createdField)) : '';
}
else
{
$date = '';
}
// Load individual item creator class.
$feeditem = new \JFeedItem;
$feeditem->title = $title;
$feeditem->link = $link;
$feeditem->description = $description;
$feeditem->date = $date;
$feeditem->category = $categoryTitle;
$feeditem->author = $author;
// We don't have the author email so we have to use site in both
cases.
if ($feedEmail === 'site')
{
$feeditem->authorEmail = $siteEmail;
}
elseif ($feedEmail === 'author')
{
$feeditem->authorEmail = $item->author_email;
}
// Loads item information into RSS array
$document->addItem($feeditem);
}
}
/**
* Method to reconcile non standard names from components to usage in this
class.
* Typically overridden in the component feed view class.
*
* @param object $item The item for a feed, an element of the $items
array.
*
* @return void
*
* @since 3.2
*/
protected function reconcileNames($item)
{
if (!property_exists($item, 'title') &&
property_exists($item, 'name'))
{
$item->title = $item->name;
}
}
}
CategoryView.php000064400000017773151161711620007705 0ustar00<?php
/**
* Joomla! Content Management System
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
* @license GNU General Public License version 2 or later; see
LICENSE.txt
*/
namespace Joomla\CMS\MVC\View;
defined('JPATH_PLATFORM') or die;
/**
* Base HTML View class for the a Category list
*
* @since 3.2
*/
class CategoryView extends HtmlView
{
/**
* State data
*
* @var \Joomla\Registry\Registry
* @since 3.2
*/
protected $state;
/**
* Category items data
*
* @var array
* @since 3.2
*/
protected $items;
/**
* The category model object for this category
*
* @var \JModelCategory
* @since 3.2
*/
protected $category;
/**
* The list of other categories for this extension.
*
* @var array
* @since 3.2
*/
protected $categories;
/**
* Pagination object
*
* @var \JPagination
* @since 3.2
*/
protected $pagination;
/**
* Child objects
*
* @var array
* @since 3.2
*/
protected $children;
/**
* The name of the extension for the category
*
* @var string
* @since 3.2
*/
protected $extension;
/**
* The name of the view to link individual items to
*
* @var string
* @since 3.2
*/
protected $viewName;
/**
* Default title to use for page title
*
* @var string
* @since 3.2
*/
protected $defaultPageTitle;
/**
* Whether to run the standard Joomla plugin events.
* Off by default for b/c
*
* @var bool
* @since 3.5
*/
protected $runPlugins = false;
/**
* Method with common display elements used in category list displays
*
* @return boolean|\JException|void Boolean false or \JException
instance on error, nothing otherwise
*
* @since 3.2
*/
public function commonCategoryDisplay()
{
$app = \JFactory::getApplication();
$user = \JFactory::getUser();
$params = $app->getParams();
// Get some data from the models
$model = $this->getModel();
$paramsModel = $model->getState('params');
$paramsModel->set('check_access_rights', 0);
$model->setState('params', $paramsModel);
$state = $this->get('State');
$category = $this->get('Category');
$children = $this->get('Children');
$parent = $this->get('Parent');
if ($category == false)
{
return \JError::raiseError(404,
\JText::_('JGLOBAL_CATEGORY_NOT_FOUND'));
}
if ($parent == false)
{
return \JError::raiseError(404,
\JText::_('JGLOBAL_CATEGORY_NOT_FOUND'));
}
// Check whether category access level allows access.
$groups = $user->getAuthorisedViewLevels();
if (!in_array($category->access, $groups))
{
return \JError::raiseError(403,
\JText::_('JERROR_ALERTNOAUTHOR'));
}
$items = $this->get('Items');
$pagination = $this->get('Pagination');
// Check for errors.
if (count($errors = $this->get('Errors')))
{
\JError::raiseError(500, implode("\n", $errors));
return false;
}
// Setup the category parameters.
$cparams = $category->getParams();
$category->params = clone $params;
$category->params->merge($cparams);
$children = array($category->id => $children);
// Escape strings for HTML output
$this->pageclass_sfx =
htmlspecialchars($params->get('pageclass_sfx'));
if ($this->runPlugins)
{
\JPluginHelper::importPlugin('content');
foreach ($items as $itemElement)
{
$itemElement = (object) $itemElement;
$itemElement->event = new \stdClass;
// For some plugins.
!empty($itemElement->description) ? $itemElement->text =
$itemElement->description : $itemElement->text = null;
$dispatcher = \JEventDispatcher::getInstance();
$dispatcher->trigger('onContentPrepare',
array($this->extension . '.category', &$itemElement,
&$itemElement->params, 0));
$results = $dispatcher->trigger('onContentAfterTitle',
array($this->extension . '.category', &$itemElement,
&$itemElement->core_params, 0));
$itemElement->event->afterDisplayTitle =
trim(implode("\n", $results));
$results = $dispatcher->trigger('onContentBeforeDisplay',
array($this->extension . '.category', &$itemElement,
&$itemElement->core_params, 0));
$itemElement->event->beforeDisplayContent =
trim(implode("\n", $results));
$results = $dispatcher->trigger('onContentAfterDisplay',
array($this->extension . '.category', &$itemElement,
&$itemElement->core_params, 0));
$itemElement->event->afterDisplayContent =
trim(implode("\n", $results));
if ($itemElement->text)
{
$itemElement->description = $itemElement->text;
}
}
}
$maxLevel = $params->get('maxLevel', -1) < 0 ?
PHP_INT_MAX : $params->get('maxLevel', PHP_INT_MAX);
$this->maxLevel = &$maxLevel;
$this->state = &$state;
$this->items = &$items;
$this->category = &$category;
$this->children = &$children;
$this->params = &$params;
$this->parent = &$parent;
$this->pagination = &$pagination;
$this->user = &$user;
// Check for layout override only if this is not the active menu item
// If it is the active menu item, then the view and category id will
match
$active = $app->getMenu()->getActive();
if ($active
&& $active->component == $this->extension
&& isset($active->query['view'],
$active->query['id'])
&& $active->query['view'] == 'category'
&& $active->query['id'] ==
$this->category->id)
{
if (isset($active->query['layout']))
{
$this->setLayout($active->query['layout']);
}
}
elseif ($layout =
$category->params->get('category_layout'))
{
$this->setLayout($layout);
}
$this->category->tags = new \JHelperTags;
$this->category->tags->getItemTags($this->extension .
'.category', $this->category->id);
}
/**
* Execute and display a template script.
*
* @param string $tpl The name of the template file to parse;
automatically searches through the template paths.
*
* @return mixed A string if successful, otherwise an Error object.
*
* @since 3.2
*/
public function display($tpl = null)
{
$this->prepareDocument();
return parent::display($tpl);
}
/**
* Method to prepares the document
*
* @return void
*
* @since 3.2
*/
protected function prepareDocument()
{
$app = \JFactory::getApplication();
$menus = $app->getMenu();
$this->pathway = $app->getPathway();
$title = null;
// Because the application sets a default page title, we need to get it
from the menu item itself
$this->menu = $menus->getActive();
if ($this->menu)
{
$this->params->def('page_heading',
$this->params->get('page_title',
$this->menu->title));
}
else
{
$this->params->def('page_heading',
\JText::_($this->defaultPageTitle));
}
$title = $this->params->get('page_title', '');
if (empty($title))
{
$title = $app->get('sitename');
}
elseif ($app->get('sitename_pagetitles', 0) == 1)
{
$title = \JText::sprintf('JPAGETITLE',
$app->get('sitename'), $title);
}
elseif ($app->get('sitename_pagetitles', 0) == 2)
{
$title = \JText::sprintf('JPAGETITLE', $title,
$app->get('sitename'));
}
$this->document->setTitle($title);
if ($this->params->get('menu-meta_description'))
{
$this->document->setDescription($this->params->get('menu-meta_description'));
}
if ($this->params->get('menu-meta_keywords'))
{
$this->document->setMetadata('keywords',
$this->params->get('menu-meta_keywords'));
}
if ($this->params->get('robots'))
{
$this->document->setMetadata('robots',
$this->params->get('robots'));
}
}
/**
* Method to add an alternative feed link to a category layout.
*
* @return void
*
* @since 3.2
*/
protected function addFeed()
{
if ($this->params->get('show_feed_link', 1) == 1)
{
$link = '&format=feed&limitstart=';
$attribs = array('type' => 'application/rss+xml',
'title' => 'RSS 2.0');
$this->document->addHeadLink(\JRoute::_($link .
'&type=rss'), 'alternate', 'rel',
$attribs);
$attribs = array('type' =>
'application/atom+xml', 'title' => 'Atom
1.0');
$this->document->addHeadLink(\JRoute::_($link .
'&type=atom'), 'alternate', 'rel',
$attribs);
}
}
}