DE:Erstellen einer neuen Kategorie
From i-doit documentation
Allgemein
Dieser Text beschreibt das Erstellen einer neuen Kategorie in i-doit Version 0.9.9 oder höher. Eine Beschreibung zur Kategorieerstellung für Version 0.9.8-3 oder niedriger befindet sich hier: http://doc.i-doit.org/wiki/DE:Erstellen_einer_neuen_Kategorie_0.9.8
Hinweis: Pfade werden immer relativ zum i-doit Root angegeben (z.B. /var/www/idoit, oder c:\programme\apache2.2\htdocs\idoit\).
Anlegen einer neuen Datenzugriffs-Datei (DAO)
Die Datei src/classes/cmdb/dao/category/global/isys_cmdb_dao_category_g_mycategory.class.php wird mit folgendem Inhalt angelegt:
<?php
/**
* i-doit
*
* DAO: Global category for mycategory
*
* @package i-doIT
* @subpackage CMDB_Categories
* @license http://dev.perl.org/perl6/rfc/346.html Artistic License 2.0
*/
class isys_cmdb_dao_category_g_mycategory
extends isys_cmdb_dao_category_global {
// Use this list if we display a list instead of a single view:
//protected $m_list = "isys_cmdb_dao_list_catg_mycategory";
public function get_category_id() {
return C__CATG__MYCATEGORY; // dynamic Constant for catg mycategory - id from isysgui_catg
}
/**
* Filter rows
* @var array
*/
protected $m_filter =
array( "isys_catg_backup_list__title" => "LC__CMDB__LOGBOOK__TITLE",
"isys_catg_backup_list__description" => "LC__CMDB__LOGBOOK__DESCRIPTION"
);
/**
* Return Category Data
*
* @param [int $p_id]
* @param [int $p_obj_id]
* @param [string $p_condition]
*
* @return isys_component_dao_result
*/
public function get_data($p_catg_list_id=NULL, $p_obj_id=NULL, $p_condition="", $p_filter=NULL, $p_status=NULL) {
$p_condition .= $this->prepare_filter($p_filter);
$l_sql = "SELECT * FROM isys_catg_mycategory_list ".
"INNER JOIN isys_obj ".
"ON ".
"isys_catg_mycategory_list__isys_obj__id = isys_obj__id ".
"WHERE TRUE ";
$l_sql .= $p_condition;
if (!empty($p_obj_id)) {
$l_sql .= " AND (isys_catg_mycategory_list__isys_obj__id = '{$p_obj_id}')";
}
if (!empty($p_catg_list_id)) {
$l_sql .= " AND (isys_catg_mycategory_list__id = '{$p_catg_list_id}')";
}
if (!empty($p_status)) {
$l_sql .= " AND (isys_catg_mycategory_list__status = '{$p_status}')";
}
return $this->retrieve($l_sql . ";");
}
/**
* Save global category mycategory
*
* @param $p_cat_level
* @param &$p_intOldRecStatus
*/
public function save_element($p_cat_level, &$p_intOldRecStatus)
{
$intErrorCode = -1; // ErrorCode
$l_catdata = $this->get_general_data();
$p_intOldRecStatus = $l_catdata["isys_catg_mycategory_list__status"];
$l_intNewRecStatus = C__RECORD_STATUS__NORMAL;
if ($l_catdata['isys_catg_mycategory_list__id'] != "") {
$l_strSql = "UPDATE isys_catg_mycategory_list ".
"SET ".
"isys_catg_mycategory_list__description = ".
$this->convert_sql_text($_POST['C__CMDB__CAT__COMMENTARY']).", ".
"isys_catg_mycategory_list__isys_mycategory_entwickler__id = ".
$this->convert_sql_id($_POST['C__CATG__MYCATEGORY_ENTWICKLER']).", ".
"isys_catg_mycategory_list__wert = ".
$this->convert_sql_text($_POST['C__CATG__MYCATEGORY_WERT'])." ".
"WHERE ".
"isys_catg_mycategory_list__id = '".
$l_catdata['isys_catg_mycategory_list__id']."'".
";";
$this->m_strLogbookSQL = $l_strSql;
$l_bRet = $this->update($l_strSql);
if ($l_bRet) {
$l_bRet = $this->apply_update();
}
}
return $l_bRet == ISYS_TRUE ? NULL : $intErrorCode ;
}
/**
* @param $p_cat_level
* @param &$p_new_id
* @desc Save global category mycategory element
*/
public function create_element($p_cat_level, &$p_new_id)
{
$p_new_id = -1;
$l_strSql =
"INSERT INTO ".
"isys_catg_mycategory_list ".
"SET ".
"isys_catg_mycategory_list__isys_obj__id = '".$_GET[C__CMDB__GET__OBJECT]."', ".
"isys_catg_mycategory_list__status = '".C__RECORD_STATUS__NORMAL."' ".
";";
$this->m_strLogbookSQL = $l_strSql;
if ($this->update($l_strSql) && $this->apply_update()) {
$p_new_id = $this->get_last_insert_id();
}
return $p_new_id;
}
/**
* @return bool
*/
public function is_validate_post_data()
{
global $g_comp_template_language_manager;
$l_retValid = ISYS_TRUE;
$l_arrTomAdditional = array();
if ($_POST["C__CATG__MYCATEGORY_ENTWICKLER"] <= 0){
$l_arrTomAdditional["C__CATG__MYCATEGORY_ENTWICKLER"]["p_strInfoIconError"] =
$g_comp_template_language_manager->{"LC___UNIVERSAL__ERROR_INFO_ICON"};
$l_retValid = ISYS_FALSE;
}
$this->set_additional_rules($l_retValid == ISYS_FALSE ? $l_arrTomAdditional : ISYS_NULL);
$this->set_validation($l_retValid);
return $l_retValid;
}
public function &get_ui() {
global $g_comp_template;
return new isys_cmdb_ui_category_g_mycategory($g_comp_template);
}
public function __construct(isys_component_database &$p_db) {
parent::__construct($p_db);
}
}
?>
Anlegen einer ui Datei
Anlegen der Datei src/classes/cmdb/ui/global/isys_cmdb_ui_category_g_mycategory.class.php
<?php
/**
* i-doit
*
* CMDB mycategory
*
* @package i-doIT
* @subpackage CMDB_Categories
* @license http://dev.perl.org/perl6/rfc/346.html Artistic License 2.0
*/
class isys_cmdb_ui_category_g_mycategory
extends isys_cmdb_ui_category_global
{
/**
* @param isys_cmdb_dao_category $p_cat
* @return void
*/
public function process(isys_cmdb_dao_category $p_cat)
{
global $index_includes;
global $g_comp_template;
global $g_active_modreq;
/**
* @var isys_cmdb_dao_category_g_model $l_cat
*/
$l_cat = $p_cat;
$l_catdata = $l_cat->get_general_data();
$l_arTypeData = array();
$l_posts = $g_active_modreq->get_posts();
$l_rules["C__CATG__MYCATEGORY_ENTWICKLER"]["p_strSelectedID"] =
$l_catdata["isys_catg_mycategory_list__isys_mycategory_entwickler__id"];
$l_rules["C__CATG__mycategory_WERT"]["p_strValue"] =
$l_catdata["isys_catg_mycategory_list__wert"];
$l_rules["C__CMDB__CAT__COMMENTARY"]["p_strValue"] =
$l_catdata["isys_catg_model_list__description"];
if (!$l_cat->get_validation()) {
$l_rules["C__CATG__MYCATEGORY_WERT"]["p_strValue"] =
$l_posts["C__CATG__MYCATEGORY_WERT"];
$l_rules["C__CMDB__CAT__COMMENTARY"]["p_strValue"] =
$l_posts["C__CMDB__CAT__COMMENTARY"];
$l_rules["C__CATG__MYCATEGORY_ENTWICKLER"]["p_strSelectedID"] =
$l_posts["C__CATG__MYCATEGORY_ENTWICKLER"];
$l_rules = isys_glob_array_merge($l_rules, $l_cat->get_additional_rules());
}
// Apply rules
$g_comp_template->smarty_tom_add_rules(
"tom.content.bottom.content",
$l_rules);
$this->detail_view($l_cat);
$index_includes["contentbottomcontent"] =
$this->get_template();
}
public function __construct(isys_component_template &$p_template) {
$this->set_template("catg__mycategory.tpl");
parent::__construct($p_template);
}
}
?>
Anlegen einer Template Datei
Anlegen der Datei src/themes/default/smarty/templates/content/bottom/content/catg__mycategory.tpl
<table class="contentTable">
<tr>
<td class="key">[{isys type="lang" ident="LC__CMDB__CATG__MYCATEGORY_WERT"}]: </td>
<td class="value">[{isys type="f_text" name="C__CATG__MYCATEGORY_WERT" tab="1"}]</td>
</tr>
<tr>
<td class="key">[{isys type="lang" ident="LC__CMDB__CATG__MYCATEGORY_ENTWICKLER"}]: </td>
<td class="value">[{isys type="f_popup" p_strPopupType="dialog_plus" name="C__CATG__MYCATEGORY_ENTWICKLER" p_strTable="isys_mycategory_entwickler" p_bDbFieldNN="0" tab="2"}]</td>
</tr>
</table>
Anlegen der Datenbank Tabellen
Anlegen der Tabelle isys_catg_mycategory
Anlegen der Tabelle isys_catg_mycategory_list
DROP TABLE IF EXISTS `isys_catg_mycategory_list`; CREATE TABLE `isys_catg_mycategory_list` ( `isys_catg_mycategory_list__id` int(10) unsigned NOT NULL auto_increment, `isys_catg_mycategory_list__isys_obj__id` int(10) unsigned NOT NULL, `isys_catg_mycategory_list__isys_mycategory_entwickler__id` int(10) unsigned default NULL, `isys_catg_mycategory_list__status` int(10) unsigned NOT NULL, `isys_catg_mycategory_list__wert` varchar(45) collate utf8_unicode_ci default NULL, `isys_catg_mycategory_list__description` text collate utf8_unicode_ci, `isys_catg_mycategory_list__title` varchar(255) collate utf8_unicode_ci default NULL, PRIMARY KEY (`isys_catg_mycategory_list__id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Anlegen der Tabelle isys_mycategory_entwickler
DROP TABLE IF EXISTS `isys_mycategory_entwickler`; CREATE TABLE `isys_mycategory_entwickler` ( `isys_mycategory_entwickler__id` int(10) unsigned NOT NULL auto_increment, `isys_mycategory_entwickler__title` varchar(255) collate utf8_unicode_ci default NULL, `isys_mycategory_entwickler__description` text collate utf8_unicode_ci, `isys_mycategory_entwickler__sort` int(10) unsigned default '5', `isys_mycategory_entwickler__const` varchar(255) collate utf8_unicode_ci default NULL, `isys_mycategory_entwickler__status` int(10) unsigned default '1', `isys_mycategory_entwickler__property` int(10) unsigned default '0', PRIMARY KEY (`isys_mycategory_entwickler__id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Einfügen der Kategorie in Tabelle isysgui_catg
i-doit Version 0.9.9
INSERT INTO `isysgui_catg` ( `isysgui_catg__isys_tree_group__id` , `isysgui_catg__title`, `isysgui_catg__description`, `isysgui_catg__const`, `isysgui_catg__source_table`, `isysgui_catg__source_table_virtual_obj`, `isysgui_catg__class_name`, `isysgui_catg__class_name_virtual_obj`, `isysgui_catg__sort`, `isysgui_catg__list_multi_value`, `isysgui_catg__property`, `isysgui_catg__search`, `isysgui_catg__status`, `isysgui_catg__standard`, `isysgui_catg__overview` ) VALUES (2,'LC__CMDB__CATG__MYCATEGORY', 'MYCATEGORY', 'C__CATG__MYCATEGORY', 'isys_catg_mycategory', 'isys_catg_mycategory', 'isys_cmdb_dao_category_g_mycategory', 'isys_cmdb_dao_category_g_mycategory', 40,0,0,1,2,0,1);
Ab i-doit Version 0.9.9
INSERT INTO `isysgui_catg` ( `isysgui_catg__isys_tree_group__id` , `isysgui_catg__title`, `isysgui_catg__description`, `isysgui_catg__const`, `isysgui_catg__source_table`, `isysgui_catg__class_name`, `isysgui_catg__sort`, `isysgui_catg__list_multi_value`, `isysgui_catg__property`, `isysgui_catg__search`, `isysgui_catg__status`, `isysgui_catg__standard`, `isysgui_catg__overview` ) VALUES (2,'LC__CMDB__CATG__MYCATEGORY', 'MYCATEGORY', 'C__CATG__MYCATEGORY', 'isys_catg_mycategory', 'isys_cmdb_dao_category_g_mycategory', 40,0,0,1,2,0,1);
Ändern der Sprachkonstante
Die verwendeten Sprachkonstanten (Indentifiziert durch LC__) werden in den Dateien src/lang/de_custom.inc.php bzw. src/lang/en_custom.inc.php gepflegt. Ein ausführliches Beispiel befindet sich in der de_custom.inc.php.
z.B.: $g_langcache["LC__CMDB__CATG__MYCATEGORY"] = "Meine Kategorie"; $g_langcache["LC__CMDB__CATG__MYCATEGORY_ENTWICKLER"] = "Entwickler"; usw.
</pre>
Cache leeren
Dies geht über den URL Aufruf: /index.php?IDOIT_DELETE_TEMP, oder in der Systemkonfiguration Module -> Verwaltung -> Cache -> System Cache leeren / Template Cache leeren
oder durch manuelles löschen des Ordnerinhalts : i-doit-dir/temp/ (rm -R i-doit-dir/temp/*)
