diff --git a/.gitignore b/.gitignore
index ed9cd99..9e9a4fe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
 .tmp*
 .htaccess
 .settings/*
+*~
+*.orig
diff --git a/features/cerberusweb.core/api/uri/tickets.php b/features/cerberusweb.core/api/uri/tickets.php
index 307fe9f..b9cf7be 100644
--- a/features/cerberusweb.core/api/uri/tickets.php
+++ b/features/cerberusweb.core/api/uri/tickets.php
@@ -78,6 +78,14 @@ class ChTicketsPage extends CerberusPageExtension {
 					$visit->set('compose.last_ticket',null); // clear
 				}
 				
+				// Groups (for custom fields)
+				$groups = DAO_Group::getAll();
+				$tpl->assign('groups', $groups);
+
+				// Custom fields
+				$fields = DAO_CustomField::getBySource(ChCustomFieldSource_Ticket::ID);
+				$tpl->assign('ticket_fields', $fields);
+
 				$tpl->display('file:' . $this->_TPL_PATH . 'tickets/compose/index.tpl');
 				break;
 				
@@ -116,6 +124,14 @@ class ChTicketsPage extends CerberusPageExtension {
 					$visit->set('compose.last_ticket',null); // clear
 				}
 				
+				// Groups (for custom fields)
+				$groups = DAO_Group::getAll();
+				$tpl->assign('groups', $groups);
+
+				// Custom fields
+				$fields = DAO_CustomField::getBySource(ChCustomFieldSource_Ticket::ID);
+				$tpl->assign('ticket_fields', $fields);
+
 				$tpl->display('file:' . $this->_TPL_PATH . 'tickets/create/index.tpl');
 				break;
 				
@@ -989,6 +1005,10 @@ class ChTicketsPage extends CerberusPageExtension {
 		);
 		
 		$ticket_id = CerberusMail::compose($properties);
+
+		// Custom field saves
+		@$field_ids = DevblocksPlatform::importGPC($_POST['field_ids'], 'array', array());
+		DAO_CustomFieldValue::handleFormPost(ChCustomFieldSource_Ticket::ID, $ticket_id, $field_ids);
 		
 		$ticket = DAO_Ticket::getTicket($ticket_id);
 		
@@ -1112,6 +1132,10 @@ class ChTicketsPage extends CerberusPageExtension {
 			$requester_addy = DAO_Address::lookupAddress($requester->mailbox . '@' . $host, true);
 			DAO_Ticket::createRequester($requester_addy->id, $ticket_id);
 		}
+
+		// Custom field saves
+		@$field_ids = DevblocksPlatform::importGPC($_POST['field_ids'], 'array', array());
+		DAO_CustomFieldValue::handleFormPost(ChCustomFieldSource_Ticket::ID, $ticket_id, $field_ids);
 		
 		// Worker reply
 		$properties = array(
diff --git a/features/cerberusweb.core/templates/tickets/compose/index.tpl b/features/cerberusweb.core/templates/tickets/compose/index.tpl
index c624175..fb5d20b 100644
--- a/features/cerberusweb.core/templates/tickets/compose/index.tpl
+++ b/features/cerberusweb.core/templates/tickets/compose/index.tpl
@@ -109,6 +109,87 @@
 				
 	<tr>
 		<td>
+			<div id="replyAttachments{$message->id}" style="display:block;margin:5px;padding:5px;background-color:rgb(240,240,240);">
+			<table cellpadding="0" cellspacing="0" border="0" width="100%">
+			<tr>
+				<td style="background-color:rgb(184,0,4);width:10px;"></td>
+				<td style="padding-left:5px;">
+					{* [TODO] Display by Group *}
+					<table cellpadding="2" cellspacing="1" border="0">
+					{assign var=last_group_id value=-1}
+					{foreach from=$ticket_fields item=f key=f_id}
+					{assign var=field_group_id value=$f->group_id}
+					{if $field_group_id == 0 || $field_group_id == $ticket->team_id}
+						{assign var=show_submit value=1}
+						{if $field_group_id != $last_group_id}
+							<tr>
+								<td colspan="2"><H2>{if $f->group_id==0}Global{else}{$groups.$field_group_id->name}{/if} Fields</H2></td>
+							</tr>
+						{/if}
+							<tr>
+								<td valign="top" width="1%" nowrap="nowrap">
+									<input type="hidden" name="field_ids[]" value="{$f_id}">
+									<b>{$f->name}:</b>
+								</td>
+								<td valign="top" width="99%">
+									{if $f->type=='S'}
+										<input type="text" name="field_{$f_id}" size="45" maxlength="255" value="{$ticket_field_values.$f_id|escape}"><br>
+									{elseif $f->type=='U'}
+										<input type="text" name="field_{$f_id}" size="45" maxlength="255" value="{$ticket_field_values.$f_id|escape}">
+										{if !empty($ticket_field_values.$f_id)}<a href="{$ticket_field_values.$f_id|escape}" target="_blank">URL</a>{else}<i>(URL)</i>{/if}
+									{elseif $f->type=='N'}
+										<input type="text" name="field_{$f_id}" size="45" maxlength="255" value="{$ticket_field_values.$f_id|escape}"><br>
+									{elseif $f->type=='T'}
+										<textarea name="field_{$f_id}" rows="4" cols="50" style="width:98%;">{$ticket_field_values.$f_id}</textarea><br>
+									{elseif $f->type=='C'}
+										<input type="checkbox" name="field_{$f_id}" value="1" {if $ticket_field_values.$f_id}checked{/if}><br>
+									{elseif $f->type=='X'}
+										{foreach from=$f->options item=opt}
+										<label><input type="checkbox" name="field_{$f_id}[]" value="{$opt|escape}" {if isset($ticket_field_values.$f_id.$opt)}checked="checked"{/if}> {$opt}</label><br>
+										{/foreach}
+									{elseif $f->type=='D'}
+										<select name="field_{$f_id}">{* [TODO] Fix selected *}
+											<option value=""></option>
+											{foreach from=$f->options item=opt}
+											<option value="{$opt|escape}" {if $opt==$ticket_field_values.$f_id}selected{/if}>{$opt}</option>
+											{/foreach}
+										</select><br>
+									{elseif $f->type=='M'}
+										<select name="field_{$f_id}[]" size="5" multiple="multiple">
+											{foreach from=$f->options item=opt}
+											<option value="{$opt|escape}" {if isset($ticket_field_values.$f_id.$opt)}selected="selected"{/if}>{$opt}</option>
+											{/foreach}
+										</select><br>
+										<i><small>{$translate->_('common.tips.multi_select')}</small></i>
+									{elseif $f->type=='E'}
+										<input type="text" name="field_{$f_id}" size="45" maxlength="255" value="{if !empty($ticket_field_values.$f_id)}{$ticket_field_values.$f_id|devblocks_date}{/if}"><button type="button" onclick="ajax.getDateChooser('dateCustom{$f_id}',this.form.field_{$f_id});">&nbsp;<img src="{devblocks_url}c=resource&p=cerberusweb.core&f=images/calendar.gif{/devblocks_url}" align="top">&nbsp;</button>
+										<div id="dateCustom{$f_id}" style="display:none;position:absolute;z-index:1;"></div>
+									{elseif $f->type=='W'}
+										{if empty($workers)}
+											{php}$this->assign('workers', DAO_Worker::getAllActive());{/php}
+										{/if}
+										<select name="field_{$f_id}">
+											<option value=""></option>
+											{foreach from=$workers item=worker}
+											<option value="{$worker->id}" {if $worker->id==$ticket_field_values.$f_id}selected="selected"{/if}>{$worker->getName()}</option>
+											{/foreach}
+										</select>
+									{/if}	
+								</td>
+							</tr>
+						{assign var=last_group_id value=$f->group_id}
+					{/if}
+					{/foreach}
+					</table>
+					</td>
+				</tr>
+				</table>
+			</div>
+		</td>
+	</tr>
+				
+	<tr>
+		<td>
 		<div style="background-color:rgb(240,240,240);margin:5px;padding:5px;">
 			<table cellpadding="0" cellspacing="0" border="0" width="100%">
 			<tr>
diff --git a/features/cerberusweb.core/templates/tickets/create/index.tpl b/features/cerberusweb.core/templates/tickets/create/index.tpl
index 0f0f8b7..56d559d 100644
--- a/features/cerberusweb.core/templates/tickets/create/index.tpl
+++ b/features/cerberusweb.core/templates/tickets/create/index.tpl
@@ -94,6 +94,86 @@
 			</div>
 		</td>
 	</tr>
+	<tr>
+		<td>
+			<div id="replyAttachments{$message->id}" style="display:block;margin:5px;padding:5px;background-color:rgb(240,240,240);">
+			<table cellpadding="0" cellspacing="0" border="0" width="100%">
+			<tr>
+				<td style="background-color:rgb(184,0,4);width:10px;"></td>
+				<td style="padding-left:5px;">
+					{* [TODO] Display by Group *}
+					<table cellpadding="2" cellspacing="1" border="0">
+					{assign var=last_group_id value=-1}
+					{foreach from=$ticket_fields item=f key=f_id}
+					{assign var=field_group_id value=$f->group_id}
+					{if $field_group_id == 0 || $field_group_id == $ticket->team_id}
+						{assign var=show_submit value=1}
+						{if $field_group_id != $last_group_id}
+							<tr>
+								<td colspan="2"><H2>{if $f->group_id==0}Global{else}{$groups.$field_group_id->name}{/if} Fields</H2></td>
+							</tr>
+						{/if}
+							<tr>
+								<td valign="top" width="1%" nowrap="nowrap">
+									<input type="hidden" name="field_ids[]" value="{$f_id}">
+									<b>{$f->name}:</b>
+								</td>
+								<td valign="top" width="99%">
+									{if $f->type=='S'}
+										<input type="text" name="field_{$f_id}" size="45" maxlength="255" value="{$ticket_field_values.$f_id|escape}"><br>
+									{elseif $f->type=='U'}
+										<input type="text" name="field_{$f_id}" size="45" maxlength="255" value="{$ticket_field_values.$f_id|escape}">
+										{if !empty($ticket_field_values.$f_id)}<a href="{$ticket_field_values.$f_id|escape}" target="_blank">URL</a>{else}<i>(URL)</i>{/if}
+									{elseif $f->type=='N'}
+										<input type="text" name="field_{$f_id}" size="45" maxlength="255" value="{$ticket_field_values.$f_id|escape}"><br>
+									{elseif $f->type=='T'}
+										<textarea name="field_{$f_id}" rows="4" cols="50" style="width:98%;">{$ticket_field_values.$f_id}</textarea><br>
+									{elseif $f->type=='C'}
+										<input type="checkbox" name="field_{$f_id}" value="1" {if $ticket_field_values.$f_id}checked{/if}><br>
+									{elseif $f->type=='X'}
+										{foreach from=$f->options item=opt}
+										<label><input type="checkbox" name="field_{$f_id}[]" value="{$opt|escape}" {if isset($ticket_field_values.$f_id.$opt)}checked="checked"{/if}> {$opt}</label><br>
+										{/foreach}
+									{elseif $f->type=='D'}
+										<select name="field_{$f_id}">{* [TODO] Fix selected *}
+											<option value=""></option>
+											{foreach from=$f->options item=opt}
+											<option value="{$opt|escape}" {if $opt==$ticket_field_values.$f_id}selected{/if}>{$opt}</option>
+											{/foreach}
+										</select><br>
+									{elseif $f->type=='M'}
+										<select name="field_{$f_id}[]" size="5" multiple="multiple">
+											{foreach from=$f->options item=opt}
+											<option value="{$opt|escape}" {if isset($ticket_field_values.$f_id.$opt)}selected="selected"{/if}>{$opt}</option>
+											{/foreach}
+										</select><br>
+										<i><small>{$translate->_('common.tips.multi_select')}</small></i>
+									{elseif $f->type=='E'}
+										<input type="text" name="field_{$f_id}" size="45" maxlength="255" value="{if !empty($ticket_field_values.$f_id)}{$ticket_field_values.$f_id|devblocks_date}{/if}"><button type="button" onclick="ajax.getDateChooser('dateCustom{$f_id}',this.form.field_{$f_id});">&nbsp;<img src="{devblocks_url}c=resource&p=cerberusweb.core&f=images/calendar.gif{/devblocks_url}" align="top">&nbsp;</button>
+										<div id="dateCustom{$f_id}" style="display:none;position:absolute;z-index:1;"></div>
+									{elseif $f->type=='W'}
+										{if empty($workers)}
+											{php}$this->assign('workers', DAO_Worker::getAllActive());{/php}
+										{/if}
+										<select name="field_{$f_id}">
+											<option value=""></option>
+											{foreach from=$workers item=worker}
+											<option value="{$worker->id}" {if $worker->id==$ticket_field_values.$f_id}selected="selected"{/if}>{$worker->getName()}</option>
+											{/foreach}
+										</select>
+									{/if}	
+								</td>
+							</tr>
+						{assign var=last_group_id value=$f->group_id}
+					{/if}
+					{/foreach}
+					</table>
+					</td>
+				</tr>
+				</table>
+			</div>
+		</td>
+	</tr>
 				
 	<tr>
 		<td>
@@ -195,4 +275,4 @@ YAHOO.util.Event.addListener(window,'load',function(e) {
 	ajax.cbEmailMultiplePeek(null);
 });
 {/literal}
-</script>
\ No newline at end of file
+</script>

