4 * color_theme_to_css.php
6 * This script can be used to convert an old $color theme to a stylesheet for
7 * use with templates. Output is sent to STDOUT.
10 * 1. Create a .php file containing your $color theme.
11 * 2. Run this script from a command line, giving the name of your theme file
12 * as an arguement to this script, e.g.:
14 * /path/to/squirrelmail/templates/theme_to_css.php /path/to/mytheme.php
16 * To send the output to a .css file, do the following:
18 * /path/to/squirrelmail/templates/theme_to_css.php /path/to/mytheme.php > my_theme.css
20 * @copyright 1999-2013 The SquirrelMail Project Team
21 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
23 * @package squirrelmail
24 * @subpackage templates
29 /** make sure that first command line argument is set */
30 if (empty($argv[1])) {
31 echo "Please provide the path to the file containing the \$color theme you\n" .
32 "wish to convert to a stylesheet.\n\n";
36 $theme_file = $argv[1];
37 if (!is_file($theme_file) ||
!is_readable($theme_file)) {
38 echo "The requested theme could not be converted because the file could not\n" .
39 "be opened. Please specify a theme file that can be read.\n\n";
43 /* set default colors in case color theme is not full */
45 $def_color[0] = '#dcdcdc'; // (light gray) TitleBar
46 $def_color[1] = '#800000'; // (red)
47 $def_color[2] = '#cc0000'; // (light red) Warning/Error Messages
48 $def_color[3] = '#a0b8c8'; // (green-blue) Left Bar Background
49 $def_color[4] = '#ffffff'; // (white) Normal Background
50 $def_color[5] = '#ffffcc'; // (light yellow) Table Headers
51 $def_color[6] = '#000000'; // (black) Text on left bar
52 $def_color[7] = '#0000cc'; // (blue) Links
53 $def_color[8] = '#000000'; // (black) Normal text
54 $def_color[9] = '#ababab'; // (mid-gray) Darker version of #0
55 $def_color[10] = '#666666'; // (dark gray) Darker version of #9
56 $def_color[11] = '#770000'; // (dark red) Special Folders color
57 $def_color[12] = '#ededed'; // (light gray) Alternate color for message list
58 $def_color[13] = '#800000'; // (dark red) Color for quoted text -- > 1 quote
59 $def_color[14] = '#ff0000'; // (red) Color for quoted text -- >> 2 or more
60 $def_color[15] = '#002266'; // (dark blue) Unselectable folders
61 $def_color[16] = '#ff9933'; // (orange) Highlight color
65 if ($color === $def_color) {
66 echo "The theme file you specified did not make any alterations to the default\n" .
67 "color scheme. Please choose a different file.\n\n";
72 /* older css template */
73 /* page body formatting */
76 background-color: __COLOR4__;
80 background-color: __COLOR3__;
84 a:link, a:visited, a:hover, a:active {
89 .sqm_leftMain a:link, .sqm_leftMain a:visited, .sqm_leftMain a:hover, .sqm_leftMain a:active {
92 .leftunseen, .leftspecial, .leftspecial a:link, .leftspecial a:visited, .leftspecial a:hover, .leftspecial a:active {
95 .leftnoselect a:link, .leftnoselect a:visited, .leftnoselect a:hover, .leftnoselect a:active {
99 /* highlighted texts */
105 border: 2px solid __COLOR0__;
106 background-color: __COLOR3__;
109 background-color: __COLOR10__;
111 .error_thead_caption {
112 background-color: __COLOR10__;
119 border: 2px solid __COLOR0__;
123 border: 2px solid __COLOR0__;
125 background-color: __COLOR0__;
130 border: 1px solid __COLOR0__;
133 border: 1px solid __COLOR9__;
136 background: __COLOR0__;
139 background: __COLOR9__;
142 background: __COLOR5__;
145 background: __COLOR12__;
148 background: __COLOR4__;
151 border:1px solid __COLOR0__;
154 .sqm_loginOrgName, .sqm_signoutBar {
155 background: __COLOR0__;
158 background: __COLOR9__;
161 background: __COLOR4__;
164 /* empty_folder.tpl defs */
166 background: __COLOR9__;
168 .sqm_emptyFolder td {
169 background: __COLOR4__;
172 /* error_box.tpl definitions */
173 .table_errorBoxWrapper {
174 background: __COLOR9__;
177 background: __COLOR0__;
180 background: __COLOR4__;
183 /* page_header.tpl definitions */
185 background: __COLOR9__;
188 background: __COLOR9__;
191 /* message_list.tpl definitions */
192 .table_messageListWrapper {
193 background: __COLOR9__;
197 background: __COLOR5__;
199 .table_messageList td.spacer {
200 background: __COLOR0__;
202 .table_messageList tr.mouse_over {
203 background: __COLOR5__;
205 .table_messageList tr.clicked {
206 background: __COLOR16__;
220 .message_list_controls {
221 background: __COLOR0__;
224 background: __COLOR4__;
227 /* folder_manip.tpl defs */
228 #folderManip table.wrapper {
229 border: 1px solid __COLOR0__;
231 #folderManip td.folderAction {
232 background: __COLOR0__;
235 /* addressbook_list.tpl defs */
237 border: 1px solid __COLOR9__;
239 #addressList td.header1 {
240 background: __COLOR9__;
242 #addressList td.abookSwitch {
243 background: __COLOR0__;
246 #addressList td.abookButtons {
247 background: __COLOR0__;
249 #addressList td.abookField {
250 border-left: 1px solid __COLOR9__;
251 border-right: 1px solid __COLOR9__;
253 #addressList td.colHeader {
254 background: __COLOR9__;
256 #addrBookSearch table.wrapper {
257 border: 1px solid __COLOR9__;
260 border: 1px solid __COLOR9__;
262 #addrAddEdit td.header {
263 background: __COLOR9__;
267 #optionGroups table {
268 border: 1px solid __COLOR0__;
270 #optionGroups td.title {
271 background: __COLOR0__;
273 #optionGroups td.optionElement table {
274 border:1px solid __COLOR9__;
276 #optionGroups td.optionName {
277 background: __COLOR9__;
279 #optionGroups td.optionDesc {
280 background: __COLOR0__;
282 #optionDisplay table {
283 border: 1px solid __COLOR0__
286 border: 1px solid __COLOR0__
288 #optionOrder table.moveFields td {
289 border-left: 1px solid __COLOR0__;
290 border-right: 1px solid __COLOR0__;
292 #optionsIdentity table.table2 tr {
293 background: __COLOR0__;
295 #optionsIdentity hr {
297 border: 1px solid __COLOR9__;
306 div.search td.header4 {
307 border-bottom: 1px solid __COLOR9__;
309 div.search td.queryAction {
310 border-left: 1px solid __COLOR9__;
311 border-top: 1px solid __COLOR9__;
312 border-bottom: 1px solid __COLOR9__;
315 div.search td.queryDesc {
316 border-top: 1px solid __COLOR9__;
317 border-bottom: 1px solid __COLOR9__;
319 div.search span.error {
322 div.search td.searchForm {
323 border-right: 1px solid __COLOR0__;
324 border-left: 1px solid __COLOR0__;
326 div.search td.queryError {
334 div.compose tr.header {
335 background: __COLOR9__;
337 div.compose tr.attachment td {
338 background: __COLOR0__;
339 border-top: 1px solid __COLOR9__;
340 border-bottom: 1px solid __COLOR9__;
343 div.compose table.close {
344 background: __COLOR0__;
345 border:1px solid __COLOR9__;
350 for ($k = 0; $k<=16; $k++
) {
351 $p[$k] = '__COLOR'.$k.'__';
352 if (!isset($color[$k])) {
353 $color[$k] = $def_color[$k];
357 // Just to make sure...
360 $css_source = str_replace($p, $color, $css_source);