コード例 #1
0
ファイル: _config.php プロジェクト: nikrou/dotclear
echo '</div>';
echo '<h4 class="clear border-top pretty-title">' . __('Titles') . '</h4>';
echo '<div class="two-cols">';
echo '<div class="col">';
echo '<h5>' . __('Blog title') . '</h5>' . '<p class="field"><label for="blog_title_w">' . __('In bold:') . '</label> ' . form::checkbox('blog_title_w', 1, $ductile_user['blog_title_w']) . '</p>' . '<p class="field"><label for="blog_title_s">' . __('Font size (in em by default):') . '</label> ' . form::field('blog_title_s', 7, 7, $ductile_user['blog_title_s']) . '</p>' . '<p class="field picker"><label for="blog_title_c">' . __('Color:') . '</label> ' . form::field('blog_title_c', 7, 7, $ductile_user['blog_title_c'], 'colorpicker') . dcThemeConfig::contrastRatio($ductile_user['blog_title_c'], '#ffffff', !empty($ductile_user['blog_title_s']) ? $ductile_user['blog_title_s'] : '2em', $ductile_user['blog_title_w']) . '</p>';
echo '</div>';
echo '<div class="col">';
echo '<h5>' . __('Post title') . '</h5>' . '<p class="field"><label for="post_title_w">' . __('In bold:') . '</label> ' . form::checkbox('post_title_w', 1, $ductile_user['post_title_w']) . '</p>' . '<p class="field"><label for="post_title_s">' . __('Font size (in em by default):') . '</label> ' . form::field('post_title_s', 7, 7, $ductile_user['post_title_s']) . '</p>' . '<p class="field picker"><label for="post_title_c">' . __('Color:') . '</label> ' . form::field('post_title_c', 7, 7, $ductile_user['post_title_c'], 'colorpicker') . dcThemeConfig::contrastRatio($ductile_user['post_title_c'], '#ffffff', !empty($ductile_user['post_title_s']) ? $ductile_user['post_title_s'] : '2.5em', $ductile_user['post_title_w']) . '</p>';
echo '</div>';
echo '</div>';
echo '<h5>' . __('Titles without link') . '</h5>' . '<p class="field picker"><label for="post_simple_title_c">' . __('Color:') . '</label> ' . form::field('post_simple_title_c', 7, 7, $ductile_user['post_simple_title_c'], 'colorpicker') . dcThemeConfig::contrastRatio($ductile_user['post_simple_title_c'], '#ffffff', '1.1em', false) . '</p>';
echo '<h4 class="border-top pretty-title">' . __('Inside posts links') . '</h4>' . '<p class="field"><label for="post_link_w">' . __('In bold:') . '</label> ' . form::checkbox('post_link_w', 1, $ductile_user['post_link_w']) . '</p>' . '<p class="field picker"><label for="post_link_v_c">' . __('Normal and visited links color:') . '</label> ' . form::field('post_link_v_c', 7, 7, $ductile_user['post_link_v_c'], 'colorpicker') . dcThemeConfig::contrastRatio($ductile_user['post_link_v_c'], '#ffffff', '1em', $ductile_user['post_link_w']) . '</p>' . '<p class="field picker"><label for="post_link_f_c">' . __('Active, hover and focus links color:') . '</label> ' . form::field('post_link_f_c', 7, 7, $ductile_user['post_link_f_c'], 'colorpicker') . dcThemeConfig::contrastRatio($ductile_user['post_link_f_c'], '#ebebee', '1em', $ductile_user['post_link_w']) . '</p>';
echo '<h3 class="border-top">' . __('Mobile specific settings') . '</h3>';
echo '<div class="two-cols">';
echo '<div class="col">';
echo '<h4 class="pretty-title">' . __('Blog title') . '</h4>' . '<p class="field"><label for="blog_title_w_m">' . __('In bold:') . '</label> ' . form::checkbox('blog_title_w_m', 1, $ductile_user['blog_title_w_m']) . '</p>' . '<p class="field"><label for="blog_title_s_m">' . __('Font size (in em by default):') . '</label> ' . form::field('blog_title_s_m', 7, 7, $ductile_user['blog_title_s_m']) . '</p>' . '<p class="field picker"><label for="blog_title_c_m">' . __('Color:') . '</label> ' . form::field('blog_title_c_m', 7, 7, $ductile_user['blog_title_c_m'], 'colorpicker') . dcThemeConfig::contrastRatio($ductile_user['blog_title_c_m'], '#d7d7dc', !empty($ductile_user['blog_title_s_m']) ? $ductile_user['blog_title_s_m'] : '1.8em', $ductile_user['blog_title_w_m']) . '</p>';
echo '</div>';
echo '<div class="col">';
echo '<h4 class="pretty-title">' . __('Post title') . '</h4>' . '<p class="field"><label for="post_title_w_m">' . __('In bold:') . '</label> ' . form::checkbox('post_title_w_m', 1, $ductile_user['post_title_w_m']) . '</p>' . '<p class="field"><label for="post_title_s_m">' . __('Font size (in em by default):') . '</label> ' . form::field('post_title_s_m', 7, 7, $ductile_user['post_title_s_m']) . '</p>' . '<p class="field picker"><label for="post_title_c_m">' . __('Color:') . '</label> ' . form::field('post_title_c_m', 7, 7, $ductile_user['post_title_c_m'], 'colorpicker') . dcThemeConfig::contrastRatio($ductile_user['post_title_c_m'], '#ffffff', !empty($ductile_user['post_title_s_m']) ? $ductile_user['post_title_s_m'] : '1.5em', $ductile_user['post_title_w_m']) . '</p>';
echo '</div>';
echo '</div>';
echo '<p><input type="hidden" name="conf_tab" value="css" /></p>';
echo '<p class="clear border-top"><input type="submit" value="' . __('Save') . '" />' . $core->formNonce() . '</p>';
echo '</form>';
echo '</div>';
// Close tab
dcPage::helpBlock('ductile');
// Legacy mode
if (!$standalone_config) {
    echo '<form style="display:none">';
}
コード例 #2
0
ファイル: _public.php プロジェクト: nikrou/dotclear
 public static function ductileStyleHelper()
 {
     $s = $GLOBALS['core']->blog->settings->themes->get($GLOBALS['core']->blog->settings->system->theme . '_style');
     if ($s === null) {
         return;
     }
     $s = @unserialize($s);
     if (!is_array($s)) {
         return;
     }
     $css = array();
     # Properties
     # Blog description
     $selectors = '#blogdesc';
     if (isset($s['subtitle_hidden'])) {
         dcThemeConfig::prop($css, $selectors, 'display', $s['subtitle_hidden'] ? 'none' : null);
     }
     # Main font
     $selectors = 'body, .supranav li a span, #comments.me, a.comment-number';
     if (isset($s['body_font'])) {
         dcThemeConfig::prop($css, $selectors, 'font-family', self::fontDef($s['body_font']));
     }
     # Secondary font
     $selectors = '#blogdesc, .supranav, #content-info, #subcategories, #comments-feed, #sidebar h2, #sidebar h3, #footer';
     if (isset($s['alternate_font'])) {
         dcThemeConfig::prop($css, $selectors, 'font-family', self::fontDef($s['alternate_font']));
     }
     # Inside posts links font weight
     $selectors = '.post-excerpt a, .post-content a';
     if (isset($s['post_link_w'])) {
         dcThemeConfig::prop($css, $selectors, 'font-weight', $s['post_link_w'] ? 'bold' : 'normal');
     }
     # Inside posts links colors (normal, visited)
     $selectors = '.post-excerpt a:link, .post-excerpt a:visited, .post-content a:link, .post-content a:visited';
     if (isset($s['post_link_v_c'])) {
         dcThemeConfig::prop($css, $selectors, 'color', $s['post_link_v_c']);
     }
     # Inside posts links colors (hover, active, focus)
     $selectors = '.post-excerpt a:hover, .post-excerpt a:active, .post-excerpt a:focus, .post-content a:hover, .post-content a:active, .post-content a:focus';
     if (isset($s['post_link_f_c'])) {
         dcThemeConfig::prop($css, $selectors, 'color', $s['post_link_f_c']);
     }
     # Style directives
     $res = '';
     foreach ($css as $selector => $values) {
         $res .= $selector . " {\n";
         foreach ($values as $k => $v) {
             $res .= $k . ':' . $v . ";\n";
         }
         $res .= "}\n";
     }
     # Large screens
     $css_large = array();
     # Blog title font weight
     $selectors = 'h1, h1 a:link, h1 a:visited, h1 a:hover, h1 a:visited, h1 a:focus';
     if (isset($s['blog_title_w'])) {
         dcThemeConfig::prop($css_large, $selectors, 'font-weight', $s['blog_title_w'] ? 'bold' : 'normal');
     }
     # Blog title font size
     $selectors = 'h1';
     if (isset($s['blog_title_s'])) {
         dcThemeConfig::prop($css_large, $selectors, 'font-size', $s['blog_title_s']);
     }
     # Blog title color
     $selectors = 'h1 a:link, h1 a:visited, h1 a:hover, h1 a:visited, h1 a:focus';
     if (isset($s['blog_title_c'])) {
         dcThemeConfig::prop($css_large, $selectors, 'color', $s['blog_title_c']);
     }
     # Post title font weight
     $selectors = 'h2.post-title, h2.post-title a:link, h2.post-title a:visited, h2.post-title a:hover, h2.post-title a:visited, h2.post-title a:focus';
     if (isset($s['post_title_w'])) {
         dcThemeConfig::prop($css_large, $selectors, 'font-weight', $s['post_title_w'] ? 'bold' : 'normal');
     }
     # Post title font size
     $selectors = 'h2.post-title';
     if (isset($s['post_title_s'])) {
         dcThemeConfig::prop($css_large, $selectors, 'font-size', $s['post_title_s']);
     }
     # Post title color
     $selectors = 'h2.post-title a:link, h2.post-title a:visited, h2.post-title a:hover, h2.post-title a:visited, h2.post-title a:focus';
     if (isset($s['post_title_c'])) {
         dcThemeConfig::prop($css_large, $selectors, 'color', $s['post_title_c']);
     }
     # Simple title color (title without link)
     $selectors = '#content-info h2, .post-title, .post h3, .post h4, .post h5, .post h6, .arch-block h3';
     if (isset($s['post_simple_title_c'])) {
         dcThemeConfig::prop($css_large, $selectors, 'color', $s['post_simple_title_c']);
     }
     # Style directives for large screens
     if (count($css_large)) {
         $res .= '@media only screen and (min-width: 481px) {' . "\n";
         foreach ($css_large as $selector => $values) {
             $res .= $selector . " {\n";
             foreach ($values as $k => $v) {
                 $res .= $k . ':' . $v . ";\n";
             }
             $res .= "}\n";
         }
         $res .= "}\n";
     }
     # Small screens
     $css_small = array();
     # Blog title font weight
     $selectors = 'h1, h1 a:link, h1 a:visited, h1 a:hover, h1 a:visited, h1 a:focus';
     if (isset($s['blog_title_w_m'])) {
         dcThemeConfig::prop($css_small, $selectors, 'font-weight', $s['blog_title_w_m'] ? 'bold' : 'normal');
     }
     # Blog title font size
     $selectors = 'h1';
     if (isset($s['blog_title_s_m'])) {
         dcThemeConfig::prop($css_small, $selectors, 'font-size', $s['blog_title_s_m']);
     }
     # Blog title color
     $selectors = 'h1 a:link, h1 a:visited, h1 a:hover, h1 a:visited, h1 a:focus';
     if (isset($s['blog_title_c_m'])) {
         dcThemeConfig::prop($css_small, $selectors, 'color', $s['blog_title_c_m']);
     }
     # Post title font weight
     $selectors = 'h2.post-title, h2.post-title a:link, h2.post-title a:visited, h2.post-title a:hover, h2.post-title a:visited, h2.post-title a:focus';
     if (isset($s['post_title_w_m'])) {
         dcThemeConfig::prop($css_small, $selectors, 'font-weight', $s['post_title_w_m'] ? 'bold' : 'normal');
     }
     # Post title font size
     $selectors = 'h2.post-title';
     if (isset($s['post_title_s_m'])) {
         dcThemeConfig::prop($css_small, $selectors, 'font-size', $s['post_title_s_m']);
     }
     # Post title color
     $selectors = 'h2.post-title a:link, h2.post-title a:visited, h2.post-title a:hover, h2.post-title a:visited, h2.post-title a:focus';
     if (isset($s['post_title_c_m'])) {
         dcThemeConfig::prop($css_small, $selectors, 'color', $s['post_title_c_m']);
     }
     # Style directives for small screens
     if (count($css_small)) {
         $res .= '@media only screen and (max-width: 480px) {' . "\n";
         foreach ($css_small as $selector => $values) {
             $res .= $selector . " {\n";
             foreach ($values as $k => $v) {
                 $res .= $k . ':' . $v . ";\n";
             }
             $res .= "}\n";
         }
         $res .= "}\n";
     }
     return $res;
 }
