Nous pourrions ajouter un élément dans la variable global _SESSION. J'ai
essayé, mais mes compétences en AJAX sont trop limitées pour créer un
lien qui change la variable _SESSION en rechargeant l'onglet (cf. ligne
102 de NetworkPortEthernet.class.php avec le patch ci-joint).
Damien
On 17/07/2012 16:00, Julien Dombre wrote:
Salut,
je suis assez d'accord sur le fait que cette duplication d'information
n'est à l'origine que virtuelle afin d'avoir l'ensemble des
informations affichées.
En 0.84, vu l'ensemble des évolutions sur cette partie, je suis
d'accord sur le fait de ne plus dupliquer l'information. Le moteur de
recherche global répondant à la problématique de recherche et
l'affichage tel que tu le proposes répond à la problématique de vision.
Une option de config peut par contre être lourd à gérer sur ce genre
de chose. On pourrait imaginer un système ou par défaut on ne voit pas
les éléments liés mais via un lien ou un bouton les afficher.
Autre questionnement, si on supprime cette duplication d'information,
ne faudrait-il pas à la migration nettoyer la DB au passage ?
++
Julien
Le 17/07/2012 14:40, Damien Touraine a écrit :
Bonjour,
C'est un sujet connexe au problème soulevé par Xavier ("Comportement
de la gestion des prises réseaux").
Dans la version actuelle du trunk (0.84), nous ne propageons pas les
informations entre deux ports connectés : si on modifie la prise
réseau d'un PC, le port du switch en vis-à-vis n'est pas modifié.
Cela avait été désactivé pour facilité le débuggage des ports réseaux
en cours de refonte. Nous pouvons le rétablir. Mais à la réflexion,
cette duplication des informations peut être très lourde à gérer (cf.
cas soulevé par Xavier), surtout si on duplique également les
informations internet.
De plus, elle n'a pas forcément de sens. Par exemple, entre nos
bâtiments, les fibres passent par une armoire de brassage hors de
notre contrôle et les noms des connecteurs de fibres sont ceux
imposés par le fournisseur extérieur. Donc, deux ports de switchs
reliés entre eux par une telle fibre ont nécessairement des NetPoint
différents.
L'un des intérêts de cette duplication est de permettre une recherche
dans la base de données. L'utilisation du moteur de recherche
"global" introduit dans la 0.84 nous permettra de trouver l'une des
extrémité branchée à ce NetPoint. Il suffira de suivre le "fil" pour
retrouver l'autre bout.
Le second intérêt de cette duplication est de permettre une
visualisation directe de l'information lorsque l'on consulte la liste
des ports d'un équipement réseau ou autre (PC, téléphone ...).
Pour ce second cas, je propose le patch ci-joint qui vise à afficher,
pour un port Ethernet donné, les informations du port en vis-à-vis,
s'il est connecté.
Nous pourrions envisager une option de configuration pour
l'utilsateur afin de désactiver ce double affichage et alléger la
page de rendu des ports des switchs.
Damien
PS : désolé Xavier, mais je n'ai pas de réponse à te fournir pour ton
problème avec la 0.83.
_______________________________________________
Glpi-dev mailing list
[email protected]
https://mail.gna.org/listinfo/glpi-dev
_______________________________________________
Glpi-dev mailing list
[email protected]
https://mail.gna.org/listinfo/glpi-dev
Index: networkportethernet.class.php
===================================================================
--- networkportethernet.class.php (revision 18922)
+++ networkportethernet.class.php (working copy)
@@ -97,64 +97,109 @@
HTMLTable_SuperHeader $super,
$options=array()) {
- DeviceNetworkCard::getHTMLTableHeader('NetworkPortEthernet', $group, $super);
- $group->addHeader('MAC', __('MAC'), $super);
- $group->addHeader('speed', __('Ethernet port speed'), $super);
- $group->addHeader('type', __('Ethernet port type'), $super);
- NetworkPort_Vlan::getHTMLTableHeader('NetworkPort', $group, $super);
- Netpoint::getHTMLTableHeader('NetworkPortEthernet', $group, $super);
- $group->addHeader('Outlet', __('Network outlet'), $super);
- $header = $group->addHeader('Connected', __('Connected to'), $super);
+ $connect_to_link = __('Connected to')."<br>";
+ if (isset($_SESSION['glpi_ethernet_display_peer'])) {
+ $connect_to_link .= "<a href=''>".__('hide the opposite link')."</a>";
+ } else {
+ $connect_to_link .= "<a href=''>".__('show the opposite link')."</a>";
+ }
+ $header = $group->addHeader('Connected', $connect_to_link, $super);
+ DeviceNetworkCard::getHTMLTableHeader('NetworkPortEthernet', $group, $super, $header);
+ $group->addHeader('MAC', __('MAC'), $super, $header);
+ $group->addHeader('speed', __('Ethernet port speed'), $super, $header);
+ $group->addHeader('type', __('Ethernet port type'), $super, $header);
+ NetworkPort_Vlan::getHTMLTableHeader('NetworkPort', $group, $super, $header);
+ Netpoint::getHTMLTableHeader('NetworkPortEthernet', $group, $super, $header);
+ $group->addHeader('Outlet', __('Network outlet'), $super, $header);
+
return $header;
}
/**
- * @see inc/NetworkPortInstantiation::getInstantiationHTMLTable_()
- **/
- function getInstantiationHTMLTable_(NetworkPort $netport, CommonDBTM $item,
- HTMLTable_Row $row, $canedit, $options=array()) {
+ * Get HTMLTable row for a given ethernet network port and a given extremity
+ *
+ * @param $netport NetworkPort object
+ * @param $row HTMLTable_Row object
+ * @param $father HTMLTable_Cell object : the given extremity
+ * @param $canedit display the edition elements (ie : add, remove, ...)
+ * @param $options array of possible options:
+ * - 'dont_display' : array of the elements that must not be display
+ * - 'withtemplate' : integer withtemplate param
+ *
+ * @return the father cell for the Internet Informations ...
+ **/
+ private function getEthernetInstantiationHTMLTable_(NetworkPort $netport, HTMLTable_Row $row,
+ HTMLTable_Cell $father, $canedit,
+ $options=array()) {
- DeviceNetworkCard::getHTMLTableCellsForItem($row, $this, NULL, $options);
+ DeviceNetworkCard::getHTMLTableCellsForItem($row, $this, $father, $options);
- $row->addCell($row->getHeaderByName('Instantiation', 'MAC'), $netport->fields["mac"]);
+ $row->addCell($row->getHeaderByName('Instantiation', 'MAC'),
+ $netport->fields["mac"], $father);
if (!empty($this->fields['speed'])) {
- $row->addCell($row->getHeaderByName('Instantiation', 'speed'), $this->fields["speed"]);
+ $row->addCell($row->getHeaderByName('Instantiation', 'speed'),
+ $this->fields["speed"], $father);
}
if (!empty($this->fields['type'])) {
- $row->addCell($row->getHeaderByName('Instantiation', 'type'), $this->fields["type"]);
+ $row->addCell($row->getHeaderByName('Instantiation', 'type'),
+ $this->fields["type"], $father);
}
- NetworkPort_Vlan::getHTMLTableCellsForItem($row, $netport, NULL, $options);
+ NetworkPort_Vlan::getHTMLTableCellsForItem($row, $netport, $father, $options);
- Netpoint::getHTMLTableCellsForItem($row, $this, NULL, $options);
+ Netpoint::getHTMLTableCellsForItem($row, $this, $father, $options);
+ }
+
+ /**
+ * @see inc/NetworkPortInstantiation::getInstantiationHTMLTable_()
+ **/
+ function getInstantiationHTMLTable_(NetworkPort $netport, CommonDBTM $item,
+ HTMLTable_Row $row, $canedit, $options=array()) {
+
$connect_cell_value = array(array('function' => array(__CLASS__, 'showConnection'),
'parameters' => array(clone $netport)));
$oppositePort = new NetworkPort();
if ($oppositePort->getFromDB($netport->getContact($netport->getID()))) {
- if ((NetworkName::countForItem($netport) > 0)
- && (NetworkName::countForItem($netport) > 0)) {
+
+ if (isset($_SESSION['glpi_ethernet_display_peer'])) {
+
$cell = $row->addCell($row->getHeaderByName('Instantiation', 'Connected'),
__('Local network port'));
+
$opposite_cell = $row->addCell($row->getHeaderByName('Instantiation', 'Connected'),
$connect_cell_value);
+
+ $oppositeEthernetPort = $oppositePort->getInstantiation();
+ if ($oppositeEthernetPort !== false) {
+ $oppositeEthernetPort->getEthernetInstantiationHTMLTable_($oppositePort, $row,
+ $opposite_cell, $canedit,
+ $options);
+ }
+
NetworkName::getHTMLTableCellsForItem($row, $oppositePort, $opposite_cell, $options);
+
} else {
+
$cell = $row->addCell($row->getHeaderByName('Instantiation', 'Connected'),
$connect_cell_value);
- NetworkName::getHTMLTableCellsForItem($row, $oppositePort, $cell, $options);
- }
+
+ }
+
} else {
$cell = $row->addCell($row->getHeaderByName('Instantiation', 'Connected'),
$connect_cell_value);
}
+ $this->getEthernetInstantiationHTMLTable_($netport, $row, $cell,
+ $canedit, $options);
+
return $cell;
}
_______________________________________________
Glpi-dev mailing list
[email protected]
https://mail.gna.org/listinfo/glpi-dev