From 7f956e71b91f32ff6ca87ea6a0f56cc0f02c7005 Mon Sep 17 00:00:00 2001 From: vdigital Date: Tue, 26 Aug 2008 14:18:42 +0000 Subject: [PATCH] Swift Theme Creator (minor changes): partly functional version. git-svn-id: http://piwigo.org/svn/trunk@2487 68402e56-0260-453c-a942-63ccdbb3a9ee --- plugins/SwiftThemeCreator/sample.jpg | Bin 55215 -> 47132 bytes plugins/SwiftThemeCreator/simul/.cvsignore | 1 + plugins/SwiftThemeCreator/simul/index.php | 30 ++ plugins/SwiftThemeCreator/theme.tpl | 6 +- plugins/SwiftThemeCreator/theme_creator.php | 482 +++++++++++++------- plugins/SwiftThemeCreator/theme_creator.tpl | 148 ++++-- plugins/SwiftThemeCreator/themeconf.inc.tpl | 6 + plugins/SwiftThemeCreator/titrePage-bg.png | Bin 201 -> 179 bytes template/yoga/header.tpl | 7 +- 9 files changed, 466 insertions(+), 214 deletions(-) create mode 100644 plugins/SwiftThemeCreator/simul/.cvsignore create mode 100644 plugins/SwiftThemeCreator/simul/index.php diff --git a/plugins/SwiftThemeCreator/sample.jpg b/plugins/SwiftThemeCreator/sample.jpg index e2763c879caff3b370e7c0e0ac6470ad6aa6bdd7..e5686d9b724de5e5085097d3d02c248e75fe07a5 100644 GIT binary patch literal 47132 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

