diff --git a/admin-dev/themes/template/adminShopUrl.tpl b/admin-dev/themes/template/adminShopUrl.tpl index c0c168de2..fb80e1657 100644 --- a/admin-dev/themes/template/adminShopUrl.tpl +++ b/admin-dev/themes/template/adminShopUrl.tpl @@ -23,55 +23,57 @@ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} - {if isset($tab_form)} + + +
{if $tab_form['id']}{/if}
{l s ='Shop Url'} @@ -112,9 +114,9 @@
- + - +

{l s ='If you set this url as main url for selected shop, all urls set to this shop will be redirected to this url (you can only have one main url per shop).'}

{l s ='Since the selected shop has no main url, you have to set this url as main'}

{l s ='The selected shop has already a main url, if you set this one as main url, the older one will be set as normal url'}

@@ -133,5 +135,7 @@
* {l s ='Required field'}
+ {/if} + {$content} \ No newline at end of file diff --git a/classes/shop/ShopUrl.php b/classes/shop/ShopUrl.php index 7b38b556d..68e01d86f 100644 --- a/classes/shop/ShopUrl.php +++ b/classes/shop/ShopUrl.php @@ -34,10 +34,9 @@ class ShopUrlCore extends ObjectModel public $virtual_uri; public $main; public $active; - - private static $main_domain = NULL; - private static $main_domain_ssl = NULL; - + + private static $main_domain = null; + private static $main_domain_ssl = null; protected $fieldsRequired = array('domain', 'id_shop'); protected $fieldsSize = array('domain' => 255, 'physical_uri' => 64, 'virtual_uri' => 64); @@ -69,16 +68,16 @@ class ShopUrlCore extends ObjectModel $fields['active'] = (int)$this->active; return $fields; } - + public function getURL($ssl = false) { if (!$this->id) - return ; + return; $url = ($ssl) ? 'https://'.$this->domain_ssl : 'http://'.$this->domain; return $url.$this->physical_uri.$this->virtual_uri; } - + public static function getShopUrls($id_shop = false) { $sql = 'SELECT * @@ -87,7 +86,7 @@ class ShopUrlCore extends ObjectModel '.($id_shop ? ' AND id_shop = '.(int)$id_shop : ''); return Db::getInstance()->ExecuteS($sql); } - + public function setMain() { $res = Db::getInstance()->autoExecute(_DB_PREFIX_.'shop_url', array('main' => 0), 'UPDATE', 'id_shop = '.(int)$this->id_shop); @@ -96,7 +95,7 @@ class ShopUrlCore extends ObjectModel return $res; } - + public function canAddThisUrl($domain, $domain_ssl, $physical_uri, $virtual_uri) { $physical_uri = trim($physical_uri, '/'); @@ -104,7 +103,7 @@ class ShopUrlCore extends ObjectModel $physical_uri = preg_replace('#/+#', '/', '/'.$physical_uri.'/'); else $this->physical_uri = '/'; - + $virtual_uri = trim($virtual_uri, '/'); if ($virtual_uri) $virtual_uri = preg_replace('#/+#', '/', trim($virtual_uri, '/')).'/'; @@ -117,7 +116,7 @@ class ShopUrlCore extends ObjectModel .($this->id ? ' AND id_shop_url != '.(int)$this->id : ''); return Db::getInstance()->getValue($sql); } - + public static function getMainShopDomain() { if (!self::$main_domain) @@ -126,7 +125,7 @@ class ShopUrlCore extends ObjectModel WHERE main=1 AND id_shop = '.Context::getContext()->shop->getID(true)); return self::$main_domain; } - + public static function getMainShopDomainSSL() { if (!self::$main_domain) diff --git a/controllers/admin/AdminShopUrlController.php b/controllers/admin/AdminShopUrlController.php index fd565ec3a..30a451bc7 100644 --- a/controllers/admin/AdminShopUrlController.php +++ b/controllers/admin/AdminShopUrlController.php @@ -35,6 +35,7 @@ class AdminShopUrlControllerCore extends AdminController $this->edit = true; $this->delete = true; $this->requiredDatabase = true; + $this->_listSkipDelete = array(1); $this->context = Context::getContext(); @@ -43,7 +44,8 @@ class AdminShopUrlControllerCore extends AdminController $this->_select = 's.name AS shop_name, CONCAT(a.physical_uri, a.virtual_uri) AS uri'; $this->_join = 'LEFT JOIN `'._DB_PREFIX_.'shop` s ON (s.id_shop = a.id_shop)'; - $this->_listSkipDelete = array(1); + + $this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?'))); $this->fieldsDisplay = array( 'id_shop_url' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), @@ -62,6 +64,7 @@ class AdminShopUrlControllerCore extends AdminController public function postProcess() { + info($this->action); $token = Tools::getValue('token') ? Tools::getValue('token') : $this->token; if (Tools::isSubmit('submitAdd'.$this->table)) { @@ -74,10 +77,10 @@ class AdminShopUrlControllerCore extends AdminController if (($object->main || Tools::getValue('main')) && !Tools::getValue('active')) $this->_errors[] = Tools::displayError('You can\'t disable a main url'); - + if ($object->canAddThisUrl(Tools::getValue('domain'), Tools::getValue('domain_ssl'), Tools::getValue('physical_uri'), Tools::getValue('virtual_uri'))) $this->_errors[] = Tools::displayError('A shop url that use this domain and uri already exists'); - + parent::postProcess(); Tools::generateHtaccess(dirname(__FILE__).'/../../.htaccess', Configuration::get('PS_REWRITING_SETTINGS'), Configuration::get('PS_HTACCESS_CACHE_CONTROL'), ''); } @@ -104,48 +107,52 @@ class AdminShopUrlControllerCore extends AdminController return parent::postProcess(); } - protected function afterUpdate($object) - { - if (Tools::getValue('main')) - $object->setMain(); - } - public function displayForm($isMainTab = true) { $this->content = parent::displayForm($isMainTab); if (!($obj = $this->loadObject(true))) return; - $currentShop = Shop::initialize(); + $current_shop = Shop::initialize(); - $listShopWithUrl = array(); + $list_shop_with_url = array(); foreach (Shop::getShops(false, null, true) as $id) - $listShopWithUrl[$id] = (bool)count(ShopUrl::getShopUrls($id)); - $jsShopUrl = Tools::jsonEncode($listShopWithUrl); + $list_shop_with_url[$id] = (bool)count(ShopUrl::getShopUrls($id)); - $domain = Validate::isLoadedObject($obj) ? $this->getFieldValue($obj, 'domain') : $currentShop->domain; - $domain_ssl = Validate::isLoadedObject($obj) ? $this->getFieldValue($obj, 'domain_ssl') : $currentShop->domain_ssl; - $physical_uri = Validate::isLoadedObject($obj) ? $this->getFieldValue($obj, 'physical_uri') : $currentShop->physical_uri; + $js_shop_url = Tools::jsonEncode($list_shop_with_url); - $this->context->smarty->assign('tab_form', array('current' => self::$currentIndex, - 'table' => $this->table, - 'token' => $this->token, - 'id' => $obj->id, - 'domain' => $domain, - 'domain_ssl' => $domain_ssl, - 'physical_uri' => $physical_uri, - 'virtual_uri' => $this->getFieldValue($obj, 'virtual_uri'), - 'getTree' => Shop::getTree(), - 'id_shop' => $obj->id_shop, - 'main' => $this->getFieldValue($obj, 'main') ? true : false, - 'active' => $this->getFieldValue($obj, 'active') ? true : false, - 'jsShopUrl' => $jsShopUrl)); + $domain = Validate::isLoadedObject($obj) ? $this->getFieldValue($obj, 'domain') : $current_shop->domain; + $domain_ssl = Validate::isLoadedObject($obj) ? $this->getFieldValue($obj, 'domain_ssl') : $current_shop->domain_ssl; + $physical_uri = Validate::isLoadedObject($obj) ? $this->getFieldValue($obj, 'physical_uri') : $current_shop->physical_uri; + + $this->context->smarty->assign('tab_form', array( + 'current' => self::$currentIndex, + 'table' => $this->table, + 'token' => $this->token, + 'id' => $obj->id, + 'domain' => $domain, + 'domain_ssl' => $domain_ssl, + 'physical_uri' => $physical_uri, + 'virtual_uri' => $this->getFieldValue($obj, 'virtual_uri'), + 'getTree' => Shop::getTree(), + 'id_shop' => $obj->id_shop, + 'main' => $this->getFieldValue($obj, 'main') ? true : false, + 'active' => $this->getFieldValue($obj, 'active') ? true : false, + 'jsShopUrl' => $js_shop_url + )); + } + + protected function afterUpdate($object) + { + if (Tools::getValue('main')) + $object->setMain(); } public function initContent() { if ($this->display != 'edit') $this->display = 'list'; + parent::initContent(); }