';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS');
@@ -474,7 +360,8 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
}
// Limiter la vue des tickets à ceux assignés à l'utilisateur
-print '
';
print '';
// End of page
diff --git a/htdocs/admin/ticket_public.php b/htdocs/admin/ticket_public.php
new file mode 100644
index 00000000000..939a357999b
--- /dev/null
+++ b/htdocs/admin/ticket_public.php
@@ -0,0 +1,453 @@
+
+ * Copyright (C) 2016 Christophe Battarel
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+/**
+ * \file admin/ticket_public.php
+ * \ingroup ticket
+ * \brief Page to public interface of module Ticket
+ */
+
+require '../main.inc.php';
+require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php";
+require_once DOL_DOCUMENT_ROOT."/ticket/class/ticket.class.php";
+require_once DOL_DOCUMENT_ROOT."/core/lib/ticket.lib.php";
+
+// Load translation files required by the page
+$langs->loadLangs(array("admin", "ticket"));
+
+// Access control
+if (!$user->admin) {
+ accessforbidden();
+}
+
+// Parameters
+$value = GETPOST('value', 'alpha');
+$action = GETPOST('action', 'alpha');
+$label = GETPOST('label', 'alpha');
+$scandir = GETPOST('scandir', 'alpha');
+$type = 'ticket';
+
+if ($action == 'setTICKET_ENABLE_PUBLIC_INTERFACE')
+{
+ if (GETPOST('value')) dolibarr_set_const($db, 'TICKET_ENABLE_PUBLIC_INTERFACE', 1, 'chaine', 0, '', $conf->entity);
+ else dolibarr_set_const($db, 'TICKET_ENABLE_PUBLIC_INTERFACE', 0, 'chaine', 0, '', $conf->entity);
+}
+
+if ($action == 'setvar') {
+ include_once DOL_DOCUMENT_ROOT . "/core/lib/files.lib.php";
+
+ $notification_email = GETPOST('TICKET_NOTIFICATION_EMAIL_FROM', 'alpha');
+ if (!empty($notification_email)) {
+ $res = dolibarr_set_const($db, 'TICKET_NOTIFICATION_EMAIL_FROM', $notification_email, 'chaine', 0, '', $conf->entity);
+ } else {
+ $res = dolibarr_set_const($db, 'TICKET_NOTIFICATION_EMAIL_FROM', '', 'chaine', 0, '', $conf->entity);
+ }
+ if (!$res > 0) {
+ $error++;
+ }
+
+ // altairis : differentiate notification email FROM and TO
+ $notification_email_to = GETPOST('TICKET_NOTIFICATION_EMAIL_TO', 'alpha');
+ if (!empty($notification_email_to)) {
+ $res = dolibarr_set_const($db, 'TICKET_NOTIFICATION_EMAIL_TO', $notification_email_to, 'chaine', 0, '', $conf->entity);
+ } else {
+ $res = dolibarr_set_const($db, 'TICKET_NOTIFICATION_EMAIL_TO', '', 'chaine', 0, '', $conf->entity);
+ }
+ if (!$res > 0) {
+ $error++;
+ }
+
+ $mail_new_ticket = GETPOST('TICKET_MESSAGE_MAIL_NEW', 'alpha');
+ if (!empty($mail_new_ticket)) {
+ $res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_NEW', $mail_new_ticket, 'chaine', 0, '', $conf->entity);
+ } else {
+ $res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_NEW', $langs->trans('TicketMessageMailNewText'), 'chaine', 0, '', $conf->entity);
+ }
+ if (!$res > 0) {
+ $error++;
+ }
+
+ $mail_intro = GETPOST('TICKET_MESSAGE_MAIL_INTRO', 'alpha');
+ if (!empty($mail_intro)) {
+ $res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_INTRO', $mail_intro, 'chaine', 0, '', $conf->entity);
+ } else {
+ $res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_INTRO', $langs->trans('TicketMessageMailIntroText'), 'chaine', 0, '', $conf->entity);
+ }
+ if (!$res > 0) {
+ $error++;
+ }
+
+ $mail_signature = GETPOST('TICKET_MESSAGE_MAIL_SIGNATURE', 'alpha');
+ if (!empty($mail_signature)) {
+ $res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_SIGNATURE', $mail_signature, 'chaine', 0, '', $conf->entity);
+ } else {
+ $res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_SIGNATURE', $langs->trans('TicketMessageMailSignatureText'), 'chaine', 0, '', $conf->entity);
+ }
+ if (!$res > 0) {
+ $error++;
+ }
+
+ $url_interface = GETPOST('TICKET_URL_PUBLIC_INTERFACE', 'alpha');
+ if (!empty($mail_signature)) {
+ $res = dolibarr_set_const($db, 'TICKET_URL_PUBLIC_INTERFACE', $url_interface, 'chaine', 0, '', $conf->entity);
+ } else {
+ $res = dolibarr_set_const($db, 'TICKET_URL_PUBLIC_INTERFACE', '', 'chaine', 0, '', $conf->entity);
+ }
+ if (!$res > 0) {
+ $error++;
+ }
+
+ $topic_interface = GETPOST('TICKET_PUBLIC_INTERFACE_TOPIC', 'alpha');
+ if (!empty($mail_signature)) {
+ $res = dolibarr_set_const($db, 'TICKET_PUBLIC_INTERFACE_TOPIC', $topic_interface, 'chaine', 0, '', $conf->entity);
+ } else {
+ $res = dolibarr_set_const($db, 'TICKET_PUBLIC_INTERFACE_TOPIC', '', 'chaine', 0, '', $conf->entity);
+ }
+ if (!$res > 0) {
+ $error++;
+ }
+
+ $text_home = GETPOST('TICKET_PUBLIC_TEXT_HOME', 'alpha');
+ if (!empty($mail_signature)) {
+ $res = dolibarr_set_const($db, 'TICKET_PUBLIC_TEXT_HOME', $text_home, 'chaine', 0, '', $conf->entity);
+ } else {
+ $res = dolibarr_set_const($db, 'TICKET_PUBLIC_TEXT_HOME', $langs->trans('TicketPublicInterfaceTextHome'), 'chaine', 0, '', $conf->entity);
+ }
+ if (!$res > 0) {
+ $error++;
+ }
+
+ $text_help = GETPOST('TICKET_PUBLIC_TEXT_HELP_MESSAGE', 'alpha');
+ if (!empty($text_help)) {
+ $res = dolibarr_set_const($db, 'TICKET_PUBLIC_TEXT_HELP_MESSAGE', $text_help, 'chaine', 0, '', $conf->entity);
+ } else {
+ $res = dolibarr_set_const($db, 'TICKET_PUBLIC_TEXT_HELP_MESSAGE', $langs->trans('TicketPublicPleaseBeAccuratelyDescribe'), 'chaine', 0, '', $conf->entity);
+ }
+ if (!$res > 0) {
+ $error++;
+ }
+}
+
+if ($action == 'setvarother') {
+ $param_enable_public_interface = GETPOST('TICKET_ENABLE_PUBLIC_INTERFACE', 'alpha');
+ $res = dolibarr_set_const($db, 'TICKET_ENABLE_PUBLIC_INTERFACE', $param_enable_public_interface, 'chaine', 0, '', $conf->entity);
+ if (!$res > 0) {
+ $error++;
+ }
+
+ $param_must_exists = GETPOST('TICKET_EMAIL_MUST_EXISTS', 'alpha');
+ $res = dolibarr_set_const($db, 'TICKET_EMAIL_MUST_EXISTS', $param_must_exists, 'chaine', 0, '', $conf->entity);
+ if (!$res > 0) {
+ $error++;
+ }
+
+ $param_disable_email = GETPOST('TICKET_DISABLE_CUSTOMER_MAILS', 'alpha');
+ $res = dolibarr_set_const($db, 'TICKET_DISABLE_CUSTOMER_MAILS', $param_disable_email, 'chaine', 0, '', $conf->entity);
+ if (!$res > 0) {
+ $error++;
+ }
+
+ if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
+ {
+ $param_show_module_logo = GETPOST('TICKET_SHOW_MODULE_LOGO', 'alpha');
+ $res = dolibarr_set_const($db, 'TICKET_SHOW_MODULE_LOGO', $param_show_module_logo, 'chaine', 0, '', $conf->entity);
+ if (!$res > 0) {
+ $error++;
+ }
+ }
+
+ if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
+ {
+ $param_notification_also_main_addressemail = GETPOST('TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS', 'alpha');
+ $res = dolibarr_set_const($db, 'TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS', $param_notification_also_main_addressemail, 'chaine', 0, '', $conf->entity);
+ if (!$res > 0) {
+ $error++;
+ }
+ }
+
+ $param_limit_view = GETPOST('TICKET_LIMIT_VIEW_ASSIGNED_ONLY', 'alpha');
+ $res = dolibarr_set_const($db, 'TICKET_LIMIT_VIEW_ASSIGNED_ONLY', $param_limit_view, 'chaine', 0, '', $conf->entity);
+ if (!$res > 0) {
+ $error++;
+ }
+
+ $param_auto_assign = GETPOST('TICKET_AUTO_ASSIGN_USER_CREATE', 'alpha');
+ $res = dolibarr_set_const($db, 'TICKET_AUTO_ASSIGN_USER_CREATE', $param_auto_assign, 'chaine', 0, '', $conf->entity);
+ if (!$res > 0) {
+ $error++;
+ }
+}
+
+
+
+/*
+ * View
+ */
+
+$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
+
+$form = new Form($db);
+
+$help_url = "FR:Module_Ticket";
+$page_name = "TicketSetup";
+llxHeader('', $langs->trans($page_name), $help_url);
+
+// Subheader
+$linkback = '' . $langs->trans("BackToModuleList") . '';
+
+print load_fiche_titre($langs->trans($page_name), $linkback, 'title_setup');
+
+// Configuration header
+$head = ticketAdminPrepareHead();
+
+dol_fiche_head($head, 'public', $langs->trans("Module56000Name"), -1, "ticket");
+
+print ''.$langs->trans("TicketPublicAccess") . ' : ' . dol_buildpath('/public/ticket/index.php', 2) . '';
+
+dol_fiche_end();
+
+
+$enabledisablehtml = $langs->trans("TicketsActivatePublicInterface").' ';
+if (empty($conf->global->TICKET_ENABLE_PUBLIC_INTERFACE))
+{
+ // Button off, click to enable
+ $enabledisablehtml.='';
+ $enabledisablehtml.=img_picto($langs->trans("Disabled"), 'switch_off');
+ $enabledisablehtml.='';
+}
+else
+{
+ // Button on, click to disable
+ $enabledisablehtml.='';
+ $enabledisablehtml.=img_picto($langs->trans("Activated"), 'switch_on');
+ $enabledisablehtml.='';
+}
+print $enabledisablehtml;
+print '';
+
+print '
';
+
+if (! empty($conf->global->TICKET_ENABLE_PUBLIC_INTERFACE))
+{
+
+ if (!$conf->use_javascript_ajax) {
+ print '';
+ }
+
+ // Admin var of module
+ print load_fiche_titre($langs->trans("TicketParamMail"));
+
+ print '
';
+
+ print '
';
+
+ print '';
+
+ print '';
+}
+
+// End of page
+llxFooter();
+$db->close();
diff --git a/htdocs/core/lib/ticket.lib.php b/htdocs/core/lib/ticket.lib.php
index 62615fb0ecd..406f53c4762 100644
--- a/htdocs/core/lib/ticket.lib.php
+++ b/htdocs/core/lib/ticket.lib.php
@@ -40,11 +40,17 @@ function ticketAdminPrepareHead()
$head[$h][1] = $langs->trans("TicketSettings");
$head[$h][2] = 'settings';
$h++;
+
$head[$h][0] = DOL_URL_ROOT.'/admin/ticket_extrafields.php';
$head[$h][1] = $langs->trans("ExtraFieldsTicket");
$head[$h][2] = 'attributes';
$h++;
+ $head[$h][0] = DOL_URL_ROOT.'/admin/ticket_public.php';
+ $head[$h][1] = $langs->trans("PublicInterface");
+ $head[$h][2] = 'public';
+ $h++;
+
// Show more tabs from modules
// Entries must be declared in modules descriptor with line
//$this->tabs = array(
diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php
index 6e3bf7464b5..193891d0b20 100644
--- a/htdocs/core/modules/DolibarrModules.class.php
+++ b/htdocs/core/modules/DolibarrModules.class.php
@@ -1156,7 +1156,8 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it
}
}
- if (! $dirfound) { dol_syslog("A module ask to load sql files into ".$reldir." but this directory was not found.", LOG_WARNING);
+ if (! $dirfound) {
+ dol_syslog("A module ask to load sql files into ".$reldir." but this directory was not found.", LOG_WARNING);
}
return $ok;
}
diff --git a/htdocs/core/modules/modTicket.class.php b/htdocs/core/modules/modTicket.class.php
index e6deef76144..0ca3b3c99be 100644
--- a/htdocs/core/modules/modTicket.class.php
+++ b/htdocs/core/modules/modTicket.class.php
@@ -103,9 +103,10 @@ class modTicket extends DolibarrModules
// List of particular constants to add when module is enabled
// (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive)
// Example:
- $this->const = array();
- $this->const[1] = array('TICKET_ENABLE_PUBLIC_INTERFACE', 'chaine', '1', 'Enable ticket public interface');
- $this->const[2] = array('TICKET_ADDON', 'chaine', 'mod_ticket_simple', 'Ticket ref module');
+ $this->const = array(
+ 1 => array('TICKET_ENABLE_PUBLIC_INTERFACE', 'chaine', '0', 'Enable ticket public interface', 0),
+ 2 => array('TICKET_ADDON', 'chaine', 'mod_ticket_simple', 'Ticket ref module', 0)
+ );
$this->tabs = array(
'thirdparty:+ticket:Tickets:@ticket:$user->rights->ticket->read:/ticket/list.php?socid=__ID__',
diff --git a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php
index c8a31a70e40..12baad3b1d5 100644
--- a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php
+++ b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php
@@ -187,7 +187,7 @@ class InterfaceTicketEmail extends DolibarrTriggers
// Send email to notification email
- if (empty($conf->global->TICKET_DISABLE_ALL_MAILS) && empty($object->context['disableticketemail']))
+ if (! empty($conf->global->TICKET_NOTIFICATION_EMAIL_TO) && empty($object->context['disableticketemail']))
{
$sendto = $conf->global->TICKET_NOTIFICATION_EMAIL_TO;
@@ -227,6 +227,8 @@ class InterfaceTicketEmail extends DolibarrTriggers
$message_admin = dol_nl2br($message_admin);
+ $trackid = 'tic'.$object->id;
+
if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) {
$old_MAIN_MAIL_AUTOCOPY_TO = $conf->global->MAIN_MAIL_AUTOCOPY_TO;
$conf->global->MAIN_MAIL_AUTOCOPY_TO = '';
@@ -246,7 +248,7 @@ class InterfaceTicketEmail extends DolibarrTriggers
// Send email to customer
- if (empty($conf->global->TICKET_DISABLE_ALL_MAILS) && empty($object->context['disableticketemail']) && $object->notify_tiers_at_create)
+ if (empty($conf->global->TICKET_DISABLE_CUSTOMER_MAILS) && empty($object->context['disableticketemail']) && $object->notify_tiers_at_create)
{
$sendto = '';
if (empty($user->socid) && empty($user->email)) {
@@ -301,12 +303,14 @@ class InterfaceTicketEmail extends DolibarrTriggers
$message_customer = dol_nl2br($message_customer);
+ $trackid = 'tic'.$object->id;
+
if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) {
$old_MAIN_MAIL_AUTOCOPY_TO = $conf->global->MAIN_MAIL_AUTOCOPY_TO;
$conf->global->MAIN_MAIL_AUTOCOPY_TO = '';
}
include_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
- $mailfile = new CMailFile($subject, $sendto, $from, $message_customer, $filepath, $mimetype, $filename, $sendtocc, '', $deliveryreceipt, -1);
+ $mailfile = new CMailFile($subject, $sendto, $from, $message_customer, $filepath, $mimetype, $filename, $sendtocc, '', $deliveryreceipt, -1, '', '', $trackid);
if ($mailfile->error) {
dol_syslog($mailfile->error, LOG_DEBUG);
} else {
@@ -317,6 +321,7 @@ class InterfaceTicketEmail extends DolibarrTriggers
}
}
}
+
$ok = 1;
break;
diff --git a/htdocs/langs/en_US/ticket.lang b/htdocs/langs/en_US/ticket.lang
index 6366e93e375..fcb76bd3007 100644
--- a/htdocs/langs/en_US/ticket.lang
+++ b/htdocs/langs/en_US/ticket.lang
@@ -87,14 +87,14 @@ TicketEmailNotificationFrom=Notification email from
TicketEmailNotificationFromHelp=Used into ticket message answer by example
TicketEmailNotificationTo=Notifications email to
TicketEmailNotificationToHelp=Send email notifications to this address.
-TicketNewEmailBodyLabel=Text message sent after creating a ticket (public interface)
+TicketNewEmailBodyLabel=Text message sent after creating a ticket
TicketNewEmailBodyHelp=The text specified here will be inserted into the email confirming the creation of a new ticket from the public interface. Information on the consultation of the ticket are automatically added.
TicketParamPublicInterface=Public interface setup
TicketsEmailMustExist=Require an existing email address to create a ticket
TicketsEmailMustExistHelp=In the public interface, the email address should already be filled in the database to create a new ticket.
PublicInterface=Public interface
-TicketUrlPublicInterfaceLabelAdmin=Public interface URL
-TicketUrlPublicInterfaceHelpAdmin=It is possible to define an alias to the web server and thus make available the public interface to another IP address.
+TicketUrlPublicInterfaceLabelAdmin=Alternative URL for public interface
+TicketUrlPublicInterfaceHelpAdmin=It is possible to define an alias to the web server and thus make available the public interface with another URL (the server must act as a proxy on this new URL)
TicketPublicInterfaceTextHomeLabelAdmin=Welcome text of the public interface
TicketPublicInterfaceTextHome=You can create a support ticket or view existing from its identifier tracking ticket.
TicketPublicInterfaceTextHomeHelpAdmin=The text defined here will appear on the home page of the public interface.
@@ -124,7 +124,7 @@ TicketsAutoAssignTicketHelp=When creating a ticket, the user can be automaticall
TicketNumberingModules=Tickets numbering module
TicketNotifyTiersAtCreation=Notify third party at creation
TicketGroup=Group
-
+TicketsDisableCustomerEmail=Alsways disable emails when a ticket is created from public interface
#
# Index & list page
#
@@ -267,7 +267,7 @@ ErrorEmailMustExistToCreateTicket=Error: email address not found in our database
TicketNewEmailSubjectAdmin=New ticket created
TicketNewEmailBodyAdmin=
Ticket has just been created with ID #%s, see information:
SeeThisTicketIntomanagementInterface=See ticket in management interface
-TicketPublicInterfaceForbidden=Access for this area: forbidden
+TicketPublicInterfaceForbidden=The public interface for the tickets was not enabled
# notifications
TicketNotificationEmailSubject=Ticket %s updated
diff --git a/htdocs/product/stock/class/mouvementstock.class.php b/htdocs/product/stock/class/mouvementstock.class.php
index 99008aa9277..bf267c9985e 100644
--- a/htdocs/product/stock/class/mouvementstock.class.php
+++ b/htdocs/product/stock/class/mouvementstock.class.php
@@ -88,9 +88,8 @@ class MouvementStock extends CommonObject
$this->db = $db;
}
-
- // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
- /**
+ // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
+ /**
* Add a movement of stock (in one direction only)
*
* @param User $user User object
@@ -114,8 +113,8 @@ class MouvementStock extends CommonObject
*/
public function _create($user, $fk_product, $entrepot_id, $qty, $type, $price = 0, $label = '', $inventorycode = '', $datem = '', $eatby = '', $sellby = '', $batch = '', $skip_batch = false, $id_product_batch = 0)
{
- // phpcs:enable
- global $conf, $langs;
+ // phpcs:disable
+ global $conf, $langs;
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
require_once DOL_DOCUMENT_ROOT.'/product/stock/class/productlot.class.php';
@@ -726,20 +725,26 @@ class MouvementStock extends CommonObject
/**
* Increase stock for product and subproducts
*
- * @param User $user Object user
- * @param int $fk_product Id product
- * @param int $entrepot_id Warehouse id
- * @param int $qty Quantity
- * @param int $price Price
- * @param string $label Label of stock movement
- * @param date $eatby eat-by date
- * @param date $sellby sell-by date
- * @param string $batch batch number
- * @return int <0 if KO, >0 if OK
+ * @param User $user Object user
+ * @param int $fk_product Id product
+ * @param int $entrepot_id Warehouse id
+ * @param int $qty Quantity
+ * @param int $price Price
+ * @param string $label Label of stock movement
+ * @param date $eatby eat-by date
+ * @param date $sellby sell-by date
+ * @param string $batch batch number
+ * @param string $datem Force date of movement
+ * @param int $id_product_batch Id product_batch
+ * @return int <0 if KO, >0 if OK
*/
- public function reception($user, $fk_product, $entrepot_id, $qty, $price = 0, $label = '', $eatby = '', $sellby = '', $batch = '')
+ public function reception($user, $fk_product, $entrepot_id, $qty, $price = 0, $label = '', $eatby = '', $sellby = '', $batch = '', $datem = '', $id_product_batch = 0)
{
- return $this->_create($user, $fk_product, $entrepot_id, $qty, 3, $price, $label, '', '', $eatby, $sellby, $batch);
+ global $conf;
+
+ $skip_batch = empty($conf->productbatch->enabled);
+
+ return $this->_create($user, $fk_product, $entrepot_id, $qty, 3, $price, $label, '', $datem, $eatby, $sellby, $batch, $skip_batch, $id_product_batch);
}
diff --git a/htdocs/public/ticket/index.php b/htdocs/public/ticket/index.php
index ca29f89d39e..5e241c4edfb 100644
--- a/htdocs/public/ticket/index.php
+++ b/htdocs/public/ticket/index.php
@@ -45,10 +45,11 @@ $langs->loadLangs(array('companies', 'other', 'ticket', 'errors'));
$track_id = GETPOST('track_id', 'alpha');
$action = GETPOST('action', 'alpha');
-/***************************************************
- * VIEW
- *
- ****************************************************/
+
+/*
+ * View
+ */
+
$form = new Form($db);
$formticket = new FormTicket($db);
@@ -62,9 +63,9 @@ if (!$conf->global->TICKET_ENABLE_PUBLIC_INTERFACE) {
print '