Index: branches/5.2.x/admin_templates/users/user_address_edit.tpl
===================================================================
diff -u -N
--- branches/5.2.x/admin_templates/users/user_address_edit.tpl (revision 0)
+++ branches/5.2.x/admin_templates/users/user_address_edit.tpl (revision 14953)
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: branches/5.2.x/install/english.lang
===================================================================
diff -u -N -r14923 -r14953
--- branches/5.2.x/install/english.lang (.../english.lang) (revision 14923)
+++ branches/5.2.x/install/english.lang (.../english.lang) (revision 14953)
@@ -265,9 +265,12 @@
SW5zdXJhbmNlIFR5cGU=
RW5hYmxlZA==
VXNlIGFzIEZyZWUgUHJvbW8gU2hpcHBpbmc=
+ UHJvZmlsZSBBZGRyZXNz
UmVjdXJyaW5nIEJpbGxpbmc=
SXRlbXMgU29sZA==
TGFzdCBQYXltZW50IERhdGU=
+ TGFzdCBVc2VkIGFzIEJpbGxpbmc=
+ TGFzdCBVc2VkIGFzIFNoaXBwaW5n
TGFzdCBVc2VkIEJ5
TGFzdCBVc2VkIE9u
TGlzdGFibGU=
@@ -640,6 +643,7 @@
TGlsYW5nZW5p
QWNjZXNz
QWNjZXNzICYgUHJpY2luZw==
+ QWRkcmVzc2Vz
QWZmaWxpYXRlIFBheW1lbnQgVHlwZXM=
QWZmaWxpYXRlIFBsYW5z
QWZmaWxpYXRlcw==
@@ -713,6 +717,7 @@
U3RvcmUgTmFtZQ==
VG9wIHNlbGxlcnM=
QmFodA==
+ QWRkaW5nIEFkZHJlc3M=
QWRkaW5nIEN1cnJlbmN5
QWRkaW5nIEdpZnQgQ2VydGlmaWNhdGU=
QWRkaW5nIG1hbnVmYWN0dXJlcg==
@@ -730,6 +735,7 @@
QWRkaW5nIE9yZGVy
QWRkaW5nIFByaWNlIEJyYWNrZXQ=
QWRkaW5nIFByb2R1Y3Q=
+ QWRkcmVzc2Vz
QWZmaWxpYXRlIFBheW1lbnRz
QWZmaWxpYXRlIFBheW1lbnQgVHlwZXM=
QWZmaWxpYXRlIFBsYW5z
@@ -745,6 +751,7 @@
Q3VycmVuY2llcw==
RGlzY291bnQgSXRlbXM=
RGlzY291bnRz
+ RWRpdGluZyBBZGRyZXNz
RWRpdGluZyBDdXJyZW5jeQ==
RWRpdGluZyBHaWZ0IENlcnRpZmljYXRl
RWRpdGluZyBNYW51ZmFjdHVyZXI=
@@ -837,6 +844,7 @@
SW5maW5pdHk=
TW9kaWZ5
TW9yZSBCcmFja2V0cw==
+ TmV3IEFkZHJlc3M=
TmV3IEFmZmlsaWF0ZSBQYXltZW50IFR5cGU=
TmV3IEdpZnQgQ2VydGlmaWNhdGU=
TmV3IE1hbnVmYWN0dXJlcg==
@@ -954,4 +962,4 @@
U3ViamVjdDogR2lmdCBDZXJ0aWZpY2F0ZSAtIEVtYWlsIENvbmZpcm1hdGlvbgoKVGhpcyBpcyBhbiBlbWFpbCBjb25maXJtYXRpb24gdGhhdCBHaWZ0IENlcnRpZmljYXRlICI8aW5wMjptX3BhcmFtIG5hbWU9ImdpZmNlcnRfaWQiLz4iIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBlbWFpbGVkIHRvIDxpbnAyOm1fcGFyYW0gbmFtZT0idG9fbmFtZSIvPiAoPGEgaHJlZj0ibWFpbHRvOjxpbnAyOm1fcGFyYW0gbmFtZT0idG9fZW1haWwiLz4iPjxpbnAyOm1fcGFyYW0gbmFtZT0idG9fZW1haWwiLz48L2E+KSAu
-
+
\ No newline at end of file
Index: branches/5.2.x/units/addresses/addresses_event_handler.php
===================================================================
diff -u -N -r14849 -r14953
--- branches/5.2.x/units/addresses/addresses_event_handler.php (.../addresses_event_handler.php) (revision 14849)
+++ branches/5.2.x/units/addresses/addresses_event_handler.php (.../addresses_event_handler.php) (revision 14953)
@@ -1,6 +1,6 @@
Array('subitem' => true),
- 'OnUpdate' => Array('subitem' => true),
- 'OnCreate' => Array('subitem' => true),
- 'OnDelete' => Array('subitem' => true),
+ 'OnItemBuild' => Array ('subitem' => true),
+ 'OnUpdate' => Array ('subitem' => true),
+ 'OnCreate' => Array ('subitem' => true),
+ 'OnDelete' => Array ('subitem' => true),
);
$this->permMapping = array_merge($this->permMapping, $permissions);
@@ -49,11 +50,13 @@
*/
protected function SetCustomQuery(&$event)
{
- if ($this->Application->isAdminUser) {
- return ;
+ if ( $this->Application->isAdminUser ) {
+ return;
}
$object =& $event->getObject();
+ /* @var $object kDBList */
+
$user_id = $this->Application->RecallVar('user_id');
$object->addFilter('myitems_user','%1$s.PortalUserId = '.$user_id);
}
@@ -64,14 +67,14 @@
* @param kDBItem $object
* @param string $type
*/
- function processLastUsed(&$object, $type)
+ protected function processLastUsed(&$object, $type)
{
- $is_last = $object->GetDBField('LastUsedAs'.$type);
- if ($is_last) {
- $fields_hash = Array (
- 'LastUsedAs'.$type => 0,
- );
- $this->Conn->doUpdate($fields_hash, $object->TableName, 'PortalUserId = '.$object->GetDBField('PortalUserId'));
+ $is_last = $object->GetDBField('LastUsedAs' . $type);
+
+ if ( $is_last ) {
+ $fields_hash = Array ('LastUsedAs' . $type => 0);
+
+ $this->Conn->doUpdate($fields_hash, $object->TableName, 'PortalUserId = ' . $object->GetDBField('PortalUserId'));
}
}
@@ -105,7 +108,14 @@
$this->processLastUsed($object, 'Billing');
}
- function OnUpdate(&$event)
+ /**
+ * Updates kDBItem
+ *
+ * @param kEvent $event
+ * @return void
+ * @access protected
+ */
+ protected function OnUpdate(kEvent &$event)
{
parent::OnUpdate($event);
@@ -131,12 +141,13 @@
*/
function setNextTemplate(&$event)
{
- if ($this->Application->isAdminUser) {
- return ;
+ if ( $this->Application->isAdminUser ) {
+ return;
}
$event->SetRedirectParam('opener', 's');
$next_template = $this->Application->GetVar('next_template');
+
if ($next_template) {
$event->redirect = $next_template;
}
@@ -163,103 +174,136 @@
* [HOOK] Update PortalUser table when address marked as ProfileAddress is changed via addr prefix object
*
* @param kEvent $event
+ * @return bool
+ * @access protected
*/
- function OnUpdateProfileAddress(&$event)
+ protected function OnUpdateProfileAddress(kEvent &$event)
{
- $user =& $this->Application->recallObject('u.current');
+ $object =& $event->getObject(Array ('skip_autoload' => true));
+ /* @var $object kDBItem */
- if ($this->Application->GetVar('billing_address_id') > 0) {
- $address_id = $this->Application->GetVar('billing_address_id');
- }
- elseif ($this->Application->GetVar('shipping_address_id') > 0) {
- $address_id = $this->Application->GetVar('shipping_address_id');
- }
- else {
- $address_id = false;
- }
+ if ( !$this->Application->isAdmin ) {
+ $address_id = $this->getOrderAddressId();
- if (!$address_id) {
- return true;
+ if ( !$address_id ) {
+ return true;
+ }
+
+ $object->Load($address_id);
}
- $address =& $event->getObject(Array('skip_autoload' => true));
- $address->Load($address_id);
- if (!$address->GetDBField('IsProfileAddress')) {
+ if ( !$object->GetDBField('IsProfileAddress') ) {
return true;
}
- $field_map = Array( 'Company' => 1,
- 'Phone' => 1,
- 'Fax' => 1,
- 'Email' => 1,
- 'Address1' => 'Street',
- 'Address2' => 'Street2',
- 'City' => 1,
- 'State' => 1,
- 'Zip' => 1,
- 'Country' => 1,
- );
+ $field_map = Array (
+ 'Company' => 1,
+ 'Phone' => 1,
+ 'Fax' => 1,
+ 'Email' => 1,
+ 'Address1' => 'Street',
+ 'Address2' => 'Street2',
+ 'City' => 1,
+ 'State' => 1,
+ 'Zip' => 1,
+ 'Country' => 1,
+ );
- $user->setName( $address->GetDBField('To') );
+ $user =& $this->Application->recallObject($this->Application->isAdmin ? 'u' : 'u.current');
+ /* @var $user UsersItem */
+ $user->setName( $object->GetDBField('To') );
+
foreach ($field_map as $src_field => $dst_field) {
- if ($dst_field == 1) $dst_field = $src_field;
- $user->SetDBField($dst_field, $address->GetDBField($src_field));
+ if ( $dst_field == 1 ) {
+ $dst_field = $src_field;
+ }
+
+ $user->SetDBField($dst_field, $object->GetDBField($src_field));
}
return $user->Update();
}
/**
+ * Returns ID of address, that is selected in address dropdown on shipping/billing step of checkout
+ *
+ * @return int
+ * @access protected
+ */
+ protected function getOrderAddressId()
+ {
+ $ret = false;
+
+ if ( $this->Application->GetVar('billing_address_id') > 0 ) {
+ $ret = $this->Application->GetVar('billing_address_id');
+ }
+ elseif ( $this->Application->GetVar('shipping_address_id') > 0 ) {
+ $ret = $this->Application->GetVar('shipping_address_id');
+ }
+
+ return $ret;
+ }
+
+ /**
* [HOOK] Create user profile address based on PortalUser table data
*
* @param kEvent $event
+ * @return bool
+ * @access protected
*/
- function OnUpdateUserProfile(&$event)
+ protected function OnUpdateUserProfile(kEvent &$event)
{
$user =& $event->MasterEvent->getObject();
+ /* @var $user UsersItem */
- $load_keys = Array('PortalUserId' => $user->GetID(), 'IsProfileAddress' => 1);
+ $load_keys = Array ('PortalUserId' => $user->GetID(), 'IsProfileAddress' => 1);
- $address =& $this->Application->recallObject($event->Prefix.'.-item', null, Array('skip_autoload' => true));
- $address->Load($load_keys);
+ $object =& $this->Application->recallObject($event->Prefix . '.-item', null, Array ('skip_autoload' => true));
+ /* @var $object kDBItem */
- $field_map = Array( 'PortalUserId' => 1,
- 'Company' => 1,
- 'Phone' => 1,
- 'Fax' => 1,
- 'Email' => 1,
- 'Address1' => 'Street',
- 'Address2' => 'Street2',
- 'City' => 1,
- 'State' => 1,
- 'Zip' => 1,
- 'Country' => 1,
- );
+ $object->Load($load_keys);
- $full_name = trim($user->GetDBField('FirstName').' '.$user->GetDBField('LastName'));
- $address->SetDBField('To', $full_name);
- $address->SetDBField('IsProfileAddress', 1);
+ $field_map = Array (
+ 'PortalUserId' => 1,
+ 'Company' => 1,
+ 'Phone' => 1,
+ 'Fax' => 1,
+ 'Email' => 1,
+ 'Address1' => 'Street',
+ 'Address2' => 'Street2',
+ 'City' => 1,
+ 'State' => 1,
+ 'Zip' => 1,
+ 'Country' => 1,
+ );
+ $full_name = trim($user->GetDBField('FirstName') . ' ' . $user->GetDBField('LastName'));
+ $object->SetDBField('To', $full_name);
+ $object->SetDBField('IsProfileAddress', 1);
+
foreach ($field_map as $dst_field => $src_field) {
- if ($src_field == 1) $src_field = $dst_field;
- $address->SetDBField($dst_field, $user->GetDBField($src_field));
+ if ( $src_field == 1 ) {
+ $src_field = $dst_field;
+ }
+
+ $object->SetDBField($dst_field, $user->GetDBField($src_field));
}
$sql = 'SELECT SUM(IF(LastUsedAsBilling = 1, 1, 0 )) AS HasBilling, SUM(IF(LastUsedAsShipping = 1, 1, 0)) AS HasShipping
- FROM '.$address->TableName.'
- WHERE PortalUserId = '.$user->GetID();
+ FROM ' . $object->TableName . '
+ WHERE PortalUserId = ' . $user->GetID();
$address_status = $this->Conn->GetRow($sql);
- if (!$address_status['HasBilling']) {
- $address->SetDBField('LastUsedAsBilling', 1);
+ if ( !$address_status['HasBilling'] ) {
+ $object->SetDBField('LastUsedAsBilling', 1);
}
- if (!$address_status['HasShipping']) {
- $address->SetDBField('LastUsedAsShipping', 1);
+ if ( !$address_status['HasShipping'] ) {
+ $object->SetDBField('LastUsedAsShipping', 1);
}
- return $address->isLoaded() ? $address->Update() : $address->Create();
+ return $object->isLoaded() ? $object->Update() : $object->Create();
}
/**
@@ -271,16 +315,18 @@
*/
function checkItemStatus(&$event)
{
- if ($this->Application->isAdminUser) {
+ if ( $this->Application->isAdminUser ) {
return true;
}
- if (!$this->Application->LoggedIn()) {
+ if ( !$this->Application->LoggedIn() ) {
return false;
}
$object =& $event->getObject();
- if (!$object->isLoaded()) {
+ /* @var $object kDBItem */
+
+ if ( !$object->isLoaded() ) {
return true;
}
@@ -308,7 +354,9 @@
$object =& $event->getObject();
/* @var $object kDBItem */
- $object->SetDBField('PortalUserId', $this->Application->RecallVar('user_id'));
+ if ( !$this->Application->isAdmin ) {
+ $object->SetDBField('PortalUserId', $this->Application->RecallVar('user_id'));
+ }
$cs_helper =& $this->Application->recallObject('CountryStatesHelper');
/* @var $cs_helper kCountryStatesHelper */
@@ -320,15 +368,22 @@
$this->processLastUsed($object, 'Billing');
}
+ /**
+ * Occurs before deleting item, id of item being
+ * deleted is stored as 'id' event param
+ *
+ * @param kEvent $event
+ * @access public
+ */
function OnBeforeItemDelete(&$event)
{
$object =& $event->getObject();
/* @var $object kDBItem */
- if (!$object->isLoaded() || !$this->checkItemStatus($event)) {
+ if ( !$object->isLoaded() || !$this->checkItemStatus($event) ) {
// not trivially loaded object OR not current user address
$event->status = kEvent::erPERM_FAIL;
- return ;
+ return;
}
}
@@ -350,4 +405,36 @@
$fields['Country']['default'] = $site_helper->getDefaultCountry('Shipping');
$this->Application->setUnitOption($event->Prefix, 'Fields', $fields);
}
+
+ /**
+ * [HOOK] Creates user addresses editing tab
+ *
+ * @param kEvent $event
+ */
+ function OnModifyUsersConfig(&$event)
+ {
+ $title_presets = $this->Application->getUnitOption($event->MasterEvent->Prefix, 'TitlePresets');
+
+ $title_presets['user_edit_addresses'] = Array (
+ 'prefixes' => Array ('u', $event->Prefix . '_List'),
+ 'format' => "#u_status# '#u_titlefield#' - !la_title_Addresses! (#" . $event->Prefix . "_recordcount#)"
+ );
+
+ $title_presets['user_address_edit'] = Array (
+ 'prefixes' => Array ('u', $event->Prefix),
+ 'new_status_labels' => Array ($event->Prefix => '!la_title_AddingAddress!'),
+ 'edit_status_labels' => Array ($event->Prefix => '!la_title_EditingAddress!'),
+ 'new_titlefield' => Array ($event->Prefix => '!la_title_NewAddress!'),
+ 'format' => "#u_status# '#u_titlefield#' - #{$event->Prefix}_status#"
+ );
+ $this->Application->setUnitOption($event->MasterEvent->Prefix, 'TitlePresets', $title_presets);
+
+ $edit_tab_presets = $this->Application->getUnitOption($event->MasterEvent->Prefix, 'EditTabPresets');
+
+ $edit_tab_presets['Default'][] = Array (
+ 'title' => 'la_tab_Addresses', 't' => 'in-commerce/users/user_edit_addresses', 'priority' => 6
+ );
+
+ $this->Application->setUnitOption($event->MasterEvent->Prefix, 'EditTabPresets', $edit_tab_presets);
+ }
}
\ No newline at end of file
Index: branches/5.2.x/admin_templates/users/user_edit_addresses.tpl
===================================================================
diff -u -N
--- branches/5.2.x/admin_templates/users/user_edit_addresses.tpl (revision 0)
+++ branches/5.2.x/admin_templates/users/user_edit_addresses.tpl (revision 14953)
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
Index: branches/5.2.x/units/addresses/addresses_config.php
===================================================================
diff -u -N -r14582 -r14953
--- branches/5.2.x/units/addresses/addresses_config.php (.../addresses_config.php) (revision 14582)
+++ branches/5.2.x/units/addresses/addresses_config.php (.../addresses_config.php) (revision 14953)
@@ -1,6 +1,6 @@
'*',
'DoEvent' => 'OnUpdateProfileAddress',
),
+ Array (
+ 'Mode' => hAFTER,
+ 'Conditional' => false,
+ 'HookToPrefix' => 'u',
+ 'HookToSpecial' => '*',
+ 'HookToEvent' => Array ('OnAfterConfigRead'),
+ 'DoPrefix' => '',
+ 'DoSpecial' => '*',
+ 'DoEvent' => 'OnModifyUsersConfig',
+ ),
),
'QueryString' => Array(
1 => 'id',
2 => 'Page',
3 => 'PerPage',
4 => 'event',
- 5 => 'mode',
),
'IDField' => 'AddressId',
@@ -104,13 +113,46 @@
'not_null' => '1', 'required' => 1, 'default' => ''
),
- 'LastUsedAsBilling' => Array('type' => 'int','not_null' => 1, 'default' => 0),
- 'LastUsedAsShipping' => Array('type' => 'int','not_null' => 1, 'default' => 0),
- 'IsProfileAddress' => Array('type' => 'int','not_null' => 1, 'default' => 0),
+ 'LastUsedAsBilling' => Array(
+ 'type' => 'int',
+ 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_Yes', 0 => 'la_No'), 'use_phrases' => 1,
+ 'not_null' => 1, 'default' => 0
+ ),
+ 'LastUsedAsShipping' => Array(
+ 'type' => 'int',
+ 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_Yes', 0 => 'la_No'), 'use_phrases' => 1,
+ 'not_null' => 1, 'default' => 0
+ ),
+ 'IsProfileAddress' => Array(
+ 'type' => 'int',
+ 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_Yes', 0 => 'la_No'), 'use_phrases' => 1,
+ 'not_null' => 1, 'default' => 0
+ ),
),
'VirtualFields' => Array(
'ShortAddress' => Array('type'=>'string', 'default' => ''),
),
+ 'Grids' => Array(
+ 'Default' => Array(
+ 'Fields' => Array(
+ 'AddressId' => Array ('title' => 'column:la_fld_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter'),
+ 'To' => Array ('title' => 'column:la_fld_FullName', 'filter_block' => 'grid_like_filter'),
+ 'Company' => Array ('filter_block' => 'grid_like_filter'),
+ 'Phone' => Array ('filter_block' => 'grid_like_filter'),
+ 'Fax' => Array ('filter_block' => 'grid_like_filter'),
+ 'Email' => Array ('filter_block' => 'grid_like_filter'),
+ 'Address1' => Array ('title' => 'column:la_fld_AddressLine1', 'filter_block' => 'grid_like_filter'),
+ 'Address2' => Array ('title' => 'column:la_fld_AddressLine2', 'filter_block' => 'grid_like_filter'),
+ 'City' => Array ('filter_block' => 'grid_like_filter'),
+ 'State' => Array ('filter_block' => 'grid_like_filter'),
+ 'Zip' => Array ('filter_block' => 'grid_like_filter'),
+ 'Country' => Array ('filter_block' => 'grid_options_filter'),
+ 'LastUsedAsBilling' => Array ('filter_block' => 'grid_options_filter'),
+ 'LastUsedAsShipping' => Array ('filter_block' => 'grid_options_filter'),
+ 'IsProfileAddress' => Array ('filter_block' => 'grid_options_filter'),
+ ),
+ ),
+ ),
);
\ No newline at end of file