[20982] property only: various improvements and features - 4512:4565

Sigurd Nes <[email protected]> Fri, 22 Jan 2010 09:56:10 +0000
Newsgroups gmane.comp.web.phpgroupware.cvs
Message-ID <[email protected]>
Revision: 20982
          http://svn.sv.gnu.org/viewvc/?view=rev&root=phpgroupware&revision=20982
Author:   sigurdne
Date:     2010-01-22 09:56:10 +0000 (Fri, 22 Jan 2010)
Log Message:
-----------
property only: various improvements and features  - 4512:4565

Modified Paths:
--------------
    people/sigurdne/modules/property/trunk/inc/class.boadmin_entity.inc.php
    people/sigurdne/modules/property/trunk/inc/class.bocommon.inc.php
    people/sigurdne/modules/property/trunk/inc/class.botts.inc.php
    people/sigurdne/modules/property/trunk/inc/class.menu.inc.php
    people/sigurdne/modules/property/trunk/inc/class.socategory.inc.php
    people/sigurdne/modules/property/trunk/inc/class.socustom.inc.php
    people/sigurdne/modules/property/trunk/inc/class.sotts.inc.php
    people/sigurdne/modules/property/trunk/inc/class.uicategory.inc.php
    people/sigurdne/modules/property/trunk/inc/class.uicustom.inc.php
    people/sigurdne/modules/property/trunk/inc/class.uiinvoice.inc.php
    people/sigurdne/modules/property/trunk/inc/class.uilocation.inc.php
    people/sigurdne/modules/property/trunk/inc/class.uitts.inc.php
    people/sigurdne/modules/property/trunk/inc/hook_home.inc.php
    people/sigurdne/modules/property/trunk/inc/hook_settings.inc.php
    people/sigurdne/modules/property/trunk/js/yahoo/location.index.js
    people/sigurdne/modules/property/trunk/js/yahoo/property.js
    people/sigurdne/modules/property/trunk/setup/phpgw_no.lang
    people/sigurdne/modules/property/trunk/setup/setup.inc.php
    people/sigurdne/modules/property/trunk/setup/tables_current.inc.php
    people/sigurdne/modules/property/trunk/setup/tables_update.inc.php
    people/sigurdne/modules/property/trunk/templates/base/category.xsl
    people/sigurdne/modules/property/trunk/templates/base/config.tpl
    people/sigurdne/modules/property/trunk/templates/base/tts.xsl

Modified: people/sigurdne/modules/property/trunk/inc/class.boadmin_entity.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/inc/class.boadmin_entity.inc.php	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/inc/class.boadmin_entity.inc.php	2010-01-22 09:56:10 UTC (rev 20982)
@@ -118,7 +118,7 @@
 			$this->query			= isset($query) ? $query : $this->query;
 			$this->sort				= isset($sort) && $sort ? $sort : '';
 			$this->order			= isset($order) && $order ? $order : '';
-			$this->type				= isset($type)  && $type && $this->type_app[$type] ? $type : 'entity';
+			$this->type				= isset($type)  && $type && isset($this->type_app[$type]) ? $type : 'entity';
 			$this->cat_id			= isset($cat_id) && $cat_id ? $cat_id : '';
 			$this->entity_id		= isset($entity_id) && $entity_id ? $entity_id : '';
 			$this->allrows			= isset($allrows) && $allrows ? $allrows : '';

Modified: people/sigurdne/modules/property/trunk/inc/class.bocommon.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/inc/class.bocommon.inc.php	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/inc/class.bocommon.inc.php	2010-01-22 09:56:10 UTC (rev 20982)
@@ -1614,7 +1614,7 @@
 		* @param array $descr array containing Names for the heading of the output for the coresponding keys in $list
 		* @param array $input_type array containing information whether fields are to be suppressed from the output
 		*/
-		function download($list,$name,$descr,$input_type='')
+		function download($list,$name,$descr,$input_type=array())
 		{
 			$GLOBALS['phpgw_info']['flags']['noheader'] = true;
 			$GLOBALS['phpgw_info']['flags']['nofooter'] = true;
@@ -1644,7 +1644,7 @@
 		* @param array $descr array containing Names for the heading of the output for the coresponding keys in $list
 		* @param array $input_type array containing information whether fields are to be suppressed from the output
 		*/
-		function excel_out($list,$name,$descr,$input_type='')
+		function excel_out($list,$name,$descr,$input_type=array())
 		{
  			$filename= str_replace(' ','_',$GLOBALS['phpgw_info']['user']['account_lid']).'.xls';
 
@@ -1659,7 +1659,7 @@
 			$m=0;
 			for ($k=0;$k<$count_uicols_name;$k++)
 			{
-				if($input_type[$k]!='hidden')
+				if(!isset($input_type[$k]) || $input_type[$k]!='hidden')
 				{
 					$worksheet1->write_string(0, $m, $this->utf2ascii($descr[$k]));
 					$m++;
@@ -1674,7 +1674,7 @@
 					$m=0;
 					for ($k=0;$k<$count_uicols_name;$k++)
 					{
-						if($input_type[$k]!='hidden')
+						if(!isset($input_type[$k]) || $input_type[$k]!='hidden')
 						{
 							$content[$j][$m]	= str_replace("\r\n"," ",$entry[$name[$k]]);
 							$m++;
@@ -1722,11 +1722,10 @@
 			$header = array();
 			for ( $i = 0; $i < $count_uicols_name; ++$i )
 			{
-				if ( $input_type[$i] == 'hidden' )
+				if ( !isset($input_type[$i]) || $input_type[$i] != 'hidden' )
 				{
-					continue;
+					$header[] = $this->utf2ascii($descr[$i]);
 				}
-				$header[] = $this->utf2ascii($descr[$i]);
 			}
 			fputcsv($fp, $header);
 			unset($header);
@@ -1738,11 +1737,10 @@
 					$row = array();
 					for ( $i = 0; $i < $count_uicols_name; ++$i )
 					{
-						if ( $input_type[$i] == 'hidden' )
+						if ( !isset($input_type[$i]) || $input_type[$i] != 'hidden' )
 						{
-							continue;
+							$row[] = preg_replace("/\r\n/", ' ', $entry[$name[$i]]);
 						}
-						$row[] = preg_replace("/\r\n/", ' ', $entry[$name[$i]]);
 					}
 					fputcsv($fp, $row);
 				}
@@ -1771,7 +1769,7 @@
 			$m=0;
 			for ($k=0;$k<$count_uicols_name;$k++)
 			{
-				if($input_type[$k]!='hidden')
+				if(!isset($input_type[$k]) || $input_type[$k]!='hidden')
 				{
 					$object->addCell(1, 0, $m, $descr[$k], 'string');
 					$m++;
@@ -1786,7 +1784,7 @@
 					$m=0;
 					for ($k=0;$k<$count_uicols_name;$k++)
 					{
-						if($input_type[$k]!='hidden')
+						if(!isset($input_type[$k]) || $input_type[$k]!='hidden')
 						{
 							$content[$j][$m]	= str_replace(array('&'), array('og'), $entry[$name[$k]]);//str_replace("\r\n"," ",$entry[$name[$k]]);
 							$m++;

Modified: people/sigurdne/modules/property/trunk/inc/class.botts.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/inc/class.botts.inc.php	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/inc/class.botts.inc.php	2010-01-22 09:56:10 UTC (rev 20982)
@@ -45,14 +45,17 @@
 		var $start_date;
 		var $end_date;
 		var $fields_updated = false;
+		var $status_id;
+		var $user_id;
+		var $part_of_town_id;
+		var $district_id;
+		var $total_records;
 
 		var $public_functions = array
 		(
 			'read'			=> true,
 			'read_single'		=> true,
 			'save'			=> true,
-			'delete'		=> true,
-			'check_perms'		=> true
 		);
 
 		var $soap_functions = array(
@@ -191,7 +194,7 @@
 			if(!$leave_out_open)
 			{
 				$status[$i]['id']='O';
-				$status[$i]['name']=lang('Open');
+				$status[$i]['name']= isset($this->config->config_data['tts_lang_open']) && $this->config->config_data['tts_lang_open'] ? $this->config->config_data['tts_lang_open'] : lang('Open');
 				$i++;
 			}
 
@@ -224,7 +227,8 @@
 				'H' => lang('Billing hours'),
 				'F' => lang('finnish date'),
 				'SC' => lang('Status changed'),
-				'M' => lang('Sendt by email to')
+				'M' => lang('Sendt by email to'),
+				'AC'=> lang('actual cost changed'),
 			);
 
 			$custom_status	= $this->so->get_custom_status();
@@ -537,6 +541,7 @@
 						case 'F': $type = lang('finnish date changed'); break;
 						case 'IF': $type = lang('Initial finnish date'); break;
 						case 'L': $type = lang('Location changed'); break;
+						case 'AC': $type = lang('actual cost changed'); break;
 						case 'M':
 							$type = lang('Sendt by email to');
 							$this->order_sent_adress = $value['new_value']; // in case we want to resend the order as an reminder
@@ -916,7 +921,7 @@
 
 		function delete($id)
 		{
-			$this->so->delete($id);
+			return $this->so->delete($id);
 		}
 
 		/**

Modified: people/sigurdne/modules/property/trunk/inc/class.menu.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/inc/class.menu.inc.php	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/inc/class.menu.inc.php	2010-01-22 09:56:10 UTC (rev 20982)
@@ -72,7 +72,9 @@
 			$soadmin_location	= CreateObject('property.soadmin_location');
 			$locations	= $soadmin_location->select_location_type();
 
-			if ( isset($GLOBALS['phpgw_info']['user']['apps']['admin']) )
+//			if ( isset($GLOBALS['phpgw_info']['user']['apps']['admin']) )
+			if ( $GLOBALS['phpgw']->acl->check('run', phpgwapi_acl::READ, 'admin')
+			|| $GLOBALS['phpgw']->acl->check('admin', phpgwapi_acl::ADD, 'property'))
 			{
 				if ( is_array($entity_list) && count($entity_list) )
 				{

Modified: people/sigurdne/modules/property/trunk/inc/class.socategory.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/inc/class.socategory.inc.php	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/inc/class.socategory.inc.php	2010-01-22 09:56:10 UTC (rev 20982)
@@ -67,6 +67,7 @@
 			$uicols['name'][]			= $this->location_info['id']['name'];
 			$uicols['descr'][]			= lang('id');
 			$uicols['datatype'][]		= $this->location_info['id']['type'] == 'varchar' ? 'V' : 'I';
+			$uicols['sortable'][]		= true;
 
 			foreach($this->location_info['fields'] as $field)
 			{
@@ -74,6 +75,7 @@
 				$uicols['name'][]			= $field['name'];
 				$uicols['descr'][]			= $field['descr'];
 				$uicols['datatype'][]		= 'V';
+				$uicols['sortable'][]		= isset($field['sortable']) && $field['sortable'] ? true : false;
 			}
 
 			if($GLOBALS['phpgw']->locations->get_attrib_table('property', $this->location_info['acl_location']))
@@ -932,6 +934,13 @@
 							),
 							array
 							(
+								'name' => 'sorting',
+								'descr' => lang('sorting'),
+								'type' => 'integer',
+								'sortable'=> true
+							),
+							array
+							(
 								'name' => 'color',
 								'descr' => lang('color'),
 								'type' => 'varchar'

Modified: people/sigurdne/modules/property/trunk/inc/class.socustom.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/inc/class.socustom.inc.php	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/inc/class.socustom.inc.php	2010-01-22 09:56:10 UTC (rev 20982)
@@ -182,7 +182,7 @@
 			$custom['name'] = $this->db->db_addslashes($custom['name']);
 			$custom['sql_text'] = $this->db->db_addslashes(htmlspecialchars_decode($custom['sql_text']));
 
-			$this->db->query("UPDATE fm_custom set sql_text='" . $custom['sql_text'] . "', entry_date='" . time() . "', name='" . $custom['name'] . "' WHERE id=" . (int) $custom['custom_id'],__LINE__,__FILE__);
+			$this->db->query("UPDATE fm_custom set sql_text='{$custom['sql_text']}', entry_date='" . time() . "', name='{$custom['name']}' WHERE id=" . (int) $custom['custom_id'],__LINE__,__FILE__);
 
 			if($custom['new_name'])
 			{

Modified: people/sigurdne/modules/property/trunk/inc/class.sotts.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/inc/class.sotts.inc.php	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/inc/class.sotts.inc.php	2010-01-22 09:56:10 UTC (rev 20982)
@@ -234,7 +234,7 @@
 				}
 				else
 				{
-					$querymethod = " $where (subject $this->like '%$query%' or address $this->like '%$query%' or fm_tts_tickets.location_code $this->like '%$query%')";
+					$querymethod = " $where (subject $this->like '%$query%' OR address $this->like '%$query%' OR fm_tts_tickets.location_code $this->like '%$query%' OR fm_tts_tickets.order_id = '$query')";
 				}
 			}
 
@@ -281,6 +281,7 @@
 					'entry_date'		=> $this->db->f('entry_date'),
 					'finnish_date'		=> $this->db->f('finnish_date'),
 					'finnish_date2'		=> $this->db->f('finnish_date2'),
+					'order_id'			=> $this->db->f('order_id'),
 					'new_ticket'		=> ''
 				);
 			}
@@ -359,6 +360,7 @@
 				$ticket['ecodimb']			= $this->db->f('ecodimb');
 				$ticket['budget']			= $this->db->f('budget');
 				$ticket['actual_cost']		= $this->db->f('actual_cost');
+				$ticket['order_cat_id']		= $this->db->f('order_cat_id');
 
 				$user_id=(int)$this->db->f('user_id');
 				$this->db->query("SELECT account_firstname,account_lastname FROM phpgw_accounts WHERE account_id='$user_id' ");
@@ -508,7 +510,7 @@
 
 		public function get_custom_status()
 		{
-			$sql = "SELECT * FROM fm_tts_status";
+			$sql = "SELECT * FROM fm_tts_status ORDER BY sorting ASC";
 			$this->db->query($sql,__LINE__,__FILE__);
 
 			$status= array();
@@ -608,7 +610,11 @@
 		//	$old_billable_rate	= $this->db->f('billable_rate');
 			$old_subject		= $this->db->f('subject');
 			$old_contact_id		= $this->db->f('contact_id');
+			$old_actual_cost	= $this->db->f('actual_cost');
+			$old_order_cat_id	= $this->db->f('order_cat_id');
+
 			if($oldcat_id ==0){$oldcat_id ='';}
+			if($old_order_cat_id ==0){$old_order_cat_id ='';}
 			if($oldassigned ==0){$oldassigned ='';}
 			if($oldgroup_id ==0){$oldgroup_id ='';}
 
@@ -755,12 +761,29 @@
 	*/
 			if ($old_subject != $ticket['subject'])
 			{
-				$this->db->query("update fm_tts_tickets set subject='" . $ticket['subject']
+				$this->db->query("UPDATE fm_tts_tickets SET subject='" . $ticket['subject']
 					. "' where id='$id'",__LINE__,__FILE__);
 				$this->historylog->add('S',$id,$ticket['subject'],$old_subject);
 				$receipt['message'][]= array('msg' => lang('Subject has been updated'));
 			}
 
+			if ((int)$old_actual_cost != (int)$ticket['actual_cost'])
+			{
+				$this->db->query("UPDATE fm_tts_tickets SET actual_cost='" . (float)$ticket['actual_cost']
+					. "' WHERE id='$id'",__LINE__,__FILE__);
+				$this->historylog->add('AC',$id,(float)$ticket['actual_cost'] , $old_actual_cost);
+				$receipt['message'][]= array('msg' => lang('actual_cost has been updated'));
+			}
+
+			if ((int)$old_order_cat_id != (int)$ticket['order_cat_id'])
+			{
+				$this->db->query("UPDATE fm_tts_tickets SET order_cat_id='" . (int)$ticket['order_cat_id']
+					. "' WHERE id='$id'",__LINE__,__FILE__);
+				$receipt['message'][]= array('msg' => lang('order category has been updated'));
+				$this->fields_updated = true;
+			}
+
+
 			if (($old_note != $ticket['note']) && $ticket['note'])
 			{
 				$this->fields_updated = true;
@@ -942,4 +965,34 @@
 				//close
 			}
 		}
+
+		function delete($id)
+		{
+			$id = (int)$id;
+
+			$location_id = $GLOBALS['phpgw']->locations->get_id('property', '.ticket');
+
+			if ( !$location_id )
+			{
+				throw new Exception("phpgwapi_locations::get_id ('property', '.ticket') returned 0");
+			}
+
+			$this->db->transaction_begin();	
+
+			$this->db->query("DELETE FROM fm_action_pending WHERE location_id = {$location_id} AND item_id = {$id}",__LINE__,__FILE__);
+			$this->db->query("DELETE FROM phpgw_interlink WHERE location1_id = {$location_id} AND location1_item_id = {$id}",__LINE__,__FILE__);
+			$this->db->query("DELETE FROM phpgw_interlink WHERE location2_id = {$location_id} AND location2_item_id = {$id}",__LINE__,__FILE__);
+			$this->db->query("DELETE FROM fm_tts_history WHERE history_record_id = {$id}",__LINE__,__FILE__);
+			$this->db->query("DELETE FROM fm_tts_views WHERE id = {$id}",__LINE__,__FILE__);
+			$this->db->query("DELETE FROM fm_tts_tickets WHERE id = {$id}",__LINE__,__FILE__);
+
+			if($this->db->transaction_commit())
+			{
+				return true;
+			}
+			else
+			{
+				return false;
+			}
+		}
 	}

Modified: people/sigurdne/modules/property/trunk/inc/class.uicategory.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/inc/class.uicategory.inc.php	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/inc/class.uicategory.inc.php	2010-01-22 09:56:10 UTC (rev 20982)
@@ -186,11 +186,6 @@
 			$values = $this->bo->read();
 			$uicols = $this->bo->uicols;
 
-/*			$uicols['name'][0]	= 'id';
-			$uicols['descr'][0]	= lang('category ID');
-			$uicols['name'][1]	= 'descr';
-			$uicols['descr'][1]	= lang('Descr');
-*/
 			$j = 0;
 			$count_uicols_name = count($uicols['name']);
 
@@ -297,12 +292,8 @@
 					$datatable['headers']['header'][$i]['name'] 			= $uicols['name'][$i];
 					$datatable['headers']['header'][$i]['text'] 			= $uicols['descr'][$i];
 					$datatable['headers']['header'][$i]['visible'] 			= true;
-					$datatable['headers']['header'][$i]['sortable']			= false;
-					if($uicols['name'][$i]=='id')
-					{
-						$datatable['headers']['header'][$i]['sortable']			= true;
-						$datatable['headers']['header'][$i]['sort_field']   	= $uicols['name'][$i];
-					}
+					$datatable['headers']['header'][$i]['sortable']			= $uicols['sortable'][$i];
+					$datatable['headers']['header'][$i]['sort_field']   	= $uicols['name'][$i];
 				}
 			}
 

Modified: people/sigurdne/modules/property/trunk/inc/class.uicustom.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/inc/class.uicustom.inc.php	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/inc/class.uicustom.inc.php	2010-01-22 09:56:10 UTC (rev 20982)
@@ -415,7 +415,7 @@
 			$cols_id	= phpgw::get_var('cols_id', 'int');
 			$resort		= phpgw::get_var('resort');
 			$values		= phpgw::get_var('values');
-
+			$values['sql_text'] = $_POST['values']['sql_text'];
 			if($cols_id)
 			{
 				$this->bo->resort(array('custom_id'=>$custom_id,'id'=>$cols_id,'resort'=>$resort));

Modified: people/sigurdne/modules/property/trunk/inc/class.uiinvoice.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/inc/class.uiinvoice.inc.php	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/inc/class.uiinvoice.inc.php	2010-01-22 09:56:10 UTC (rev 20982)
@@ -316,7 +316,7 @@
 	                                array( //boton 	OWNER
 	                                    'id' => 'btn_user_lid',
 	                                    'name' => 'user_lid',
-	                                    'value'	=> user_lid,
+	                                    'value'	=> 'user_lid',
 	                                    'type' => 'button',
 	                                    'tab_index' => 2,
 	                                    'style' => 'filter'
@@ -2603,8 +2603,8 @@
 				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=>1, 'acl_location'=> $this->acl_location));
 			}
 
-			$GLOBALS['phpgw_info']['flags'][noheader] = true;
-			$GLOBALS['phpgw_info']['flags'][nofooter] = true;
+			$GLOBALS['phpgw_info']['flags']['noheader'] = true;
+			$GLOBALS['phpgw_info']['flags']['nofooter'] = true;
 			$GLOBALS['phpgw_info']['flags']['xslt_app'] = false;
 
 			$voucher_id = phpgw::get_var('voucher_id', 'int');

Modified: people/sigurdne/modules/property/trunk/inc/class.uilocation.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/inc/class.uilocation.inc.php	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/inc/class.uilocation.inc.php	2010-01-22 09:56:10 UTC (rev 20982)
@@ -218,6 +218,15 @@
 				return;
 			}
 
+			$second_display = phpgw::get_var('second_display', 'bool');
+			$default_district 	= (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['default_district'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['default_district']:'');
+
+			if ($default_district && !$second_display && !$this->district_id)
+			{
+				$this->bo->district_id	= $default_district;
+				$this->district_id		= $default_district;
+			}
+
 			$datatable = array();
 			$values_combo_box = array();
 
@@ -250,6 +259,7 @@
  	                        						."district_id: '{$this->district_id}',"
  	                        						."part_of_town_id:'{$this->part_of_town_id}',"
 						 	                        ."lookup:'{$lookup}',"
+						 	                        ."second_display:1,"
  	                        						."lookup_tenant:'{$lookup_tenant}',"
 						 	                        ."lookup_name:'{$lookup_name}',"
 						 	                        ."cat_id:'{$this->cat_id}',"

Modified: people/sigurdne/modules/property/trunk/inc/class.uitts.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/inc/class.uitts.inc.php	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/inc/class.uitts.inc.php	2010-01-22 09:56:10 UTC (rev 20982)
@@ -1,98 +1,100 @@
-<?php
-	/**
-	* phpGroupWare - property: a Facilities Management System.
-	*
-	* @author Sigurd Nes <[email protected]>
-	* @copyright Copyright (C) 2003,2004,2005,2006,2007 Free Software Foundation, Inc. http://www.fsf.org/
-	* This file is part of phpGroupWare.
-	*
-	* phpGroupWare is free software; you can redistribute it and/or modify
-	* it under the terms of the GNU General Public License as published by
-	* the Free Software Foundation; either version 2 of the License, or
-	* (at your option) any later version.
-	*
-	* phpGroupWare is distributed in the hope that it will be useful,
-	* but WITHOUT ANY WARRANTY; without even the implied warranty of
-	* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-	* GNU General Public License for more details.
-	*
-	* You should have received a copy of the GNU General Public License
-	* along with phpGroupWare; if not, write to the Free Software
-	* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-	*
-	* @license http://www.gnu.org/licenses/gpl.html GNU General Public License
-	* @internal Development of this application was funded by http://www.bergen.kommune.no/bbb_/ekstern/
-	* @package property
-	* @subpackage helpdesk
+<?php
+	/**
+	* phpGroupWare - property: a Facilities Management System.
+	*
+	* @author Sigurd Nes <[email protected]>
+	* @copyright Copyright (C) 2003,2004,2005,2006,2007 Free Software Foundation, Inc. http://www.fsf.org/
+	* This file is part of phpGroupWare.
+	*
+	* phpGroupWare is free software; you can redistribute it and/or modify
+	* it under the terms of the GNU General Public License as published by
+	* the Free Software Foundation; either version 2 of the License, or
+	* (at your option) any later version.
+	*
+	* phpGroupWare is distributed in the hope that it will be useful,
+	* but WITHOUT ANY WARRANTY; without even the implied warranty of
+	* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	* GNU General Public License for more details.
+	*
+	* You should have received a copy of the GNU General Public License
+	* along with phpGroupWare; if not, write to the Free Software
+	* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+	*
+	* @license http://www.gnu.org/licenses/gpl.html GNU General Public License
+	* @internal Development of this application was funded by http://www.bergen.kommune.no/bbb_/ekstern/
+	* @package property
+	* @subpackage helpdesk
  	* @version $Id$
-	*/
-
-	/**
-	 * Description
-	 * @package property
-	 */
-
+	*/
+
+	/**
+	 * Description
+	 * @package property
+	 */
+
 	phpgw::import_class('phpgwapi.yui');
 
-	class property_uitts
-	{
-		var $public_functions = array
-		(
-			'index'		=> true,
-			'index2'	=> true,
-			'view'		=> true,
-			'view2'		=> true,
-			'add'		=> true,
-			'add2'		=> true,
-			'delete'	=> true,
-			'download'		=> true,
-			'download2'	=> true,
+	class property_uitts
+	{
+		var $public_functions = array
+		(
+			'index'		=> true,
+			'index2'	=> true,
+			'view'		=> true,
+			'view2'		=> true,
+			'add'		=> true,
+			'add2'		=> true,
+			'delete'	=> true,
+			'download'	=> true,
+			'download2'	=> true,
 			'view_file'	=> true,
 			'edit_status'=> true
-		);
-
+		);
+
 		/**
 		 * @var boolean $_simple use simplified interface
 		 */
 		protected $_simple = false;
 		protected $_show_finnish_date = false;
+		var $part_of_town_id;
+		var $status;
 
-		public function __construct()
-		{
-			$GLOBALS['phpgw_info']['flags']['menu_selection'] = 'property::helpdesk';
-			if($this->tenant_id	= $GLOBALS['phpgw']->session->appsession('tenant_id','property'))
-			{
+		public function __construct()
+		{
+			$GLOBALS['phpgw_info']['flags']['menu_selection'] = 'property::helpdesk';
+			if($this->tenant_id	= $GLOBALS['phpgw']->session->appsession('tenant_id','property'))
+			{
 	//			$GLOBALS['phpgw_info']['flags']['noframework'] = true;
-				$GLOBALS['phpgw_info']['flags']['noheader'] = true;
-				$GLOBALS['phpgw_info']['flags']['nofooter'] = true;
-			}
-
-			$this->account				= $GLOBALS['phpgw_info']['user']['account_id'];
-			$GLOBALS['phpgw_info']['flags']['xslt_app'] = true;
-			$this->nextmatchs			= CreateObject('phpgwapi.nextmatchs');
-			$this->bo					= CreateObject('property.botts',true);
-			$this->bocommon 			= & $this->bo->bocommon;
-			$this->cats					= & $this->bo->cats;
-			$this->acl 					= & $GLOBALS['phpgw']->acl;
+				$GLOBALS['phpgw_info']['flags']['noheader'] = true;
+				$GLOBALS['phpgw_info']['flags']['nofooter'] = true;
+			}
+
+			$this->account				= $GLOBALS['phpgw_info']['user']['account_id'];
+			$GLOBALS['phpgw_info']['flags']['xslt_app'] = true;
+			$this->nextmatchs			= CreateObject('phpgwapi.nextmatchs');
+			$this->bo					= CreateObject('property.botts',true);
+			$this->bocommon 			= & $this->bo->bocommon;
+			$this->cats					= & $this->bo->cats;
+			$this->acl 					= & $GLOBALS['phpgw']->acl;
 			$this->acl_location			= $this->bo->acl_location;
 			$this->acl_read 			= $this->acl->check($this->acl_location, PHPGW_ACL_READ, 'property');
 			$this->acl_add 				= $this->acl->check($this->acl_location, PHPGW_ACL_ADD, 'property');
 			$this->acl_edit 			= $this->acl->check($this->acl_location, PHPGW_ACL_EDIT, 'property');
 			$this->acl_delete 			= $this->acl->check($this->acl_location, PHPGW_ACL_DELETE, 'property');
 			$this->acl_manage 			= $this->acl->check($this->acl_location, PHPGW_ACL_PRIVATE, 'property'); // manage
-			$this->bo->acl_location		= $this->acl_location;
-
-			$this->start				= $this->bo->start;
-			$this->query				= $this->bo->query;
-			$this->sort					= $this->bo->sort;
-			$this->order				= $this->bo->order;
+			$this->bo->acl_location		= $this->acl_location;
+
+			$this->start				= $this->bo->start;
+			$this->query				= $this->bo->query;
+			$this->sort					= $this->bo->sort;
+			$this->order				= $this->bo->order;
 			$this->status_id			= $this->bo->status_id;
 			$this->user_id				= $this->bo->user_id;
-			$this->cat_id				= $this->bo->cat_id;
-			$this->district_id			= $this->bo->district_id;
-			$this->allrows				= $this->bo->allrows;
-			$this->start_date			= $this->bo->start_date;
-			$this->end_date				= $this->bo->end_date;
+			$this->cat_id				= $this->bo->cat_id;
+			$this->district_id			= $this->bo->district_id;
+			$this->allrows				= $this->bo->allrows;
+			$this->start_date			= $this->bo->start_date;
+			$this->end_date				= $this->bo->end_date;
 
 			$user_groups =  $GLOBALS['phpgw']->accounts->membership($this->account);
 			$simple_group = isset($this->bo->config->config_data['fmttssimple_group']) ? $this->bo->config->config_data['fmttssimple_group'] : array();
@@ -116,120 +118,117 @@
 					break;
 				}
 			}
-
-
-
-		}
-
-		function save_sessiondata()
-		{
-			$data = array
-			(
-				'start'		=> $this->start,
-				'query'		=> $this->query,
-				'sort'		=> $this->sort,
-				'order'		=> $this->order,
+		}
+
+		function save_sessiondata()
+		{
+			$data = array
+			(
+				'start'			=> $this->start,
+				'query'			=> $this->query,
+				'sort'			=> $this->sort,
+				'order'			=> $this->order,
 				'status_id'		=> $this->status_id,
 				'user_id'		=> $this->user_id,
-				'cat_id'	=> $this->cat_id,
-				'district_id'	=> $this->district_id,
-				'allrows'	=> $this->allrows,
-				'start_date'	=> $this->start_date,
-				'end_date'	=> $this->end_date
-			);
-			$this->bo->save_sessiondata($data);
-		}
-
-		function download2()
-		{
-			if(!$this->acl->check('.ticket.external', PHPGW_ACL_READ, 'property'))
-			{
-				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=> 1, 'acl_location'=> '.ticket.external'));
-			}
-
-			$this->download($external = true);
-		}
-
-		function download($external='')
-		{
-			$start_date 	= urldecode($this->start_date);
-			$end_date 	= urldecode($this->end_date);
-
-			$this->bo->allrows = true;
+				'cat_id'		=> $this->cat_id,
+				'district_id'	=> $this->district_id,
+				'allrows'		=> $this->allrows,
+				'start_date'	=> $this->start_date,
+				'end_date'		=> $this->end_date
+			);
+			$this->bo->save_sessiondata($data);
+		}
+
+		function download2()
+		{
+			if(!$this->acl->check('.ticket.external', PHPGW_ACL_READ, 'property'))
+			{
+				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=> 1, 'acl_location'=> '.ticket.external'));
+			}
+
+			$this->download($external = true);
+		}
+
+		function download($external='')
+		{
+			$start_date 	= urldecode($this->start_date);
+			$end_date 	= urldecode($this->end_date);
+
+			$this->bo->allrows = true;
 			$list = $this->bo->read($start_date,$end_date,$external, '', $download = true);
-
-			if (isset($list) AND is_array($list))
-			{
-				$i=0;
-				foreach($list as &$entry)
-				{
-					if($entry['subject'])
-					{
-						$entry['category'] = $entry['subject'];
-					}
-
-					if (isset($entry['child_date']) AND is_array($entry['child_date']))
-					{
-						$j=0;
-						foreach($entry['child_date'] as $date)
-						{
-							if($date['date_info'][0]['descr'])
-							{
-							 	$entry['date_' . $j]=$date['date_info'][0]['entry_date'];
-							 	$name_temp['date_' . $j]=true;
-							 	$descr_temp[$date['date_info'][0]['descr']]=true;
-							 }
-							 $j++;
-						}
-						unset($entry['child_date']);
-					}
-					$i++;
-				}
-			}
-//_debug_array($descr_temp);
-
-			$name	= array('id',
-						'category',
-						'location_code',
-						'address',
-						'user',
-						'assignedto',
+
+			if (isset($list) AND is_array($list))
+			{
+				$i=0;
+				foreach($list as &$entry)
+				{
+					if($entry['subject'])
+					{
+						$entry['category'] = $entry['subject'];
+					}
+
+					if (isset($entry['child_date']) AND is_array($entry['child_date']))
+					{
+						$j=0;
+						foreach($entry['child_date'] as $date)
+						{
+							if($date['date_info'][0]['descr'])
+							{
+							 	$entry['date_' . $j]=$date['date_info'][0]['entry_date'];
+							 	$name_temp['date_' . $j]=true;
+							 	$descr_temp[$date['date_info'][0]['descr']]=true;
+							 }
+							 $j++;
+						}
+						unset($entry['child_date']);
+					}
+					$i++;
+				}
+			}
+//_debug_array($descr_temp);
+
+			$name	= array('id',
+						'category',
+						'location_code',
+						'address',
+						'user',
+						'assignedto',
 						'entry_date'
-						);
-
-			while (is_array($name_temp) && list($name_entry,) = each($name_temp))
-			{
-				array_push($name,$name_entry);
-			}
-
-			array_push($name,'finnish_date','delay');
-
-			$descr	= array(lang('ID'),
-					lang('category'),
-					lang('location'),
-					lang('address'),
-					lang('user'),
-					lang('Assigned to'),
-					lang('Started')
-					);
-
-			while (is_array($descr_temp) && list($descr_entry,) = each($descr_temp))
-			{
-				array_push($descr,$descr_entry);
-			}
-
-			array_push($descr,lang('finnish date'),lang('delay'));
-
-			$this->bocommon->download($list,$name,$descr);
-		}
-
+						);
+
+			while (is_array($name_temp) && list($name_entry,) = each($name_temp))
+			{
+				array_push($name,$name_entry);
+			}
+
+			array_push($name,'finnish_date','delay');
+
+			$descr	= array(lang('ID'),
+					lang('category'),
+					lang('location'),
+					lang('address'),
+					lang('user'),
+					lang('Assigned to'),
+					lang('Started')
+					);
+
+			while (is_array($descr_temp) && list($descr_entry,) = each($descr_temp))
+			{
+				array_push($descr,$descr_entry);
+			}
+
+			array_push($descr,lang('finnish date'),lang('delay'));
+
+			$this->bocommon->download($list,$name,$descr);
+		}
+
 		function edit_status()
 		{
 			if(!$this->acl_edit)
-			{
+			{
 				return lang('sorry - insufficient rights');
-			}
-
+			}
+
 			$new_status = phpgw::get_var('new_status', 'string', 'GET');
 			$id 		= phpgw::get_var('id', 'int');
 			$receipt 	= $this->bo->update_status(array('status'=>$new_status),$id);
@@ -239,55 +238,73 @@
 			}
 		//	$GLOBALS['phpgw']->session->appsession('receipt','property',$receipt);
 			return "id ".$id." ".lang('Status has been changed');
+		}
+
+		function delete()
+		{
+			if(!$this->acl_delete)
+			{
+				return lang('sorry - insufficient rights');
+			}
+
+			$id = phpgw::get_var('id', 'int');
+			if( $this->bo->delete($id) )
+			{
+				return lang('ticket %1 has been deleted', $id);
 			}
+			else
+			{
+				return lang('delete failed');			
+			}
+		}
 
 		function index()
