[*] BO: you can now export listing of some tabs in CSV
This commit is contained in:
@@ -170,6 +170,8 @@ class AdminControllerCore extends Controller
|
||||
/** @var bool boolean List content lines are clickable if true */
|
||||
protected $list_no_link = false;
|
||||
|
||||
protected $allow_export = false;
|
||||
|
||||
/** @var array $cache_lang cache for traduction */
|
||||
public static $cache_lang = array();
|
||||
|
||||
@@ -564,6 +566,39 @@ class AdminControllerCore extends Controller
|
||||
$this->errors[] = Tools::displayError('An error occurred during image deletion (cannot load object).');
|
||||
return $object;
|
||||
}
|
||||
|
||||
public function processExport()
|
||||
{
|
||||
// clean buffer
|
||||
ob_clean();
|
||||
$this->getList($this->context->language->id);
|
||||
if (!count($this->_list))
|
||||
return;
|
||||
|
||||
header('Content-type: text/csv');
|
||||
header('Content-Type: application/force-download; charset=UTF-8');
|
||||
header('Cache-Control: no-store, no-cache');
|
||||
header('Content-disposition: attachment; filename="'.$this->table.'_'.date('Y-m-d_His').'.csv"');
|
||||
|
||||
$headers = array();
|
||||
foreach ($this->fields_list as $datas)
|
||||
$headers[] = $datas['title'];
|
||||
|
||||
$content = array();
|
||||
foreach ($this->_list as $i => $row)
|
||||
{
|
||||
$content[$i] = array();
|
||||
foreach ($this->fields_list as $key => $value)
|
||||
$content[$i][] = $row[$key];
|
||||
}
|
||||
$this->context->smarty->assign(array(
|
||||
'export_headers' => $headers,
|
||||
'export_content' => $content
|
||||
)
|
||||
);
|
||||
|
||||
$this->layout = 'layout-export.tpl';
|
||||
}
|
||||
|
||||
/**
|
||||
* Object Delete
|
||||
@@ -1025,6 +1060,11 @@ class AdminControllerCore extends Controller
|
||||
'href' => self::$currentIndex.'&add'.$this->table.'&token='.$this->token,
|
||||
'desc' => $this->l('Add new')
|
||||
);
|
||||
if ($this->allow_export)
|
||||
$this->toolbar_btn['export'] = array(
|
||||
'href' => self::$currentIndex.'&export'.$this->table.'&token='.$this->token,
|
||||
'desc' => $this->l('Export')
|
||||
);
|
||||
}
|
||||
$this->addToolBarModulesListButton();
|
||||
}
|
||||
@@ -1929,6 +1969,11 @@ class AdminControllerCore extends Controller
|
||||
else
|
||||
$this->errors[] = Tools::displayError('You do not have permission to view here.');
|
||||
}
|
||||
elseif (isset($_GET['export'.$this->table]))
|
||||
{
|
||||
if ($this->tabAccess['view'] === '1')
|
||||
$this->action = 'export';
|
||||
}
|
||||
/* Cancel all filters for this tab */
|
||||
elseif (isset($_POST['submitReset'.$this->table]))
|
||||
$this->action = 'reset_filters';
|
||||
|
||||
@@ -44,6 +44,8 @@ class AdminAddressesControllerCore extends AdminController
|
||||
$this->addRowAction('delete');
|
||||
$this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?')));
|
||||
|
||||
$this->allow_export = true;
|
||||
|
||||
if (!Tools::getValue('realedit'))
|
||||
$this->deleted = true;
|
||||
|
||||
@@ -61,8 +63,15 @@ class AdminAddressesControllerCore extends AdminController
|
||||
'country' => array('title' => $this->l('Country'), 'width' => 100, 'type' => 'select', 'list' => $this->countries_array, 'filter_key' => 'cl!id_country'));
|
||||
|
||||
parent::__construct();
|
||||
|
||||
$this->_select = 'cl.`name` as country';
|
||||
$this->_join = '
|
||||
LEFT JOIN `'._DB_PREFIX_.'country_lang` cl ON (cl.`id_country` = a.`id_country` AND cl.`id_lang` = '.(int)$this->context->language->id.')
|
||||
LEFT JOIN `'._DB_PREFIX_.'customer` c ON a.id_customer = c.id_customer
|
||||
';
|
||||
$this->_where = 'AND a.id_customer != 0 '.Shop::addSqlRestriction(Shop::SHARE_CUSTOMER, 'c');
|
||||
}
|
||||
|
||||
|
||||
public function initToolbar()
|
||||
{
|
||||
parent::initToolbar();
|
||||
@@ -71,18 +80,6 @@ class AdminAddressesControllerCore extends AdminController
|
||||
'desc' => $this->l('Import')
|
||||
);
|
||||
}
|
||||
|
||||
public function renderList()
|
||||
{
|
||||
$this->_select = 'cl.`name` as country';
|
||||
$this->_join = '
|
||||
LEFT JOIN `'._DB_PREFIX_.'country_lang` cl ON (cl.`id_country` = a.`id_country` AND cl.`id_lang` = '.(int)$this->context->language->id.')
|
||||
LEFT JOIN `'._DB_PREFIX_.'customer` c ON a.id_customer = c.id_customer
|
||||
';
|
||||
$this->_where = 'AND a.id_customer != 0 '.Shop::addSqlRestriction(Shop::SHARE_CUSTOMER, 'c');
|
||||
|
||||
return parent::renderList();
|
||||
}
|
||||
|
||||
public function renderForm()
|
||||
{
|
||||
|
||||
@@ -35,6 +35,7 @@ class AdminCartsControllerCore extends AdminController
|
||||
|
||||
$this->addRowAction('view');
|
||||
$this->addRowAction('delete');
|
||||
$this->allow_export = true;
|
||||
|
||||
$this->_select = 'CONCAT(LEFT(c.`firstname`, 1), \'. \', c.`lastname`) `customer`, a.id_cart total, ca.name carrier, o.id_order, IF(co.id_guest, 1, 0) id_guest';
|
||||
$this->_join = 'LEFT JOIN '._DB_PREFIX_.'customer c ON (c.id_customer = a.id_customer)
|
||||
|
||||
@@ -45,6 +45,7 @@ class AdminCategoriesControllerCore extends AdminController
|
||||
$this->lang = true;
|
||||
$this->deleted = false;
|
||||
$this->explicitSelect = true;
|
||||
$this->allow_export = true;
|
||||
|
||||
$this->context = Context::getContext();
|
||||
|
||||
|
||||
@@ -42,6 +42,8 @@ class AdminCustomersControllerCore extends AdminController
|
||||
$this->deleted = true;
|
||||
$this->explicitSelect = true;
|
||||
|
||||
$this->allow_export = true;
|
||||
|
||||
$this->addRowAction('edit');
|
||||
$this->addRowAction('view');
|
||||
$this->addRowAction('delete');
|
||||
|
||||
@@ -35,6 +35,7 @@ class AdminManufacturersControllerCore extends AdminController
|
||||
$this->className = 'Manufacturer';
|
||||
$this->lang = false;
|
||||
$this->deleted = false;
|
||||
$this->allow_export = true;
|
||||
|
||||
$this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?')));
|
||||
|
||||
|
||||
@@ -71,6 +71,7 @@ class AdminProductsControllerCore extends AdminController
|
||||
$this->_defaultOrderBy = 'position';
|
||||
$this->max_file_size = (int)(Configuration::get('PS_LIMIT_UPLOAD_FILE_VALUE') * 1000000);
|
||||
$this->max_image_size = (int)Configuration::get('PS_PRODUCT_PICTURE_MAX_SIZE');
|
||||
$this->allow_export = true;
|
||||
|
||||
// @since 1.5 : translations for tabs
|
||||
$this->available_tabs_lang = array (
|
||||
|
||||
@@ -34,6 +34,8 @@ class AdminSuppliersControllerCore extends AdminController
|
||||
$this->addRowAction('view');
|
||||
$this->addRowAction('edit');
|
||||
$this->addRowAction('delete');
|
||||
$this->allow_export = true;
|
||||
|
||||
$this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?')));
|
||||
|
||||
$this->_select = 'COUNT(DISTINCT ps.`id_product`) AS products';
|
||||
|
||||
Reference in New Issue
Block a user