Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login
    1. Home
    2. StefanP74
    3. Best
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 117
    • Posts 296
    • Groups 0

    Posts

    Recent Best Controversial
    • eMail-Benachrichtigung: Von ASCII Tabelle zu HTML-Tabelle

      Servus,

      i-doit V34

      ich habe mir gedacht, baue ich doch heute die eMail-Notification so um, dass ein HTML-eMail samt Tabelle generiert wird, anstatt einem Text-Mail mit der ASCII-Tabelle.
      Warum? Verschobener Text in Tabelle.

      Macht aus dem hier:
      jo1.PNG

      das da:
      jo2.PNG

      Datei:
      /var/www/html/src/classes/notification/isys_notification.class.php

      Zeile 1036:
      Alt:
      $l_mailer->set_content_type(isys_library_mail::C__CONTENT_TYPE__PLAIN);
      Neu:
      $l_mailer->set_content_type(isys_library_mail::C__CONTENT_TYPE__HTML);

      Alt ab Zeile 1151:

           /**
           * Builds a simple plaintext table with header. Columns are left-aligned.
           *
           * @param array $p_entities Entities
           *
           * @return string
           *
           * @todo This is not the right place. Move it to MVC view or something.
           */
          protected function build_plain_table($p_entities)
          {
              assert(is_array($p_entities));
      
              $l_table = '';
              $l_headers = [];
              $l_layouted_headers = [];
      
              if (count($p_entities) === 0) {
                  return $l_table;
              }
      
              // Layout:
      
              $l_horizontal_line = '-';
              $l_horizontal_line_header = '=';
              $l_vertical_line = '|';
              $l_edge = '+';
      
              // Analyze entities:
              $l_column_widths = [];
              $l_count = 0;
      
              // Iterate through each entity:
              foreach ($p_entities as $l_entity) {
                  // Also analyze header:
                  if ($l_count === 0) {
                      $l_count++;
      
                      $l_headers = array_keys($l_entity);
      
                      foreach ($l_headers as $l_header) {
                          $l_layouted_headers[$l_header] = $this->emphasize(self::_l($l_header));
                      }
      
                      foreach ($l_headers as $l_header) {
                          $l_column_widths[$l_header] = strlen($l_layouted_headers[$l_header]);
                      }
                  }
      
                  // Analyse values:
                  foreach ($l_entity as $l_key => $l_value) {
                      $l_value_length = strlen($l_value);
                      if ($l_value_length > $l_column_widths[$l_key]) {
                          $l_column_widths[$l_key] = $l_value_length;
                      }
                  }
              }
      
              $l_horizonatal_header_line_parts = [];
              $l_horizonatal_line_parts = [];
              foreach ($l_column_widths as $l_column_width) {
                  $l_horizonatal_header_line_parts[] = $l_horizontal_line_header . str_pad('', $l_column_width, $l_horizontal_line_header) . $l_horizontal_line_header;
                  $l_horizonatal_line_parts[] = $l_horizontal_line . str_pad('', $l_column_width, $l_horizontal_line) . $l_horizontal_line;
              }
              $l_complete_horizontal_header_line = $l_edge . implode($l_edge, $l_horizonatal_header_line_parts) . $l_edge;
              $l_complete_horizontal_line = $l_edge . implode($l_edge, $l_horizonatal_line_parts) . $l_edge;
      
              // Prepend header:
      
              $l_padded_headers = array_map([
                  $this,
                  'table_header'
              ], $l_layouted_headers, $l_column_widths);
              $l_table .= $l_complete_horizontal_header_line . "\n" . $l_vertical_line . ' ' . implode(' ' . $l_vertical_line . ' ', $l_padded_headers) . ' ' . $l_vertical_line .
                  "\n" . $l_complete_horizontal_header_line . "\n";
      
              // Iterate through each entity:
              foreach ($p_entities as $l_entity) {
                  $l_table .= $l_vertical_line;
                  foreach ($l_entity as $l_key => $l_value) {
                      $l_table .= ' ' . str_pad($l_value, $l_column_widths[$l_key]) . ' ' . $l_vertical_line;
                  }
      
                  $l_table .= "\n" . $l_complete_horizontal_line . "\n";
              }
      
              $l_table = "<pre style='font-family: Courier, monospace;'>" . htmlentities($l_table) . "</pre>";
      		
      		return $l_table;
          }
      

      Neu ab Zeile 1151:

          /**
           * Builds a simple plaintext table with header. Columns are left-aligned.
           *
           * @param array $p_entities Entities
           *
           * @return string
           *
           * @todo This is not the right place. Move it to MVC view or something.
           */
      	protected function build_plain_table($p_entities)
      	{
      		assert(is_array($p_entities));
      
      		if (count($p_entities) === 0) {
      			return '';
      		}
      
      		// Tabellen-Header bestimmen:
      		$l_headers = array_keys($p_entities[0]);
      
      		// Tabelle als HTML aufbauen:
      		$l_table = '<table style="border-collapse: collapse; font-family: Courier, monospace; width: 100%;">';
      
      		// Tabellenkopf:
      		$l_table .= '<tr>';
      		foreach ($l_headers as $l_header) {
      			$l_table .= '<th style="border: 1px solid black; padding: 5px; text-align: left; background-color: #f0f0f0;">' 
      					 . htmlentities(self::_l($l_header)) 
      					 . '</th>';
      		}
      		$l_table .= '</tr>';
      
      		// Tabellenzeilen:
      		foreach ($p_entities as $l_entity) {
      			$l_table .= '<tr>';
      			foreach ($l_entity as $l_value) {
      				$l_table .= '<td style="border: 1px solid black; padding: 5px; white-space: nowrap;">' 
      						 . htmlentities($l_value) 
      						 . '</td>';
      			}
      			$l_table .= '</tr>';
      		}
      
      		$l_table .= '</table>';
      
      		return $l_table;
      	}
      

      Vielleicht kann man das gleich in eine nächste Version einbauen?
      PLAIN oder HTML ... wenn das wichtig ist zu entscheiden, dann wäre dies über die Verwaltung / Einstellungen interessant ... frage mich nur wofür?

      LG Stefan

      posted in Entwicklung
      StefanP74S
      StefanP74
    • RE: Community help really needed

      Hello,

      everytime i build a documentation in i-doit i go on with the logical steps as in real live when i start to create new it-infrastructure. But that's just my way to start documentation ... like "go with the flow".

      First at all: Coffee, cookies and brainstorming what kind of documentation, what granulation, which goal should be achieved?
      That's soooo important to know.

      Create ...

      1. Locations, Buildings, ...
      2. Floors (Level1, Level2, ...), Rooms
      3. LAN-Ports in Rooms
      4. LAN-Racks, Server-Racks, Patchfields, Power, ...
      5. LAN-Equipment (UPS, Switches, Router, ...) **
      6. Server, Storages, build Cluster ... (and connect them to xxx) **
      7. Clients like PCs, NoteBooks, Smartphones, ... (and connect them to xxx) **
      8. Printer, Scanner, conference-sysstems, .... (and connect them to xxx) **
      9. User
      10. Software **
      11. Services, contracts, licences, contacts, ...
      12. Other equipment like user defined things or non-IT things
      13. uuh did i documentated the documentation-steps in wiki?
      14. starting finework like user roles, add more and more contacts and manuals for trouble-shooting-situations, ...

      From point 8 on ... it's jumping around.
      Between every step i look back and check out: am i on the right way? Is it important? Good to know or involves it a lot of work and nothing else?

      ** All components with an ip-address are automatically created by discovery-tools like JDisc (Clients, Server, Switches, ...).

      Greets Stefan

      posted in General
      StefanP74S
      StefanP74
    • RE: Richtig Segmentieren

      Hallo,

      oh Mann, ich habe den Speicher-Button bei den Slots nicht gesehen, habe immer den ganz oben verwendet. 🤦
      Ja, die Slotzuweisung klappt damit 😬

      Ich danke euch, die Schrank-Doku/Visualisierung ist schon etwas feines.
      Freue mich schon auf die nächste/übernächste Version.

      LG
      Stefan

      posted in Betrieb
      StefanP74S
      StefanP74
    • This CKEditor 4.22.1 version is not secure

      Aus dem Urlaub zurück und habe diese Meldung im Editor:

      This CKEditor 4.22.1 version is not secure. Consider upgrading to the latest one, 4.24.0-lts.
      Ich kann die Meldung hin und wieder nicht mal wegklicken - bissal übertrieben würd ich sagen.

      i-doit_20240701_001.JPG

      Gibt es hierfür eine Vorgehensweise von i-doit für das Update oder kommt demnächst was als i-doit Paket?
      Ich verwende die v31 pro

      Danke

      LG Stefan

      posted in Betrieb
      StefanP74S
      StefanP74
    • RE: The empty inactive window Investment costs

      Hello,

      check out Administration -> User settings -> Data format -> Monetary format

      Greez Stefan

      posted in General
      StefanP74S
      StefanP74
    • RE: [Solved] Noob Frage: Stockwerke in Gebäuden

      @windoze-admin Servus,
      ich habe mir dazu einen Objekttyp Etage angelegt und entsprechend mit Daten gefüttert. ( UG, EG, OG1, OG2, ...)
      Dies ist über die Verwaltung / CMDB / Einstellungen / Objekttyp-Konfiguration / Infrastruktur möglich.
      Einen neuen Objekttyp names Etage anlegen und bei Standort "Ja" hinterlegen. Als Kategorie noch Räumlich zugeordnete Objekte sowie Standort hinzufügen.

      Nun kannst du Etagen eintragen und beim Standort zuordnen.

      LG Stefan

      posted in Allgemein
      StefanP74S
      StefanP74
    • RE: Aktuell angemeldete Benutzer anzeigen

      Hallo @ollis,

      das Dashboard editieren, das Widget "Eingeloggte Benutzer" hinzufügen.
      Das sollte tun.

      LG PS

      posted in Betrieb
      StefanP74S
      StefanP74
    • RE: Entfernen von unbenötigten Rollen bei DropDown-Feldern (Contact assignment)

      @KI3M
      Hallo,
      ja, Dialog-Admin hört sich gut an ... hmmmm ich hab die 28 Pro ... da wird es wohl einige Unterschiede zur i-doit Open geben.
      Sorry, da bin ich wohl der Falsche 😉

      LG

      posted in Allgemein
      StefanP74S
      StefanP74
    • RE: Attribute verstecken

      Update:
      Naja, steht auch so in der Knowledgebase:
      Wenn ein Attribut ausgeblendet ist, wird es in der Kategorie für alle Objekte (aller Objekttypen) nicht mehr angezeigt. Außerdem wird die Option zum ausblenden auf der Übersichtsseite automatisch deaktiviert.

      Ich dachte man könnte es pro Kategorie ausblenden/einblenden.
      Das wäre doch was für eine Zukunftsversion.

      LG Stefan

      posted in Betrieb
      StefanP74S
      StefanP74
    • RE: Entfernen von unbenötigten Rollen bei DropDown-Feldern (Contact assignment)

      @KI3M
      Dies kannst du über Verwaltung / Vordefinierte Inhalte / Dialog-Admin / Kontaktzuweisung / Rolle erledigen, insofern die Einträge, die du archivieren/löschen möchtest, löschbar sind.
      Archivieren geht auch bei einer Rolle, die mit Löschbar "Nein" definiert ist - soweit ich das eben getestet habe.
      Gelöscht habe ich noch nie eine.

      LG Stefan

      posted in Allgemein
      StefanP74S
      StefanP74
    • RE: Bericht mit Link zum Objekt

      Ich habe mir nun so geholfen, falls es noch jemand benötigt:

      • In den Report wird die Objekt-ID mit aufgenommen.
      • Export als CSV.
      • Rechts neben der Objekt-ID-Spalte eine neue Spalte nutzen, welche die URL enthalten soll mit dem Inhalt:

      =HYPERLINK("https://name-der-domain/index.php?objID="&ZS(-1))

      Somit ist der Link klickbar und passt.

      posted in Betrieb
      StefanP74S
      StefanP74
    • RE: Kompletes "Haus" - mit Inhalt - löschen

      Servus,

      mach dir einen Report, der alle gewünschten Objekte beinhaltet.
      Am Besten mit der Bedingung Standort / Standort-Pfad (roh) .... LIKE %...% und den root-Standort, der archiviert werden soll.
      Den Report nochmals prüfen, ob es so passt.
      Dann über die Massenänderung den Report auswählen, als Aktion "Archivieren" hinterlegen und schwupps, sind alle gewählten archiviert.

      LG Stefan

      posted in Allgemein
      StefanP74S
      StefanP74
    • RE: Richtig Segmentieren

      Nachtrag:

      Ich habe mich eben auf der Demo-Seite herumgeschlagen.
      Dabei kopierte ich eine Funktionierende Segmentierung ohne Standort.
      Änderte den Standort anschließend und siehe da, es funktioniert auch nicht.

      Vorderseite auf HE47 alte Segmentierung - Segmentierung wird angezeigt
      Rückseite HE47 neue Segmentierung - Segmentierung wird nicht angezeigt

      idoit_seg_demo.JPG

      Positioniere ich es hingegen auf der Vorderseite (HE45), klappt es.
      idoit_seg_demo2.JPG

      Ich schreibe es dem Support, sieht nach einem Bug aus.

      posted in Betrieb
      StefanP74S
      StefanP74
    • RE: Eine Frage des SLAs

      Jo, mit i-doit funktioniert das natürlich 😳

      Zumindest konnte ich den Arbeitsplatz, bezüglich der Zuordnung der Geräte und User als oberste Instanz bewahren und den SLA dem Arbeitsplatz umhängen. Die dem Arbeitsplatz zugeordneten Geräte zeigen mir via benutzerdefinierter Kategorie den dem Arbeitsplatz zugeordneten SLA an.

      Wie habe ich das Umgesetzt:

      • Service anlegen: Level 1, Level 2, Level 3
      • Report anlegen:
        Gewählte Attribute: Service (Servicezuweisung) --> Bezeichnung (Allgemein)
        Bedingungen: Allgemein / Objekttyp = Arbeitsplatz
        UND
        Servicezuweisung / Service --> Verknüpftes Attribut --> Allgemein / Bezeichnung LIKE %...% Level
        UND
        Zugewiesene Endgeräte / Objekt --> Feldplatzhalter --> Objekt ID
      • Benutzerdefinierte Kategorie anlegen: SLA-Zuordnung
        Multi-Value: Nein
        Objekttypen: Client, Monitor, Drucker, .... (wo man die Zuordnung sehen will)
        Feld hinzufügen:
        Typ: Report
        Feldbezeichnung: ReportSLA
        Zusatz: ID des anzuzeigenden Reports

      Dank Verwaltung / Datenansicht / Kategorieordner, kann diese Kategorie ganz oben angezeigt werden.

      Damit die Kategorie in der Objekt-Übersicht ebenfalls ganz oben angezeigt wird, habe ich dies in der Objekttypen-Konfig entsprechend angepasst ... doch leider, sticht mir da etwas ins Auge:
      Unterhalb der benutzerdefinierten Kategorie, dem angezeigten Report, ist ein sehr großer Leerraum. Das scheint mir fix zu sein. oder?
      Das kann ich leider so nicht stehen lassen, also musste ich bis zur Klärung die Kategorie wieder aus der Übersicht entfernen.

      idoit-leerraum01.JPG

      Damit muss ich mir keine Gedanken mehr machen, welcher SLA dem Client etc. umgehängt werden muss (zB. bei Tausch), da diese Information bereits der zugeordnete Arbeitsplatz trägt.

      LG Stefan

      posted in Allgemein
      StefanP74S
      StefanP74
    • Dokumente Addon und Bilder

      Hallo und Mahlzeit,

      ich habe bei einem Notfallplan einige Bilder im Text positioniert.

      Wie habe ich das gemacht?

      1. Im Objekt eines Notfallplans über die Kategorie Bilder, ein Bild hochgeladen
      2. Den Bildlink kopiert
      3. Im Beschreibungsfeld des Notfallplans die Bilder an gewisser Stelle mittels der Funktion Bild hinterlegt (url eingefügt in Bild-Eigenschaften)

      Das klappt prima.

      Leider werden mir diese Bilder, wenn ich ein Dokument über das Dokumente-Addon erstelle im PDF, nicht angezeigt, somit fehlen wichtige Informationen.
      Es bringt mir nichts, Bilder an anderer Stelle, zB. gesammelt am Ende des Texts usw. einzufügen..

      Gibt's dazu eine Lösung?

      LG Stefan

      posted in Betrieb
      StefanP74S
      StefanP74
    • RE: Lizenzen für Add-On "Documents" und ISMS"?

      @kholzenhauer

      Dann würde ich ein Support-Ticket aufmachen, vielleicht hängt ja etwas schief.

      LG Stefan

      posted in Allgemein
      StefanP74S
      StefanP74
    • RE: Switch Verkabelungspfad als Tabelle

      Hallo,

      ja, die Möglichkeit habe ich mir angesehen ... doch komme ich damit nicht weiter.
      Das PDF hat eine eigenwillige Sortierung der Anschlüsse und ist anhand der Formatierung nicht das, wonach ich suche.
      Die grafische Ausgabe zB. in ein JPG sieht zwar recht gut aus, allerdings kann man damit recht wenig machen.
      Ein CSV wäre deutlich besser.
      Es sind ja doch ~220 Ports pro Stack die überprüft werden sollen, da wäre ein Export des Verkabelungspfades nach Excel eine große Erleichterung.

      LG
      Stefan

      posted in Betrieb
      StefanP74S
      StefanP74
    • Wandmontagen abbilden

      Hallo,

      ich bin davor eine Doku vorzunehmen, doch hierbei gibt es auch jede Menge an Geräten, die direkt an Wänden montiert sind, statt in einem Schrank.
      Mein Gedankengang wäre nun dieser, eine neue Kategorie anzulegen, mit fiktiven Schränken, um die Wandmontagen abzubilden.
      Diese stelle ich dann mittels Raumplan in die jeweilige Position.

      ... oder hat jemand eine andere Idee an die Sache ranzugehen?

      LG Stefan

      posted in Allgemein
      StefanP74S
      StefanP74
    • Switch Verkabelungspfad als Tabelle

      Hallo,

      ich würde gerne den gesamten Verkabelungs-Pfad eines Switch-Stacks (vom Switch-Port bis zum Endpunkt) Port für Port in einer Tabelle ausgeben ... oder als Report.
      Ist das irgendwie auf elegante Weise möglich?

      Ich kann natürlich die Tabelle unter Switch / Verkabelung nach Excel kopieren ... ist mit einigen Nacharbeiten möglich, scheint mir allerdings etwas bescheiden in der Handhabe, da ich es in den nächsten Wochen öfters benötige, jeweils in der aktuellen Fassung.

      Hat dafür jemand eine praktikable Lösung?

      Danke

      LG Stefan

      posted in Betrieb
      StefanP74S
      StefanP74
    • RE: CKEditor - Kein Button zum Hinzufügen von Hyperlinks?

      @Niklas-K

      stimmt, auf der Demo-Seite fehlt auch die Hälft der Icons.
      Keine Ahnung wo da noch ein Setting wäre.

      Wenn ich Aktiviere alle WYSIWYG Editor Funktionen auf "Nein" setze, dann sieht die Leiste so aus:

      i-doit_link_002.JPG

      LG Stefan

      posted in Allgemein
      StefanP74S
      StefanP74