Hallo @ap
die 17 ist deine Version ID, nicht deine EintryID
Die EntryID steht oben vor der objID. Siehe Bild

VG
Cherif
Hallo @ap
die 17 ist deine Version ID, nicht deine EintryID
Die EntryID steht oben vor der objID. Siehe Bild

VG
Cherif
Hallo zusammen,
ich versuche, einen Console-Command in einem Add-on zu implementieren, stoße dabei jedoch auf ein Problem mit den Klassen.
In der Command-Klasse (rot markiert) versuche ich, auf eine Methode der Manager-Klasse (grün markiert) zuzugreifen. Beim Ausführen des Befehls
php console.php tools:sync
erhalte ich jedoch die unten stehende Fehlermeldung.
Offenbar ist es mir aktuell nicht möglich, auf eine Klasse außerhalb zuzugreifen. In der GUI sind die Klassen jedoch erreichbar.
Könnte mir bitte jemand dabei helfen oder einen Hinweis geben, woran das liegen könnte?
Vielen Dank im Voraus!
Cherif
PHP Fatal error: Uncaught Error: Class "idoit\Module\tools\Manager\MyManager" not found in /var/www/i-doit/src/classes/modules/tools/src/Console/Command/MyCommand.php:88
Stack trace:
#0 /var/www/i-doit/vendor/symfony/console/Command/Command.php(326): idoit\Module\tools\Console\Command\MyCommand->execute()
#1 /var/www/i-doit/vendor/symfony/console/Application.php(1088): Symfony\Component\Console\Command\Command->run()
#2 /var/www/i-doit/vendor/symfony/console/Application.php(324): Symfony\Component\Console\Application->doRunCommand()
#3 /var/www/i-doit/vendor/symfony/console/Application.php(175): Symfony\Component\Console\Application->doRun()
#4 /var/www/i-doit/console.php(26): Symfony\Component\Console\Application->run()
#5 {main}
in init.php
Psr4AutoloaderClass::factory() ->addNamespace('idoit\Module\tools', DIR . '/src/');
in der MyCommand.php:
namespace idoit\Module\tools\Console\Command;
use idoit\Console\Command\AbstractCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputDefinition;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use idoit\Module\tools\Manager\MyManager;
class MyCommand extends AbstractCommand
{
...
in der MyManager.php
namespace idoit\Module\tools\Manager;
use Exception;
use isys_application;
use isys_component_dao_result;
use isys_exception_dao;
use isys_exception_database;
use isys_cmdb_dao;
class MyManager extends isys_cmdb_dao
{
...

Hallo zusammen,
wir haben bei uns ADFS eingerichtet, und soweit funktioniert alles problemlos.
Allerdings haben wir aktuell keine Möglichkeit mehr, uns mit einem lokalen Benutzer anzumelden.
Ist es möglich, die Anmeldung für diese beiden Benutzer zu erlauben?
Wenn ja, wie können wir das einrichten?
Vielen Dank im Voraus.
Cherif
Hallo @Michael-Huhn
vielen Dank für den Link. Er hat mein Problem behoben.
VG, Cherif
Beispieldefinition des Attributs (verkürzt):
'portfolio' => new DialogPlusMultiselectProperty(...)
Es geht um die Methode denormalizeData(...) in src/classes/modules/cmdb/src/Component/SyncNormalizer/DataNormalizer/Dialog/MultiSelect.php
Hallo zusammen,
beim Aktualisieren einer eigenen Kategorie in unserer i-doit-Umgebung (Version 34 mit PHP 8.2) tritt ein Problem auf, sobald ein Attribut mit Mehrfachauswahl über ein dialog_plus-Popup bereits Daten enthält.
Solange das Feld leer ist, lässt sich die Kategorie speichern. Sobald jedoch mindestens ein Eintrag vorhanden ist, wird der Vorgang mit einem Fehler abgebrochen.
Auszug aus dem Fehlerprotokoll:
PHP Fatal Error: Call to a member function getValue on null
Datei: MultiSelect.php, Zeile 152, innerhalb der Methode denormalizeData
Dazu meine Fragen:
Vielen Dank im Voraus für jeden Hinweis!
Beste Grüße
Cherif
Hallo,
via API versuche ich eine Sever-Liste mit Namen und Primär Kontakt zu bekommen. Lieder bekomme ich nur ID (also connection_id) ohne Name/Title bei primary_contact zurück.
Gibt es noch eine Möglichkeit den Primären Kontaktnamen raus zu kriegen?
Viele Grüße
Cherif
Request:
{
"method": "cmdb.objects.read",
"params": {
"apikey": "xxx",
"filter": {
"type": [59],
"status": "C__RECORD_STATUS__NORMAL"
},
"categories":["C__CATG__GLOBAL","C__CATG__CONTACT"],
"language": "en"
},
"id": 1,
"version": "2.0"
}
Response:
...
},
"primary_contact": "20054",
"contact_object": {
"title": "Max Ali",
"id": "37",
"connection_id": "20054",
"type": "C__OBJTYPE__PERSON",
"type_title": "Persons",
"sysid": "SYSID_100007"
},
"primary": {
"value": "1",
"title": "Yes"
},
"role": {
"id": "5",
"title": "Contact partner",
"const": "C__CONTACT_TYPE__CONTACT",
"title_lang": "LC__CMDB__CONTACT__ROLE__CONTACT"
},
"contact_list": "20054",
"contact_list_with_roles": "20054",
"description": null
},
...
Hallo @Moritz,
Ich denke, hier ist etwas tiefgegangen
Versuch mal den Report zu duplizieren.
VG
Cherif
Hallo @StefanP74,
ich hatte das selbe Problem. Nachdem der Browsercache gelöscht wurde, verschwand die Meldung.
VG
Hallo @RAG,
wenn i-doit sich bereits in der Version 31 PRO befindet, dann bitte API auf Version 2.0.1 updaten.
Achtung: Vorher ein Backup machen.
Viele Grüße
CHerif
Hallo @Heartbeat
Hallo @LFischer
ich bestätige das. Das Problem kenne ich auch.
Lösung: Der Browser Cache muss geleert werden.
Danke @LFischer
Viele Grüße
Cherif
Habe gefunden... kann man in Settings for IT einstellen. Danke