-			{
+		{
 			if($this->tenant_id)
-				{
+			{
 //				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uitts.index2'));
-				}
-
+			}
+
 			if(!$this->acl_read)
 			{
 				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=> 1, 'acl_location'=> $this->acl_location));
-			}
+			}
 
 			$this->save_sessiondata();
 
 			$dry_run=false;
-
-			$second_display = phpgw::get_var('second_display', 'bool');
-
-			$default_category = (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['default_district'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['default_district']:'');
+
+			$second_display = phpgw::get_var('second_display', 'bool');
+
+			$default_category 	= (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['default_district'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['default_district']:'');
 			//FIXME: differentiate mainsreen and helpdesk if this should be used.
 			$default_status 	= '';//isset($GLOBALS['phpgw_info']['user']['preferences']['property']['tts_status'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['tts_status']:'';
-			$start_date 	= urldecode($this->start_date);
-			$end_date 	= urldecode($this->end_date);
-
-			if ($default_category && !$second_display && !$this->district_id)
-			{
-				$this->bo->district_id	= $default_category;
-				$this->district_id		= $default_category;
-			}
-
-			if ($default_status && !$second_display)
-			{
+			$start_date 		= urldecode($this->start_date);
+			$end_date 			= urldecode($this->end_date);
+
+			if ($default_category && !$second_display && !$this->district_id)
+			{
+				$this->bo->district_id	= $default_category;
+				$this->district_id		= $default_category;
+			}
+
+			if ($default_status && !$second_display)
+			{
 				$this->bo->status_id	= $default_status;
 				$this->status_id		= $default_status;
-			}
-
+			}
+
 /*
-			$bgcolor_array[1]	= '#dadada';
-			$bgcolor_array[2]	= '#dad0d0';
-			$bgcolor_array[3]	= '#dacaca';
-			$bgcolor_array[4]	= '#dac0c0';
-			$bgcolor_array[5]	= '#dababa';
-			$bgcolor_array[6]	= '#dab0b0';
-			$bgcolor_array[7]	= '#daaaaa';
-			$bgcolor_array[8]	= '#da9090';
-			$bgcolor_array[9]	= '#da8a8a';
-			$bgcolor_array[10]	= '#da7a7a';
+			$bgcolor_array[1]	= '#dadada';
+			$bgcolor_array[2]	= '#dad0d0';
+			$bgcolor_array[3]	= '#dacaca';
+			$bgcolor_array[4]	= '#dac0c0';
+			$bgcolor_array[5]	= '#dababa';
+			$bgcolor_array[6]	= '#dab0b0';
+			$bgcolor_array[7]	= '#daaaaa';
+			$bgcolor_array[8]	= '#da9090';
+			$bgcolor_array[9]	= '#da8a8a';
+			$bgcolor_array[10]	= '#da7a7a';
 */
 			$bgcolor_array[1]	= '#da7a7a';
 			$bgcolor_array[2]	= '#dababa';
@@ -351,7 +368,7 @@
 				$values_combo_box = array();
 
 				$values_combo_box[2]  = $this->bo->filter(array('format' => $group_filters, 'filter'=> $this->status_id,'default' => 'O'));
-				$default_value = array ('id'=>'','name'=>lang('Open'));
+				$default_value = array ('id'=>'','name'=>isset($this->bo->config->config_data['tts_lang_open']) && $this->bo->config->config_data['tts_lang_open'] ? $this->bo->config->config_data['tts_lang_open'] : lang('Open'));
 				array_unshift ($values_combo_box[2],$default_value);
 
 				if(!$this->_simple)
@@ -359,11 +376,11 @@
 					$values_combo_box[0] = $this->cats->formatted_xslt_list(array('format'=>'filter','selected' => $this->cat_id,'globals' => True));
 					$default_value = array ('cat_id'=>'','name'=> lang('no category'));
 					array_unshift ($values_combo_box[0]['cat_list'],$default_value);
-
+
 					$values_combo_box[1]  = $this->bocommon->select_district_list('filter',$this->district_id);
 					$default_value = array ('id'=>'','name'=>lang('no district'));
 					array_unshift ($values_combo_box[1],$default_value);
-
+
 					$values_combo_box[3]  = $this->bocommon->get_user_list_right2('filter',2,$this->user_id,$this->acl_location);
 					$default_value = array ('id'=>'','name'=>lang('no user'));
 					array_unshift ($values_combo_box[3],$default_value);
@@ -585,7 +602,7 @@
 			}
 			else
 			{
-			$ticket_list = $this->bo->read($start_date,$end_date);
+				$ticket_list = $this->bo->read($start_date,$end_date);
 			}
 			$this->bo->get_origin_entity_type();
 			$uicols_related = $this->bo->uicols_related;
@@ -604,6 +621,12 @@
 			$uicols['name'][$i++] = 'assignedto';
 			$uicols['name'][$i++] = 'entry_date';
 			$uicols['name'][$i++] = 'status';
+			
+			if( $this->acl->check('.ticket.order', PHPGW_ACL_READ, 'property') )
+			{
+				$uicols['name'][$i++] = 'order_id';
+			}
+
 			foreach($uicols_related as $related)
 			{
 				$uicols['name'][$i++] = $related;			
@@ -616,53 +639,53 @@
 			$uicols['name'][$i++] = 'link_view';
 			$uicols['name'][$i++] = 'lang_view_statustext';
 			$uicols['name'][$i++] = 'text_view';
-
+
 			$count_uicols_name = count($uicols['name']);
-
+
 			$j = 0;
 			$k = 0;
-			if(is_array($ticket_list))
-			{
-				$status['X'] = array
-				(
-					'bgcolor'			=> '#5EFB6E',
-					'status'			=> lang('closed'),
-					'text_edit_status'	=> lang('Open'),
+			if(is_array($ticket_list))
+			{
+				$status['X'] = array
+				(
+					'bgcolor'			=> '#5EFB6E',
+					'status'			=> lang('closed'),
+					'text_edit_status'	=> lang('Open'),
 					'new_status' 		=> 'O'
-				);
-
-				$custom_status	= $this->bo->get_custom_status();
-
-				foreach($custom_status as $custom)
-				{
-					$status["C{$custom['id']}"] = array
-					(
-						'bgcolor'			=> $custom['color'] ? $custom['color'] : '',
-						'status'			=> $custom['name'],
-						'text_edit_status'	=> lang('close'),
-						'new_status'		=> 'X'
-					);
-				}
-
-				foreach($ticket_list as $ticket)
-				{
+				);
+
+				$custom_status	= $this->bo->get_custom_status();
+
+				foreach($custom_status as $custom)
+				{
+					$status["C{$custom['id']}"] = array
+					(
+						'bgcolor'			=> $custom['color'] ? $custom['color'] : '',
+						'status'			=> $custom['name'],
+						'text_edit_status'	=> lang('close'),
+						'new_status'		=> 'X'
+					);
+				}
+
+				foreach($ticket_list as $ticket)
+				{
 					for ($k=0;$k<$count_uicols_name;$k++)
-					{
+					{
 						if($uicols['name'][$k] == 'status' && $ticket[$uicols['name'][$k]]=='O')
 						{
 							$datatable['rows']['row'][$j]['column'][$k]['name']		= $uicols['name'][$k];
 							$datatable['rows']['row'][$j]['column'][$k]['value'] 	= lang('Open');
-					}
+						}
 						else if($uicols['name'][$k] == 'status' && $ticket[$uicols['name'][$k]]=='C')
 						{
 							$datatable['rows']['row'][$j]['column'][$k]['name']		= $uicols['name'][$k];
 							$datatable['rows']['row'][$j]['column'][$k]['value'] 	= lang('Closed');
-				}
+						}
 						else if($uicols['name'][$k] == 'status' && array_key_exists($ticket[$uicols['name'][$k]],$status))
 						{
 							$datatable['rows']['row'][$j]['column'][$k]['name']		= $uicols['name'][$k];
 							$datatable['rows']['row'][$j]['column'][$k]['value'] 	= $status[$ticket[$uicols['name'][$k]]]['status'];
-			}
+						}
 						else
 						{
 							$datatable['rows']['row'][$j]['column'][$k]['name']		= $uicols['name'][$k];
@@ -672,7 +695,7 @@
 						{
 							$datatable['rows']['row'][$j]['column'][$k]['format'] 	= 'link';
 							$datatable['rows']['row'][$j]['column'][$k]['link']		=	$GLOBALS['phpgw']->link('/index.php',array
-										(
+								(
 									'menuaction'	=> 'property.uitts.view',
 									'id'			=> $ticket['id']
 								));
@@ -690,7 +713,7 @@
 								$datatable['rows']['row'][$j]['column'][$k]['value']	= $ticket['child_date'][$n]['date_info'][0]['entry_date'];
 								$datatable['rows']['row'][$j]['column'][$k]['statustext']	= $ticket['child_date'][$n]['statustext'];
 								$datatable['rows']['row'][$j]['column'][$k]['target']	= '_blank';
-
+								
 							}
 							$n++;
 						}
@@ -699,33 +722,48 @@
 					$j++;
 				}
 			}
-
+
 			$parameters = array
-										(
+			(
 				'parameter' => array
-										(
+				(
 					array
-										(
+					(
 						'name'		=> 'id',
 						'source'	=> 'id'
 					),
-																	)
-			);
-
+				)
+			);
+
 			if($this->acl_read)
-			{
+			{
 				$datatable['rowactions']['action'][] = array(
 					'my_name' 			=> 'view',
-					'statustext' 	=> lang('view the project'),
+					'statustext' 	=> lang('view the ticket'),
 					'text'			=> lang('view'),
 					'action'		=> $GLOBALS['phpgw']->link('/index.php',array
-			(
+							(
 								'menuaction'	=> 'property.uitts.view'
 							)),
 				'parameters'	=> $parameters
-			);
+				);
 			}
 
+			if($this->acl_delete)
+			{
+				$datatable['rowactions']['action'][] = array(
+					'my_name' 			=> 'delete',
+					'statustext' 	=> lang('delete the ticket'),
+					'text'			=> lang('delete'),
+					'confirm_msg'	=> lang('do you really want to delete this ticket'),
+					'action'		=> $GLOBALS['phpgw']->link('/index.php',array
+							(
+								'menuaction'	=> 'property.uitts.delete'
+							)),
+				'parameters'	=> $parameters
+				);
+			}
+
 			if(isset($GLOBALS['phpgw_info']['user']['preferences']['property']['tts_status_link'])
 				&& $GLOBALS['phpgw_info']['user']['preferences']['property']['tts_status_link'] == 'yes'
 				&& $this->acl_edit)
@@ -739,23 +777,23 @@
 						'text' 			=> lang('change to') . ':  ' .$status_info['status'],
 						'confirm_msg'	=> lang('do you really want to change the status to %1',$status_info['status']),
 						'action'		=> $GLOBALS['phpgw']->link('/index.php',array
-			(
+								(
 									'menuaction'		=> 'property.uitts.edit_status',
 									'edit_status'		=> true,
 									'new_status'		=> $status_code,
 									'second_display'	=> true,
-				'sort'		=> $this->sort,
-				'order'		=> $this->order,
-				'cat_id'	=> $this->cat_id,
-				'filter'	=> $this->filter,
-				'user_filter'	=> $this->user_filter,
-				'query'		=> $this->query,
-				'district_id'	=> $this->district_id,
+									'sort'				=> $this->sort,
+									'order'				=> $this->order,
+									'cat_id'			=> $this->cat_id,
+									'filter'			=> $this->filter,
+									'user_filter'		=> $this->user_filter,
+									'query'				=> $this->query,
+									'district_id'		=> $this->district_id,
 									'allrows'			=> $this->allrows,
 									'delete'			=> 'dummy'// FIXME to trigger the json in property.js.
 									)),
 						'parameters'	=> $parameters
-			);
+					);
 				}
 			}
 
@@ -771,33 +809,33 @@
 										))
 				);
 			}
