Merge pull request #50 from annando/master
massive changes in mail and design updates in "vier"
This commit is contained in:
commit
89560edde2
2
boot.php
2
boot.php
|
@ -11,7 +11,7 @@ require_once('include/cache.php');
|
||||||
define ( 'FRIENDICA_PLATFORM', 'Friendica');
|
define ( 'FRIENDICA_PLATFORM', 'Friendica');
|
||||||
define ( 'FRIENDICA_VERSION', '2.3.1264' );
|
define ( 'FRIENDICA_VERSION', '2.3.1264' );
|
||||||
define ( 'DFRN_PROTOCOL_VERSION', '2.22' );
|
define ( 'DFRN_PROTOCOL_VERSION', '2.22' );
|
||||||
define ( 'DB_UPDATE_VERSION', 1126 );
|
define ( 'DB_UPDATE_VERSION', 1127 );
|
||||||
|
|
||||||
define ( 'EOL', "<br />\r\n" );
|
define ( 'EOL', "<br />\r\n" );
|
||||||
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
||||||
|
|
|
@ -634,7 +634,8 @@ CREATE TABLE IF NOT EXISTS `mailacct` (
|
||||||
`mailbox` CHAR( 255 ) NOT NULL,
|
`mailbox` CHAR( 255 ) NOT NULL,
|
||||||
`user` CHAR( 255 ) NOT NULL ,
|
`user` CHAR( 255 ) NOT NULL ,
|
||||||
`pass` TEXT NOT NULL ,
|
`pass` TEXT NOT NULL ,
|
||||||
`reply_to` CHAR( 255 ) NOT NULL ,
|
`action` INT NOT NULL ,
|
||||||
|
`movetofolder` CHAR(255) NOT NULL ,
|
||||||
`pubmail` TINYINT(1) NOT NULL DEFAULT '0',
|
`pubmail` TINYINT(1) NOT NULL DEFAULT '0',
|
||||||
`last_check` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'
|
`last_check` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'
|
||||||
) ENGINE = MyISAM DEFAULT CHARSET=utf8;
|
) ENGINE = MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
|
@ -455,7 +455,16 @@ function probe_url($url, $mode = PROBE_NORMAL) {
|
||||||
if((strcasecmp($feadr->mailbox,$name) == 0)
|
if((strcasecmp($feadr->mailbox,$name) == 0)
|
||||||
&&(strcasecmp($feadr->host,$phost) == 0)
|
&&(strcasecmp($feadr->host,$phost) == 0)
|
||||||
&& (strlen($feadr->personal))) {
|
&& (strlen($feadr->personal))) {
|
||||||
$vcard['fn'] = notags($feadr->personal);
|
|
||||||
|
$personal = imap_mime_header_decode($feadr->personal);
|
||||||
|
$vcard['fn'] = "";
|
||||||
|
foreach($personal as $perspart)
|
||||||
|
if ($perspart->charset != "default")
|
||||||
|
$vcard['fn'] .= iconv($perspart->charset, 'UTF-8//IGNORE', $perspart->text);
|
||||||
|
else
|
||||||
|
$vcard['fn'] .= $perspart->text;
|
||||||
|
|
||||||
|
$vcard['fn'] = notags($vcard['fn']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
7
include/bbcode.php
Executable file → Normal file
7
include/bbcode.php
Executable file → Normal file
|
@ -151,7 +151,7 @@ function bbcode($Text,$preserve_nl = false) {
|
||||||
|
|
||||||
// handle nested lists
|
// handle nested lists
|
||||||
$endlessloop = 0;
|
$endlessloop = 0;
|
||||||
while (strpos($Text, "[/list]") and strpos($Text, "[list") and (++$endlessloop < 20)) {
|
while ((strpos($Text, "[/list]") !== false) and (strpos($Text, "[list") !== false) and (++$endlessloop < 20)) {
|
||||||
$Text = preg_replace("/\[list\](.*?)\[\/list\]/ism", '<ul class="listbullet" style="list-style-type: circle;">$1</ul>' ,$Text);
|
$Text = preg_replace("/\[list\](.*?)\[\/list\]/ism", '<ul class="listbullet" style="list-style-type: circle;">$1</ul>' ,$Text);
|
||||||
$Text = preg_replace("/\[list=\](.*?)\[\/list\]/ism", '<ul class="listnone" style="list-style-type: none;">$1</ul>' ,$Text);
|
$Text = preg_replace("/\[list=\](.*?)\[\/list\]/ism", '<ul class="listnone" style="list-style-type: none;">$1</ul>' ,$Text);
|
||||||
$Text = preg_replace("/\[list=1\](.*?)\[\/list\]/ism", '<ul class="listdecimal" style="list-style-type: decimal;">$1</ul>' ,$Text);
|
$Text = preg_replace("/\[list=1\](.*?)\[\/list\]/ism", '<ul class="listdecimal" style="list-style-type: decimal;">$1</ul>' ,$Text);
|
||||||
|
@ -194,7 +194,7 @@ function bbcode($Text,$preserve_nl = false) {
|
||||||
// Check for [quote] text
|
// Check for [quote] text
|
||||||
// handle nested quotes
|
// handle nested quotes
|
||||||
$endlessloop = 0;
|
$endlessloop = 0;
|
||||||
while (strpos($Text, "[/quote]") !== false and strpos($Text, "[quote]") !== false and (++$endlessloop < 20))
|
while ((strpos($Text, "[/quote]") !== false) and (strpos($Text, "[quote]") !== false) and (++$endlessloop < 20))
|
||||||
$Text = preg_replace("/\[quote\](.*?)\[\/quote\]/ism","$QuoteLayout", $Text);
|
$Text = preg_replace("/\[quote\](.*?)\[\/quote\]/ism","$QuoteLayout", $Text);
|
||||||
|
|
||||||
// Check for [quote=Author] text
|
// Check for [quote=Author] text
|
||||||
|
@ -203,7 +203,7 @@ function bbcode($Text,$preserve_nl = false) {
|
||||||
|
|
||||||
// handle nested quotes
|
// handle nested quotes
|
||||||
$endlessloop = 0;
|
$endlessloop = 0;
|
||||||
while (strpos($Text, "[/quote]") !== false and strpos($Text, "[quote=") !== false and (++$endlessloop < 20))
|
while ((strpos($Text, "[/quote]")!== false) and (strpos($Text, "[quote=") !== false) and (++$endlessloop < 20))
|
||||||
$Text = preg_replace("/\[quote=[\"\']*(.*?)[\"\']*\](.*?)\[\/quote\]/ism",
|
$Text = preg_replace("/\[quote=[\"\']*(.*?)[\"\']*\](.*?)\[\/quote\]/ism",
|
||||||
"<blockquote><strong>" . $t_wrote . "</strong> $2</blockquote>",
|
"<blockquote><strong>" . $t_wrote . "</strong> $2</blockquote>",
|
||||||
$Text);
|
$Text);
|
||||||
|
@ -285,3 +285,4 @@ function bbcode($Text,$preserve_nl = false) {
|
||||||
|
|
||||||
return $Text;
|
return $Text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
require_once("boot.php");
|
require_once("boot.php");
|
||||||
require_once('include/queue_fn.php');
|
require_once('include/queue_fn.php');
|
||||||
|
require_once('include/html2plain.php');
|
||||||
|
|
||||||
function delivery_run($argv, $argc){
|
function delivery_run($argv, $argc){
|
||||||
global $a, $db;
|
global $a, $db;
|
||||||
|
@ -432,9 +433,19 @@ function delivery_run($argv, $argc){
|
||||||
|
|
||||||
if($reply_to)
|
if($reply_to)
|
||||||
$headers .= 'Reply-to: ' . $reply_to . "\n";
|
$headers .= 'Reply-to: ' . $reply_to . "\n";
|
||||||
$headers .= 'Message-id: <' . $it['uri'] . '>' . "\n";
|
|
||||||
|
// for testing purposes: Collect exported mails
|
||||||
|
$file = tempnam("/tmp/friendica/", "mail-out-");
|
||||||
|
file_put_contents($file, json_encode($it));
|
||||||
|
|
||||||
|
$headers .= 'Message-Id: <' . iri2msgid($it['uri']). '>' . "\n";
|
||||||
|
|
||||||
|
//logger("Mail: uri: ".$it['uri']." parent-uri ".$it['parent-uri'], LOGGER_DEBUG);
|
||||||
|
//logger("Mail: Data: ".print_r($it, true), LOGGER_DEBUG);
|
||||||
|
//logger("Mail: Data: ".print_r($it, true), LOGGER_DATA);
|
||||||
|
|
||||||
if($it['uri'] !== $it['parent-uri']) {
|
if($it['uri'] !== $it['parent-uri']) {
|
||||||
$header .= 'References: <' . $it['parent-uri'] . '>' . "\n";
|
$headers .= 'References: <' . iri2msgid($it['parent-uri']) . '>' . "\n";
|
||||||
if(! strlen($it['title'])) {
|
if(! strlen($it['title'])) {
|
||||||
$r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1",
|
$r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1",
|
||||||
dbesc($it['parent-uri'])
|
dbesc($it['parent-uri'])
|
||||||
|
@ -450,13 +461,16 @@ function delivery_run($argv, $argc){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$headers .= 'MIME-Version: 1.0' . "\n";
|
/*$headers .= 'MIME-Version: 1.0' . "\n";
|
||||||
$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n";
|
//$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n";
|
||||||
|
$headers .= 'Content-Type: text/plain; charset=UTF-8' . "\n";
|
||||||
$headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n";
|
$headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n";
|
||||||
$html = prepare_body($it);
|
$html = prepare_body($it);
|
||||||
$message = '<html><body>' . $html . '</body></html>';
|
//$message = '<html><body>' . $html . '</body></html>';
|
||||||
|
$message = html2plain($html);
|
||||||
logger('notifier: email delivery to ' . $addr);
|
logger('notifier: email delivery to ' . $addr);
|
||||||
mail($addr, $subject, $message, $headers);
|
mail($addr, $subject, $message, $headers);*/
|
||||||
|
email_send($addr, $subject, $headers, $it);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
require_once('include/html2plain.php');
|
||||||
|
|
||||||
function email_connect($mailbox,$username,$password) {
|
function email_connect($mailbox,$username,$password) {
|
||||||
if(! function_exists('imap_open'))
|
if(! function_exists('imap_open'))
|
||||||
|
@ -79,15 +80,32 @@ function email_get_msg($mbox,$uid) {
|
||||||
if(! $struc)
|
if(! $struc)
|
||||||
return $ret;
|
return $ret;
|
||||||
|
|
||||||
|
// for testing purposes: Collect imported mails
|
||||||
|
// $file = tempnam("/tmp/friendica2/", "mail-in-");
|
||||||
|
// file_put_contents($file, json_encode($struc));
|
||||||
|
|
||||||
if(! $struc->parts) {
|
if(! $struc->parts) {
|
||||||
$ret['body'] = email_get_part($mbox,$uid,$struc,0);
|
$ret['body'] = email_get_part($mbox,$uid,$struc,0, 'html');
|
||||||
|
|
||||||
|
if (trim($ret['body']) == '')
|
||||||
|
$ret['body'] = email_get_part($mbox,$uid,$struc,0, 'plain');
|
||||||
|
else
|
||||||
|
$ret['body'] = html2bbcode($ret['body']);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
$text = '';
|
||||||
|
$html = '';
|
||||||
foreach($struc->parts as $ptop => $p) {
|
foreach($struc->parts as $ptop => $p) {
|
||||||
$x = email_get_part($mbox,$uid,$p,$ptop + 1);
|
$x = email_get_part($mbox,$uid,$p,$ptop + 1, 'plain');
|
||||||
if($x)
|
if($x) $text .= $x;
|
||||||
$ret['body'] = $x;
|
|
||||||
|
$x = email_get_part($mbox,$uid,$p,$ptop + 1, 'html');
|
||||||
|
if($x) $html .= $x;
|
||||||
}
|
}
|
||||||
|
if (trim($html) != '')
|
||||||
|
$ret['body'] = html2bbcode($html);
|
||||||
|
else
|
||||||
|
$ret['body'] = $text;
|
||||||
}
|
}
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
@ -95,17 +113,21 @@ function email_get_msg($mbox,$uid) {
|
||||||
// At the moment - only return plain/text.
|
// At the moment - only return plain/text.
|
||||||
// Later we'll repackage inline images as data url's and make the HTML safe
|
// Later we'll repackage inline images as data url's and make the HTML safe
|
||||||
|
|
||||||
function email_get_part($mbox,$uid,$p,$partno) {
|
function email_get_part($mbox,$uid,$p,$partno, $subtype) {
|
||||||
// $partno = '1', '2', '2.1', '2.1.3', etc for multipart, 0 if simple
|
// $partno = '1', '2', '2.1', '2.1.3', etc for multipart, 0 if simple
|
||||||
global $htmlmsg,$plainmsg,$charset,$attachments;
|
global $htmlmsg,$plainmsg,$charset,$attachments;
|
||||||
|
|
||||||
echo $partno;
|
//echo $partno."\n";
|
||||||
|
|
||||||
// DECODE DATA
|
// DECODE DATA
|
||||||
$data = ($partno)
|
$data = ($partno)
|
||||||
? @imap_fetchbody($mbox,$uid,$partno, FT_UID|FT_PEEK)
|
? @imap_fetchbody($mbox,$uid,$partno, FT_UID|FT_PEEK)
|
||||||
: @imap_body($mbox,$uid,FT_UID|FT_PEEK);
|
: @imap_body($mbox,$uid,FT_UID|FT_PEEK);
|
||||||
|
|
||||||
|
// for testing purposes: Collect imported mails
|
||||||
|
// $file = tempnam("/tmp/friendica2/", "mail-body-");
|
||||||
|
// file_put_contents($file, $data);
|
||||||
|
|
||||||
// Any part may be encoded, even plain text messages, so check everything.
|
// Any part may be encoded, even plain text messages, so check everything.
|
||||||
if ($p->encoding==4)
|
if ($p->encoding==4)
|
||||||
$data = quoted_printable_decode($data);
|
$data = quoted_printable_decode($data);
|
||||||
|
@ -118,7 +140,7 @@ function email_get_part($mbox,$uid,$p,$partno) {
|
||||||
if ($p->parameters)
|
if ($p->parameters)
|
||||||
foreach ($p->parameters as $x)
|
foreach ($p->parameters as $x)
|
||||||
$params[strtolower($x->attribute)] = $x->value;
|
$params[strtolower($x->attribute)] = $x->value;
|
||||||
if ($p->dparameters)
|
if (isset($p->dparameters) and $p->dparameters)
|
||||||
foreach ($p->dparameters as $x)
|
foreach ($p->dparameters as $x)
|
||||||
$params[strtolower($x->attribute)] = $x->value;
|
$params[strtolower($x->attribute)] = $x->value;
|
||||||
|
|
||||||
|
@ -126,7 +148,7 @@ function email_get_part($mbox,$uid,$p,$partno) {
|
||||||
// Any part with a filename is an attachment,
|
// Any part with a filename is an attachment,
|
||||||
// so an attached text file (type 0) is not mistaken as the message.
|
// so an attached text file (type 0) is not mistaken as the message.
|
||||||
|
|
||||||
if ($params['filename'] || $params['name']) {
|
if ((isset($params['filename']) and $params['filename']) || (isset($params['name']) and $params['name'])) {
|
||||||
// filename may be given as 'Filename' or 'Name' or both
|
// filename may be given as 'Filename' or 'Name' or both
|
||||||
$filename = ($params['filename'])? $params['filename'] : $params['name'];
|
$filename = ($params['filename'])? $params['filename'] : $params['name'];
|
||||||
// filename may be encoded, so see imap_mime_header_decode()
|
// filename may be encoded, so see imap_mime_header_decode()
|
||||||
|
@ -137,9 +159,10 @@ function email_get_part($mbox,$uid,$p,$partno) {
|
||||||
if ($p->type == 0 && $data) {
|
if ($p->type == 0 && $data) {
|
||||||
// Messages may be split in different parts because of inline attachments,
|
// Messages may be split in different parts because of inline attachments,
|
||||||
// so append parts together with blank row.
|
// so append parts together with blank row.
|
||||||
if (strtolower($p->subtype)=='plain')
|
if (strtolower($p->subtype)==$subtype) {
|
||||||
|
$data = iconv($params['charset'], 'UTF-8//IGNORE', $data);
|
||||||
return (trim($data) ."\n\n");
|
return (trim($data) ."\n\n");
|
||||||
else
|
} else
|
||||||
$data = '';
|
$data = '';
|
||||||
|
|
||||||
// $htmlmsg .= $data ."<br><br>";
|
// $htmlmsg .= $data ."<br><br>";
|
||||||
|
@ -156,12 +179,14 @@ function email_get_part($mbox,$uid,$p,$partno) {
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// SUBPART RECURSION
|
// SUBPART RECURSION
|
||||||
if ($p->parts) {
|
if (isset($p->parts) and $p->parts) {
|
||||||
|
$x = "";
|
||||||
foreach ($p->parts as $partno0=>$p2) {
|
foreach ($p->parts as $partno0=>$p2) {
|
||||||
$x = email_get_part($mbox,$uid,$p2,$partno . '.' . ($partno0+1)); // 1.2, 1.2.1, etc.
|
$x .= email_get_part($mbox,$uid,$p2,$partno . '.' . ($partno0+1), $subtype); // 1.2, 1.2.1, etc.
|
||||||
if($x)
|
//if($x)
|
||||||
return $x;
|
// return $x;
|
||||||
}
|
}
|
||||||
|
return $x;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -218,4 +243,51 @@ function email_header_encode($in_str, $charset) {
|
||||||
return $out_str;
|
return $out_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function email_send($addr, $subject, $headers, $item) {
|
||||||
|
//$headers .= 'MIME-Version: 1.0' . "\n";
|
||||||
|
//$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n";
|
||||||
|
//$headers .= 'Content-Type: text/plain; charset=UTF-8' . "\n";
|
||||||
|
//$headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n";
|
||||||
|
|
||||||
|
$part = uniqid("", true);
|
||||||
|
|
||||||
|
$html = prepare_body($item);
|
||||||
|
|
||||||
|
$headers .= "Mime-Version: 1.0\n";
|
||||||
|
$headers .= 'Content-Type: multipart/alternative; boundary="=_'.$part.'"'."\n\n";
|
||||||
|
|
||||||
|
$body = "\n--=_".$part."\n";
|
||||||
|
$body .= "Content-Transfer-Encoding: 8bit\n";
|
||||||
|
$body .= "Content-Type: text/plain; charset=utf-8; format=flowed\n\n";
|
||||||
|
|
||||||
|
$body .= html2plain($html)."\n";
|
||||||
|
|
||||||
|
$body .= "--=_".$part."\n";
|
||||||
|
$body .= "Content-Transfer-Encoding: 8bit\n";
|
||||||
|
$body .= "Content-Type: text/html; charset=utf-8\n\n";
|
||||||
|
|
||||||
|
$body .= '<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">'.$html."</body></html>\n";
|
||||||
|
|
||||||
|
$body .= "--=_".$part."--";
|
||||||
|
|
||||||
|
//$message = '<html><body>' . $html . '</body></html>';
|
||||||
|
//$message = html2plain($html);
|
||||||
|
logger('notifier: email delivery to ' . $addr);
|
||||||
|
mail($addr, $subject, $body, $headers);
|
||||||
|
}
|
||||||
|
|
||||||
|
function iri2msgid($iri) {
|
||||||
|
if (!strpos($iri, "@"))
|
||||||
|
$msgid = preg_replace("/urn:(\S+):(\S+)\.(\S+):(\d+):(\S+)/i", "urn!$1!$4!$5@$2.$3", $iri);
|
||||||
|
else
|
||||||
|
$msgid = $iri;
|
||||||
|
return($msgid);
|
||||||
|
}
|
||||||
|
|
||||||
|
function msgid2iri($msgid) {
|
||||||
|
if (strpos($msgid, "@"))
|
||||||
|
$iri = preg_replace("/urn!(\S+)!(\d+)!(\S+)@(\S+)\.(\S+)/i", "urn:$1:$4.$5:$2:$3", $msgid);
|
||||||
|
else
|
||||||
|
$iri = $msgid;
|
||||||
|
return($iri);
|
||||||
|
}
|
||||||
|
|
|
@ -258,7 +258,7 @@ function html2bbcode($message)
|
||||||
"[hr]\n",
|
"[hr]\n",
|
||||||
"\n[list",
|
"\n[list",
|
||||||
"[/list]\n",
|
"[/list]\n",
|
||||||
"\n[/list]",
|
"\n[/",
|
||||||
"[list]\n",
|
"[list]\n",
|
||||||
"[list=1]\n",
|
"[list=1]\n",
|
||||||
"\n[*]"),
|
"\n[*]"),
|
||||||
|
@ -268,7 +268,7 @@ function html2bbcode($message)
|
||||||
"[hr]",
|
"[hr]",
|
||||||
"[list",
|
"[list",
|
||||||
"[/list]",
|
"[/list]",
|
||||||
"[/list]",
|
"[/",
|
||||||
"[list]",
|
"[list]",
|
||||||
"[list=1]",
|
"[list=1]",
|
||||||
"[*]"),
|
"[*]"),
|
||||||
|
|
180
include/html2plain.php
Normal file
180
include/html2plain.php
Normal file
|
@ -0,0 +1,180 @@
|
||||||
|
<?php
|
||||||
|
require_once "html2bbcode.php";
|
||||||
|
|
||||||
|
function breaklines($line, $level)
|
||||||
|
{
|
||||||
|
$wraplen = 75-$level;
|
||||||
|
|
||||||
|
$newlines = array();
|
||||||
|
|
||||||
|
do {
|
||||||
|
$oldline = $line;
|
||||||
|
|
||||||
|
$subline = substr($line, 0, $wraplen);
|
||||||
|
|
||||||
|
$pos = strrpos($subline, ' ');
|
||||||
|
|
||||||
|
if ($pos == 0)
|
||||||
|
$pos = strpos($line, ' ');
|
||||||
|
|
||||||
|
if (($pos > 0) and strlen($line) > $wraplen) {
|
||||||
|
$newline = trim(substr($line, 0, $pos));
|
||||||
|
if ($level > 0)
|
||||||
|
$newline = str_repeat(">", $level).' '.$newline;
|
||||||
|
|
||||||
|
$newlines[] = $newline." ";
|
||||||
|
$line = substr($line, $pos+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
} while ((strlen($line) > $wraplen) and !($oldline == $line));
|
||||||
|
|
||||||
|
if ($level > 0)
|
||||||
|
$line = str_repeat(">", $level).' '.$line;
|
||||||
|
|
||||||
|
$newlines[] = $line;
|
||||||
|
|
||||||
|
|
||||||
|
return(implode($newlines, "\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
function quotelevel($message)
|
||||||
|
{
|
||||||
|
$lines = explode("\n", $message);
|
||||||
|
|
||||||
|
$newlines = array();
|
||||||
|
$level = 0;
|
||||||
|
foreach($lines as $line) {;
|
||||||
|
$line = trim($line);
|
||||||
|
$startquote = false;
|
||||||
|
while (strpos("*".$line, '[quote]') > 0) {
|
||||||
|
$level++;
|
||||||
|
$pos = strpos($line, '[quote]');
|
||||||
|
$line = substr($line, 0, $pos).substr($line, $pos+7);
|
||||||
|
$startquote = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$currlevel = $level;
|
||||||
|
|
||||||
|
while (strpos("*".$line, '[/quote]') > 0) {
|
||||||
|
$level--;
|
||||||
|
if ($level < 0)
|
||||||
|
$level = 0;
|
||||||
|
|
||||||
|
$pos = strpos($line, '[/quote]');
|
||||||
|
$line = substr($line, 0, $pos).substr($line, $pos+8);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$startquote or ($line != ''))
|
||||||
|
$newlines[] = breaklines($line, $currlevel);
|
||||||
|
}
|
||||||
|
return(implode($newlines, "\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
function html2plain($html)
|
||||||
|
{
|
||||||
|
global $lang;
|
||||||
|
|
||||||
|
$message = str_replace("\r", "", $html);
|
||||||
|
|
||||||
|
$doc = new DOMDocument();
|
||||||
|
$doc->preserveWhiteSpace = false;
|
||||||
|
|
||||||
|
$message = mb_convert_encoding($message, 'HTML-ENTITIES', "UTF-8");
|
||||||
|
|
||||||
|
@$doc->loadHTML($message);
|
||||||
|
|
||||||
|
$xpath = new DomXPath($doc);
|
||||||
|
$list = $xpath->query("//pre");
|
||||||
|
foreach ($list as $node) {
|
||||||
|
$node->nodeValue = str_replace("\n", "\r", $node->nodeValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
$message = $doc->saveHTML();
|
||||||
|
$message = str_replace(array("\n<", ">\n", "\r", "\n", "\xC3\x82\xC2\xA0"), array("<", ">", "<br>", " ", ""), $message);
|
||||||
|
$message = preg_replace('= [\s]*=i', " ", $message);
|
||||||
|
|
||||||
|
// nach <a href="...">...</a> suchen, die ... miteinander vergleichen und bei Gleichheit durch ein einzelnes ... ersetzen.
|
||||||
|
$pattern = '/<a.*?href="(.*?)".*?>(.*?)<\/a>/is';
|
||||||
|
preg_match_all($pattern, $message, $result, PREG_SET_ORDER);
|
||||||
|
|
||||||
|
foreach ($result as $treffer) {
|
||||||
|
if ($treffer[1] == $treffer[2]) {
|
||||||
|
$search = '<a href="'.$treffer[1].'" target="_blank">'.$treffer[1].'</a>';
|
||||||
|
$message = str_replace($search, $treffer[1], $message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@$doc->loadHTML($message);
|
||||||
|
|
||||||
|
node2bbcode($doc, 'html', array(), '', '');
|
||||||
|
node2bbcode($doc, 'body', array(), '', '');
|
||||||
|
|
||||||
|
// MyBB-Auszeichnungen
|
||||||
|
node2bbcode($doc, 'span', array('style'=>'text-decoration: underline;'), '_', '_');
|
||||||
|
node2bbcode($doc, 'span', array('style'=>'font-style: italic;'), '/', '/');
|
||||||
|
node2bbcode($doc, 'span', array('style'=>'font-weight: bold;'), '*', '*');
|
||||||
|
|
||||||
|
node2bbcode($doc, 'strong', array(), '*', '*');
|
||||||
|
node2bbcode($doc, 'b', array(), '*', '*');
|
||||||
|
node2bbcode($doc, 'i', array(), '/', '/');
|
||||||
|
node2bbcode($doc, 'u', array(), '_', '_');
|
||||||
|
|
||||||
|
node2bbcode($doc, 'blockquote', array(), '[quote]', "[/quote]\n");
|
||||||
|
|
||||||
|
node2bbcode($doc, 'br', array(), "\n", '');
|
||||||
|
|
||||||
|
node2bbcode($doc, 'span', array(), "", "");
|
||||||
|
node2bbcode($doc, 'pre', array(), "", "");
|
||||||
|
node2bbcode($doc, 'div', array(), "\r", "\r");
|
||||||
|
node2bbcode($doc, 'p', array(), "\n", "\n");
|
||||||
|
|
||||||
|
//node2bbcode($doc, 'ul', array(), "\n[list]", "[/list]\n");
|
||||||
|
//node2bbcode($doc, 'ol', array(), "\n[list=1]", "[/list]\n");
|
||||||
|
node2bbcode($doc, 'li', array(), "\n* ", "\n");
|
||||||
|
|
||||||
|
node2bbcode($doc, 'hr', array(), str_repeat("-", 70), "");
|
||||||
|
|
||||||
|
node2bbcode($doc, 'tr', array(), "\n", "");
|
||||||
|
node2bbcode($doc, 'td', array(), "\t", "");
|
||||||
|
|
||||||
|
node2bbcode($doc, 'h1', array(), "\n\n*", "*\n");
|
||||||
|
node2bbcode($doc, 'h2', array(), "\n\n*", "*\n");
|
||||||
|
node2bbcode($doc, 'h3', array(), "\n\n*", "*\n");
|
||||||
|
node2bbcode($doc, 'h4', array(), "\n\n*", "*\n");
|
||||||
|
node2bbcode($doc, 'h5', array(), "\n\n*", "*\n");
|
||||||
|
node2bbcode($doc, 'h6', array(), "\n\n*", "*\n");
|
||||||
|
|
||||||
|
node2bbcode($doc, 'a', array('href'=>'/(.+)/'), ' $1', '', true);
|
||||||
|
node2bbcode($doc, 'img', array('alt'=>'/(.+)/'), '$1', '');
|
||||||
|
node2bbcode($doc, 'img', array('title'=>'/(.+)/'), '$1', '');
|
||||||
|
node2bbcode($doc, 'img', array(), '', '');
|
||||||
|
node2bbcode($doc, 'img', array('src'=>'/(.+)/'), '[img]$1', '[/img]');
|
||||||
|
|
||||||
|
$message = $doc->saveHTML();
|
||||||
|
|
||||||
|
$message = str_replace("[img]", "", $message);
|
||||||
|
$message = str_replace("[/img]", "", $message);
|
||||||
|
|
||||||
|
// was ersetze ich da?
|
||||||
|
// Irgendein stoerrisches UTF-Zeug
|
||||||
|
$message = str_replace(chr(194).chr(160), ' ', $message);
|
||||||
|
|
||||||
|
$message = str_replace(" ", " ", $message);
|
||||||
|
|
||||||
|
// Aufeinanderfolgende DIVs
|
||||||
|
$message = preg_replace('=\r *\r=i', "\n", $message);
|
||||||
|
$message = str_replace("\r", "\n", $message);
|
||||||
|
|
||||||
|
$message = strip_tags($message);
|
||||||
|
|
||||||
|
$message = html_entity_decode($message, ENT_QUOTES, 'UTF-8');
|
||||||
|
|
||||||
|
do {
|
||||||
|
$oldmessage = $message;
|
||||||
|
$message = str_replace("\n\n\n", "\n\n", $message);
|
||||||
|
} while ($oldmessage != $message);
|
||||||
|
|
||||||
|
$message = quotelevel(trim($message));
|
||||||
|
|
||||||
|
return(trim($message));
|
||||||
|
}
|
||||||
|
?>
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
require_once("boot.php");
|
require_once("boot.php");
|
||||||
require_once('include/queue_fn.php');
|
require_once('include/queue_fn.php');
|
||||||
|
require_once('include/html2plain.php');
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This file was at one time responsible for doing all deliveries, but this caused
|
* This file was at one time responsible for doing all deliveries, but this caused
|
||||||
|
@ -646,10 +647,14 @@ function notifier_run($argv, $argc){
|
||||||
if($reply_to)
|
if($reply_to)
|
||||||
$headers .= 'Reply-to: ' . $reply_to . "\n";
|
$headers .= 'Reply-to: ' . $reply_to . "\n";
|
||||||
|
|
||||||
$headers .= 'Message-id: <' . $it['uri'] . '>' . "\n";
|
// for testing purposes: Collect exported mails
|
||||||
|
$file = tempnam("/tmp/friendica/", "mail-out2-");
|
||||||
|
file_put_contents($file, json_encode($it));
|
||||||
|
|
||||||
|
$headers .= 'Message-Id: <' . iri2msgid($it['uri']) . '>' . "\n";
|
||||||
|
|
||||||
if($it['uri'] !== $it['parent-uri']) {
|
if($it['uri'] !== $it['parent-uri']) {
|
||||||
$header .= 'References: <' . $it['parent-uri'] . '>' . "\n";
|
$headers .= 'References: <' . iri2msgid($it['parent-uri']) . '>' . "\n";
|
||||||
if(! strlen($it['title'])) {
|
if(! strlen($it['title'])) {
|
||||||
$r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1",
|
$r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1",
|
||||||
dbesc($it['parent-uri'])
|
dbesc($it['parent-uri'])
|
||||||
|
@ -666,13 +671,16 @@ function notifier_run($argv, $argc){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$headers .= 'MIME-Version: 1.0' . "\n";
|
/*$headers .= 'MIME-Version: 1.0' . "\n";
|
||||||
$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n";
|
//$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n";
|
||||||
|
$headers .= 'Content-Type: text/plain; charset=UTF-8' . "\n";
|
||||||
$headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n";
|
$headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n";
|
||||||
$html = prepare_body($it);
|
$html = prepare_body($it);
|
||||||
$message = '<html><body>' . $html . '</body></html>';
|
//$message = '<html><body>' . $html . '</body></html>';
|
||||||
|
$message = html2plain($html);
|
||||||
logger('notifier: email delivery to ' . $addr);
|
logger('notifier: email delivery to ' . $addr);
|
||||||
mail($addr, $subject, $message, $headers);
|
mail($addr, $subject, $message, $headers);*/
|
||||||
|
email_send($addr, $subject, $headers, $it);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case NETWORK_DIASPORA:
|
case NETWORK_DIASPORA:
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
require_once("boot.php");
|
require_once("boot.php");
|
||||||
|
require_once("include/quoteconvert.php");
|
||||||
|
|
||||||
|
|
||||||
function poller_run($argv, $argc){
|
function poller_run($argv, $argc){
|
||||||
|
@ -419,13 +420,13 @@ function poller_run($argv, $argc){
|
||||||
// look for a 'references' header and try and match with a parent item we have locally.
|
// look for a 'references' header and try and match with a parent item we have locally.
|
||||||
|
|
||||||
$raw_refs = ((x($headers,'references')) ? str_replace("\t",'',$headers['references']) : '');
|
$raw_refs = ((x($headers,'references')) ? str_replace("\t",'',$headers['references']) : '');
|
||||||
$datarray['uri'] = trim($meta->message_id,'<>');
|
$datarray['uri'] = msgid2iri(trim($meta->message_id,'<>'));
|
||||||
|
|
||||||
if($raw_refs) {
|
if($raw_refs) {
|
||||||
$refs_arr = explode(' ', $raw_refs);
|
$refs_arr = explode(' ', $raw_refs);
|
||||||
if(count($refs_arr)) {
|
if(count($refs_arr)) {
|
||||||
for($x = 0; $x < count($refs_arr); $x ++)
|
for($x = 0; $x < count($refs_arr); $x ++)
|
||||||
$refs_arr[$x] = "'" . str_replace(array('<','>',' '),array('','',''),dbesc($refs_arr[$x])) . "'";
|
$refs_arr[$x] = "'" . msgid2iri(str_replace(array('<','>',' '),array('','',''),dbesc($refs_arr[$x]))) . "'";
|
||||||
}
|
}
|
||||||
$qstr = implode(',',$refs_arr);
|
$qstr = implode(',',$refs_arr);
|
||||||
$r = q("SELECT `uri` , `parent-uri` FROM `item` WHERE `uri` IN ( $qstr ) AND `uid` = %d LIMIT 1",
|
$r = q("SELECT `uri` , `parent-uri` FROM `item` WHERE `uri` IN ( $qstr ) AND `uid` = %d LIMIT 1",
|
||||||
|
@ -453,9 +454,39 @@ function poller_run($argv, $argc){
|
||||||
intval($r[0]['id'])
|
intval($r[0]['id'])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
switch ($mailconf[0]['action']) {
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
logger("Mail: Deleting ".$msg_uid);
|
||||||
|
imap_delete($mbox, $msg_uid, FT_UID);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
logger("Mail: Mark as seen ".$msg_uid);
|
||||||
|
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
logger("Mail: Moving ".$msg_uid." to ".$mailconf[0]['movetofolder']);
|
||||||
|
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
|
||||||
|
if ($mailconf[0]['movetofolder'] != "")
|
||||||
|
imap_mail_move($mbox, $msg_uid, $mailconf[0]['movetofolder'], FT_UID);
|
||||||
|
break;
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$datarray['title'] = notags(trim($meta->subject));
|
|
||||||
|
// Decoding the header
|
||||||
|
$subject = imap_mime_header_decode($meta->subject);
|
||||||
|
$datarray['title'] = "";
|
||||||
|
foreach($subject as $subpart)
|
||||||
|
if ($subpart->charset != "default")
|
||||||
|
$datarray['title'] .= iconv($subpart->charset, 'UTF-8//IGNORE', $subpart->text);
|
||||||
|
else
|
||||||
|
$datarray['title'] .= $subpart->text;
|
||||||
|
|
||||||
|
$datarray['title'] = notags(trim($datarray['title']));
|
||||||
|
|
||||||
|
//$datarray['title'] = notags(trim($meta->subject));
|
||||||
$datarray['created'] = datetime_convert('UTC','UTC',$meta->date);
|
$datarray['created'] = datetime_convert('UTC','UTC',$meta->date);
|
||||||
|
|
||||||
$r = email_get_msg($mbox,$msg_uid);
|
$r = email_get_msg($mbox,$msg_uid);
|
||||||
|
@ -463,15 +494,24 @@ function poller_run($argv, $argc){
|
||||||
logger("Mail: can't fetch msg ".$msg_uid);
|
logger("Mail: can't fetch msg ".$msg_uid);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$datarray['body'] = escape_tags($r['body']);
|
$datarray['body'] = escape_tags(convertquote($r['body'], false));
|
||||||
|
|
||||||
logger("Mail: Importing ".$msg_uid);
|
logger("Mail: Importing ".$msg_uid);
|
||||||
|
|
||||||
// some mailing lists have the original author as 'from' - add this sender info to msg body.
|
// some mailing lists have the original author as 'from' - add this sender info to msg body.
|
||||||
// todo: adding a gravatar for the original author would be cool
|
// todo: adding a gravatar for the original author would be cool
|
||||||
|
|
||||||
if(! stristr($meta->from,$contact['addr']))
|
if(! stristr($meta->from,$contact['addr'])) {
|
||||||
$datarray['body'] = t('From: ') . escape_tags($meta->from) . "\n\n" . $datarray['body'];
|
$from = imap_mime_header_decode($meta->from);
|
||||||
|
$fromdecoded = "";
|
||||||
|
foreach($from as $frompart)
|
||||||
|
if ($frompart->charset != "default")
|
||||||
|
$fromdecoded .= iconv($frompart->charset, 'UTF-8//IGNORE', $frompart->text);
|
||||||
|
else
|
||||||
|
$fromdecoded .= $frompart->text;
|
||||||
|
|
||||||
|
$datarray['body'] = "[b]".t('From: ') . escape_tags($fromdecoded) . "[/b]\n\n" . $datarray['body'];
|
||||||
|
}
|
||||||
|
|
||||||
$datarray['uid'] = $importer_uid;
|
$datarray['uid'] = $importer_uid;
|
||||||
$datarray['contact-id'] = $contact['id'];
|
$datarray['contact-id'] = $contact['id'];
|
||||||
|
@ -493,6 +533,24 @@ function poller_run($argv, $argc){
|
||||||
q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1",
|
q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1",
|
||||||
intval($stored_item)
|
intval($stored_item)
|
||||||
);
|
);
|
||||||
|
switch ($mailconf[0]['action']) {
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
logger("Mail: Deleting ".$msg_uid);
|
||||||
|
imap_delete($mbox, $msg_uid, FT_UID);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
logger("Mail: Mark as seen ".$msg_uid);
|
||||||
|
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
logger("Mail: Moving ".$msg_uid." to ".$mailconf[0]['movetofolder']);
|
||||||
|
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
|
||||||
|
if ($mailconf[0]['movetofolder'] != "")
|
||||||
|
imap_mail_move($mbox, $msg_uid, $mailconf[0]['movetofolder'], FT_UID);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
132
include/quoteconvert.php
Normal file
132
include/quoteconvert.php
Normal file
|
@ -0,0 +1,132 @@
|
||||||
|
<?php
|
||||||
|
function convertquote($body, $reply)
|
||||||
|
{
|
||||||
|
// Convert Quotes
|
||||||
|
$arrbody = explode("\n", trim($body));
|
||||||
|
$arrlevel = array();
|
||||||
|
|
||||||
|
for ($i = 0; $i < count($arrbody); $i++) {
|
||||||
|
$quotelevel = 0;
|
||||||
|
$quoteline = $arrbody[$i];
|
||||||
|
|
||||||
|
while ((strlen($quoteline)>0) and ((substr($quoteline, 0, 1) == '>')
|
||||||
|
or (substr($quoteline, 0, 1) == ' '))) {
|
||||||
|
if (substr($quoteline, 0, 1) == '>')
|
||||||
|
$quotelevel++;
|
||||||
|
|
||||||
|
$quoteline = ltrim(substr($quoteline, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
//echo $quotelevel.'*'.$quoteline."\r\n";
|
||||||
|
|
||||||
|
$arrlevel[$i] = $quotelevel;
|
||||||
|
$arrbody[$i] = $quoteline;
|
||||||
|
}
|
||||||
|
|
||||||
|
$quotelevel = 0;
|
||||||
|
$previousquote = 0;
|
||||||
|
$arrbodyquoted = array();
|
||||||
|
|
||||||
|
for ($i = 0; $i < count($arrbody); $i++) {
|
||||||
|
|
||||||
|
$previousquote = $quotelevel;
|
||||||
|
$quotelevel = $arrlevel[$i];
|
||||||
|
$currline = $arrbody[$i];
|
||||||
|
|
||||||
|
while ($previousquote < $quotelevel) {
|
||||||
|
if ($sender != '') {
|
||||||
|
$quote = "[quote title=$sender]";
|
||||||
|
$sender = '';
|
||||||
|
} else
|
||||||
|
$quote = "[quote]";
|
||||||
|
|
||||||
|
$arrbody[$i] = $quote.$arrbody[$i];
|
||||||
|
$previousquote++;
|
||||||
|
}
|
||||||
|
|
||||||
|
while ($previousquote > $quotelevel) {
|
||||||
|
$arrbody[$i] = '[/quote]'.$arrbody[$i];
|
||||||
|
$previousquote--;
|
||||||
|
}
|
||||||
|
|
||||||
|
$arrbodyquoted[] = $arrbody[$i];
|
||||||
|
}
|
||||||
|
while ($quotelevel > 0) {
|
||||||
|
$arrbodyquoted[] = '[/quote]';
|
||||||
|
$quotelevel--;
|
||||||
|
}
|
||||||
|
|
||||||
|
$body = implode("\n", $arrbodyquoted);
|
||||||
|
|
||||||
|
if (strlen($body) > 0)
|
||||||
|
$body = $body."\n\n";
|
||||||
|
|
||||||
|
if ($reply)
|
||||||
|
$body = removetofu($body);
|
||||||
|
|
||||||
|
return($body);
|
||||||
|
}
|
||||||
|
|
||||||
|
function removetofu($message)
|
||||||
|
{
|
||||||
|
$message = trim($message);
|
||||||
|
|
||||||
|
do {
|
||||||
|
$oldmessage = $message;
|
||||||
|
$message = preg_replace('=\[/quote\][\s](.*?)\[quote\]=i', '$1', $message);
|
||||||
|
$message = str_replace("[/quote][quote]", "", $message);
|
||||||
|
} while ($message != $oldmessage);
|
||||||
|
|
||||||
|
$quotes = array();
|
||||||
|
|
||||||
|
$startquotes = 0;
|
||||||
|
|
||||||
|
$start = 0;
|
||||||
|
|
||||||
|
while(($pos = strpos($message, '[quote', $start)) > 0) {
|
||||||
|
$quotes[$pos] = -1;
|
||||||
|
$start = $pos + 7;
|
||||||
|
$startquotes++;
|
||||||
|
}
|
||||||
|
|
||||||
|
$endquotes = 0;
|
||||||
|
$start = 0;
|
||||||
|
|
||||||
|
while(($pos = strpos($message, '[/quote]', $start)) > 0) {
|
||||||
|
$start = $pos + 7;
|
||||||
|
$endquotes++;
|
||||||
|
}
|
||||||
|
|
||||||
|
while ($endquotes < $startquotes) {
|
||||||
|
$message .= '[/quote]';
|
||||||
|
++$endquotes;
|
||||||
|
}
|
||||||
|
|
||||||
|
$start = 0;
|
||||||
|
|
||||||
|
while(($pos = strpos($message, '[/quote]', $start)) > 0) {
|
||||||
|
$quotes[$pos] = 1;
|
||||||
|
$start = $pos + 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strtolower(substr($message, -8)) != '[/quote]')
|
||||||
|
return($message);
|
||||||
|
|
||||||
|
krsort($quotes);
|
||||||
|
|
||||||
|
$quotelevel = 0;
|
||||||
|
$quotestart = 0;
|
||||||
|
foreach ($quotes as $index => $quote) {
|
||||||
|
$quotelevel += $quote;
|
||||||
|
|
||||||
|
if (($quotelevel == 0) and ($quotestart == 0))
|
||||||
|
$quotestart = $index;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($quotestart != 0) {
|
||||||
|
$message = trim(substr($message, 0, $quotestart))."\n[collapsed]\n".substr($message, $quotestart+7, -8).'[/collapsed]';
|
||||||
|
}
|
||||||
|
|
||||||
|
return($message);
|
||||||
|
}
|
||||||
|
?>
|
|
@ -115,6 +115,8 @@ function settings_post(&$a) {
|
||||||
$mail_ssl = ((x($_POST,'mail_ssl')) ? strtolower(trim($_POST['mail_ssl'])) : '');
|
$mail_ssl = ((x($_POST,'mail_ssl')) ? strtolower(trim($_POST['mail_ssl'])) : '');
|
||||||
$mail_user = ((x($_POST,'mail_user')) ? $_POST['mail_user'] : '');
|
$mail_user = ((x($_POST,'mail_user')) ? $_POST['mail_user'] : '');
|
||||||
$mail_pass = ((x($_POST,'mail_pass')) ? trim($_POST['mail_pass']) : '');
|
$mail_pass = ((x($_POST,'mail_pass')) ? trim($_POST['mail_pass']) : '');
|
||||||
|
$mail_action = ((x($_POST,'mail_action')) ? trim($_POST['mail_action']) : '');
|
||||||
|
$mail_movetofolder = ((x($_POST,'mail_movetofolder')) ? trim($_POST['mail_movetofolder']) : '');
|
||||||
$mail_replyto = ((x($_POST,'mail_replyto')) ? $_POST['mail_replyto'] : '');
|
$mail_replyto = ((x($_POST,'mail_replyto')) ? $_POST['mail_replyto'] : '');
|
||||||
$mail_pubmail = ((x($_POST,'mail_pubmail')) ? $_POST['mail_pubmail'] : '');
|
$mail_pubmail = ((x($_POST,'mail_pubmail')) ? $_POST['mail_pubmail'] : '');
|
||||||
|
|
||||||
|
@ -142,11 +144,14 @@ function settings_post(&$a) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
$r = q("UPDATE `mailacct` SET `server` = '%s', `port` = %d, `ssltype` = '%s', `user` = '%s',
|
$r = q("UPDATE `mailacct` SET `server` = '%s', `port` = %d, `ssltype` = '%s', `user` = '%s',
|
||||||
|
`action` = %d, `movetofolder` = '%s',
|
||||||
`mailbox` = 'INBOX', `reply_to` = '%s', `pubmail` = %d WHERE `uid` = %d LIMIT 1",
|
`mailbox` = 'INBOX', `reply_to` = '%s', `pubmail` = %d WHERE `uid` = %d LIMIT 1",
|
||||||
dbesc($mail_server),
|
dbesc($mail_server),
|
||||||
intval($mail_port),
|
intval($mail_port),
|
||||||
dbesc($mail_ssl),
|
dbesc($mail_ssl),
|
||||||
dbesc($mail_user),
|
dbesc($mail_user),
|
||||||
|
intval($mail_action),
|
||||||
|
dbesc($mail_movetofolder),
|
||||||
dbesc($mail_replyto),
|
dbesc($mail_replyto),
|
||||||
intval($mail_pubmail),
|
intval($mail_pubmail),
|
||||||
intval(local_user())
|
intval(local_user())
|
||||||
|
@ -567,6 +572,8 @@ function settings_content(&$a) {
|
||||||
$mail_user = ((count($r)) ? $r[0]['user'] : '');
|
$mail_user = ((count($r)) ? $r[0]['user'] : '');
|
||||||
$mail_replyto = ((count($r)) ? $r[0]['reply_to'] : '');
|
$mail_replyto = ((count($r)) ? $r[0]['reply_to'] : '');
|
||||||
$mail_pubmail = ((count($r)) ? $r[0]['pubmail'] : 0);
|
$mail_pubmail = ((count($r)) ? $r[0]['pubmail'] : 0);
|
||||||
|
$mail_action = ((count($r)) ? $r[0]['action'] : 0);
|
||||||
|
$mail_movetofolder = ((count($r)) ? $r[0]['movetofolder'] : '');
|
||||||
$mail_chk = ((count($r)) ? $r[0]['last_check'] : '0000-00-00 00:00:00');
|
$mail_chk = ((count($r)) ? $r[0]['last_check'] : '0000-00-00 00:00:00');
|
||||||
|
|
||||||
|
|
||||||
|
@ -589,6 +596,8 @@ function settings_content(&$a) {
|
||||||
'$mail_pass' => array('mail_pass', t('Email password:'), '', ''),
|
'$mail_pass' => array('mail_pass', t('Email password:'), '', ''),
|
||||||
'$mail_replyto' => array('mail_replyto', t('Reply-to address:'), '', 'Optional'),
|
'$mail_replyto' => array('mail_replyto', t('Reply-to address:'), '', 'Optional'),
|
||||||
'$mail_pubmail' => array('mail_pubmail', t('Send public posts to all email contacts:'), $mail_pubmail, ''),
|
'$mail_pubmail' => array('mail_pubmail', t('Send public posts to all email contacts:'), $mail_pubmail, ''),
|
||||||
|
'$mail_action' => array('mail_action', t('Action after import:'), $mail_action, '', array(0=>t('None'), 1=>t('Delete'), 2=>t('Mark as seen'), 3=>t('Move to folder'))),
|
||||||
|
'$mail_movetofolder' => array('mail_movetofolder', t('Move to folder:'), $mail_movetofolder, ''),
|
||||||
'$submit' => t('Submit'),
|
'$submit' => t('Submit'),
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
define( 'UPDATE_VERSION' , 1126 );
|
define( 'UPDATE_VERSION' , 1127 );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -1090,3 +1090,7 @@ function update_1125() {
|
||||||
) ENGINE = MyISAM DEFAULT CHARSET=utf8");
|
) ENGINE = MyISAM DEFAULT CHARSET=utf8");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function update_1126() {
|
||||||
|
q("ALTER TABLE `mailacct` ADD `action` INT NOT NULL AFTER `pass`,
|
||||||
|
ADD `movetofolder` CHAR(255) NOT NULL AFTER `action`");
|
||||||
|
}
|
||||||
|
|
|
@ -23,6 +23,8 @@ $settings_connectors
|
||||||
{{inc field_password.tpl with $field=$mail_pass }}{{endinc}}
|
{{inc field_password.tpl with $field=$mail_pass }}{{endinc}}
|
||||||
{{inc field_input.tpl with $field=$mail_replyto }}{{endinc}}
|
{{inc field_input.tpl with $field=$mail_replyto }}{{endinc}}
|
||||||
{{inc field_checkbox.tpl with $field=$mail_pubmail }}{{endinc}}
|
{{inc field_checkbox.tpl with $field=$mail_pubmail }}{{endinc}}
|
||||||
|
{{inc field_select.tpl with $field=$mail_action }}{{endinc}}
|
||||||
|
{{inc field_input.tpl with $field=$mail_movetofolder }}{{endinc}}
|
||||||
|
|
||||||
<div class="settings-submit-wrapper" >
|
<div class="settings-submit-wrapper" >
|
||||||
<input type="submit" id="imap-submit" name="imap-submit" class="settings-submit" value="$submit" />
|
<input type="submit" id="imap-submit" name="imap-submit" class="settings-submit" value="$submit" />
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
// Quattro Theme LESS file
|
// Quattro Theme LESS file
|
||||||
|
|
||||||
// "Echo" palette from Inkscape
|
// "Echo" palette from Inkscape
|
||||||
|
@Yellow1 : #fce94f;
|
||||||
@Blue1:rgb(25,174,255);
|
@Blue1:rgb(25,174,255);
|
||||||
@Blue2:rgb(0,132,200);
|
@Blue2:rgb(0,132,200);
|
||||||
@Blue3:rgb(0,92,148);
|
@Blue3:rgb(0,92,148);
|
||||||
|
@ -71,6 +72,7 @@
|
||||||
@NoticeBackgroundColor: #511919;
|
@NoticeBackgroundColor: #511919;
|
||||||
|
|
||||||
@ThreadBackgroundColor: #f6f7f8;
|
@ThreadBackgroundColor: #f6f7f8;
|
||||||
|
@ShinyBorderColor: @Yellow1;
|
||||||
|
|
||||||
@CommentBoxEmptyColor: @Grey3;
|
@CommentBoxEmptyColor: @Grey3;
|
||||||
@CommentBoxEmptyBorderColor: @Grey3;
|
@CommentBoxEmptyBorderColor: @Grey3;
|
||||||
|
@ -91,4 +93,4 @@
|
||||||
@JotPermissionUnlockBackgroundColor: @Grey2;
|
@JotPermissionUnlockBackgroundColor: @Grey2;
|
||||||
@JotPermissionLockBackgroundColor: @Grey4;
|
@JotPermissionLockBackgroundColor: @Grey4;
|
||||||
@JotLoadingBackgroundColor: @Grey1;
|
@JotLoadingBackgroundColor: @Grey1;
|
||||||
|
@JotPreviewBackgroundColor: @Yellow1;
|
||||||
|
|
|
@ -13,6 +13,11 @@
|
||||||
&.link { background-image: url("../../../images/icons/@{size}/link.png"); }
|
&.link { background-image: url("../../../images/icons/@{size}/link.png"); }
|
||||||
&.lock { background-image: url("../../../images/icons/@{size}/lock.png"); }
|
&.lock { background-image: url("../../../images/icons/@{size}/lock.png"); }
|
||||||
&.unlock { background-image: url("../../../images/icons/@{size}/unlock.png"); }
|
&.unlock { background-image: url("../../../images/icons/@{size}/unlock.png"); }
|
||||||
|
&.type-unkn { background-image: url("../../../images/icons/@{size}/zip.png"); }
|
||||||
|
&.type-audio{ background-image: url("../../../images/icons/@{size}/audio.png"); }
|
||||||
|
&.type-video{ background-image: url("../../../images/icons/@{size}/video.png"); }
|
||||||
|
&.type-image{ background-image: url("../../../images/icons/@{size}/image.png"); }
|
||||||
|
&.type-text { background-image: url("../../../images/icons/@{size}/text.png"); }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
/* global */
|
/* global */
|
||||||
body {
|
body {
|
||||||
font-family: Liberation Sans,helvetica,arial,clean,sans-serif;
|
font-family: Liberation Sans,helvetica,arial,clean,sans-serif;
|
||||||
font-size: 10px;
|
font-size: 11px;
|
||||||
background-color: @BodyBackground;
|
background-color: @BodyBackground;
|
||||||
color: @BodyColor;
|
color: @BodyColor;
|
||||||
margin: 50px 0px 0px 0px;
|
margin: 50px 0px 0px 0px;
|
||||||
|
@ -44,6 +44,9 @@ a:hover {color: @LinkHover; text-decoration: underline; }
|
||||||
.hidden { display: none; }
|
.hidden { display: none; }
|
||||||
.clear { clear: both; }
|
.clear { clear: both; }
|
||||||
|
|
||||||
|
.fakelink { color: @Link; text-decoration: none; cursor:pointer; }
|
||||||
|
.fakelink:hover { color: @LinkHover; text-decoration: underline; }
|
||||||
|
|
||||||
code {
|
code {
|
||||||
font-family: Courier, monospace;
|
font-family: Courier, monospace;
|
||||||
white-space: pre;
|
white-space: pre;
|
||||||
|
@ -55,6 +58,23 @@ code {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#panel {
|
||||||
|
position: absolute;
|
||||||
|
width: 10em;
|
||||||
|
background: @MenuBg;
|
||||||
|
color: @Menu;
|
||||||
|
margin: 0px;
|
||||||
|
padding: 1em;
|
||||||
|
list-style: none;
|
||||||
|
border: 3px solid @MenuBorder;
|
||||||
|
z-index: 100000;
|
||||||
|
|
||||||
|
.shadow();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* tool */
|
/* tool */
|
||||||
|
|
||||||
.tool {
|
.tool {
|
||||||
|
@ -234,7 +254,8 @@ ul.menu-popup {
|
||||||
|
|
||||||
|
|
||||||
#nav-notifications-menu {
|
#nav-notifications-menu {
|
||||||
width: 400px;
|
width: 400px; max-height: 550px;
|
||||||
|
overflow: auto;
|
||||||
img { float: left; margin-right: 5px; }
|
img { float: left; margin-right: 5px; }
|
||||||
.contactname { font-weight: bold; }
|
.contactname { font-weight: bold; }
|
||||||
.notif-when { font-size: 10px; color: @MenuItemDetail; display: block; }
|
.notif-when { font-size: 10px; color: @MenuItemDetail; display: block; }
|
||||||
|
@ -288,15 +309,98 @@ aside {
|
||||||
.allcontact-link { float: right; margin: 5px 0px; }
|
.allcontact-link { float: right; margin: 5px 0px; }
|
||||||
.contact-block-content {
|
.contact-block-content {
|
||||||
clear: both;
|
clear: both;
|
||||||
overflow: auto; height: auto;
|
overflow: hidden;
|
||||||
|
height: auto;
|
||||||
}
|
}
|
||||||
|
/*.contact-block-div { width:60px; height: 60px; }*/
|
||||||
.contact-block-link {
|
.contact-block-link {
|
||||||
float: left;
|
float: left;
|
||||||
margin: 0px 2px 2px 0px;
|
margin: 0px 2px 2px 0px;
|
||||||
img { widht: 48px; height: 58px; }
|
img { width: 48px; height: 48px; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* mail view */
|
||||||
|
.mail-conv-sender,
|
||||||
|
.mail-conv-detail {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.mail-conv-detail {
|
||||||
|
margin-left: 20px;
|
||||||
|
width: 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mail-conv-subject {
|
||||||
|
font-size: 1.4em;
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mail-conv-outside-wrapper-end {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mail-conv-outside-wrapper {
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mail-conv-delete-wrapper {
|
||||||
|
float: right;
|
||||||
|
margin-right: 30px;
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
.mail-conv-break {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mail-conv-delete-icon {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* group member */
|
||||||
|
#contact-edit-drop-link,
|
||||||
|
.mail-list-delete-wrapper,
|
||||||
|
.group-delete-wrapper {
|
||||||
|
float: right;
|
||||||
|
margin-right: 50px;
|
||||||
|
.drophide {
|
||||||
|
background-image: url('../../../images/icons/22/delete.png');
|
||||||
|
display: block; width: 22px; height: 22px;
|
||||||
|
opacity: 0.3;
|
||||||
|
position: relative;
|
||||||
|
top: -50px;
|
||||||
|
}
|
||||||
|
.drop {
|
||||||
|
background-image: url('../../../images/icons/22/delete.png');
|
||||||
|
display: block; width: 22px; height: 22px;
|
||||||
|
position: relative;
|
||||||
|
top: -50px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
#group-members {
|
||||||
|
margin-top: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
height: 250px;
|
||||||
|
overflow: auto;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
#group-members-end {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
#group-all-contacts {
|
||||||
|
padding: 10px;
|
||||||
|
height: 450px;
|
||||||
|
overflow: auto;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
#group-all-contacts-end {
|
||||||
|
clear: both;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.contact-block-div {
|
||||||
|
float: left;
|
||||||
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
|
}*/
|
||||||
|
|
||||||
/* widget */
|
/* widget */
|
||||||
.widget {
|
.widget {
|
||||||
|
@ -431,6 +535,28 @@ section {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.comment-edit-preview {
|
||||||
|
width: 710px;
|
||||||
|
border: 1px solid @Grey5;
|
||||||
|
margin-top: 10px;
|
||||||
|
|
||||||
|
.contact-photo { width: 32px; height: 32px; margin-left: 16px;
|
||||||
|
/*background: url(../../../images/icons/22/user.png) no-repeat center center;*/
|
||||||
|
}
|
||||||
|
.contact-photo-menu-button {
|
||||||
|
top: 15px !important;
|
||||||
|
left: 15px !important;
|
||||||
|
}
|
||||||
|
.wall-item-links { padding-left: 12px; }
|
||||||
|
|
||||||
|
.wall-item-container { width: 700px; }
|
||||||
|
.tread-wrapper { width: 700px; padding: 0; margin: 10px 0;}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.shiny { border-right:10px solid @ShinyBorderColor; }
|
||||||
|
#jot-preview-content .tread-wrapper { background-color: @JotPreviewBackgroundColor; }
|
||||||
|
|
||||||
|
|
||||||
.wall-item-tags { padding-top: 5px; }
|
.wall-item-tags { padding-top: 5px; }
|
||||||
|
@ -445,7 +571,31 @@ section {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* contacts menu */
|
.wwto {
|
||||||
|
position: absolute !important;
|
||||||
|
width: 25px; height: 25px;
|
||||||
|
background: #FFFFFF;
|
||||||
|
border: 2px solid @Metalic3;
|
||||||
|
height: 25px;
|
||||||
|
width: 25px;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 1px;
|
||||||
|
position: absolute !important;
|
||||||
|
top: 40px;
|
||||||
|
left: 30px;
|
||||||
|
|
||||||
|
.shadow(0px, 0px)
|
||||||
|
}
|
||||||
|
.wwto .contact-photo { width: 25px; height: 25px; }
|
||||||
|
|
||||||
|
|
||||||
|
#pause {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 5px;
|
||||||
|
right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.contact-photo-wrapper { position: relative; }
|
.contact-photo-wrapper { position: relative; }
|
||||||
.contact-photo {
|
.contact-photo {
|
||||||
width: 48px; height: 48px;
|
width: 48px; height: 48px;
|
||||||
|
@ -462,8 +612,14 @@ section {
|
||||||
|
|
||||||
.contact-wrapper {
|
.contact-wrapper {
|
||||||
float: left;
|
float: left;
|
||||||
width: 90px;
|
width: 300px;
|
||||||
height: 90px;
|
height: 90px;
|
||||||
|
padding-right: 10px;
|
||||||
|
margin: 0 10px 10px 0px;
|
||||||
|
.contact-photo-wrapper {
|
||||||
|
float: left;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
.contact-photo {
|
.contact-photo {
|
||||||
width: 80px; height: 80px;
|
width: 80px; height: 80px;
|
||||||
img { width: 80px; height: 80px; }
|
img { width: 80px; height: 80px; }
|
||||||
|
@ -482,8 +638,12 @@ section {
|
||||||
img { width: 175px; height: 175px; }
|
img { width: 175px; height: 175px; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.contact-name { text-align: center; font-weight: bold; }
|
.contact-name { font-weight: bold; padding-top: 15px; }
|
||||||
.contact-details { color: @Grey3;}
|
.contact-details {
|
||||||
|
color: @Grey3; white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
/* editor */
|
/* editor */
|
||||||
.jothidden { display: none; }
|
.jothidden { display: none; }
|
||||||
|
@ -794,6 +954,58 @@ ul.tabs {
|
||||||
|
|
||||||
#profile-edit-links li {
|
#profile-edit-links li {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#profile-edit-default-desc {
|
||||||
|
color: #FF0000;
|
||||||
|
border: 1px solid #FF8888;
|
||||||
|
background-color: #FFEEEE;
|
||||||
|
padding: 7px;
|
||||||
|
}
|
||||||
|
#profile-edit-profile-name-label,
|
||||||
|
#profile-edit-name-label,
|
||||||
|
#profile-edit-pdesc-label,
|
||||||
|
#profile-edit-gender-label,
|
||||||
|
#profile-edit-dob-label,
|
||||||
|
#profile-edit-address-label,
|
||||||
|
#profile-edit-locality-label,
|
||||||
|
#profile-edit-region-label,
|
||||||
|
#profile-edit-postal-code-label,
|
||||||
|
#profile-edit-country-name-label,
|
||||||
|
#profile-edit-marital-label,
|
||||||
|
#profile-edit-with-label,
|
||||||
|
#profile-edit-sexual-label,
|
||||||
|
#profile-edit-politic-label,
|
||||||
|
#profile-edit-religion-label,
|
||||||
|
#profile-edit-pubkeywords-label,
|
||||||
|
#profile-edit-prvkeywords-label,
|
||||||
|
#profile-edit-gender-select,
|
||||||
|
#profile-edit-homepage-label {
|
||||||
|
float: left;
|
||||||
|
width: 175px;
|
||||||
|
padding-top: 7px;
|
||||||
|
}
|
||||||
|
#profile-edit-profile-name,
|
||||||
|
#profile-edit-name,
|
||||||
|
#gender-select,
|
||||||
|
#profile-edit-pdesc,
|
||||||
|
#profile-edit-gender,
|
||||||
|
#profile-edit-dob,
|
||||||
|
#profile-edit-address,
|
||||||
|
#profile-edit-locality,
|
||||||
|
#profile-edit-region,
|
||||||
|
#profile-edit-postal-code,
|
||||||
|
#profile-edit-country-name,
|
||||||
|
#profile-edit-marital,
|
||||||
|
#profile-edit-with,
|
||||||
|
#profile-edit-sexual,
|
||||||
|
#profile-edit-politic,
|
||||||
|
#profile-edit-religion,
|
||||||
|
#profile-edit-pubkeywords,
|
||||||
|
#profile-edit-prvkeywords,
|
||||||
|
#profile-edit-homepage {
|
||||||
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* oauth */
|
/* oauth */
|
||||||
|
@ -828,6 +1040,28 @@ ul.tabs {
|
||||||
margin: 0px 10px 10px 0px;
|
margin: 0px 10px 10px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* profile match wrapper */
|
||||||
|
.profile-match-wrapper {
|
||||||
|
float: left;
|
||||||
|
width: 90px;
|
||||||
|
height: 90px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
.contact-photo {
|
||||||
|
width: 80px; height: 80px;
|
||||||
|
img { width: 80px; height: 80px; }
|
||||||
|
}
|
||||||
|
.contact-photo-menu-button {
|
||||||
|
left: 0px;
|
||||||
|
top: 63px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* page footer */
|
/* page footer */
|
||||||
footer { height: 100px; display: table-row; }
|
footer { height: 100px; display: table-row; }
|
||||||
|
|
||||||
|
.pager {
|
||||||
|
margin-top: 25px;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
<div class="wall-item-decor">
|
<div class="wall-item-decor">
|
||||||
<span class="icon s22 star $isstarred" id="starred-$id" title="$star.starred">$star.starred</span>
|
<span class="icon star $isstarred" id="starred-$id" title="$star.starred">$star.starred</span>
|
||||||
{{ if $lock }}<span class="icon s22 lock fakelink" onclick="lockview(event,$id);" title="$lock">$lock</span>{{ endif }}
|
{{ if $lock }}<span class="icon lock fakelink" onclick="lockview(event,$id);" title="$lock">$lock</span>{{ endif }}
|
||||||
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
|
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@
|
||||||
<a href="$profile_url" target="redir" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle">$name</span></a>
|
<a href="$profile_url" target="redir" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle">$name</span></a>
|
||||||
<span class="wall-item-ago">-
|
<span class="wall-item-ago">-
|
||||||
{{ if $plink }}<a class="link" title="$plink.title" href="$plink.href" style="color: #999">$ago</a>{{ else }} $ago {{ endif }}
|
{{ if $plink }}<a class="link" title="$plink.title" href="$plink.href" style="color: #999">$ago</a>{{ else }} $ago {{ endif }}
|
||||||
|
{{ if $lock }} - <span class="fakelink" style="color: #999" onclick="lockview(event,$id);">$lock</span> {{ endif }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="wall-item-content">
|
<div class="wall-item-content">
|
||||||
|
|
|
@ -334,11 +334,15 @@ h4 {
|
||||||
font-size: 1.1em;
|
font-size: 1.1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {color: #3e3e8c;
|
a {
|
||||||
|
color: #36C;
|
||||||
|
/* color: #3e3e8c; */
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
a:hover {color: blue;
|
a:hover {
|
||||||
text-decoration: underline}
|
/* color: blue; */
|
||||||
|
text-decoration: underline
|
||||||
|
}
|
||||||
|
|
||||||
.wall-item-name-link {
|
.wall-item-name-link {
|
||||||
/* float: left;*/
|
/* float: left;*/
|
||||||
|
@ -364,12 +368,13 @@ text-decoration: underline}
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
.fakelink {
|
.fakelink {
|
||||||
color: #3e3e8c;
|
color: #36c;
|
||||||
|
/* color: #3e3e8c; */
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.fakelink:hover {
|
.fakelink:hover {
|
||||||
color: blue;
|
/* color: blue; */
|
||||||
/*color: #005c94; */
|
/*color: #005c94; */
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
@ -402,6 +407,12 @@ code {
|
||||||
.tool {
|
.tool {
|
||||||
height: auto;
|
height: auto;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
|
#saved-search-ul .tool:hover,
|
||||||
|
#nets-sidebar .tool:hover,
|
||||||
|
#sidebar-group-list .tool:hover {
|
||||||
|
background: #EEE;
|
||||||
}
|
}
|
||||||
.tool .label {
|
.tool .label {
|
||||||
float: left;
|
float: left;
|
||||||
|
@ -409,6 +420,12 @@ code {
|
||||||
.tool .action {
|
.tool .action {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
.tool a {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.tool a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
/* popup notifications */
|
/* popup notifications */
|
||||||
div.jGrowl div.notice {
|
div.jGrowl div.notice {
|
||||||
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
|
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
|
||||||
|
@ -496,7 +513,7 @@ nav ul {
|
||||||
nav ul li {
|
nav ul li {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
padding: 0px;
|
/* padding: 1px 1px 3px 1px; */
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
nav ul li .menu-popup {
|
nav ul li .menu-popup {
|
||||||
|
@ -536,7 +553,8 @@ nav .nav-menu.selected {
|
||||||
nav .nav-notify {
|
nav .nav-notify {
|
||||||
display: none;
|
display: none;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
background-color: #19aeff;
|
background-color: #36c;
|
||||||
|
/* background-color: #19aeff; */
|
||||||
-moz-border-radius: 5px 5px 5px 5px;
|
-moz-border-radius: 5px 5px 5px 5px;
|
||||||
-webkit-border-radius: 5px 5px 5px 5px;
|
-webkit-border-radius: 5px 5px 5px 5px;
|
||||||
border-radius: 5px 5px 5px 5px;
|
border-radius: 5px 5px 5px 5px;
|
||||||
|
@ -571,10 +589,25 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link
|
||||||
nav #nav-apps-link.selected {
|
nav #nav-apps-link.selected {
|
||||||
background-color: #364e59;
|
background-color: #364e59;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#nav-notifications-mark-all {
|
||||||
|
/* padding: 1px 1px 2px 26px; */
|
||||||
|
/* border-bottom: 1px solid #364E59; */
|
||||||
|
/* margin: 0px 0px 2px 0px;
|
||||||
|
padding: 5px 10px; */
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-notifications-see-all {
|
||||||
|
/* padding: 1px 1px 2px 26px; */
|
||||||
|
/* border-bottom: 1px solid #364E59; */
|
||||||
|
/* margin: 0px 0px 2px 0px;
|
||||||
|
padding: 5px 10px; */
|
||||||
|
}
|
||||||
|
|
||||||
ul.menu-popup {
|
ul.menu-popup {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
display: none;
|
display: none;
|
||||||
width: 10em;
|
width: 11em;
|
||||||
background: #ffffff;
|
background: #ffffff;
|
||||||
color: #2d2d2d;
|
color: #2d2d2d;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
|
@ -644,6 +677,15 @@ ul.menu-popup .empty {
|
||||||
max-height: 550px;
|
max-height: 550px;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
/* #nav-notifications-menu a {
|
||||||
|
display: inline;
|
||||||
|
padding: 5px 0px;
|
||||||
|
margin: 0px 0px 2px 0px;
|
||||||
|
}
|
||||||
|
#nav-notifications-menu li:hover {
|
||||||
|
background-color: #bdcdd4;
|
||||||
|
}*/
|
||||||
|
|
||||||
#nav-notifications-menu img {
|
#nav-notifications-menu img {
|
||||||
float: left;
|
float: left;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
|
@ -656,6 +698,13 @@ ul.menu-popup .empty {
|
||||||
color: #9eabb0;
|
color: #9eabb0;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.notif-image {
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
padding: 7px 7px 0px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
/* aside */
|
/* aside */
|
||||||
aside {
|
aside {
|
||||||
display: table-cell;
|
display: table-cell;
|
||||||
|
@ -711,7 +760,8 @@ aside #dfrn-request-link {
|
||||||
}
|
}
|
||||||
aside #dfrn-request-link:hover {
|
aside #dfrn-request-link:hover {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
background-color: #19aeff;
|
background-color: #36c;
|
||||||
|
/* background-color: #19aeff; */
|
||||||
}
|
}
|
||||||
aside #profiles-menu {
|
aside #profiles-menu {
|
||||||
width: 20em;
|
width: 20em;
|
||||||
|
@ -813,7 +863,7 @@ section {
|
||||||
display: table-cell;
|
display: table-cell;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
width: 800px;
|
width: 800px;
|
||||||
padding: 0px 20px 0px 10px;
|
padding: 0px 0px 0px 10px;
|
||||||
}
|
}
|
||||||
/* wall item */
|
/* wall item */
|
||||||
.tread-wrapper {
|
.tread-wrapper {
|
||||||
|
@ -886,7 +936,7 @@ section {
|
||||||
}
|
}
|
||||||
|
|
||||||
.wall-item-container .wall-item-content img {
|
.wall-item-container .wall-item-content img {
|
||||||
max-width: 710px;
|
max-width: 700px;
|
||||||
}
|
}
|
||||||
.wall-item-container .wall-item-links, .wall-item-container .wall-item-actions {
|
.wall-item-container .wall-item-links, .wall-item-container .wall-item-actions {
|
||||||
display: table-cell;
|
display: table-cell;
|
||||||
|
@ -946,7 +996,7 @@ section {
|
||||||
/*background: url(../../../images/icons/22/user.png) no-repeat center center;*/
|
/*background: url(../../../images/icons/22/user.png) no-repeat center center;*/
|
||||||
|
|
||||||
}
|
}
|
||||||
.wall-item-container.comment .contact-photo-menu-button {
|
.wall-item-container.comment {
|
||||||
top: 15px !important;
|
top: 15px !important;
|
||||||
left: 15px !important;
|
left: 15px !important;
|
||||||
}
|
}
|
||||||
|
@ -985,7 +1035,7 @@ section {
|
||||||
/*background: url(../../../images/icons/22/user.png) no-repeat center center;*/
|
/*background: url(../../../images/icons/22/user.png) no-repeat center center;*/
|
||||||
|
|
||||||
}
|
}
|
||||||
.comment-edit-preview .contact-photo-menu-button {
|
.comment-edit-preview {
|
||||||
top: 15px !important;
|
top: 15px !important;
|
||||||
left: 15px !important;
|
left: 15px !important;
|
||||||
}
|
}
|
||||||
|
@ -1000,6 +1050,16 @@ section {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.shiny {
|
||||||
|
/* border-right: 10px solid #fce94f; */
|
||||||
|
border-right: 1px solid #A7C7F7;
|
||||||
|
padding-right: 12px;
|
||||||
|
}
|
||||||
|
#jot-preview-content .tread-wrapper {
|
||||||
|
background-color: #fce94f;
|
||||||
|
}
|
||||||
|
|
||||||
.wall-item-tags {
|
.wall-item-tags {
|
||||||
padding-top: 1px;
|
padding-top: 1px;
|
||||||
padding-bottom: 2px;
|
padding-bottom: 2px;
|
||||||
|
@ -1056,12 +1116,7 @@ section {
|
||||||
width: 48px;
|
width: 48px;
|
||||||
height: 48px;
|
height: 48px;
|
||||||
}
|
}
|
||||||
.contact-photo-menu-button {
|
|
||||||
display: none;
|
|
||||||
position: absolute;
|
|
||||||
left: -2px;
|
|
||||||
top: 31px;
|
|
||||||
}
|
|
||||||
.contact-wrapper {
|
.contact-wrapper {
|
||||||
float: left;
|
float: left;
|
||||||
width: 90px;
|
width: 90px;
|
||||||
|
@ -1076,26 +1131,21 @@ section {
|
||||||
width: 80px;
|
width: 80px;
|
||||||
height: 80px;
|
height: 80px;
|
||||||
}
|
}
|
||||||
.contact-wrapper .contact-photo-menu-button {
|
.contact-wrapper {
|
||||||
left: 0px;
|
left: 0px;
|
||||||
top: 63px;
|
top: 63px;
|
||||||
}
|
}
|
||||||
.directory-item {
|
.contact-photo {
|
||||||
float: left;
|
width: 48px;
|
||||||
width: 200px;
|
height: 48px;
|
||||||
height: 200px;
|
|
||||||
}
|
}
|
||||||
.directory-item .contact-photo {
|
.contact-photo img {
|
||||||
width: 175px;
|
width: 48px;
|
||||||
height: 175px;
|
height: 48px;
|
||||||
}
|
|
||||||
.directory-item .contact-photo img {
|
|
||||||
width: 175px;
|
|
||||||
height: 175px;
|
|
||||||
}
|
}
|
||||||
.contact-name {
|
.contact-name {
|
||||||
text-align: center;
|
/* text-align: center; */
|
||||||
font-weight: bold;
|
/*font-weight: bold;*/
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
.contact-details {
|
.contact-details {
|
||||||
|
@ -1459,7 +1509,8 @@ ul.tabs li .active {
|
||||||
}
|
}
|
||||||
/* contacts */
|
/* contacts */
|
||||||
.contact-entry-wrapper {
|
.contact-entry-wrapper {
|
||||||
width: 50px;
|
width: 120px;
|
||||||
|
height: 120px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
/* photo */
|
/* photo */
|
||||||
|
@ -1482,10 +1533,48 @@ ul.tabs li .active {
|
||||||
width: 80px;
|
width: 80px;
|
||||||
height: 80px;
|
height: 80px;
|
||||||
}
|
}
|
||||||
.profile-match-wrapper .contact-photo-menu-button {
|
.profile-match-wrapper {
|
||||||
left: 0px;
|
left: 0px;
|
||||||
top: 63px;
|
top: 63px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.contact-photo-menu-button {
|
||||||
|
position: relative;
|
||||||
|
background-image: url("../../../images/icons/16/menu.png");
|
||||||
|
background-position: top left;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
margin: 0px 0px -16px 0px;
|
||||||
|
padding: 0px;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
top: -20px; left:0px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-indent: 40px;
|
||||||
|
display: none;
|
||||||
|
|
||||||
|
}
|
||||||
|
.contact-photo-menu {
|
||||||
|
width: 11em;
|
||||||
|
border: 3px solid #364e59;
|
||||||
|
color: #2d2d2d;
|
||||||
|
background: #FFFFFF;
|
||||||
|
/* position: absolute;*/
|
||||||
|
position: relative;
|
||||||
|
left: 0px; top: 0px;
|
||||||
|
display: none;
|
||||||
|
z-index: 10000;
|
||||||
|
}
|
||||||
|
.contact-photo-menu ul { margin:0px; padding: 0px; list-style: none }
|
||||||
|
.contact-photo-menu li a {
|
||||||
|
display: block;
|
||||||
|
padding: 5px 10px;
|
||||||
|
color: #2d2d2d;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.contact-photo-menu li a:hover {
|
||||||
|
background-color: #bdcdd4;
|
||||||
|
}
|
||||||
|
|
||||||
/* page footer */
|
/* page footer */
|
||||||
footer {
|
footer {
|
||||||
height: 100px;
|
height: 100px;
|
||||||
|
@ -1527,250 +1616,129 @@ blockquote {
|
||||||
#prof-separator { display: none;}
|
#prof-separator { display: none;}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#prvmail-wrapper, .mail-conv-detail, .mail-list-detail {
|
#prvmail-to-label, #prvmail-subject-label, #prvmail-message-label {
|
||||||
position: relative;
|
margin-bottom: 10px;
|
||||||
width: 500px;
|
|
||||||
padding: 50px;
|
|
||||||
margin: 20px auto;
|
|
||||||
background-color: #fff;
|
|
||||||
-webkit-box-shadow: 0 0 4px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1);
|
|
||||||
-moz-box-shadow: 0 0 4px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1);
|
|
||||||
box-shadow: 0 0 5px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#prvmail-wrapper:before, #prvmail-wrapper:after, .mail-conv-detail:before, .mail-conv-detail:after, .mail-list-detail:before, .mail-list-detail:after {
|
|
||||||
position: absolute;
|
|
||||||
width: 40%;
|
|
||||||
height: 10px;
|
|
||||||
content: ' ';
|
|
||||||
left: 12px;
|
|
||||||
bottom: 12px;
|
|
||||||
background: transparent;
|
|
||||||
-webkit-transform: skew(-5deg) rotate(-5deg);
|
|
||||||
-moz-transform: skew(-5deg) rotate(-5deg);
|
|
||||||
-ms-transform: skew(-5deg) rotate(-5deg);
|
|
||||||
-o-transform: skew(-5deg) rotate(-5deg);
|
|
||||||
transform: skew(-5deg) rotate(-5deg);
|
|
||||||
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3);
|
|
||||||
-moz-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3);
|
|
||||||
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3);
|
|
||||||
z-index: -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#prvmail-wrapper:after, .mail-conv-detail:after, .mail-list-detail:after {
|
|
||||||
left: auto;
|
|
||||||
right: 12px;
|
|
||||||
-webkit-transform: skew(5deg) rotate(5deg);
|
|
||||||
-moz-transform: skew(5deg) rotate(5deg);
|
|
||||||
-ms-transform: skew(5deg) rotate(5deg);
|
|
||||||
-o-transform: skew(5deg) rotate(5deg);
|
|
||||||
transform: skew(5deg) rotate(5deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.prvmail-text {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mail-list-outside-wrapper {
|
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mail-list-sender {
|
#prvmail-submit {
|
||||||
float: left;
|
float: left;
|
||||||
padding: 5px;
|
margin-top: 10px;
|
||||||
background-color: #efefef;
|
margin-right: 30px;
|
||||||
border: 2px dotted #eeeeee;
|
}
|
||||||
-moz-box-shadow: 3px 3px 4px #959494;
|
#prvmail-upload-wrapper,
|
||||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
#prvmail-link-wrapper,
|
||||||
box-shadow: 3px 3px 4px #959494;
|
#prvmail-rotator-wrapper {
|
||||||
|
float: left;
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-right: 10px;
|
||||||
|
width: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#prvmail-end {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mail-list-sender,
|
||||||
.mail-list-detail {
|
.mail-list-detail {
|
||||||
margin-left: 100px;
|
float: left;
|
||||||
width: 300px;
|
|
||||||
min-height: 70px;
|
|
||||||
padding: 20px;
|
|
||||||
padding-top:10px;
|
|
||||||
border: 1px solid #dddddd;
|
|
||||||
}
|
}
|
||||||
|
.mail-list-detail {
|
||||||
.mail-list-sender-name {
|
margin-left: 20px;
|
||||||
font-size: 1.1em;
|
|
||||||
display: inline;
|
|
||||||
font-variant:small-caps;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mail-list-date {
|
|
||||||
float: right;
|
|
||||||
clear: block;
|
|
||||||
display: inline;
|
|
||||||
font-size: 0.9em;
|
|
||||||
padding-left: 10px;
|
|
||||||
font-stretch:ultra-condensed;
|
|
||||||
font-variant:small-caps;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.mail-list-subject {
|
.mail-list-subject {
|
||||||
clear: block;
|
font-size: 1.1em;
|
||||||
font-size: 1.2em;
|
margin-top: 10px;
|
||||||
padding-top: 20px;
|
}
|
||||||
padding-right: 50px;
|
a.mail-list-link {
|
||||||
|
display: block;
|
||||||
|
font-size: 1.3em;
|
||||||
|
padding: 4px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mail-list-subject a {
|
/*
|
||||||
color: #626262;
|
*a.mail-list-link:hover {
|
||||||
}
|
* background-color: #15607B;
|
||||||
|
* color: #F5F6FB;
|
||||||
|
*}
|
||||||
|
*/
|
||||||
|
|
||||||
.mail-list-delete-wrapper { float: right;}
|
|
||||||
.mail-list-outside-wrapper-end {
|
.mail-list-outside-wrapper-end {
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mail-conv-outside-wrapper {
|
.mail-list-outside-wrapper {
|
||||||
margin-bottom: 10px;
|
margin-top: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mail-conv-sender {float: left; margin: 0px 5px 5px 0px; }
|
.mail-list-delete-wrapper {
|
||||||
.mail-conv-sender-photo {
|
float: right;
|
||||||
width: 64px;
|
margin-right: 30px;
|
||||||
height: 64px;
|
margin-top: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mail-conv-sender-name { float: left; font-variant:small-caps; font-style: bold; }
|
.mail-list-delete-icon {
|
||||||
.mail-conv-date { float: right; font-variant:small-caps; }
|
border: none;
|
||||||
.mail-conv-subject { clear: right; font-weight: bold; font-size: 1.2em }
|
}
|
||||||
.mail-conv-body {
|
|
||||||
|
.mail-conv-sender,
|
||||||
|
.mail-conv-detail {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.mail-conv-detail {
|
||||||
|
margin-left: 20px;
|
||||||
|
width: 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mail-conv-subject {
|
||||||
|
font-size: 1.4em;
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mail-conv-outside-wrapper-end {
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mail-conv-detail {
|
.mail-conv-outside-wrapper {
|
||||||
width: 500px;
|
margin-top: 30px;
|
||||||
padding: 30px;
|
}
|
||||||
padding-bottom: 10px;
|
|
||||||
margin-left: 20px;
|
.mail-conv-delete-wrapper {
|
||||||
margin-bottom: 0px;
|
float: right;
|
||||||
vertical-align: middle;
|
margin-right: 30px;
|
||||||
margin: auto;
|
margin-top: 15px;
|
||||||
border: 1px solid #dddddd;
|
}
|
||||||
|
.mail-conv-break {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mail-conv-delete-icon {
|
||||||
|
border: none;
|
||||||
}
|
}
|
||||||
.mail-conv-break { display: none; border: none;}
|
|
||||||
.mail-conv-delete-wrapper { padding-top: 10px; width: 510px; text-align: right; }
|
|
||||||
|
|
||||||
/* ========== */
|
/* ========== */
|
||||||
/* = Events = */
|
/* = Events = */
|
||||||
/* ========== */
|
/* ========== */
|
||||||
|
|
||||||
.clear { clear: both; }
|
|
||||||
.eventcal {
|
.eventcal {
|
||||||
float: left;
|
float: left;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
padding: 20px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.vevent {
|
.vevent {
|
||||||
position: relative;
|
border: 1px solid #CCCCCC;
|
||||||
width: 400px;
|
|
||||||
padding: 20px;
|
|
||||||
padding-top: 10px;
|
|
||||||
margin: 0 0px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
background-color: #fff;
|
|
||||||
-webkit-box-shadow: 0 0 4px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1);
|
|
||||||
-moz-box-shadow: 0 0 4px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1);
|
|
||||||
box-shadow: 0 0 5px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
}
|
||||||
|
.vevent .event-description, .vevent .event-location {
|
||||||
.vevent:before, .vevent:after {
|
|
||||||
position: absolute;
|
|
||||||
width: 40%;
|
|
||||||
height: 10px;
|
|
||||||
content: ' ';
|
|
||||||
left: 12px;
|
|
||||||
bottom: 12px;
|
|
||||||
background: transparent;
|
|
||||||
-webkit-transform: skew(-5deg) rotate(-5deg);
|
|
||||||
-moz-transform: skew(-5deg) rotate(-5deg);
|
|
||||||
-ms-transform: skew(-5deg) rotate(-5deg);
|
|
||||||
-o-transform: skew(-5deg) rotate(-5deg);
|
|
||||||
transform: skew(-5deg) rotate(-5deg);
|
|
||||||
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3);
|
|
||||||
-moz-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3);
|
|
||||||
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3);
|
|
||||||
z-index: -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.vevent:after {
|
|
||||||
left: auto;
|
|
||||||
right: 12px;
|
|
||||||
-webkit-transform: skew(5deg) rotate(5deg);
|
|
||||||
-moz-transform: skew(5deg) rotate(5deg);
|
|
||||||
-ms-transform: skew(5deg) rotate(5deg);
|
|
||||||
-o-transform: skew(5deg) rotate(5deg);
|
|
||||||
transform: skew(5deg) rotate(5deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.vevent .event-description {
|
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
text-align:center;
|
|
||||||
font-size: 1.2em;
|
|
||||||
font-weight:bolder;
|
|
||||||
}
|
}
|
||||||
|
.vevent .event-start {
|
||||||
.vevent .event-location{
|
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
font-size: 1em;
|
|
||||||
font-style: oblique;
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.vevent .event-start, .vevent .event-end {
|
|
||||||
margin-left: 20px;
|
|
||||||
margin-right: 20px;
|
|
||||||
margin-bottom: 2px;
|
|
||||||
margin-top: 2px;
|
|
||||||
font-size: 0.9em;
|
|
||||||
font-variant: small-caps;
|
|
||||||
text-align: left;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#new-event-link {
|
#new-event-link {
|
||||||
width: 130px;
|
|
||||||
padding: 7px;
|
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
margin-left: 170px; ;
|
|
||||||
-moz-box-shadow:inset 0px 1px 0px 0px #cfcfcf;
|
|
||||||
-webkit-box-shadow:inset 0px 1px 0px 0px #cfcfcf;
|
|
||||||
box-shadow:inset 0px 1px 0px 0px #cfcfcf;
|
|
||||||
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) );
|
|
||||||
background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% );
|
|
||||||
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2');
|
|
||||||
background-color:#bdbdbd;
|
|
||||||
-moz-border-radius:5px;
|
|
||||||
-webkit-border-radius:5px;
|
|
||||||
border-radius:5px;
|
|
||||||
color: #efefef;
|
|
||||||
}
|
|
||||||
|
|
||||||
#new-event-link:hover {
|
|
||||||
color: #efefef;
|
|
||||||
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #b20202), color-stop(1, #d60808) );
|
|
||||||
background:-moz-linear-gradient( center top, #b20202 5%, #d60808 100% );
|
|
||||||
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#b20202', endColorstr='#d60808');
|
|
||||||
background-color:#b20202;
|
|
||||||
}
|
|
||||||
|
|
||||||
#new-event-link:active {
|
|
||||||
background-color: #b20202;
|
|
||||||
position:relative;
|
|
||||||
top:1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#new-event-link a {
|
|
||||||
color: #efefef;
|
|
||||||
text-align: center;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.edit-event-link, .plink-event-link {
|
.edit-event-link, .plink-event-link {
|
||||||
|
@ -1781,14 +1749,14 @@ blockquote {
|
||||||
}
|
}
|
||||||
|
|
||||||
.event-description:before {
|
.event-description:before {
|
||||||
content: url('calendar.png');
|
content: url('../../../images/calendar.png');
|
||||||
margin-right: 15px;
|
margin-right: 15px;
|
||||||
vertical-align: middle;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.event-start, .event-end {
|
.event-start, .event-end {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
width: 330px;
|
width: 330px;
|
||||||
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
.event-start .dtstart, .event-end .dtend {
|
.event-start .dtstart, .event-end .dtend {
|
||||||
|
@ -1796,10 +1764,7 @@ blockquote {
|
||||||
}
|
}
|
||||||
|
|
||||||
.event-list-date {
|
.event-list-date {
|
||||||
color: #626262;
|
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
font-variant:small-caps;
|
|
||||||
font-stretch:condensed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.prevcal, .nextcal {
|
.prevcal, .nextcal {
|
||||||
|
@ -1808,116 +1773,181 @@ blockquote {
|
||||||
margin-right: 32px;
|
margin-right: 32px;
|
||||||
margin-top: 64px;
|
margin-top: 64px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.event-calendar-end {
|
.event-calendar-end {
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.calendar {
|
.calendar {
|
||||||
width: 300px;
|
font-family: Courier, monospace;
|
||||||
font-family: Helvetica, Arial, sans-serif;
|
|
||||||
background-color: #f1f1f1;
|
|
||||||
border: 1px solid #dedede;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
-moz-box-shadow: 5px 5px 8px #959494;
|
|
||||||
-webkit-box-shadow: 5px 5px 8px #959494;
|
|
||||||
box-shadow: 5px 5px 8px #959494;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.calendar caption{
|
|
||||||
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #d60808), color-stop(1, #b20202) );
|
|
||||||
background:-moz-linear-gradient( center top, #d60808 5%, #b20202 100% );
|
|
||||||
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#d60808', endColorstr='#b20202');
|
|
||||||
background-color: #b20202;
|
|
||||||
padding: 10px 0px 10px 0px;
|
|
||||||
width: 300px;
|
|
||||||
color: #ffffff;
|
|
||||||
font-weight: bold;
|
|
||||||
text-align:center;
|
|
||||||
font-variant:small-caps;
|
|
||||||
-moz-box-shadow: 5px 2px 8px #959494;
|
|
||||||
-webkit-box-shadow: 5px 2px 8px #959494;
|
|
||||||
box-shadow: 5px 2px 8px #959494;
|
|
||||||
}
|
|
||||||
|
|
||||||
tr {
|
|
||||||
border: 1px solid #eeeeee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar td {
|
|
||||||
font-size: 14px;
|
|
||||||
text-align: center;
|
|
||||||
padding: 3px 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar td > a {
|
|
||||||
background-color: #cdcdcd;
|
|
||||||
padding: 2px;
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar th {
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.today {
|
.today {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-align: center;
|
color: #FF0000;
|
||||||
background-color: #b20202;
|
|
||||||
color: #fff;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#event-start-text,
|
.settings-block {
|
||||||
#event-finish-text {
|
border: 1px solid #AAA;
|
||||||
margin-top: 10px;
|
margin: 10px;
|
||||||
margin-bottom: 5px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#event-nofinish-checkbox,
|
.app-title {
|
||||||
#event-nofinish-text,
|
margin: 10px;
|
||||||
#event-adjust-checkbox,
|
}
|
||||||
#event-adjust-text,
|
|
||||||
#event-share-checkbox {
|
#identity-manage-desc {
|
||||||
|
margin-top:15px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#identity-manage-choose {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#identity-submit {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#photo-prev-link, #photo-next-link {
|
||||||
|
padding: 10px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#event-datetime-break {
|
#photo-photo {
|
||||||
margin-bottom: 10px;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#event-nofinish-break,
|
#photo-photo-end {
|
||||||
#event-adjust-break,
|
|
||||||
#event-share-break {
|
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
#event-desc-text,
|
.profile-match-photo {
|
||||||
#event-location-text {
|
float: left;
|
||||||
margin-top: 10px;
|
text-align: center;
|
||||||
margin-bottom: 5px;
|
width: 120px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#event-submit {
|
.profile-match-name {
|
||||||
margin-top: 10px;
|
float: left;
|
||||||
|
text-align: center;
|
||||||
|
width: 120px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-match-break,
|
||||||
|
.profile-match-end {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-match-connect {
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-match-wrapper {
|
||||||
|
float: left;
|
||||||
|
padding: 10px;
|
||||||
|
width: 120px;
|
||||||
|
height: 120px;
|
||||||
|
scroll: auto;
|
||||||
|
}
|
||||||
|
#profile-match-wrapper-end {
|
||||||
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ============= */
|
/* ============= */
|
||||||
/* = Directory = */
|
/* = Directory = */
|
||||||
/* ============= */
|
/* ============= */
|
||||||
|
/* contacts menu */
|
||||||
|
.contact-photo-wrapper {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.contact-photo {
|
||||||
|
width: 48px;
|
||||||
|
height: 48px;
|
||||||
|
overflow: hidden;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.contact-photo img {
|
||||||
|
width: 48px;
|
||||||
|
height: 48px;
|
||||||
|
}
|
||||||
|
.contact-photo-menu-button {
|
||||||
|
display: none;
|
||||||
|
/* position: absolute; */
|
||||||
|
/* position: absolute; */
|
||||||
|
left: -2px;
|
||||||
|
top: -20px;
|
||||||
|
}
|
||||||
|
.contact-wrapper {
|
||||||
|
float: left;
|
||||||
|
width: 90px;
|
||||||
|
height: 90px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
.contact-wrapper .contact-photo {
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
}
|
||||||
|
.contact-wrapper .contact-photo img {
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
}
|
||||||
|
.contact-wrapper .contact-photo-menu-button {
|
||||||
|
left: 0px;
|
||||||
|
top: 63px;
|
||||||
|
}
|
||||||
.directory-item {
|
.directory-item {
|
||||||
float: left;
|
float: left;
|
||||||
margin: 50px 50px 0px 0px;
|
width: 200px;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
.directory-item .contact-photo {
|
||||||
|
width: 175px;
|
||||||
|
height: 175px;
|
||||||
|
}
|
||||||
|
.directory-item .contact-photo img {
|
||||||
|
width: 175px;
|
||||||
|
height: 175px;
|
||||||
|
}
|
||||||
|
.contact-name {
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.contact-details {
|
||||||
|
color: #999999;
|
||||||
}
|
}
|
||||||
|
|
||||||
.directory-details {
|
.photo-top-image-wrapper {
|
||||||
font-size: 0.9em;
|
position: relative;
|
||||||
font-variant: small-caps;
|
float: left;
|
||||||
width: 160px;
|
margin-top: 15px;
|
||||||
|
margin-right: 15px;
|
||||||
|
width: 200px; height: 200px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.photo-top-album-name {
|
||||||
|
width: 100%;
|
||||||
|
min-height: 2em;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0px;
|
||||||
|
padding: 0px 3px;
|
||||||
|
padding-top: 0.5em;
|
||||||
|
background-color: rgb(255, 255, 255);
|
||||||
|
}
|
||||||
|
#photo-top-end {
|
||||||
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
.directory-name {
|
#photo-top-links {
|
||||||
font-size: 1em;
|
margin-bottom: 30px;
|
||||||
font-variant: small-caps;
|
margin-left: 30px;
|
||||||
width: 150px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#photos-upload-newalbum-div {
|
||||||
|
float: left;
|
||||||
|
width: 175px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{{ if $indent }}{{ else }}
|
{{ if $indent }}{{ else }}
|
||||||
<div class="wall-item-decor">
|
<div class="wall-item-decor">
|
||||||
<span class="icon s22 star $isstarred" id="starred-$id" title="$star.starred">$star.starred</span>
|
<span class="icon star $isstarred" id="starred-$id" title="$star.starred">$star.starred</span>
|
||||||
{{ if $lock }}<span class="icon s22 lock fakelink" onclick="lockview(event,$id);" title="$lock">$lock</span>{{ endif }}
|
{{ if $lock }}<span class="icon lock fakelink" onclick="lockview(event,$id);" title="$lock">$lock</span>{{ endif }}
|
||||||
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
|
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
|
||||||
</div>
|
</div>
|
||||||
{{ endif }}
|
{{ endif }}
|
||||||
|
@ -23,8 +23,9 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="wall-item-actions-author">
|
<div class="wall-item-actions-author">
|
||||||
<a href="$profile_url" target="redir" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle">$name</span></a>
|
<a href="$profile_url" target="redir" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle">$name</span></a>
|
||||||
<span class="wall-item-ago">-
|
<span class="wall-item-ago">-
|
||||||
{{ if $plink }}<a class="link" title="$plink.title" href="$plink.href" style="color: #999">$ago</a>{{ else }} $ago {{ endif }}
|
{{ if $plink }}<a class="link" title="$plink.title" href="$plink.href" style="color: #999">$ago</a>{{ else }} $ago {{ endif }}
|
||||||
|
{{ if $lock }} - <span class="fakelink" style="color: #999" onclick="lockview(event,$id);">$lock</span> {{ endif }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="wall-item-content">
|
<div class="wall-item-content">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{{ if $indent }}{{ else }}
|
{{ if $indent }}{{ else }}
|
||||||
<div class="wall-item-decor">
|
<div class="wall-item-decor">
|
||||||
<span class="icon s22 star $isstarred" id="starred-$id" title="$star.starred">$star.starred</span>
|
<span class="icon star $isstarred" id="starred-$id" title="$star.starred">$star.starred</span>
|
||||||
{{ if $lock }}<span class="icon s22 lock fakelink" onclick="lockview(event,$id);" title="$lock">$lock</span>{{ endif }}
|
{{ if $lock }}<span class="icon lock fakelink" onclick="lockview(event,$id);" title="$lock">$lock</span>{{ endif }}
|
||||||
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
|
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
|
||||||
</div>
|
</div>
|
||||||
{{ endif }}
|
{{ endif }}
|
||||||
|
@ -32,6 +32,7 @@
|
||||||
$to <a href="$owner_url" target="redir" title="$olinktitle" class="wall-item-name-link"><span class="wall-item-name$osparkle" id="wall-item-ownername-$id">$owner_name</span></a>
|
$to <a href="$owner_url" target="redir" title="$olinktitle" class="wall-item-name-link"><span class="wall-item-name$osparkle" id="wall-item-ownername-$id">$owner_name</span></a>
|
||||||
$vwall <span class="wall-item-ago">-
|
$vwall <span class="wall-item-ago">-
|
||||||
{{ if $plink }}<a class="link" title="$plink.title" href="$plink.href" style="color: #999">$ago</a>{{ else }} $ago {{ endif }}
|
{{ if $plink }}<a class="link" title="$plink.title" href="$plink.href" style="color: #999">$ago</a>{{ else }} $ago {{ endif }}
|
||||||
|
{{ if $lock }} - <span class="fakelink" style="color: #999" onclick="lockview(event,$id);">$lock</span> {{ endif }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue