return $refer;
}
}
-?>
+?>
\ No newline at end of file
}
}
-?>
+?>
\ No newline at end of file
$optional_delimiter = "detect";
$allow_charset_search = false;
$disp_default_folder_prefix = $default_folder_prefix;
- $delete_folder = false;
- $force_username_lowercase = false;
+ $delete_folder = false;
+ $force_username_lowercase = false;
- $continue = 1;
+ $continue = 1;
} elsif ( $server eq "mercury32" ) {
$imap_server_type = "mercury32";
$default_folder_prefix = "";
* PHP 4.3.0 or higher (Check Release Notes for PHP 4.3.x information)
* The "STARTTLS" command is NOT supported. The server you wish to use TLS
on must have a dedicated port listening for TLS connections. (ie. port
- 993 for IMAP, 465 for SMTP)
+ 993 for IMAP, 465 for SMTP)
CONFIGURATION
-------------
server in your bug report.)
To get the challenge with IMAP:
- telnet <your server> imap
- [server says hello]
- A01 AUTHENTICATE DIGEST-MD5
- <copy the gobbledygook that the server sends - this is what I need>
- *
- [server says auth aborted]
- A02 LOGOUT
- [server says goodbye, closes connection]
+ telnet <your server> imap
+ [server says hello]
+ A01 AUTHENTICATE DIGEST-MD5
+ <copy the gobbledygook that the server sends - this is what I need>
+ *
+ [server says auth aborted]
+ A02 LOGOUT
+ [server says goodbye, closes connection]
To get the challenge with SMTP:
- telnet <your server> smtp
- [server sends some sort of "hello" banner]
- EHLO myhostname
- [server will probably list a bunch of capabilities]
- AUTH DIGEST-MD5
- <copy the gobbledygook that the server sends - this is what I need>
- *
- [server says auth aborted]
- QUIT
- [server says bye, closes connection]
+ telnet <your server> smtp
+ [server sends some sort of "hello" banner]
+ EHLO myhostname
+ [server will probably list a bunch of capabilities]
+ AUTH DIGEST-MD5
+ <copy the gobbledygook that the server sends - this is what I need>
+ *
+ [server says auth aborted]
+ QUIT
+ [server says bye, closes connection]
OPTIONAL SMTP AUTH CONFIGURATION
there are two variables that can be added to config_local.php
that will specify a sitewide SMTP username and password.
-Set up SMTP authentication to the remote server according to the
-instructions above, then add the following to config_local.php,
+Set up SMTP authentication to the remote server according to the
+instructions above, then add the following to config_local.php,
replacing <smtp_user> and <smtp_pass> with the username and password
you'd like to use for the entire site:
- $smtp_sitewide_user = '<smtp_user>';
- $smtp_sitewide_pass = '<smtp_pass>';
+ $smtp_sitewide_user = '<smtp_user>';
+ $smtp_sitewide_pass = '<smtp_pass>';
These values will be used to connect to the SMTP server as long
as the authentication mechanism is something besides 'none', i.e.
<dt><a href="translating.txt">Translating</a></dt>
<dd>
If you would like to make a translation of SquirrelMail, here are some guidelines to help
- you along the way. These were compiled, thanks to Gustav Foseid.
+ you along the way. These were compiled, thanks to Gustav Foseid.
</dd>
<dt><a href="translating_help.txt">Translating the Help System</a></dt>
<dt><a href="tree.txt">The Mailbox Tree</a></dt>
<dd>
This explains the algorithms and arrays behind the mailbox tree used in deleting folders.
- This was compiled thanks to Nathan Ehresman.
+ This was compiled thanks to Nathan Ehresman.
</dd>
<dt><a href="addressbook.txt">The Addressbook</a></dt>
<dt><a href="README.russian_apache">Russian Apache</a></dt>
<dd>
There are special instructions if you are running Russian Apache. This
- document, thanks to Konstantin Riabitsev, will help you out.
+ document, thanks to Konstantin Riabitsev, will help you out.
</dd>
<dt><a href="authentication.txt">Authentication</a></dt>
<dd>
SquirrelMail allows you to log in to your IMAP and SMTP servers using
- plaintext, CRAM-MD5 or DIGEST-MD5, as well as use SSL for extra security.
- This document describes how to use this new code, and the requirements.
+ plaintext, CRAM-MD5 or DIGEST-MD5, as well as use SSL for extra security.
+ This document describes how to use this new code, and the requirements.
</dd>
<dt>Basic documentation that comes with distrbution:</dt>
</dl>
</body>
-</html>
+</html>
\ No newline at end of file
/**
- * Open the database.
+ * Open the database.
* @param bool $new new connection if it is true
* @return bool
*/
}
/**
- * List all addresses
+ * List all addresses
* @return array search results
*/
function &list_addr() {
*/
return strtr ($string, "[\\]{|}", "ÆØÅæøå");
}
-?>
+?>
\ No newline at end of file
$string = preg_replace("/([\241-\377])/e","'?'",$string);
return $string;
}
-?>
+?>
\ No newline at end of file
* octdec(a-340)*64^2 + octdec(b-200)*64 + octdec(c-200)
*
* \a\b\c\d characters are decoded to html code calculated with formula:
- * octdec(a-360)*64^3 + octdec(b-200)*64^2 +
+ * octdec(a-360)*64^3 + octdec(b-200)*64^2 +
* + octdec(c-200)*64 + octdec(d-200)
*
* \a\b\c\d\e characters are decoded to html code calculated with formula:
- * octdec(a-370)*64^4 + octdec(b-200)*64^3 +
+ * octdec(a-370)*64^4 + octdec(b-200)*64^3 +
* + octdec(c-200)*64^2 + octdec(d-200)*64 + octdec(e-200)
*
* \a\b\c\d\e\f characters are decoded to html code calculated with formula:
- * octdec(a-374)*64^5 + octdec(b-200)*64^4 + octdec(c-200)*64^3 +
+ * octdec(a-374)*64^5 + octdec(b-200)*64^4 + octdec(c-200)*64^3 +
* + octdec(d-200)*64^2 + octdec(e-200)*64 + octdec(f-200)
*</pre>
* @version $Id$
if (! sq_is8bit($string,'utf-8'))
return $string;
- // decode six byte unicode characters
+ // decode six byte unicode characters
/* (i think currently there is no such symbol)
$string = preg_replace("/([\374-\375])([\200-\277])([\200-\277])([\200-\277])([\200-\277])([\200-\277])/e",
"'&#'.((ord('\\1')-252)*1073741824+(ord('\\2')-200)*16777216+(ord('\\3')-200)*262144+(ord('\\4')-128)*4096+(ord('\\5')-128)*64+(ord('\\6')-128)).';'",
$string);
*/
- // decode five byte unicode characters
+ // decode five byte unicode characters
/* (i think currently there is no such symbol)
$string = preg_replace("/([\370-\373])([\200-\277])([\200-\277])([\200-\277])([\200-\277])/e",
"'&#'.((ord('\\1')-248)*16777216+(ord('\\2')-200)*262144+(ord('\\3')-128)*4096+(ord('\\4')-128)*64+(ord('\\5')-128)).';'",
echo $format_ar[$frm_last];
}
}
-?>
+?>
\ No newline at end of file
"\xFE" => 'þ',
"\xFF" => 'ÿ')
);
-?>
+?>
\ No newline at end of file
* @package squirrelmail
* @subpackage strings
*/
-?>
+?>
\ No newline at end of file
"\xE2\x99\xA6" => '♦'
)
);
-?>
+?>
\ No newline at end of file
$sort_opcodes = array ('DATE', 'FROM', 'SUBJECT', 'SIZE');
if ($internal_date_sort == true)
$sort_opcodes[0] = 'ARRIVAL';
-// if (handleAsSent($mailbox))
-// if (isSentFolder($mailbox))
+// if (handleAsSent($mailbox))
+// if (isSentFolder($mailbox))
if ($mailbox == $sent_folder)
$sort_opcodes[1] = 'TO';
return (($sort_by % 2) ? '' : 'REVERSE ') . $sort_opcodes[($sort_by >> 1) & 3];
return $msgs;
}
-
-
-?>
+?>
\ No newline at end of file
/**
* encode folder name to utf7-imap
- *
+ *
* If mbstring functions do not support charset used by translation, falls back to iso-8859-1
* @param string $s folder name
* @return string utf7-imap encoded folder name
}
// vim: et ts=4
-?>
+?>
\ No newline at end of file
if ($l10n[$gettext_domain]->error==1) return $single;
return $l10n[$gettext_domain]->ngettext($single, $plural, $number);
}
-?>
+?>
\ No newline at end of file
if ($squirrelmail_language == 'ja_JP') {
/*
- * force correct detection of charset, when browser does not follow
+ * force correct detection of charset, when browser does not follow
* http content-type and tries to detect charset from page content.
* Shooting of browser's creator can't be implemented in php.
- * We might get rid of it, if we follow http://www.w3.org/TR/japanese-xml/
+ * We might get rid of it, if we follow http://www.w3.org/TR/japanese-xml/
* recommendations and switch to unicode.
- */
+ */
echo "<!-- \xfd\xfe -->\n";
echo '<meta http-equiv="Content-type" content="text/html; charset=euc-jp" />' . "\n";
}
$target = " target=\"$target\"";
}
- // This is an inefficient hook and is only used by
+ // This is an inefficient hook and is only used by
// one plugin that still needs to patch this code,
- // plus if we are templat-izing SM, visual hooks
- // are not needed. However, I am leaving the code
- // here just in case we find a good (non-visual?)
+ // plus if we are templat-izing SM, visual hooks
+ // are not needed. However, I am leaving the code
+ // here just in case we find a good (non-visual?)
// use for the internal_link hook.
//
//$hooktext = do_hook_function('internal_link',$text);
echo "<body text=\"$color[8]\" bgcolor=\"$color[4]\" link=\"$color[7]\" vlink=\"$color[7]\" alink=\"$color[7]\" $onload>\n\n";
}
-?>
+?>
\ No newline at end of file
Message Index
</title>
<summary>
- The name may sound complex, but this is just the list of email
+ The name may sound complex, but this is just the list of email
messages that are in a particular folder.
</summary>
</chapter>
<description>
<p>
After you click on a folder, you will be taken (in the right frame) to the
- message index. This lists messages in the selected folder. Below the
- menu choice is a line which informs you which mails you are viewing
+ message index. This lists messages in the selected folder. Below the
+ menu choice is a line which informs you which mails you are viewing
numerically and how many total you have.
</p><p>
For example: Viewing messages <b>20</b> to <b>30</b> (45 total).
</p><p>
- Notice that the total message count might be different from the unread
+ Notice that the total message count might be different from the unread
mail count which is to the right of the main mail folder.
</p><p>
- A bar containing four buttons is next. On the left side is a drop down
- list box. This box lists your currently subscribed folders. Any selected
+ A bar containing four buttons is next. On the left side is a drop down
+ list box. This box lists your currently subscribed folders. Any selected
message will be moved to the selected folder when the move button is pushed.
- Multiple messages may be moved at once. On the far right side of this bar is
- a button used to delete selected messages. Just select the junk mail and
+ Multiple messages may be moved at once. On the far right side of this bar is
+ a button used to delete selected messages. Just select the junk mail and
press the button. To the left of the Delete button are two buttons which
allow you to mark selected messages either as Read or as Unread.
</p><p>
- A bar containing three fields (From, Date, and Subject) is next. These headings
- separate the message table into logical parts. From tells you who sent
- you the message, or at least what email address it came from. Date
- shows the day which the email was sent. Subject displays what the sender
- entered as the subject. <b>Note:</b> Between the Date and Subject
- columns is a small column that is unlabeled. There could be a "+", "!"
- or an "A" in there. If you see the "+", that means that the message has
- attachments; if you see the "A", that means that you have answered the
- message, and if you see the "!", then the message was marked as urgent!
+ A bar containing three fields (From, Date, and Subject) is next. These headings
+ separate the message table into logical parts. From tells you who sent
+ you the message, or at least what email address it came from. Date
+ shows the day which the email was sent. Subject displays what the sender
+ entered as the subject. <b>Note:</b> Between the Date and Subject
+ columns is a small column that is unlabeled. There could be a "+", "!"
+ or an "A" in there. If you see the "+", that means that the message has
+ attachments; if you see the "A", that means that you have answered the
+ message, and if you see the "!", then the message was marked as urgent!
</p><p>
- What remains is the actual message table. You will notice that unread
+ What remains is the actual message table. You will notice that unread
messages are <b>bold</b> while viewed messages are in normal text.
- Four fields form this table. On the far left is a select box. When
- selected, the message on the same line is subject to the actions previously
+ Four fields form this table. On the far left is a select box. When
+ selected, the message on the same line is subject to the actions previously
discussed (moving, marking (un)read and deletion).
The Toggle All link at the top of the list allows you to check all
select boxes at once.<br />
- Under the From header is listed whom
- the message is from. Surprising, we know. But hey, you don't have to read
+ Under the From header is listed whom
+ the message is from. Surprising, we know. But hey, you don't have to read
this. The date is listed next, and finally the subject.
</p>
<p>
a page). If you click Show All you will disable the so-called paginating and
all messages will be displayed on one big page.
</p>
-
+
</description>
</section>
// Return form
return $ret;
}
-?>
+?>
\ No newline at end of file
//fprintf (stderr, "making query %s\n", tIP->IP); fflush(stderr);
if (lwres_context_create(&ctx, NULL, NULL, NULL, 0) != 0) {
fprintf (stderr, "Couldn't create context\n");
- return;
+ return;
} else {
lwres_conf_parse(ctx, lwres_resolv_conf);
//pthread_mutex_lock(mutexoutput);
- n = lwres_getrdatabyname(ctx, tIP->IP, ns_c_in, ns_t_a, 0, &response);
+ n = lwres_getrdatabyname(ctx, tIP->IP, ns_c_in, ns_t_a, 0, &response);
//pthread_mutex_unlock(mutexoutput);
- if (n == LWRES_R_SUCCESS) {
- printf ("%s,%d.%d.%d.%d,%d\n", tIP->IP,
- response->rdatas[0][0], response->rdatas[0][1],
- response->rdatas[0][2], response->rdatas[0][3],
- response->ttl);
- //fprintf (stderr, "freeing response\n"); fflush(stderr);
- lwres_grbnresponse_free(ctx, &response);
- } else {
- //fprintf (stderr, "Nothing found\n");
+ if (n == LWRES_R_SUCCESS) {
+ printf ("%s,%d.%d.%d.%d,%d\n", tIP->IP,
+ response->rdatas[0][0], response->rdatas[0][1],
+ response->rdatas[0][2], response->rdatas[0][3],
+ response->ttl);
+ //fprintf (stderr, "freeing response\n"); fflush(stderr);
+ lwres_grbnresponse_free(ctx, &response);
+ } else {
+ //fprintf (stderr, "Nothing found\n");
printf ("%s, %s, %d\n", tIP->IP, tIP->IP, defttl);
- }
- //fprintf (stderr, "freeing context\n"); fflush(stderr);
- lwres_context_destroy(&ctx);
- //fprintf (stderr, "done freeing\n"); fflush(stderr);
+ }
+ //fprintf (stderr, "freeing context\n"); fflush(stderr);
+ lwres_context_destroy(&ctx);
+ //fprintf (stderr, "done freeing\n"); fflush(stderr);
}
pthread_mutex_lock(mutexp);
dnsrbls[numrbls] = (char *) malloc(strlen(instr)+1);
if (dnsrbls[numrbls] == NULL) {
fprintf (stderr, "Couldn't allocate memory for %d DNS RBLs\n", numrbls);
- exit (10);
+ exit (10);
} else {
strcpy (dnsrbls[numrbls], instr);
numrbls++;
tIP = (iplist)malloc(sizeof(struct ipnode));
tIP->IP = (char *)malloc(strlen(instr)+strlen(dnsrbls[loop1])+2);
strcpy (tIP->IP, instr);
- strcat (tIP->IP, dnsrbls[loop1]);
+ strcat (tIP->IP, dnsrbls[loop1]);
tIP->next = IPs;
IPs = tIP;
numqueries++;
for (loop1 = 0; ((loop1<MAXTHREADS) && (loop1<numqueries)); loop1++) {
if (pthread_create(&threads[loop1], NULL,
(void *) do_queries, NULL) != 0) {
- fprintf (stderr, "Couldn't make more than %d threads\n", numthreads);
+ fprintf (stderr, "Couldn't make more than %d threads\n", numthreads);
break;
} else {
numthreads++;
exit (0);
}
-
* @since 1.5.1
*/
$fortune_options = '-s';
-?>
+?>
\ No newline at end of file
}
}
-?>
+?>
\ No newline at end of file
else
{
print "Unrecognized argument: $arg\n";
- exit(0);
+ exit(0);
}
}
print "\n\n" if ($Verbose);
print "Creating $Plugin.$Version-$SMVersion.tar.gz\n";
-system("tar cvfz $Plugin.$Version-$SMVersion.tar.gz $Plugin" .
+system("tar cvfz $Plugin.$Version-$SMVersion.tar.gz $Plugin" .
FindTarExcludes(@Files) . $QuietString);
-
+
#print "\n\n" if ($Verbose);
#print "Creating $Plugin.$Version-$SMVersion.zip\n";
-#system("zip -r $Plugin.$Version-$SMVersion.zip $Plugin/" .
+#system("zip -r $Plugin.$Version-$SMVersion.zip $Plugin/" .
# FindZipExcludes(@Files) . $QuietString);
sub VerifyPluginDir
{
local ($Plugin) = @_;
-
+
if (! -e $Plugin && ! -d $Plugin)
{
print "The $Plugin directory doesn't exist, " .
- "or else it is not a directory.\n";
+ "or else it is not a directory.\n";
exit(0);
}
}
sub FindTarExcludes
{
local (@Files) = @_;
-
+
$ExcludeStr = "";
-
+
foreach $File (@Files)
{
if ($File =~ /^(.*\/CVS)\/$/)
- {
- $ExcludeStr .= " --exclude $1";
- }
+ {
+ $ExcludeStr .= " --exclude $1";
+ }
}
-
+
return $ExcludeStr;
}
sub FindZipExcludes
{
local (@Files) = @_;
-
+
$ExcludeStr = "";
-
+
foreach $File (@Files)
{
if ($File =~ /^(.*\/CVS)\/$/)
- {
- $ExcludeStr .= " $1/ $1/*";
- }
+ {
+ $ExcludeStr .= " $1/ $1/*";
+ }
}
-
+
if ($ExcludeStr ne "")
{
$ExcludeStr = " -x" . $ExcludeStr;
}
-
+
return $ExcludeStr;
}
{
local ($Dir) = @_;
local (@Files, @Results);
-
+
opendir(DIR, $Dir);
@Files = readdir(DIR);
closedir(DIR);
-
+
@Results = ("$Dir/");
-
+
foreach $file (@Files)
{
next if ($file =~ /^[\.]+/);
if (-d "$Dir/$file")
- {
- push (@Results, RecurseDir("$Dir/$file"));
- }
- else
- {
- push (@Results, "$Dir/$file");
- }
+ {
+ push (@Results, RecurseDir("$Dir/$file"));
+ }
+ else
+ {
+ push (@Results, "$Dir/$file");
+ }
}
-
+
return @Results;
}
- Moving some strings from .js files into .mod or .php so they can be
translated.
- Miscellaneous code moves and smallish rewrites.
-
+
v0.3.6
------
- Remote arbirtary execution as apache user vulnerability fix.
v0.3b
------
-- Major code re-organization.
+- Major code re-organization.
- Moved modules into separate directory.
- Moved most JavaScript out of the main code into separate .js files
- Created generic GUI-wrappers for most interface screens.
header("Location:../../../src/login.php\n\n");
exit();
-?>
+?>
\ No newline at end of file
} else {
CurrentLocation++;
}
-
+
tmp = CurrentLoc.split(":");
CurrentLine=parseInt(tmp[0]);
CurrentSymbol=parseInt(tmp[1]);
}
NewLineValue+=LineValue.substring(StartWith, CurrentSymbol) + "*" + Word + "*" + LineValue.substring(CurrentSymbol + Word.length, EndWith) + EndLine;
document.forms[0].sqspell_line_area.value=NewLineValue;
-
+
if (suggestions[CurrentError]){
WordSuggestions = suggestions[CurrentError].split(", ");
for (i=0; i<WordSuggestions.length; i++){
document.forms[0].sqspell_oruse.focus();
document.forms[0].sqspell_oruse.select();
}
-
+
document.forms[0].sqspell_suggestion.selectedIndex=0;
if (!document.forms[0].sqspell_oruse.value)
document.forms[0].sqspell_oruse.value=document.forms[0].sqspell_suggestion.options[document.forms[0].sqspell_suggestion.selectedIndex].value;
* Load it again to reflect the changes in symbol data
*/
allLoc = locations[CurrentError].split(", ");
- }
+ }
CurrentLocation=0;
proceed();
}
/**
* This function is called when the "Ignore All" button is pressed.
- *
+ *
* @return void
*/
function sqspellIgnoreAll(){
for (i=0; i<document.forms[0].sqspell_suggestion.length; i++){
document.forms[0].sqspell_suggestion.options[i]=null;
}
-
+
/**
* Now, I've been instructed by the Netscape Developer docs to call
* history.go(0) to refresh the page after I've changed the options.
} else {
if (ChangesMade || document.forms[0].words.value){
if (confirm(ui_completed))
- sqspellCommitChanges();
+ sqspellCommitChanges();
else self.close();
} else {
confirm (ui_nochange);
* @return void
*/
function updateSymbol(lLine, lSymbol, difference){
- /**
+ /**
* Now, I will admit that this is not the best way to do stuff,
* However that's the solution I've come up with.
*
* If you are wondering why I didn't use two-dimensional arrays instead,
* well, sometimes there will be a long line with an error close to the
- * end of it, so the coordinates would be something like 2,98 and
- * some Javascript implementations will create 98 empty members of an
- * array just to have a filled number 98. This is too resource-wasteful
- * and I have decided to go with the below solution instead. It takes
+ * end of it, so the coordinates would be something like 2,98 and
+ * some Javascript implementations will create 98 empty members of an
+ * array just to have a filled number 98. This is too resource-wasteful
+ * and I have decided to go with the below solution instead. It takes
* a little more processing, but it saves a lot on memory.
*
* It just looks heinous. In real life it's really nice and sane. ;)
*/
-
+
for (i=0; i<misses.length; i++){
if(locations[i].indexOf(lLine + ":") >= 0){
allLoc = locations[i].split(", ");
for (j=0; j<allLoc.length; j++){
- if (allLoc[j].indexOf(lLine+":")==0){
- tmp = allLoc[j].split(":");
- tmp[0] = parseInt(tmp[0]); tmp[1] = parseInt(tmp[1]);
- if (tmp[1] > lSymbol){
- tmp[1] = tmp[1] + difference;
- allLoc[j] = tmp.join(":");
- }
- }
+ if (allLoc[j].indexOf(lLine+":")==0){
+ tmp = allLoc[j].split(":");
+ tmp[0] = parseInt(tmp[0]); tmp[1] = parseInt(tmp[1]);
+ if (tmp[1] > lSymbol){
+ tmp[1] = tmp[1] + difference;
+ allLoc[j] = tmp.join(":");
+ }
+ }
}
locations[i] = allLoc.join(", ");
}
if (i!=1) newBody+="\r\n";
newBody += sqspell_lines[i];
}
-
+
opener.document.compose.subject.value=newSubject;
opener.document.compose.body.value=newBody;
-
+
/**
* See if any words were added to the dictionary.
*/
header("Location:../../../src/login.php\n\n");
exit();
-?>
+?>
\ No newline at end of file
function translate_custom_showoption() {
translate_showoption_internal('server', 'custom', 'Al Misbar');
}
-?>
+?>
\ No newline at end of file
*/
global $translate_custom_enabled;
$translate_custom_enabled=false;
-?>
+?>
\ No newline at end of file
translate_table_end();
}
-?>
+?>
\ No newline at end of file
unless (/^\#/) {
($orig_text, $unicode_text, $dummy, $name) = split /\t/;
-
- # oct does not only do what it's name suggest. If a string starts
+
+ # oct does not only do what it's name suggest. If a string starts
# with 0x it is interpreted as a hexadecimal value.
$orig = oct $orig_text;
$unicode = oct $unicode_text;
-
+
if ($orig >= $min) {
print " // $name\n";
printf (' $string = str_replace("\%o", "&#%d", $string);'."\n",
- $orig, $unicode);
+ $orig, $unicode);
}
- }
+ }
}
</html>
<?php
// vim: et ts=4
-?>
+?>
\ No newline at end of file
} /* end pf_clean_string() function */
/* --end pf-specific functions */
-?>
+?>
\ No newline at end of file
sqimap_logout($imapConnection);
echo '</body></html>';
sqsession_register($mailbox_cache,'mailbox_cache');
-?>
+?>
\ No newline at end of file
'center', $color[4], 'width="50%" cols="1" cellpadding="2" cellspacing="0" border="0"' )
?>
</body>
-</html>
+</html>
\ No newline at end of file
$color[14] = '#ffffff'; //
$color[15] = '#D0D0D0'; // Unselectable folders
-?>
+?>
\ No newline at end of file
$color[14] = "#FF0000"; // (rec) >> Multi-Quoted Message Text (2 >'s or more)
$color[15] = "#002266"; // (dark blue NOTE: not tested) L. Frame: unselectable folders
-?>
+?>
\ No newline at end of file
$color[14] = '#ffffff'; //
$color[15] = '#D0D0D0'; // Unselectable folders
-?>
+?>
\ No newline at end of file