-
+
 			unset($parameters);
 			for ($i=0;$i<$count_uicols_name;$i++)
 			{
-				if($uicols['input_type'][$i]!='hidden')
+		//		if($uicols['input_type'][$i]!='hidden')
 				{
-					$datatable['headers']['header'][$i]['formatter'] 		= ($uicols['formatter'][$i]==''?  '""' : $uicols['formatter'][$i]);
+					$datatable['headers']['header'][$i]['formatter'] 		= !isset($uicols['formatter'][$i]) || $uicols['formatter'][$i]==''?  '""' : $uicols['formatter'][$i];
 					$datatable['headers']['header'][$i]['name'] 			= $uicols['name'][$i];
 					$datatable['headers']['header'][$i]['text'] 			= lang($uicols['name'][$i]);
 					$datatable['headers']['header'][$i]['visible'] 			= true;
 					$datatable['headers']['header'][$i]['sortable']			= false;
-					if($uicols['name'][$i]=='priority' || $uicols['name'][$i]=='id' || $uicols['name'][$i]=='assignedto' || $uicols['name'][$i]=='finnish_date'|| $uicols['name'][$i]=='user'|| $uicols['name'][$i]=='entry_date')
+					if($uicols['name'][$i]=='priority' || $uicols['name'][$i]=='id' || $uicols['name'][$i]=='assignedto' || $uicols['name'][$i]=='finnish_date'|| $uicols['name'][$i]=='user'|| $uicols['name'][$i]=='entry_date' || $uicols['name'][$i]=='order_id')
 					{
 						$datatable['headers']['header'][$i]['sortable']		= true;
 						$datatable['headers']['header'][$i]['sort_field']   = $uicols['name'][$i];
 					}
 					if($uicols['name'][$i]=='text_view' || $uicols['name'][$i]=='bgcolor' || $uicols['name'][$i]=='child_date' || $uicols['name'][$i]== 'link_view' || $uicols['name'][$i]=='lang_view_statustext')
-			{
+					{
 						$datatable['headers']['header'][$i]['visible'] 		= false;
 						$datatable['headers']['header'][$i]['format'] 		= 'hidden';
 					}
 				}
-			}
-
+			}
+
 			//path for property.js
 			$datatable['property_js'] = $GLOBALS['phpgw_info']['server']['webserver_url']."/property/js/yahoo/property.js";
-
+
 			// Pagination and sort values
 			$datatable['pagination']['records_start'] 	= (int)$this->bo->start;
 			$datatable['pagination']['records_limit'] 	= $GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs'];
@@ -810,40 +848,40 @@
 			$function_msg					= lang('list ticket');
 
 			if ( (phpgw::get_var("start")== "") && (phpgw::get_var("order",'string')== ""))
-			{
+			{
 				$datatable['sorting']['order'] 			= 'entry_date'; // name key Column in myColumnDef
 				$datatable['sorting']['sort'] 			= 'desc'; // ASC / DESC
-			}
-			else
-			{
+			}
+			else
+			{
 				$datatable['sorting']['order']			= phpgw::get_var('order', 'string'); // name of column of Database
 				$datatable['sorting']['sort'] 			= phpgw::get_var('sort', 'string'); // ASC / DESC
-			}
-
+			}
+
 			phpgwapi_yui::load_widget('dragdrop');
 		  	phpgwapi_yui::load_widget('datatable');
 		  	phpgwapi_yui::load_widget('menu');
 		  	phpgwapi_yui::load_widget('connection');
 		  	phpgwapi_yui::load_widget('loader');
 		  	phpgwapi_yui::load_widget('paginator');
-
+
 //-- BEGIN----------------------------- JSON CODE ------------------------------
 			if( phpgw::get_var('phpgw_return_as') == 'json' )
 			{
     		//values for Pagination
 	    		$json = array
-			(
+	    		(
 	    			'recordsReturned' 	=> $datatable['pagination']['records_returned'],
     				'totalRecords' 		=> (int)$datatable['pagination']['records_total'],
 	    			'startIndex' 		=> $datatable['pagination']['records_start'],
 					'sort'				=> $datatable['sorting']['order'],
 	    			'dir'				=> $datatable['sorting']['sort'],
 					'records'			=> array()
-			);
-
+	    		);
+
 				// values for datatable
 	    		if(isset($datatable['rows']['row']) && is_array($datatable['rows']['row']))
-			{
+	    		{
 	    			foreach( $datatable['rows']['row'] as $row )
 	    			{
 		    			$json_row = array();
@@ -856,12 +894,12 @@
 		    				else if(isset($column['format']) && $column['format']== "link")
 		    				{
 		    				  $json_row[$column['name']] = "<a href='".$column['link']."' title = '{$column['statustext']}'>" .$column['value']."</a>";
-			}
-			else
-			{
+		    				}
+		    				else
+		    				{
 		    				  $json_row[$column['name']] = $column['value'];
-			}
-
+		    				}
+
 		    				if($column['name'] == 'priority')
 		    				{
 			    				$_value = $column['value'];//str_repeat("||", abs(6 - 2*$column['value'])) . $column['value'];
@@ -879,13 +917,13 @@
 										break;
 								}
 								unset($_value);
-
+
 		    				}
 		    			}
 		    			$json['records'][] = $json_row;
 	    			}
 	    		}
-
+
 				// values for control select
 				$opt_cb_depend =  $this->bocommon->select_part_of_town('filter',$this->part_of_town_id,$this->district_id);
 		 		$default_value = array ('id'=>'','name'=>'!no part of town');
@@ -901,7 +939,7 @@
 		    		return $json;
 			}
 //-------------------- JSON CODE ----------------------
-
+
 // Prepare template variables and process XSLT
 			$template_vars = array();
 			$template_vars['datatable'] = $datatable;
@@ -912,7 +950,7 @@
 	      	{
 	        	$GLOBALS['phpgw']->css = createObject('phpgwapi.css');
 	      	}
-
+
 			// Prepare CSS Style
 		  	$GLOBALS['phpgw']->css->validate_file('datatable');
 		  	$GLOBALS['phpgw']->css->validate_file('property');
@@ -920,440 +958,440 @@
 			$GLOBALS['phpgw']->css->add_external_file('phpgwapi/js/yahoo/datatable/assets/skins/sam/datatable.css');
 			$GLOBALS['phpgw']->css->add_external_file('phpgwapi/js/yahoo/paginator/assets/skins/sam/paginator.css');
 			$GLOBALS['phpgw']->css->add_external_file('phpgwapi/js/yahoo/container/assets/skins/sam/container.css');
-
-			$GLOBALS['phpgw_info']['flags']['app_header'] = lang('property') . ' - ' . $appname . ': ' . $function_msg;
 	
+			$GLOBALS['phpgw_info']['flags']['app_header'] = lang('property') . ' - ' . $appname . ': ' . $function_msg;
+	
 			$GLOBALS['phpgw']->js->validate_file( 'yahoo', $this->_simple ? 'tts.index.simple' : 'tts.index' , 'property' );