コード例 #3
0
ファイル: index.php プロジェクト: nikrou/dotclear
        if ($can_write_images) {
            $uploaded = null;
            if ($blowup_user['uploaded'] && is_file(blowupConfig::imagesPath() . '/' . $blowup_user['uploaded'])) {
                $uploaded = blowupConfig::imagesPath() . '/' . $blowup_user['uploaded'];
            }
            if (!empty($_FILES['upfile']) && !empty($_FILES['upfile']['name'])) {
                files::uploadStatus($_FILES['upfile']);
                $uploaded = blowupConfig::uploadImage($_FILES['upfile']);
                $blowup_user['uploaded'] = basename($uploaded);
            }
            $blowup_user['top_image'] = in_array($_POST['top_image'], $top_images) ? $_POST['top_image'] : 'default';
            $blowup_user['body_bg_c'] = dcThemeConfig::adjustColor($_POST['body_bg_c']);
            $blowup_user['body_bg_g'] = in_array($_POST['body_bg_g'], $gradient_types) ? $_POST['body_bg_g'] : '';
            $blowup_user['post_comment_bg_c'] = dcThemeConfig::adjustColor($_POST['post_comment_bg_c']);
            $blowup_user['post_commentmy_bg_c'] = dcThemeConfig::adjustColor($_POST['post_commentmy_bg_c']);
            $blowup_user['prelude_c'] = dcThemeConfig::adjustColor($_POST['prelude_c']);
            blowupConfig::createImages($blowup_user, $uploaded);
        }
        if ($can_write_css) {
            blowupConfig::createCss($blowup_user);
        }
        $core->blog->settings->addNamespace('themes');
        $core->blog->settings->themes->put('blowup_style', serialize($blowup_user));
        $core->blog->triggerBlog();
        dcPage::addSuccessNotice(__('Theme configuration has been successfully updated.'));
        http::redirect($p_url);
    } catch (Exception $e) {
        $core->error->add($e->getMessage());
    }
}
?>
コード例 #4
0
 public static function createImages(&$config, $uploaded)
 {
     $body_color = $config['body_bg_c'];
     $prelude_color = $config['prelude_c'];
     $gradient = $config['body_bg_g'];
     $comment_color = $config['post_comment_bg_c'];
     $comment_color_my = $config['post_commentmy_bg_c'];
     $top_image = $config['top_image'];
     $config['top_height'] = null;
     if ($top_image != 'custom' && !isset(self::$top_images[$top_image])) {
         $top_image = 'default';
     }
     if ($uploaded && !is_file($uploaded)) {
         $uploaded = null;
     }
     if (!self::canWriteImages(true)) {
         throw new Exception(__('Unable to create images.'));
     }
     $body_fill = array('light' => dirname(__FILE__) . '/../alpha-img/gradient-l.png', 'medium' => dirname(__FILE__) . '/../alpha-img/gradient-m.png', 'dark' => dirname(__FILE__) . '/../alpha-img/gradient-d.png');
     $body_g = isset($body_fill[$gradient]) ? $body_fill[$gradient] : false;
     if ($top_image == 'custom' && $uploaded) {
         $page_t = $uploaded;
     } else {
         $page_t = dirname(__FILE__) . '/../alpha-img/page-t/' . $top_image . '.png';
     }
     $body_bg = dirname(__FILE__) . '/../alpha-img/body-bg.png';
     $page_t_mask = dirname(__FILE__) . '/../alpha-img/page-t/image-mask.png';
     $page_b = dirname(__FILE__) . '/../alpha-img/page-b.png';
     $comment_t = dirname(__FILE__) . '/../alpha-img/comment-t.png';
     $comment_b = dirname(__FILE__) . '/../alpha-img/comment-b.png';
     $default_bg = '#e0e0e0';
     $default_prelude = '#ededed';
     self::dropImage(basename($body_bg));
     self::dropImage('page-t.png');
     self::dropImage(basename($page_b));
     self::dropImage(basename($comment_t));
     self::dropImage(basename($comment_b));
     $body_color = dcThemeConfig::adjustColor($body_color);
     $prelude_color = dcThemeConfig::adjustColor($prelude_color);
     $comment_color = dcThemeConfig::adjustColor($comment_color);
     if ($top_image || $body_color || $gradient != 'light' || $prelude_color || $uploaded) {
         if (!$body_color) {
             $body_color = $default_bg;
         }
         $body_color = sscanf($body_color, '#%2X%2X%2X');
         # Create body gradient with color
         $d_body_bg = imagecreatetruecolor(50, 180);
         $fill = imagecolorallocate($d_body_bg, $body_color[0], $body_color[1], $body_color[2]);
         imagefill($d_body_bg, 0, 0, $fill);
         # User choosed a gradient
         if ($body_g) {
             $s_body_bg = imagecreatefrompng($body_g);
             imagealphablending($s_body_bg, true);
             imagecopy($d_body_bg, $s_body_bg, 0, 0, 0, 0, 50, 180);
             imagedestroy($s_body_bg);
         }
         if (!$prelude_color) {
             $prelude_color = $default_prelude;
         }
         $prelude_color = sscanf($prelude_color, '#%2X%2X%2X');
         $s_prelude = imagecreatetruecolor(50, 30);
         $fill = imagecolorallocate($s_prelude, $prelude_color[0], $prelude_color[1], $prelude_color[2]);
         imagefill($s_prelude, 0, 0, $fill);
         imagecopy($d_body_bg, $s_prelude, 0, 0, 0, 0, 50, 30);
         imagepng($d_body_bg, self::imagesPath() . '/' . basename($body_bg));
     }
     if ($top_image || $body_color || $gradient != 'light') {
         # Create top image from uploaded image
         $size = getimagesize($page_t);
         $size = $size[1];
         $type = files::getMimeType($page_t);
         $d_page_t = imagecreatetruecolor(800, $size);
         if ($type == 'image/png') {
             $s_page_t = @imagecreatefrompng($page_t);
         } else {
             $s_page_t = @imagecreatefromjpeg($page_t);
         }
         if (!$s_page_t) {
             throw new exception(__('Unable to open image.'));
         }
         $fill = imagecolorallocate($d_page_t, $body_color[0], $body_color[1], $body_color[2]);
         imagefill($d_page_t, 0, 0, $fill);
         if ($type == 'image/png') {
             # PNG, we only add body gradient and image
             imagealphablending($s_page_t, true);
             imagecopyresized($d_page_t, $d_body_bg, 0, 0, 0, 50, 800, 130, 50, 130);
             imagecopy($d_page_t, $s_page_t, 0, 0, 0, 0, 800, $size);
         } else {
             # JPEG, we add image and a frame with rounded corners
             imagecopy($d_page_t, $s_page_t, 0, 0, 0, 0, 800, $size);
             imagecopy($d_page_t, $d_body_bg, 0, 0, 0, 50, 8, 4);
             imagecopy($d_page_t, $d_body_bg, 0, 4, 0, 54, 4, 4);
             imagecopy($d_page_t, $d_body_bg, 792, 0, 0, 50, 8, 4);
             imagecopy($d_page_t, $d_body_bg, 796, 4, 0, 54, 4, 4);
             $mask = imagecreatefrompng($page_t_mask);
             imagealphablending($mask, true);
             imagecopy($d_page_t, $mask, 0, 0, 0, 0, 800, 11);
             imagedestroy($mask);
             $fill = imagecolorallocate($d_page_t, 255, 255, 255);
             imagefilledrectangle($d_page_t, 0, 11, 3, $size - 1, $fill);
             imagefilledrectangle($d_page_t, 796, 11, 799, $size - 1, $fill);
             imagefilledrectangle($d_page_t, 0, $size - 9, 799, $size - 1, $fill);
         }
         $config['top_height'] = $size . 'px';
         imagepng($d_page_t, self::imagesPath() . '/page-t.png');
         imagedestroy($d_body_bg);
         imagedestroy($d_page_t);
         imagedestroy($s_page_t);
         # Create bottom image with color
         $d_page_b = imagecreatetruecolor(800, 8);
         $fill = imagecolorallocate($d_page_b, $body_color[0], $body_color[1], $body_color[2]);
         imagefill($d_page_b, 0, 0, $fill);
         $s_page_b = imagecreatefrompng($page_b);
         imagealphablending($s_page_b, true);
         imagecopy($d_page_b, $s_page_b, 0, 0, 0, 0, 800, 160);
         imagepng($d_page_b, self::imagesPath() . '/' . basename($page_b));
         imagedestroy($d_page_b);
         imagedestroy($s_page_b);
     }
     if ($comment_color) {
         self::commentImages($comment_color, $comment_t, $comment_b, basename($comment_t), basename($comment_b));
     }
     if ($comment_color_my) {
         self::commentImages($comment_color_my, $comment_t, $comment_b, 'commentmy-t.png', 'commentmy-b.png');
     }
 }