allow address removal from front
This commit is contained in:
@@ -26,6 +26,7 @@ use Propel\Runtime\Exception\PropelException;
|
|||||||
use Propel\Runtime\Propel;
|
use Propel\Runtime\Propel;
|
||||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
use Thelia\Core\Event\AddressCreateOrUpdateEvent;
|
use Thelia\Core\Event\AddressCreateOrUpdateEvent;
|
||||||
|
use Thelia\Core\Event\AddressEvent;
|
||||||
use Thelia\Core\Event\TheliaEvents;
|
use Thelia\Core\Event\TheliaEvents;
|
||||||
use Thelia\Model\Address as AddressModel;
|
use Thelia\Model\Address as AddressModel;
|
||||||
use Thelia\Model\Map\AddressTableMap;
|
use Thelia\Model\Map\AddressTableMap;
|
||||||
@@ -52,6 +53,13 @@ class Address extends BaseAction implements EventSubscriberInterface
|
|||||||
$this->createOrUpdate($addressModel, $event);
|
$this->createOrUpdate($addressModel, $event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function delete(AddressEvent $event)
|
||||||
|
{
|
||||||
|
$address = $event->getAddress();
|
||||||
|
|
||||||
|
$address->delete();
|
||||||
|
}
|
||||||
|
|
||||||
protected function createOrUpdate(AddressModel $addressModel, AddressCreateOrUpdateEvent $event)
|
protected function createOrUpdate(AddressModel $addressModel, AddressCreateOrUpdateEvent $event)
|
||||||
{
|
{
|
||||||
$addressModel->setDispatcher($this->getDispatcher());
|
$addressModel->setDispatcher($this->getDispatcher());
|
||||||
@@ -116,7 +124,8 @@ class Address extends BaseAction implements EventSubscriberInterface
|
|||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
TheliaEvents::ADDRESS_CREATE => array("create", 128),
|
TheliaEvents::ADDRESS_CREATE => array("create", 128),
|
||||||
TheliaEvents::ADDRESS_UPDATE => array("update", 128)
|
TheliaEvents::ADDRESS_UPDATE => array("update", 128),
|
||||||
|
TheliaEvents::ADDRESS_DELETE => array("delete", 128)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,6 +79,11 @@
|
|||||||
<default key="_view">address-update</default>
|
<default key="_view">address-update</default>
|
||||||
</route>
|
</route>
|
||||||
|
|
||||||
|
<route id="address.delete" path="/address/delete/{address_id}">
|
||||||
|
<default key="_controller">Thelia\Controller\Front\AddressController::deleteAction</default>
|
||||||
|
<default key="_view">account</default>
|
||||||
|
</route>
|
||||||
|
|
||||||
<route id="address.generateModal" path="/address/modal/{address_id}" methods="get">
|
<route id="address.generateModal" path="/address/modal/{address_id}" methods="get">
|
||||||
<default key="_controller">Thelia\Controller\Front\AddressController::generateModalAction</default>
|
<default key="_controller">Thelia\Controller\Front\AddressController::generateModalAction</default>
|
||||||
<default key="_view">modal-address</default>
|
<default key="_view">modal-address</default>
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
namespace Thelia\Controller\Front;
|
namespace Thelia\Controller\Front;
|
||||||
use Thelia\Core\Event\AddressCreateOrUpdateEvent;
|
use Thelia\Core\Event\AddressCreateOrUpdateEvent;
|
||||||
|
use Thelia\Core\Event\AddressEvent;
|
||||||
use Thelia\Core\Event\TheliaEvents;
|
use Thelia\Core\Event\TheliaEvents;
|
||||||
use Thelia\Form\AddressCreateForm;
|
use Thelia\Form\AddressCreateForm;
|
||||||
use Thelia\Form\AddressUpdateForm;
|
use Thelia\Form\AddressUpdateForm;
|
||||||
@@ -154,6 +155,22 @@ class AddressController extends BaseFrontController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function deleteAction($address_id)
|
||||||
|
{
|
||||||
|
$this->checkAuth();
|
||||||
|
|
||||||
|
$customer = $this->getSecurityContext()->getCustomerUser();
|
||||||
|
$address = AddressQuery::create()->findPk($address_id);
|
||||||
|
|
||||||
|
if(!$address || $customer->getId() != $address->getCustomerId()) {
|
||||||
|
$this->redirectToRoute("home");
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->dispatch(TheliaEvents::ADDRESS_DELETE, new AddressEvent($address));
|
||||||
|
|
||||||
|
$this->redirectToRoute("customer.account.view");
|
||||||
|
}
|
||||||
|
|
||||||
protected function createAddressEvent($form)
|
protected function createAddressEvent($form)
|
||||||
{
|
{
|
||||||
return new AddressCreateOrUpdateEvent(
|
return new AddressCreateOrUpdateEvent(
|
||||||
|
|||||||
@@ -129,6 +129,11 @@ final class TheliaEvents
|
|||||||
*/
|
*/
|
||||||
const ADDRESS_UPDATE = "action.updateAddress";
|
const ADDRESS_UPDATE = "action.updateAddress";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sent on address removal
|
||||||
|
*/
|
||||||
|
const ADDRESS_DELETE = "action.deleteAddress";
|
||||||
|
|
||||||
const BEFORE_CREATEADDRESS = "action.before_createAddress";
|
const BEFORE_CREATEADDRESS = "action.before_createAddress";
|
||||||
const AFTER_CREATEADDRESS = "action.after_createAddress";
|
const AFTER_CREATEADDRESS = "action.after_createAddress";
|
||||||
|
|
||||||
|
|||||||
@@ -78,8 +78,8 @@
|
|||||||
<a href="{url path="/address/create"}" class="btn btn-add-address">{intl l="Add a new address"}</a>
|
<a href="{url path="/address/create"}" class="btn btn-add-address">{intl l="Add a new address"}</a>
|
||||||
<table class="table table-address" role="presentation" summary="{intl l="My Address Books"}">
|
<table class="table table-address" role="presentation" summary="{intl l="My Address Books"}">
|
||||||
<tbody>
|
<tbody>
|
||||||
{loop type="address" name="customer.addresses"}
|
{loop type="address" name="customer.addresses" customer="current"}
|
||||||
<tr class="{if $DEFAULT == 1}address-primary{else}address-additional{/if}">
|
<tr class="{if $DEFAULT == 1}address-primary{else}address-additional{/if}" id="customer-address-{$ID}">
|
||||||
<th>{$LABEL}</th>
|
<th>{$LABEL}</th>
|
||||||
<td>
|
<td>
|
||||||
<ul class="list-address">
|
<ul class="list-address">
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
<div class="group-btn">
|
<div class="group-btn">
|
||||||
<a href="{url path="/address/update/{$ID}"}" class="btn btn-edit-address" data-toggle="tooltip" title="Edit this address"><i class="icon-pencil"></i> <span>{intl l="Edit"}</span></a>
|
<a href="{url path="/address/update/{$ID}"}" class="btn btn-edit-address" data-toggle="tooltip" title="Edit this address"><i class="icon-pencil"></i> <span>{intl l="Edit"}</span></a>
|
||||||
{if $DEFAULT != 1}
|
{if $DEFAULT != 1}
|
||||||
<a href="#" class="btn btn-remove-address" data-toggle="tooltip" title="Remove this address"><i class="icon-remove"></i> <span>{intl l="Cancel"}</span></a>
|
<a href="{url path="/address/delete/{$ID}"}" class="btn btn-remove-address remove-address" title="{intl l="Remove this address"}" data-toggle="tooltip"><i class="icon-remove"></i> <span>{intl l="Cancel"}</span></a>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@@ -173,4 +173,37 @@
|
|||||||
|
|
||||||
</div><!-- /.layout -->
|
</div><!-- /.layout -->
|
||||||
|
|
||||||
|
<div class="modal fade" id="address-delete-modal" tabindex="-1" role="dialog" aria-hidden="true">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<div class="modal-content">
|
||||||
|
|
||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
|
<h3>{intl l="Delete address"}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
{intl l="Do you really want to delete this address ?"}
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<a href="#" type="button" class="btn btn-default" data-dismiss="modal" aria-hidden="true"><span class="glyphicon glyphicon-remove"></span> {intl l="No"}</a>
|
||||||
|
<a href="#" id="address-delete-link" type="submit" class="btn btn-default btn-primary"><span class="glyphicon glyphicon-check"></span> {intl l="Yes"}</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/block}
|
||||||
|
|
||||||
|
{block name="after-javascript-include"}
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function(){
|
||||||
|
$(".remove-address").click(function(e){
|
||||||
|
e.preventDefault();
|
||||||
|
$("#address-delete-link").attr("href", $(this).attr("href"));
|
||||||
|
$('#address-delete-modal').modal('show');
|
||||||
|
})
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
{/block}
|
{/block}
|
||||||
Reference in New Issue
Block a user