-		}
-
-		function index2()
-		{
-			if(!$this->acl->check('.ticket.external', PHPGW_ACL_READ, 'property'))
-			{
-				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=> 1, 'acl_location'=> '.ticket.external'));
-			}
-
-			$GLOBALS['phpgw']->xslttpl->add_file(array('tts',
-										'nextmatchs'));
-
-
-			$second_display = phpgw::get_var('second_display', 'bool');
-
-			$default_category = (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['default_district'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['default_district']:'');
-			$default_status = (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['tts_status'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['tts_status']:'');
-			$start_date 	= urldecode($this->start_date);
-			$end_date 	= urldecode($this->end_date);
-
-			if ($default_category && !$second_display && !$this->district_id)
-			{
-				$this->bo->district_id	= $default_category;
-				$this->district_id		= $default_category;
-			}
-
-			if ($default_status && !$second_display)
-			{
+		}
+
+		function index2()
+		{
+			if(!$this->acl->check('.ticket.external', PHPGW_ACL_READ, 'property'))
+			{
+				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=> 1, 'acl_location'=> '.ticket.external'));
+			}
+
+			$GLOBALS['phpgw']->xslttpl->add_file(array('tts',
+										'nextmatchs'));
+
+
+			$second_display = phpgw::get_var('second_display', 'bool');
+
+			$default_category = (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['default_district'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['default_district']:'');
+			$default_status = (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['tts_status'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['tts_status']:'');
+			$start_date 	= urldecode($this->start_date);
+			$end_date 	= urldecode($this->end_date);
+
+			if ($default_category && !$second_display && !$this->district_id)
+			{
+				$this->bo->district_id	= $default_category;
+				$this->district_id		= $default_category;
+			}
+
+			if ($default_status && !$second_display)
+			{
 				$this->bo->status_id	= $default_status;
 				$this->status_id	= $default_status;
-			}
-
+			}
+
 			$bgcolor_array[1]	= '#da7a7a';
 			$bgcolor_array[2]	= '#dababa';
 			$bgcolor_array[3]	= '#dadada';
-
-
+
+
 			$ticket_list = $this->bo->read($start_date,$end_date);
 			$uicols = $this->bo->uicols;
-
-//_debug_array($uicols);
-//_debug_array($ticket_list);
-			while (is_array($ticket_list) && list(,$ticket) = each($ticket_list))
-			{
-				if ($ticket['status']=='O')
-				{
-					$status = lang('Open');
-				}
-				else
-				{
-					$status = lang('Closed');
-				}
-
-				$content[] = array
-				(
-					'id'					=> $ticket['id'],
-					'bgcolor'				=> $bgcolor[$ticket['priority']],
+
+//_debug_array($uicols);
+//_debug_array($ticket_list);
+			while (is_array($ticket_list) && list(,$ticket) = each($ticket_list))
+			{
+				if ($ticket['status']=='O')
+				{
+					$status = lang('Open');
+				}
+				else
+				{
+					$status = lang('Closed');
+				}
+
+				$content[] = array
+				(
+					'id'					=> $ticket['id'],
+					'bgcolor'				=> $bgcolor[$ticket['priority']],
 					'new_ticket'			=> $ticket['new_ticket']?$ticket['new_ticket']:'',
-					'priostr'				=> str_repeat("||", $ticket['priority']),
-					'subject'				=> $ticket['subject'],
-					'location_code'			=> $ticket['location_code'],
-					'address'				=> $ticket['address'],
+					'priostr'				=> str_repeat("||", $ticket['priority']),
+					'subject'				=> $ticket['subject'],
+					'location_code'			=> $ticket['location_code'],
+					'address'				=> $ticket['address'],
 					'date'					=> $ticket['entry_date'],
-					'finnish_date'			=> $ticket['finnish_date'],
-					'delay'					=> (isset($ticket['delay'])?$ticket['delay']:''),
-					'user'					=> $ticket['user'],
-					'assignedto'			=> $ticket['assignedto'],
-					'child_date'			=> $ticket['child_date'],
-					'link_view'				=> $GLOBALS['phpgw']->link('/index.php',array('menuaction'=> 'property.uitts.view2', 'id'=> $ticket['id'])),
-					'lang_view_statustext'	=> lang('view the ticket'),
-					'text_view'				=> lang('view'),
-					'status'				=> $status,
-				);
-			}
-
-			$table_header[] = array
-			(
-				'sort_priority'	=> $this->nextmatchs->show_sort_order(array
-										(
-											'sort'	=> $this->sort,
-											'var'	=> 'priority',
-											'order'	=> $this->order,
-											'extra'	=> array('menuaction' => 'property.uitts.index',
-																	'cat_id'	=>$this->cat_id,
+					'finnish_date'			=> $ticket['finnish_date'],
+					'delay'					=> (isset($ticket['delay'])?$ticket['delay']:''),
+					'user'					=> $ticket['user'],
+					'assignedto'			=> $ticket['assignedto'],
+					'child_date'			=> $ticket['child_date'],
+					'link_view'				=> $GLOBALS['phpgw']->link('/index.php',array('menuaction'=> 'property.uitts.view2', 'id'=> $ticket['id'])),
+					'lang_view_statustext'	=> lang('view the ticket'),
+					'text_view'				=> lang('view'),
+					'status'				=> $status,
+				);
+			}
+
+			$table_header[] = array
+			(
+				'sort_priority'	=> $this->nextmatchs->show_sort_order(array
+										(
+											'sort'	=> $this->sort,
+											'var'	=> 'priority',
+											'order'	=> $this->order,
+											'extra'	=> array('menuaction' => 'property.uitts.index',
+																	'cat_id'	=>$this->cat_id,
 																	'filter'	=>$this->status_id,
 																	'user_id'	=>$this->user_id,
-																	'district_id'	=> $this->district_id,
-																	'query'		=>$this->query,
-																	'second_display'	=> true,
-																	'allrows'=>$this->allrows,
-																	'start_date'	=>$start_date,
-																	'end_date'	=>$end_date
-																	)
-										)),
-
-				'lang_priority'		=> lang('Priority'),
-				'lang_priority_statustext'		=> lang('Sort the tickets by their priority'),
-
-				'sort_id'	=> $this->nextmatchs->show_sort_order(array
-										(
-											'sort'	=> $this->sort,
-											'var'	=> 'fm_tts_tickets.id',
-											'order'	=> $this->order,
-											'extra'	=> array('menuaction' => 'property.uitts.index',
-																	'cat_id'	=>$this->cat_id,
+																	'district_id'	=> $this->district_id,
+																	'query'		=>$this->query,
+																	'second_display'	=> true,
+																	'allrows'=>$this->allrows,
+																	'start_date'	=>$start_date,
+																	'end_date'	=>$end_date
+																	)
+										)),
+
+				'lang_priority'		=> lang('Priority'),
+				'lang_priority_statustext'		=> lang('Sort the tickets by their priority'),
+
+				'sort_id'	=> $this->nextmatchs->show_sort_order(array
+										(
+											'sort'	=> $this->sort,
+											'var'	=> 'fm_tts_tickets.id',
+											'order'	=> $this->order,
+											'extra'	=> array('menuaction' => 'property.uitts.index',
+																	'cat_id'	=>$this->cat_id,
 																	'filter'	=>$this->status_id,
 																	'user_id'	=>$this->user_id,
-																	'district_id'	=> $this->district_id,
-																	'query'		=>$this->query,
-																	'second_display'	=> true,
-																	'allrows'=>$this->allrows,
-																	'start_date'	=>$start_date,
-																	'end_date'	=>$end_date
-																	)
-										)),
-
-				'lang_id'		=> lang('ID'),
-				'lang_id_statustext'	=> lang('Sort the tickets by their ID'),
-
-				'lang_subject'		=> lang('Subject'),
-				'lang_time_created'	=> lang('Started'),
-				'lang_view'		=> lang('view'),
-				'lang_location_code'	=> lang('Location'),
-				'lang_address'		=> lang('Address'),
-				'lang_user'		=> lang('user'),
-				'sort_assigned_to'	=> $this->nextmatchs->show_sort_order(array
-										(
-											'sort'	=> $this->sort,
-											'var'	=> 'assignedto',
-											'order'	=> $this->order,
-											'extra'	=> array('menuaction' => 'property.uitts.index',
-																	'cat_id'	=>$this->cat_id,
+																	'district_id'	=> $this->district_id,
+																	'query'		=>$this->query,
+																	'second_display'	=> true,
+																	'allrows'=>$this->allrows,
+																	'start_date'	=>$start_date,
+																	'end_date'	=>$end_date
+																	)
+										)),
+
+				'lang_id'		=> lang('ID'),
+				'lang_id_statustext'	=> lang('Sort the tickets by their ID'),
+
+				'lang_subject'		=> lang('Subject'),
+				'lang_time_created'	=> lang('Started'),
+				'lang_view'		=> lang('view'),
+				'lang_location_code'	=> lang('Location'),
+				'lang_address'		=> lang('Address'),
+				'lang_user'		=> lang('user'),
+				'sort_assigned_to'	=> $this->nextmatchs->show_sort_order(array
+										(
+											'sort'	=> $this->sort,
+											'var'	=> 'assignedto',
+											'order'	=> $this->order,
+											'extra'	=> array('menuaction' => 'property.uitts.index',
+																	'cat_id'	=>$this->cat_id,
 																	'filter'	=>$this->status_id,
 																	'user_id'	=>$this->user_id,
-																	'district_id'	=> $this->district_id,
-																	'query'		=>$this->query,
-																	'second_display'	=> true,
-																	'allrows'=>$this->allrows,
-																	'start_date'	=>$start_date,
-																	'end_date'	=>$end_date
-																	)
-										)),
-				'lang_assigned_to'	=> lang('Assigned to'),
-				'sort_opened_by'	=> $this->nextmatchs->show_sort_order(array
-										(
-											'sort'	=> $this->sort,
-											'var'	=> 'user_lid',
-											'order'	=> $this->order,
-											'extra'	=> array('menuaction'	=> 'property.uitts.index',
-																	'cat_id'	=>$this->cat_id,
+																	'district_id'	=> $this->district_id,
+																	'query'		=>$this->query,
+																	'second_display'	=> true,
+																	'allrows'=>$this->allrows,
+																	'start_date'	=>$start_date,
+																	'end_date'	=>$end_date
+																	)
+										)),
+				'lang_assigned_to'	=> lang('Assigned to'),
+				'sort_opened_by'	=> $this->nextmatchs->show_sort_order(array
+										(
+											'sort'	=> $this->sort,
+											'var'	=> 'user_lid',
+											'order'	=> $this->order,
+											'extra'	=> array('menuaction'	=> 'property.uitts.index',
+																	'cat_id'	=>$this->cat_id,
 																	'filter'	=>$this->status_id,
 																	'user_id'	=>$this->user_id,
-																	'district_id'	=> $this->district_id,
-																	'query'		=>$this->query,
-																	'second_display'	=> true,
-																	'allrows'=>$this->allrows,
-																	'start_date'	=>$start_date,
-																	'end_date'	=>$end_date
-																	)
-										)),
-				'sort_date'	=> $this->nextmatchs->show_sort_order(array
-										(
-											'sort'	=> $this->sort,
-											'var'	=> 'fm_tts_tickets.entry_date',
-											'order'	=> $this->order,
-											'extra' => array('menuaction'	=> 'property.uitts.index',
-																	'cat_id'	=>$this->cat_id,
+																	'district_id'	=> $this->district_id,
+																	'query'		=>$this->query,
+																	'second_display'	=> true,
+																	'allrows'=>$this->allrows,
+																	'start_date'	=>$start_date,
+																	'end_date'	=>$end_date
+																	)
+										)),
+				'sort_date'	=> $this->nextmatchs->show_sort_order(array
+										(
+											'sort'	=> $this->sort,
+											'var'	=> 'fm_tts_tickets.entry_date',
+											'order'	=> $this->order,
+											'extra' => array('menuaction'	=> 'property.uitts.index',
+																	'cat_id'	=>$this->cat_id,
 																	'filter'	=>$this->status_id,
 																	'user_id'	=>$this->user_id,
-																	'district_id'	=> $this->district_id,
-																	'query'		=>$this->query,
-																	'second_display'	=> true,
-																	'allrows'=>$this->allrows,
-																	'start_date'	=>$start_date,
-																	'end_date'	=>$end_date
-																	)
-										)),
-				'sort_finnish_date'	=> $this->nextmatchs->show_sort_order(array
-										(
-											'sort'	=> $this->sort,
-											'var'	=> 'finnish_date',
-											'order'	=> $this->order,
-											'extra'	=> array('menuaction'	=> 'property.uitts.index',
-																	'cat_id'	=> $this->cat_id,
+																	'district_id'	=> $this->district_id,
+																	'query'		=>$this->query,
+																	'second_display'	=> true,
+																	'allrows'=>$this->allrows,
+																	'start_date'	=>$start_date,
+																	'end_date'	=>$end_date
+																	)
+										)),
+				'sort_finnish_date'	=> $this->nextmatchs->show_sort_order(array
+										(
+											'sort'	=> $this->sort,
+											'var'	=> 'finnish_date',
+											'order'	=> $this->order,
+											'extra'	=> array('menuaction'	=> 'property.uitts.index',
+																	'cat_id'	=> $this->cat_id,
 																	'filter'	=> $this->status_id,
 																	'user_id'	=> $this->user_id,
-																	'district_id'	=> $this->district_id,
-																	'query'		=> $this->query,
-																	'second_display'=> true,
-																	'allrows'	=> $this->allrows,
-																	'start_date'	=> $start_date,
-																	'end_date'	=> $end_date
-																	)
-										)),
-				'lang_finnish_date'	=> lang('finnish date'),
-				'lang_delay'		=> lang('delay'),
-				'lang_finnish_statustext'=> lang('presumed finnish date'),
-				'lang_opened_by'	=> lang('Opened by'),
-				'lang_status'		=> lang('Status')
-			);
-
-			for ($i=0;$i<count($uicols);$i++)
-			{
-				$table_header[0]['extra'][$i]['header'] = $uicols[$i];
-			}
-
-			$table_add[] = array
-			(
-				'lang_add'				=> lang('add'),
-				'lang_add_statustext'	=> lang('add a ticket'),
-				'add_action'			=> $GLOBALS['phpgw']->link('/index.php',array('menuaction'=> 'property.uitts.add2'))
-			);
-
-			$link_data = array
-			(
-				'menuaction'		=> 'property.uitts.index2',
-				'second_display'	=> true,
-				'sort'				=> $this->sort,
-				'order'				=> $this->order,
-				'cat_id'			=> $this->cat_id,
+																	'district_id'	=> $this->district_id,
+																	'query'		=> $this->query,
+																	'second_display'=> true,
+																	'allrows'	=> $this->allrows,
+																	'start_date'	=> $start_date,
+																	'end_date'	=> $end_date
+																	)
+										)),
+				'lang_finnish_date'	=> lang('finnish date'),
+				'lang_delay'		=> lang('delay'),
+				'lang_finnish_statustext'=> lang('presumed finnish date'),
+				'lang_opened_by'	=> lang('Opened by'),
+				'lang_status'		=> lang('Status')
+			);
+
+			for ($i=0;$i<count($uicols);$i++)
+			{
+				$table_header[0]['extra'][$i]['header'] = $uicols[$i];
+			}
+
+			$table_add[] = array
+			(
+				'lang_add'				=> lang('add'),
+				'lang_add_statustext'	=> lang('add a ticket'),
+				'add_action'			=> $GLOBALS['phpgw']->link('/index.php',array('menuaction'=> 'property.uitts.add2'))
+			);
+
+			$link_data = array
+			(
+				'menuaction'		=> 'property.uitts.index2',
+				'second_display'	=> true,
+				'sort'				=> $this->sort,
+				'order'				=> $this->order,
+				'cat_id'			=> $this->cat_id,
 				'filter'			=> $this->status_id,
 				'user_id'		=> $this->user_id,
-				'query'				=> $this->query,
-				'district_id'		=> $this->district_id,
-				'start_date'		=> $start_date,
-				'end_date'			=> $end_date,
-				'allrows'			=> $this->allrows
-			);
-
-			$receipt = $GLOBALS['phpgw']->session->appsession('receipt','property');
-			$GLOBALS['phpgw']->session->appsession('receipt','property','');
-
+				'query'				=> $this->query,
+				'district_id'		=> $this->district_id,
+				'start_date'		=> $start_date,
+				'end_date'			=> $end_date,
+				'allrows'			=> $this->allrows
+			);
+
+			$receipt = $GLOBALS['phpgw']->session->appsession('receipt','property');
+			$GLOBALS['phpgw']->session->appsession('receipt','property','');
+
 			$GLOBALS['phpgw']->preferences->read();
-			$autorefresh ='';
-			if (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['refreshinterval']))
-			{
-				$autorefresh = $GLOBALS['phpgw_info']['user']['preferences']['property']['refreshinterval'].'; URL='.$GLOBALS['phpgw']->link('/index.php',$link_data);
-			}
-
-			if(!$this->allrows)
-			{
-				$record_limit	= $GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs'];
-			}
-			else
-			{
-				$record_limit	= $this->bo->total_records;
-			}
-
-			$msgbox_data = $this->bocommon->msgbox_data($receipt);
-
-			$link_date_search	= $GLOBALS['phpgw']->link('/index.php',array('menuaction'=> 'property.uiproject.date_search'));
-
-			$link_download = array
-			(
-				'menuaction' 		=> 'property.uitts.download2',
-				'second_display'	=> true,
-				'sort'				=> $this->sort,
-				'order'				=> $this->order,
-				'cat_id'			=> $this->cat_id,
+			$autorefresh ='';
+			if (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['refreshinterval']))
+			{
+				$autorefresh = $GLOBALS['phpgw_info']['user']['preferences']['property']['refreshinterval'].'; URL='.$GLOBALS['phpgw']->link('/index.php',$link_data);
+			}
+
+			if(!$this->allrows)
+			{
+				$record_limit	= $GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs'];
+			}
+			else
+			{
+				$record_limit	= $this->bo->total_records;
+			}
+
+			$msgbox_data = $this->bocommon->msgbox_data($receipt);
+
+			$link_date_search	= $GLOBALS['phpgw']->link('/index.php',array('menuaction'=> 'property.uiproject.date_search'));
+
+			$link_download = array
+			(
+				'menuaction' 		=> 'property.uitts.download2',
+				'second_display'	=> true,
+				'sort'				=> $this->sort,
+				'order'				=> $this->order,
+				'cat_id'			=> $this->cat_id,
 				'filter'			=> $this->status_id,
 				'user_id'		=> $this->user_id,
-				'query'				=> $this->query,
-				'district_id'		=> $this->district_id,
-				'allrows'			=> $this->allrows,
-				'start_date'		=> $start_date,
-				'end_date'			=> $end_date,
-				'start'				=> $this->start
-			);
-
-			$GLOBALS['phpgw']->xslttpl->add_file(array('search_field'));
-
-			$GLOBALS['phpgw']->js->validate_file('overlib','overlib','property');
-
-			$data = array
-			(
-				'lang_download'					=> 'download',
-				'link_download'					=> $GLOBALS['phpgw']->link('/index.php',$link_download),
-				'lang_download_help'				=> lang('Download table to your browser'),
-
-				'start_date'					=> $start_date,
-				'end_date'						=> $end_date,
-				'lang_none'						=> lang('None'),
-				'lang_date_search'				=> lang('Date search'),
-				'lang_date_search_help'			=> lang('Narrow the search by dates'),
-				'link_date_search'				=> $link_date_search,
-
-				'msgbox_data'					=> $GLOBALS['phpgw']->common->msgbox($msgbox_data),
-				'autorefresh'					=> $autorefresh,
-				'allow_allrows'					=> true,
-				'allrows'						=> $this->allrows,
-				'start_record'					=> $this->start,
-				'record_limit'					=> $record_limit,
-				'num_records'					=> count($ticket_list),
-				'all_records'					=> $this->bo->total_records,
-				'link_url'						=> $GLOBALS['phpgw']->link('/index.php',$link_data),
-				'img_path'						=> $GLOBALS['phpgw']->common->get_image_path('phpgwapi','default'),
-
-				'select_action'					=> $GLOBALS['phpgw']->link('/index.php',$link_data),
-				'filter_name'					=> 'filter',
+				'query'				=> $this->query,
+				'district_id'		=> $this->district_id,
+				'allrows'			=> $this->allrows,
+				'start_date'		=> $start_date,
+				'end_date'			=> $end_date,
+				'start'				=> $this->start
+			);
+
+			$GLOBALS['phpgw']->xslttpl->add_file(array('search_field'));
+
+			$GLOBALS['phpgw']->js->validate_file('overlib','overlib','property');
+
+			$data = array
+			(
+				'lang_download'					=> 'download',
+				'link_download'					=> $GLOBALS['phpgw']->link('/index.php',$link_download),
+				'lang_download_help'				=> lang('Download table to your browser'),
+
+				'start_date'					=> $start_date,
+				'end_date'						=> $end_date,
+				'lang_none'						=> lang('None'),
+				'lang_date_search'				=> lang('Date search'),
+				'lang_date_search_help'			=> lang('Narrow the search by dates'),
+				'link_date_search'				=> $link_date_search,
+
+				'msgbox_data'					=> $GLOBALS['phpgw']->common->msgbox($msgbox_data),
+				'autorefresh'					=> $autorefresh,
+				'allow_allrows'					=> true,
+				'allrows'						=> $this->allrows,
+				'start_record'					=> $this->start,
+				'record_limit'					=> $record_limit,
+				'num_records'					=> count($ticket_list),
+				'all_records'					=> $this->bo->total_records,
+				'link_url'						=> $GLOBALS['phpgw']->link('/index.php',$link_data),
+				'img_path'						=> $GLOBALS['phpgw']->common->get_image_path('phpgwapi','default'),
+
+				'select_action'					=> $GLOBALS['phpgw']->link('/index.php',$link_data),
+				'filter_name'					=> 'filter',
 				'filter_list'					=> $this->bo->filter(array('format' => 'filter', 'filter'=> $this->status_id,'default' => 'open')),
-				'lang_show_all'					=> lang('Open'),
-				'lang_filter_statustext'		=> lang('Select the filter. To show all entries select SHOW ALL'),
-				'lang_searchfield_statustext'	=> lang('Enter the search string. To show all entries, empty this field and press the SUBMIT button again'),
-				'lang_searchbutton_statustext'	=> lang('Submit the search string'),
-				'query'							=> $this->query,
-				'lang_search'					=> lang('search'),
-				'table_header2'					=> $table_header,
-				'values2'						=> (isset($content)?$content:''),
-				'table_add'						=> $table_add,
-			);
-
-			$appname					= lang('helpdesk');
-			$function_msg					= lang('list ticket');
-
-			$GLOBALS['phpgw_info']['flags']['app_header'] = lang('property') . ' - ' . $appname . ': ' . $function_msg;
-			$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('list2' => $data));
-		//	$GLOBALS['phpgw']->xslttpl->pp();
-			$this->save_sessiondata();
-		}
-
-		function add()
-		{
-			if(!$this->acl_add)
-			{
-				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=> 2, 'acl_location'=> $this->acl_location));
-			}
+				'lang_show_all'					=> lang('Open'),
+				'lang_filter_statustext'		=> lang('Select the filter. To show all entries select SHOW ALL'),
+				'lang_searchfield_statustext'	=> lang('Enter the search string. To show all entries, empty this field and press the SUBMIT button again'),
+				'lang_searchbutton_statustext'	=> lang('Submit the search string'),
+				'query'							=> $this->query,
+				'lang_search'					=> lang('search'),
+				'table_header2'					=> $table_header,
+				'values2'						=> (isset($content)?$content:''),
+				'table_add'						=> $table_add,
+			);
+
+			$appname					= lang('helpdesk');
+			$function_msg					= lang('list ticket');
+
+			$GLOBALS['phpgw_info']['flags']['app_header'] = lang('property') . ' - ' . $appname . ': ' . $function_msg;
+			$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('list2' => $data));
+		//	$GLOBALS['phpgw']->xslttpl->pp();
+			$this->save_sessiondata();
+		}
+
+		function add()
+		{
+			if(!$this->acl_add)
+			{
+				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=> 2, 'acl_location'=> $this->acl_location));
+			}
 			if($this->tenant_id)
 			{
 				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uitts.add2'));
 			}
-
-			$bolocation		= CreateObject('property.bolocation');
-
-			$values		= phpgw::get_var('values');
+
+			$bolocation		= CreateObject('property.bolocation');
+
+			$values		= phpgw::get_var('values');
 			$values['contact_id']		= phpgw::get_var('contact', 'int', 'POST');
 			if ((isset($values['cancel']) && $values['cancel']))
 			{
 				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uitts.index'));
 			}
 
-//------------------- start ticket from other location
-			$bypass 		= phpgw::get_var('bypass', 'bool');
-			if(isset($_POST) && $_POST && isset($bypass) && $bypass)
-			{
-				$boadmin_entity		= CreateObject('property.boadmin_entity');
-				$location_code 		= phpgw::get_var('location_code');
-				$values['descr']	= phpgw::get_var('descr');
-				$p_entity_id		= phpgw::get_var('p_entity_id', 'int');
-				$p_cat_id		= phpgw::get_var('p_cat_id', 'int');
-				$values['p'][$p_entity_id]['p_entity_id']	= $p_entity_id;
-				$values['p'][$p_entity_id]['p_cat_id']		= $p_cat_id;
-				$values['p'][$p_entity_id]['p_num']		= phpgw::get_var('p_num');
-
-				$origin		= phpgw::get_var('origin');
-				$origin_id	= phpgw::get_var('origin_id', 'int');
-
-				if($p_entity_id && $p_cat_id)
-				{
-					$entity_category = $boadmin_entity->read_single_category($p_entity_id,$p_cat_id);
-					$values['p'][$p_entity_id]['p_cat_name'] = $entity_category['name'];
-				}
-
-				if($location_code)
-				{
+//------------------- start ticket from other location
+			$bypass 		= phpgw::get_var('bypass', 'bool');
+			if(isset($_POST) && $_POST && isset($bypass) && $bypass)
+			{
+				$boadmin_entity		= CreateObject('property.boadmin_entity');
+				$location_code 		= phpgw::get_var('location_code');
+				$values['descr']	= phpgw::get_var('descr');
+				$p_entity_id		= phpgw::get_var('p_entity_id', 'int');
+				$p_cat_id		= phpgw::get_var('p_cat_id', 'int');
+				$values['p'][$p_entity_id]['p_entity_id']	= $p_entity_id;
+				$values['p'][$p_entity_id]['p_cat_id']		= $p_cat_id;
+				$values['p'][$p_entity_id]['p_num']		= phpgw::get_var('p_num');
+
+				$origin		= phpgw::get_var('origin');
+				$origin_id	= phpgw::get_var('origin_id', 'int');
+
+				if($p_entity_id && $p_cat_id)
+				{
+					$entity_category = $boadmin_entity->read_single_category($p_entity_id,$p_cat_id);
+					$values['p'][$p_entity_id]['p_cat_name'] = $entity_category['name'];
+				}
+
+				if($location_code)
+				{
 					$values['location_data'] = $bolocation->read_single($location_code,array('tenant_id'=>$tenant_id,'p_num'=>$p_num, 'view' => true));
-				}
-			}
-
-			if(isset($values['origin']) && $values['origin'])
-			{
-				$origin		= $values['origin'];
-				$origin_id	= $values['origin_id'];
-			}
-
-			$interlink 	= CreateObject('property.interlink');
-
-			if(isset($origin) && $origin)
-			{
-				unset($values['origin']);
-				unset($values['origin_id']);
-				$values['origin'][0]['location']= $origin;
-				$values['origin'][0]['descr']= $interlink->get_location_name($origin);
-				$values['origin'][0]['data'][]= array(
-					'id'	=> $origin_id,
-					'link'	=> $interlink->get_relation_link(array('location' => $origin), $origin_id),
-					);
-			}
-//_debug_array($insert_record);
+				}
+			}
+
+			if(isset($values['origin']) && $values['origin'])
+			{
+				$origin		= $values['origin'];
+				$origin_id	= $values['origin_id'];
+			}
+
+			$interlink 	= CreateObject('property.interlink');
+
+			if(isset($origin) && $origin)
+			{
+				unset($values['origin']);
+				unset($values['origin_id']);
+				$values['origin'][0]['location']= $origin;
+				$values['origin'][0]['descr']= $interlink->get_location_name($origin);
+				$values['origin'][0]['data'][]= array(
+					'id'	=> $origin_id,
+					'link'	=> $interlink->get_relation_link(array('location' => $origin), $origin_id),
+					);
+			}
+//_debug_array($insert_record);
 			if ((isset($values['save']) && $values['save']) || (isset($values['apply']) && $values['apply']))
