[*] BO : reorganization of admin tabs
git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@13820 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
@@ -36,6 +36,11 @@ class AdminMetaControllerCore extends AdminController
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->ht_file = _PS_ROOT_DIR_.'/.htaccess';
|
||||
$this->rb_file = _PS_ROOT_DIR_.'/robots.txt';
|
||||
$this->sm_file = _PS_ROOT_DIR_.'/sitemap.xml';
|
||||
$this->rb_data = $this->getRobotsContent();
|
||||
|
||||
$this->addRowAction('edit');
|
||||
$this->addRowAction('delete');
|
||||
$this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?')));
|
||||
@@ -49,28 +54,64 @@ class AdminMetaControllerCore extends AdminController
|
||||
$this->_group = 'GROUP BY a.id_meta';
|
||||
|
||||
$mod_rewrite = Tools::modRewriteActive();
|
||||
$general_fields = array(
|
||||
'PS_REWRITING_SETTINGS' => array(
|
||||
'title' => $this->l('Friendly URL'),
|
||||
'desc' => ($mod_rewrite ? $this->l('Enable only if your server allows URL rewriting (recommended)') : ''),
|
||||
'validation' => 'isBool',
|
||||
'cast' => 'intval',
|
||||
'type' => 'rewriting_settings',
|
||||
'mod_rewrite' => $mod_rewrite
|
||||
),
|
||||
'PS_CANONICAL_REDIRECT' => array(
|
||||
'title' => $this->l('Automatically redirect to Canonical url'),
|
||||
'desc' => $this->l('Recommended but your theme must be compliant'),
|
||||
'validation' => 'isBool',
|
||||
'cast' => 'intval',
|
||||
'type' => 'bool'
|
||||
),
|
||||
);
|
||||
|
||||
if ($this->checkConfiguration($this->ht_file))
|
||||
$general_fields['PS_HTACCESS_DISABLE_MULTIVIEWS'] = array(
|
||||
'title' => $this->l('Disable apache multiviews'),
|
||||
'desc' => $this->l('Enable this option only if you have problems with some pages URL rewriting.'),
|
||||
'validation' => 'isBool',
|
||||
'cast' => 'intval',
|
||||
'type' => 'bool',
|
||||
);
|
||||
|
||||
// Options to generate robot.txt
|
||||
$robots_description = $this->l('Your file robots.txt MUST be in your website\'s root directory and nowhere else.');
|
||||
$robots_description .= '<br />'.$this->l('eg: http://www.yoursite.com/robots.txt');
|
||||
if ($this->checkConfiguration($this->rb_file))
|
||||
{
|
||||
$robots_description .= '<br />'.$this->l('Generate your "robots.txt" file by clicking on the following button (this will erase your old robots.txt file):');
|
||||
$robots_submit = array('name' => 'submitRobots', 'title' => $this->l('Generate robots.txt file'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$robots_description .= '<br />'.$this->l('Before being able to use this tool, you need to:');
|
||||
$robots_description .= '<br />- '.$this->l('create a robots.txt blank file in your root dir');
|
||||
$robots_description .= '<br />- '.$this->l(' give it write permissions (CHMOD 666 on Unix system)');
|
||||
}
|
||||
|
||||
$robots_options = array(
|
||||
'title' => $this->l('Robots file generation'),
|
||||
'description' => $robots_description,
|
||||
);
|
||||
|
||||
if (isset($robots_submit))
|
||||
$robots_options['submit'] = $robots_submit;
|
||||
|
||||
// List of options
|
||||
$this->options = array(
|
||||
'general' => array(
|
||||
'title' => $this->l('URLs Setup'),
|
||||
'fields' => array(
|
||||
'PS_REWRITING_SETTINGS' => array(
|
||||
'title' => $this->l('Friendly URL'),
|
||||
'desc' => ($mod_rewrite ? $this->l('Enable only if your server allows URL rewriting (recommended)') : ''),
|
||||
'validation' => 'isBool',
|
||||
'cast' => 'intval',
|
||||
'type' => 'rewriting_settings',
|
||||
'mod_rewrite' => $mod_rewrite
|
||||
),
|
||||
'PS_CANONICAL_REDIRECT' => array(
|
||||
'title' => $this->l('Automatically redirect to Canonical url'),
|
||||
'desc' => $this->l('Recommended but your theme must be compliant'),
|
||||
'validation' => 'isBool',
|
||||
'cast' => 'intval',
|
||||
'type' => 'bool'
|
||||
),
|
||||
),
|
||||
'fields' => $general_fields,
|
||||
'submit' => array()
|
||||
),
|
||||
'robots' => $robots_options,
|
||||
'routes' => array(
|
||||
'title' => $this->l('Schema of URLs'),
|
||||
'description' => $this->l('You can change here the pattern of your links. There are some available keywords for each route listed below, keywords with * are required. To add a keyword in URL use {keyword} syntax. You can add some text before or after the keyword IF the keyword is not empty with syntax {prepend:keyword:append}, for example {-hey-:meta_title} will add "-hey-my-title" in URL if meta title is set, or nothing. Friendly URL and rewriting Apache option must be activated on your web server to use this functionality.'),
|
||||
@@ -225,10 +266,63 @@ class AdminMetaControllerCore extends AdminController
|
||||
}
|
||||
Hook::exec('actionAdminMetaSave');
|
||||
}
|
||||
else if (Tools::isSubmit('submitRobots'))
|
||||
$this->generateRobotsFile();
|
||||
|
||||
return parent::postProcess();
|
||||
}
|
||||
|
||||
public function generateRobotsFile()
|
||||
{
|
||||
if (!$write_fd = @fopen($this->rb_file, 'w'))
|
||||
$this->errors[] = sprintf(Tools::displayError('Cannot write into file: %s. Please check write permissions.'), $this->rb_file);
|
||||
else
|
||||
{
|
||||
// PS Comments
|
||||
fwrite($write_fd, "# robots.txt automaticaly generated by PrestaShop e-commerce open-source solution\n");
|
||||
fwrite($write_fd, "# http://www.prestashop.com - http://www.prestashop.com/forums\n");
|
||||
fwrite($write_fd, "# This file is to prevent the crawling and indexing of certain parts\n");
|
||||
fwrite($write_fd, "# of your site by web crawlers and spiders run by sites like Yahoo!\n");
|
||||
fwrite($write_fd, "# and Google. By telling these \"robots\" where not to go on your site,\n");
|
||||
fwrite($write_fd, "# you save bandwidth and server resources.\n");
|
||||
fwrite($write_fd, "# For more information about the robots.txt standard, see:\n");
|
||||
fwrite($write_fd, "# http://www.robotstxt.org/wc/robots.html\n");
|
||||
|
||||
//GoogleBot specific
|
||||
fwrite($write_fd, "# GoogleBot specific\n");
|
||||
fwrite($write_fd, "User-agent: Googlebot\n");
|
||||
foreach ($this->rb_data['GB'] as $gb)
|
||||
fwrite($write_fd, 'Disallow: '.__PS_BASE_URI__.$gb."\n");
|
||||
|
||||
// User-Agent
|
||||
fwrite($write_fd, "# All bots\n");
|
||||
fwrite($write_fd, "User-agent: *\n");
|
||||
|
||||
// Directories
|
||||
fwrite($write_fd, "# Directories\n");
|
||||
foreach ($this->rb_data['Directories'] as $dir)
|
||||
fwrite($write_fd, 'Disallow: '.__PS_BASE_URI__.$dir."\n");
|
||||
|
||||
// Files
|
||||
fwrite($write_fd, "# Files\n");
|
||||
foreach ($this->rb_data['Files'] as $file)
|
||||
fwrite($write_fd, 'Disallow: '.__PS_BASE_URI__.$file."\n");
|
||||
|
||||
// Sitemap
|
||||
fwrite($write_fd, "# Sitemap\n");
|
||||
if (file_exists($this->sm_file))
|
||||
if (filesize($this->sm_file))
|
||||
fwrite(
|
||||
$write_fd,
|
||||
'Sitemap: '.(Configuration::get('PS_SSL_ENABLED') ? 'https://' : 'http://').$_SERVER['SERVER_NAME'].__PS_BASE_URI__.'sitemap.xml'."\n"
|
||||
);
|
||||
fwrite($write_fd, "\n");
|
||||
fclose($write_fd);
|
||||
|
||||
$this->redirect_after = self::$currentIndex.'&conf=4&token='.$this->token;
|
||||
}
|
||||
}
|
||||
|
||||
public function getList($id_lang, $orderBy = null, $orderWay = null, $start = 0, $limit = null, $id_lang_shop = false)
|
||||
{
|
||||
parent::getList($id_lang, $orderBy, $orderWay, $start, $limit, Context::getContext()->shop->id);
|
||||
@@ -268,7 +362,7 @@ class AdminMetaControllerCore extends AdminController
|
||||
public function updateOptionPsRewritingSettings()
|
||||
{
|
||||
Configuration::updateValue('PS_REWRITING_SETTINGS', (int)Tools::getValue('PS_REWRITING_SETTINGS'));
|
||||
Tools::generateHtaccess();
|
||||
Tools::generateHtaccess($this->ht_file, null, null, '', Tools::getValue('PS_HTACCESS_DISABLE_MULTIVIEWS'));
|
||||
}
|
||||
|
||||
public function updateOptionPsRouteProductRule()
|
||||
@@ -340,4 +434,55 @@ class AdminMetaControllerCore extends AdminController
|
||||
$this->addFieldRoute('cms_category_rule', $this->l('Route to CMS category'));
|
||||
$this->addFieldRoute('module', $this->l('Route to modules'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a file is writable
|
||||
*
|
||||
* @param string $file
|
||||
* @return bool
|
||||
*/
|
||||
public function checkConfiguration($file)
|
||||
{
|
||||
if (file_exists($file))
|
||||
return is_writable($file);
|
||||
return is_writable(dirname($file));
|
||||
}
|
||||
|
||||
public function getRobotsContent()
|
||||
{
|
||||
$tab = array();
|
||||
|
||||
// Directories
|
||||
$tab['Directories'] = array('classes/', 'config/', 'download/', 'mails/', 'modules/', 'translations/', 'tools/');
|
||||
|
||||
// Files
|
||||
$disallow_controllers = array(
|
||||
'addresses', 'address', 'authentication', 'cart', 'discount', 'footer',
|
||||
'get-file', 'header', 'history', 'identity', 'images.inc', 'init', 'my-account', 'order', 'order-opc',
|
||||
'order-slip', 'order-detail', 'order-follow', 'order-return', 'order-confirmation', 'pagination', 'password',
|
||||
'pdf-invoice', 'pdf-order-return', 'pdf-order-slip', 'product-sort', 'search', 'statistics','attachment', 'guest-tracking'
|
||||
);
|
||||
|
||||
// Rewrite files
|
||||
$tab['Files'] = array();
|
||||
if (Configuration::get('PS_REWRITING_SETTINGS'))
|
||||
{
|
||||
$sql = 'SELECT ml.url_rewrite
|
||||
FROM '._DB_PREFIX_.'meta m
|
||||
INNER JOIN '._DB_PREFIX_.'meta_lang ml ON ml.id_meta = m.id_meta
|
||||
WHERE m.page IN (\''.implode('\', \'', $disallow_controllers).'\')';
|
||||
if ($results = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql))
|
||||
foreach ($results as $row)
|
||||
$tab['Files'][] = $row['url_rewrite'];
|
||||
}
|
||||
|
||||
$tab['GB'] = array(
|
||||
'*orderby=','*orderway=','*tag=','*id_currency=','*search_query=','*id_lang=','*back=','*utm_source=','*utm_medium=','*utm_campaign=','*n='
|
||||
);
|
||||
|
||||
foreach ($disallow_controllers as $controller)
|
||||
$tab['GB'][] = '*controller='.$controller;
|
||||
|
||||
return $tab;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user