Changeset 7902df4 in github
- Timestamp:
- Oct 20, 2005 6:20:26 PM (8 years ago)
- Branches:
- master, HEAD, courier-fix, dev-browser-capabilities, pdo, release-0.6, release-0.7, release-0.8
- Children:
- a95e0e1
- Parents:
- 1038d554
- Files:
-
- 6 added
- 17 edited
-
config/db.inc.php.dist (modified) (1 diff)
-
config/main.inc.php.dist (modified) (3 diffs)
-
index.php (modified) (5 diffs)
-
program/include/main.inc (modified) (4 diffs)
-
program/include/rcube_imap.inc (modified) (13 diffs)
-
program/js/app.js (modified) (1 diff)
-
program/localization/se/labels.inc (added)
-
program/localization/se/messages.inc (added)
-
program/steps/mail/compose.inc (modified) (1 diff)
-
program/steps/mail/func.inc (modified) (5 diffs)
-
program/steps/mail/move_del.inc (modified) (1 diff)
-
skins/default/addresses.css (modified) (4 diffs)
-
skins/default/common.css (modified) (5 diffs)
-
skins/default/images/buttons/addressbook.gif (added)
-
skins/default/images/buttons/logout.gif (modified) (previous)
-
skins/default/images/buttons/mail.gif (added)
-
skins/default/images/buttons/settings.gif (added)
-
skins/default/images/taskbar.gif (added)
-
skins/default/includes/header.html (modified) (1 diff)
-
skins/default/includes/taskbar.html (modified) (1 diff)
-
skins/default/mail.css (modified) (9 diffs)
-
skins/default/settings.css (modified) (2 diffs)
-
skins/default/templates/login.html (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
config/db.inc.php.dist
rf45ec7e r7902df4 17 17 // PEAR database DSN for read/write operations 18 18 // format is db_provider://user:password@host/databse 19 // currentyl suported db_providers: mysql, sqlite , pgsql19 // currentyl suported db_providers: mysql, sqlite 20 20 21 21 $rcmail_config['db_dsnw'] = 'mysql://roundcube:pass@localhost/roundcubemail'; -
config/main.inc.php.dist
rd206c1f r7902df4 23 23 $rcmail_config['enable_caching'] = TRUE; 24 24 25 // automatically create a new user when log-in the first time 25 // automatically create a new RoundCube user when log-in the first time. 26 // a new user will be created once the IMAP login succeeded. 26 27 // set to false if only registered users can use this service 27 28 $rcmail_config['auto_create_user'] = TRUE; … … 68 69 $rcmail_config['temp_dir'] = 'temp/'; 69 70 71 // session lifetime in minutes 72 $rcmail_config['session_lifetime'] = 10; 73 70 74 // check client IP in session athorization 71 75 $rcmail_config['ip_check'] = TRUE; … … 81 85 82 86 // add this user-agent to message headers when sending 83 $rcmail_config['useragent'] = 'RoundCube Webmail/0.1-200510 11';87 $rcmail_config['useragent'] = 'RoundCube Webmail/0.1-20051021'; 84 88 85 89 // only list folders within this path -
index.php
rf45ec7e r7902df4 4 4 +-----------------------------------------------------------------------+ 5 5 | RoundCube Webmail IMAP Client | 6 | Version 0.1-200510 07|6 | Version 0.1-20051018 | 7 7 | | 8 8 | Copyright (C) 2005, RoundCube Dev. - Switzerland | … … 69 69 require_once('include/main.inc'); 70 70 require_once('include/cache.inc'); 71 require_once('PEAR.php'); 72 73 74 // set PEAR error handling 75 // PEAR::setErrorHandling(PEAR_ERROR_TRIGGER, E_USER_NOTICE); 71 76 72 77 … … 139 144 else if ($_action!='login' && $_auth && $sess_auth) 140 145 { 141 if ($_auth !== $sess_auth || $_auth != rcmail_auth_hash($_SESSION['client_id'], $_SESSION['auth_time'])) 146 if ($_auth !== $sess_auth || $_auth != rcmail_auth_hash($_SESSION['client_id'], $_SESSION['auth_time']) || 147 ($CONFIG['session_lifetime'] && $SESS_CHANGED + $CONFIG['session_lifetime']*60 < mktime())) 142 148 { 143 149 $message = show_message('sessionerror', 'error'); … … 150 156 if (!empty($_SESSION['user_id']) && $_task=='mail') 151 157 { 152 $conn = $IMAP->connect($_SESSION['imap_host'], $_SESSION['username'], decrypt_passwd($_SESSION['password']) );158 $conn = $IMAP->connect($_SESSION['imap_host'], $_SESSION['username'], decrypt_passwd($_SESSION['password']), $_SESSION['imap_port'], $_SESSION['imap_ssl']); 153 159 if (!$conn) 154 160 { … … 156 162 $_SESSION['user_id'] = ''; 157 163 } 164 else 165 rcmail_set_imap_prop(); 158 166 } 159 167 -
program/include/main.inc
r1038d554 r7902df4 52 52 else 53 53 ini_set('display_errors', 0); 54 55 // set session garbage collecting time according to session_lifetime 56 if (!empty($CONFIG['session_lifetime'])) 57 ini_set('session.gc_maxlifetime', ($CONFIG['session_lifetime']+2)*60); 54 58 55 59 … … 139 143 $IMAP = new rcube_imap(); 140 144 145 // connect with stored session data 146 if ($connect) 147 { 148 if (!($conn = $IMAP->connect($_SESSION['imap_host'], $_SESSION['username'], decrypt_passwd($_SESSION['password']), $_SESSION['imap_port'], $_SESSION['imap_ssl']))) 149 show_message('imaperror', 'error'); 150 151 rcmail_set_imap_prop(); 152 } 153 141 154 // enable caching of imap data 142 155 if ($CONFIG['enable_caching']===TRUE) 143 156 $IMAP->set_caching(TRUE); 144 157 158 if (is_array($CONFIG['default_imap_folders'])) 159 $IMAP->set_default_mailboxes($CONFIG['default_imap_folders']); 160 161 // set pagesize from config 162 if (isset($CONFIG['pagesize'])) 163 $IMAP->set_pagesize($CONFIG['pagesize']); 164 } 165 166 167 // set root dir and last stored mailbox 168 // this must be done AFTER connecting to the server 169 function rcmail_set_imap_prop() 170 { 171 global $CONFIG, $IMAP; 172 145 173 // set root dir from config 146 174 if (strlen($CONFIG['imap_root'])) 147 175 $IMAP->set_rootdir($CONFIG['imap_root']); 148 149 if (is_array($CONFIG['default_imap_folders']))150 $IMAP->set_default_mailboxes($CONFIG['default_imap_folders']);151 176 152 177 if (strlen($_SESSION['mbox'])) 153 178 $IMAP->set_mailbox($_SESSION['mbox']); 154 179 155 180 if (isset($_SESSION['page'])) 156 181 $IMAP->set_page($_SESSION['page']); 157 158 // set pagesize from config159 if (isset($CONFIG['pagesize']))160 $IMAP->set_pagesize($CONFIG['pagesize']);161 162 163 // connect with stored session data164 if ($connect)165 {166 if (!($conn = $IMAP->connect($_SESSION['imap_host'], $_SESSION['username'], decrypt_passwd($_SESSION['password']))))167 show_message('imaperror', 'error');168 }169 182 } 170 183 … … 263 276 $host = $a_host['host']; 264 277 $imap_ssl = (isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'))) ? TRUE : FALSE; 265 $imap_port = isset($a_host['po st']) ? $a_host['post'] : ($imap_ssl ? 993 : $CONFIG['default_port']);278 $imap_port = isset($a_host['port']) ? $a_host['port'] : ($imap_ssl ? 993 : $CONFIG['default_port']); 266 279 } 267 280 … … 302 315 $_SESSION['user_id'] = $user_id; 303 316 $_SESSION['imap_host'] = $host; 317 $_SESSION['imap_port'] = $imap_port; 318 $_SESSION['imap_ssl'] = $imap_ssl; 304 319 $_SESSION['username'] = $user; 305 320 $_SESSION['password'] = encrypt_passwd($pass); -
program/include/rcube_imap.inc
r8c03283 r7902df4 58 58 function connect($host, $user, $pass, $port=143, $use_ssl=FALSE) 59 59 { 60 global $ICL_ PORT, $CONFIG;60 global $ICL_SSL, $ICL_PORT, $CONFIG; 61 61 62 62 // check for Open-SSL support in PHP build … … 67 67 raise_error(array('code' => 403, 68 68 'type' => 'imap', 69 'file' => __FILE__, 69 70 'message' => 'Open SSL not available;'), TRUE, FALSE); 70 71 $port = 143; … … 99 100 $this->delimiter = $this->conn->delimiter; 100 101 if (!empty($this->conn->rootdir)) 101 $this->root_ns = $this->conn->rootdir; 102 { 103 $this->set_rootdir($this->conn->rootdir); 104 $this->root_ns = ereg_replace('[\.\/]$', '', $this->conn->rootdir); 105 } 102 106 } 103 107 … … 186 190 $this->delimiter = iil_C_GetHierarchyDelimiter($this->conn); 187 191 192 if (empty($this->delimiter)) 193 $this->delimiter = '/'; 194 188 195 return $this->delimiter; 189 196 } … … 269 276 $count = iil_C_CountMessages($this->conn, $mailbox); 270 277 271 // print "/**** get messagecount for $mailbox ($mode): $count ****/\n";272 273 278 if (is_array($a_mailbox_cache[$mailbox])) 274 279 $a_mailbox_cache[$mailbox] = array(); … … 279 284 $this->update_cache('messagecount', $a_mailbox_cache); 280 285 281 //var_dump($a_mailbox_cache);282 283 286 return (int)$count; 284 287 } … … 295 298 296 299 // private method for listing message header 300 // by DrSlump <drslump@drslump.biz> 301 function __list_headers($mailbox='', $page=NULL, $sort_field='date', $sort_order='DESC') 302 { 303 $a_out = array(); 304 $cached_count = 0; 305 306 if (!strlen($mailbox)) 307 return $a_out; 308 309 $mbox_count = $this->_messagecount($mailbox /*, 'ALL', TRUE*/); 310 311 $revalidate = false; 312 if ($mbox_count) 313 { 314 // get cached headers 315 $a_out = $this->get_cache($mailbox.'.msg'); 316 $a_out = is_array($a_out) ? $a_out : array(); // make sure we get an array 317 318 $cached_count = count($a_out); 319 $a_new = array(); 320 $revalidate = true; // revalidate by default 321 322 // if the cache count is greater then there have been changes for sure 323 if ($cached_count <= $mbox_count) 324 { 325 $from = $cached_count?$cached_count:1; 326 327 //get new headers (at least one is returned) 328 $a_temp = iil_C_FetchHeaders($this->conn, $mailbox, $from . ':' . $mbox_count); 329 $duplicated = $cached_count?true:false; 330 331 foreach ($a_temp as $hdr) 332 { 333 //skip the first one if duplicated 334 if ($duplicated) 335 { 336 //check for changes using the UID 337 $lastCacheHdr = end($a_out); 338 if ($hdr->uid === $lastCacheHdr->uid) 339 $revalidate = false; 340 341 $duplicated = false; 342 continue; 343 } 344 345 //skip deleted ones 346 if (! $hdr->deleted) 347 $a_new[ $hdr->uid ] = $hdr; 348 } 349 } 350 351 //revalidate cache if needed 352 $to = $mbox_count - count($a_new); 353 if ($revalidate && $to !== 0) //we'll need to reindex the array so we have to make a copy 354 { 355 $a_dirty = $a_out; 356 $a_out = array(); 357 $a_buffers = array(); 358 359 //fetch chunks of 20 headers 360 $step = 20; 361 $found = false; 362 363 //fetch headers in blocks starting from new to old 364 do { 365 $from = $to-$step; 366 if ($from < 1) $from = 1; 367 368 //store the block in a temporal buffer 369 $a_buffers[$from] = iil_C_FetchHeaders($this->conn, $mailbox, $from . ':' . $to); 370 371 //compare the fetched headers with the ones in the cache 372 $idx = 0; 373 foreach ($a_buffers[$from] as $k=>$hdr) 374 { 375 //if it's different the comparison ends 376 if (!isset($a_dirty[$hdr->uid]) || $a_dirty[$hdr->uid]->id !== $hdr->id) 377 break; 378 379 //if we arrive here then we know that the older messages in cache are ok 380 $found = $hdr->id; 381 $idx++; 382 } 383 384 //remove from the buffer the headers which are already cached 385 if ($found) 386 $a_buffers[$from] = array_splice($a_buffers[$from], 0, $idx ); 387 388 $to = $from-1; 389 } 390 while ($found===false && $from > 1); 391 392 //just keep the headers we are certain that didn't change in the cache 393 if ($found !== false) 394 { 395 foreach ($a_dirty as $hdr) 396 { 397 if ($hdr->id > $found) break; 398 $a_out[$hdr->uid] = $hdr; 399 } 400 } 401 402 //we builded the block buffers from new to older, we process them in reverse order 403 ksort($a_buffers, SORT_NUMERIC); 404 foreach ($a_buffers as $a_buff) 405 { 406 foreach ($a_buff as $hdr) 407 { 408 if (! $hdr->deleted) 409 $a_out[$hdr->uid] = $hdr; 410 } 411 } 412 } 413 414 //array_merge() would reindex the keys, so we use this 'hack' 415 $a_out += $a_new; 416 } 417 418 //write headers list to cache if needed 419 if ($revalidate || count($a_out)!=$cached_count) { 420 $this->update_cache($mailbox.'.msg', $a_out); 421 } 422 423 //sort headers by a specific col 424 $a_out = iil_SortHeaders( $a_out, $sort_field, $sort_order ); 425 426 // return complete list of messages 427 if (strtolower($page)=='all') 428 return $a_out; 429 430 $start_msg = ($this->list_page-1) * $this->page_size; 431 return array_slice($a_out, $start_msg, $this->page_size); 432 } 433 434 435 // old function; replaced 2005/10/18 436 // private method for listing message header 297 437 function _list_headers($mailbox='', $page=NULL, $sort_field='date', $sort_order='DESC') 298 438 { 299 $max = $this->_messagecount($mailbox /*, 'ALL', TRUE*/);300 439 $max = $this->_messagecount($mailbox); 440 301 441 if (!strlen($mailbox)) 302 442 return array(); … … 305 445 $a_msg_headers = $this->get_cache($mailbox.'.msg'); 306 446 307 // print "/**** count = $max; headers = ".sizeof($a_msg_headers)." ****/\n";308 309 447 // retrieve headers from IMAP 310 448 if (!is_array($a_msg_headers) || sizeof($a_msg_headers) != $max) … … 312 450 $a_header_index = iil_C_FetchHeaders($this->conn, $mailbox, "1:$max"); 313 451 $a_msg_headers = array(); 314 452 315 453 if (!empty($a_header_index)) 316 foreach ($a_header_index as $i => $headers) 317 if (!$headers->deleted) 318 $a_msg_headers[$headers->uid] = $headers; 319 320 // print "/**** fetch headers ****/\n"; 454 foreach ($a_header_index as $i => $headers) 455 if (!$headers->deleted) 456 $a_msg_headers[$headers->uid] = $headers; 321 457 } 322 458 else … … 346 482 return array_slice($a_headers, $start_msg, $this->page_size); 347 483 } 348 484 349 485 350 486 // return sorted array of message UIDs … … 669 805 $a_mailbox_cache = $this->get_cache('mailboxes'); 670 806 671 if (strlen($this->root_ns))672 $abs_name = $this->root_ns.$abs_name;807 //if (strlen($this->root_ns)) 808 // $abs_name = $this->root_ns.$abs_name; 673 809 674 810 if (strlen($abs_name) && (!is_array($a_mailbox_cache) || !in_array($abs_name, $a_mailbox_cache))) … … 677 813 // update mailboxlist cache 678 814 if ($result && $subscribe) 679 $this->subscribe($ this->root_ns.$name);680 681 return $result ? $ this->root_ns.$name : FALSE;815 $this->subscribe($name); 816 817 return $result ? $name : FALSE; 682 818 } 683 819 … … 936 1072 function _mod_mailbox($mbox, $mode='in') 937 1073 { 938 if (!empty($this->root_dir) && $mode=='in') 1074 if (!empty($this->root_ns) && $this->root_ns == $mbox) 1075 return $mbox; 1076 1077 if (!empty($this->root_dir) && $mode=='in') 939 1078 $mbox = $this->root_dir.$this->delimiter.$mbox; 940 else if (strlen($this->root_dir) && $mode=='out') 1079 else if (strlen($this->root_dir) && $mode=='out') 941 1080 $mbox = substr($mbox, strlen($this->root_dir)+1); 942 1081 -
program/js/app.js
r9fee0ed r7902df4 205 205 // flag object as complete 206 206 this.loaded = true; 207 207 208 208 // show message 209 209 if (this.pending_message) -
program/steps/mail/compose.inc
r09941ea r7902df4 510 510 rcube_label('high'), 511 511 rcube_label('highest')), 512 array( 1, 2, 0, 4, 5));512 array(5, 4, 0, 2, 1)); 513 513 514 514 $sel = isset($_POST['_priority']) ? $_POST['_priority'] : 0; -
program/steps/mail/func.inc
r1038d554 r7902df4 199 199 foreach ($arrFolders as $key=>$folder) 200 200 { 201 $folder_lc = strtolower($folder['id']); 202 if (in_array($folder_lc, $special)) 203 $foldername = rcube_label($folder_lc); 204 else 205 $foldername = $folder['name']; 206 201 207 // shorten the folder name to a given length 202 208 if ($maxlength && $maxlength>1) 203 $foldername = abbrevate_string($folder['name'], $maxlength); 204 else 205 $foldername = $folder['name']; 209 $foldername = abbrevate_string($foldername, $maxlength); 206 210 207 211 $out .= sprintf('<option value="%s">%s%s</option>'."\n", … … 304 308 $cont = rep_specialchars_output(rcmail_address_string($header->$col, 3, $attrib['addicon'])); 305 309 else if ($col=='subject') 306 $cont = rep_specialchars_output($IMAP->decode_header($header->$col) );310 $cont = rep_specialchars_output($IMAP->decode_header($header->$col), 'html', 'all'); 307 311 else if ($col=='size') 308 312 $cont = show_bytes($header->$col); … … 310 314 $cont = format_date($header->date); //date('m.d.Y G:i:s', strtotime($header->date)); 311 315 else 312 $cont = rep_specialchars_output($header->$col );316 $cont = rep_specialchars_output($header->$col, 'html', 'all'); 313 317 314 318 $out .= '<td class="'.$col.'">' . $cont . "</td>\n"; … … 378 382 $cont = rep_specialchars_output(rcmail_address_string($header->$col, 3)); 379 383 else if ($col=='subject') 380 $cont = rep_specialchars_output($IMAP->decode_header($header->$col) );384 $cont = rep_specialchars_output($IMAP->decode_header($header->$col), 'html', 'all'); 381 385 else if ($col=='size') 382 386 $cont = show_bytes($header->$col); … … 384 388 $cont = format_date($header->date); //date('m.d.Y G:i:s', strtotime($header->date)); 385 389 else 386 $cont = rep_specialchars_output($header->$col );390 $cont = rep_specialchars_output($header->$col, 'html', 'all'); 387 391 388 392 $a_msg_cols[$col] = $cont; -
program/steps/mail/move_del.inc
r09941ea r7902df4 66 66 $commands .= sprintf("this.set_env('pagecount', %d);\n", $pages); 67 67 68 68 69 69 // update mailboxlist 70 70 $mbox = $IMAP->get_mailbox_name(); 71 71 $commands .= sprintf("this.set_unread_count('%s', %d);\n", $mbox, $IMAP->messagecount($mbox, 'UNSEEN')); 72 $commands .= sprintf("this.set_unread_count('%s', %d);\n", $_GET['_target_mbox'], $IMAP->messagecount($_GET['_target_mbox'], 'UNSEEN')); 72 73 if ($_action=='moveto') 74 $commands .= sprintf("this.set_unread_count('%s', %d);\n", $_GET['_target_mbox'], $IMAP->messagecount($_GET['_target_mbox'], 'UNSEEN')); 73 75 74 76 -
skins/default/addresses.css
r4e17e6c r7902df4 5 5 { 6 6 position: absolute; 7 top: 32px;7 top: 45px; 8 8 left: 200px; 9 9 height: 35px; … … 18 18 { 19 19 position: absolute; 20 top: 50px;20 top: 60px; 21 21 left: 490px; 22 22 width: 200px; … … 35 35 { 36 36 position: absolute; 37 top: 75px;37 top: 85px; 38 38 left: 20px; 39 39 width: 450px; 40 bottom: 60px;40 bottom: 40px; 41 41 border: 1px solid #999999; 42 42 background-color: #F9F9F9; … … 64 64 { 65 65 position: absolute; 66 top: 75px;66 top: 85px; 67 67 left: 490px; 68 68 right: 40px; 69 bottom: 60px;69 bottom: 40px; 70 70 border: 1px solid #999999; 71 71 overflow: hidden; -
skins/default/common.css
r4e17e6c r7902df4 4 4 { 5 5 margin: 8px; 6 background-color: #F 2F2F2; /* #EBEBEB; */6 background-color: #F6F6F6; /* #EBEBEB; */ 7 7 color: #000000; 8 8 } … … 104 104 #header 105 105 { 106 /* margin: 10px auto; */ 106 position: absolute; 107 top: 10px; 108 left: 20px; 107 109 width: 170px; 108 110 height: 40px; 109 margin-top: 0px; 110 margin-left: 10px; 111 /* border: 1px solid #cccccc; */ 112 } 113 114 #footer 115 { 116 position: fixed !important; 117 left: 0px; 111 z-index: 100; 112 } 113 114 #taskbar 115 { 116 position: absolute; 117 top: 0px; 118 118 right: 0px; 119 bottom: 0px !important; 120 height: 40px; 121 background-color: #f2f2f2; 122 123 /* css hack for IE */ 124 position: absolute; 125 bottom: auto; 126 top: expression((parseInt(document.documentElement.clientHeight)+parseInt(document.documentElement.scrollTop)-42)+'px'); 127 width: expression(parseInt(document.documentElement.clientWidth)+'px'); 128 } 129 130 #taskbar 131 { 132 margin: 0px auto; 133 width: 400px; 134 height: 34px; 135 padding: 3px; 136 text-align: center; 137 border: 1px solid #cccccc; 138 } 139 140 #taskbar a 141 { 142 padding-right: 10px; 119 width: 600px; 120 height: 37px; 121 background: url(images/taskbar.gif) top right no-repeat; 122 padding: 10px 24px 0px 0px; 123 text-align: right; 124 white-space: nowrap; 125 z-index: 2; 126 } 127 128 #taskbar a, 129 #taskbar a:active, 130 #taskbar a:visited 131 { 132 font-size: 11px; 133 color: #666666; 134 text-decoration: none; 135 padding: 6px 16px 6px 30px; 136 background-repeat: no-repeat; 137 } 138 139 #taskbar a:hover 140 { 141 color: #333333; 142 } 143 144 a.button-mail 145 { 146 background-image: url(images/buttons/mail.gif); 147 } 148 149 a.button-addressbook 150 { 151 background-image: url(images/buttons/addressbook.gif); 152 } 153 154 a.button-settings 155 { 156 background-image: url(images/buttons/settings.gif); 157 } 158 159 a.button-logout 160 { 161 background-image: url(images/buttons/logout.gif); 143 162 } 144 163 … … 148 167 position: absolute; 149 168 display: none; 150 top: 0px;169 top: -1px; 151 170 left: 200px; 152 171 right: 200px; … … 158 177 width: 400px; 159 178 margin: 0px auto; 160 height: 2 2px;161 min-height: 2 2px;179 height: 24px; 180 min-height: 24px; 162 181 padding: 8px 10px 8px 46px; 163 182 } … … 189 208 { 190 209 background: url(images/display/loading.gif) 6px 3px no-repeat; 191 background-color: #E FEFEF;210 background-color: #EBEBEB; 192 211 border: 1px solid #CCCCCC; 193 212 } -
skins/default/includes/header.html
r4e17e6c r7902df4 1 <div id="header"><img src="/images/roundcube_logo.png" width="165" height="55" alt="RoundCube Webmail" /></div> 1 <div id="taskbar"> 2 <roundcube:button command="mail" label="mail" class="button-mail" /> 3 <roundcube:button command="addressbook" label="addressbook" class="button-addressbook" /> 4 <roundcube:button command="settings" label="settings" class="button-settings" /> 5 <roundcube:button command="logout" label="logout" class="button-logout" /> 6 </div> 7 8 <div id="header"><roundcube:button command="mail" image="/images/roundcube_logo.png" alt="RoundCube Webmail" width="165" height="55" /></div> 2 9 3 10 <roundcube:object name="message" id="message" /> -
skins/default/includes/taskbar.html
r4e17e6c r7902df4 1 <div id="footer">2 <div id="taskbar">3 <roundcube:button command="mail" image="/images/buttons/mail.png" title="mail" width="32" height="32" />4 <roundcube:button command="addressbook" image="/images/buttons/addressbook.png" title="addressbook" width="32" height="32" />5 <roundcube:button command="settings" image="/images/buttons/settings.png" title="settings" width="32" height="32" />6 <roundcube:button command="logout" image="/images/buttons/logout.png" title="logout" width="32" height="32" />7 </div>8 </div>9 1 10 2 <!-- -
skins/default/mail.css
rcd900dd r7902df4 5 5 { 6 6 position: absolute; 7 top: 20px;7 top: 45px; 8 8 left: 200px; 9 9 right: 250px; … … 45 45 position: absolute; 46 46 left: 200px; 47 bottom: 60px;47 bottom: 20px; 48 48 height: 16px; 49 49 width: 400px; … … 74 74 { 75 75 position: absolute; 76 top: 35px;77 right: 60px;76 top: 60px; 77 right: 40px; 78 78 width: 250px; 79 79 height: 20px; … … 99 99 { 100 100 position: absolute; 101 top: 60px;101 top: 85px; 102 102 left: 200px; 103 103 right: 40px; 104 bottom: 80px;104 bottom: 40px; 105 105 border: 1px solid #999999; 106 106 background-color: #F9F9F9; … … 161 161 { 162 162 position: absolute; 163 top: 8 0px;163 top: 85px; 164 164 left: 20px; 165 165 width: 140px !important; … … 178 178 { 179 179 position: absolute; 180 top: 10 0px;180 top: 105px; 181 181 left: 20px; 182 182 width: 160px; 183 bottom: 80px;183 bottom: 40px; 184 184 border: 1px solid #CCCCCC; 185 185 background-color: #F9F9F9; … … 404 404 { 405 405 position: absolute; 406 top: 70px;406 top: 85px; 407 407 left: 200px; 408 408 right: 40px; 409 409 /* css hack for IE */ 410 margin-bottom: 50px;410 margin-bottom: 10px; 411 411 width: expression(document.body.clientWidth-240); 412 412 } … … 477 477 min-height: 300px; 478 478 margin-top: 10px; 479 margin-bottom: 50px;479 margin-bottom: 10px; 480 480 background-color: #FFFFFF; 481 481 border: 1px solid #cccccc; … … 536 536 { 537 537 position: absolute; 538 top: 70px;538 top: 90px; 539 539 left: 200px; 540 540 right: 40px; 541 bottom: 60px;541 bottom: 20px; 542 542 padding: 0px; 543 543 margin: 0px; -
skins/default/settings.css
r61bda79 r7902df4 5 5 { 6 6 position: absolute; 7 top: 4 2px;7 top: 45px; 8 8 left: 220px; 9 9 right: 60px; … … 121 121 width: 500px; 122 122 margin-top: 20px; 123 margin-bottom: 50px;123 margin-bottom: 20px; 124 124 border: 1px solid #999999; 125 125 } -
skins/default/templates/login.html
r4e17e6c r7902df4 8 8 #login-form 9 9 { 10 margin: 50px auto;10 margin: 150px auto; 11 11 width: 350px; 12 12 } … … 16 16 <body> 17 17 18 <roundcube:include file="/includes/header.html" /> 18 <div id="header"><img src="skins/default/images/roundcube_logo.png" id="rcmbtn104" width="165" height="55" border="0" alt="RoundCube Webmail" /></div> 19 20 <roundcube:object name="message" id="message" /> 19 21 20 22 <div id="login-form">
Note: See TracChangeset
for help on using the changeset viewer.