-			{
-				$insert_record = $GLOBALS['phpgw']->session->appsession('insert_record','property');
-				$insert_record_entity = $GLOBALS['phpgw']->session->appsession('insert_record_entity','property');
+			{
+				$insert_record = $GLOBALS['phpgw']->session->appsession('insert_record','property');
+				$insert_record_entity = $GLOBALS['phpgw']->session->appsession('insert_record_entity','property');
+
+				if(isset($insert_record_entity) && is_array($insert_record_entity))
+				{
+					for ($j=0;$j<count($insert_record_entity);$j++)
+					{
+						$insert_record['extra'][$insert_record_entity[$j]]	= $insert_record_entity[$j];
+					}
+				}
+
+				$values = $this->bocommon->collect_locationdata($values,$insert_record);
+
 
-				if(isset($insert_record_entity) && is_array($insert_record_entity))
-				{
-					for ($j=0;$j<count($insert_record_entity);$j++)
-					{
-						$insert_record['extra'][$insert_record_entity[$j]]	= $insert_record_entity[$j];
-					}
-				}
-
-				$values = $this->bocommon->collect_locationdata($values,$insert_record);
-
-
 				if(!$values['subject'] && isset($this->bo->config->config_data['tts_mandatory_title']) && $this->bo->config->config_data['tts_mandatory_title'])
 				{
 					$receipt['error'][]=array('msg'=>lang('Please enter a title !'));
 				}
 
-				if(!$values['cat_id'])
-				{
-					$receipt['error'][]=array('msg'=>lang('Please select a category !'));
-				}
-
-				if(!isset($values['details']) || !$values['details'])
-				{
-					$receipt['error'][]=array('msg'=>lang('Please give som details !'));
-				}
-
-				if((!isset($values['location']['loc1']) || !$values['location']['loc1']) && (!isset($values['extra']['p_num']) || !$values['extra']['p_num']))
-				{
-					$receipt['error'][]=array('msg'=>lang('Please select a location - or an entity!'));
-				}
-
-				if(!$values['assignedto'] && !$values['group_id'])
-				{
+				if(!$values['cat_id'])
+				{
+					$receipt['error'][]=array('msg'=>lang('Please select a category !'));
+				}
+
+				if(!isset($values['details']) || !$values['details'])
+				{
+					$receipt['error'][]=array('msg'=>lang('Please give som details !'));
+				}
+
+				if((!isset($values['location']['loc1']) || !$values['location']['loc1']) && (!isset($values['extra']['p_num']) || !$values['extra']['p_num']))
+				{
+					$receipt['error'][]=array('msg'=>lang('Please select a location - or an entity!'));
+				}
+
+				if(!$values['assignedto'] && !$values['group_id'])
+				{
 					$_responsible = execMethod('property.boresponsible.get_responsible', $values);
 					if(!$_responsible)
-					{
-						$receipt['error'][]=array('msg'=>lang('Please select a person or a group to handle the ticket !'));
+					{
+						$receipt['error'][]=array('msg'=>lang('Please select a person or a group to handle the ticket !'));
 					}
 					else
 					{
@@ -1376,350 +1414,350 @@
 					unset($_priority);
 				}
 
-				if(!isset($receipt['error']))
-				{
-					$receipt = $this->bo->add($values);
-
-//------------ files
-					$values['file_name'] = @str_replace(' ','_',$_FILES['file']['name']);
-
+				if(!isset($receipt['error']))
+				{
+					$receipt = $this->bo->add($values);
+
+//------------ files
+					$values['file_name'] = @str_replace(' ','_',$_FILES['file']['name']);
+
 					if($values['file_name'] && $receipt['id'])
-					{
-						$bofiles	= CreateObject('property.bofiles');
-						$to_file = $bofiles->fakebase . '/fmticket/' . $receipt['id'] . '/' . $values['file_name'];
+					{
+						$bofiles	= CreateObject('property.bofiles');
+						$to_file = $bofiles->fakebase . '/fmticket/' . $receipt['id'] . '/' . $values['file_name'];
+
+						if($bofiles->vfs->file_exists(array(
+								'string' => $to_file,
+								'relatives' => Array(RELATIVE_NONE)
+							)))
+						{
+							$receipt['error'][]=array('msg'=>lang('This file already exists !'));
+						}
+						else
+						{
+							$bofiles->create_document_dir("fmticket/{$receipt['id']}");
+							$bofiles->vfs->override_acl = 1;
+
+							if(!$bofiles->vfs->cp(array (
+								'from'	=> $_FILES['file']['tmp_name'],
+								'to'	=> $to_file,
+								'relatives'	=> array (RELATIVE_NONE|VFS_REAL, RELATIVE_ALL))))
+							{
+								$receipt['error'][]=array('msg'=>lang('Failed to upload file !'));
+							}
+							$bofiles->vfs->override_acl = 0;
+						}
+					}
+//--------------end files
+					$GLOBALS['phpgw']->session->appsession('receipt','property',$receipt);
+					$GLOBALS['phpgw']->session->appsession('session_data','fm_tts','');
 
-						if($bofiles->vfs->file_exists(array(
-								'string' => $to_file,
-								'relatives' => Array(RELATIVE_NONE)
-							)))
-						{
-							$receipt['error'][]=array('msg'=>lang('This file already exists !'));
-						}
-						else
-						{
-							$bofiles->create_document_dir("fmticket/{$receipt['id']}");
-							$bofiles->vfs->override_acl = 1;
-
-							if(!$bofiles->vfs->cp(array (
-								'from'	=> $_FILES['file']['tmp_name'],
-								'to'	=> $to_file,
-								'relatives'	=> array (RELATIVE_NONE|VFS_REAL, RELATIVE_ALL))))
-							{
-								$receipt['error'][]=array('msg'=>lang('Failed to upload file !'));
-							}
-							$bofiles->vfs->override_acl = 0;
-						}
-					}
-//--------------end files
-					$GLOBALS['phpgw']->session->appsession('receipt','property',$receipt);
-					$GLOBALS['phpgw']->session->appsession('session_data','fm_tts','');
-
 					if ((isset($values['save']) && $values['save']))
 					{
-					$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uitts.index'));
-				}
-				else
-				{
+						$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uitts.index'));
+					}
+					else
+					{
 						$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uitts.view', 'id' => $receipt['id'], 'tab' =>'general'));					
 					}
 				}
 				else
 				{
-					if(isset($values['location']) && $values['location'])
-					{
-						$location_code=implode("-", $values['location']);
-						$values['extra']['view'] = true;
-						$values['location_data'] = $bolocation->read_single($location_code, $values['extra']);
-					}
-					if(isset($values['extra']['p_num']) && $values['extra']['p_num'])
-					{
-						$values['p'][$values['extra']['p_entity_id']]['p_num']=$values['extra']['p_num'];
-						$values['p'][$values['extra']['p_entity_id']]['p_entity_id']=$values['extra']['p_entity_id'];
-						$values['p'][$values['extra']['p_entity_id']]['p_cat_id']=$values['extra']['p_cat_id'];
-						$values['p'][$values['extra']['p_entity_id']]['p_cat_name']=phpgw::get_var('entity_cat_name_'.$values['extra']['p_entity_id'], 'string', 'POST');
-					}
-				}
+					if(isset($values['location']) && $values['location'])
+					{
+						$location_code=implode("-", $values['location']);
+						$values['extra']['view'] = true;
+						$values['location_data'] = $bolocation->read_single($location_code, $values['extra']);
+					}
+					if(isset($values['extra']['p_num']) && $values['extra']['p_num'])
+					{
+						$values['p'][$values['extra']['p_entity_id']]['p_num']=$values['extra']['p_num'];
+						$values['p'][$values['extra']['p_entity_id']]['p_entity_id']=$values['extra']['p_entity_id'];
+						$values['p'][$values['extra']['p_entity_id']]['p_cat_id']=$values['extra']['p_cat_id'];
+						$values['p'][$values['extra']['p_entity_id']]['p_cat_name']=phpgw::get_var('entity_cat_name_'.$values['extra']['p_entity_id'], 'string', 'POST');
+					}
+				}
 			}
 
-			$location_data=$bolocation->initiate_ui_location(array(
-						'values'	=> (isset($values['location_data'])?$values['location_data']:''),
-						'type_id'	=> -1, // calculated from location_types
-						'no_link'	=> false, // disable lookup links for location type less than type_id
-						'tenant'	=> true,
-						'lookup_type'	=> 'form',
-						'lookup_entity'	=> $this->bocommon->get_lookup_entity('ticket'),
-						'entity_data'	=> (isset($values['p'])?$values['p']:'')
-						));
-
-
+			$location_data=$bolocation->initiate_ui_location(array(
+						'values'	=> (isset($values['location_data'])?$values['location_data']:''),
+						'type_id'	=> -1, // calculated from location_types
+						'no_link'	=> false, // disable lookup links for location type less than type_id
+						'tenant'	=> true,
+						'lookup_type'	=> 'form',
+						'lookup_entity'	=> $this->bocommon->get_lookup_entity('ticket'),
+						'entity_data'	=> (isset($values['p'])?$values['p']:'')
+						));
+
+
 			$contact_data=$this->bocommon->initiate_ui_contact_lookup(array(
 						'contact_id'		=> $ticket['contact_id'],
 						'field'				=> 'contact',
 						'type'				=> 'form'));
 
-			$link_data = array
-			(
-				'menuaction'	=> 'property.uitts.add'
-			);
+			$link_data = array
+			(
+				'menuaction'	=> 'property.uitts.add'
+			);
+
+			if(!isset($values['assignedto']))
+			{
+				$values['assignedto']= (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['assigntodefault'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['assigntodefault']:'');
+			}
+			if(!isset($values['group_id']))
+			{
+				$values['group_id']= (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['groupdefault'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['groupdefault']:'');
+			}
+
+			if(!isset($values['cat_id']))
+			{
+				$this->cat_id = (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['tts_category'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['tts_category']:'');
+			}
+			else
+			{
+				$this->cat_id = $values['cat_id'];
+			}
+
+			$msgbox_data = (isset($receipt)?$this->bocommon->msgbox_data($receipt):'');
+
 
-			if(!isset($values['assignedto']))
-			{
-				$values['assignedto']= (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['assigntodefault'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['assigntodefault']:'');
-			}
-			if(!isset($values['group_id']))
-			{
-				$values['group_id']= (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['groupdefault'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['groupdefault']:'');
-			}
-
-			if(!isset($values['cat_id']))
-			{
-				$this->cat_id = (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['tts_category'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['tts_category']:'');
-			}
-			else
-			{
-				$this->cat_id = $values['cat_id'];
-			}
-
-			$msgbox_data = (isset($receipt)?$this->bocommon->msgbox_data($receipt):'');
-
-
 			if(!$this->_simple && $this->_show_finnish_date)
 			{
-			$jscal = CreateObject('phpgwapi.jscalendar');
-			$jscal->add_listener('values_finnish_date');
+				$jscal = CreateObject('phpgwapi.jscalendar');
+				$jscal->add_listener('values_finnish_date');
 			}
-
-			$data = array
-			(
+
+			$data = array
+			(
 				'contact_data'					=> $contact_data,
 				'simple'						=> $this->_simple,
 				'show_finnish_date'				=> $this->_show_finnish_date,
-				'value_origin'					=> isset($values['origin']) ? $values['origin'] : '',
-				'value_origin_type'				=> (isset($origin)?$origin:''),
-				'value_origin_id'				=> (isset($origin_id)?$origin_id:''),
-
-				'msgbox_data'				=> $GLOBALS['phpgw']->common->msgbox($msgbox_data),
-				'location_data'				=> $location_data,
-				'lang_assign_to'			=> lang('Assign to'),
-				'lang_no_user'				=> lang('Select user'),
-				'lang_user_statustext'			=> lang('Select the user the selection belongs to. To do not use a user select NO USER'),
-				'select_user_name'			=> 'values[assignedto]',
-				'user_list'				=> $this->bocommon->get_user_list_right2('select',4,$values['assignedto'],$this->acl_location),
-
-				'lang_group'				=> lang('Group'),
-				'lang_no_group'				=> lang('No group'),
-				'group_list'				=> $this->bocommon->get_group_list('select',$values['group_id'],$start=-1,$sort='ASC',$order='account_firstname',$query='',$offset=-1),
-				'select_group_name'			=> 'values[group_id]',
-
-				'lang_priority'				=> lang('Priority'),
-				'lang_priority_statustext'		=> lang('Select the priority the selection belongs to.'),
-				'select_priority_name'			=> 'values[priority]',
-				'priority_list'				=> $this->bo->get_priority_list((isset($values['priority'])?$values['priority']:'')),
-
-				'form_action'				=> $GLOBALS['phpgw']->link('/index.php',$link_data),
-				'lang_subject'				=> lang('Subject'),
-				'lang_subject_statustext'		=> lang('Enter the subject of this ticket'),
-
-				'lang_details'				=> lang('Details'),
-				'lang_details_statustext'		=> lang('Enter the details of this ticket'),
-				'lang_category'				=> lang('category'),
-				'lang_save'				=> lang('save'),
+				'value_origin'					=> isset($values['origin']) ? $values['origin'] : '',
+				'value_origin_type'				=> (isset($origin)?$origin:''),
+				'value_origin_id'				=> (isset($origin_id)?$origin_id:''),
+
+				'msgbox_data'				=> $GLOBALS['phpgw']->common->msgbox($msgbox_data),
+				'location_data'				=> $location_data,
+				'lang_assign_to'			=> lang('Assign to'),
+				'lang_no_user'				=> lang('Select user'),
+				'lang_user_statustext'			=> lang('Select the user the selection belongs to. To do not use a user select NO USER'),
+				'select_user_name'			=> 'values[assignedto]',
+				'user_list'				=> $this->bocommon->get_user_list_right2('select',4,$values['assignedto'],$this->acl_location),
+
+				'lang_group'				=> lang('Group'),
+				'lang_no_group'				=> lang('No group'),
+				'group_list'				=> $this->bocommon->get_group_list('select',$values['group_id'],$start=-1,$sort='ASC',$order='account_firstname',$query='',$offset=-1),
+				'select_group_name'			=> 'values[group_id]',
+
+				'lang_priority'				=> lang('Priority'),
+				'lang_priority_statustext'		=> lang('Select the priority the selection belongs to.'),
+				'select_priority_name'			=> 'values[priority]',
+				'priority_list'				=> $this->bo->get_priority_list((isset($values['priority'])?$values['priority']:'')),
+
+				'form_action'				=> $GLOBALS['phpgw']->link('/index.php',$link_data),
+				'lang_subject'				=> lang('Subject'),
+				'lang_subject_statustext'		=> lang('Enter the subject of this ticket'),
+
+				'lang_details'				=> lang('Details'),
+				'lang_details_statustext'		=> lang('Enter the details of this ticket'),
+				'lang_category'				=> lang('category'),
+				'lang_save'					=> lang('save'),
 				'lang_cancel'				=> lang('cancel'),
 				'lang_send'					=> lang('send'),
-				'value_details'				=> (isset($values['details'])?$values['details']:''),
-				'value_subject'				=> (isset($values['subject'])?$values['subject']:''),
-
-				'lang_finnish_date'			=> lang('finnish date'),
-				'value_finnish_date'			=> (isset($values['finnish_date'])?$values['finnish_date']:''),
-				'img_cal'					=> $GLOBALS['phpgw']->common->image('phpgwapi','cal'),
-				'lang_datetitle'			=> lang('Select date'),
-				'lang_finnish_date_statustext'		=> lang('Select the estimated date for closing the task'),
-
+				'value_details'				=> (isset($values['details'])?$values['details']:''),
+				'value_subject'				=> (isset($values['subject'])?$values['subject']:''),
+
+				'lang_finnish_date'			=> lang('finnish date'),
+				'value_finnish_date'			=> (isset($values['finnish_date'])?$values['finnish_date']:''),
+				'img_cal'					=> $GLOBALS['phpgw']->common->image('phpgwapi','cal'),
+				'lang_datetitle'			=> lang('Select date'),
+				'lang_finnish_date_statustext'		=> lang('Select the estimated date for closing the task'),
+
 				'lang_cancel_statustext'			=> lang('Back to the ticket list'),
 				'lang_send_statustext'			=> lang('Save the entry and return to list'),
 				'lang_save_statustext'			=> lang('Save the ticket'),
-				'lang_no_cat'				=> lang('no category'),
-				'lang_town_statustext'			=> lang('Select the part of town the building belongs to. To do not use a part of town -  select NO PART OF TOWN'),
-				'lang_part_of_town'			=> lang('Part of town'),
-				'lang_no_part_of_town'			=> lang('No part of town'),
-				'cat_select'				=> $this->cats->formatted_xslt_list(array('select_name' => 'values[cat_id]','selected' => $this->cat_id)),
-
-				'mailnotification'			=> (isset($this->bo->config->config_data['mailnotification'])?$this->bo->config->config_data['mailnotification']:''),
-				'lang_mailnotification'			=> lang('Send e-mail'),
-				'lang_mailnotification_statustext'	=> lang('Choose to send mailnotification'),
-				'pref_send_mail'			=> (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['tts_user_mailnotification'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['tts_user_mailnotification']:''),
-				'fileupload'				=> (isset($this->bo->config->config_data['fmttsfileupload'])?$this->bo->config->config_data['fmttsfileupload']:''),
-			);
-
-//_debug_array($data);
-			$appname					= lang('helpdesk');
-			$function_msg					= lang('add ticket');
-
-			$GLOBALS['phpgw_info']['flags']['app_header'] = lang('property') . ' - ' . $appname . ': ' . $function_msg;
-			$GLOBALS['phpgw']->xslttpl->add_file(array('tts','files'));
-			$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('add' => $data));
-		//	$GLOBALS['phpgw']->xslttpl->pp();
-		}
-
-		function add2()
-		{
-			if(!$this->acl->check('.ticket.external', PHPGW_ACL_ADD, 'property'))
-			{
-				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=> 1, 'acl_location'=> '.ticket.external'));
-			}
-
-			$bolocation		= CreateObject('property.bolocation');
-
-			$values		= phpgw::get_var('values');
-
-			$GLOBALS['phpgw']->xslttpl->add_file(array('tts','files'));
-
-
-			if(!$this->tenant_id)
-			{
-				$receipt['error'][]=array('msg'=>lang('No Tenant selected !'));
-			}
-			else
-			{
-				$values['extra']['tenant_id'] = $this->tenant_id;
-				$values['location_code'] = $bolocation->get_tenant_location($this->tenant_id);
-
-
-				if(!$values['location_code'])
-				{
-					$receipt['error'][]=array('msg'=>lang('No location for this tenant!'));
-				}
-				else
-				{
-					$location = explode('-',$values['location_code']);
-					$i = 1;
-					foreach ($location as $entry)
-					{
-						$values['location']["loc{$i}"]=$entry;
-						$i++;
-					}
-				}
-				if(is_array($values['location_code']))
-				{
-					$receipt['error'][]=array('msg'=>lang('Several locations for this tenant!'));
-				}
-			}
-
+				'lang_no_cat'					=> lang('no category'),
+				'lang_town_statustext'			=> lang('Select the part of town the building belongs to. To do not use a part of town -  select NO PART OF TOWN'),
+				'lang_part_of_town'				=> lang('Part of town'),
+				'lang_no_part_of_town'			=> lang('No part of town'),
+				'cat_select'				=> $this->cats->formatted_xslt_list(array('select_name' => 'values[cat_id]','selected' => $this->cat_id)),
+
+				'mailnotification'			=> (isset($this->bo->config->config_data['mailnotification'])?$this->bo->config->config_data['mailnotification']:''),
+				'lang_mailnotification'			=> lang('Send e-mail'),
+				'lang_mailnotification_statustext'	=> lang('Choose to send mailnotification'),
+				'pref_send_mail'			=> (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['tts_user_mailnotification'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['tts_user_mailnotification']:''),
+				'fileupload'				=> (isset($this->bo->config->config_data['fmttsfileupload'])?$this->bo->config->config_data['fmttsfileupload']:''),
+			);
+
+//_debug_array($data);
+			$appname					= lang('helpdesk');
+			$function_msg					= lang('add ticket');
+
+			$GLOBALS['phpgw_info']['flags']['app_header'] = lang('property') . ' - ' . $appname . ': ' . $function_msg;
+			$GLOBALS['phpgw']->xslttpl->add_file(array('tts','files'));
+			$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('add' => $data));
+		//	$GLOBALS['phpgw']->xslttpl->pp();
+		}
+
+		function add2()
+		{
+			if(!$this->acl->check('.ticket.external', PHPGW_ACL_ADD, 'property'))
+			{
+				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=> 1, 'acl_location'=> '.ticket.external'));
+			}
+
+			$bolocation		= CreateObject('property.bolocation');
+
+			$values		= phpgw::get_var('values');
+
+			$GLOBALS['phpgw']->xslttpl->add_file(array('tts','files'));
+
+
+			if(!$this->tenant_id)
+			{
+				$receipt['error'][]=array('msg'=>lang('No Tenant selected !'));
+			}
+			else
+			{
+				$values['extra']['tenant_id'] = $this->tenant_id;
+				$values['location_code'] = $bolocation->get_tenant_location($this->tenant_id);
+
+
+				if(!$values['location_code'])
+				{
+					$receipt['error'][]=array('msg'=>lang('No location for this tenant!'));
+				}
+				else
+				{
+					$location = explode('-',$values['location_code']);
+					$i = 1;
+					foreach ($location as $entry)
+					{
+						$values['location']["loc{$i}"]=$entry;
+						$i++;
+					}
+				}
+				if(is_array($values['location_code']))
+				{
+					$receipt['error'][]=array('msg'=>lang('Several locations for this tenant!'));
+				}
+			}
+
 			$values['location_data'] = $bolocation->read_single($values['location_code'],array('tenant_id'=>$this->tenant_id, 'view' => true));
-
-			$values['street_name'] = $values['location_data']['street_name'];
-			$values['street_number'] = $values['location_data']['street_number'];
-
-
-			$values['assignedto']= (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['assigntodefault'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['assigntodefault']:'');
-			if(!$values['assignedto'])
-			{
-				$receipt['error'][]=array('msg'=>lang('Please set default assign to in preferences for user %1!', $GLOBALS['phpgw']->accounts->id2name($this->account)));
-			}
-
-			$values['group_id']= (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['groupdefault'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['groupdefault']:'');
-
-			$values['cat_id'] = (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['tts_category'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['tts_category']:'');
-
-			if(!$values['cat_id'])
-			{
-				$receipt['error'][]=array('msg'=>lang('Please set default category in preferences for user %1!', $GLOBALS['phpgw']->accounts->id2name($this->account)));
-			}
-
-			if (isset($values['save']))
-			{
-				if(!$values['subject'])
-				{
-					$receipt['error'][]=array('msg'=>lang('Please type a subject for this ticket !'));
-				}
-
-				if(!isset($values['details']) || !$values['details'])
-				{
-					$receipt['error'][]=array('msg'=>lang('Please give som details !'));
-				}
-
-				if(!isset($receipt['error']))
-				{
-					$receipt = $this->bo->add($values);
-					$GLOBALS['phpgw']->session->appsession('receipt','property',$receipt);
-					$GLOBALS['phpgw']->session->appsession('session_data','fm_tts','');
+
+			$values['street_name'] = $values['location_data']['street_name'];
+			$values['street_number'] = $values['location_data']['street_number'];
+
+
+			$values['assignedto']= (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['assigntodefault'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['assigntodefault']:'');
+			if(!$values['assignedto'])
+			{
+				$receipt['error'][]=array('msg'=>lang('Please set default assign to in preferences for user %1!', $GLOBALS['phpgw']->accounts->id2name($this->account)));
+			}
+
+			$values['group_id']= (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['groupdefault'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['groupdefault']:'');
+
+			$values['cat_id'] = (isset($GLOBALS['phpgw_info']['user']['preferences']['property']['tts_category'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['tts_category']:'');
+
+			if(!$values['cat_id'])
+			{
+				$receipt['error'][]=array('msg'=>lang('Please set default category in preferences for user %1!', $GLOBALS['phpgw']->accounts->id2name($this->account)));
+			}
+
+			if (isset($values['save']))
+			{
+				if(!$values['subject'])
+				{
+					$receipt['error'][]=array('msg'=>lang('Please type a subject for this ticket !'));
+				}
+
+				if(!isset($values['details']) || !$values['details'])
+				{
+					$receipt['error'][]=array('msg'=>lang('Please give som details !'));
+				}
+
+				if(!isset($receipt['error']))
+				{
+					$receipt = $this->bo->add($values);
+					$GLOBALS['phpgw']->session->appsession('receipt','property',$receipt);
+					$GLOBALS['phpgw']->session->appsession('session_data','fm_tts','');
 					$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uitts.index'));
-				}
-				else
-				{
-					if(isset($values['extra']['p_num']) && $values['extra']['p_num'])
-					{
-						$values['p'][$values['extra']['p_entity_id']]['p_num']=$values['extra']['p_num'];
-						$values['p'][$values['extra']['p_entity_id']]['p_entity_id']=$values['extra']['p_entity_id'];
-						$values['p'][$values['extra']['p_entity_id']]['p_cat_id']=$values['extra']['p_cat_id'];
-						$values['p'][$values['extra']['p_entity_id']]['p_cat_name']=phpgw::get_var('entity_cat_name_'.$values['extra']['p_entity_id'], 'string', 'POST');
-					}
-				}
-			}
+				}
+				else
+				{
+					if(isset($values['extra']['p_num']) && $values['extra']['p_num'])
+					{
+						$values['p'][$values['extra']['p_entity_id']]['p_num']=$values['extra']['p_num'];
+						$values['p'][$values['extra']['p_entity_id']]['p_entity_id']=$values['extra']['p_entity_id'];
+						$values['p'][$values['extra']['p_entity_id']]['p_cat_id']=$values['extra']['p_cat_id'];
+						$values['p'][$values['extra']['p_entity_id']]['p_cat_name']=phpgw::get_var('entity_cat_name_'.$values['extra']['p_entity_id'], 'string', 'POST');
+					}
+				}
+			}
+
+			$location_data=$bolocation->initiate_ui_location(array(
+						'values'	=> (isset($values['location_data'])?$values['location_data']:''),
+						'type_id'	=> -1, // calculated from location_types
+						'no_link'	=> false, // disable lookup links for location type less than type_id
+						'tenant'	=> true,
+						'lookup_type'	=> 'view',
+						'lookup_entity'	=> false,
+						'entity_data'	=> false
+						));
+
+			$link_data = array
+			(
+				'menuaction'	=> 'property.uitts.add2'
+			);
 
-			$location_data=$bolocation->initiate_ui_location(array(
-						'values'	=> (isset($values['location_data'])?$values['location_data']:''),
-						'type_id'	=> -1, // calculated from location_types
-						'no_link'	=> false, // disable lookup links for location type less than type_id
-						'tenant'	=> true,
-						'lookup_type'	=> 'view',
-						'lookup_entity'	=> false,
-						'entity_data'	=> false
-						));
-
-			$link_data = array
-			(
-				'menuaction'	=> 'property.uitts.add2'
-			);
-
-			$msgbox_data = (isset($receipt)?$this->bocommon->msgbox_data($receipt):'');
-
-			$GLOBALS['phpgw']->js->validate_file('dateformat','dateformat','property');
-
-			$data = array
-			(
-				'msgbox_data'						=> $GLOBALS['phpgw']->common->msgbox($msgbox_data),
-				'location_data'						=> $location_data,
-
-				'form_action'						=> $GLOBALS['phpgw']->link('/index.php',$link_data),
+			$msgbox_data = (isset($receipt)?$this->bocommon->msgbox_data($receipt):'');
+
+			$GLOBALS['phpgw']->js->validate_file('dateformat','dateformat','property');
+
+			$data = array
+			(
+				'msgbox_data'						=> $GLOBALS['phpgw']->common->msgbox($msgbox_data),
+				'location_data'						=> $location_data,
+
+				'form_action'						=> $GLOBALS['phpgw']->link('/index.php',$link_data),
 				'done_action'						=> $GLOBALS['phpgw']->link('/index.php',array('menuaction'=> 'property.uitts.index')),
-				'lang_subject'						=> lang('Subject'),
-				'lang_subject_statustext'			=> lang('Enter the subject of this ticket'),
-
-				'lang_details'						=> lang('Details'),
-				'lang_details_statustext'			=> lang('Enter the details of this ticket'),
+				'lang_subject'						=> lang('Subject'),
+				'lang_subject_statustext'			=> lang('Enter the subject of this ticket'),
 
-				'lang_save'							=> lang('save'),
-				'lang_done'							=> lang('done'),
-				'value_details'						=> (isset($values['details'])?$values['details']:''),
-				'value_subject'						=> (isset($values['subject'])?$values['subject']:''),
-
-				'lang_done_statustext'				=> lang('Back to the ticket list'),
-				'lang_save_statustext'				=> lang('Save the ticket'),
-				'lang_contact_phone'				=> lang('contact phone'),
-				'lang_contact_phone_statustext'		=> lang('contact phone'),
+				'lang_details'						=> lang('Details'),
+				'lang_details_statustext'			=> lang('Enter the details of this ticket'),
+
+				'lang_save'							=> lang('save'),
+				'lang_done'							=> lang('done'),
+				'value_details'						=> (isset($values['details'])?$values['details']:''),
+				'value_subject'						=> (isset($values['subject'])?$values['subject']:''),
+
+				'lang_done_statustext'				=> lang('Back to the ticket list'),
+				'lang_save_statustext'				=> lang('Save the ticket'),
+				'lang_contact_phone'				=> lang('contact phone'),
+				'lang_contact_phone_statustext'		=> lang('contact phone'),
 				'value_contact_phone'				=> isset($values['contact_phone'])?$values['contact_phone']:'',
-
-				'lang_contact_email'				=> lang('contact email'),
-				'lang_contact_email_statustext'		=> lang('contact email'),
+
+				'lang_contact_email'				=> lang('contact email'),
+				'lang_contact_email_statustext'		=> lang('contact email'),
 				'value_contact_email'				=> isset($values['contact_email'])?$values['contact_email']:'',
-			);
-
-			$appname					= lang('helpdesk');
-			$function_msg					= lang('add ticket');
-
-			$GLOBALS['phpgw_info']['flags']['app_header'] = lang('property') . ' - ' . $appname . ': ' . $function_msg;
-			$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('add2' => $data));
-		//	$GLOBALS['phpgw']->xslttpl->pp();
-		}
-
-		function view()
-		{
-			if(!$this->acl_read)
-			{
-				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=>1, 'acl_location'=> $this->acl_location));
-			}
-
+			);
+
+			$appname					= lang('helpdesk');
+			$function_msg				= lang('add ticket');
+
+			$GLOBALS['phpgw_info']['flags']['app_header'] = lang('property') . ' - ' . $appname . ': ' . $function_msg;
+			$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('add2' => $data));
+		//	$GLOBALS['phpgw']->xslttpl->pp();
+		}
+
+		function view()
+		{
+			if(!$this->acl_read)
+			{
+				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=>1, 'acl_location'=> $this->acl_location));
+			}
+
 			$id = phpgw::get_var('id', 'int', 'GET');
 
 			if($this->tenant_id)
@@ -1727,8 +1765,8 @@
 				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uitts.view2', 'id' => $id ));
 			}
 
-			$bolocation	= CreateObject('property.bolocation');
-
+			$bolocation	= CreateObject('property.bolocation');
+
 			$values = phpgw::get_var('values');
 			$values['contact_id']		= phpgw::get_var('contact', 'int', 'POST');
 			$values['ecodimb']			= phpgw::get_var('ecodimb');
@@ -1739,16 +1777,16 @@
 
 			$receipt = $GLOBALS['phpgw']->session->appsession('receipt','property');
 			$GLOBALS['phpgw']->session->appsession('receipt','property','');
-
-			$GLOBALS['phpgw']->xslttpl->add_file(array('tts', 'files'));
-
-			if(isset($values['save']))
-			{
-				if(!$this->acl_edit)
-				{
-					$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=>4, 'acl_location'=> $this->acl_location));
-				}
-
+
+			$GLOBALS['phpgw']->xslttpl->add_file(array('tts', 'files'));
+
+			if(isset($values['save']))
+			{
+				if(!$this->acl_edit)
+				{
+					$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=>4, 'acl_location'=> $this->acl_location));
+				}
+
 				$insert_record = $GLOBALS['phpgw']->session->appsession('insert_record','property');
 				$insert_record_entity = $GLOBALS['phpgw']->session->appsession('insert_record_entity','property');
 
@@ -1778,83 +1816,83 @@
 				{
 					$receipt = $this->bo->mail_ticket($id, $this->bo->fields_updated, $receipt);
 				}
-
-//--------- files
-				$bofiles	= CreateObject('property.bofiles');
-				if(isset($values['file_action']) && is_array($values['file_action']))
-				{
-					$bofiles->delete_file("/fmticket/{$id}/", $values);
-				}
-
-				$values['file_name']=str_replace(' ','_',$_FILES['file']['name']);
-
-				if($values['file_name'])
-				{
-					$to_file = $bofiles->fakebase . '/fmticket/' . $id . '/' . $values['file_name'];
-
-					if($bofiles->vfs->file_exists(array(
-							'string' => $to_file,
-							'relatives' => Array(RELATIVE_NONE)
-						)))
-					{
-						$receipt['error'][]=array('msg'=>lang('This file already exists !'));
-					}
-					else
-					{
-						$bofiles->create_document_dir("fmticket/{$id}");
-						$bofiles->vfs->override_acl = 1;
-
-						if(!$bofiles->vfs->cp (array (
-							'from'	=> $_FILES['file']['tmp_name'],
-							'to'	=> $to_file,
-							'relatives'	=> array (RELATIVE_NONE|VFS_REAL, RELATIVE_ALL))))
-						{
-							$receipt['error'][]=array('msg'=>lang('Failed to upload file !'));
-						}
-						$bofiles->vfs->override_acl = 0;
-					}
-				}
+
+//--------- files
+				$bofiles	= CreateObject('property.bofiles');
+				if(isset($values['file_action']) && is_array($values['file_action']))
+				{
+					$bofiles->delete_file("/fmticket/{$id}/", $values);
+				}
+
+				$values['file_name']=str_replace(' ','_',$_FILES['file']['name']);
+
+				if($values['file_name'])
+				{
+					$to_file = $bofiles->fakebase . '/fmticket/' . $id . '/' . $values['file_name'];
+
+					if($bofiles->vfs->file_exists(array(
+							'string' => $to_file,
+							'relatives' => Array(RELATIVE_NONE)
+						)))
+					{
+						$receipt['error'][]=array('msg'=>lang('This file already exists !'));
+					}
+					else
+					{
+						$bofiles->create_document_dir("fmticket/{$id}");
+						$bofiles->vfs->override_acl = 1;
+
+						if(!$bofiles->vfs->cp (array (
+							'from'	=> $_FILES['file']['tmp_name'],
+							'to'	=> $to_file,
+							'relatives'	=> array (RELATIVE_NONE|VFS_REAL, RELATIVE_ALL))))
+						{
+							$receipt['error'][]=array('msg'=>lang('Failed to upload file !'));
+						}
+						$bofiles->vfs->override_acl = 0;
+					}
+				}
 	//			$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uitts.index'));
-			}
-//---------end files
-			$ticket = $this->bo->read_single($id);
-
+			}
+//---------end files
+			$ticket = $this->bo->read_single($id);
+
 			$order_link				= '';
 			$add_to_project_link	= '';
 			$request_link			='';
 
 			if($GLOBALS['phpgw']->acl->check('.project.request', PHPGW_ACL_ADD, 'property'))
 			{
-			$request_link_data = array
-			(
-				'menuaction'		=> 'property.uirequest.edit',
-				'bypass'		=> true,
-				'location_code'		=> $ticket['location_code'],
-				'p_num'			=> $ticket['p_num'],
-				'p_entity_id'		=> $ticket['p_entity_id'],
-				'p_cat_id'		=> $ticket['p_cat_id'],
-				'tenant_id'		=> $ticket['tenant_id'],
-				'origin'		=> '.ticket',
-				'origin_id'		=> $id
-			);
+				$request_link_data = array
+				(
+					'menuaction'		=> 'property.uirequest.edit',
+					'bypass'			=> true,
+					'location_code'		=> $ticket['location_code'],
+					'p_num'				=> $ticket['p_num'],
+					'p_entity_id'		=> $ticket['p_entity_id'],
+					'p_cat_id'			=> $ticket['p_cat_id'],
+					'tenant_id'			=> $ticket['tenant_id'],
+					'origin'			=> '.ticket',
+					'origin_id'			=> $id
+				);
 
 				$request_link			= $GLOBALS['phpgw']->link('/index.php',$request_link_data);
 			}
-
+
 			if($GLOBALS['phpgw']->acl->check('.project', PHPGW_ACL_ADD, 'property'))
 			{
-			$order_link_data = array
-			(
-				'menuaction'		=> 'property.uiproject.edit',
-				'bypass'		=> true,
-				'location_code'		=> $ticket['location_code'],
-				'p_num'			=> $ticket['p_num'],
-				'p_entity_id'		=> $ticket['p_entity_id'],
-				'p_cat_id'		=> $ticket['p_cat_id'],
-				'tenant_id'		=> $ticket['tenant_id'],
-				'origin'		=> '.ticket',
-				'origin_id'		=> $id
-			);
+				$order_link_data = array
+				(
+					'menuaction'		=> 'property.uiproject.edit',
+					'bypass'			=> true,
+					'location_code'		=> $ticket['location_code'],
+					'p_num'				=> $ticket['p_num'],
+					'p_entity_id'		=> $ticket['p_entity_id'],
+					'p_cat_id'			=> $ticket['p_cat_id'],
+					'tenant_id'			=> $ticket['tenant_id'],
+					'origin'			=> '.ticket',
+					'origin_id'			=> $id
+				);
 
 				$add_to_project_link_data = array
 				(
@@ -1875,13 +1913,13 @@
 
 			}
 
-			$form_link = array
-			(
-				'menuaction'	=> 'property.uitts.view',
-				'id'		=> $id
-			);
-
-
+			$form_link = array
+			(
+				'menuaction'	=> 'property.uitts.view',
+				'id'		=> $id
+			);
+
+
 			if($ticket['origin'] || $ticket['target'])
 			{
 				$lookup_type	= 'view';
@@ -1893,14 +1931,14 @@
 				$type_id		= -1;
 			}
 
-			$location_data=$bolocation->initiate_ui_location(array(
-						'values'	=> $ticket['location_data'],
+			$location_data=$bolocation->initiate_ui_location(array(
+						'values'	=> $ticket['location_data'],
 						'type_id'	=> $type_id,
-						'no_link'	=> false, // disable lookup links for location type less than type_id
-						'tenant'	=> (isset($ticket['location_data']['tenant_id'])?$ticket['location_data']['tenant_id']:''),
+						'no_link'	=> false, // disable lookup links for location type less than type_id
+						'tenant'	=> (isset($ticket['location_data']['tenant_id'])?$ticket['location_data']['tenant_id']:''),
 						'lookup_type'	=> $lookup_type,
-						'lookup_entity'	=> $this->bocommon->get_lookup_entity('ticket'),
-						'entity_data'	=> (isset($ticket['p'])?$ticket['p']:'')
+						'lookup_entity'	=> $this->bocommon->get_lookup_entity('ticket'),
+						'entity_data'	=> (isset($ticket['p'])?$ticket['p']:'')
 						));
 			unset($type_id);
 
@@ -1909,66 +1947,66 @@
 						'field'				=> 'contact',
 						'type'				=> 'form'));
 
-
-			if($ticket['contact_phone'])
-			{
-				for ($i=0;$i<count($location_data['location']);$i++)
-				{
-					if($location_data['location'][$i]['input_name'] == 'contact_phone')
-					{
-						unset($location_data['location'][$i]['value']);
-					}
-				}
-			}
-
-			if ($ticket['cat_id'])
-			{
-				$this->cat_id = $ticket['cat_id'];
-			}
-
-			$start_entity	= $this->bocommon->get_start_entity('ticket');
-
+
+			if($ticket['contact_phone'])
+			{
+				for ($i=0;$i<count($location_data['location']);$i++)
+				{
+					if($location_data['location'][$i]['input_name'] == 'contact_phone')
+					{
+						unset($location_data['location'][$i]['value']);
+					}
+				}
+			}
+
+			if ($ticket['cat_id'])
+			{
+				$this->cat_id = $ticket['cat_id'];
+			}
+
+			$start_entity	= $this->bocommon->get_start_entity('ticket');
+
 			$link_entity = array();
-			if (isset($start_entity) AND is_array($start_entity))
-			{
-				$i=0;
-				foreach($start_entity as $entry)
+			if (isset($start_entity) AND is_array($start_entity))
+			{
+				$i=0;
+				foreach($start_entity as $entry)
 				{
 					if($GLOBALS['phpgw']->acl->check(".entity.{$entry['id']}", PHPGW_ACL_ADD, 'property'))
 					{
-					$link_entity[$i]['link'] = $GLOBALS['phpgw']->link('/index.php',array
-					(
-						'menuaction'		=> 'property.uientity.edit',
-						'bypass'		=> true,
-						'location_code'		=> $ticket['location_code'],
-						'entity_id'		=> $entry['id'],
-						'p_num'			=> $ticket['p_num'],
-						'p_entity_id'		=> $ticket['p_entity_id'],
-						'p_cat_id'		=> $ticket['p_cat_id'],
-						'tenant_id'		=> $ticket['tenant_id'],
-						'origin'		=> '.ticket',
-						'origin_id'		=> $id
-					));
-					$link_entity[$i]['name']	= $entry['name'];
-				$i++;
-				}
-			}
+						$link_entity[$i]['link'] = $GLOBALS['phpgw']->link('/index.php',array
+						(
+							'menuaction'		=> 'property.uientity.edit',
+							'bypass'		=> true,
+							'location_code'		=> $ticket['location_code'],
+							'entity_id'		=> $entry['id'],
+							'p_num'			=> $ticket['p_num'],
+							'p_entity_id'		=> $ticket['p_entity_id'],
+							'p_cat_id'		=> $ticket['p_cat_id'],
+							'tenant_id'		=> $ticket['tenant_id'],
+							'origin'		=> '.ticket',
+							'origin_id'		=> $id
+						));
+						$link_entity[$i]['name']	= $entry['name'];
+						$i++;
+					}
+				}
 			}
-
-//_debug_array($link_entity);
-
-			$msgbox_data = $this->bocommon->msgbox_data($receipt);
-
-			$link_file_data = array
-			(
-				'menuaction'	=> 'property.uitts.view_file',
-				'id'		=> $id
-			);
-
+
+//_debug_array($link_entity);
+
+			$msgbox_data = $this->bocommon->msgbox_data($receipt);
+
+			$link_file_data = array
+			(
+				'menuaction'	=> 'property.uitts.view_file',
+				'id'		=> $id
+			);
+
 			if(!$this->_simple && $this->_show_finnish_date)
 			{
-			$jscal = CreateObject('phpgwapi.jscalendar');
-			$jscal->add_listener('values_finnish_date');
+				$jscal = CreateObject('phpgwapi.jscalendar');
+				$jscal->add_listener('values_finnish_date');
 			}
 
 			// -------- start order section
@@ -2355,8 +2393,11 @@
 			
 			//----------------------------------------------datatable settings--------			
 
-			$data = array
-			(
+			$cat_select	= $this->cats->formatted_xslt_list(array('select_name' => 'values[cat_id]','selected' => $this->cat_id));
+			$this->cats->app_name		= 'property.project';
+			$order_catetory	= $this->cats->formatted_xslt_list(array('select_name' => 'values[cat_id]','selected' => $ticket['order_cat_id']));
+			$data = array
+			(
 				'access_order'					=> $access_order,
 				'currency'						=> $GLOBALS['phpgw_info']['user']['preferences']['common']['currency'],
 				'value_order_id'				=> $ticket['order_id'],
@@ -2379,80 +2420,81 @@
 				'datatable'						=> $datavalues,
 				'myColumnDefs'					=> $myColumnDefs,
 			
-				'value_origin'				=> $ticket['origin'],
-				'value_target'				=> $ticket['target'],
-				'value_finnish_date'		=> $ticket['finnish_date'],
-				'img_cal'					=> $GLOBALS['phpgw']->common->image('phpgwapi','cal'),
-				'lang_datetitle'			=> lang('Select date'),
-
-				'link_entity'				=> $link_entity,
-				'msgbox_data'				=> $GLOBALS['phpgw']->common->msgbox($msgbox_data),
-
-				'location_data'				=> $location_data,
-
-				'status_name'				=> 'values[status]',
+				'value_origin'					=> $ticket['origin'],
+				'value_target'					=> $ticket['target'],
+				'value_finnish_date'			=> $ticket['finnish_date'],
+				'img_cal'						=> $GLOBALS['phpgw']->common->image('phpgwapi','cal'),
+				'lang_datetitle'				=> lang('Select date'),
+
+				'link_entity'					=> $link_entity,
+				'msgbox_data'					=> $GLOBALS['phpgw']->common->msgbox($msgbox_data),
+
+				'location_data'					=> $location_data,
+
+				'status_name'					=> 'values[status]',
 				'value_status'					=> $ticket['status'],
-				'status_list'				=> $this->bo->get_status_list($ticket['status']),
-
-				'lang_no_user'				=> lang('Select user'),
-				'lang_user_statustext'			=> lang('Select the user the selection belongs to. To do not use a user select NO USER'),
-				'select_user_name'			=> 'values[assignedto]',
+				'status_list'					=> $this->bo->get_status_list($ticket['status']),
+
+				'lang_no_user'					=> lang('Select user'),
+				'lang_user_statustext'			=> lang('Select the user the selection belongs to. To do not use a user select NO USER'),
+				'select_user_name'				=> 'values[assignedto]',
 				'value_assignedto_id'			=> $ticket['assignedto'],
-				'user_list'					=> $this->bocommon->get_user_list_right2('select',4,$ticket['assignedto'],$this->acl_location),
-
-				'lang_no_group'				=> lang('No group'),
-				'group_list'				=> $this->bocommon->get_group_list('select',$ticket['group_id'],$start=-1,$sort='ASC',$order='account_firstname',$query='',$offset=-1),
-				'select_group_name'			=> 'values[group_id]',
+				'user_list'						=> $this->bocommon->get_user_list_right2('select',4,$ticket['assignedto'],$this->acl_location),
+
+				'lang_no_group'					=> lang('No group'),
+				'group_list'					=> $this->bocommon->get_group_list('select',$ticket['group_id'],$start=-1,$sort='ASC',$order='account_firstname',$query='',$offset=-1),
+				'select_group_name'				=> 'values[group_id]',
 				'value_group_id'				=> $ticket['group_id'],
 
 				'lang_takeover'					=> (isset($values['assignedto']) && $values['assignedto'] != $this->account)  || (!isset($values['assignedto']) || !$values['assignedto']) ? lang('take over') : '',
-
-				'value_priority'			=> $ticket['priority'],
-				'lang_priority_statustext'		=> lang('Select the priority the selection belongs to.'),
-				'select_priority_name'			=> 'values[priority]',
-				'priority_list'				=> $this->bo->get_priority_list($ticket['priority']),
-
-				'lang_no_cat'				=> lang('no category'),
+
+				'value_priority'				=> $ticket['priority'],
+				'lang_priority_statustext'		=> lang('Select the priority the selection belongs to.'),
+				'select_priority_name'			=> 'values[priority]',
+				'priority_list'					=> $this->bo->get_priority_list($ticket['priority']),
+
+				'lang_no_cat'					=> lang('no category'),
 				'value_cat_id'					=> $this->cat_id,
-				'cat_select'				=> $this->cats->formatted_xslt_list(array('select_name' => 'values[cat_id]','selected' => $this->cat_id)),
-				'value_category_name'			=> $ticket['category_name'],
-
-				'form_action'				=> $GLOBALS['phpgw']->link('/index.php',$form_link),
-				'done_action'				=> $GLOBALS['phpgw']->link('/index.php',array('menuaction'=>'property.uitts.index')),
-				'value_subject'				=> $ticket['subject'],
+				'cat_select'					=> $cat_select,
+				'value_category_name'			=> $ticket['category_name'],
 
-				'value_id'				=> '[ #'. $id . ' ] - ',
-
-				'value_details'				=> $ticket['details'],
-
+				'form_action'					=> $GLOBALS['phpgw']->link('/index.php',$form_link),
+				'done_action'					=> $GLOBALS['phpgw']->link('/index.php',array('menuaction'=>'property.uitts.index')),
+				'value_subject'					=> $ticket['subject'],
+
+				'value_id'						=> '[ #'. $id . ' ] - ',
+
+				'value_details'					=> $ticket['details'],
+
 				'value_opendate'				=> $ticket['entry_date'],
-				'value_assignedfrom'			=> $ticket['user_name'],
+				'value_assignedfrom'			=> $ticket['user_name'],
 				'value_assignedto_name'			=> isset($ticket['assignedto_name'])?$ticket['assignedto_name']:'',
-
-				'additional_notes'			=> $additional_notes,
-				'record_history'			=> $record_history,
+
+				'additional_notes'				=> $additional_notes,
+				'record_history'				=> $record_history,
 				'request_link'					=> $request_link,
 				'order_link'					=> $order_link,
 				'add_to_project_link'			=> $add_to_project_link,
 
-				'lang_name'				=> lang('name'),
-				'contact_phone'				=> $ticket['contact_phone'],
+				'lang_name'						=> lang('name'),
+				'contact_phone'					=> $ticket['contact_phone'],
 				'mailnotification'				=> isset($this->bo->config->config_data['mailnotification'])?true:'',
 				'pref_send_mail'				=> isset($GLOBALS['phpgw_info']['user']['preferences']['property']['tts_user_mailnotification'])?$GLOBALS['phpgw_info']['user']['preferences']['property']['tts_user_mailnotification']:'',
 				'fileupload'					=> isset($this->bo->config->config_data['fmttsfileupload'])?$this->bo->config->config_data['fmttsfileupload']:'',
-				'link_view_file'				=> $GLOBALS['phpgw']->link('/index.php',$link_file_data),
+				'link_view_file'				=> $GLOBALS['phpgw']->link('/index.php',$link_file_data),
 				'link_to_files'					=> isset($this->bo->config->config_data['files_url'])?$this->bo->config->config_data['files_url']:'',
-				'files'							=> isset($ticket['files'])?$ticket['files']:'',
-				'lang_files'					=> lang('files'),
-				'lang_filename'					=> lang('Filename'),
-				'lang_file_action'				=> lang('Delete file'),
-				'lang_view_file_statustext'		=> lang('click to view file'),
-				'lang_file_action_statustext'	=> lang('Check to delete file'),
-				'lang_upload_file'				=> lang('Upload file'),
-				'lang_file_statustext'			=> lang('Select file to upload'),
+				'files'							=> isset($ticket['files'])?$ticket['files']:'',
+				'lang_files'					=> lang('files'),
+				'lang_filename'					=> lang('Filename'),
+				'lang_file_action'				=> lang('Delete file'),
+				'lang_view_file_statustext'		=> lang('click to view file'),
+				'lang_file_action_statustext'	=> lang('Check to delete file'),
+				'lang_upload_file'				=> lang('Upload file'),
+				'lang_file_statustext'			=> lang('Select file to upload'),
 				'textareacols'					=> isset($GLOBALS['phpgw_info']['user']['preferences']['property']['textareacols']) && $GLOBALS['phpgw_info']['user']['preferences']['property']['textareacols'] ? $GLOBALS['phpgw_info']['user']['preferences']['property']['textareacols'] : 60,
-				'textarearows'					=> isset($GLOBALS['phpgw_info']['user']['preferences']['property']['textarearows']) && $GLOBALS['phpgw_info']['user']['preferences']['property']['textarearows'] ? $GLOBALS['phpgw_info']['user']['preferences']['property']['textarearows'] : 6
-			);
+				'textarearows'					=> isset($GLOBALS['phpgw_info']['user']['preferences']['property']['textarearows']) && $GLOBALS['phpgw_info']['user']['preferences']['property']['textarearows'] ? $GLOBALS['phpgw_info']['user']['preferences']['property']['textarearows'] : 6,
+				'order_cat_list'				=> $order_catetory
+			);
 
 			//---datatable settings--------------------
 			phpgwapi_yui::load_widget('dragdrop');
@@ -2473,41 +2515,40 @@
 			$GLOBALS['phpgw']->js->validate_file( 'yahoo', 'tts.view', 'property' );
 			//-----------------------datatable settings---
 			
+//_debug_array($data);die();
 			
-			
-			$appname					= lang('helpdesk');
-			$function_msg					= lang('view ticket detail');
-			$GLOBALS['phpgw_info']['flags']['app_header'] = lang('property') . ' - ' . $appname . ': ' . $function_msg;
-			$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('view' => $data));
-		//	$GLOBALS['phpgw']->xslttpl->pp();
-		}
-
-		function view2()
-		{
-			if(!$this->acl->check('.ticket.external', PHPGW_ACL_READ, 'property'))
-			{
-				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=> 1, 'acl_location'=> '.ticket.external'));
-			}
-
-			$bolocation	= CreateObject('property.bolocation');
-
-			$id = phpgw::get_var('id', 'int', 'GET');
-			$values = phpgw::get_var('values');
-			$receipt = '';
-
-			$GLOBALS['phpgw']->xslttpl->add_file(array('tts'));
-
-			if(isset($values['save']))
-			{
-				if(!$this->acl->check('.ticket.external', PHPGW_ACL_ADD, 'property'))
-				{
-					$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=>4, 'acl_location'=> '.ticket.external'));
-				}
-
-				$values['assignedto'] = 'ignore';
-				$values['group_id'] = 'ignore';
-				$values['cat_id'] = 'ignore';
-
+			$appname		= lang('helpdesk');
+			$function_msg	= lang('view ticket detail');
+			$GLOBALS['phpgw_info']['flags']['app_header'] = lang('property') . ' - ' . $appname . ': ' . $function_msg;
+			$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('view' => $data));
+		}
+
+		function view2()
+		{
+			if(!$this->acl->check('.ticket.external', PHPGW_ACL_READ, 'property'))
+			{
+				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=> 1, 'acl_location'=> '.ticket.external'));
+			}
+
+			$bolocation	= CreateObject('property.bolocation');
+
+			$id = phpgw::get_var('id', 'int', 'GET');
+			$values = phpgw::get_var('values');
+			$receipt = '';
+
+			$GLOBALS['phpgw']->xslttpl->add_file(array('tts'));
+
+			if(isset($values['save']))
+			{
+				if(!$this->acl->check('.ticket.external', PHPGW_ACL_ADD, 'property'))
+				{
+					$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=>4, 'acl_location'=> '.ticket.external'));
+				}
+
+				$values['assignedto'] = 'ignore';
+				$values['group_id'] = 'ignore';
+				$values['cat_id'] = 'ignore';
+
 				$so	= CreateObject('property.sotts');
 				$so->acl_location	= '.ticket.external';
 				$receipt = $so->update_ticket($values,$id);