ltf}8{-*aWX~(d`$|-#)?1_o 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 AaR2}S literal 55215 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 diff --git a/plugins/SwiftThemeCreator/theme.tpl b/plugins/SwiftThemeCreator/theme.tpl index b56d2e217..09511ba38 100644 --- a/plugins/SwiftThemeCreator/theme.tpl +++ b/plugins/SwiftThemeCreator/theme.tpl @@ -9,16 +9,16 @@ INPUT.rateButtonSelected /* <= why IE doesn't inherit this ? */ {ldelim} H2, #menubar DT, .throw, A, INPUT.rateButton {ldelim} color: {$main.color3}; } -UL.tabsheet LI.normal_tab:hover {ldelim} border: 1px solid {$main.color4}; } +UL.tabsheet LI.normal_tab:hover {ldelim} border: 1px solid {$main.color3}; } A:hover {ldelim} color: {$main.color4}; } .content UL.thumbnails SPAN.wrap2:hover, .content UL.thumbnailCategories DIV.thumbnailCategory:hover, .content UL.thumbnailCategories DIV.thumbnailCategory:hover A {ldelim} - color: {$main.color4}; border: 1px solid {$main.color5}; background-color: {$main.color6}; } + color: {$main.color4}; border: 1px solid {$main.color4}; background-color: {$main.color6}; } #menubar DL, .content, #comments DIV.comment BLOCKQUOTE, -#imageHeaderBar, H2, #menubar DT, #imageToolBar {ldelim} border: 1px solid {$main.color5}; } +#imageHeaderBar, H2, #menubar DT, #imageToolBar {ldelim} border: 1px solid {$main.color4}; } #menubar DL, .content, #imageToolBar, .header_notes, UL.tabsheet LI.selected_tab {ldelim} background-color: {$main.color6}; } diff --git a/plugins/SwiftThemeCreator/theme_creator.php b/plugins/SwiftThemeCreator/theme_creator.php index 7e9d6f006..e520eee27 100644 --- a/plugins/SwiftThemeCreator/theme_creator.php +++ b/plugins/SwiftThemeCreator/theme_creator.php @@ -21,10 +21,11 @@ // | USA. | // +-----------------------------------------------------------------------+ -/* Ajouter le lien au menu de l'admin */ +/* TODO: Revoir le lien du menu de l'admin */ if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); if (!defined('IN_ADMIN') or !IN_ADMIN) die('Hacking attempt!'); -define(STC_PATH, PHPWG_PLUGINS_PATH.'SwiftThemeCreator/'); +define('STC_PATH', PHPWG_PLUGINS_PATH.'SwiftThemeCreator/'); +define('STC_INTERNAL_VERSION', '1.40'); /* * stc_hex2rgb convert any string to array of RGB values */ @@ -76,127 +77,250 @@ function stc_newfile( $filename, $data ) } return false; } +/* + * Default values + */ +function init_main(&$main) +{ + global $available_templates; + $main = array( + STC_INTERNAL_VERSION => true, /* $main version */ + 'template_sel' => 0, + 'newtpl' => 'yoga', + 'newtheme' => '', + 'simulate' => true, + 'colorize' => false, + 'brightness' => false, + 'contrast' => false, + 'new_theme' => '', + 'color1' => '#111111', + 'color' => array('#111111', '#EEEEEE', '#FF7700', '#FF3333', '#FF3363', ), + 'templatedir' => PHPWG_ROOT_PATH . 'plugins/SwiftThemeCreator/simul', + 'color1' => '#111111', + 'color2' => '#EEEEEE', + 'color3' => '#FF7700', + 'color4' => '#FF3333', + 'color5' => '#FF3363', + 'background' => 'fixed', + 'picture_url' => PHPWG_ROOT_PATH . 'plugins/SwiftThemeCreator/sample.jpg', + 'picture_width' => 2048, + 'picture_height' => 100, + 'background_mode' => 'as', + 'src_category' => 0, + 'category' => 'header', + 'phase' => 'Kernel init', + 'subphase' => 'New version', + ); +} $errors = array(); $infos = array(); -$available_templates = array(); -$template_dir = PHPWG_ROOT_PATH.'template'; -foreach (get_dirs($template_dir) as $dir) -{ - array_push($available_templates, $dir); -} // +-----------------------------------------------------------------------+ -// | selected templates | +// | Kernel init | // +-----------------------------------------------------------------------+ if (!isset($swift_theme_creator)) $swift_theme_creator = new ThemeCreator(); $swift_theme_creator->reload(); $main = $swift_theme_creator->theme_config; -if (isset($_POST['submit']) and (!is_adviser())) +/* + * Find templates + */ +$available_templates = array(); +$template_dir = PHPWG_ROOT_PATH.'template'; +foreach (get_dirs($template_dir) as $dir) +{ array_push($available_templates, $dir); +} +/* + * $main is reloaded but does template still exist? + * Does the fixed background still exist? Category? ... + */ +if (!isset($main[STC_INTERNAL_VERSION])) init_main($main); +$flip = array_flip($available_templates); +$main['template_sel'] = (isset($flip[$main['newtpl']])) ? + $flip[$main['newtpl']] : 0; /* Deleted ? First available */ +$main['subphase'] = 'Find category'; +$query = 'SELECT id,name,uppercats,global_rank + FROM ' . CATEGORIES_TABLE . ';'; +display_select_cat_wrapper($query,array(),'src_category'); +$available_cat = $template->get_template_vars('src_category'); +$flip = array_flip($available_cat); +$main['src_category'] = (isset($flip[$main['category']])) ? + $flip[$main['category']] : max($flip); /* Deleted ? Most recent */ + + +// +-----------------------------------------------------------------------+ +// | $_POST controls | +// +-----------------------------------------------------------------------+ +$main['phase'] = 'POST controls'; +if (!isset($_POST['reset'])) { - // 1 - Theme name control - $main['newtheme'] = strip_tags($_POST['new_theme']); - if ( !preg_match('/^[a-z0-9-_]{1,8}$/', $main['newtheme']) ) - array_push($errors, - l10n('Invalid theme name: 1 to 8 lowercase alphanumeric characters' - . ' including "-" and "_".')); + $main['simulate'] = isset($_POST['simulate']); + if (!isset($_POST['submit'])) $main['simulate'] = true; + /* + * Template controls + */ + $main['subphase'] = 'template controls'; + if (isset($_POST['template'])) $main['template_sel'] = $_POST['template']; + $main['newtpl'] = $available_templates[$main['template_sel']]; + if ($main['newtpl'] != 'yoga') + array_push($infos, l10n('Unpredictable results could be observed with ' + . 'this template. Preview is based on yoga template only.')); - // 2 - Colours control - $main['color'] = array($_POST['color1'], $_POST['color2'], - $_POST['color3'], $_POST['color4'], - $_POST['color5']); - $colors = $main['color'][0] . $main['color'][1] . $main['color'][2] - . $main['color'][3] . $main['color'][4]; + /* + * Theme controls + */ + $main['subphase'] = 'theme controls'; + if (isset($_POST['new_theme'])) $main['newtheme'] = strip_tags($_POST['new_theme']); + if ($main['newtheme'] == '') $main['simulate'] = true; /* Empty = Simulate */ + $cleaning = true; /* Delete files on failure */ + if ( !$main['simulate'] and !preg_match('/^[a-z0-9-_]{1,8}$/', $main['newtheme']) ) + array_push($errors, l10n('Invalid theme name: 1 to 8 lowercase' + . ' alphanumeric characters including "-" and "_".')); + if ($main['simulate']) { /* $main['templatedir'] != $template_dir (Smarty) */ + $main['templatedir'] = PHPWG_ROOT_PATH . 'plugins/SwiftThemeCreator/simul'; + $themedir = $main['templatedir']; + $cleaning = false; /* No delete with simulate */ + } else { + $main['templatedir'] = PHPWG_ROOT_PATH . 'template/' . $main['newtpl']; + $themedir = $main['templatedir'] . '/theme/' . $main['newtheme']; + } + + /* + * Directories controls + */ + $main['subphase'] = 'directories controls'; + if (is_dir( $themedir ) and !$main['simulate']) { + array_push($errors, '['.$themedir.'] : '.l10n('Invalid theme: This' + . ' theme exists already (no override available).')); + $cleaning = false; /* No delete on existing theme */ + } elseif ( !is_writable($main['templatedir']) ) + array_push($errors, '['.$main['templatedir'].'] : '.l10n('no_write_access')); + + /* + * Colors controls + */ + $main['subphase'] = 'colors controls'; + if (isset($_POST['color1'])) + $main['color'] = array( + $_POST['color1'], $_POST['color2'], $_POST['color3'], $_POST['color4'], + $_POST['color5']); + $main['color1'] = $main['color'][0]; + $main['color2'] = $main['color'][1]; + $main['color3'] = $main['color'][2]; + $main['color4'] = $main['color'][3]; + $main['color5'] = $main['color'][4]; + $colors = $main['color1'] . $main['color2'] + . $main['color3'] . $main['color4'] . $main['color5']; if ( !preg_match('/^(#?([A-Fa-f0-9]{3}|[A-Fa-f0-9]{6})){5}$/', $colors) ) - array_push($errors, - l10n('Invalid color code: 3 or 6 hexadecimal characters, preceded' - . ' or not by "#"')); - - // 2.1 - Background and text control - list($r1,$g1,$b1) = stc_hex2rgb($main['color'][0]); + array_push($errors, l10n('Invalid color code: 3 or 6 hexadecimal characters,' + . ' preceded or not by "#"')); + + /* + * Background and text difference control + */ + $main['subphase'] = 'text difference controls'; + list($r,$g,$b) = stc_hex2rgb($main['color'][0]); list($r2,$g2,$b2) = stc_hex2rgb($main['color'][1]); - // Formula for converting RGB values to YIQ values - // as perceived brightness difference. - // Background and text "brightness" difference control: - $dif = abs( ( (($r1*299)+($g1*587)+($b1*114)) / 1000 ) - - ( (($r2*299)+($g2*587)+($b2*114)) / 1000 )); + $dif = abs( ( (($r*299)+($g*587)+($b*114)) / 1000 ) + - ( (( $r2*299)+($g2*587)+($b2*114)) / 1000 ) ); if ( $dif < 65 ) - array_push($errors, - l10n('Insufficient brightness difference between ' - . 'text and background. dif=') . $dif); - // Background and text "colour" difference control: - $dif = (max($r1, $r2) - min($r1, $r2)) - + (max($g1, $g2) - min($g1, $g2)) - + (max($b1, $b2) - min($b1, $b2)); + array_push($errors, l10n('Insufficient brightness difference between ' + . 'text and background. dif=') . $dif); + $dif = (max($r, $r2) - min($r, $r2)) + + (max($g, $g2) - min($g, $g2)) + (max($b, $b2) - min($b, $b2)); if ( $dif < 200 ) - array_push($errors, - l10n('Insufficient colour difference between ' - . 'text and background. dif=') . $dif); + array_push($errors, l10n('Insufficient colour difference between ' + . 'text and background. dif=') . $dif); - // 2.2 - Background and Internal links control - if (isset($do_it)) + /* + * Background and Internal links difference control + */ + $main['subphase'] = 'links difference controls'; + if (false) { - list($r1,$g1,$b1) = stc_hex2rgb($main['color'][0]); + list($r,$g,$b) = stc_hex2rgb($main['color'][0]); list($r2,$g2,$b2) = stc_hex2rgb($main['color'][2]); - // Background and Internal links "brightness" difference control: - $dif = abs( ( (($r1*299)+($g1*587)+($b1*114)) / 1000 ) + $dif = abs( ( (($r*299)+($g*587)+($b*114)) / 1000 ) - ( (($r2*299)+($g2*587)+($b2*114)) / 1000 )); if ( $dif < 65 ) - array_push($errors, - l10n('Insufficient brightness difference between ' - . 'Internal links and background. dif=') . $dif); - // Background and Internal links "colour" difference control: - $dif = (max($r1, $r2) - min($r1, $r2)) - + (max($g1, $g2) - min($g1, $g2)) - + (max($b1, $b2) - min($b1, $b2)); + array_push($errors, l10n('Insufficient brightness difference between ' + . 'Internal links and background. dif=') . $dif); + $dif = (max($r, $r2) - min($r, $r2)) + + (max($g, $g2) - min($g, $g2)) + (max($b, $b2) - min($b, $b2)); if ( $dif < 200 ) - array_push($errors, - l10n('Insufficient colour difference between ' - . 'Internal links and background. dif=') . $dif); + array_push($errors, l10n('Insufficient colour difference between ' + . 'Internal links and background. dif=') . $dif); } - // 3 - Directory control - $main['templatedir'] = PHPWG_ROOT_PATH . 'template/' - . $available_templates[$_POST['template']]; - $main['newtpl'] = $available_templates[$_POST['template']]; - $themedir = $main['templatedir'] . '/theme/' . $main['newtheme']; - if (is_dir( $themedir )) - array_push($errors, - '['.$themedir.'] : '.l10n('Invalid theme: This theme exists ' - . 'already (no override available).')); - elseif (!is_writable($main['templatedir'])) - array_push($errors, - '['.$main['templatedir'].'] : '.l10n('no_write_access')); - // 4 - Picture URL control - if ( $_POST['background'] == 'fixed' and (is_dir($_POST['picture_url']) - or !is_file($_POST['picture_url'])) ) - array_push($errors, - l10n('Header picture is not found, check its path and name.')); - - // 5 - Expected Width and Height limits control - if ( !(ctype_digit($_POST['picture_width']) and $_POST['picture_width'] > 11 - and $_POST['picture_width'] < 4097 ) ) - array_push($errors, - '['.$_POST['picture_width'].'] : ' - . l10n('incorrect width value [12-4096].')); - if ( !(ctype_digit($_POST['picture_height']) and $_POST['picture_height'] > 11 - and $_POST['picture_height'] < 201 ) ) - array_push($errors, - '['.$_POST['picture_height'].'] : ' - . l10n('incorrect width value [12-200].')); - - // 6 - Generate missing colors values - list($r1,$g1,$b1) = stc_hex2rgb($main['color'][0]); - if ((( (($r1+1)/256)*(($g1+1)/256)*(($b1+1)/256) ) * 1000 ) < 125 ) - $main['color6'] = lighten( $r1, $g1, $b1, 10); - else $main['color6'] = darken( $r1, $g1, $b1, 10); - list($r1,$g1,$b1) = stc_hex2rgb($main['color'][4]); - if ((( (($r1+1)/256)*(($g1+1)/256)*(($b1+1)/256) ) * 1000 ) < 125 ) - $main['color7'] = lighten( $r1, $g1, $b1, 10); - else $main['color7'] = darken( $r1, $g1, $b1, 10); + /* + * Header background controls + */ + $main['subphase'] = 'fixed background controls'; + if (isset($_POST['background'])) $main['background'] = $_POST['background']; + // Fixed + if ( $main['background'] == 'fixed' and isset($_POST['picture_url'])) { + if ( is_dir($_POST['picture_url']) + or !is_file($_POST['picture_url']) ) + array_push($errors, l10n('Header picture is not found, check its path and name.')); + $extension = substr($_POST['picture_url'],strrpos($_POST['picture_url'],'.')+1); + if (!in_array($extension, array('jpg','jpeg','png'))) + array_push($errors, l10n('Compliant extensions are .jpg, .jpeg or .png.')); + } + $main['subphase'] = 'random background controls'; + if (isset($_POST['src_category'])) + $main['src_category'] = (int) $_POST['src_category']; + $main['category'] = $available_cat[$main['src_category']]; - // Go ahead + /* + * Width and Height limits control + */ + $main['subphase'] = 'width and height controls'; + if ($main['background'] != 'off' + and isset($_POST['picture_width']) + and isset($_POST['picture_height'])) + { + if( !(ctype_digit($_POST['picture_width']) + and $_POST['picture_width'] > 11 + and $_POST['picture_width'] < 4097 ) ) + array_push($errors, '['.$_POST['picture_width'].'] : ' + . l10n('incorrect width value [12-4096].')); + else $main['picture_width'] = $_POST['picture_width']; + if ( !(ctype_digit($_POST['picture_height']) + and $_POST['picture_height'] > 11 + and $_POST['picture_height'] < 201 ) ) + array_push($errors, '['.$_POST['picture_height'].'] : ' + . l10n('incorrect width value [12-200].')); + else $main['picture_height'] = $_POST['picture_height']; + } + + /* + * Generate missing colors values + */ + $main['subphase'] = 'complementary colors'; + list($r,$g,$b) = stc_hex2rgb($main['color'][0]); + if ((( (($r+1)/256)*(($g+1)/256)*(($b+1)/256) ) * 1000 ) < 125 ) + $main['color6'] = lighten( $r, $g, $b, 10); + else $main['color6'] = darken( $r, $g, $b, 10); + list($r,$g,$b) = stc_hex2rgb($main['color'][4]); + if ((( (($r+1)/256)*(($g+1)/256)*(($b+1)/256) ) * 1000 ) < 125 ) + $main['color7'] = lighten( $r, $g, $b, 10); + else $main['color7'] = darken( $r, $g, $b, 10); + $main['colorize'] = isset($_POST['colorize']) ? true : false; + $main['brightness'] = isset($_POST['brightness']) ? true : false; + $main['contrast'] = isset($_POST['contrast']) ? true : false; +} + +// +-----------------------------------------------------------------------+ +// | Build files | +// +-----------------------------------------------------------------------+ +$main['phase'] = 'Files building'; +if ((isset($_POST['submit']) or $main['simulate'] ) and (!is_adviser())) +{ + /* + * Go ahead + */ + $main['subphase'] = 'Mkdir control'; if (count($errors) == 0) { umask(0000); @mkdir($themedir, 0705); @@ -209,75 +333,136 @@ if (isset($_POST['submit']) and (!is_adviser())) /* * Build themeconf.inc.php **/ + $main['subphase'] = 'Build themeconf'; $plugin_tpl = new Template(); $plugin_tpl->set_filenames(array('themeconf'=> STC_PATH . 'themeconf.inc.tpl')); $plugin_tpl->assign('main',$main); $main['themeconf_inc_php'] = $plugin_tpl->parse('themeconf', true); - $r = stc_newfile( $themedir . '/themeconf.inc.php', + $rfs = stc_newfile( $themedir . '/themeconf.inc.php', $main['themeconf_inc_php'] ); /* * Build mail-css.tpl **/ + $main['subphase'] = 'Build mail-css'; $plugin_tpl->set_filenames(array('mailcss'=> STC_PATH . 'mail-css.tpl2')); $plugin_tpl->assign('main',$main); $main['mail-css.tpl'] = $plugin_tpl->parse('mailcss', true); - $r = $r && stc_newfile( $themedir . '/mail-css.tpl', + $rfs = $rfs && stc_newfile( $themedir . '/mail-css.tpl', $main['mail-css.tpl'] ); /* * Build theme.css - **/ - $plugin_tpl->set_filenames(array('theme'=> - STC_PATH . 'theme.tpl')); + **/ + $main['subphase'] = 'Build theme'; + $plugin_tpl->set_filenames(array('theme'=> STC_PATH . 'theme.tpl')); $plugin_tpl->assign('main',$main); $main['theme.css'] = $plugin_tpl->parse('theme', true); - $r = $r && stc_newfile( $themedir . '/theme.css', - $main['theme.css'] ); + $rfs = $rfs && stc_newfile( $themedir . '/theme.css', $main['theme.css'] ); + $internal = stc_hex2rgb($main['color'][2]); + list($r,$g,$b) = $internal; + $background = stc_hex2rgb($main['color'][0]); + list($r2,$g2,$b2) = $background; + $delta = floor(((array_sum($internal)/3) - (array_sum($background)/3))/5.1); + /* Brightness is half of difference between colors of internal lnks and bkground */ + /* but if color range is 0-255, resulting brightness range is between -50 and 50 */ + if ($delta > 0) { /* Colorize need a darker color on a dark background */ + $r = floor($r / 5); + $g = floor($g / 5); + $b = floor($b / 5); + } + if (isset($_POST['background']) and $_POST['background'] == 'random') + { + $main['subphase'] = 'Pick random for a pic'; + $main['random'] = mt_rand(12, 4096); + $result = pwg_query(' + SELECT i.path + FROM '.CATEGORIES_TABLE.' c, + '.IMAGES_TABLE.' i, + '.IMAGE_CATEGORY_TABLE.' ic + WHERE c.status=\'public\' + AND c.id = ic.category_id + AND c.id = ' . $main['src_category'] . ' + AND ic.category_id = ' . $main['src_category'] . ' + AND ic.image_id = i.id + ORDER BY RAND(' . $main['random'] . ') + LIMIT 0,1'); + if($result) list($main['pic_path']) = mysql_fetch_array($result); + else $main['pic_path'] = + PHPWG_ROOT_PATH . 'plugins/SwiftThemeCreator/simul/header.jpg'; + $main['pic_ext'] = substr($main['pic_path'],strrpos($main['pic_path'],'.')+1); + if ($main['pic_ext']=='png') + $img = imagecreatefrompng($main['pic_path']); + elseif (in_array($main['pic_ext'],array('jpg','jpeg'))) + $img = imagecreatefromjpeg($main['pic_path']); + else $img = imagecreatefromjpeg(PHPWG_ROOT_PATH + . 'plugins/SwiftThemeCreator/simul/header.jpg'); + imagejpeg( $img, $themedir . '/header.jpg', 90 ); + imagedestroy ($img); + } + if (isset($_POST['background']) and $_POST['background'] == 'fixed') + { + if (function_exists('imagecreatefromjpeg')) + { + $hdr = imagecreatetruecolor ($main['picture_width'], $main['picture_height']); + imagecolorset ( $hdr, 0, $r2, $g2, $b2 ); + if ($extension == 'png') $img = imagecreatefrompng($_POST['picture_url']); + else $img = imagecreatefromjpeg($_POST['picture_url']); + imagecopymerge ( $hdr, $img, 0, 0, 0, 0, $main['picture_width'], $main['picture_height'], 60 ); + imagedestroy ($img); + if ($main['colorize']) imagefilter($hdr, IMG_FILTER_COLORIZE, $r, $g, $b); + if ($main['brightness']) imagefilter($hdr, IMG_FILTER_BRIGHTNESS, $delta); + if ($main['contrast']) imagefilter($hdr, IMG_FILTER_CONTRAST, 20); + imagejpeg( $hdr, $themedir . '/header.jpg', 90 ); + imagedestroy ($hdr); + } + else @copy( $_POST['picture_url'], $themedir . '/header.jpg'); + } /* * Build background image for titrePage or definition list (in #menubar) **/ if (function_exists('imagecreatefrompng')) { + $hdr = imagecreatetruecolor (1, 38); + imagecolorset ( $hdr, 0, $r2, $g2, $b2 ); $img = imagecreatefrompng(STC_PATH . '/titrePage-bg.png'); - $dest = imagecreate(1, 64); - for ($i=0; $i<256; $i++) { - imagecolorallocate($dest, $i, $i, $i); - } - imagecopy($dest, $img, 0, 0, 0, 0, 1, 64); - list($r1,$g1,$b1) = stc_hex2rgb($main['color'][4]); - for ($i = 0; $i < 256; $i++) { - imagecolorset($dest, $i, min(floor($i * $r1 / 255), 255), - min(floor($i * $g1 / 255), 255), - min(floor($i * $b1 / 255), 255)); - } - // to be tested imagecopymerge($dest,$img,0,0,0,0,1,64,33); - imagepng( $dest, $themedir . '/stc.png', 9 ); + imagecopymerge ( $hdr, $img, 0, 0, 0, 0, 1, 38, 60 ); imagedestroy ($img); - imagedestroy ($dest); + if ($main['colorize']) imagefilter($hdr, IMG_FILTER_COLORIZE, $r, $g, $b); + if ($main['brightness']) imagefilter($hdr, IMG_FILTER_BRIGHTNESS, $delta); + if ($main['contrast']) imagefilter($hdr, IMG_FILTER_CONTRAST, 20); + imagepng( $hdr, $themedir . '/stc.png', 9 ); + imagedestroy ($hdr); } else @copy( STC_PATH . '/titrePage-bg.png', $themedir . '/stc.png'); - if ($r == false) { + if ($rfs == false) { array_push($errors, l10n('Theme files creation failure: theme should be deleted.')); - @unlink( $themedir . '/stc.png' ); - @unlink( $themedir . '/themeconf.inc.php' ); - @unlink( $themedir . '/mail-css.tpl' ); - @unlink( $themedir . '/theme.css' ); - @rmdir( $themedir ); + if ($cleaning) { + @unlink( $themedir . '/header.jpg' ); + @unlink( $themedir . '/stc.png' ); + @unlink( $themedir . '/themeconf.inc.php' ); + @unlink( $themedir . '/mail-css.tpl' ); + @unlink( $themedir . '/theme.css' ); + @rmdir( $themedir ); + } } - else { + elseif (!$main['simulate']) { array_push($infos, '['.$main['newtpl'] . '/' . $main['newtheme'].'] : ' .l10n('Congratulation! You have got(/ten) a new available theme.')); + @copy( $themedir . '/header.jpg', PHPWG_ROOT_PATH . 'plugins/SwiftThemeCreator/simul/header.jpg'); + @copy( $themedir . '/stc.png', PHPWG_ROOT_PATH . 'plugins/SwiftThemeCreator/simul/stc.png'); + @copy( $themedir . '/themeconf.inc.php', PHPWG_ROOT_PATH . 'plugins/SwiftThemeCreator/simul/themeconf.inc.php'); + @copy( $themedir . '/mail-css.tpl', PHPWG_ROOT_PATH . 'plugins/SwiftThemeCreator/simul/mail-css.tpl'); + @copy( $themedir . '/theme.css', PHPWG_ROOT_PATH . 'plugins/SwiftThemeCreator/simul/theme.css'); } } } - // TODO ******** HEADER ********* - // Interesting Graphic Charter - // http://accessites.org/site/2006/08/visual-vs-structural/ + // TODO ******** theSwiftHeader itself ********* + $swift_theme_creator->save_theme_config(); } @@ -286,11 +471,11 @@ if (isset($_POST['submit']) and (!is_adviser())) // +-----------------------------------------------------------------------+ if (isset($_POST['reset']) and (!is_adviser())) { $main = array(); + init_main($main); $swift_theme_creator->theme_config = $main; $swift_theme_creator->save_theme_config(); redirect( get_admin_plugin_menu_link(dirname(__FILE__).'/theme_creator.php')); } -// To be implemented delete $main save and redirect // Don't forget to re-read because some statements are superfluous @@ -311,43 +496,17 @@ body .colorwell-selected { border: 3px double #F36; font-weight: bold; } .radio { margin: 0 10px 0 50px; } ' ); - -/* Templates */ +$template->assign('radio_options', + array( + 'true' => l10n('Yes'), + 'false' => l10n('No'))); $template->assign('template_options', $available_templates); -if (!isset($main['template_options'])) $main['template_options'] = 0; - -/* New theme */ -if (isset($_POST['new_theme'])) $main['new_theme'] = $_POST['new_theme']; - -/* Colors */ -if (isset($_POST['color1'])) $main['color1'] = $_POST['color1']; -if (isset($_POST['color2'])) $main['color2'] = $_POST['color2']; -if (isset($_POST['color3'])) $main['color3'] = $_POST['color3']; -if (isset($_POST['color4'])) $main['color4'] = $_POST['color4']; -if (isset($_POST['color5'])) $main['color5'] = $_POST['color5']; -if (!isset($main['color1'])) $main['color1'] = '#111111'; -if (!isset($main['color2'])) $main['color2'] = '#EEEEEE'; -if (!isset($main['color3'])) $main['color3'] = '#FF7700'; -if (!isset($main['color4'])) $main['color4'] = '#FF3333'; -if (!isset($main['color5'])) $main['color5'] = '#FF3363'; - -/* header */ -if (isset($_POST['background'])) $main['background'] = $_POST['background']; -if (!isset($main['background'])) $main['background'] = 'off'; $template->assign('background_options', array( 'off' => l10n('No'), 'random' => l10n('24H Random'), 'fixed' => l10n('Fixed URL'), )); - -$query = ' -SELECT id,name,uppercats,global_rank - FROM ' . CATEGORIES_TABLE . ';'; -display_select_cat_wrapper($query,array(),'src_category'); -if (isset($_POST['src_category'])) $main['src_category'] = - $_POST['src_category']; - $main['picture_url'] = PHPWG_ROOT_PATH . 'plugins/SwiftThemeCreator/sample.jpg'; if (isset($swift_theme_creator->picture_url)) $main['picture_url'] = $swift_theme_creator->picture_url; @@ -355,14 +514,11 @@ if (isset($_POST['picture_url'])) $main['picture_url'] = $_POST['picture_url']; if (isset($_POST['picture_width'])) $main['picture_width'] = $_POST['picture_width']; -if (!isset($main['picture_width'])) $main['picture_width'] = 2048; if (isset($_POST['picture_height'])) $main['picture_height'] = $_POST['picture_height']; -if (!isset($main['picture_height'])) $main['picture_height'] = 100; if (isset($_POST['background_mode'])) $main['background_mode'] = $_POST['background_mode']; -if (!isset($main['background_mode'])) $main['background_mode'] = 'as'; $template->assign('background_mode_options', array( 'as' => l10n('As is'), diff --git a/plugins/SwiftThemeCreator/theme_creator.tpl b/plugins/SwiftThemeCreator/theme_creator.tpl index bc8604e85..14bbd26ec 100644 --- a/plugins/SwiftThemeCreator/theme_creator.tpl +++ b/plugins/SwiftThemeCreator/theme_creator.tpl @@ -14,12 +14,12 @@ You can update later the result as you need.'|@translate}
{'Template'|@translate} - {html_options name=template options=$template_options selected=$main.template_options} + {html_options name=template options=$template_options selected=$main.template_sel}
{'New theme to be created'|@translate} - +
@@ -77,55 +77,58 @@ You can update later the result as you need.'|@translate} {'Header background selection '|@translate} - + + + + + - - - - - + + + + + -
- {'Use of a picture background'|@translate} {* No / 24H Random public picture / Fixed RRL *} + + {* No / 24H Random public picture / Fixed URL *} +
+ - + {html_options style="margin: 0 0 0 10px;" name=src_category options=$src_category selected=$main.src_category}
- {'Source category'|@translate} - - - - {html_options style="margin: 0 0 0 10px;" name=src_category options=$src_category select=$main.src_category} -
- {'Picture relative local path'|@translate} - - - + + +
+   + + + + +
{'Width limit in pixels'|@translate} @@ -136,7 +139,7 @@ You can update later the result as you need.'|@translate}
+ {'Display mode'|@translate} {* As is / truncated / resized *} {html_radios name='background_mode' class="radio" options=$background_mode_options selected=$main.background_mode} @@ -146,7 +149,68 @@ You can update later the result as you need.'|@translate}

-   - +   +   +

- \ No newline at end of file + +
+ {'Just a yoga preview... '|@translate} +
+ {* Preview header *}
+ {if ($main.background=='fixed')} + +

{'"Fixed header" preview'|@translate}

+ {/if} + {if ($main.background=='random')} + +

{'"Random header" preview'|@translate}

+ {/if} + {if ($main.background=='off')} +

{'"No header" preview'|@translate}

+ {/if} +
+ {* Preview menubar *}
+
+
{'Preview'|@translate}
+
+ +

{'Preview'|@translate}

+
+
+
+ {* Preview content *}
+

{'home'|@translate}

+ +
+
+ +{'...to get an idea of the expected result. Preview is based on yoga-like template only.'|@translate} +
\ No newline at end of file diff --git a/plugins/SwiftThemeCreator/themeconf.inc.tpl b/plugins/SwiftThemeCreator/themeconf.inc.tpl index 4b1d65723..138516ef7 100644 --- a/plugins/SwiftThemeCreator/themeconf.inc.tpl +++ b/plugins/SwiftThemeCreator/themeconf.inc.tpl @@ -14,6 +14,12 @@ $themeconf = array( 'admin_icon_dir' => 'template/{$main.newtpl}/icon/admin', 'mime_icon_dir' => 'template/{$main.newtpl}/icon/mimetypes/', 'local_head' => '', + /* Swift Theme Creator parameters */ + 'stc_category' => {$main.src_category}, + 'stc_background' => '{$main.background}', + 'stc_background_mode' => '{$main.background_mode}', + 'stc_width' => '{$main.picture_width}', + 'stc_height' => '{$main.picture_height}', ); if ( !isset($lang['Theme: {$main.newtheme}']) ) diff --git a/plugins/SwiftThemeCreator/titrePage-bg.png b/plugins/SwiftThemeCreator/titrePage-bg.png index ad7a740a391ab7787d73a280425a068e7114cb41..65a71802473088bf7ca1aa1a52b42cb609aa77e7 100644 GIT binary patch delta 142 zcmX@fxS4T+1Sbar5GY(Q3% zMY8&BVr!?A9SOXZ9C0d4Y1@ha*S9Y{@`s@>L1E*ZkDT9t1}RsCM3gw^=N2U9RWdMC u%qiCK;ydTB9eCk{#~JVSr%vc!Wnr*QWb4=mdKI;Vst0FX~Q7XSbN diff --git a/template/yoga/header.tpl b/template/yoga/header.tpl index a7ebf22b6..dc1b6a799 100644 --- a/template/yoga/header.tpl +++ b/template/yoga/header.tpl @@ -67,12 +67,7 @@ {/if}
{$PAGE_BANNER}
-{if isset($pwgmenu)} - -{/if} +{if isset($theSwiftHeader)}{$theSwiftHeader}{/if} {if not empty($header_notes)}
{foreach from=$header_notes item=elt}