Changeset 1436:c6aa788720c9
- Timestamp:
- 08/18/13 00:20:56 (11 years ago)
- Branch:
- Ticket#736
- Children:
- 1437:71b7fa9efe46, 1438:d537e0a2100c
- Location:
- plugins/blowupConfig
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
plugins/blowupConfig/_public.php
r1179 r1436 23 23 public static function publicHeadContent($core) 24 24 { 25 echo '<style type="text/css">'."\n".self::blowUpStyleHelper()."\n</style>\n"; 26 } 27 28 public static function blowUpStyleHelper() 29 { 30 $s = $GLOBALS['core']->blog->settings->themes->blowup_style; 31 32 if ($s === null) { 33 return; 34 } 35 36 $s = @unserialize($s); 37 if (!is_array($s)) { 38 return; 39 } 40 41 $css = array(); 42 43 /* Sidebar position 44 ---------------------------------------------- */ 45 if ($s['sidebar_position'] == 'left') { 46 $css['#wrapper']['background-position'] = '-300px 0'; 47 $css['#main']['float'] = 'right'; 48 $css['#sidebar']['float'] = 'left'; 49 } 50 51 /* Properties 52 ---------------------------------------------- */ 53 self::prop($css,'body','background-color',$s['body_bg_c']); 54 55 self::prop($css,'body','color',$s['body_txt_c']); 56 self::prop($css,'.post-tags li a:link, .post-tags li a:visited, .post-info-co a:link, .post-info-co a:visited','color',$s['body_txt_c']); 57 self::prop($css,'#page','font-size',$s['body_txt_s']); 58 self::prop($css,'body','font-family',blowupConfig::fontDef($s['body_txt_f'])); 59 60 self::prop($css,'.post-content, .post-excerpt, #comments dd, #pings dd, dd.comment-preview','line-height',$s['body_line_height']); 61 62 if (!$s['blog_title_hide']) 63 { 64 self::prop($css,'#top h1 a','color',$s['blog_title_c']); 65 self::prop($css,'#top h1','font-size',$s['blog_title_s']); 66 self::prop($css,'#top h1','font-family',blowupConfig::fontDef($s['blog_title_f'])); 67 68 if ($s['blog_title_a'] == 'right' || $s['blog_title_a'] == 'left') { 69 $css['#top h1'][$s['blog_title_a']] = '0px'; 70 $css['#top h1']['width'] = 'auto'; 71 } 72 73 if ($s['blog_title_p']) 74 { 75 $_p = explode(':',$s['blog_title_p']); 76 $css['#top h1']['top'] = $_p[1].'px'; 77 if ($s['blog_title_a'] != 'center') { 78 $_a = $s['blog_title_a'] == 'right' ? 'right' : 'left'; 79 $css['#top h1'][$_a] = $_p[0].'px'; 80 } 81 } 82 } 83 else 84 { 85 self::prop($css,'#top h1 span','text-indent','-5000px'); 86 self::prop($css,'#top h1','top','0px'); 87 $css['#top h1 a'] = array( 88 'display' => 'block', 89 'height' => $s['top_height'] ? ($s['top_height']-10).'px' : '120px', 90 'width' => '800px' 91 ); 92 } 93 self::prop($css,'#top','height',$s['top_height']); 94 95 self::prop($css,'.day-date','color',$s['date_title_c']); 96 self::prop($css,'.day-date','font-family',blowupConfig::fontDef($s['date_title_f'])); 97 self::prop($css,'.day-date','font-size',$s['date_title_s']); 98 99 self::prop($css,'a','color',$s['body_link_c']); 100 self::prop($css,'a:visited','color',$s['body_link_v_c']); 101 self::prop($css,'a:hover, a:focus, a:active','color',$s['body_link_f_c']); 102 103 self::prop($css,'#comment-form input, #comment-form textarea','color',$s['body_link_c']); 104 self::prop($css,'#comment-form input.preview','color',$s['body_link_c']); 105 self::prop($css,'#comment-form input.preview:hover','background',$s['body_link_f_c']); 106 self::prop($css,'#comment-form input.preview:hover','border-color',$s['body_link_f_c']); 107 self::prop($css,'#comment-form input.submit','color',$s['body_link_c']); 108 self::prop($css,'#comment-form input.submit:hover','background',$s['body_link_f_c']); 109 self::prop($css,'#comment-form input.submit:hover','border-color',$s['body_link_f_c']); 110 111 self::prop($css,'#sidebar','font-family',blowupConfig::fontDef($s['sidebar_text_f'])); 112 self::prop($css,'#sidebar','font-size',$s['sidebar_text_s']); 113 self::prop($css,'#sidebar','color',$s['sidebar_text_c']); 114 115 self::prop($css,'#sidebar h2','font-family',blowupConfig::fontDef($s['sidebar_title_f'])); 116 self::prop($css,'#sidebar h2','font-size',$s['sidebar_title_s']); 117 self::prop($css,'#sidebar h2','color',$s['sidebar_title_c']); 118 119 self::prop($css,'#sidebar h3','font-family',blowupConfig::fontDef($s['sidebar_title2_f'])); 120 self::prop($css,'#sidebar h3','font-size',$s['sidebar_title2_s']); 121 self::prop($css,'#sidebar h3','color',$s['sidebar_title2_c']); 122 123 self::prop($css,'#sidebar ul','border-top-color',$s['sidebar_line_c']); 124 self::prop($css,'#sidebar li','border-bottom-color',$s['sidebar_line_c']); 125 self::prop($css,'#topnav ul','border-bottom-color',$s['sidebar_line_c']); 126 127 self::prop($css,'#sidebar li a','color',$s['sidebar_link_c']); 128 self::prop($css,'#sidebar li a:visited','color',$s['sidebar_link_v_c']); 129 self::prop($css,'#sidebar li a:hover, #sidebar li a:focus, #sidebar li a:active','color',$s['sidebar_link_f_c']); 130 self::prop($css,'#search input','color',$s['sidebar_link_c']); 131 self::prop($css,'#search .submit','color',$s['sidebar_link_c']); 132 self::prop($css,'#search .submit:hover','background',$s['sidebar_link_f_c']); 133 self::prop($css,'#search .submit:hover','border-color',$s['sidebar_link_f_c']); 134 135 self::prop($css,'.post-title','color',$s['post_title_c']); 136 self::prop($css,'.post-title a, .post-title a:visited','color',$s['post_title_c']); 137 self::prop($css,'.post-title','font-family',blowupConfig::fontDef($s['post_title_f'])); 138 self::prop($css,'.post-title','font-size',$s['post_title_s']); 139 140 self::prop($css,'#comments dd','background-color',$s['post_comment_bg_c']); 141 self::prop($css,'#comments dd','color',$s['post_comment_c']); 142 self::prop($css,'#comments dd.me','background-color',$s['post_commentmy_bg_c']); 143 self::prop($css,'#comments dd.me','color',$s['post_commentmy_c']); 144 145 self::prop($css,'#prelude, #prelude a','color',$s['prelude_c']); 146 147 self::prop($css,'#footer p','background-color',$s['footer_bg_c']); 148 self::prop($css,'#footer p','color',$s['footer_c']); 149 self::prop($css,'#footer p','font-size',$s['footer_s']); 150 self::prop($css,'#footer p','font-family',blowupConfig::fontDef($s['footer_f'])); 151 self::prop($css,'#footer p a','color',$s['footer_l_c']); 152 153 /* Images 154 ------------------------------------------------------ */ 155 self::backgroundImg($css,'body',$s['body_bg_c'],'body-bg.png'); 156 self::backgroundImg($css,'body',$s['body_bg_g'] != 'light','body-bg.png'); 157 self::backgroundImg($css,'body',$s['prelude_c'],'body-bg.png'); 158 self::backgroundImg($css,'#top',$s['body_bg_c'],'page-t.png'); 159 self::backgroundImg($css,'#top',$s['body_bg_g'] != 'light','page-t.png'); 160 self::backgroundImg($css,'#top',$s['uploaded'] || $s['top_image'],'page-t.png'); 161 self::backgroundImg($css,'#footer',$s['body_bg_c'],'page-b.png'); 162 self::backgroundImg($css,'#comments dt',$s['post_comment_bg_c'],'comment-t.png'); 163 self::backgroundImg($css,'#comments dd',$s['post_comment_bg_c'],'comment-b.png'); 164 self::backgroundImg($css,'#comments dt.me',$s['post_commentmy_bg_c'],'commentmy-t.png'); 165 self::backgroundImg($css,'#comments dd.me',$s['post_commentmy_bg_c'],'commentmy-b.png'); 166 167 $res = ''; 168 foreach ($css as $selector => $values) { 169 $res .= $selector." {\n"; 170 foreach ($values as $k => $v) { 171 $res .= $k.':'.$v.";\n"; 172 } 173 $res .= "}\n"; 174 } 175 176 $res .= $s['extra_css']; 177 178 return $res; 179 } 180 181 protected static function prop(&$css,$selector,$prop,$value) 182 { 183 if ($value) { 184 $css[$selector][$prop] = $value; 185 } 186 } 187 188 protected static function backgroundImg(&$css,$selector,$value,$image) 189 { 190 $file = blowupConfig::imagesPath().'/'.$image; 191 if ($value && file_exists($file)){ 192 $css[$selector]['background-image'] = 'url('.blowupConfig::imagesURL().'/'.$image.')'; 25 $url = blowupConfig::publicCssUrlHelper(); 26 if ($url) { 27 echo '<link rel="stylesheet" href="'.$url.'" type="text/css" />'; 193 28 } 194 29 } -
plugins/blowupConfig/index.php
r1358 r1436 15 15 16 16 $can_write_images = blowupConfig::canWriteImages(); 17 $can_write_css = blowupConfig::canWriteCss(); 17 18 18 19 if ($core->error->flag()) { … … 188 189 $blowup_user['prelude_c'] = blowupConfig::adjustColor($_POST['prelude_c']); 189 190 blowupConfig::createImages($blowup_user,$uploaded); 191 } 192 193 if ($can_write_css) 194 { 195 blowupConfig::createCss($blowup_user); 190 196 } 191 197 -
plugins/blowupConfig/lib/class.blowup.config.php
r1179 r1436 141 141 } 142 142 143 public static function cssPath() 144 { 145 global $core; 146 return path::real($core->blog->public_path).'/blowup-css'; 147 } 148 149 public static function cssURL() 150 { 151 global $core; 152 return $core->blog->settings->system->public_url.'/blowup-css'; 153 } 154 155 public static function canWriteCss($create=false) 156 { 157 global $core; 158 159 $public = path::real($core->blog->public_path); 160 $css = self::cssPath(); 161 162 if (!is_dir($public)) { 163 $core->error->add(__('The \'public\' directory does not exist.')); 164 return false; 165 } 166 167 if (!is_dir($css)) { 168 if (!is_writable($public)) { 169 $core->error->add(sprintf(__('The \'%s\' directory cannot be modified.'),'public')); 170 return false; 171 } 172 if ($create) { 173 files::makeDir($css); 174 } 175 return true; 176 } 177 178 if (!is_writable($css)) { 179 $core->error->add(sprintf(__('The \'%s\' directory cannot be modified.'),'public/blowup-css')); 180 return false; 181 } 182 183 return true; 184 } 185 186 public static function createCss($s) 187 { 188 global $core; 189 190 if ($s === null) { 191 return; 192 } 193 194 $css = array(); 195 196 /* Sidebar position 197 ---------------------------------------------- */ 198 if ($s['sidebar_position'] == 'left') { 199 $css['#wrapper']['background-position'] = '-300px 0'; 200 $css['#main']['float'] = 'right'; 201 $css['#sidebar']['float'] = 'left'; 202 } 203 204 /* Properties 205 ---------------------------------------------- */ 206 self::prop($css,'body','background-color',$s['body_bg_c']); 207 208 self::prop($css,'body','color',$s['body_txt_c']); 209 self::prop($css,'.post-tags li a:link, .post-tags li a:visited, .post-info-co a:link, .post-info-co a:visited','color',$s['body_txt_c']); 210 self::prop($css,'#page','font-size',$s['body_txt_s']); 211 self::prop($css,'body','font-family',self::fontDef($s['body_txt_f'])); 212 213 self::prop($css,'.post-content, .post-excerpt, #comments dd, #pings dd, dd.comment-preview','line-height',$s['body_line_height']); 214 215 if (!$s['blog_title_hide']) 216 { 217 self::prop($css,'#top h1 a','color',$s['blog_title_c']); 218 self::prop($css,'#top h1','font-size',$s['blog_title_s']); 219 self::prop($css,'#top h1','font-family',self::fontDef($s['blog_title_f'])); 220 221 if ($s['blog_title_a'] == 'right' || $s['blog_title_a'] == 'left') { 222 $css['#top h1'][$s['blog_title_a']] = '0px'; 223 $css['#top h1']['width'] = 'auto'; 224 } 225 226 if ($s['blog_title_p']) 227 { 228 $_p = explode(':',$s['blog_title_p']); 229 $css['#top h1']['top'] = $_p[1].'px'; 230 if ($s['blog_title_a'] != 'center') { 231 $_a = $s['blog_title_a'] == 'right' ? 'right' : 'left'; 232 $css['#top h1'][$_a] = $_p[0].'px'; 233 } 234 } 235 } 236 else 237 { 238 self::prop($css,'#top h1 span','text-indent','-5000px'); 239 self::prop($css,'#top h1','top','0px'); 240 $css['#top h1 a'] = array( 241 'display' => 'block', 242 'height' => $s['top_height'] ? ($s['top_height']-10).'px' : '120px', 243 'width' => '800px' 244 ); 245 } 246 self::prop($css,'#top','height',$s['top_height']); 247 248 self::prop($css,'.day-date','color',$s['date_title_c']); 249 self::prop($css,'.day-date','font-family',self::fontDef($s['date_title_f'])); 250 self::prop($css,'.day-date','font-size',$s['date_title_s']); 251 252 self::prop($css,'a','color',$s['body_link_c']); 253 self::prop($css,'a:visited','color',$s['body_link_v_c']); 254 self::prop($css,'a:hover, a:focus, a:active','color',$s['body_link_f_c']); 255 256 self::prop($css,'#comment-form input, #comment-form textarea','color',$s['body_link_c']); 257 self::prop($css,'#comment-form input.preview','color',$s['body_link_c']); 258 self::prop($css,'#comment-form input.preview:hover','background',$s['body_link_f_c']); 259 self::prop($css,'#comment-form input.preview:hover','border-color',$s['body_link_f_c']); 260 self::prop($css,'#comment-form input.submit','color',$s['body_link_c']); 261 self::prop($css,'#comment-form input.submit:hover','background',$s['body_link_f_c']); 262 self::prop($css,'#comment-form input.submit:hover','border-color',$s['body_link_f_c']); 263 264 self::prop($css,'#sidebar','font-family',self::fontDef($s['sidebar_text_f'])); 265 self::prop($css,'#sidebar','font-size',$s['sidebar_text_s']); 266 self::prop($css,'#sidebar','color',$s['sidebar_text_c']); 267 268 self::prop($css,'#sidebar h2','font-family',self::fontDef($s['sidebar_title_f'])); 269 self::prop($css,'#sidebar h2','font-size',$s['sidebar_title_s']); 270 self::prop($css,'#sidebar h2','color',$s['sidebar_title_c']); 271 272 self::prop($css,'#sidebar h3','font-family',self::fontDef($s['sidebar_title2_f'])); 273 self::prop($css,'#sidebar h3','font-size',$s['sidebar_title2_s']); 274 self::prop($css,'#sidebar h3','color',$s['sidebar_title2_c']); 275 276 self::prop($css,'#sidebar ul','border-top-color',$s['sidebar_line_c']); 277 self::prop($css,'#sidebar li','border-bottom-color',$s['sidebar_line_c']); 278 self::prop($css,'#topnav ul','border-bottom-color',$s['sidebar_line_c']); 279 280 self::prop($css,'#sidebar li a','color',$s['sidebar_link_c']); 281 self::prop($css,'#sidebar li a:visited','color',$s['sidebar_link_v_c']); 282 self::prop($css,'#sidebar li a:hover, #sidebar li a:focus, #sidebar li a:active','color',$s['sidebar_link_f_c']); 283 self::prop($css,'#search input','color',$s['sidebar_link_c']); 284 self::prop($css,'#search .submit','color',$s['sidebar_link_c']); 285 self::prop($css,'#search .submit:hover','background',$s['sidebar_link_f_c']); 286 self::prop($css,'#search .submit:hover','border-color',$s['sidebar_link_f_c']); 287 288 self::prop($css,'.post-title','color',$s['post_title_c']); 289 self::prop($css,'.post-title a, .post-title a:visited','color',$s['post_title_c']); 290 self::prop($css,'.post-title','font-family',self::fontDef($s['post_title_f'])); 291 self::prop($css,'.post-title','font-size',$s['post_title_s']); 292 293 self::prop($css,'#comments dd','background-color',$s['post_comment_bg_c']); 294 self::prop($css,'#comments dd','color',$s['post_comment_c']); 295 self::prop($css,'#comments dd.me','background-color',$s['post_commentmy_bg_c']); 296 self::prop($css,'#comments dd.me','color',$s['post_commentmy_c']); 297 298 self::prop($css,'#prelude, #prelude a','color',$s['prelude_c']); 299 300 self::prop($css,'#footer p','background-color',$s['footer_bg_c']); 301 self::prop($css,'#footer p','color',$s['footer_c']); 302 self::prop($css,'#footer p','font-size',$s['footer_s']); 303 self::prop($css,'#footer p','font-family',self::fontDef($s['footer_f'])); 304 self::prop($css,'#footer p a','color',$s['footer_l_c']); 305 306 /* Images 307 ------------------------------------------------------ */ 308 self::backgroundImg($css,'body',$s['body_bg_c'],'body-bg.png'); 309 self::backgroundImg($css,'body',$s['body_bg_g'] != 'light','body-bg.png'); 310 self::backgroundImg($css,'body',$s['prelude_c'],'body-bg.png'); 311 self::backgroundImg($css,'#top',$s['body_bg_c'],'page-t.png'); 312 self::backgroundImg($css,'#top',$s['body_bg_g'] != 'light','page-t.png'); 313 self::backgroundImg($css,'#top',$s['uploaded'] || $s['top_image'],'page-t.png'); 314 self::backgroundImg($css,'#footer',$s['body_bg_c'],'page-b.png'); 315 self::backgroundImg($css,'#comments dt',$s['post_comment_bg_c'],'comment-t.png'); 316 self::backgroundImg($css,'#comments dd',$s['post_comment_bg_c'],'comment-b.png'); 317 self::backgroundImg($css,'#comments dt.me',$s['post_commentmy_bg_c'],'commentmy-t.png'); 318 self::backgroundImg($css,'#comments dd.me',$s['post_commentmy_bg_c'],'commentmy-b.png'); 319 320 $res = ''; 321 foreach ($css as $selector => $values) { 322 $res .= $selector." {\n"; 323 foreach ($values as $k => $v) { 324 $res .= $k.':'.$v.";\n"; 325 } 326 $res .= "}\n"; 327 } 328 329 $res .= $s['extra_css']; 330 331 if (!self::canWriteCss(true)) { 332 throw new Exception(__('Unable to create css file.')); 333 } 334 335 # erase old css file 336 self::dropCss($core->blog->settings->system->theme); 337 338 # create new css file into public blowup-css subdirectory 339 self::writeCss($core->blog->settings->system->theme, $res); 340 341 return $res; 342 } 343 344 protected static function prop(&$css,$selector,$prop,$value) 345 { 346 if ($value) { 347 $css[$selector][$prop] = $value; 348 } 349 } 350 351 protected static function backgroundImg(&$css,$selector,$value,$image) 352 { 353 $file = self::imagesPath().'/'.$image; 354 if ($value && file_exists($file)){ 355 $css[$selector]['background-image'] = 'url('.self::imagesURL().'/'.$image.')'; 356 } 357 } 358 359 private static function writeCss($theme,$css) 360 { 361 file_put_contents(self::cssPath().'/'.$theme.'.css', $css); 362 } 363 364 public static function dropCss($theme) 365 { 366 $file = path::real(self::cssPath().'/'.$theme.'.css'); 367 if (is_writable(dirname($file))) { 368 @unlink($file); 369 } 370 } 371 372 public static function publicCssUrlHelper() 373 { 374 $theme = $GLOBALS['core']->blog->settings->system->theme; 375 $url = blowupConfig::cssURL(); 376 $path = blowupConfig::cssPath(); 377 378 if (file_exists($path.'/'.$theme.'.css')) { 379 return $url.'/'.$theme.'.css'; 380 } 381 382 return null; 383 } 384 143 385 public static function imagesPath() 144 386 {
Note: See TracChangeset
for help on using the changeset viewer.