@@ -2515,219 +2556,219 @@
 				{
 					$receipt = $this->bo->mail_ticket($id, $so->fields_updated, $receipt);
 				}
-			}
-
-			$ticket = $this->bo->read_single($id);
-
-			$additional_notes = $this->bo->read_additional_notes($id);
-			$record_history = $this->bo->read_record_history($id);
-
-			$form_link = array
-			(
-				'menuaction'	=> 'property.uitts.view2',
-				'id'		=> $id
-			);
-
-			$table_header_history[] = array
-			(
-				'lang_date'		=> lang('Date'),
-				'lang_user'		=> lang('User'),
-				'lang_action'		=> lang('Action'),
-				'lang_new_value'	=> lang('New value')
-			);
-
-			$table_header_additional_notes[] = array
-			(
-				'lang_count'		=> '#',
-				'lang_date'		=> lang('Date'),
-				'lang_user'		=> lang('User'),
-				'lang_note'		=> lang('Note'),
-			);
-
-//_debug_array($ticket['location_data']);
-
-			$location_data=$bolocation->initiate_ui_location(array(
-						'values'	=> $ticket['location_data'],
-						'type_id'	=> count(explode('-',$ticket['location_data']['location_code'])),
-						'no_link'	=> false, // disable lookup links for location type less than type_id
-						'tenant'	=> (isset($ticket['location_data']['tenant_id'])?$ticket['location_data']['tenant_id']:''),
-						'lookup_type'	=> 'view',
-						'lookup_entity'	=> $this->bocommon->get_lookup_entity('ticket'),
-						'entity_data'	=> (isset($ticket['p'])?$ticket['p']:'')
-						));
-
-
-			if($ticket['contact_phone'])
-			{
-				for ($i=0;$i<count($location_data['location']);$i++)
-				{
-					if($location_data['location'][$i]['input_name'] == 'contact_phone')
-					{
-						unset($location_data['location'][$i]['value']);
-					}
-				}
-			}
-
-			if ($ticket['cat_id'])
-			{
-				$this->cat_id = $ticket['cat_id'];
-			}
-
-
-			$dateformat = strtolower($GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat']);
-			$sep = '/';
-			$dlarr[strpos($dateformat,'y')] = 'yyyy';
-			$dlarr[strpos($dateformat,'m')] = 'MM';
-			$dlarr[strpos($dateformat,'d')] = 'DD';
-			ksort($dlarr);
-
-			$dateformat= (implode($sep,$dlarr));
-
-			switch(substr($dateformat,0,1))
-			{
-				case 'M':
-					$dateformat_validate= "javascript:vDateType='1'";
-					$onKeyUp	= "DateFormat(this,this.value,event,false,'1')";
-					$onBlur		= "DateFormat(this,this.value,event,true,'1')";
-					break;
-				case 'y':
-					$dateformat_validate="javascript:vDateType='2'";
-					$onKeyUp	= "DateFormat(this,this.value,event,false,'2')";
-					$onBlur		= "DateFormat(this,this.value,event,true,'2')";
-					break;
-				case 'D':
-					$dateformat_validate="javascript:vDateType='3'";
-					$onKeyUp	= "DateFormat(this,this.value,event,false,'3')";
-					$onBlur		= "DateFormat(this,this.value,event,true,'3')";
-					break;
-			}
-
-			$msgbox_data = $this->bocommon->msgbox_data($receipt);
-
-			if (isset($ticket['origin']) AND is_array($ticket['origin']))
-			{
-				for ($i=0;$i<count($ticket['origin']);$i++)
-				{
-					$ticket['origin'][$i]['link']=$GLOBALS['phpgw']->link('/index.php',$ticket['origin'][$i]['link']);
-
-					if(substr($ticket['origin'][$i]['type'],0,6)=='entity')
-					{
-						$type		= explode("_",$ticket['origin'][$i]['type']);
-						$entity_id	= $type[1];
-						$cat_id		= $type[2];
-
-						if(!is_object($boadmin_entity))
-						{
-							$boadmin_entity	= CreateObject('property.boadmin_entity');
-						}
-						$entity_category = $boadmin_entity->read_single_category($entity_id,$cat_id);
-						$ticket['origin'][$i]['descr'] = $entity_category['name'];
-					}
-					else
-					{
-						$ticket['origin'][$i]['descr']= lang($ticket['origin'][$i]['type']);
-					}
-				}
-			}
-
-			$GLOBALS['phpgw']->js->validate_file('dateformat','dateformat','property');
-
-			$data = array
-			(
-				'value_origin'					=> (isset($ticket['origin'])?$ticket['origin']:''),
-				'lang_dateformat' 				=> strtolower($dateformat),
-				'dateformat_validate'			=> $dateformat_validate,
-				'onKeyUp'						=> $onKeyUp,
-				'onBlur'						=> $onBlur,
-				'lang_finnish_date'				=> lang('finnish date'),
-				'value_finnish_date'			=> $ticket['finnish_date'],
-
-				'msgbox_data'					=> $GLOBALS['phpgw']->common->msgbox($msgbox_data),
-
-				'location_data'					=> $location_data,
-				'lang_location_code'			=> lang('Location Code'),
-
-				'lang_ticket'					=> lang('Ticket'),
-				'table_header_additional_notes'	=> $table_header_additional_notes,
-				'table_header_history'			=> $table_header_history,
-				'lang_status'					=> lang('Status'),
-				'status_name'					=> 'values[status]',
-				'status_list'					=> $this->bo->get_status_list($ticket['status']),
-				'lang_status_statustext'		=> lang('Set the status of the ticket'),
-
-				'lang_no_user'					=> lang('Select user'),
-				'lang_user_statustext'			=> lang('Select the user the selection belongs to. To do not use a user select NO USER'),
-				'select_user_name'				=> 'values[assignedto]',
-				'user_list'						=> $this->bocommon->get_user_list_right2('select',4,$ticket['assignedto'],$this->acl_location),
-
-				'lang_group'					=> lang('Group'),
-				'lang_no_group'					=> lang('No group'),
-				'group_list'					=> $this->bocommon->get_group_list('select',$ticket['group_id'],$start=-1,$sort='ASC',$order='account_firstname',$query='',$offset=-1),
-				'select_group_name'				=> 'values[group_id]',
-
-				'lang_priority'					=> lang('Priority'),
-				'value_priority'				=> $ticket['priority'],
-				'lang_priority_statustext'		=> lang('Select the priority the selection belongs to.'),
-				'select_priority_name'			=> 'values[priority]',
-				'priority_list'					=> $this->bo->get_priority_list($ticket['priority']),
-
-				'lang_no_cat'					=> lang('no category'),
-				'cat_select'				=> $this->cats->formatted_xslt_list(array('select_name' => 'values[cat_id]','selected' => $this->cat_id)),
-				'lang_category'					=> lang('category'),
-				'value_category_name'			=> $ticket['category_name'],
-
-				'form_action'					=> $GLOBALS['phpgw']->link('/index.php',$form_link),
+			}
+
+			$ticket = $this->bo->read_single($id);
+
+			$additional_notes = $this->bo->read_additional_notes($id);
+			$record_history = $this->bo->read_record_history($id);
+
+			$form_link = array
+			(
+				'menuaction'	=> 'property.uitts.view2',
+				'id'		=> $id
+			);
+
+			$table_header_history[] = array
+			(
+				'lang_date'		=> lang('Date'),
+				'lang_user'		=> lang('User'),
+				'lang_action'		=> lang('Action'),
+				'lang_new_value'	=> lang('New value')
+			);
+
+			$table_header_additional_notes[] = array
+			(
+				'lang_count'		=> '#',
+				'lang_date'		=> lang('Date'),
+				'lang_user'		=> lang('User'),
+				'lang_note'		=> lang('Note'),
+			);
+
+//_debug_array($ticket['location_data']);
+
+			$location_data=$bolocation->initiate_ui_location(array(
+						'values'	=> $ticket['location_data'],
+						'type_id'	=> count(explode('-',$ticket['location_data']['location_code'])),
+						'no_link'	=> false, // disable lookup links for location type less than type_id
+						'tenant'	=> (isset($ticket['location_data']['tenant_id'])?$ticket['location_data']['tenant_id']:''),
+						'lookup_type'	=> 'view',
+						'lookup_entity'	=> $this->bocommon->get_lookup_entity('ticket'),
+						'entity_data'	=> (isset($ticket['p'])?$ticket['p']:'')
+						));
+
+
+			if($ticket['contact_phone'])
+			{
+				for ($i=0;$i<count($location_data['location']);$i++)
+				{
+					if($location_data['location'][$i]['input_name'] == 'contact_phone')
+					{
+						unset($location_data['location'][$i]['value']);
+					}
+				}
+			}
+
+			if ($ticket['cat_id'])
+			{
+				$this->cat_id = $ticket['cat_id'];
+			}
+
+
+			$dateformat = strtolower($GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat']);
+			$sep = '/';
+			$dlarr[strpos($dateformat,'y')] = 'yyyy';
+			$dlarr[strpos($dateformat,'m')] = 'MM';
+			$dlarr[strpos($dateformat,'d')] = 'DD';
+			ksort($dlarr);
+
+			$dateformat= (implode($sep,$dlarr));
+
+			switch(substr($dateformat,0,1))
+			{
+				case 'M':
+					$dateformat_validate= "javascript:vDateType='1'";
+					$onKeyUp	= "DateFormat(this,this.value,event,false,'1')";
+					$onBlur		= "DateFormat(this,this.value,event,true,'1')";
+					break;
+				case 'y':
+					$dateformat_validate="javascript:vDateType='2'";
+					$onKeyUp	= "DateFormat(this,this.value,event,false,'2')";
+					$onBlur		= "DateFormat(this,this.value,event,true,'2')";
+					break;
+				case 'D':
+					$dateformat_validate="javascript:vDateType='3'";
+					$onKeyUp	= "DateFormat(this,this.value,event,false,'3')";
+					$onBlur		= "DateFormat(this,this.value,event,true,'3')";
+					break;
+			}
+
+			$msgbox_data = $this->bocommon->msgbox_data($receipt);
+
+			if (isset($ticket['origin']) AND is_array($ticket['origin']))
+			{
+				for ($i=0;$i<count($ticket['origin']);$i++)
+				{
+					$ticket['origin'][$i]['link']=$GLOBALS['phpgw']->link('/index.php',$ticket['origin'][$i]['link']);
+
+					if(substr($ticket['origin'][$i]['type'],0,6)=='entity')
+					{
+						$type		= explode("_",$ticket['origin'][$i]['type']);
+						$entity_id	= $type[1];
+						$cat_id		= $type[2];
+
+						if(!is_object($boadmin_entity))
+						{
+							$boadmin_entity	= CreateObject('property.boadmin_entity');
+						}
+						$entity_category = $boadmin_entity->read_single_category($entity_id,$cat_id);
+						$ticket['origin'][$i]['descr'] = $entity_category['name'];
+					}
+					else
+					{
+						$ticket['origin'][$i]['descr']= lang($ticket['origin'][$i]['type']);
+					}
+				}
+			}
+
+			$GLOBALS['phpgw']->js->validate_file('dateformat','dateformat','property');
+
+			$data = array
+			(
+				'value_origin'					=> (isset($ticket['origin'])?$ticket['origin']:''),
+				'lang_dateformat' 				=> strtolower($dateformat),
+				'dateformat_validate'			=> $dateformat_validate,
+				'onKeyUp'						=> $onKeyUp,
+				'onBlur'						=> $onBlur,
+				'lang_finnish_date'				=> lang('finnish date'),
+				'value_finnish_date'			=> $ticket['finnish_date'],
+
+				'msgbox_data'					=> $GLOBALS['phpgw']->common->msgbox($msgbox_data),
+
+				'location_data'					=> $location_data,
+				'lang_location_code'			=> lang('Location Code'),
+
+				'lang_ticket'					=> lang('Ticket'),
+				'table_header_additional_notes'	=> $table_header_additional_notes,
+				'table_header_history'			=> $table_header_history,
+				'lang_status'					=> lang('Status'),
+				'status_name'					=> 'values[status]',
+				'status_list'					=> $this->bo->get_status_list($ticket['status']),
+				'lang_status_statustext'		=> lang('Set the status of the ticket'),
+
+				'lang_no_user'					=> lang('Select user'),
+				'lang_user_statustext'			=> lang('Select the user the selection belongs to. To do not use a user select NO USER'),
+				'select_user_name'				=> 'values[assignedto]',
+				'user_list'						=> $this->bocommon->get_user_list_right2('select',4,$ticket['assignedto'],$this->acl_location),
+
+				'lang_group'					=> lang('Group'),
+				'lang_no_group'					=> lang('No group'),
+				'group_list'					=> $this->bocommon->get_group_list('select',$ticket['group_id'],$start=-1,$sort='ASC',$order='account_firstname',$query='',$offset=-1),
+				'select_group_name'				=> 'values[group_id]',
+
+				'lang_priority'					=> lang('Priority'),
+				'value_priority'				=> $ticket['priority'],
+				'lang_priority_statustext'		=> lang('Select the priority the selection belongs to.'),
+				'select_priority_name'			=> 'values[priority]',
+				'priority_list'					=> $this->bo->get_priority_list($ticket['priority']),
+
+				'lang_no_cat'					=> lang('no category'),
+				'cat_select'				=> $this->cats->formatted_xslt_list(array('select_name' => 'values[cat_id]','selected' => $this->cat_id)),
+				'lang_category'					=> lang('category'),
+				'value_category_name'			=> $ticket['category_name'],
+
+				'form_action'					=> $GLOBALS['phpgw']->link('/index.php',$form_link),
 				'done_action'					=> $GLOBALS['phpgw']->link('/index.php',array('menuaction'=>'property.uitts.index')),
-				'value_subject'					=> $ticket['subject'],
-				'lang_subject_statustext'		=> lang('update subject'),
-				'value_id'						=> '[ #'. $id . ' ] - ',
-
-				'lang_details'					=> lang('Details'),
-				'value_details'					=> $ticket['details'],
-				'lang_details_statustext'		=> lang('Add new comments'),
-
-				'lang_additional_notes'			=> lang('Additional notes'),
-
-				'lang_new_note'					=> lang('New Note'),
-				'lang_opendate'					=> lang('Open Date'),
+				'value_subject'					=> $ticket['subject'],
+				'lang_subject_statustext'		=> lang('update subject'),
+				'value_id'						=> '[ #'. $id . ' ] - ',
+
+				'lang_details'					=> lang('Details'),
+				'value_details'					=> $ticket['details'],
+				'lang_details_statustext'		=> lang('Add new comments'),
+
+				'lang_additional_notes'			=> lang('Additional notes'),
+
+				'lang_new_note'					=> lang('New Note'),
+				'lang_opendate'					=> lang('Open Date'),
 				'value_opendate'				=> $ticket['entry_date'],
-
-				'lang_assignedfrom'				=> lang('Assigned from'),
-				'value_assignedfrom'			=> $ticket['user_name'],
-				'lang_assignedto'				=> lang('Assigned to'),
+
+				'lang_assignedfrom'				=> lang('Assigned from'),
+				'value_assignedfrom'			=> $ticket['user_name'],
+				'lang_assignedto'				=> lang('Assigned to'),
 				'value_assignedto_name'				=> (isset($ticket['assignedto_name'])?$ticket['assignedto_name']:''),
+
+				'lang_no_additional_notes'		=> lang('No additional notes'),
+				'lang_history'					=> lang('History'),
+				'lang_no_history'				=> lang('No history for this record'),
+				'additional_notes'				=> $additional_notes,
+				'record_history'				=> $record_history,
+
+				'lang_save'						=> lang('save'),
+				'lang_name'						=> lang('name'),
+				'lang_done'						=> lang('done'),
+				'lang_contact_phone'			=> lang('Contact phone'),
+				'contact_phone'					=> $ticket['contact_phone'],
+			);
+//_debug_array($data);
+			$appname		= lang('helpdesk');
+			$function_msg	= lang('view ticket detail');
+
+			$GLOBALS['phpgw_info']['flags']['app_header'] = lang('property') . ' - ' . $appname . ': ' . $function_msg;
+			$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('view2' => $data));
+		}
+
+		function view_file()
+		{
+			if(!$this->acl_read)
+			{
+				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=>1, 'acl_location'=> $this->acl_location));
+			}
+
+			$bofiles	= CreateObject('property.bofiles');
+			$bofiles->view_file('fmticket');
+		}
 
