Commit 6be2c618 authored by Steven Wittens's avatar Steven Wittens

- #20809: User-configurable, per-theme, optional favicons.

parent 753bc588
......@@ -216,7 +216,10 @@ function theme_get_settings($key = NULL) {
'mission' => '',
'default_logo' => 1,
'logo_path' => '',
'default_favicon' => 1,
'favicon_path' => '',
'toggle_logo' => 1,
'toggle_favicon' => 1,
'toggle_name' => 1,
'toggle_search' => 1,
'toggle_slogan' => 0,
......@@ -289,6 +292,20 @@ function theme_get_setting($setting_name, $refresh = FALSE) {
}
}
if ($settings['toggle_favicon']) {
if ($settings['default_favicon']) {
if (file_exists($favicon = dirname($theme_object->filename) .'/favicon.ico')) {
$settings['favicon'] = $favicon;
}
else {
$settings['favicon'] = 'misc/favicon.ico';
}
}
elseif ($settings['favicon_path']) {
$settings['favicon'] = $settings['favicon_path'];
}
}
foreach (array('primary', 'secondary') as $type) {
// Get the data to populate the textfields, if the variable is not an array .. try to parse the old-style link format.
$value = $settings[$type . '_links'];
......
......@@ -633,6 +633,19 @@ function system_theme_settings($key = '') {
}
}
// Check for a new uploaded favicon, and use that instead.
if ($file = file_check_upload('favicon_upload')) {
$parts = pathinfo($file->filename);
$filename = ($key) ? str_replace('/', '_', $key) . '_favicon.' . $parts['extension'] : 'favicon.' . $parts['extension'];
if ($file = file_save_upload('favicon_upload', $filename, 1)) {
$settings['default_favicon'] = 0;
$settings['favicon_path'] = $file->filepath;
// Update the variable table with the new settings so that they take effect immediately.
variable_set($var, $settings);
}
}
$form = '';
......@@ -643,10 +656,20 @@ function system_theme_settings($key = '') {
file_check_directory(variable_get('file_directory_path', 'files'), FILE_CREATE_DIRECTORY, 'file_directory_path');
$group .= form_file(t('Upload logo image'), 'logo_upload', 40, t("If you don't have direct file access to the server, use this field to upload your logo."));
$group .= form_button(t('Upload'), 'fileop');
$form = form_group(t('Logo image settings'), $group);
$form .= form_group(t('Logo image settings'), $group);
}
// Icon settings
if ((!$key) || in_array('toggle_favicon', $features)) {
$group = t('Your shortcut icon or \'favicon\' is displayed in the address bar and bookmarks of most browsers.');
$group .= form_checkbox(t('Use the default shortcut icon.'), "$var][default_favicon", 1, $settings['default_favicon'], t('Check here if you want the theme to use the default shortcut icon.'));
$group .= form_textfield(t('Path to custom icon'), "$var][favicon_path", $settings['favicon_path'], 50, 128, t('The path to the image file you would like to use as your custom shortcut icon.'));
file_check_directory(variable_get('file_directory_path', 'files'), FILE_CREATE_DIRECTORY, 'file_directory_path');
$group .= form_file(t('Upload icon image'), 'favicon_upload', 40, t("If you don't have direct file access to the server, use this field to upload your shortcut icon."));
$form .= form_group(t('Shortcut icon settings'), $group);
}
// System wide only settings.
......@@ -709,7 +732,8 @@ function system_theme_settings($key = '') {
'toggle_secondary_links' => t('Secondary links'),
'toggle_node_user_picture' => t('User pictures in posts'),
'toggle_comment_user_picture' => t('User pictures in comments'),
'toggle_search' => t('Search box'));
'toggle_search' => t('Search box'),
'toggle_favicon' => t('Shortcut icon'));
foreach ($toggles as $name => $title) {
if ((!$key) || in_array($name, $features)) {
......
......@@ -633,6 +633,19 @@ function system_theme_settings($key = '') {
}
}
// Check for a new uploaded favicon, and use that instead.
if ($file = file_check_upload('favicon_upload')) {
$parts = pathinfo($file->filename);
$filename = ($key) ? str_replace('/', '_', $key) . '_favicon.' . $parts['extension'] : 'favicon.' . $parts['extension'];
if ($file = file_save_upload('favicon_upload', $filename, 1)) {
$settings['default_favicon'] = 0;
$settings['favicon_path'] = $file->filepath;
// Update the variable table with the new settings so that they take effect immediately.
variable_set($var, $settings);
}
}
$form = '';
......@@ -643,10 +656,20 @@ function system_theme_settings($key = '') {
file_check_directory(variable_get('file_directory_path', 'files'), FILE_CREATE_DIRECTORY, 'file_directory_path');
$group .= form_file(t('Upload logo image'), 'logo_upload', 40, t("If you don't have direct file access to the server, use this field to upload your logo."));
$group .= form_button(t('Upload'), 'fileop');
$form = form_group(t('Logo image settings'), $group);
$form .= form_group(t('Logo image settings'), $group);
}
// Icon settings
if ((!$key) || in_array('toggle_favicon', $features)) {
$group = t('Your shortcut icon or \'favicon\' is displayed in the address bar and bookmarks of most browsers.');
$group .= form_checkbox(t('Use the default shortcut icon.'), "$var][default_favicon", 1, $settings['default_favicon'], t('Check here if you want the theme to use the default shortcut icon.'));
$group .= form_textfield(t('Path to custom icon'), "$var][favicon_path", $settings['favicon_path'], 50, 128, t('The path to the image file you would like to use as your custom shortcut icon.'));
file_check_directory(variable_get('file_directory_path', 'files'), FILE_CREATE_DIRECTORY, 'file_directory_path');
$group .= form_file(t('Upload icon image'), 'favicon_upload', 40, t("If you don't have direct file access to the server, use this field to upload your shortcut icon."));
$form .= form_group(t('Shortcut icon settings'), $group);
}
// System wide only settings.
......@@ -709,7 +732,8 @@ function system_theme_settings($key = '') {
'toggle_secondary_links' => t('Secondary links'),
'toggle_node_user_picture' => t('User pictures in posts'),
'toggle_comment_user_picture' => t('User pictures in comments'),
'toggle_search' => t('Search box'));
'toggle_search' => t('Search box'),
'toggle_favicon' => t('Shortcut icon'));
foreach ($toggles as $name => $title) {
if ((!$key) || in_array($name, $features)) {
......
......@@ -9,6 +9,7 @@
function chameleon_features() {
return array(
'logo',
'toggle_favicon',
'toggle_name',
'toggle_slogan',
'toggle_primary_links',
......@@ -18,6 +19,10 @@ function chameleon_features() {
function chameleon_page($content) {
$language = $GLOBALS['locale'];
if (theme_get_setting('toggle_favicon')) {
drupal_set_html_head('<link rel="shortcut icon" href="'. check_url(theme_get_setting('favicon')) .'" type="image/x-icon" />');
}
$title = drupal_get_title();
$output = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
......
......@@ -93,6 +93,7 @@ function _phptemplate_default_variables($hook, $variables) {
function phptemplate_features() {
return array(
'logo',
'toggle_favicon',
'toggle_name',
'toggle_search',
'toggle_slogan',
......@@ -110,15 +111,16 @@ function phptemplate_features() {
function phptemplate_page($content) {
/* Set title and breadcrumb to declared values */
if (file_exists(path_to_theme() . '/favicon.ico')) {
drupal_set_html_head("<link rel=\"shortcut icon\" href=\"" . path_to_theme() . "/favicon.ico\" />\n");
}
if ($_GET['q'] == variable_get('site_frontpage', 'node')) {
$mission = theme_get_setting('mission');
$frontpage = true;
}
/* Add favicon */
if (theme_get_setting('toggle_favicon')) {
drupal_set_html_head('<link rel="shortcut icon" href="'. check_url(theme_get_setting('favicon')) .'" type="image/x-icon" />');
}
/**
* Populate sidebars.
*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment