]> git.mxchange.org Git - friendica.git/commitdiff
Merge pull request #50 from annando/master
authorfriendica <info@friendica.com>
Sun, 26 Feb 2012 23:07:34 +0000 (15:07 -0800)
committerfriendica <info@friendica.com>
Sun, 26 Feb 2012 23:07:34 +0000 (15:07 -0800)
massive changes in mail and design updates in "vier"

21 files changed:
boot.php
database.sql
include/Scrape.php
include/bbcode.php [changed mode: 0755->0644]
include/delivery.php
include/email.php
include/html2bbcode.php
include/html2plain.php [new file with mode: 0644]
include/notifier.php
include/poller.php
include/quoteconvert.php [new file with mode: 0644]
mod/settings.php
update.php
view/settings_connectors.tpl
view/theme/vier/colors.less
view/theme/vier/icons.less
view/theme/vier/quattro.less
view/theme/vier/search_item.tpl
view/theme/vier/style.css
view/theme/vier/wall_item.tpl
view/theme/vier/wallwall_item.tpl

index f348ae6e895be5d2478686df7f259c0de22e3d1b..ada0f563d992a52f025d833dbf5bb5c2b7116377 100755 (executable)
--- a/boot.php
+++ b/boot.php
@@ -11,7 +11,7 @@ require_once('include/cache.php');
 define ( 'FRIENDICA_PLATFORM',     'Friendica');
 define ( 'FRIENDICA_VERSION',      '2.3.1264' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.22'    );
-define ( 'DB_UPDATE_VERSION',      1126      );
+define ( 'DB_UPDATE_VERSION',      1127      );
 
 define ( 'EOL',                    "<br />\r\n"     );
 define ( 'ATOM_TIME',              'Y-m-d\TH:i:s\Z' );
index 9ad96ca77dca3c541373a8b0891717f0cfaa19c3..ced646f595e3f8d105f15c5e2099a003739e56bb 100755 (executable)
@@ -634,7 +634,8 @@ CREATE TABLE IF NOT EXISTS `mailacct` (
 `mailbox` CHAR( 255 ) NOT NULL,
 `user` CHAR( 255 ) 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',
 `last_check` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'
 ) ENGINE = MyISAM DEFAULT CHARSET=utf8;
index 1835892eb022f7ed5ee77fcc2df8ada57c6fad10..4c4ad3cdb935233d35bc820ff2b607c5c06553da 100755 (executable)
@@ -452,10 +452,19 @@ function probe_url($url, $mode = PROBE_NORMAL) {
                                                        $adr = imap_rfc822_parse_adrlist($x->to,'');
                                                if(isset($adr)) {
                                                        foreach($adr as $feadr) {
-                                                               if((strcasecmp($feadr->mailbox,$name) == 0) 
-                                                                       &&(strcasecmp($feadr->host,$phost) == 0) 
+                                                               if((strcasecmp($feadr->mailbox,$name) == 0)
+                                                                       &&(strcasecmp($feadr->host,$phost) == 0)
                                                                        && (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']);
                                                                }
                                                        }
                                                }
old mode 100755 (executable)
new mode 100644 (file)
index 32053b4..cff26f5
@@ -151,7 +151,7 @@ function bbcode($Text,$preserve_nl = false) {
 
        // handle nested lists
        $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="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);
@@ -194,7 +194,7 @@ function bbcode($Text,$preserve_nl = false) {
        // Check for [quote] text
        // handle nested quotes
        $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);
 
        // Check for [quote=Author] text
@@ -203,7 +203,7 @@ function bbcode($Text,$preserve_nl = false) {
 
        // handle nested quotes
        $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",
                                     "<blockquote><strong>" . $t_wrote . "</strong> $2</blockquote>",
                                     $Text);
@@ -285,3 +285,4 @@ function bbcode($Text,$preserve_nl = false) {
 
        return $Text;
 }
+
index cbf602a0b487f5745407eb754c24b4478252d619..c1ff07bd5438226b6b63a18e7327172e8329dff6 100755 (executable)
@@ -1,6 +1,7 @@
 <?php
 require_once("boot.php");
 require_once('include/queue_fn.php');
+require_once('include/html2plain.php');
 
 function delivery_run($argv, $argc){
        global $a, $db;
@@ -8,7 +9,7 @@ function delivery_run($argv, $argc){
        if(is_null($a)){
                $a = new App;
        }
-  
+
        if(is_null($db)) {
                @include(".htconfig.php");
                require_once("dba.php");
@@ -293,7 +294,7 @@ function delivery_run($argv, $argc){
                                        $sql_extra = sprintf(" AND `dfrn-id` = '%s' ", dbesc($contact['issued-id']));
                                else
                                        $sql_extra = sprintf(" AND `issued-id` = '%s' ", dbesc($contact['dfrn-id']));
-                                       
+
                                $x = q("SELECT  `contact`.*, `contact`.`uid` AS `importer_uid`, 
                                        `contact`.`pubkey` AS `cpubkey`, 
                                        `contact`.`prvkey` AS `cprvkey`, 
@@ -322,14 +323,14 @@ function delivery_run($argv, $argc){
                                        require_once('library/simplepie/simplepie.inc');
                                        logger('mod-delivery: local delivery');
                                        local_delivery($x[0],$atom);
-                                       break;                                  
+                                       break;
                                }
                        }
 
                        $deliver_status = dfrn_deliver($owner,$contact,$atom);
 
                        logger('notifier: dfrn_delivery returns ' . $deliver_status);
-       
+
                        if($deliver_status == (-1)) {
                                logger('notifier: delivery failed: queuing message');
                                add_to_queue($contact['id'],NETWORK_DFRN,$atom);
@@ -382,7 +383,7 @@ function delivery_run($argv, $argc){
 
                case NETWORK_MAIL :
                case NETWORK_MAIL2:
-                               
+
                        if(get_config('system','dfrn_only'))
                                break;
                        // WARNING: does not currently convert to RFC2047 header encodings, etc.
@@ -432,9 +433,19 @@ function delivery_run($argv, $argc){
 
                                if($reply_to)
                                        $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']) {
-                                       $header .= 'References: <' . $it['parent-uri'] . '>' . "\n";
+                                       $headers .= 'References: <' . iri2msgid($it['parent-uri']) . '>' . "\n";
                                        if(! strlen($it['title'])) {
                                                $r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1",
                                                        dbesc($it['parent-uri'])
@@ -450,13 +461,16 @@ function delivery_run($argv, $argc){
                                                }
                                        }
                                }
-                               $headers .= 'MIME-Version: 1.0' . "\n";
-                               $headers .= 'Content-Type: text/html; charset=UTF-8' . "\n";
+                               /*$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";
                                $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);
-                               mail($addr, $subject, $message, $headers);
+                               mail($addr, $subject, $message, $headers);*/
+                               email_send($addr, $subject, $headers, $it);
                        }
                        break;
 
@@ -473,7 +487,7 @@ function delivery_run($argv, $argc){
 
                        if((! $contact['pubkey']) && (! $public_message))
                                break;
-                                       
+
                        if($target_item['verb'] === ACTIVITY_DISLIKE) {
                                // unsupported
                                break;
index 3e6a8186d8fb9eafdc541696220aa3d2d4e16935..659978b6ee850f3bd0a7267f8d30829e60982160 100755 (executable)
@@ -1,4 +1,5 @@
 <?php
+require_once('include/html2plain.php');
 
 function email_connect($mailbox,$username,$password) {
        if(! function_exists('imap_open'))
@@ -79,15 +80,32 @@ function email_get_msg($mbox,$uid) {
        if(! $struc)
                return $ret;
 
+       // for testing purposes: Collect imported mails
+       // $file = tempnam("/tmp/friendica2/", "mail-in-");
+       // file_put_contents($file, json_encode($struc));
+
        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 {
+               $text = '';
+               $html = '';
                foreach($struc->parts as $ptop => $p) {
-                       $x = email_get_part($mbox,$uid,$p,$ptop + 1);
-                       if($x)
-                               $ret['body'] = $x;
+                       $x = email_get_part($mbox,$uid,$p,$ptop + 1, 'plain');
+                       if($x)  $text .= $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;
 }
@@ -95,74 +113,81 @@ function email_get_msg($mbox,$uid) {
 // At the moment - only return plain/text.
 // Later we'll repackage inline images as data url's and make the HTML safe
 
-function email_get_part($mbox,$uid,$p,$partno) {
-    // $partno = '1', '2', '2.1', '2.1.3', etc for multipart, 0 if simple
-    global $htmlmsg,$plainmsg,$charset,$attachments;
+function email_get_part($mbox,$uid,$p,$partno, $subtype) {
+       // $partno = '1', '2', '2.1', '2.1.3', etc for multipart, 0 if simple
+       global $htmlmsg,$plainmsg,$charset,$attachments;
 
-       echo $partno;
+       //echo $partno."\n";
 
-    // DECODE DATA
-    $data = ($partno)
+       // DECODE DATA
+       $data = ($partno)
                ? @imap_fetchbody($mbox,$uid,$partno, FT_UID|FT_PEEK)
-        : @imap_body($mbox,$uid,FT_UID|FT_PEEK);
-
-    // Any part may be encoded, even plain text messages, so check everything.
-    if ($p->encoding==4)
-        $data = quoted_printable_decode($data);
-    elseif ($p->encoding==3)
-        $data = base64_decode($data);
-
-    // PARAMETERS
-    // get all parameters, like charset, filenames of attachments, etc.
-    $params = array();
-    if ($p->parameters)
-        foreach ($p->parameters as $x)
-            $params[strtolower($x->attribute)] = $x->value;
-    if ($p->dparameters)
-        foreach ($p->dparameters as $x)
-            $params[strtolower($x->attribute)] = $x->value;
-
-    // ATTACHMENT
-    // Any part with a filename is an attachment,
-    // so an attached text file (type 0) is not mistaken as the message.
-
-    if ($params['filename'] || $params['name']) {
-        // filename may be given as 'Filename' or 'Name' or both
-        $filename = ($params['filename'])? $params['filename'] : $params['name'];
-        // filename may be encoded, so see imap_mime_header_decode()
-        $attachments[$filename] = $data;  // this is a problem if two files have same name
-    }
+       : @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.
+       if ($p->encoding==4)
+               $data = quoted_printable_decode($data);
+       elseif ($p->encoding==3)
+               $data = base64_decode($data);
+
+       // PARAMETERS
+       // get all parameters, like charset, filenames of attachments, etc.
+       $params = array();
+       if ($p->parameters)
+               foreach ($p->parameters as $x)
+                       $params[strtolower($x->attribute)] = $x->value;
+       if (isset($p->dparameters) and $p->dparameters)
+               foreach ($p->dparameters as $x)
+                       $params[strtolower($x->attribute)] = $x->value;
+
+       // ATTACHMENT
+       // Any part with a filename is an attachment,
+       // so an attached text file (type 0) is not mistaken as the message.
+
+       if ((isset($params['filename']) and $params['filename']) || (isset($params['name']) and $params['name'])) {
+               // filename may be given as 'Filename' or 'Name' or both
+               $filename = ($params['filename'])? $params['filename'] : $params['name'];
+               // filename may be encoded, so see imap_mime_header_decode()
+               $attachments[$filename] = $data;  // this is a problem if two files have same name
+       }
 
-    // TEXT
-    if ($p->type == 0 && $data) {
-        // Messages may be split in different parts because of inline attachments,
-        // so append parts together with blank row.
-        if (strtolower($p->subtype)=='plain')
-            return (trim($data) ."\n\n");
-        else
+       // TEXT
+       if ($p->type == 0 && $data) {
+               // Messages may be split in different parts because of inline attachments,
+               // so append parts together with blank row.
+               if (strtolower($p->subtype)==$subtype) {
+                       $data = iconv($params['charset'], 'UTF-8//IGNORE', $data);
+                       return (trim($data) ."\n\n");
+               } else
                        $data = '';
 
  //           $htmlmsg .= $data ."<br><br>";
-        $charset = $params['charset'];  // assume all parts are same charset
-    }
+               $charset = $params['charset'];  // assume all parts are same charset
+       }
 
-    // EMBEDDED MESSAGE
-    // Many bounce notifications embed the original message as type 2,
-    // but AOL uses type 1 (multipart), which is not handled here.
-    // There are no PHP functions to parse embedded messages,
-    // so this just appends the raw source to the main message.
-//    elseif ($p->type==2 && $data) {
-//        $plainmsg .= $data."\n\n";
-//    }
-
-    // SUBPART RECURSION
-    if ($p->parts) {
-        foreach ($p->parts as $partno0=>$p2) {
-            $x =  email_get_part($mbox,$uid,$p2,$partno . '.' . ($partno0+1));  // 1.2, 1.2.1, etc.
-                       if($x)
-                               return $x;
+       // EMBEDDED MESSAGE
+       // Many bounce notifications embed the original message as type 2,
+       // but AOL uses type 1 (multipart), which is not handled here.
+       // There are no PHP functions to parse embedded messages,
+       // so this just appends the raw source to the main message.
+//     elseif ($p->type==2 && $data) {
+//             $plainmsg .= $data."\n\n";
+//     }
+
+       // SUBPART RECURSION
+       if (isset($p->parts) and $p->parts) {
+               $x = "";
+               foreach ($p->parts as $partno0=>$p2) {
+                       $x .=  email_get_part($mbox,$uid,$p2,$partno . '.' . ($partno0+1), $subtype);  // 1.2, 1.2.1, etc.
+                       //if($x)
+                       //      return $x;
                }
-    }
+               return $x;
+       }
 }
 
 
@@ -216,6 +241,53 @@ function email_header_encode($in_str, $charset) {
         $out_str = $start . $out_str . $end;
     }
     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);
+}
index d8f1a24f1328364a2e022b98ccf75861d7b80449..65920380b5d4c8ef2b63ef4e3e9f6cf197242de1 100755 (executable)
@@ -258,7 +258,7 @@ function html2bbcode($message)
                                        "[hr]\n",
                                        "\n[list",
                                        "[/list]\n",
-                                       "\n[/list]",
+                                       "\n[/",
                                        "[list]\n",
                                        "[list=1]\n",
                                        "\n[*]"),
@@ -268,7 +268,7 @@ function html2bbcode($message)
                                        "[hr]",
                                        "[list",
                                        "[/list]",
-                                       "[/list]",
+                                       "[/",
                                        "[list]",
                                        "[list=1]",
                                        "[*]"),
diff --git a/include/html2plain.php b/include/html2plain.php
new file mode 100644 (file)
index 0000000..2a4cf66
--- /dev/null
@@ -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("&nbsp;", " ", $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));
+}
+?>
index 8ec6252860893d4f5d72f9cbd19348975d612d69..4765cca06d155c9a9c19fc387c6a41ebc82f3a11 100755 (executable)
@@ -2,6 +2,7 @@
 
 require_once("boot.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
@@ -633,7 +634,7 @@ function notifier_run($argv, $argc){
                                                );
                                                if($r1 && $r1[0]['reply_to'])
                                                        $reply_to = $r1[0]['reply_to'];
-       
+
                                                $subject  = (($it['title']) ? email_header_encode($it['title'],'UTF-8') : t("\x28no subject\x29")) ;
 
                                                // only expose our real email address to true friends
@@ -646,10 +647,14 @@ function notifier_run($argv, $argc){
                                                if($reply_to)
                                                        $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']) {
-                                                       $header .= 'References: <' . $it['parent-uri'] . '>' . "\n";
+                                                       $headers .= 'References: <' . iri2msgid($it['parent-uri']) . '>' . "\n";
                                                        if(! strlen($it['title'])) {
                                                                $r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1",
                                                                        dbesc($it['parent-uri'])
@@ -666,13 +671,16 @@ function notifier_run($argv, $argc){
                                                        }
                                                }
 
-                                               $headers .= 'MIME-Version: 1.0' . "\n";
-                                               $headers .= 'Content-Type: text/html; charset=UTF-8' . "\n";
+                                               /*$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";
                                                $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);
-                                               mail($addr, $subject, $message, $headers);
+                                               mail($addr, $subject, $message, $headers);*/
+                                               email_send($addr, $subject, $headers, $it);
                                        }
                                        break;
                                case NETWORK_DIASPORA:
@@ -719,7 +727,7 @@ function notifier_run($argv, $argc){
                                                // we are the relay - send comments, likes and unlikes to our conversants
                                                diaspora_send_relay($target_item,$owner,$contact);
                                                break;
-                                       }               
+                                       }
                                        elseif(($top_level) && (! $walltowall)) {
                                                // currently no workable solution for sending walltowall
                                                diaspora_send_status($target_item,$owner,$contact);
index 3e7a1e9b428e1068cbf4209f74c5173ea8c315a2..cfbc46b87e9d08c5ee5728caa8099ee7a52763ee 100755 (executable)
@@ -1,6 +1,7 @@
 <?php
 
 require_once("boot.php");
+require_once("include/quoteconvert.php");
 
 
 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.
 
                                                        $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) {
                                                                $refs_arr = explode(' ', $raw_refs);
                                                                if(count($refs_arr)) {
                                                                        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);
                                                                $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'])
                                                                        );
                                                                }
+                                                               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;
                                                        }
-                                                       $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);
 
                                                        $r = email_get_msg($mbox,$msg_uid);
@@ -463,15 +494,24 @@ function poller_run($argv, $argc){
                                                                logger("Mail: can't fetch msg ".$msg_uid);
                                                                continue;
                                                        }
-                                                       $datarray['body'] = escape_tags($r['body']);
+                                                       $datarray['body'] = escape_tags(convertquote($r['body'], false));
 
                                                        logger("Mail: Importing ".$msg_uid);
 
                                                        // 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
 
-                                                       if(! stristr($meta->from,$contact['addr']))
-                                                               $datarray['body'] = t('From: ') . escape_tags($meta->from) . "\n\n" . $datarray['body'];
+                                                       if(! stristr($meta->from,$contact['addr'])) {
+                                                               $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['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",
                                                                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;
+                                                       }
                                                }
                                        }
 
@@ -501,7 +559,7 @@ function poller_run($argv, $argc){
                        }
                        elseif($contact['network'] === NETWORK_FACEBOOK) {
                                // This is picked up by the Facebook plugin on a cron hook.
-                               // Ignored here.                        
+                               // Ignored here.
                        }
 
                        if($xml) {
diff --git a/include/quoteconvert.php b/include/quoteconvert.php
new file mode 100644 (file)
index 0000000..3aee932
--- /dev/null
@@ -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);
+}
+?>
index 91f4325dad3b73a2d0495e1e356d485a1afbf834..90eb9dbd78870b02451d6cd88385a52031e59456 100755 (executable)
@@ -110,13 +110,15 @@ function settings_post(&$a) {
        if(($a->argc > 1) && ($a->argv[1] == 'connectors')) {
 
                if(x($_POST['imap-submit'])) {
-                       $mail_server      = ((x($_POST,'mail_server')) ? $_POST['mail_server'] : '');
-                       $mail_port        = ((x($_POST,'mail_port')) ? $_POST['mail_port'] : '');
-                       $mail_ssl         = ((x($_POST,'mail_ssl')) ? strtolower(trim($_POST['mail_ssl'])) : '');
-                       $mail_user        = ((x($_POST,'mail_user')) ? $_POST['mail_user'] : '');
-                       $mail_pass        = ((x($_POST,'mail_pass')) ? trim($_POST['mail_pass']) : '');
-                       $mail_replyto     = ((x($_POST,'mail_replyto')) ? $_POST['mail_replyto'] : '');
-                       $mail_pubmail     = ((x($_POST,'mail_pubmail')) ? $_POST['mail_pubmail'] : '');
+                       $mail_server       = ((x($_POST,'mail_server')) ? $_POST['mail_server'] : '');
+                       $mail_port         = ((x($_POST,'mail_port')) ? $_POST['mail_port'] : '');
+                       $mail_ssl          = ((x($_POST,'mail_ssl')) ? strtolower(trim($_POST['mail_ssl'])) : '');
+                       $mail_user         = ((x($_POST,'mail_user')) ? $_POST['mail_user'] : '');
+                       $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_pubmail      = ((x($_POST,'mail_pubmail')) ? $_POST['mail_pubmail'] : '');
 
 
                        $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
@@ -142,11 +144,14 @@ function settings_post(&$a) {
                                        );
                                }
                                $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",
                                        dbesc($mail_server),
                                        intval($mail_port),
                                        dbesc($mail_ssl),
                                        dbesc($mail_user),
+                                       intval($mail_action),
+                                       dbesc($mail_movetofolder),
                                        dbesc($mail_replyto),
                                        intval($mail_pubmail),
                                        intval(local_user())
@@ -218,8 +223,8 @@ function settings_post(&$a) {
        $openid           = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url']))   : '');
        $maxreq           = ((x($_POST,'maxreq'))     ? intval($_POST['maxreq'])             : 0);
        $expire           = ((x($_POST,'expire'))     ? intval($_POST['expire'])             : 0);
-       
-       
+
+
        $expire_items     = ((x($_POST,'expire_items')) ? intval($_POST['expire_items'])         : 0);
        $expire_notes     = ((x($_POST,'expire_notes')) ? intval($_POST['expire_notes'])         : 0);
        $expire_starred   = ((x($_POST,'expire_starred')) ? intval($_POST['expire_starred']) : 0);
@@ -561,23 +566,25 @@ function settings_content(&$a) {
                $r = null;
        }
 
-       $mail_server  = ((count($r)) ? $r[0]['server'] : '');
-       $mail_port    = ((count($r) && intval($r[0]['port'])) ? intval($r[0]['port']) : '');
-       $mail_ssl     = ((count($r)) ? $r[0]['ssltype'] : '');
-       $mail_user    = ((count($r)) ? $r[0]['user'] : '');
-       $mail_replyto = ((count($r)) ? $r[0]['reply_to'] : '');
-       $mail_pubmail = ((count($r)) ? $r[0]['pubmail'] : 0);
-       $mail_chk     = ((count($r)) ? $r[0]['last_check'] : '0000-00-00 00:00:00');
+       $mail_server       = ((count($r)) ? $r[0]['server'] : '');
+       $mail_port         = ((count($r) && intval($r[0]['port'])) ? intval($r[0]['port']) : '');
+       $mail_ssl          = ((count($r)) ? $r[0]['ssltype'] : '');
+       $mail_user         = ((count($r)) ? $r[0]['user'] : '');
+       $mail_replyto      = ((count($r)) ? $r[0]['reply_to'] : '');
+       $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');
+
 
-               
        $tpl = get_markup_template("settings_connectors.tpl");
                $o .= replace_macros($tpl, array(
                        '$title'        => t('Connector Settings'),
                        '$tabs'         => $tabs,
-               
+
                '$diasp_enabled' => $diasp_enabled,
                '$ostat_enabled' => $ostat_enabled,
-               
+
                '$h_imap' => t('Email/Mailbox Setup'),
                '$imap_desc' => t("If you wish to communicate with email contacts using this service \x28optional\x29, please specify how to connect to your mailbox."),
                '$imap_lastcheck' => array('imap_lastcheck', t('Last successful email check:'), $mail_chk,''),
@@ -589,8 +596,10 @@ function settings_content(&$a) {
                '$mail_pass'    => array('mail_pass',    t('Email password:'), '', ''),
                '$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, ''),
-               '$submit' => t('Submit'),               
-               
+               '$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'),
+
 
 
                        '$settings_connectors' => $settings_connectors
@@ -598,7 +607,7 @@ function settings_content(&$a) {
                return $o;
        }
 
-               
+
        require_once('include/acl_selectors.php');
 
        $p = q("SELECT * FROM `profile` WHERE `is-default` = 1 AND `uid` = %d LIMIT 1",
index 18dc90cce0b40218eee7f804197ab15234e53cc4..8a2d891cab42c195f12e532cb80bbfc06a632815 100755 (executable)
@@ -1,6 +1,6 @@
 <?php
 
-define( 'UPDATE_VERSION' , 1126 );
+define( 'UPDATE_VERSION' , 1127 );
 
 /**
  *
@@ -1090,3 +1090,7 @@ function update_1125() {
   ) 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`");
+}
index 0f3357873e8bae5a3eb6f104a236d4552bcd67e9..9493c8bf7795d24e904ec44925944694023b0f31 100755 (executable)
@@ -23,6 +23,8 @@ $settings_connectors
        {{inc field_password.tpl with $field=$mail_pass }}{{endinc}}
        {{inc field_input.tpl with $field=$mail_replyto }}{{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" >
                <input type="submit" id="imap-submit" name="imap-submit" class="settings-submit" value="$submit" />
index 5314b52843021c67988bcfd31f5a175f86904dc2..18d0fc620d45b3c582d46688a0c26648ded3e357 100644 (file)
@@ -1,6 +1,7 @@
 // Quattro Theme LESS file
 
 // "Echo" palette from Inkscape
+@Yellow1 : #fce94f;
 @Blue1:rgb(25,174,255);
 @Blue2:rgb(0,132,200);
 @Blue3:rgb(0,92,148);
@@ -71,6 +72,7 @@
 @NoticeBackgroundColor: #511919;
 
 @ThreadBackgroundColor: #f6f7f8;
+@ShinyBorderColor: @Yellow1;
 
 @CommentBoxEmptyColor: @Grey3;
 @CommentBoxEmptyBorderColor: @Grey3;
@@ -91,4 +93,4 @@
 @JotPermissionUnlockBackgroundColor: @Grey2;
 @JotPermissionLockBackgroundColor: @Grey4;
 @JotLoadingBackgroundColor: @Grey1;
-
+@JotPreviewBackgroundColor: @Yellow1;
index f87327703fb9a1324bbafcc14cfe169f8df9402b..e314fba1fdd29d20ca5da45c053775daba8ce0c3 100644 (file)
        &.link          { background-image: url("../../../images/icons/@{size}/link.png"); }
        &.lock          { background-image: url("../../../images/icons/@{size}/lock.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"); }
        
 }
 
index 671577303714fda7f2fdf80c461ea4198e234da5..9d26082616a6730efbc16b41d47e999ebda023e8 100644 (file)
@@ -3,7 +3,7 @@
 /* global */
 body {
        font-family: Liberation Sans,helvetica,arial,clean,sans-serif;
-       font-size: 10px;
+       font-size: 11px;
        background-color: @BodyBackground;
        color: @BodyColor;
        margin: 50px 0px 0px 0px;
@@ -44,6 +44,9 @@ a:hover {color: @LinkHover; text-decoration: underline; }
 .hidden { display: none; }
 .clear { clear: both; }
 
+.fakelink { color: @Link; text-decoration: none; cursor:pointer; }
+.fakelink:hover { color: @LinkHover; text-decoration: underline; }
+
 code {
        font-family: Courier, monospace;
        white-space: pre;
@@ -55,6 +58,23 @@ code {
        padding: 10px;
        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 {
@@ -234,7 +254,8 @@ ul.menu-popup {
 
 
 #nav-notifications-menu {
-       width: 400px;
+       width: 400px; max-height: 550px;
+       overflow: auto;
        img { float: left; margin-right: 5px; }
        .contactname { font-weight: bold; }
        .notif-when { font-size: 10px; color: @MenuItemDetail; display: block; }
@@ -288,16 +309,99 @@ aside {
        .allcontact-link { float: right; margin: 5px 0px; }
        .contact-block-content {
                clear: both;
-               overflow: auto; height: auto;
+               overflow: hidden;
+               height: auto;
        }
+       /*.contact-block-div { width:60px; height: 60px; }*/
        .contact-block-link {
                float: left;
                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 {
        margin-bottom: 2em;
@@ -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; }
@@ -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 { 
        width: 48px; height: 48px;
@@ -462,8 +612,14 @@ section {
 
 .contact-wrapper {
        float: left;
-       width: 90px;
+       width: 300px;
        height: 90px;
+       padding-right: 10px;
+       margin: 0 10px 10px 0px;
+       .contact-photo-wrapper { 
+               float: left; 
+               margin-right: 10px;
+       }
        .contact-photo { 
                width: 80px; height: 80px;
                img { width: 80px; height: 80px; }
@@ -482,8 +638,12 @@ section {
                img { width: 175px; height: 175px; }
        }
 }
-.contact-name { text-align: center; font-weight: bold; }
-.contact-details { color: @Grey3;}
+.contact-name { font-weight: bold; padding-top: 15px; }
+.contact-details { 
+       color: @Grey3; white-space: nowrap;
+       overflow: hidden;
+       text-overflow: ellipsis;
+}
 
 /* editor */
 .jothidden { display: none; }
@@ -794,6 +954,58 @@ ul.tabs {
 
 #profile-edit-links li {
        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 */
@@ -828,6 +1040,28 @@ ul.tabs {
        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 */
 footer { height: 100px; display: table-row; }
+
+.pager {
+    margin-top: 25px;
+    clear: both;
+}
+
index 9cd3c8e2ef9769fa7aef2d45849029da7f3fea2f..372e0d0340b82b023ace1bdde91223f77c4d53fe 100755 (executable)
@@ -1,7 +1,7 @@
 
 <div class="wall-item-decor">
-       <span class="icon s22 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 }} 
+       <span class="icon star $isstarred" id="starred-$id" title="$star.starred">$star.starred</span>
+       {{ 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;" />
 </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> 
                        <span class="wall-item-ago">- &nbsp;
                                {{ 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>
                </div>
                <div class="wall-item-content">
index 89dd98146940547a296e83002003b4e6dc8ecac2..39f4ffea47657fc5c7bbc6fccd8fe2fa1230e57a 100644 (file)
@@ -334,11 +334,15 @@ h4 {
   font-size: 1.1em;
 }
 
-a {color: #3e3e8c;
-text-decoration: none;
+a {
+       color: #36C;
+       /* color: #3e3e8c; */
+       text-decoration: none;
+}
+a:hover {
+       /* color: blue; */
+       text-decoration: underline
 }
-a:hover {color: blue;
-text-decoration: underline}
 
 .wall-item-name-link {
 /*  float: left;*/
@@ -364,12 +368,13 @@ text-decoration: underline}
   clear: both;
 }
 .fakelink {
-  color: #3e3e8c;
+  color: #36c;
+  /* color: #3e3e8c; */
   text-decoration: none;
   cursor: pointer;
 }
 .fakelink:hover {
-  color: blue;
+  /* color: blue; */
   /*color: #005c94; */
   text-decoration: underline;
 }
@@ -402,6 +407,12 @@ code {
 .tool {
   height: auto;
   overflow: auto;
+  padding: 3px;
+}
+#saved-search-ul .tool:hover,
+#nets-sidebar .tool:hover,
+#sidebar-group-list .tool:hover {
+       background: #EEE;
 }
 .tool .label {
   float: left;
@@ -409,6 +420,12 @@ code {
 .tool .action {
   float: right;
 }
+.tool a {
+  color: #000;
+}
+.tool a:hover {
+  text-decoration: none;
+}
 /* popup notifications */
 div.jGrowl div.notice {
   background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
@@ -496,7 +513,7 @@ nav ul {
 nav ul li {
   list-style: none;
   margin: 0px;
-  padding: 0px;
+  /* padding: 1px 1px 3px 1px; */
   float: left;
 }
 nav ul li .menu-popup {
@@ -536,7 +553,8 @@ nav .nav-menu.selected {
 nav .nav-notify {
   display: none;
   position: absolute;
-  background-color: #19aeff;
+  background-color: #36c;
+  /* background-color: #19aeff; */
   -moz-border-radius: 5px 5px 5px 5px;
   -webkit-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 {
   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 {
   position: absolute;
   display: none;
-  width: 10em;
+  width: 11em;
   background: #ffffff;
   color: #2d2d2d;
   margin: 0px;
@@ -644,6 +677,15 @@ ul.menu-popup .empty {
   max-height: 550px;
   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 {
   float: left;
   margin-right: 5px;
@@ -656,6 +698,13 @@ ul.menu-popup .empty {
   color: #9eabb0;
   display: block;
 }
+
+.notif-image {
+        width: 32px;
+        height: 32px;
+        padding: 7px 7px 0px 0px;
+}
+
 /* aside */
 aside {
   display: table-cell;
@@ -711,7 +760,8 @@ aside #dfrn-request-link {
 }
 aside #dfrn-request-link:hover {
   text-decoration: none;
-  background-color: #19aeff;
+  background-color: #36c;
+  /* background-color: #19aeff; */
 }
 aside #profiles-menu {
   width: 20em;
@@ -813,7 +863,7 @@ section {
   display: table-cell;
   vertical-align: top;
   width: 800px;
-  padding: 0px 20px 0px 10px;
+  padding: 0px 0px 0px 10px;
 }
 /* wall item */
 .tread-wrapper {
@@ -886,7 +936,7 @@ section {
 }
 
 .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 {
   display: table-cell;
@@ -946,7 +996,7 @@ section {
   /*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;
   left: 15px !important;
 }
@@ -985,7 +1035,7 @@ section {
   /*background: url(../../../images/icons/22/user.png) no-repeat center center;*/
 
 }
-.comment-edit-preview .contact-photo-menu-button {
+.comment-edit-preview {
   top: 15px !important;
   left: 15px !important;
 }
@@ -1000,6 +1050,16 @@ section {
   padding: 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 {
   padding-top: 1px;
   padding-bottom: 2px;
@@ -1056,12 +1116,7 @@ section {
   width: 48px;
   height: 48px;
 }
-.contact-photo-menu-button {
-  display: none;
-  position: absolute;
-  left: -2px;
-  top: 31px;
-}
+
 .contact-wrapper {
   float: left;
   width: 90px;
@@ -1076,26 +1131,21 @@ section {
   width: 80px;
   height: 80px;
 }
-.contact-wrapper .contact-photo-menu-button {
+.contact-wrapper {
   left: 0px;
   top: 63px;
 }
-.directory-item {
-  float: left;
-  width: 200px;
-  height: 200px;
-}
-.directory-item .contact-photo {
-  width: 175px;
-  height: 175px;
+.contact-photo {
+  width: 48px;
+  height: 48px;
 }
-.directory-item .contact-photo img {
-  width: 175px;
-  height: 175px;
+.contact-photo img {
+  width: 48px;
+  height: 48px;
 }
 .contact-name {
-  text-align: center;
-  font-weight: bold;
+  /* text-align: center; */
+  /*font-weight: bold;*/
   font-size: 12px;
 }
 .contact-details {
@@ -1459,7 +1509,8 @@ ul.tabs li .active {
 }
 /* contacts */
 .contact-entry-wrapper {
-  width: 50px;
+  width: 120px;
+  height: 120px;
   float: left;
 }
 /* photo */
@@ -1482,10 +1533,48 @@ ul.tabs li .active {
   width: 80px;
   height: 80px;
 }
-.profile-match-wrapper .contact-photo-menu-button {
+.profile-match-wrapper {
   left: 0px;
   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 */
 footer {
   height: 100px;
@@ -1527,397 +1616,338 @@ blockquote {
 #prof-separator { display: none;}
 */
 
-#prvmail-wrapper, .mail-conv-detail, .mail-list-detail {
-        position: relative;
-        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%;
+#prvmail-to-label, #prvmail-subject-label, #prvmail-message-label {
+       margin-bottom: 10px;
+       margin-top: 20px;
 }
 
-.mail-list-outside-wrapper {
-        margin-top: 20px;
+#prvmail-submit {
+       float: left;
+       margin-top: 10px;
+       margin-right: 30px;
+}
+#prvmail-upload-wrapper,
+#prvmail-link-wrapper,
+#prvmail-rotator-wrapper {
+       float: left;
+       margin-top: 10px;
+       margin-right: 10px;
+       width: 24px;
 }
 
-.mail-list-sender {
-        float: left;
-        padding: 5px;
-        background-color: #efefef;
-        border: 2px dotted #eeeeee;
-        -moz-box-shadow: 3px 3px 4px #959494;
-        -webkit-box-shadow: 3px 3px 4px #959494;
-        box-shadow: 3px 3px 4px #959494;
+#prvmail-end {
+       clear: both;
 }
 
+.mail-list-sender,
 .mail-list-detail {
-        margin-left: 100px;
-        width: 300px;
-        min-height: 70px;
-        padding: 20px;
-        padding-top:10px;
-        border: 1px solid #dddddd;
-        }
-        
-.mail-list-sender-name {
-        font-size: 1.1em;
-        display: inline;
-        font-variant:small-caps;
+       float: left;
 }
-
-.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-detail {
+       margin-left: 20px;
 }
 
 .mail-list-subject {
-        clear: block;
-        font-size: 1.2em;
-        padding-top: 20px;
-        padding-right: 50px;
+       font-size: 1.1em;
+       margin-top: 10px;
 }
-
-.mail-list-subject a {
-        color: #626262;
+a.mail-list-link {
+    display: block;
+    font-size: 1.3em;
+    padding: 4px 0;
 }
 
-.mail-list-delete-wrapper { float: right;}
+/*
+*a.mail-list-link:hover {
+*      background-color: #15607B;
+*      color: #F5F6FB;
+*}
+*/
+
 .mail-list-outside-wrapper-end {
-        clear: both;
+       clear: both;
 }
 
-.mail-conv-outside-wrapper {
-        margin-bottom: 10px;
+.mail-list-outside-wrapper {
+       margin-top: 30px;
 }
 
-.mail-conv-sender {float: left; margin: 0px 5px 5px 0px; }
-.mail-conv-sender-photo {
-        width: 64px;
-        height: 64px;
+.mail-list-delete-wrapper {
+       float: right;
+       margin-right: 30px;
+       margin-top: 15px;
 }
 
-.mail-conv-sender-name { float: left; font-variant:small-caps; font-style: bold; }
-.mail-conv-date { float: right; font-variant:small-caps; }
-.mail-conv-subject { clear: right; font-weight: bold; font-size: 1.2em }
-.mail-conv-body {
-        clear: both;
+.mail-list-delete-icon {
+       border: none;
 }
 
+.mail-conv-sender,
 .mail-conv-detail {
-        width: 500px;
-        padding: 30px;
-        padding-bottom: 10px;
-        margin-left: 20px;
-        margin-bottom: 0px;
-        vertical-align: middle;
-        margin: auto;
-        border: 1px solid #dddddd;
-}
-.mail-conv-break { display: none; border: none;}
-.mail-conv-delete-wrapper { padding-top: 10px; width: 510px; text-align: right; }
-
-/* ========== */
-/* = Events = */
-/* ========== */
-.clear { clear: both; }
-.eventcal {
        float: left;
-       font-size: 20px;
-       padding: 20px;
+}
+.mail-conv-detail {
+       margin-left: 20px;
+       width: 500px;
 }
 
-.vevent {
-       position: relative;
-       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: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-right: 10px;
-       text-align:center;
-       font-size: 1.2em;
-       font-weight:bolder;
+.mail-conv-subject {
+    font-size: 1.4em;
+    margin: 10px 0;
 }
 
- .vevent .event-location{
-       margin-left: 10px;
-       margin-right: 10px;
-       font-size: 1em;
-       font-style: oblique;
-       text-align: center;
-       
+.mail-conv-outside-wrapper-end {
+       clear: both;
 }
 
-.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;
+.mail-conv-outside-wrapper {
+       margin-top: 30px;
 }
 
-#new-event-link{
-       width: 130px;
-       padding: 7px;
-       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;
+.mail-conv-delete-wrapper {
+       float: right;
+       margin-right: 30px;
+       margin-top: 15px;
+}
+.mail-conv-break {
+       clear: both;
+}
+
+.mail-conv-delete-icon {
+       border: none;
 }
 
-#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;
+/* ========== */
+/* = Events = */
+/* ========== */
+.eventcal {
+        float: left;
+        font-size: 20px;
 }
 
-#new-event-link:active {
-       background-color: #b20202;
-       position:relative;
-       top:1px;
+.vevent {
+        border: 1px solid #CCCCCC;
+}
+.vevent .event-description, .vevent .event-location {
+        margin-left: 10px;
+        margin-right: 10px;
+}
+.vevent .event-start {
+        margin-left: 10px;
+        margin-right: 10px;
 }
 
-#new-event-link a {
-       color: #efefef;
-       text-align: center;
+#new-event-link {
+        margin-bottom: 10px;
 }
 
 .edit-event-link, .plink-event-link {
-       float: left;
-       margin-top: 4px;
-       margin-right: 4px;
-       margin-bottom: 15px;
+        float: left;
+        margin-top: 4px;
+        margin-right: 4px;
+        margin-bottom: 15px;
 }
 
 .event-description:before {
-       content: url('calendar.png');
-       margin-right: 15px;
-       vertical-align: middle;
+        content: url('../../../images/calendar.png');
+        margin-right: 15px;
 }
 
 .event-start, .event-end {
-       margin-left: 10px;
-       width: 330px;
+        margin-left: 10px;
+        width: 330px;
+        clear: both;
 }
 
 .event-start .dtstart, .event-end .dtend {
-       float: right;
+        float: right;
 }
 
 .event-list-date {
-       color: #626262;
-       margin-bottom: 10px;
-       font-variant:small-caps;
-       font-stretch:condensed;
+        margin-bottom: 10px;
 }
 
 .prevcal, .nextcal {
-       float: left;
-       margin-left: 32px;
-       margin-right: 32px;
-       margin-top: 64px;
+        float: left;
+        margin-left: 32px;
+        margin-right: 32px;
+        margin-top: 64px;
 }
-
 .event-calendar-end {
-       clear: both;
+        clear: both;
 }
 
 .calendar {
-       width: 300px;
-       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;        
+        font-family: Courier, monospace;
+}
+.today {
+        font-weight: bold;
+        color: #FF0000;
 }
 
-.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;
+.settings-block {
+        border: 1px solid #AAA;
+        margin: 10px;
+        padding: 10px;
 }
 
-tr {
-       border: 1px solid #eeeeee;
+.app-title {
+        margin: 10px;
 }
 
-.calendar td {
-       font-size: 14px;
-       text-align: center;
-       padding: 3px 0px;
+#identity-manage-desc {
+        margin-top:15px;
+        margin-bottom: 15px;
 }
 
-.calendar td > a {
-       background-color: #cdcdcd;
-       padding: 2px;
-       color: #000;
+#identity-manage-choose {
+        margin-bottom: 15px;
 }
 
-.calendar th {
-       font-size: 16px;        
+#identity-submit {
+        margin-top: 20px;
 }
 
-.today {
-       font-weight: bold;
-       text-align: center;
-       background-color: #b20202;
-       color: #fff;
+#photo-prev-link, #photo-next-link {
+        padding: 10px;
+        float: left;
 }
-#event-start-text, 
-#event-finish-text {
-       margin-top: 10px;
-       margin-bottom: 5px;
+
+#photo-photo {
+        float: left;
 }
 
-#event-nofinish-checkbox, 
-#event-nofinish-text, 
-#event-adjust-checkbox, 
-#event-adjust-text,
-#event-share-checkbox {
-       float: left;
+#photo-photo-end {
+        clear: both;
 }
 
-#event-datetime-break {
-       margin-bottom: 10px;
+.profile-match-photo {
+        float: left;
+        text-align: center;
+        width: 120px;
 }
 
-#event-nofinish-break, 
-#event-adjust-break,
-#event-share-break {
-       clear: both;
+.profile-match-name {
+        float: left;
+        text-align: center;
+        width: 120px;
+        overflow: hidden;
 }
 
-#event-desc-text, 
-#event-location-text {
-       margin-top: 10px;
-       margin-bottom: 5px;
+.profile-match-break,
+.profile-match-end {
+        clear: both;
 }
 
-#event-submit {
-       margin-top: 10px;
+.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 = */
 /* ============= */
-
+/* 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 {
-       float: left;
-       margin: 50px 50px 0px 0px;
+  float: left;
+  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;
+}
+
+.photo-top-image-wrapper {
+        position: relative;
+        float: left;
+        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-details {
-       font-size: 0.9em;
-       font-variant: small-caps;
-       width: 160px;
+#photo-top-links {
+        margin-bottom: 30px;
+        margin-left: 30px;
 }
 
-.directory-name {
-       font-size: 1em;
-       font-variant: small-caps;
-       width: 150px;   
+#photos-upload-newalbum-div {
+        float: left;
+        width: 175px;
 }
+
index 03cbd4c0b74ec41385e772041f062b667b2a682c..abd2862a11f2211cb45b698839db777679075f8b 100644 (file)
@@ -1,7 +1,7 @@
 {{ if $indent }}{{ else }}
 <div class="wall-item-decor">
-       <span class="icon s22 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 }} 
+       <span class="icon star $isstarred" id="starred-$id" title="$star.starred">$star.starred</span>
+       {{ 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;" />
 </div>
 {{ endif }}
@@ -23,8 +23,9 @@
                </div>
                        <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> 
-                       <span class="wall-item-ago">- &nbsp;
+                       <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 $lock }} - <span class="fakelink" style="color: #999" onclick="lockview(event,$id);">$lock</span> {{ endif }}
                        </span>
                        </div>
                <div class="wall-item-content">
index 3357bd8e0286cee17904021a15513eba88ac6ccb..2301da1d164fcc0a974df1ccf1d1a5343bd6ee20 100644 (file)
@@ -1,7 +1,7 @@
 {{ if $indent }}{{ else }}
 <div class="wall-item-decor">
-       <span class="icon s22 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 }} 
+       <span class="icon star $isstarred" id="starred-$id" title="$star.starred">$star.starred</span>
+       {{ 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;" />
 </div>
 {{ 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>
                                 $vwall <span class="wall-item-ago">- &nbsp;
                                        {{ 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>
                        </div>