-				'lang_no_additional_notes'		=> lang('No additional notes'),
-				'lang_history'					=> lang('History'),
-				'lang_no_history'				=> lang('No history for this record'),
-				'additional_notes'				=> $additional_notes,
-				'record_history'				=> $record_history,
-
-				'lang_save'						=> lang('save'),
-				'lang_name'						=> lang('name'),
-				'lang_done'						=> lang('done'),
-				'lang_contact_phone'			=> lang('Contact phone'),
-				'contact_phone'					=> $ticket['contact_phone'],
-			);
-//_debug_array($data);
-			$appname		= lang('helpdesk');
-			$function_msg	= lang('view ticket detail');
-
-			$GLOBALS['phpgw_info']['flags']['app_header'] = lang('property') . ' - ' . $appname . ': ' . $function_msg;
-			$GLOBALS['phpgw']->xslttpl->set_var('phpgw',array('view2' => $data));
-		}
-
-		function view_file()
-		{
-			if(!$this->acl_read)
-			{
-				$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 'property.uilocation.stop', 'perm'=>1, 'acl_location'=> $this->acl_location));
-			}
-
-			$bofiles	= CreateObject('property.bofiles');
-			$bofiles->view_file('fmticket');
-		}
-
 		protected function _generate_tabs($history='')
 		{
 			if(!$tab = phpgw::get_var('tab'))
@@ -2748,6 +2789,6 @@
 			phpgwapi_yui::tabview_setup('ticket_tabview');
 
 			return  phpgwapi_yui::tabview_generate($tabs, $tab);
-	}
+		}
 
 	}

