DE:Erstellen einer neuen Kategorie

From i-doit documentation

Jump to: navigation, search

Contents

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/*)

Personal tools