Hallo Zusammen,
nach dem Update auf v.25 habe das Feld Beschreibung keine wysiwyg Funktion mehr. Siehe Bilder unten
Hat jemand auch das Problem?
Viele Grüße
Cherif
Vorher

Danach in v.25

Hey @LFischer
du bist ein Held
Das hat funktioniert. Vielen Dank für Hilfe
Jetzt ist Dialog+ Feld in der init.php registriert, und danach funktioniert...
Viele Grüße
Cherif
Hallo @LFischer
vielen Dank für deine Hilfe
Ich habe Kategorie-Attribute neu indizieren ausgeführt. Danach wurden die beiden Probleme behoben.
Meine Frage: Hat diese Funktion einen Nachteil ? z.B Datenverlust ?
Nochmal Danke für deine Hilfe
VG, Cherif
@leobaer danke, es geht aber nicht um eine Custom Kategorie
Hallo ,
ich habe eine neue Kategorie angelegt/programmiert. Ein DialogPlusFeld aus dieser Kategorie lässt sich aber nicht unter Dialog-Admin erscheinen und verwalten.
Gibt es eine Möglichkeit diese einzurichten ?

Danke im voraus
Hallo zusammen,
ich habe eigene 2 Kategorien programmiert und funktioniert soweit gut.
Ich habe jetzt aber folgende Probleme:
Eine von 2 Kategorien lässt sich nicht beim Reportmanager erscheinen. Also ist nicht auf der Liste...

