...
 
Commits (7)
# CHANGELOG HOSTING FOR <a href="https://www.dolibarr.org">DOLIBARR ERP CRM</a>
# CHANGELOG HOSTING FOR <a href="https://www.dolibarr.org">DOLIBARR ERP CRM</a
# 2.0.14
- Update tab definition into module descriptor
- FIX: avoid API errors with function declaration
- NEW: a host can be linked to other object
- NEW: Change order for hosts list : show the latest first
# 2.0.13
FIX : avoid errors for category list
......
<?php
/**
* Copyright (C) - 2019 Jean-François Ferry <hello@librethic.io>
*
* 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 2 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/**
* \file hosting/class/actions_hosting.class.php
* \ingroup hosting
* \brief File Class hosting
*/
require_once "host.class.php";
require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php';
require_once DOL_DOCUMENT_ROOT . '/core/class/extrafields.class.php';
require_once DOL_DOCUMENT_ROOT . '/contrat/class/contrat.class.php';
require_once DOL_DOCUMENT_ROOT . '/fichinter/class/fichinter.class.php';
/**
* \class ActionsHosting
* \brief Class Actions of the module hosting
*/
class ActionsHosting
{
public $db;
public $mesg;
public $error;
public $errors = array();
//! Numero de l'erreur
public $errno = 0;
public $template_dir;
public $template;
/**
* Constructor
*
* @param DoliDB $db Database handler
*/
public function __construct($db)
{
$this->db = $db;
}
/**
* Overloading the addMoreMassActions function : replacing the parent's function with the one below
*
* @param array $parameters Hook metadatas (context, etc...)
* @param CommonObject $object The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...)
* @param string $action Current action (if set). Generally create or edit or null
* @param HookManager $hookmanager Hook manager propagated to allow calling another hook
*
* @return int < 0 on error, 0 on success, 1 to replace standard code
*/
public function showLinkToObjectBlock($parameters, &$object, &$action, $hookmanager)
{
global $conf, $user, $langs;
$error = 0; // Error counter
if (in_array($parameters['currentcontext'], array('commonobject'))) { // do something only for the context 'somecontext1' or 'somecontext2'
if (is_object($object->thirdparty) && ! empty($object->thirdparty->id) && $object->thirdparty->id > 0) {
$listofidcompanytoscan=$object->thirdparty->id;
if (($object->thirdparty->parent > 0) && ! empty($conf->global->THIRDPARTY_INCLUDE_PARENT_IN_LINKTO)) {
$listofidcompanytoscan.=','.$object->thirdparty->parent;
}
if (($object->fk_project > 0) && ! empty($conf->global->THIRDPARTY_INCLUDE_PROJECT_THIRDPARY_IN_LINKTO)) {
include_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
$tmpproject=new Project($this->db);
$tmpproject->fetch($object->fk_project);
if ($tmpproject->socid > 0 && ($tmpproject->socid != $object->thirdparty->id)) {
$listofidcompanytoscan.=','.$tmpproject->socid;
}
unset($tmpproject);
}
$this->results=array(
'hosting_host'=>array('enabled'=>$conf->hosting->enabled, 'perms'=>1, 'label'=>'LinkToHost', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref, t.label FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."host as t WHERE t.fk_soc = s.rowid AND t.fk_soc IN (".$listofidcompanytoscan.') AND t.entity IN ('.getEntity('hosting').')'),
);
}
}
if (! $error) {
return 0; // or return 1 to replace standard code
} else {
$this->errors[] = 'Error message';
return -1;
}
}
}
......@@ -311,7 +311,7 @@ class Hosts extends DolibarrApi
* @todo use an array for properties to clean
*
*/
private function _cleanObjectDatas($object)
public function _cleanObjectDatas($object)
{
// Remove $db object property for object
......
......@@ -55,7 +55,6 @@
"test_functional" : "phpunit test/functional",
"release" : [
"@check",
"@test",
"@composer update --no-dev",
"@build",
"@composer update"
......@@ -73,4 +72,4 @@
]
},
"minimum-stability" : "dev"
}
\ No newline at end of file
}
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -78,7 +78,7 @@ class modHosting extends DolibarrModules
$this->editor_url = "https://librethic.io";
// Possible values for version are: 'development', 'experimental', 'dolibarr' or version
$this->version = '2.0.13+9';
$this->version = '2.0.14+9';
// Key used in llx_const table to save module status enabled/disabled (where MYMODULE is value of property name of module in uppercase)
$this->const_name = 'MAIN_MODULE_' . strtoupper($this->name);
......@@ -107,7 +107,9 @@ class modHosting extends DolibarrModules
// 'workflow' => array('WORKFLOW_MODULE1_YOURACTIONTYPE_MODULE2'=>array('enabled'=>'! empty($conf->module1->enabled) && ! empty($conf->module2->enabled)', 'picto'=>'yourpicto@mymodule')) // Set here all workflow context managed by module
// );
$this->module_parts = array(
'models' => 1
'models' => 1,
'hooks' => array('commonobject'),
'tpl' => 0
);
// Data directories to create when module is enabled.
......@@ -137,20 +139,9 @@ class modHosting extends DolibarrModules
// 1=>array('MODULE_MY_NEW_CONST2','chaine','myvalue','This is another constant to add',0) );
//$this->triggers = 1;
// Onglets
$this->tabs = array(
'thirdparty:+tabHosting:Hosting:hosting@hosting:$user->rights->hosting->read:/hosting/host_list.php?socid=__ID__',
//'intervention:Hosting:@hosting:/hosting/hosting.php?socid=__ID__'
);
// where entity can be
// 'thirdparty' to add a tab in third party view
// 'intervention' to add a tab in intervention view
// 'supplier_order' to add a tab in supplier order view
// 'supplier_invoice' to add a tab in supplier invoice view
// 'invoice' to add a tab in customer invoice view
// 'order' to add a tab in customer order view
// 'product' to add a tab in product view
// 'propal' to add a tab in propal view
// 'member' to add a tab in fundation member view
$this->tabs = array();
$this->tabs[] = array('data' => 'thirdparty:+tabHosting:Hosting:hosting@hosting:$user->rights->hosting->read:/hosting/host_list.php?socid=__ID__');
// Dictionnaries
if (! isset($conf->hosting) || ! isset($conf->hosting->enabled)) {
......
<?php
/**
*
* Block template for linked hosts block
*
* Copyright (C) 2010-2012 Regis Houssin <regis@dolibarr.fr>
/* Copyright (C) 2010-2012 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2013 Jean-François FERRY <hello@librethic.io>
*
* 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
......@@ -19,49 +16,75 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* @package hosting
*
*/
// Protection to avoid direct call of template
if (empty($conf) || ! is_object($conf))
{
print "Error, template page can't be called as URL";
exit;
}
?>
<!-- BEGIN PHP TEMPLATE -->
<?php
/**
* Display block
*/
global $user;
global $noMoreLinkedObjectBlockAfter;
$langs = $GLOBALS['langs'];
$langs->load('domain@domain');
$linkedObjectBlock = $GLOBALS['linkedObjectBlock'];
echo '<br />';
print_titre($langs->trans('RelatedHosts'));
$langs->load('hosting@hosting');
//$linkedObjectBlock = $GLOBALS['linkedObjectBlock'];
$total=0; $ilink=0;
foreach($linkedObjectBlock as $key => $objectlink)
{
$ilink++;
$trclass='oddeven';
if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total';
?>
<table class="noborder centpercent">
<tr class="liste_titre">
<td><?php echo $langs->trans("Host"); ?></td>
<td align="center"><?php echo $langs->trans("DateCreation"); ?></td>
<td align="center"><?php echo $langs->trans("Customer"); ?></td>
</tr>
<tr class="<?php echo $trclass; ?>" >
<td class="linkedcol-element" ><?php echo $langs->trans("Host"); ?>
<?php if(!empty($showImportButton) && $conf->global->MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES) print '<a class="objectlinked_importbtn" href="'.$objectlink->getNomUrl(0,'',0,1).'&amp;action=selectlines" data-element="'.$objectlink->element.'" data-id="'.$objectlink->id.'" > <i class="fa fa-indent"></i> </a'; ?>
</td>
<td class="linkedcol-name" ><?php echo $objectlink->getNomUrl(1, '', 0, '', -1, 1); ?></td>
<td class="linkedcol-ref" align="center"><?php echo $objectlink->ref_client; ?></td>
<td class="linkedcol-date" align="center"><?php echo dol_print_date($objectlink->date_creation,'day'); ?></td>
<td class="linkedcol-amount" align="right"><?php
if ($user->rights->commande->lire) {
$total = $total + $objectlink->total_ht;
echo price($objectlink->total_ht);
} ?></td>
<td class="linkedcol-statut" align="right"><?php echo $objectlink->getLibStatut(3); ?></td>
<td class="linkedcol-action" align="right">
<?php
// For now, shipments must stay linked to order, so link is not deletable
if($object->element != 'shipping') {
?>
<a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_picto($langs->transnoentitiesnoconv("RemoveLink"), 'unlink'); ?></a>
<?php
}
?>
</td>
</tr>
<?php
$var = true;
foreach ($linkedObjectBlock as $object) {
$var = !$var;
?>
<tr <?php echo $bc[$var]; ?>>
<td>
<a href="<?php echo dol_buildpath("/hosting/host_card.php", 1) . '?id=' . $object->id; ?>">
<?php echo img_object($langs->trans("ShowHost"), "host@hosting") . ' ' . $object->ref . (!empty($object->label) ? ' ' . $object->label : ''); ?>
</a>
</td>
<td align="center"><?php echo dol_print_date($object->date_creation, 'day'); ?></td>
<?php
$object->socid = $object->fk_soc;
$object->fetch_thirdparty();
}
if (count($linkedObjectBlock) > 1)
{
?>
<td align="center"><?php echo $object->thirdparty->getNomUrl(1); ?></td>
</tr>
<?php }
<tr class="liste_total <?php echo (empty($noMoreLinkedObjectBlockAfter)?'liste_sub_total':''); ?>">
<td><?php echo $langs->trans("Total"); ?></td>
<td></td>
<td align="center"></td>
<td align="center"></td>
<td align="right"><?php echo price($total); ?></td>
<td align="right"></td>
<td align="right"></td>
</tr>
<?php
}
?>
</table>
<!-- END PHP TEMPLATE -->
<!-- END PHP TEMPLATE -->
\ No newline at end of file
<?php
/* Copyright (C) 2007-2017 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) ---Put here your own copyright and developer email---
* Copyright (C) 2019 Librethic <hello@librethic.io>
*
* 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
......@@ -119,7 +119,7 @@ if (! $sortfield) {
$sortfield="t.".key($object->fields); // Set here default search field. By default 1st field in definition.
}
if (! $sortorder) {
$sortorder="ASC";
$sortorder="DESC";
}
// Protection if external user
......
......@@ -65,5 +65,6 @@ SelectHost=Select host
LinkedHost=Linked host
NoHostLinked=No host linked
LinkToExistingHost=Link to an existing host
LinkToHost=Link to host
#Export
HostId=Host ID