Modified: people/sigurdne/modules/property/trunk/inc/hook_home.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/inc/hook_home.inc.php	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/inc/hook_home.inc.php	2010-01-22 09:56:10 UTC (rev 20982)
@@ -277,14 +277,13 @@
 		unset($default_status);
 	}
 
-	// ticket initiated by user
 	if ( isset($prefs['property']['mainscreen_show_new_updated_tts_4'])
 		&& $prefs['property']['mainscreen_show_new_updated_tts_4'] == 'yes')
 	{
 
 		$default_status 	= isset($prefs['property']['tts_status_4']) ? $prefs['property']['tts_status_4'] : '';
 		$tts = CreateObject('property.sotts');
-		$tickets = $tts->read(array('owner_id' => $accound_id, 'status_id' => $default_status));
+		$tickets = $tts->read(array('user_id' => $accound_id, 'status_id' => $default_status));
 		$total_records = $tts->total_records;
 
 		$portalbox = CreateObject('phpgwapi.listbox', array

Modified: people/sigurdne/modules/property/trunk/inc/hook_settings.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/inc/hook_settings.inc.php	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/inc/hook_settings.inc.php	2010-01-22 09:56:10 UTC (rev 20982)
@@ -75,15 +75,15 @@
 	create_select_box('Default ticket status','tts_status',$_status_tts,'The default status when entering the helpdesk and mainscreen');
 	create_input_box('Custom title on main screen tickets','mainscreen_tts_title');
 
-	create_select_box('show new/updated tickets on main screen 2','mainscreen_show_new_updated_tts_2',$yes_and_no,'Link to tickets you are assigned to');
+	create_select_box('show updated tickets on main screen 2','mainscreen_show_new_updated_tts_2',$yes_and_no,'Link to tickets you are assigned to');
 	create_select_box('Default ticket status 2','tts_status_2',$_status_tts,'The default status when entering the helpdesk and mainscreen');
 	create_input_box('Custom title on main screen tickets','mainscreen_tts_title_2');
 
-	create_select_box('show new/updated tickets on main screen 3','mainscreen_show_new_updated_tts_3',$yes_and_no,'Link to tickets you are assigned to');
+	create_select_box('show updated tickets on main screen 3','mainscreen_show_new_updated_tts_3',$yes_and_no,'Link to tickets you are assigned to');
 	create_select_box('Default ticket status 3','tts_status_3',$_status_tts,'The default status when entering the helpdesk and mainscreen');
 	create_input_box('Custom title on main screen tickets','mainscreen_tts_title_3');
 
-	create_select_box('show tickets on main screen initiated by user','mainscreen_show_new_updated_tts_4',$yes_and_no,'Link to tickets you have started');
+	create_select_box('show updated tickets on main screen 4','mainscreen_show_new_updated_tts_4',$yes_and_no,'Link to tickets you are assigned to');
 	create_select_box('Default ticket status 4','tts_status_4',$_status_tts,'The default status when entering the helpdesk and mainscreen');
 	create_input_box('Custom title on main screen tickets','mainscreen_tts_title_4');
 
@@ -133,20 +133,24 @@
 	create_select_box('Default assign to TTS','assigntodefault',$_accounts,'The default user to assign a ticket in Helpdesk-submodule');
 
 	// Choose the correct priority to display
-	$priority_comment[1]  = ' - ' . lang('Lowest');
-	$priority_comment[5]  = ' - ' . lang('Medium');
-	$priority_comment[10] = ' - ' . lang('Highest');
-	for ($i=1; $i<=10; $i++)
+	$config	= CreateObject('phpgwapi.config','property');
+	$config->read();
+	$priority = array();
+	$prioritylevels = isset($config->config_data['prioritylevels']) && $config->config_data['prioritylevels'] ? $config->config_data['prioritylevels'] : 3;
+	$priority_comment[1]  = ' - ' . lang('Highest');
+	$priority_comment[$prioritylevels] = ' - ' . lang('Lowest');
+	for ($i=1; $i<=$prioritylevels; $i++)
 	{
-		$priority[$i] = $i . $priority_comment[$i];
+		$priority[$i] = $i . isset($priority_comment[$i]) ? $priority_comment[$i] : '';
 	}
 
 
+	$degree = array();
 	// Choose the correct degree to display
-		$degree_comment[0]=' - '.lang('None');
-		$degree_comment[1]=' - '.lang('Minor');
-		$degree_comment[2]=' - '.lang('Medium');
-		$degree_comment[3]=' - '.lang('Serious');
+	$degree_comment[0]=' - '.lang('None');
+	$degree_comment[1]=' - '.lang('Minor');
+	$degree_comment[2]=' - '.lang('Medium');
+	$degree_comment[3]=' - '.lang('Serious');
 	for ($i=0; $i<=3; $i++)
 	{
 		$degree[$i] = $i . $degree_comment[$i];
@@ -234,7 +238,7 @@
 
 	create_select_box('Workorder Approval From','approval_from',$_accounts,'If you need approval from your supervisor for projects/workorders');
 
-	if(!$email_org)
+//	if(!$email_org)
 	{
 		create_input_box('Your Email','email','Insert your email address');
 	}

Modified: people/sigurdne/modules/property/trunk/js/yahoo/location.index.js
===================================================================
--- people/sigurdne/modules/property/trunk/js/yahoo/location.index.js	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/js/yahoo/location.index.js	2010-01-22 09:56:10 UTC (rev 20982)
@@ -40,6 +40,19 @@
   	{
 	    if(flag_particular_setting=='init')
 	    {
+			//category
+			index = locate_in_array_options(0,"value",path_values.cat_id);
+			if(index)
+			{
+				oMenuButton_0.set("label", ("<em>" + array_options[0][index][1] + "</em>"));
+			}
+			//district
+			index = locate_in_array_options(1,"value",path_values.district_id);
+			if(index)
+			{
+				oMenuButton_1.set("label", ("<em>" + array_options[1][index][1] + "</em>"));
+			}
+
 			YAHOO.util.Dom.get(textImput[0].id).focus();
 //			oMenuButton_0.focus();
 	    }

Modified: people/sigurdne/modules/property/trunk/js/yahoo/property.js
===================================================================
--- people/sigurdne/modules/property/trunk/js/yahoo/property.js	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/js/yahoo/property.js	2010-01-22 09:56:10 UTC (rev 20982)
@@ -9,7 +9,7 @@
 	var showTimer,hideTimer;
 	var tt = new YAHOO.widget.Tooltip("myTooltip");
 	var lightbox;
-	var maxRowsPerPage = 1000;
+	var maxRowsPerPage = 10000;
 	var myLoading;
 	var message_delete = "";
 

Modified: people/sigurdne/modules/property/trunk/setup/phpgw_no.lang
===================================================================
--- people/sigurdne/modules/property/trunk/setup/phpgw_no.lang	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/setup/phpgw_no.lang	2010-01-22 09:56:10 UTC (rev 20982)
@@ -26,6 +26,7 @@
 activity num	property	no	Aktivitet num
 actor	property	no	Aktør
 actual cost	property	no	Faktisk kostnad
+actual cost changed	property	no	Faktisk kostnad er endret
 actual cost - paid so far	property	no	Faktisk betalt - pr dd
 add a apartment	property	no	Legg til leilighet
 add a attrib	property	no	Legg til en attibutt
@@ -401,6 +402,7 @@
 delete entity type	property	no	Slett entitet-type
 delete entrance	property	no	slett inngang
 delete equipment	property	no	slett utstyr
+delete failed	property	no	Sletting feilet
 delete file	property	no	Slett fil
 delete investment history element	property	no	slett historie post for investering
 delete last entry	property	no	slett siste post
@@ -636,6 +638,7 @@
 enter a statustext for the inputfield in forms	property	no	Angi en statustekst for inputfeltet
 enter a value for the labour cost	property	no	angi arbeids kostnader
 enter a value for the material cost	property	no	angi materialkostnader
+Enter actual cost	property	no	Angi faktisk kostnad
 enter building id	property	no	angi bygnings ID
 enter document name	property	no	angi dokument ID
 enter document title	property	no	angi dokument tittel
@@ -845,6 +848,7 @@
 is there a demand from the authorities to correct this condition?	property	no	Finnes det offentlige pålegg fo å rette opp tilstanden?
 items	property	no	Detaljer
 janitor	property	no	Oppsynsmann
+jasper reports	property	no	JasperReports
 key deliver location	property	no	Sted for å levere nøkkel
 key fetch location	property	no	Sted for å hente nøkkel
 key location	property	no	Nøkkel lokalisert
@@ -1056,6 +1060,7 @@
 open view in new window	property	no	Åpne visning i nytt vindu
 order	property	no	bestill
 order id	property	no	OrdreNr
+order_id	property	no	OrdreNr
 order # that initiated the invoice	property	no	Order nr som referanse for fakturaen
 order text	property	no	Bestillingstekst
 other branch	property	no	Andre fag
@@ -1597,6 +1602,7 @@
 this vendor is already registered for this activity	property	no	Denne leverandøren er allerede registert for denne aktiviteten
 ticket	property	no	melding
 .ticket	property	no	Melding
+ticket %1 has been deleted	property	no	Melding %1 er slettet
 ticket categories	property	no	Meldinger kategorier
 ticket has been saved	property	no	Melding er lagret
 ticket has been updated	property	no	melding er oppdatert

Modified: people/sigurdne/modules/property/trunk/setup/setup.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/setup/setup.inc.php	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/setup/setup.inc.php	2010-01-22 09:56:10 UTC (rev 20982)
@@ -12,7 +12,7 @@
 	*/
 
 	$setup_info['property']['name']		= 'property';
-	$setup_info['property']['version']		= '0.9.17.576';
+	$setup_info['property']['version']		= '0.9.17.578';
 	$setup_info['property']['app_order']	= 8;
 	$setup_info['property']['enable']	= 1;
 	$setup_info['property']['app_group']	= 'office';

Modified: people/sigurdne/modules/property/trunk/setup/tables_current.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/setup/tables_current.inc.php	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/setup/tables_current.inc.php	2010-01-22 09:56:10 UTC (rev 20982)
@@ -831,6 +831,7 @@
 				'approved' => array('type' => 'int','precision' => '2','nullable' => True),
 				'in_progress' => array('type' => 'int','precision' => '2','nullable' => True),
 				'delivered' => array('type' => 'int','precision' => '2','nullable' => True),
+				'sorting' => array('type' => 'int','precision' => '4','nullable' => True)
 			),
 			'pk' => array('id'),
 			'ix' => array(),
@@ -873,7 +874,8 @@
 				'b_account_id' => array('type' => 'varchar','precision' => '20','nullable' => True),
 				'ecodimb' => array('type' => 'int','precision' => 4,'nullable' => True),
 				'budget' => array('type' => 'int','precision' => '4','nullable' => True),
-				'actual_cost' => array('type' => 'decimal','precision' => '20','scale' => '2','nullable' => True,'default' => '0.00')
+				'actual_cost' => array('type' => 'decimal','precision' => '20','scale' => '2','nullable' => True,'default' => '0.00'),
+				'order_cat_id' => array('type' => 'int','precision' => '4','nullable' => True)
 			),
 			'pk' => array('id'),
 			'ix' => array(),

Modified: people/sigurdne/modules/property/trunk/setup/tables_update.inc.php
===================================================================
--- people/sigurdne/modules/property/trunk/setup/tables_update.inc.php	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/setup/tables_update.inc.php	2010-01-22 09:56:10 UTC (rev 20982)
@@ -3856,7 +3856,7 @@
 
 	/**
 	* Update property version from 0.9.17.575 to 0.9.17.576
-	* Add variants of closed and approved-status for tickets
+	* Add contact_email to tickets
 	* 
 	*/
 
@@ -3874,3 +3874,45 @@
 			return $GLOBALS['setup_info']['property']['currentver'];
 		}
 	}
+
+	/**
+	* Update property version from 0.9.17.576 to 0.9.17.577
+	* Add sorting to ticket status
+	* 
+	*/
+
+	$test[] = '0.9.17.576';
+	function property_upgrade0_9_17_576()
+	{
+		$GLOBALS['phpgw_setup']->oProc->m_odb->transaction_begin();
+
+		$GLOBALS['phpgw_setup']->oProc->AddColumn('fm_tts_status','sorting',array('type' => 'int','precision' => 4,'nullable' => True));
+
+		if($GLOBALS['phpgw_setup']->oProc->m_odb->transaction_commit())
+		{
+			$GLOBALS['setup_info']['property']['currentver'] = '0.9.17.577';
+			return $GLOBALS['setup_info']['property']['currentver'];
+		}
+	}
+
+
+	/**
+	* Update property version from 0.9.17.576 to 0.9.17.577
+	* Add order categories to ticket ad hoc orders
+	* 
+	*/
+
+	$test[] = '0.9.17.577';
+	function property_upgrade0_9_17_577()
+	{
+		$GLOBALS['phpgw_setup']->oProc->m_odb->transaction_begin();
+
+		$GLOBALS['phpgw_setup']->oProc->AddColumn('fm_tts_tickets','order_cat_id',array('type' => 'int','precision' => 4,'nullable' => True));
+
+		if($GLOBALS['phpgw_setup']->oProc->m_odb->transaction_commit())
+		{
+			$GLOBALS['setup_info']['property']['currentver'] = '0.9.17.578';
+			return $GLOBALS['setup_info']['property']['currentver'];
+		}
+	}
+

Modified: people/sigurdne/modules/property/trunk/templates/base/category.xsl
===================================================================
--- people/sigurdne/modules/property/trunk/templates/base/category.xsl	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/templates/base/category.xsl	2010-01-22 09:56:10 UTC (rev 20982)
@@ -81,7 +81,7 @@
 								<xsl:value-of select="value"/>		
 							</textarea>
 						</xsl:when>
-						<xsl:when test="type='varchar'">
+						<xsl:when test="type='varchar' or type='integer'">
 							<input type="text" name="values[{name}]" value="{value}" onMouseout="window.status='';return true;">
 								<xsl:attribute name="title">
 									<xsl:value-of select="descr"/>

Modified: people/sigurdne/modules/property/trunk/templates/base/config.tpl
===================================================================
--- people/sigurdne/modules/property/trunk/templates/base/config.tpl	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/templates/base/config.tpl	2010-01-22 09:56:10 UTC (rev 20982)
@@ -111,6 +111,11 @@
     <td colspan="2">&nbsp;<b>{lang_TTS}::{lang_settings}</b></td>
    </tr>
    <tr class="row_on">
+    <td>{lang_Open_translates_to}: <br>
+	{lang_default}: {lang_Open}</td>
+    <td><input name="newsettings[tts_lang_open]" value="{value_tts_lang_open}"></td>
+   </tr>
+   <tr class="row_on">
     <td valign = 'top'>{lang_TTS_simplified_group}:</td>
     <td>
     	<!--to be able to blank the setting - need an empty value-->

Modified: people/sigurdne/modules/property/trunk/templates/base/tts.xsl
===================================================================
--- people/sigurdne/modules/property/trunk/templates/base/tts.xsl	2010-01-22 09:52:44 UTC (rev 20981)
+++ people/sigurdne/modules/property/trunk/templates/base/tts.xsl	2010-01-22 09:56:10 UTC (rev 20982)
@@ -1097,6 +1097,20 @@
 						<xsl:call-template name="vendor_form"/>
 						<xsl:call-template name="ecodimb_form"/>
 						<xsl:call-template name="b_account_form"/>
+						<tr>
+							<td>
+								<xsl:value-of select="php:function('lang', 'order category')" />
+							</td>
+							<td>
+								<xsl:variable name="lang_cat_statustext"><xsl:value-of select="php:function('lang', 'select order category')" /></xsl:variable>
+									<select name="values[order_cat_id]"  title="{$lang_cat_statustext}">
+										<option value="0">
+											<xsl:value-of select="php:function('lang', 'select order category')" />
+										</option>
+											<xsl:apply-templates select="order_cat_list/cat_list"/>
+									</select>
+							</td>
+						</tr>
 
 						<tr>
 							<td valign="top">
@@ -1116,7 +1130,12 @@
 					            <xsl:value-of select="php:function('lang', 'actual cost')" />
 							</td>
 							<td>
-								<xsl:value-of select="value_actual_cost"/>
+								<input type="text" name="values[actual_cost]" value="{value_actual_cost}">
+									<xsl:attribute name="title">
+					            		<xsl:value-of select="php:function('lang', 'Enter actual cost')" />
+									</xsl:attribute>
+								</input>
+							<!--<xsl:value-of select="value_actual_cost"/> -->
 								<xsl:text> </xsl:text> [ <xsl:value-of select="currency"/> ]
 							</td>
 						</tr>
@@ -1744,4 +1763,3 @@
 			</xsl:otherwise>
 		</xsl:choose>
 	</xsl:template>
-