Added ability to add a new contact, which also fixes the glaring omission of saving changes to contact details on the edit page (previously we were only saving contact methods, not any contact details.

git-svn-id: file:///svn-source/pmgr/branches/invoice_receipt_20090629@218 97e9348a-65ac-dc4b-aefc-98561f571b83
This commit is contained in:
abijah
2009-07-06 00:42:57 +00:00
parent 6def9cbb02
commit ab0e85824b
3 changed files with 72 additions and 20 deletions

View File

@@ -98,14 +98,35 @@ class ContactsController extends AppController {
* action: edit
*/
function edit($id = null) {
function edit($id = null, $customer_id = null) {
if (isset($this->data)) {
if (isset($this->params['form']['cancel'])) {
$this->redirect(array('action'=>'view', $this->data['Contact']['id']));
if (isset($this->data['Contact']['id']))
$this->redirect(array('action'=>'view', $this->data['Contact']['id']));
/* else */
/* $this->redirect(array('controller' => 'customers', */
/* 'action'=>'add', $this->data['Customer']['id'])); */
return;
}
if (!$this->data['Contact']['display_name'])
$this->data['Contact']['display_name'] =
(($this->data['Contact']['first_name'] &&
$this->data['Contact']['last_name'])
? $this->data['Contact']['last_name'] . ', ' . $this->data['Contact']['first_name']
: ($this->data['Contact']['first_name']
? $this->data['Contact']['first_name']
: $this->data['Contact']['last_name']));
$this->Contact->create();
if (!$this->Contact->save($this->data, false)) {
pr("CONTACT SAVE FAILED");
$this->Session->setFlash("CONTACT SAVE FAILED", true);
return;
}
$this->data['Contact']['id'] = $this->Contact->id;
// Remove all associated ContactMethods, as it ensures
// any entries deleted by the user actually get deleted
// in the system. We'll recreate the needed ones anyway.
@@ -158,22 +179,27 @@ class ContactsController extends AppController {
return;
}
if (!$id) {
$this->Session->setFlash(__('Invalid Item.', true));
$this->redirect(array('action'=>'index'));
if ($id) {
$this->data = $this->Contact->find
('first', array
('contain' => array
(// Models
'ContactPhone',
'ContactEmail',
'ContactAddress',
'Customer'),
'conditions' => array('Contact.id' => $id),
));
$title = $this->data['Contact']['display_name'] . " : Edit";
}
else {
$title = "Enter New Contact";
$this->data = array('ContactPhone' => array(),
'ContactAddress' => array(),
'ContactEmail' => array());
}
$this->data = $this->Contact->find
('first', array
('contain' => array
(// Models
'ContactPhone',
'ContactEmail',
'ContactAddress',
'Customer'),
'conditions' => array('Contact.id' => $id),
));
$phone_types = array_flip($this->Contact->ContactPhone->getEnumValues('type'));
unset($phone_types[0]);
@@ -208,7 +234,20 @@ class ContactsController extends AppController {
// Prepare to render.
//pr($this->data);
$title = $this->data['Contact']['display_name'] . " : Edit";
$this->set(compact('title'));
$this->render('edit');
}
/**************************************************************************
**************************************************************************
**************************************************************************
* action: add
* - Adds a new contact
*/
function add($customer_id = null) {
$this->edit(null, $customer_id);
}
}

View File

@@ -230,6 +230,17 @@ class CustomersController extends AppController {
$this->sidemenu_links[] =
array('name' => 'Operations', 'header' => true);
$this->sidemenu_links[] =
array('name' => 'Edit',
'url' => array('action' => 'edit',
$id));
$this->sidemenu_links[] =
array('name' => 'Add Contact',
'url' => array('controller' => 'contacts',
'action' => 'add',
$id));
$this->sidemenu_links[] =
array('name' => 'Move-In',
'url' => array('action' => 'move_in',

View File

@@ -342,13 +342,13 @@ function contactMethodTypeDiv($obj, $type, $stype, $values = null) {
echo '<div class="contact edit">' . "\n";
echo $form->create('Contact') . "\n";
echo $form->create('Contact', array('action' => 'edit')) . "\n";
echo $form->input('id') . "\n";
echo($this->element
('form_table',
array('class' => 'item contact detail',
'caption' => 'Edit Contact',
'caption' => $this->data ? 'Edit Contact' : 'New Contact',
'fields' => array
('first_name' => null,
'last_name' => null,
@@ -364,6 +364,8 @@ echo($this->element
//'' => null,
//'' => '',
))) . "\n");
echo $form->submit('Update') . "\n";
?>
<div CLASS="dynamic-set">