//Added bulk action in AdminShopUrlController and fixed norms

This commit is contained in:
lLefevre
2011-10-04 15:45:47 +00:00
parent 8165dc91f8
commit bfda79aef0
3 changed files with 100 additions and 90 deletions
+53 -49
View File
@@ -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
*}
<script type="text/javascript">
//<![CDATA[
function fillShopUrl()
{
var domain = $('#domain').val();
var physical = $('#physical_uri').val();
var virtual = $('#virtual_uri').val();
url = ((domain) ? domain : '???');
if (physical)
url += '/'+physical;
if (virtual)
url += '/'+virtual;
url = url.replace(/\/+/g, "/");
$('#final_url').val('http://'+url);
};
var shopUrl = {$tab_form['jsShopUrl']};
function checkMainUrlInfo(shopID)
{
if (!shopID)
shopID = $('#id_shop').val();
if (!shopUrl[shopID])
{
$('#main_off').attr('disabled', true);
$('#main_on').attr('checked', true);
$('#mainUrlInfo').css('display', 'block');
$('#mainUrlInfoExplain').css('display', 'none');
}
else
{
$('#main_off').attr('disabled', false);
$('#mainUrlInfo').css('display', 'none');
$('#mainUrlInfoExplain').css('display', 'block');
}
}
$().ready(function()
{
fillShopUrl();
checkMainUrlInfo();
$('#domain, #physical_uri, #virtual_uri').keyup(fillShopUrl);
});
//]]>
</script>
{if isset($tab_form)}
<script type="text/javascript">
//<![CDATA[
function fillShopUrl()
{
var domain = $('#domain').val();
var physical = $('#physical_uri').val();
var virtual = $('#virtual_uri').val();
url = ((domain) ? domain : '???');
if (physical)
url += '/'+physical;
if (virtual)
url += '/'+virtual;
url = url.replace(/\/+/g, "/");
$('#final_url').val('http://'+url);
};
var shopUrl = {$tab_form['jsShopUrl']};
function checkMainUrlInfo(shopID)
{
if (!shopID)
shopID = $('#id_shop').val();
if (!shopUrl[shopID])
{
$('#main_off').attr('disabled', true);
$('#main_on').attr('checked', true);
$('#mainUrlInfo').css('display', 'block');
$('#mainUrlInfoExplain').css('display', 'none');
}
else
{
$('#main_off').attr('disabled', false);
$('#mainUrlInfo').css('display', 'none');
$('#mainUrlInfoExplain').css('display', 'block');
}
}
$().ready(function()
{
fillShopUrl();
checkMainUrlInfo();
$('#domain, #physical_uri, #virtual_uri').keyup(fillShopUrl);
});
//]]>
</script>
<form action="{$tab_form['current']}&submitAdd{$tab_form['table']}=1&token={$tab_form['token']}" method="post">
{if $tab_form['id']}<input type="hidden" name="id_'.$this->table.'" value="'.$obj->id.'" />{/if}
<fieldset><legend>{l s ='Shop Url'}</legend>
@@ -112,9 +114,9 @@
<label>{l s ='Main URL:'}</label>
<div class="margin-form">
<input type="radio" name="main" id="main_on" value="1" {if $tab_form['main']} checked="checked"{/if}/>
<label class="t" for="main_on"> <img src="../img/admin/enabled.gif" alt="{l s ='Enabled'}" title="{l s ='Enabled'}" /></label>
<label class="t" for="main_on"><img src="../img/admin/enabled.gif" alt="{l s ='Enabled'}" title="{l s ='Enabled'}" /></label>
<input type="radio" name="main" id="main_off" value="0" {if !$tab_form['main']} checked="checked"{/if} />
<label class="t" for="main_off"> <img src="../img/admin/disabled.gif" alt="{l s ='Disabled'}" title="{l s ='Disabled'}" /></label>
<label class="t" for="main_off"><img src="../img/admin/disabled.gif" alt="{l s ='Disabled'}" title="{l s ='Disabled'}" /></label>
<p>{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).'}</p>
<p id="mainUrlInfo">{l s ='Since the selected shop has no main url, you have to set this url as main'}</p>
<p id="mainUrlInfoExplain">{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'}</p>
@@ -133,5 +135,7 @@
<div class="small"><sup>*</sup> {l s ='Required field'}</div>
</fieldset>
</form>
{/if}
{$content}
+11 -12
View File
@@ -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)
+36 -29
View File
@@ -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();
}