Die 2. Kategorie hat Attributen mit Multi-Value, also dialog_plus mit "isys_cmdb_dao_category_pattern::multiselect()"
Hier bekomme ich immer eine Fehlermeldung, wenn ich versuche, einen Report zu erstellen. Unknown column 'j.isys_catg_servicebook_list_2_isys_catg_svb_ori' in 'field list'
Woran liegt das Problem?
Wie kann ich gespeicherte Werten ausgeben?
Unten Code
protected function properties()
{
return [
'orientation' => array_replace_recursive(isys_cmdb_dao_category_pattern::multiselect(), [
C__PROPERTY__INFO => [
C__PROPERTY__INFO__TITLE => 'LC__CMDB__CATG_SERVICEBOOK__ORIENTATION',
C__PROPERTY__INFO__DESCRIPTION => 'Orientation'
],
C__PROPERTY__DATA => [
C__PROPERTY__DATA__FIELD => 'isys_catg_servicebook_list__id',
C__PROPERTY__DATA__TABLE_ALIAS => 'service_orientation',
C__PROPERTY__DATA__SOURCE_TABLE => 'isys_catg_svb_ori',
C__PROPERTY__DATA__REFERENCES => [
'isys_catg_servicebook_list_2_isys_catg_svb_ori',
'isys_catg_servicebook_list__id'
],
C__PROPERTY__DATA__SELECT => idoit\Module\Report\SqlQuery\Structure\SelectSubSelect::factory(
'SELECT ori.isys_catg_svb_ori__title
FROM isys_catg_servicebook_list sel
INNER JOIN isys_catg_servicebook_list_2_isys_catg_svb_ori AS sercice2 ON sercice2.isys_catg_servicebook_list__id = sel.isys_catg_servicebook_list__id
INNER JOIN isys_catg_svb_ori AS ori ON ori.isys_catg_svb_ori__id = sercice2.isys_catg_svb_ori__id',
'isys_catg_servicebook_list',
'sel.isys_catg_servicebook_list__id',
'sel.isys_catg_servicebook_list__isys_obj__id',
'sel.isys_catg_servicebook_list__id',
'',
idoit\Module\Report\SqlQuery\Structure\SelectCondition::factory([]),
idoit\Module\Report\SqlQuery\Structure\SelectGroupBy::factory(['isys_catg_servicebook_list__isys_obj__id'])
),
C__PROPERTY__DATA__JOIN => [
idoit\Module\Report\SqlQuery\Structure\SelectJoin::factory(
'isys_catg_servicebook_list_2_isys_catg_svb_ori',
'LEFT',
'isys_catg_servicebook_list__id',
'isys_catg_servicebook_list_2_isys_catg_svb_ori',
'sel2',
'sel2ori',
'sel2ori'
),
idoit\Module\Report\SqlQuery\Structure\SelectJoin::factory(
'isys_catg_svb_ori',
'LEFT',
'isys_catg_svb_ori__id',
'isys_catg_svb_ori__id',
'sel',
'selori',
'selori'
),
idoit\Module\Report\SqlQuery\Structure\SelectJoin::factory(
'isys_catg_servicebook_list',
'LEFT',
'isys_catg_servicebook_list__isys_obj__id',
'isys_obj__id'
)
]
],
C__PROPERTY__UI => [
C__PROPERTY__UI__ID => 'C__CATG_SERVICEBOOK_ORIENTATION',
C__PROPERTY__UI__PARAMS => [
'type' => 'f_popup',
'p_strPopupType' => 'dialog_plus',
'p_strTable' => 'isys_catg_svb_ori',
'placeholder' => isys_application::instance()->container->get('language')
->get('LC__UNIVERSAL__CHOOSEN_PLACEHOLDER'),
'multiselect' => true
],
C__PROPERTY__UI__DEFAULT => null
],
C__PROPERTY__PROVIDES => [
C__PROPERTY__PROVIDES__REPORT => true,
C__PROPERTY__PROVIDES__LIST => false,
C__PROPERTY__PROVIDES__SEARCH => true,
C__PROPERTY__PROVIDES__VALIDATION => false,
C__PROPERTY__PROVIDES__MULTIEDIT => true
],
C__PROPERTY__FORMAT => [
C__PROPERTY__FORMAT__CALLBACK => [
'isys_export_helper',
'dialog_multiselect'
]
]
])
protected function dynamic_properties()
{
return [
'_orientation' => new DynamicProperty(
'LC__CMDB__CATG_SERVICEBOOK__ORIENTATION',
'isys_catg_servicebook_list__id',
'isys_catg_servicebook_list',
[
$this,
'dynamic_property_callback_ori'
]
),
];
}
public function dynamic_property_callback_ori($p_row)
{
$l_dao = isys_cmdb_dao_category_g_servicebook::instance(isys_application::instance()->database);
$l_res = $l_dao->retrieve('SELECT ori.isys_catg_svb_ori__title AS val
FROM isys_catg_servicebook_list AS svcb
INNER JOIN isys_catg_servicebook_list_2_isys_catg_svb_ori AS svcb2ori ON svcb2ori.isys_catg_servicebook_list__id = svcb.isys_catg_servicebook_list__id
INNER JOIN isys_catg_svb_ori AS ori ON ori.isys_catg_svb_ori__id = svcb2ori.isys_catg_svb_ori__id
WHERE svcb.isys_catg_servicebook_list__id = ' . $l_dao->convert_sql_id($p_row['isys_catg_servicebook_list__id']));
$l_return = isys_tenantsettings::get('gui.empty_value', '-');
if ($l_res->num_rows() > 0) {
$l_return = '';
while ($l_row = $l_res->get_row()) {
$l_return .= $l_row['val'] . ', ';
}
$l_return = rtrim($l_return, ', ');
}
return $l_return;
}
Danke im Voraus