diff options
84 files changed, 2846 insertions, 1362 deletions
@@ -1,4 +1,4 @@ -Copyright (c) 2010, 2011 the Friendica Project +Copyright (c) 2010-2012 the Friendica Project All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy @@ -0,0 +1,4 @@ +Friendica Social Communications Server +====================================== + +Welcome to the free social web. @@ -9,9 +9,9 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1263' ); +define ( 'FRIENDICA_VERSION', '2.3.1267' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); -define ( 'DB_UPDATE_VERSION', 1125 ); +define ( 'DB_UPDATE_VERSION', 1130 ); define ( 'EOL', "<br />\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/database.sql b/database.sql index f4199cb55..806f75419 100755 --- a/database.sql +++ b/database.sql @@ -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; @@ -751,14 +752,18 @@ CREATE TABLE IF NOT EXISTS `notify` ( `msg` MEDIUMTEXT NOT NULL , `uid` INT NOT NULL , `link` CHAR( 255 ) NOT NULL , +`parent` INT( 11 ) NOT NULL, `seen` TINYINT( 1 ) NOT NULL DEFAULT '0', `verb` CHAR( 255 ) NOT NULL, `otype` CHAR( 16 ) NOT NULL, INDEX ( `hash` ), INDEX ( `type` ), INDEX ( `uid` ), +INDEX ( `link` ), +INDEX ( `parent` ), INDEX ( `seen` ), -INDEX ( `date` ) +INDEX ( `date` ), +INDEX ( `otype` ) ) ENGINE = MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `item_id` ( @@ -810,5 +815,44 @@ INDEX ( `uid` ) ) ENGINE = MyISAM DEFAULT CHARSET=utf8; +-- +-- Table structure for table `notify-threads` +-- +-- notify-id: notify.id of the first notification of this thread +-- master-parent-item: item.id of the parent item +-- parent-item: item.id of the imediate parent (only for multi-thread) +-- not used yet. +-- receiver-uid: user.uid of the receiver of this notification. +-- +-- If we query for a master-parent-item and receiver-uid... +-- * Returns 1 item: this is not the parent notification, +-- so just "follow" the thread (references to this notification) +-- * Returns no item: this is the first notification related to +-- this parent item. So, create the record and use the message-id +-- header. + + +CREATE TABLE IF NOT EXISTS `notify-threads` ( +`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , +`notify-id` INT NOT NULL, +`master-parent-item` INT( 10 ) unsigned NOT NULL DEFAULT '0', +`parent-item` INT( 10 ) unsigned NOT NULL DEFAULT '0', +`receiver-uid` INT NOT NULL, +INDEX ( `master-parent-item` ), +INDEX ( `receiver-uid` ) +) ENGINE = MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `spam` ( +`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , +`uid` INT NOT NULL, +`spam` INT NOT NULL DEFAULT '0', +`ham` INT NOT NULL DEFAULT '0', +`term` CHAR(255) NOT NULL, +`date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', +INDEX ( `uid` ), +INDEX ( `spam` ), +INDEX ( `ham` ), +INDEX ( `term` ) +) ENGINE = MyISAM DEFAULT CHARSET=utf8; diff --git a/include/Scrape.php b/include/Scrape.php index 52405ae2d..4c4ad3cdb 100755 --- a/include/Scrape.php +++ b/include/Scrape.php @@ -230,11 +230,16 @@ function scrape_feed($url) { $ret = array(); $s = fetch_url($url); - if(! $s) + $headers = $a->get_curl_headers(); + $code = $a->get_curl_code(); + + logger('scrape_feed: returns: ' . $code . ' headers=' . $headers, LOGGER_DEBUG); + + if(! $s) { + logger('scrape_feed: no data returned for ' . $url); return $ret; + } - $headers = $a->get_curl_headers(); - logger('scrape_feed: headers=' . $headers, LOGGER_DEBUG); $lines = explode("\n",$headers); if(count($lines)) { @@ -258,8 +263,10 @@ function scrape_feed($url) { logger('scrape_feed: parse error: ' . $e); } - if(! $dom) + if(! $dom) { + logger('scrape_feed: failed to parse.'); return $ret; + } $head = $dom->getElementsByTagName('base'); @@ -445,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']); } } } @@ -556,7 +572,7 @@ function probe_url($url, $mode = PROBE_NORMAL) { if($check_feed) { $feedret = scrape_feed(($poll) ? $poll : $url); - logger('probe_url: scrape_feed returns: ' . print_r($feedret,true), LOGGER_DATA); + logger('probe_url: scrape_feed ' . (($poll)? $poll : $url) . ' returns: ' . print_r($feedret,true), LOGGER_DATA); if(count($feedret) && ($feedret['feed_atom'] || $feedret['feed_rss'])) { $poll = ((x($feedret,'feed_atom')) ? unamp($feedret['feed_atom']) : unamp($feedret['feed_rss'])); if(! x($vcard)) diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index bcef86616..8487f845a 100755 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -55,42 +55,12 @@ function diaspora2bb($s) { $s = preg_replace("/(\[code\])+(.*?)(\[\/code\])+/ism","[code]$2[/code]", $s); // Don't show link to full picture (until it is fixed) - $s = scale_diaspora_images($s, false); + $s = scale_external_images($s, false); return $s; } -function scale_diaspora_images($s,$include_link = true) { - - $matches = null; - $c = preg_match_all('/\[img\](.*?)\[\/img\]/ism',$s,$matches,PREG_SET_ORDER); - if($c) { - require_once('include/Photo.php'); - foreach($matches as $mtch) { - logger('scale_diaspora_image: ' . $mtch[1]); - $i = fetch_url($mtch[1]); - if($i) { - $ph = new Photo($i); - if($ph->is_valid()) { - if($ph->getWidth() > 600 || $ph->getHeight() > 600) { - $ph->scaleImage(600); - $new_width = $ph->getWidth(); - $new_height = $ph->getHeight(); - logger('scale_diaspora_image: ' . $new_width . 'w ' . $new_height . 'h' . 'match: ' . $mtch[0], LOGGER_DEBUG); - $s = str_replace($mtch[0],'[img=' . $new_width . 'x' . $new_height. ']' . $mtch[1] . '[/img]' - . "\n" . (($include_link) - ? '[url=' . $mtch[1] . ']' . t('view full size') . '[/url]' . "\n" - : ''),$s); - logger('scale_diaspora_image: new string: ' . $s, LOGGER_DEBUG); - } - } - } - } - } - return $s; -} - function stripdcode_br_cb($s) { return '[code]' . str_replace('<br />', "\n\t", $s[1]) . '[/code]'; } diff --git a/include/bbcode.php b/include/bbcode.php index 32053b4ec..cff26f5c8 100755..100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -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; } + diff --git a/include/config.php b/include/config.php index 92694f519..2cddda0b8 100755 --- a/include/config.php +++ b/include/config.php @@ -162,7 +162,7 @@ function del_config($family,$key) { if(x($a->config[$family],$key)) unset($a->config[$family][$key]); $ret = q("DELETE FROM `config` WHERE `cat` = '%s' AND `k` = '%s' LIMIT 1", - dbesc($cat), + dbesc($family), dbesc($key) ); return $ret; diff --git a/include/conversation.php b/include/conversation.php index 3d13a1179..2ef37694d 100755 --- a/include/conversation.php +++ b/include/conversation.php @@ -6,6 +6,11 @@ function localize_item(&$item){ $Text = $item['body']; + + + // find private image (w/data url) if present and convert image + // link to a magic-auth redirect. + $saved_image = ''; $img_start = strpos($Text,'[img]data:'); $img_end = strpos($Text,'[/img]'); @@ -232,7 +237,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $alike = array(); $dlike = array(); - + $o = ""; // array with html for each thread (parent+comments) $threads = array(); @@ -403,6 +408,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $toplevelprivate = false; // Take care of author collapsing and comment collapsing + // (author collapsing is currently disabled) // If a single author has more than 3 consecutive top-level posts, squash the remaining ones. // If there are more than two comments, squash all but the last 2. @@ -410,7 +416,9 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $toplevelprivate = (($toplevelpost && $item['private']) ? true : false); $item_writeable = (($item['writable'] || $item['self']) ? true : false); - /*if($blowhard == $item['cid'] && (! $item['self']) && ($mode != 'profile') && ($mode != 'notes')) { + // DISABLED + /* + if($blowhard == $item['cid'] && (! $item['self']) && ($mode != 'profile') && ($mode != 'notes')) { $blowhard_count ++; if($blowhard_count == 3) { $o .= '<div class="icollapse-wrapper fakelink" id="icollapse-wrapper-' . $item['parent'] @@ -424,7 +432,9 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { if($blowhard_count >= 3) $o .= '</div>'; $blowhard_count = 0; - }*/ + } + // END DISABLED + */ $comments_seen = 0; $comments_collapsed = false; @@ -436,7 +446,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { } else { // prevent private email from leaking into public conversation - if((! $toplevelpost) && (! toplevelprivate) && ($item['private']) && ($profile_owner != local_user())) + if((! $toplevelpost) && (! $toplevelprivate) && ($item['private']) && ($profile_owner != local_user())) continue; $comments_seen ++; } @@ -641,7 +651,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $body = prepare_body($item,true); $tmp_item = replace_macros($template,array( - '$type' => implode("",array_slice(split("/",$item['verb']),-1)), + '$type' => implode("",array_slice(explode("/",$item['verb']),-1)), '$tags' => $tags, '$body' => template_escape($body), '$id' => $item['item_id'], diff --git a/include/delivery.php b/include/delivery.php index cbf602a0b..c1ff07bd5 100755 --- a/include/delivery.php +++ b/include/delivery.php @@ -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; diff --git a/include/diaspora.php b/include/diaspora.php index 5896f1bfd..dca857a19 100755 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -794,15 +794,15 @@ function diaspora_reshare($importer,$xml) { if(strlen($source_xml->post->asphoto->objectId) && ($source_xml->post->asphoto->objectId != 0) && ($source_xml->post->asphoto->image_url)) { $body = '[url=' . notags(unxmlify($source_xml->post->asphoto->image_url)) . '][img]' . notags(unxmlify($source_xml->post->asphoto->objectId)) . '[/img][/url]' . "\n"; - $body = scale_diaspora_images($body,false); + $body = scale_external_images($body,false); } elseif($source_xml->post->asphoto->image_url) { $body = '[img]' . notags(unxmlify($source_xml->post->asphoto->image_url)) . '[/img]' . "\n"; - $body = scale_diaspora_images($body); + $body = scale_external_images($body); } elseif($source_xml->post->status_message) { $body = diaspora2bb($source_xml->post->status_message->raw_message); - $body = scale_diaspora_images($body); + $body = scale_external_images($body); } else { @@ -945,11 +945,11 @@ function diaspora_asphoto($importer,$xml) { if(strlen($xml->objectId) && ($xml->objectId != 0) && ($xml->image_url)) { $body = '[url=' . notags(unxmlify($xml->image_url)) . '][img]' . notags(unxmlify($xml->objectId)) . '[/img][/url]' . "\n"; - $body = scale_diaspora_images($body,false); + $body = scale_external_images($body,false); } elseif($xml->image_url) { $body = '[img]' . notags(unxmlify($xml->image_url)) . '[/img]' . "\n"; - $body = scale_diaspora_images($body); + $body = scale_external_images($body); } else { logger('diaspora_asphoto: no photo url found.'); @@ -1476,7 +1476,7 @@ function diaspora_photo($importer,$xml,$msg) { $link_text = '[img]' . $remote_photo_path . $remote_photo_name . '[/img]' . "\n"; - $link_text = scale_diaspora_images($link_text); + $link_text = scale_external_images($link_text); if(strpos($parent_item['body'],$link_text) === false) { $r = q("update item set `body` = '%s', `visible` = 1 where `id` = %d and `uid` = %d limit 1", diff --git a/include/email.php b/include/email.php index 3e6a8186d..659978b6e 100755 --- a/include/email.php +++ b/include/email.php @@ -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); +} diff --git a/include/enotify.php b/include/enotify.php index 1eb3b5476..a505f1f04 100755 --- a/include/enotify.php +++ b/include/enotify.php @@ -13,7 +13,9 @@ function notification($params) { $site_admin = sprintf( t('%s Administrator'), $sitename); $sender_name = $product; - $sender_email = t('noreply') . '@' . $a->get_hostname(); + $hostname = $a->get_hostname(); + $sender_email = t('noreply') . '@' . $hostname; + $additional_mail_header = ""; if(array_key_exists('item',$params)) { $title = $params['item']['title']; @@ -23,9 +25,12 @@ function notification($params) { $title = $body = ''; } + // e.g. "your post", "David's photo", etc. + $possess_desc = t('%s <!item_type!>'); + if($params['type'] == NOTIFY_MAIL) { - $subject = sprintf( t('New mail received at %s'),$sitename); + $subject = sprintf( t('[Friendica:Notify] New mail received at %s'),$sitename); $preamble = sprintf( t('%s sent you a new private message at %s.'),$params['source_name'],$sitename); $epreamble = sprintf( t('%s sent you %s.'),'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . t('a private message') . '[/url]'); @@ -36,10 +41,43 @@ function notification($params) { } if($params['type'] == NOTIFY_COMMENT) { +// logger("notification: params = " . print_r($params, true), LOGGER_DEBUG); + + $parent_id = $params['parent']; + + + // if it's a post figure out who's post it is. + + $p = null; + + if($params['otype'] === 'item' && $parent_id) { + $p = q("select * from item where id = %d and uid = %d limit 1", + intval($parent_id), + intval($params['uid']) + ); + } + + $possess_desc = str_replace('<!item_type!>',item_post_type($p[0]),$possess_desc); - $subject = sprintf( t('%s commented on an item at %s'), $params['source_name'], $sitename); + // "a post" + $dest_str = sprintf($possess_desc,'a'); + + // "George Bull's post" + if($p) + $dest_str = sprintf($possess_desc,sprintf( t("%s's"),$p[0]['author-name'])); + + // "your post" + if($p[0]['owner-name'] == $p[0]['author-name'] && $p[0]['wall']) + $dest_str = sprintf($possess_desc, t('your') ); + + // Some mail softwares relies on subject field for threading. + // So, we cannot have different subjects for notifications of the same thread. + // Before this we have the name of the replier on the subject rendering + // differents subjects for messages on the same thread. + + $subject = sprintf( t('[Friendica:Notify] Comment to conversation #%d by %s'), $parent_id, $params['source_name']); $preamble = sprintf( t('%s commented on an item/conversation you have been following.'), $params['source_name']); - $epreamble = sprintf( t('%s commented in %s.'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . t('a watched conversation') . '[/url]'); + $epreamble = sprintf( t('%s commented on %s.'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . $dest_str . '[/url]'); $sitelink = t('Please visit %s to view and/or reply to the conversation.'); $tsitelink = sprintf( $sitelink, $siteurl ); @@ -48,7 +86,10 @@ function notification($params) { } if($params['type'] == NOTIFY_WALL) { - $preamble = $subject = sprintf( t('%s posted to your profile wall at %s') , $params['source_name'], $sitename); + $subject = sprintf( t('[Friendica:Notify] %s posted to your profile wall') , $params['source_name']); + + $preamble = sprintf( t('%s posted to your profile wall at %s') , $params['source_name'], $sitename); + $epreamble = sprintf( t('%s posted to %s') , '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . t('your profile wall.') . '[/url]'); $sitelink = t('Please visit %s to view and/or reply to the conversation.'); @@ -58,7 +99,8 @@ function notification($params) { } if($params['type'] == NOTIFY_TAGSELF) { - $preamble = $subject = sprintf( t('%s tagged you at %s') , $params['source_name'], $sitename); + $subject = sprintf( t('[Friendica:Notify] %s tagged you') , $params['source_name']); + $preamble = sprintf( t('%s tagged you at %s') , $params['source_name'], $sitename); $epreamble = sprintf( t('%s %s.') , '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=' . $params['link'] . ']' . t('tagged you') . '[/url]'); $sitelink = t('Please visit %s to view and/or reply to the conversation.'); @@ -68,7 +110,8 @@ function notification($params) { } if($params['type'] == NOTIFY_TAGSHARE) { - $preamble = $subject = sprintf( t('%s tagged your post at %s') , $params['source_name'], $sitename); + $subject = sprintf( t('[Friendica:Notify] %s tagged your post') , $params['source_name']); + $preamble = sprintf( t('%s tagged your post at %s') , $params['source_name'], $sitename); $epreamble = sprintf( t('%s tagged %s') , '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . t('your post') . '[/url]' ); $sitelink = t('Please visit %s to view and/or reply to the conversation.'); @@ -78,7 +121,7 @@ function notification($params) { } if($params['type'] == NOTIFY_INTRO) { - $subject = sprintf( t('Introduction received at %s'), $sitename); + $subject = sprintf( t('[Friendica:Notify] Introduction received')); $preamble = sprintf( t('You\'ve received an introduction from \'%s\' at %s'), $params['source_name'], $sitename); $epreamble = sprintf( t('You\'ve received %s from %s.'), '[url=$itemlink]' . t('an introduction') . '[/url]' , '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]'); $body = sprintf( t('You may visit their profile at %s'),$params['source_link']); @@ -90,7 +133,7 @@ function notification($params) { } if($params['type'] == NOTIFY_SUGGEST) { - $subject = sprintf( t('Friend suggestion received at %s'), $sitename); + $subject = sprintf( t('[Friendica:Notify] Friend suggestion received')); $preamble = sprintf( t('You\'ve received a friend suggestion from \'%s\' at %s'), $params['source_name'], $sitename); $epreamble = sprintf( t('You\'ve received %s for %s from %s.'), '[url=$itemlink]' . t('a friend suggestion') . '[/url]', @@ -126,22 +169,36 @@ function notification($params) { } while($dups == true); - + $datarray = array(); + $datarray['hash'] = $hash; + $datarray['name'] = $params['source_name']; + $datarray['url'] = $params['source_link']; + $datarray['photo'] = $params['source_photo']; + $datarray['date'] = datetime_convert(); + $datarray['uid'] = $params['uid']; + $datarray['link'] = $itemlink; + $datarray['parent'] = $parent_id; + $datarray['type'] = $params['type']; + $datarray['verb'] = $params['verb']; + $datarray['otype'] = $params['otype']; + + call_hooks('enotify_store', $datarray); // create notification entry in DB - $r = q("insert into notify (hash,name,url,photo,date,uid,link,type,verb,otype) - values('%s','%s','%s','%s','%s',%d,'%s',%d,'%s','%s')", - dbesc($hash), - dbesc($params['source_name']), - dbesc($params['source_link']), - dbesc($params['source_photo']), - dbesc(datetime_convert()), - intval($params['uid']), - dbesc($itemlink), - intval($params['type']), - dbesc($params['verb']), - dbesc($params['otype']) + $r = q("insert into notify (hash,name,url,photo,date,uid,link,parent,type,verb,otype) + values('%s','%s','%s','%s','%s',%d,'%s',%d,%d,'%s','%s')", + dbesc($datarray['hash']), + dbesc($datarray['name']), + dbesc($datarray['url']), + dbesc($datarray['photo']), + dbesc($datarray['date']), + intval($datarray['uid']), + dbesc($datarray['link']), + intval($datarray['parent']), + intval($datarray['type']), + dbesc($datarray['verb']), + dbesc($datarray['otype']) ); $r = q("select id from notify where hash = '%s' and uid = %d limit 1", @@ -170,50 +227,111 @@ function notification($params) { logger('notification: sending notification email'); + $id_for_parent = "${params['parent']}@${hostname}"; + + // Is this the first email notification for this parent item and user? + + $r = q("select `id` from `notify-threads` where `master-parent-item` = %d and `receiver-uid` = %d limit 1", + intval($params['parent']), + intval($params['uid']) ); + + // If so, create the record of it and use a message-id smtp header. + + if(!$r) { + logger("norify_id:" . intval($notify_id). ", parent: " . intval($params['parent']) . "uid: " . +intval($params['uid']), LOGGER_DEBUG); + $r = q("insert into `notify-threads` (`notify-id`, `master-parent-item`, `receiver-uid`, `parent-item`) + values(%d,%d,%d,%d)", + intval($notify_id), + intval($params['parent']), + intval($params['uid']), + 0 ); + + $additional_mail_header .= "Message-ID: <${id_for_parent}>\n"; + $log_msg = "include/enotify: No previous notification found for this parent:\n" . + " parent: ${params['parent']}\n" . " uid : ${params['uid']}\n"; + logger($log_msg, LOGGER_DEBUG); + } + + // If not, just "follow" the thread. + + else { + $additional_mail_header = "References: <${id_for_parent}>\nIn-Reply-To: <${id_for_parent}>\n"; + logger("include/enotify: There's already a notification for this parent:\n" . print_r($r, true), LOGGER_DEBUG); + } + + $textversion = strip_tags(html_entity_decode(bbcode(stripslashes(str_replace(array("\\r\\n", "\\r", "\\n"), "\n", $body))),ENT_QUOTES,'UTF-8')); $htmlversion = html_entity_decode(bbcode(stripslashes(str_replace(array("\\r\\n", "\\r","\\n\\n" ,"\\n"), "<br />\n",$body)))); + $datarray = array(); + $datarray['banner'] = $banner; + $datarray['product'] = $product; + $datarray['preamble'] = $preamble; + $datarray['sitename'] = $sitename; + $datarray['siteurl'] = $siteurl; + $datarray['type'] = $params['type']; + $datarray['parent'] = $params['parent']; + $datarray['source_name'] = $params['source_name']; + $datarray['source_link'] = $params['source_link']; + $datarray['source_photo'] = $params['source_photo']; + $datarray['uid'] = $params['uid']; + $datarray['username'] = $params['to_name']; + $datarray['hsitelink'] = $hsitelink; + $datarray['tsitelink'] = $tsitelink; + $datarray['hitemlink'] = '<a href="' . $itemlink . '">' . $itemlink . '</a>'; + $datarray['titemlink'] = $itemlink; + $datarray['thanks'] = $thanks; + $datarray['site_admin'] = $site_admin; + $datarray['title'] = stripslashes($title); + $datarray['htmlversion'] = $htmlversion; + $datarray['textversion'] = $textversion; + $datarray['subject'] = $subject; + $datarray['headers'] = $additional_mail_header; + + call_hooks('enotify_mail', $datarray); + // load the template for private message notifications $tpl = get_markup_template('email_notify_html.tpl'); $email_html_body = replace_macros($tpl,array( - '$banner' => $banner, - '$product' => $product, - '$preamble' => $preamble, - '$sitename' => $sitename, - '$siteurl' => $siteurl, - '$source_name' => $params['source_name'], - '$source_link' => $params['source_link'], - '$source_photo' => $params['source_photo'], - '$username' => $params['to_name'], - '$hsitelink' => $hsitelink, - '$itemlink' => '<a href="' . $itemlink . '">' . $itemlink . '</a>', - '$thanks' => $thanks, - '$site_admin' => $site_admin, - '$title' => stripslashes($title), - '$htmlversion' => $htmlversion, + '$banner' => $datarray['banner'], + '$product' => $datarray['product'], + '$preamble' => $datarray['preamble'], + '$sitename' => $datarray['sitename'], + '$siteurl' => $datarray['siteurl'], + '$source_name' => $datarray['source_name'], + '$source_link' => $datarray['source_link'], + '$source_photo' => $datarray['source_photo'], + '$username' => $datarray['to_name'], + '$hsitelink' => $datarray['hsitelink'], + '$hitemlink' => $datarray['hitemlink'], + '$thanks' => $datarray['thanks'], + '$site_admin' => $datarray['site_admin'], + '$title' => $datarray['title'], + '$htmlversion' => $datarray['htmlversion'], )); // load the template for private message notifications $tpl = get_markup_template('email_notify_text.tpl'); $email_text_body = replace_macros($tpl,array( - '$banner' => $banner, - '$product' => $product, - '$preamble' => $preamble, - '$sitename' => $sitename, - '$siteurl' => $siteurl, - '$source_name' => $params['source_name'], - '$source_link' => $params['source_link'], - '$source_photo' => $params['source_photo'], - '$username' => $params['to_name'], - '$tsitelink' => $tsitelink, - '$itemlink' => $itemlink, - '$thanks' => $thanks, - '$site_admin' => $site_admin, - '$title' => stripslashes($title), - '$textversion' => $textversion, + '$banner' => $datarray['banner'], + '$product' => $datarray['product'], + '$preamble' => $datarray['preamble'], + '$sitename' => $datarray['sitename'], + '$siteurl' => $datarray['siteurl'], + '$source_name' => $datarray['source_name'], + '$source_link' => $datarray['source_link'], + '$source_photo' => $datarray['source_photo'], + '$username' => $datarray['to_name'], + '$tsitelink' => $datarray['tsitelink'], + '$titemlink' => $datarray['titemlink'], + '$thanks' => $datarray['thanks'], + '$site_admin' => $datarray['site_admin'], + '$title' => $datarray['title'], + '$textversion' => $datarray['textversion'], )); // logger('text: ' . $email_text_body); @@ -225,9 +343,10 @@ function notification($params) { 'fromEmail' => $sender_email, 'replyTo' => $sender_email, 'toEmail' => $params['to_email'], - 'messageSubject' => $subject, + 'messageSubject' => $datarray['subject'], 'htmlVersion' => $email_html_body, - 'textVersion' => $email_text_body + 'textVersion' => $email_text_body, + 'additionalMailHeader' => $datarray['headers'], )); } @@ -248,6 +367,7 @@ class enotify { * @param messageSubject subject of the message * @param htmlVersion html version of the message * @param textVersion text only version of the message + * @param additionalMailHeader additions to the smtp mail header */ static public function send($params) { @@ -262,6 +382,7 @@ class enotify { // generate a multipart/alternative message header $messageHeader = + $params['additionalMailHeader'] . "From: {$params['fromName']} <{$params['fromEmail']}>\n" . "Reply-To: {$params['fromName']} <{$params['replyTo']}>\n" . "MIME-Version: 1.0\n" . @@ -291,4 +412,4 @@ class enotify { logger("notification: enotify::send returns " . $res, LOGGER_DEBUG); } } -?>
\ No newline at end of file +?> diff --git a/include/event.php b/include/event.php index c7669b381..4a9a9a004 100755 --- a/include/event.php +++ b/include/event.php @@ -163,7 +163,7 @@ function bbtoevent($s) { if(preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",$s,$match)) $ev['adjust'] = $match[1]; $match = ''; - $ev['nofinish'] = (($ev['start'] && (! $ev['finish'])) ? 1 : 0); + $ev['nofinish'] = (($ev['start'] && (!x($ev, 'finish') || !$ev['finish'])) ? 1 : 0); return $ev; } diff --git a/include/html2bbcode.php b/include/html2bbcode.php index d8f1a24f1..51d629940 100755 --- a/include/html2bbcode.php +++ b/include/html2bbcode.php @@ -10,7 +10,7 @@ Originally made for the syncom project: http://wiki.piratenpartei.de/Syncom function node2bbcode(&$doc, $oldnode, $attributes, $startbb, $endbb) { do { - $done = node2bbcodesub(&$doc, $oldnode, $attributes, $startbb, $endbb); + $done = node2bbcodesub($doc, $oldnode, $attributes, $startbb, $endbb); } while ($done); } @@ -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 index 000000000..2a4cf6639 --- /dev/null +++ b/include/html2plain.php @@ -0,0 +1,180 @@ +<?php +require_once "html2bbcode.php"; + +function breaklines($line, $level) +{ + $wraplen = 75-$level; + + $newlines = array(); + + do { + $oldline = $line; + + $subline = substr($line, 0, $wraplen); + + $pos = strrpos($subline, ' '); + + if ($pos == 0) + $pos = strpos($line, ' '); + + if (($pos > 0) and strlen($line) > $wraplen) { + $newline = trim(substr($line, 0, $pos)); + if ($level > 0) + $newline = str_repeat(">", $level).' '.$newline; + + $newlines[] = $newline." "; + $line = substr($line, $pos+1); + } + + } while ((strlen($line) > $wraplen) and !($oldline == $line)); + + if ($level > 0) + $line = str_repeat(">", $level).' '.$line; + + $newlines[] = $line; + + + return(implode($newlines, "\n")); +} + +function quotelevel($message) +{ + $lines = explode("\n", $message); + + $newlines = array(); + $level = 0; + foreach($lines as $line) {; + $line = trim($line); + $startquote = false; + while (strpos("*".$line, '[quote]') > 0) { + $level++; + $pos = strpos($line, '[quote]'); + $line = substr($line, 0, $pos).substr($line, $pos+7); + $startquote = true; + } + + $currlevel = $level; + + while (strpos("*".$line, '[/quote]') > 0) { + $level--; + if ($level < 0) + $level = 0; + + $pos = strpos($line, '[/quote]'); + $line = substr($line, 0, $pos).substr($line, $pos+8); + } + + if (!$startquote or ($line != '')) + $newlines[] = breaklines($line, $currlevel); + } + return(implode($newlines, "\n")); +} + +function html2plain($html) +{ + global $lang; + + $message = str_replace("\r", "", $html); + + $doc = new DOMDocument(); + $doc->preserveWhiteSpace = false; + + $message = mb_convert_encoding($message, 'HTML-ENTITIES', "UTF-8"); + + @$doc->loadHTML($message); + + $xpath = new DomXPath($doc); + $list = $xpath->query("//pre"); + foreach ($list as $node) { + $node->nodeValue = str_replace("\n", "\r", $node->nodeValue); + } + + $message = $doc->saveHTML(); + $message = str_replace(array("\n<", ">\n", "\r", "\n", "\xC3\x82\xC2\xA0"), array("<", ">", "<br>", " ", ""), $message); + $message = preg_replace('= [\s]*=i', " ", $message); + + // nach <a href="...">...</a> suchen, die ... miteinander vergleichen und bei Gleichheit durch ein einzelnes ... ersetzen. + $pattern = '/<a.*?href="(.*?)".*?>(.*?)<\/a>/is'; + preg_match_all($pattern, $message, $result, PREG_SET_ORDER); + + foreach ($result as $treffer) { + if ($treffer[1] == $treffer[2]) { + $search = '<a href="'.$treffer[1].'" target="_blank">'.$treffer[1].'</a>'; + $message = str_replace($search, $treffer[1], $message); + } + } + @$doc->loadHTML($message); + + node2bbcode($doc, 'html', array(), '', ''); + node2bbcode($doc, 'body', array(), '', ''); + + // MyBB-Auszeichnungen + node2bbcode($doc, 'span', array('style'=>'text-decoration: underline;'), '_', '_'); + node2bbcode($doc, 'span', array('style'=>'font-style: italic;'), '/', '/'); + node2bbcode($doc, 'span', array('style'=>'font-weight: bold;'), '*', '*'); + + node2bbcode($doc, 'strong', array(), '*', '*'); + node2bbcode($doc, 'b', array(), '*', '*'); + node2bbcode($doc, 'i', array(), '/', '/'); + node2bbcode($doc, 'u', array(), '_', '_'); + + node2bbcode($doc, 'blockquote', array(), '[quote]', "[/quote]\n"); + + node2bbcode($doc, 'br', array(), "\n", ''); + + node2bbcode($doc, 'span', array(), "", ""); + node2bbcode($doc, 'pre', array(), "", ""); + node2bbcode($doc, 'div', array(), "\r", "\r"); + node2bbcode($doc, 'p', array(), "\n", "\n"); + + //node2bbcode($doc, 'ul', array(), "\n[list]", "[/list]\n"); + //node2bbcode($doc, 'ol', array(), "\n[list=1]", "[/list]\n"); + node2bbcode($doc, 'li', array(), "\n* ", "\n"); + + node2bbcode($doc, 'hr', array(), str_repeat("-", 70), ""); + + node2bbcode($doc, 'tr', array(), "\n", ""); + node2bbcode($doc, 'td', array(), "\t", ""); + + node2bbcode($doc, 'h1', array(), "\n\n*", "*\n"); + node2bbcode($doc, 'h2', array(), "\n\n*", "*\n"); + node2bbcode($doc, 'h3', array(), "\n\n*", "*\n"); + node2bbcode($doc, 'h4', array(), "\n\n*", "*\n"); + node2bbcode($doc, 'h5', array(), "\n\n*", "*\n"); + node2bbcode($doc, 'h6', array(), "\n\n*", "*\n"); + + node2bbcode($doc, 'a', array('href'=>'/(.+)/'), ' $1', '', true); + node2bbcode($doc, 'img', array('alt'=>'/(.+)/'), '$1', ''); + node2bbcode($doc, 'img', array('title'=>'/(.+)/'), '$1', ''); + node2bbcode($doc, 'img', array(), '', ''); + node2bbcode($doc, 'img', array('src'=>'/(.+)/'), '[img]$1', '[/img]'); + + $message = $doc->saveHTML(); + + $message = str_replace("[img]", "", $message); + $message = str_replace("[/img]", "", $message); + + // was ersetze ich da? + // Irgendein stoerrisches UTF-Zeug + $message = str_replace(chr(194).chr(160), ' ', $message); + + $message = str_replace(" ", " ", $message); + + // Aufeinanderfolgende DIVs + $message = preg_replace('=\r *\r=i', "\n", $message); + $message = str_replace("\r", "\n", $message); + + $message = strip_tags($message); + + $message = html_entity_decode($message, ENT_QUOTES, 'UTF-8'); + + do { + $oldmessage = $message; + $message = str_replace("\n\n\n", "\n\n", $message); + } while ($oldmessage != $message); + + $message = quotelevel(trim($message)); + + return(trim($message)); +} +?> diff --git a/include/items.php b/include/items.php index de3ade6b4..a1254e165 100755 --- a/include/items.php +++ b/include/items.php @@ -308,7 +308,7 @@ function get_atom_elements($feed,$item) { if($rawauthor && $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) { $base = $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']; foreach($base as $link) { - if(! $res['author-avatar']) { + if(!x($res, 'author-avatar') || !$res['author-avatar']) { if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar') $res['author-avatar'] = unxmlify($link['attribs']['']['href']); } @@ -323,7 +323,7 @@ function get_atom_elements($feed,$item) { foreach($base as $link) { if($link['attribs']['']['rel'] === 'alternate' && (! $res['author-link'])) $res['author-link'] = unxmlify($link['attribs']['']['href']); - if(! $res['author-avatar']) { + if(!x($res, 'author-avatar') || !$res['author-avatar']) { if($link['attribs']['']['rel'] === 'avatar' || $link['attribs']['']['rel'] === 'photo') $res['author-avatar'] = unxmlify($link['attribs']['']['href']); } @@ -503,7 +503,7 @@ function get_atom_elements($feed,$item) { $base = $rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']; foreach($base as $link) { - if(! $res['owner-avatar']) { + if(!x($res, 'owner-avatar') || !$res['owner-avatar']) { if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar') $res['owner-avatar'] = unxmlify($link['attribs']['']['href']); } @@ -2223,7 +2223,8 @@ function local_delivery($importer,$data) { 'source_photo' => ((link_compare($datarray['author-link'],$importer['url'])) ? $importer['thumb'] : $datarray['author-avatar']), 'verb' => ACTIVITY_POST, - 'otype' => 'item' + 'otype' => 'item', + 'parent' => $parent, )); @@ -2317,39 +2318,51 @@ function local_delivery($importer,$data) { if($datarray['type'] != 'activity') { - $myconv = q("SELECT `author-link`, `author-avatar` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 ", + $myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 ", dbesc($parent_uri), intval($importer['importer_uid']) ); if(count($myconv)) { $importer_url = $a->get_baseurl() . '/profile/' . $importer['nickname']; - foreach($myconv as $conv) { - - if(! link_compare($conv['author-link'],$importer_url)) - continue; - require_once('include/enotify.php'); + // first make sure this isn't our own post coming back to us from a wall-to-wall event + if(! link_compare($datarray['author-link'],$importer_url)) { - notification(array( - 'type' => NOTIFY_COMMENT, - 'notify_flags' => $importer['notify-flags'], - 'language' => $importer['language'], - 'to_name' => $importer['username'], - 'to_email' => $importer['email'], - 'uid' => $importer['importer_uid'], - 'item' => $datarray, - 'link' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $posted_id, - 'source_name' => stripslashes($datarray['author-name']), - 'source_link' => $datarray['author-link'], - 'source_photo' => ((link_compare($datarray['author-link'],$importer['url'])) - ? $importer['thumb'] : $datarray['author-avatar']), - 'verb' => ACTIVITY_POST, - 'otype' => 'item' + + foreach($myconv as $conv) { - )); + // now if we find a match, it means we're in this conversation + + if(! link_compare($conv['author-link'],$importer_url)) + continue; - break; + require_once('include/enotify.php'); + + $conv_parent = $conv['parent']; + + notification(array( + 'type' => NOTIFY_COMMENT, + 'notify_flags' => $importer['notify-flags'], + 'language' => $importer['language'], + 'to_name' => $importer['username'], + 'to_email' => $importer['email'], + 'uid' => $importer['importer_uid'], + 'item' => $datarray, + 'link' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $posted_id, + 'source_name' => stripslashes($datarray['author-name']), + 'source_link' => $datarray['author-link'], + 'source_photo' => ((link_compare($datarray['author-link'],$importer['url'])) + ? $importer['thumb'] : $datarray['author-avatar']), + 'verb' => ACTIVITY_POST, + 'otype' => 'item', + 'parent' => $conv_parent, + + )); + + // only send one notification + break; + } } } } @@ -2420,7 +2433,7 @@ function local_delivery($importer,$data) { // This is my contact on another system, but it's really me. // Turn this into a wall post. - if($contact['remote_self']) + if($importer['remote_self']) $datarray['wall'] = 1; $datarray['parent-uri'] = $item_id; diff --git a/include/network.php b/include/network.php index 25db62d16..c72919dd8 100755 --- a/include/network.php +++ b/include/network.php @@ -17,7 +17,7 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0, $accept_ if (!is_null($accept_content)){ curl_setopt($ch,CURLOPT_HTTPHEADER, array ( - "Accept: "+$accept_content + "Accept: " . $accept_content )); } @@ -60,6 +60,7 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0, $accept_ $curl_info = @curl_getinfo($ch); $http_code = $curl_info['http_code']; +// logger('fetch_url:' . $http_code . ' data: ' . $s); $header = ''; // Pull out multiple headers, e.g. proxy and continuation headers @@ -74,11 +75,13 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0, $accept_ if($http_code == 301 || $http_code == 302 || $http_code == 303 || $http_code == 307) { $matches = array(); preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches); - $url = trim(array_pop($matches)); - $url_parsed = @parse_url($url); + $newurl = trim(array_pop($matches)); + if(strpos($newurl,'/') === 0) + $newurl = $url . $newurl; + $url_parsed = @parse_url($newurl); if (isset($url_parsed)) { $redirects++; - return fetch_url($url,$binary,$redirects,$timeout); + return fetch_url($newurl,$binary,$redirects,$timeout); } } @@ -163,11 +166,13 @@ function post_url($url,$params, $headers = null, &$redirects = 0, $timeout = 0) if($http_code == 301 || $http_code == 302 || $http_code == 303) { $matches = array(); preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches); - $url = trim(array_pop($matches)); - $url_parsed = @parse_url($url); + $newurl = trim(array_pop($matches)); + if(strpos($newurl,'/') === 0) + $newurl = $url . $newurl; + $url_parsed = @parse_url($newurl); if (isset($url_parsed)) { $redirects++; - return post_url($url,$params,$headers,$redirects,$timeout); + return fetch_url($newurl,$binary,$redirects,$timeout); } } $a->set_curl_code($http_code); @@ -776,3 +781,43 @@ function add_fcontact($arr,$update = false) { return $r; } + + +function scale_external_images($s,$include_link = true) { + + $a = get_app(); + + $matches = null; + $c = preg_match_all('/\[img\](.*?)\[\/img\]/ism',$s,$matches,PREG_SET_ORDER); + if($c) { + require_once('include/Photo.php'); + foreach($matches as $mtch) { + logger('scale_external_image: ' . $mtch[1]); + $hostname = str_replace('www.','',substr($a->get_baseurl(),strpos($a->get_baseurl(),'://')+3)); + if(stristr($mtch[1],$hostname)) + continue; + $i = fetch_url($mtch[1]); + if($i) { + $ph = new Photo($i); + if($ph->is_valid()) { + $orig_width = $ph->getWidth(); + $orig_height = $ph->getHeight(); + + if($orig_width > 640 || $orig_height > 640) { + + $ph->scaleImage(640); + $new_width = $ph->getWidth(); + $new_height = $ph->getHeight(); + logger('scale_external_images: ' . $orig_width . '->' . $new_width . 'w ' . $orig_height . '->' . $new_height . 'h' . ' match: ' . $mtch[0], LOGGER_DEBUG); + $s = str_replace($mtch[0],'[img=' . $new_width . 'x' . $new_height. ']' . $mtch[1] . '[/img]' + . "\n" . (($include_link) + ? '[url=' . $mtch[1] . ']' . t('view full size') . '[/url]' . "\n" + : ''),$s); + logger('scale_external_images: new string: ' . $s, LOGGER_DEBUG); + } + } + } + } + } + return $s; +} diff --git a/include/notifier.php b/include/notifier.php index 8ec625286..4765cca06 100755 --- a/include/notifier.php +++ b/include/notifier.php @@ -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); diff --git a/include/plugin.php b/include/plugin.php index 57f77cb57..8280b1022 100755 --- a/include/plugin.php +++ b/include/plugin.php @@ -225,9 +225,16 @@ function get_theme_info($theme){ 'description' => "", 'author' => array(), 'maintainer' => array(), - 'version' => "" + 'version' => "", + 'experimental' => false, + 'unsupported' => false ); + if(file_exists("view/theme/$theme/experimental")) + $info['experimental'] = true; + if(file_exists("view/theme/$theme/unsupported")) + $info['unsupported'] = true; + if (!is_file("view/theme/$theme/theme.php")) return $info; $f = file_get_contents("view/theme/$theme/theme.php"); diff --git a/include/poller.php b/include/poller.php index 3e7a1e9b4..cfbc46b87 100755 --- a/include/poller.php +++ b/include/poller.php @@ -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 index 000000000..3aee93234 --- /dev/null +++ b/include/quoteconvert.php @@ -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); +} +?> diff --git a/include/template_processor.php b/include/template_processor.php index 0d476f0e6..28c3f07dd 100755 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -32,11 +32,12 @@ if(is_array($r) && count($r)) { foreach ($r as $k => $v ) { - if (is_array($v)) + if (is_array($v)) { $this->_build_replace($v, "$prefix$k."); - - $this->search[] = $prefix . $k; - $this->replace[] = $v; + } else { + $this->search[] = $prefix . $k; + $this->replace[] = $v; + } } } } @@ -53,7 +54,7 @@ $keys = array_map('trim',explode(".",$name)); $val = $this->r; foreach($keys as $k) { - $val = $val[$k]; + $val = (isset($val[$k]) ? $val[$k] : null); } return $val; } @@ -79,8 +80,8 @@ } else { $val = $this->_get_var($args[2]); } - list($strue, $sfalse)= preg_split("|{{ *else *}}|", $args[3]); - return ($val?$strue:$sfalse); + $x = preg_split("|{{ *else *}}|", $args[3]); + return ( $val ? $x[0] : (isset($x[1]) ? $x[1] : "")); } /** @@ -159,7 +160,8 @@ krsort($this->nodes); return $s; } - + + /* private function _str_replace($str){ #$this->search,$this->replace, $searchs = $this->search; @@ -182,7 +184,7 @@ } return str_replace($this->search,$this->replace, $str); - } + }*/ public function replace($s, $r) { @@ -204,7 +206,8 @@ $os = ""; $count=0; while($os!=$s && $count<10){ $os=$s; $count++; - $s = $this->_str_replace($s); + //$s = $this->_str_replace($s); + $s = str_replace($this->search, $this->replace, $s); } return template_unescape($s); } diff --git a/include/text.php b/include/text.php index 0f7d2f731..81e22527a 100755 --- a/include/text.php +++ b/include/text.php @@ -996,7 +996,7 @@ function lang_selector() { } $ll = substr($l,5); $ll = substr($ll,0,strrpos($ll,'/')); - $selected = (($ll === $lang && (x($_SESSION['language']))) ? ' selected="selected" ' : ''); + $selected = (($ll === $lang && (x($_SESSION, 'language'))) ? ' selected="selected" ' : ''); $o .= '<option value="' . $ll . '"' . $selected . '>' . $ll . '</option>'; } } @@ -1201,3 +1201,16 @@ function reltoabs($text, $base) return $text; } +function item_post_type($item) { + if(intval($item['event-id'])) + return t('event'); + if(strlen($item['resource-id'])) + return t('photo'); + if(strlen($item['verb']) && $item['verb'] !== ACTIVITY_POST) + return t('activity'); + if($item['id'] != $item['parent']) + return t('comment'); + return t('post'); +} + + diff --git a/js/main.js b/js/main.js index 36ef946ca..a5d1214cb 100755 --- a/js/main.js +++ b/js/main.js @@ -114,7 +114,7 @@ var eNotif = $(data).find('notif') notif = eNotif.attr('count'); - if (notif>0){ + if (notif>=0){ $("#nav-notifications-linkmenu").addClass("on"); nnm = $("#nav-notifications-menu"); @@ -129,8 +129,8 @@ }); } else { - $("#nav-notifications-linkmenu").removeClass("on"); - $("#nav-notifications-menu").html(notifications_empty); + // $("#nav-notifications-linkmenu").removeClass("on"); + // $("#nav-notifications-menu").html(notifications_empty); } if(notif == 0) { notif = ''; $('#notify-update').removeClass('show') } else { $('#notify-update').addClass('show') } $('#notify-update').html(notif); diff --git a/library/spam/b8/storage/storage_frndc.php b/library/spam/b8/storage/storage_frndc.php index cbc6fe81a..7702c108b 100644 --- a/library/spam/b8/storage/storage_frndc.php +++ b/library/spam/b8/storage/storage_frndc.php @@ -147,58 +147,8 @@ class b8_storage_frndc extends b8_storage_base public function connect() { - return TRUE; - - # Are we already connected? - if($this->connected === TRUE) - return TRUE; - - # Are we using an existing passed resource? - if($this->config['connection'] === FALSE) { - # ... yes we are, but the connection is not a resource, so return an error - $this->connected = FALSE; - return self::DATABASE_CONNECTION_BAD_RESOURCE; - } - - elseif($this->config['connection'] === NULL) { - - # ... no we aren't so we have to connect. - - if($this->_connection = mysql_connect($this->config['host'], $this->config['user'], $this->config['pass'])) { - if(mysql_select_db($this->config['database'], $this->_connection) === FALSE) { - $this->connected = FALSE; - return self::DATABASE_SELECT_ERROR . ": " . mysql_error(); - } - } - else { - $this->connected = FALSE; - return self::DATABASE_CONNECTION_ERROR; - } - - } - - else { - # ... yes we are - $this->_connection = $this->config['connection']; - } - - # Just in case ... - if($this->_connection === NULL) { - $this->connected = FALSE; - return self::DATABASE_CONNECTION_FAIL; - } - - # Check to see if the wordlist table exists - if(mysql_query('DESCRIBE ' . $this->config['table_name'], $this->_connection) === FALSE) { - $this->connected = FALSE; - return self::DATABASE_TABLE_ACCESS_FAIL . ": " . mysql_error(); - } - - # Everything is okay and connected $this->connected = TRUE; - - # Let's see if this is a b8 database and the version is okay - return $this->check_database(); + return TRUE; } @@ -235,7 +185,7 @@ class b8_storage_frndc extends b8_storage_base # ... and fetch the data $result = q(' - SELECT token, count + SELECT * FROM ' . $this->config['table_name'] . ' WHERE ' . $where . ' AND uid = ' . $uid ); diff --git a/mod/acl.php b/mod/acl.php index 98ca90ded..375c618c8 100755 --- a/mod/acl.php +++ b/mod/acl.php @@ -16,6 +16,8 @@ function acl_init(&$a){ if ($search!=""){ $sql_extra = "AND `name` LIKE '%%".dbesc($search)."%%'"; $sql_extra2 = "AND (`attag` LIKE '%%".dbesc($search)."%%' OR `name` LIKE '%%".dbesc($search)."%%' OR `nick` LIKE '%%".dbesc($search)."%%')"; + } else { + $sql_extra = $sql_extra2 = ""; } // count groups and contacts @@ -75,7 +77,7 @@ function acl_init(&$a){ if ($type=='' || $type=='c'){ - $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url` FROM `contact` + $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `notify` != '' $sql_extra2 ORDER BY `name` ASC ", diff --git a/mod/admin.php b/mod/admin.php index bcbf3e28f..0f600e312 100755 --- a/mod/admin.php +++ b/mod/admin.php @@ -711,7 +711,7 @@ function admin_page_themes(&$a){ return; // NOTREACHED } - // display plugin details + // display theme details require_once('library/markdown.php'); if (theme_status($themes,$theme)) { @@ -769,7 +769,9 @@ function admin_page_themes(&$a){ '$submit' => t('Submit'), '$baseurl' => $a->get_baseurl(), '$function' => 'themes', - '$plugins' => $xthemes + '$plugins' => $xthemes, + '$experimental' => t('[Experimental]'), + '$unsupported' => t('[Unsupported]') )); } diff --git a/mod/contacts.php b/mod/contacts.php index c8edea151..c99ac1452 100755 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -504,8 +504,9 @@ function contacts_content(&$a) { 'name' => $rr['name'], 'username' => $rr['name'], 'sparkle' => $sparkle, + 'itemurl' => $rr['url'], 'url' => $url, - 'item' => $rr, + 'network' => network_to_name($rr['network']), ); } diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php index 5a24f0089..0bc3ea7df 100644 --- a/mod/dfrn_confirm.php +++ b/mod/dfrn_confirm.php @@ -107,7 +107,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) { * */ - $r = q("SELECT * FROM `contact` WHERE ( ( `issued-id` != '' AND `issued-id` = '%s' ) OR ( `id` = %d AND `id` != 0 ) ) AND `uid` = %d LIMIT 1", + $r = q("SELECT * FROM `contact` WHERE ( ( `issued-id` != '' AND `issued-id` = '%s' ) OR ( `id` = %d AND `id` != 0 ) ) AND `uid` = %d AND `duplex` = 0 LIMIT 1", dbesc($dfrn_id), intval($cid), intval($uid) @@ -116,6 +116,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) { if(! count($r)) { logger('dfrn_confirm: Contact not found in DB.'); notice( t('Contact not found.') . EOL ); + notice( t('This may occasionally happen if contact was requested by both persons and it has already been approved.') . EOL ); return; } @@ -631,6 +632,15 @@ function dfrn_confirm_post(&$a,$handsfree = null) { xml_status(3,$message); } + // It's possible that the other person also requested friendship. + // If it is a duplex relationship, ditch the issued-id if one exists. + + if($duplex) { + $r = q("UPDATE `contact` SET `issued-id` = '' WHERE `id` = %d LIMIT 1", + intval($dfrn_record) + ); + } + // We're good but now we have to scrape the profile photo and send notifications. diff --git a/mod/display.php b/mod/display.php index d96be4333..f510f793d 100755 --- a/mod/display.php +++ b/mod/display.php @@ -74,11 +74,11 @@ function display_content(&$a) { $x = array( 'is_owner' => true, 'allow_location' => $a->user['allow_location'], - 'default_location' => $a->user['default_location'], + 'default_location' => $a->user['default-location'], 'nickname' => $a->user['nickname'], - 'lockstate' => ((($group) || (is_array($a->user) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid']))))) ? 'lock' : 'unlock'), - 'acl' => populate_acl((($group || $cid) ? $def_acl : $a->user), $celeb), - 'bang' => (($group || $cid) ? '!' : ''), + 'lockstate' => ( (is_array($a->user)) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid']))) ? 'lock' : 'unlock'), + 'acl' => populate_acl($a->user, $celeb), + 'bang' => '', 'visitor' => 'block', 'profile_uid' => local_user() ); diff --git a/mod/item.php b/mod/item.php index 3035989f3..81d7c753b 100755 --- a/mod/item.php +++ b/mod/item.php @@ -400,6 +400,8 @@ function item_post(&$a) { $body = preg_replace('/\[\/code\]\s*\[code\]/ism',"\n",$body); + $body = scale_external_images($body,false); + /** * Look for any tags and linkify them */ @@ -753,7 +755,8 @@ function item_post(&$a) { 'source_link' => $datarray['author-link'], 'source_photo' => $datarray['author-avatar'], 'verb' => ACTIVITY_POST, - 'otype' => 'item' + 'otype' => 'item', + 'parent' => $parent, )); } diff --git a/mod/network.php b/mod/network.php index 03a671b61..894ac48ed 100755 --- a/mod/network.php +++ b/mod/network.php @@ -263,7 +263,7 @@ function network_content(&$a, $update = 0) { $x = array( 'is_owner' => true, 'allow_location' => $a->user['allow_location'], - 'default_location' => $a->user['default_location'], + 'default_location' => $a->user['default-location'], 'nickname' => $a->user['nickname'], 'lockstate' => ((($group) || (is_array($a->user) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid']))))) ? 'lock' : 'unlock'), 'acl' => populate_acl((($group || $cid) ? $def_acl : $a->user), $celeb), diff --git a/mod/notify.php b/mod/notify.php index e6a7a8859..a572b1534 100644 --- a/mod/notify.php +++ b/mod/notify.php @@ -11,8 +11,10 @@ function notify_init(&$a) { intval(local_user()) ); if(count($r)) { - q("update notify set seen = 1 where id = %d and uid = %d limit 1", - intval($a->argv[2]), + q("update notify set seen = 1 where ( link = '%s' or ( parent != 0 and parent = %d and otype = '%s' )) and uid = %d", + dbesc($r[0]['link']), + intval($r[0]['parent']), + dbesc($r[0]['otype']), intval(local_user()) ); goaway($r[0]['link']); diff --git a/mod/photo.php b/mod/photo.php index a5a5a1dc1..c4a93769a 100755 --- a/mod/photo.php +++ b/mod/photo.php @@ -119,7 +119,7 @@ function photo_init(&$a) { // NOTREACHED } - if(intval($customres) && $customres > 0 && $customres < 500) { + if(isset($customres) && $customres > 0 && $customres < 500) { require_once('include/Photo.php'); $ph = new Photo($data); if($ph->is_valid()) { diff --git a/mod/ping.php b/mod/ping.php index 0f6f0a9d6..1562254b1 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -14,10 +14,29 @@ function ping_init(&$a) { $firehose = intval(get_pconfig(local_user(),'system','notify_full')); - $z = q("select * from notify where uid = %d - order by seen asc, date desc limit 0, 50", + $t = q("select count(*) as total from notify where uid = %d and seen = 0", intval(local_user()) ); + if($t && intval($t[0]['total']) > 49) { + $z = q("select * from notify where uid = %d + and seen = 0 order by date desc limit 0, 50", + intval(local_user()) + ); + } + else { + $z1 = q("select * from notify where uid = %d + and seen = 0 order by date desc limit 0, 50", + intval(local_user()) + ); + + $z2 = q("select * from notify where uid = %d + and seen = 1 order by date desc limit 0, %d", + intval(local_user()), + intval(50 - intval($t[0]['total'])) + ); + $z = array_merge($z1,$z2); + } + $tags = array(); @@ -26,9 +45,10 @@ function ping_init(&$a) { $dislikes = array(); $friends = array(); $posts = array(); - + $home = 0; + $network = 0; - $r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`, + $r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`wall`, `item`.`author-name`, `item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object`, `pitem`.`author-name` as `pname`, `pitem`.`author-link` as `plink` FROM `item` INNER JOIN `item` as `pitem` ON `pitem`.`id`=`item`.`parent` diff --git a/mod/profile.php b/mod/profile.php index eba9874a8..74e1a2302 100755 --- a/mod/profile.php +++ b/mod/profile.php @@ -107,7 +107,7 @@ function profile_content(&$a, $update = 0) { $is_owner = ((local_user()) && (local_user() == $a->profile['profile_uid']) ? true : false); - if($a->profile['hidewall'] && (! $is_owner) && (! $remote_contact)) { + if($a->user['hidewall'] && (! $is_owner) && (! $remote_contact)) { notice( t('Access to this profile has been restricted.') . EOL); return; } @@ -228,10 +228,12 @@ function profile_content(&$a, $update = 0) { intval($a->profile['profile_uid']), dbesc($parents_str) ); + + $items = conv_sort($items,'created'); + } else { + $items = array(); } - $items = conv_sort($items,'created'); - if($is_owner && ! $update) { $o .= get_birthdays(); $o .= get_events(); diff --git a/mod/settings.php b/mod/settings.php index 91f4325da..a9d00bc98 100755 --- a/mod/settings.php +++ b/mod/settings.php @@ -50,6 +50,8 @@ function settings_post(&$a) { return; } + $old_page_flags = $a->user['page-flags']; + if(($a->argc > 1) && ($a->argv[1] === 'oauth') && x($_POST,'remove')){ $key = $_POST['remove']; q("DELETE FROM tokens WHERE id='%s' AND uid=%d", @@ -110,13 +112,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 +146,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 +225,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); @@ -370,7 +377,7 @@ function settings_post(&$a) { ); } - if($old_visibility != $net_publish) { + if(($old_visibility != $net_publish) || ($page_flags != $old_page_flags)) { // Update global directory in background $url = $_SESSION['my_url']; if($url && strlen(get_config('system','directory_submit_url'))) @@ -561,23 +568,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 +598,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 +609,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", diff --git a/mod/tagger.php b/mod/tagger.php index 76ec3366c..3ff5d57aa 100755 --- a/mod/tagger.php +++ b/mod/tagger.php @@ -134,6 +134,7 @@ EOT; $arr['target'] = $target; $arr['object-type'] = $objtype; $arr['object'] = $obj; + $arr['private'] = $item['private']; $arr['allow_cid'] = $item['allow_cid']; $arr['allow_gid'] = $item['allow_gid']; $arr['deny_cid'] = $item['deny_cid']; diff --git a/mod/viewcontacts.php b/mod/viewcontacts.php index 10c980d93..6b66f60d7 100755 --- a/mod/viewcontacts.php +++ b/mod/viewcontacts.php @@ -63,7 +63,8 @@ function viewcontacts_content(&$a) { 'username' => $rr['name'], 'url' => $url, 'sparkle' => '', - 'item' => $rr, + 'itemurl' => $rr['url'], + 'network' => network_to_name($rr['network']), ); } diff --git a/update.php b/update.php index 0096754d2..6dbd410bc 100755 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ <?php -define( 'UPDATE_VERSION' , 1125 ); +define( 'UPDATE_VERSION' , 1130 ); /** * @@ -1076,4 +1076,44 @@ set_config('system','allowed_themes','dispy,quattro,testbubble,vier,darkbubble,d function update_1124() { q("alter table item add index (`author-name`) "); +} + +function update_1125() { + q("CREATE TABLE IF NOT EXISTS `notify-threads` ( + `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , + `notify-id` INT NOT NULL, + `master-parent-item` INT( 10 ) unsigned NOT NULL DEFAULT '0', + `parent-item` INT( 10 ) unsigned NOT NULL DEFAULT '0', + `receiver-uid` INT NOT NULL, + INDEX ( `master-parent-item` ), + INDEX ( `receiver-uid` ) + ) 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`"); +} + +function update_1127() { + q("CREATE TABLE IF NOT EXISTS `spam` ( + `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , + `uid` INT NOT NULL, + `spam` INT NOT NULL DEFAULT '0', + `ham` INT NOT NULL DEFAULT '0', + `term` CHAR(255) NOT NULL, + INDEX ( `uid` ), + INDEX ( `spam` ), + INDEX ( `ham` ), + INDEX ( `term` ) + ) ENGINE = MyISAM DEFAULT CHARSET=utf8"); +} + + +function update_1128() { + q("alter table spam add `date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `term` "); +} + +function update_1129() { + q("ALTER TABLE `notify` ADD `parent` INT NOT NULL AFTER `link` , ADD INDEX ( `parent` ), ADD INDEX ( `link` ), ADD INDEX ( `otype` ) "); }
\ No newline at end of file diff --git a/view/admin_plugins.tpl b/view/admin_plugins.tpl index f4afd2cf0..8367ff6a1 100755 --- a/view/admin_plugins.tpl +++ b/view/admin_plugins.tpl @@ -6,6 +6,8 @@ <li class='plugin $p.1'> <a class='toggleplugin' href='$baseurl/admin/$function/$p.0?a=t' title="{{if $p.1==on }}Disable{{ else }}Enable{{ endif }}" ><span class='icon $p.1'></span></a> <a href='$baseurl/admin/$function/$p.0'><span class='name'>$p.2.name</span></a> - <span class="version">$p.2.version</span> + {{ if $p.2.experimental }} $experimental {{ endif }}{{ if $p.2.unsupported }} $unsupported {{ endif }} + <div class='desc'>$p.2.description</div> </li> {{ endfor }} diff --git a/view/contact_template.tpl b/view/contact_template.tpl index d6f114d6e..f4c0670bf 100755 --- a/view/contact_template.tpl +++ b/view/contact_template.tpl @@ -17,8 +17,8 @@ </div> <div class="contact-name" id="contact-entry-name-$contact.id" >$contact.name</div> - <div class="contact-details" id="contact-entry-url-$contact.id" >$contact.item.url</div> - <div class="contact-details" id="contact-entry-network-$contact.id" >$contact.item.network|network_to_name</div> + <div class="contact-details" id="contact-entry-url-$contact.id" >$contact.itemurl</div> + <div class="contact-details" id="contact-entry-network-$contact.id" >$contact.network</div> </div> diff --git a/view/de/messages.po b/view/de/messages.po index 861f61b74..5573ddca0 100644 --- a/view/de/messages.po +++ b/view/de/messages.po @@ -5,7 +5,10 @@ # Translators: # bavatar <tobias.diekershoff@gmx.net>, 2011. # Erkan Yilmaz <erkan77@gmail.com>, 2011. +# <friends@dostmusik.de>, 2012. +# <greeneyedred@googlemail.com>, 2012. # <hzuehl@phone-talk.de>, 2011. +# <marmor69@web.de>, 2012. # <tobias.diekershoff@gmx.net>, 2011, 2012. # <transifex@zottel.net>, 2011, 2012. # <ts+transifex@ml.tschlotfeldt.de>, 2011. @@ -13,9 +16,9 @@ msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: http://bugs.friendica.com/\n" -"POT-Creation-Date: 2012-02-12 17:14-0800\n" -"PO-Revision-Date: 2012-02-16 10:24+0000\n" -"Last-Translator: bavatar <tobias.diekershoff@gmx.net>\n" +"POT-Creation-Date: 2012-02-24 22:44-0800\n" +"PO-Revision-Date: 2012-02-26 15:58+0000\n" +"Last-Translator: marmor <marmor69@web.de>\n" "Language-Team: German (http://www.transifex.net/projects/p/friendica/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,7 +26,7 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: ../../mod/oexchange.php:27 +#: ../../mod/oexchange.php:25 msgid "Post successful." msgstr "Beitrag erfolgreich veröffentlicht." @@ -41,24 +44,24 @@ msgid "Contact update failed." msgstr "Konnte den Kontakt nicht aktualisieren." #: ../../mod/crepair.php:115 ../../mod/wall_attach.php:43 -#: ../../mod/fsuggest.php:78 ../../mod/events.php:109 ../../mod/api.php:26 +#: ../../mod/fsuggest.php:78 ../../mod/events.php:110 ../../mod/api.php:26 #: ../../mod/api.php:31 ../../mod/photos.php:129 ../../mod/photos.php:865 #: ../../mod/editpost.php:10 ../../mod/install.php:171 #: ../../mod/notifications.php:62 ../../mod/contacts.php:125 #: ../../mod/settings.php:49 ../../mod/settings.php:404 #: ../../mod/settings.php:409 ../../mod/manage.php:86 ../../mod/network.php:6 #: ../../mod/notes.php:20 ../../mod/attach.php:33 ../../mod/group.php:19 -#: ../../mod/viewcontacts.php:21 ../../mod/register.php:36 -#: ../../mod/regmod.php:111 ../../mod/item.php:123 ../../mod/item.php:139 +#: ../../mod/viewcontacts.php:22 ../../mod/register.php:36 +#: ../../mod/regmod.php:111 ../../mod/item.php:124 ../../mod/item.php:140 #: ../../mod/profile_photo.php:19 ../../mod/profile_photo.php:137 #: ../../mod/profile_photo.php:148 ../../mod/profile_photo.php:159 #: ../../mod/message.php:9 ../../mod/message.php:46 ../../mod/allfriends.php:9 #: ../../mod/wall_upload.php:42 ../../mod/follow.php:8 ../../mod/common.php:9 -#: ../../mod/display.php:112 ../../mod/profiles.php:7 +#: ../../mod/display.php:130 ../../mod/profiles.php:7 #: ../../mod/profiles.php:229 ../../mod/delegate.php:6 #: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81 -#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:331 -#: ../../include/items.php:2907 ../../index.php:288 +#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:332 +#: ../../include/items.php:2968 ../../index.php:288 msgid "Permission denied." msgstr "Zugriff verweigert." @@ -88,7 +91,7 @@ msgid "Return to contact editor" msgstr "Zurück zum Kontakteditor" #: ../../mod/crepair.php:148 ../../mod/settings.php:455 -#: ../../mod/settings.php:481 ../../mod/admin.php:464 ../../mod/admin.php:473 +#: ../../mod/settings.php:481 ../../mod/admin.php:480 ../../mod/admin.php:489 msgid "Name" msgstr "Name" @@ -125,33 +128,37 @@ msgid "New photo from this URL" msgstr "Neues Foto von dieser URL" #: ../../mod/crepair.php:166 ../../mod/fsuggest.php:107 -#: ../../mod/events.php:333 ../../mod/photos.php:900 ../../mod/photos.php:958 +#: ../../mod/events.php:400 ../../mod/photos.php:900 ../../mod/photos.php:958 #: ../../mod/photos.php:1182 ../../mod/photos.php:1222 #: ../../mod/photos.php:1262 ../../mod/photos.php:1293 #: ../../mod/install.php:251 ../../mod/install.php:289 #: ../../mod/localtime.php:45 ../../mod/contacts.php:319 #: ../../mod/settings.php:453 ../../mod/settings.php:592 -#: ../../mod/settings.php:773 ../../mod/manage.php:109 ../../mod/group.php:84 -#: ../../mod/group.php:167 ../../mod/admin.php:296 ../../mod/admin.php:461 -#: ../../mod/admin.php:587 ../../mod/admin.php:652 ../../mod/profiles.php:375 -#: ../../mod/invite.php:106 ../../addon/facebook/facebook.php:410 -#: ../../addon/yourls/yourls.php:76 ../../addon/nsfw/nsfw.php:57 +#: ../../mod/settings.php:786 ../../mod/manage.php:109 ../../mod/group.php:84 +#: ../../mod/group.php:167 ../../mod/admin.php:312 ../../mod/admin.php:477 +#: ../../mod/admin.php:603 ../../mod/admin.php:769 ../../mod/admin.php:847 +#: ../../mod/profiles.php:375 ../../mod/invite.php:106 +#: ../../addon/facebook/facebook.php:411 ../../addon/yourls/yourls.php:76 +#: ../../addon/nsfw/nsfw.php:57 #: ../../addon/uhremotestorage/uhremotestorage.php:89 #: ../../addon/randplace/randplace.php:179 ../../addon/drpost/drpost.php:110 #: ../../addon/geonames/geonames.php:187 ../../addon/oembed.old/oembed.php:41 #: ../../addon/impressum/impressum.php:69 ../../addon/blockem/blockem.php:57 +#: ../../addon/qcomment/qcomment.php:60 +#: ../../addon/openstreetmap/openstreetmap.php:70 #: ../../addon/editplain/editplain.php:84 ../../addon/blackout/blackout.php:94 #: ../../addon/pageheader/pageheader.php:52 -#: ../../addon/statusnet/statusnet.php:280 -#: ../../addon/statusnet/statusnet.php:294 +#: ../../addon/statusnet/statusnet.php:273 +#: ../../addon/statusnet/statusnet.php:287 +#: ../../addon/statusnet/statusnet.php:313 #: ../../addon/statusnet/statusnet.php:320 -#: ../../addon/statusnet/statusnet.php:327 -#: ../../addon/statusnet/statusnet.php:349 -#: ../../addon/statusnet/statusnet.php:495 ../../addon/tumblr/tumblr.php:90 +#: ../../addon/statusnet/statusnet.php:345 +#: ../../addon/statusnet/statusnet.php:532 ../../addon/tumblr/tumblr.php:90 #: ../../addon/numfriends/numfriends.php:85 ../../addon/wppost/wppost.php:102 -#: ../../addon/piwik/piwik.php:81 ../../addon/twitter/twitter.php:180 -#: ../../addon/twitter/twitter.php:203 ../../addon/twitter/twitter.php:315 -#: ../../addon/posterous/posterous.php:90 ../../include/conversation.php:515 +#: ../../addon/showmore/showmore.php:48 ../../addon/piwik/piwik.php:89 +#: ../../addon/twitter/twitter.php:175 ../../addon/twitter/twitter.php:201 +#: ../../addon/twitter/twitter.php:355 ../../addon/posterous/posterous.php:90 +#: ../../include/conversation.php:542 msgid "Submit" msgstr "Senden" @@ -193,82 +200,82 @@ msgstr "Kontakte vorschlagen" msgid "Suggest a friend for %s" msgstr "Schlage %s einen Kontakt vor" -#: ../../mod/events.php:61 +#: ../../mod/events.php:62 msgid "Event description and start time are required." msgstr "Ereignis Beschreibung und Startzeit sind erforderlich." -#: ../../mod/events.php:117 ../../include/nav.php:50 ../../boot.php:1345 +#: ../../mod/events.php:230 +msgid "l, F j" +msgstr "l, F j" + +#: ../../mod/events.php:252 +msgid "Edit event" +msgstr "Veranstaltung bearbeiten" + +#: ../../mod/events.php:272 ../../include/text.php:964 +msgid "link to source" +msgstr "Link zum Originalbeitrag" + +#: ../../mod/events.php:296 ../../include/nav.php:50 ../../boot.php:1349 msgid "Events" msgstr "Veranstaltungen" -#: ../../mod/events.php:207 +#: ../../mod/events.php:297 msgid "Create New Event" msgstr "Neue Veranstaltung erstellen" -#: ../../mod/events.php:210 +#: ../../mod/events.php:298 msgid "Previous" msgstr "Vorherige" -#: ../../mod/events.php:213 ../../mod/install.php:210 +#: ../../mod/events.php:299 ../../mod/install.php:210 msgid "Next" msgstr "Nächste" -#: ../../mod/events.php:220 -msgid "l, F j" -msgstr "l, F j" - -#: ../../mod/events.php:235 -msgid "Edit event" -msgstr "Veranstaltung bearbeiten" - -#: ../../mod/events.php:237 ../../include/text.php:883 -msgid "link to source" -msgstr "Link zum Originalbeitrag" - -#: ../../mod/events.php:305 +#: ../../mod/events.php:371 msgid "hour:minute" msgstr "Stunde:Minute" -#: ../../mod/events.php:314 +#: ../../mod/events.php:380 msgid "Event details" msgstr "Veranstaltungsdetails" -#: ../../mod/events.php:315 +#: ../../mod/events.php:381 #, php-format msgid "Format is %s %s. Starting date and Description are required." msgstr "Format ist %s %s. Anfangsdatum und Beschreibung sind notwendig." -#: ../../mod/events.php:316 +#: ../../mod/events.php:383 msgid "Event Starts:" msgstr "Veranstaltungsbeginn:" -#: ../../mod/events.php:319 +#: ../../mod/events.php:386 msgid "Finish date/time is not known or not relevant" msgstr "Enddatum/-zeit ist nicht bekannt oder nicht relevant" -#: ../../mod/events.php:321 +#: ../../mod/events.php:388 msgid "Event Finishes:" msgstr "Veranstaltungsende:" -#: ../../mod/events.php:324 +#: ../../mod/events.php:391 msgid "Adjust for viewer timezone" msgstr "An Zeitzone des Betrachters anpassen" -#: ../../mod/events.php:326 +#: ../../mod/events.php:393 msgid "Description:" msgstr "Beschreibung" -#: ../../mod/events.php:328 ../../include/event.php:37 -#: ../../include/bb2diaspora.php:271 ../../boot.php:976 +#: ../../mod/events.php:395 ../../include/event.php:37 +#: ../../include/bb2diaspora.php:290 ../../boot.php:980 msgid "Location:" msgstr "Ort:" -#: ../../mod/events.php:330 +#: ../../mod/events.php:397 msgid "Share this event" msgstr "Veranstaltung teilen" #: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94 -#: ../../mod/dfrn_request.php:685 ../../mod/settings.php:454 +#: ../../mod/dfrn_request.php:686 ../../mod/settings.php:454 #: ../../mod/settings.php:480 ../../addon/js_upload/js_upload.php:45 msgid "Cancel" msgstr "Abbrechen" @@ -312,24 +319,24 @@ msgid "" " and/or create new posts for you?" msgstr "Möchtest du dieser Anwendung den Zugriff auf deine Beiträge und Kontakte sowie die Erstellung neuer Beiträge in deinem Namen gestatten?" -#: ../../mod/api.php:105 ../../mod/dfrn_request.php:675 +#: ../../mod/api.php:105 ../../mod/dfrn_request.php:676 #: ../../mod/settings.php:681 ../../mod/settings.php:687 #: ../../mod/settings.php:695 ../../mod/settings.php:699 #: ../../mod/settings.php:704 ../../mod/settings.php:710 -#: ../../mod/settings.php:716 ../../mod/settings.php:763 -#: ../../mod/settings.php:764 ../../mod/settings.php:765 -#: ../../mod/settings.php:766 ../../mod/register.php:524 +#: ../../mod/settings.php:716 ../../mod/settings.php:776 +#: ../../mod/settings.php:777 ../../mod/settings.php:778 +#: ../../mod/settings.php:779 ../../mod/register.php:524 #: ../../mod/profiles.php:357 msgid "Yes" msgstr "Ja" -#: ../../mod/api.php:106 ../../mod/dfrn_request.php:676 +#: ../../mod/api.php:106 ../../mod/dfrn_request.php:677 #: ../../mod/settings.php:681 ../../mod/settings.php:687 #: ../../mod/settings.php:695 ../../mod/settings.php:699 #: ../../mod/settings.php:704 ../../mod/settings.php:710 -#: ../../mod/settings.php:716 ../../mod/settings.php:763 -#: ../../mod/settings.php:764 ../../mod/settings.php:765 -#: ../../mod/settings.php:766 ../../mod/register.php:525 +#: ../../mod/settings.php:716 ../../mod/settings.php:776 +#: ../../mod/settings.php:777 ../../mod/settings.php:778 +#: ../../mod/settings.php:779 ../../mod/register.php:525 #: ../../mod/profiles.php:358 msgid "No" msgstr "Nein" @@ -384,8 +391,8 @@ msgstr "wurde getaggt in einem" #: ../../mod/photos.php:528 ../../mod/like.php:127 ../../mod/tagger.php:70 #: ../../addon/communityhome/communityhome.php:163 -#: ../../include/diaspora.php:1587 ../../include/conversation.php:31 -#: ../../include/conversation.php:104 +#: ../../include/diaspora.php:1600 ../../include/conversation.php:53 +#: ../../include/conversation.php:126 msgid "photo" msgstr "Foto" @@ -393,7 +400,7 @@ msgstr "Foto" msgid "by" msgstr "von" -#: ../../mod/photos.php:631 ../../addon/js_upload/js_upload.php:312 +#: ../../mod/photos.php:631 ../../addon/js_upload/js_upload.php:315 msgid "Image exceeds size limit of " msgstr "Die Bildgröße übersteigt das Limit von " @@ -412,8 +419,8 @@ msgid "Image upload failed." msgstr "Hochladen des Bildes gescheitert." #: ../../mod/photos.php:759 ../../mod/community.php:16 -#: ../../mod/dfrn_request.php:624 ../../mod/viewcontacts.php:16 -#: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:31 +#: ../../mod/dfrn_request.php:625 ../../mod/viewcontacts.php:17 +#: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:33 msgid "Public access denied." msgstr "Öffentlicher Zugriff verweigert." @@ -473,7 +480,7 @@ msgstr "Foto bearbeiten" msgid "Use as profile photo" msgstr "Als Profilbild verwenden" -#: ../../mod/photos.php:1078 ../../include/conversation.php:450 +#: ../../mod/photos.php:1078 ../../include/conversation.php:472 msgid "Private Message" msgstr "Private Nachricht" @@ -506,44 +513,44 @@ msgid "" "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgstr "Beispiel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" -#: ../../mod/photos.php:1200 ../../include/conversation.php:497 +#: ../../mod/photos.php:1200 ../../include/conversation.php:519 msgid "I like this (toggle)" msgstr "Ich mag das (toggle)" -#: ../../mod/photos.php:1201 ../../include/conversation.php:498 +#: ../../mod/photos.php:1201 ../../include/conversation.php:520 msgid "I don't like this (toggle)" msgstr "Ich mag das nicht (toggle)" -#: ../../mod/photos.php:1202 ../../include/conversation.php:889 +#: ../../mod/photos.php:1202 ../../include/conversation.php:914 msgid "Share" msgstr "Teilen" -#: ../../mod/photos.php:1203 ../../mod/editpost.php:100 +#: ../../mod/photos.php:1203 ../../mod/editpost.php:104 #: ../../mod/message.php:155 ../../mod/message.php:296 -#: ../../include/conversation.php:321 ../../include/conversation.php:652 -#: ../../include/conversation.php:906 +#: ../../include/conversation.php:343 ../../include/conversation.php:677 +#: ../../include/conversation.php:931 msgid "Please wait" msgstr "Bitte warten" #: ../../mod/photos.php:1219 ../../mod/photos.php:1259 -#: ../../mod/photos.php:1290 ../../include/conversation.php:512 +#: ../../mod/photos.php:1290 ../../include/conversation.php:539 msgid "This is you" msgstr "Das bist du" #: ../../mod/photos.php:1221 ../../mod/photos.php:1261 -#: ../../mod/photos.php:1292 ../../include/conversation.php:514 -#: ../../boot.php:443 +#: ../../mod/photos.php:1292 ../../include/conversation.php:541 +#: ../../boot.php:447 msgid "Comment" msgstr "Kommentar" -#: ../../mod/photos.php:1223 ../../mod/editpost.php:119 -#: ../../include/conversation.php:516 ../../include/conversation.php:924 +#: ../../mod/photos.php:1223 ../../mod/editpost.php:123 +#: ../../include/conversation.php:543 ../../include/conversation.php:949 msgid "Preview" msgstr "Vorschau" #: ../../mod/photos.php:1320 ../../mod/settings.php:513 -#: ../../mod/group.php:154 ../../mod/admin.php:468 -#: ../../include/conversation.php:280 ../../include/conversation.php:536 +#: ../../mod/group.php:154 ../../mod/admin.php:484 +#: ../../include/conversation.php:302 ../../include/conversation.php:563 msgid "Delete" msgstr "Löschen" @@ -603,70 +610,70 @@ msgstr "Keine Plugins/Erweiterungen/Apps installiert" msgid "Item not found" msgstr "Beitrag nicht gefunden" -#: ../../mod/editpost.php:32 +#: ../../mod/editpost.php:36 msgid "Edit post" msgstr "Beitrag bearbeiten" -#: ../../mod/editpost.php:76 ../../include/conversation.php:875 +#: ../../mod/editpost.php:80 ../../include/conversation.php:900 msgid "Post to Email" msgstr "An E-Mail senden" -#: ../../mod/editpost.php:91 ../../mod/settings.php:512 -#: ../../include/conversation.php:523 +#: ../../mod/editpost.php:95 ../../mod/settings.php:512 +#: ../../include/conversation.php:550 msgid "Edit" msgstr "Bearbeiten" -#: ../../mod/editpost.php:92 ../../mod/message.php:153 -#: ../../mod/message.php:294 ../../include/conversation.php:890 +#: ../../mod/editpost.php:96 ../../mod/message.php:153 +#: ../../mod/message.php:294 ../../include/conversation.php:915 msgid "Upload photo" msgstr "Foto hochladen" -#: ../../mod/editpost.php:93 ../../include/conversation.php:892 +#: ../../mod/editpost.php:97 ../../include/conversation.php:917 msgid "Attach file" msgstr "Datei anhängen" -#: ../../mod/editpost.php:94 ../../mod/message.php:154 -#: ../../mod/message.php:295 ../../include/conversation.php:894 +#: ../../mod/editpost.php:98 ../../mod/message.php:154 +#: ../../mod/message.php:295 ../../include/conversation.php:919 msgid "Insert web link" msgstr "Weblink einfügen" -#: ../../mod/editpost.php:95 +#: ../../mod/editpost.php:99 msgid "Insert YouTube video" msgstr "YouTube-Video einfügen" -#: ../../mod/editpost.php:96 +#: ../../mod/editpost.php:100 msgid "Insert Vorbis [.ogg] video" msgstr "Vorbis [.ogg] Video einfügen" -#: ../../mod/editpost.php:97 +#: ../../mod/editpost.php:101 msgid "Insert Vorbis [.ogg] audio" msgstr "Vorbis [.ogg] Audio einfügen" -#: ../../mod/editpost.php:98 ../../include/conversation.php:900 +#: ../../mod/editpost.php:102 ../../include/conversation.php:925 msgid "Set your location" msgstr "Deinen Standort festlegen" -#: ../../mod/editpost.php:99 ../../include/conversation.php:902 +#: ../../mod/editpost.php:103 ../../include/conversation.php:927 msgid "Clear browser location" msgstr "Browser-Standort leeren" -#: ../../mod/editpost.php:101 ../../include/conversation.php:907 +#: ../../mod/editpost.php:105 ../../include/conversation.php:932 msgid "Permission settings" msgstr "Berechtigungseinstellungen" -#: ../../mod/editpost.php:109 ../../include/conversation.php:916 +#: ../../mod/editpost.php:113 ../../include/conversation.php:941 msgid "CC: email addresses" msgstr "Cc:-E-Mail-Addressen" -#: ../../mod/editpost.php:110 ../../include/conversation.php:917 +#: ../../mod/editpost.php:114 ../../include/conversation.php:942 msgid "Public post" msgstr "Öffentlicher Beitrag" -#: ../../mod/editpost.php:113 ../../include/conversation.php:905 +#: ../../mod/editpost.php:117 ../../include/conversation.php:930 msgid "Set title" msgstr "Titel setzen" -#: ../../mod/editpost.php:114 ../../include/conversation.php:919 +#: ../../mod/editpost.php:118 ../../include/conversation.php:944 msgid "Example: bob@example.com, mary@example.com" msgstr "Z.B.: bob@example.com, mary@example.com" @@ -775,68 +782,68 @@ msgstr "Bitte bestätige deine Kontaktanfrage bei %s." msgid "Confirm" msgstr "Bestätigen" -#: ../../mod/dfrn_request.php:581 ../../include/items.php:2443 +#: ../../mod/dfrn_request.php:582 ../../include/items.php:2504 msgid "[Name Withheld]" msgstr "[Name Zurückgehalten]" -#: ../../mod/dfrn_request.php:665 +#: ../../mod/dfrn_request.php:666 #, php-format msgid "" "Diaspora members: Please do not use this form. Instead, enter \"%s\" into " "your Diaspora search bar." msgstr "Diaspora-User: Bitte nicht dieses Formular benutzen! Gebt statt dessen \"%s\" in der Diaspora-Suchleiste ein." -#: ../../mod/dfrn_request.php:668 +#: ../../mod/dfrn_request.php:669 msgid "" "Please enter your 'Identity Address' from one of the following supported " "social networks:" msgstr "Bitte gib die Adresse deines Profils in einem der unterstützten sozialen Netzwerke an:" -#: ../../mod/dfrn_request.php:671 +#: ../../mod/dfrn_request.php:672 msgid "Friend/Connection Request" msgstr "Freundschafts-/Kontaktanfrage" -#: ../../mod/dfrn_request.php:672 +#: ../../mod/dfrn_request.php:673 msgid "" "Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, " "testuser@identi.ca" msgstr "Beispiele: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca" -#: ../../mod/dfrn_request.php:673 +#: ../../mod/dfrn_request.php:674 msgid "Please answer the following:" msgstr "Bitte beantworte folgende Fragen:" -#: ../../mod/dfrn_request.php:674 +#: ../../mod/dfrn_request.php:675 #, php-format msgid "Does %s know you?" msgstr "Kennt %s dich?" -#: ../../mod/dfrn_request.php:677 +#: ../../mod/dfrn_request.php:678 msgid "Add a personal note:" msgstr "Eine persönliche Notiz anfügen:" -#: ../../mod/dfrn_request.php:679 ../../include/contact_selectors.php:76 +#: ../../mod/dfrn_request.php:680 ../../include/contact_selectors.php:76 msgid "Friendica" msgstr "Friendica" -#: ../../mod/dfrn_request.php:680 +#: ../../mod/dfrn_request.php:681 msgid "StatusNet/Federated Social Web" msgstr "StatusNet/Federated Social Web" -#: ../../mod/dfrn_request.php:681 ../../mod/settings.php:548 +#: ../../mod/dfrn_request.php:682 ../../mod/settings.php:548 #: ../../include/contact_selectors.php:80 msgid "Diaspora" msgstr "Diaspora" -#: ../../mod/dfrn_request.php:682 +#: ../../mod/dfrn_request.php:683 msgid "- please share from your own site as noted above" msgstr "- bitte fange von Deiner eigenen Seite aus zu teilen an" -#: ../../mod/dfrn_request.php:683 +#: ../../mod/dfrn_request.php:684 msgid "Your Identity Address:" msgstr "Adresse deines Profils:" -#: ../../mod/dfrn_request.php:684 +#: ../../mod/dfrn_request.php:685 msgid "Submit Request" msgstr "Anfrage abschicken" @@ -1086,7 +1093,7 @@ msgid "Errors encountered creating database tables." msgstr "Fehler aufgetreten während der Erzeugung der Datenbanktabellen." #: ../../mod/localtime.php:12 ../../include/event.php:11 -#: ../../include/bb2diaspora.php:249 +#: ../../include/bb2diaspora.php:268 msgid "l F d, Y \\@ g:i A" msgstr "l F d, Y \\@ g:i A" @@ -1132,7 +1139,7 @@ msgid "is interested in:" msgstr "ist interessiert an:" #: ../../mod/match.php:58 ../../mod/suggest.php:59 -#: ../../include/contact_widgets.php:9 ../../boot.php:926 +#: ../../include/contact_widgets.php:9 ../../boot.php:930 msgid "Connect" msgstr "Verbinden" @@ -1157,165 +1164,187 @@ msgstr "Willkommen zu %s" msgid "Invalid request identifier." msgstr "Invalid request identifier." -#: ../../mod/notifications.php:35 ../../mod/notifications.php:152 -#: ../../mod/notifications.php:198 +#: ../../mod/notifications.php:35 ../../mod/notifications.php:157 +#: ../../mod/notifications.php:203 msgid "Discard" msgstr "Verwerfen" -#: ../../mod/notifications.php:47 ../../mod/notifications.php:151 -#: ../../mod/notifications.php:197 ../../mod/contacts.php:302 +#: ../../mod/notifications.php:47 ../../mod/notifications.php:156 +#: ../../mod/notifications.php:202 ../../mod/contacts.php:302 #: ../../mod/contacts.php:345 msgid "Ignore" msgstr "Ignorieren" -#: ../../mod/notifications.php:71 ../../include/nav.php:109 +#: ../../mod/notifications.php:71 +msgid "System" +msgstr "System" + +#: ../../mod/notifications.php:76 ../../include/nav.php:109 msgid "Network" msgstr "Netzwerk" -#: ../../mod/notifications.php:76 ../../mod/network.php:177 +#: ../../mod/notifications.php:81 ../../mod/network.php:177 msgid "Personal" msgstr "Persönlich" -#: ../../mod/notifications.php:81 ../../include/nav.php:73 +#: ../../mod/notifications.php:86 ../../include/nav.php:73 #: ../../include/nav.php:111 msgid "Home" msgstr "Pinnwand" -#: ../../mod/notifications.php:86 ../../include/nav.php:117 +#: ../../mod/notifications.php:91 ../../include/nav.php:117 msgid "Introductions" msgstr "Kontaktanfragen" -#: ../../mod/notifications.php:91 ../../mod/message.php:76 -#: ../../include/nav.php:123 +#: ../../mod/notifications.php:96 ../../mod/message.php:76 +#: ../../include/nav.php:124 msgid "Messages" msgstr "Nachrichten" -#: ../../mod/notifications.php:110 +#: ../../mod/notifications.php:115 msgid "Show Ignored Requests" msgstr "Zeige ignorierte Anfragen" -#: ../../mod/notifications.php:110 +#: ../../mod/notifications.php:115 msgid "Hide Ignored Requests" msgstr "Verberge ignorierte Anfragen" -#: ../../mod/notifications.php:136 ../../mod/notifications.php:182 +#: ../../mod/notifications.php:141 ../../mod/notifications.php:187 msgid "Notification type: " msgstr "Benachrichtigungstyp: " -#: ../../mod/notifications.php:137 +#: ../../mod/notifications.php:142 msgid "Friend Suggestion" msgstr "Kontaktvorschlag" -#: ../../mod/notifications.php:139 +#: ../../mod/notifications.php:144 #, php-format msgid "suggested by %s" msgstr "vorgeschlagen von %s" -#: ../../mod/notifications.php:144 ../../mod/notifications.php:191 +#: ../../mod/notifications.php:149 ../../mod/notifications.php:196 #: ../../mod/contacts.php:350 msgid "Hide this contact from others" msgstr "Verberge diesen Kontakt vor anderen" -#: ../../mod/notifications.php:145 ../../mod/notifications.php:192 +#: ../../mod/notifications.php:150 ../../mod/notifications.php:197 msgid "Post a new friend activity" msgstr "Neue-Kontakt Nachricht senden" -#: ../../mod/notifications.php:145 ../../mod/notifications.php:192 +#: ../../mod/notifications.php:150 ../../mod/notifications.php:197 msgid "if applicable" msgstr "falls anwendbar" -#: ../../mod/notifications.php:148 ../../mod/notifications.php:195 -#: ../../mod/admin.php:466 +#: ../../mod/notifications.php:153 ../../mod/notifications.php:200 +#: ../../mod/admin.php:482 msgid "Approve" msgstr "Genehmigen" -#: ../../mod/notifications.php:168 +#: ../../mod/notifications.php:173 msgid "Claims to be known to you: " msgstr "Behauptet dich zu kennen: " -#: ../../mod/notifications.php:168 +#: ../../mod/notifications.php:173 msgid "yes" msgstr "ja" -#: ../../mod/notifications.php:168 +#: ../../mod/notifications.php:173 msgid "no" msgstr "nein" -#: ../../mod/notifications.php:175 +#: ../../mod/notifications.php:180 msgid "Approve as: " msgstr "Genehmigen als: " -#: ../../mod/notifications.php:176 +#: ../../mod/notifications.php:181 msgid "Friend" msgstr "Freund" -#: ../../mod/notifications.php:177 +#: ../../mod/notifications.php:182 msgid "Sharer" msgstr "Teilenden" -#: ../../mod/notifications.php:177 +#: ../../mod/notifications.php:182 msgid "Fan/Admirer" msgstr "Fan/Verehrer" -#: ../../mod/notifications.php:183 +#: ../../mod/notifications.php:188 msgid "Friend/Connect Request" msgstr "Kontakt-/Freundschaftsanfrage" -#: ../../mod/notifications.php:183 +#: ../../mod/notifications.php:188 msgid "New Follower" msgstr "Neuer Bewunderer" -#: ../../mod/notifications.php:204 +#: ../../mod/notifications.php:209 msgid "No introductions." msgstr "Keine Kontaktanfragen." -#: ../../mod/notifications.php:207 ../../mod/notifications.php:293 -#: ../../mod/notifications.php:388 ../../mod/notifications.php:469 -#: ../../include/nav.php:118 +#: ../../mod/notifications.php:212 ../../include/nav.php:118 msgid "Notifications" msgstr "Benachrichtigungen" -#: ../../mod/notifications.php:244 ../../mod/notifications.php:339 -#: ../../mod/notifications.php:426 +#: ../../mod/notifications.php:249 ../../mod/notifications.php:374 +#: ../../mod/notifications.php:461 #, php-format msgid "%s liked %s's post" msgstr "%s mag %ss Beitrag" -#: ../../mod/notifications.php:253 ../../mod/notifications.php:348 -#: ../../mod/notifications.php:435 +#: ../../mod/notifications.php:258 ../../mod/notifications.php:383 +#: ../../mod/notifications.php:470 #, php-format msgid "%s disliked %s's post" msgstr "%s mag %ss Beitrag nicht" -#: ../../mod/notifications.php:267 ../../mod/notifications.php:362 -#: ../../mod/notifications.php:449 +#: ../../mod/notifications.php:272 ../../mod/notifications.php:397 +#: ../../mod/notifications.php:484 #, php-format msgid "%s is now friends with %s" msgstr "%s ist jetzt mit %s befreundet" -#: ../../mod/notifications.php:274 ../../mod/notifications.php:369 +#: ../../mod/notifications.php:279 ../../mod/notifications.php:404 #, php-format msgid "%s created a new post" msgstr "%s hat einen neuen Beitrag erstellt" -#: ../../mod/notifications.php:275 ../../mod/notifications.php:370 -#: ../../mod/notifications.php:458 +#: ../../mod/notifications.php:280 ../../mod/notifications.php:405 +#: ../../mod/notifications.php:493 #, php-format msgid "%s commented on %s's post" msgstr "%s hat %ss Beitrag kommentiert" -#: ../../mod/notifications.php:289 +#: ../../mod/notifications.php:294 msgid "No more network notifications." msgstr "Keine weiteren Netzwerk-Benachrichtigungen." -#: ../../mod/notifications.php:384 +#: ../../mod/notifications.php:298 +msgid "Network Notifications" +msgstr "Netzwerk Benachrichtigungen" + +#: ../../mod/notifications.php:324 ../../mod/notify.php:59 +msgid "No more system notifications." +msgstr "Keine weiteren System Benachrichtigungen." + +#: ../../mod/notifications.php:328 ../../mod/notify.php:63 +msgid "System Notifications" +msgstr "System Benachrichtigungen" + +#: ../../mod/notifications.php:419 msgid "No more personal notifications." msgstr "Keine weiteren persönlichen Benachrichtigungen" -#: ../../mod/notifications.php:465 +#: ../../mod/notifications.php:423 +msgid "Personal Notifications" +msgstr "Persönliche Benachrichtigungen" + +#: ../../mod/notifications.php:500 msgid "No more home notifications." msgstr "Keine weiteren Pinnwand-Benachrichtigungen" +#: ../../mod/notifications.php:504 +msgid "Home Notifications" +msgstr "Pinnwand Benachrichtigungen" + #: ../../mod/contacts.php:63 ../../mod/contacts.php:143 msgid "Could not access contact record." msgstr "Konnte nicht auf die Kontaktdaten zugreifen." @@ -1338,11 +1367,11 @@ msgstr "Kontakt wurde wieder freigegeben" #: ../../mod/contacts.php:179 msgid "Contact has been ignored" -msgstr "Der Kontakt wurde ignoriert" +msgstr "Kontakt wurde ignoriert" #: ../../mod/contacts.php:179 msgid "Contact has been unignored" -msgstr "Kontakt wurde ignoriert" +msgstr "Kontakt wird nicht mehr ignoriert" #: ../../mod/contacts.php:200 msgid "stopped following" @@ -1404,12 +1433,12 @@ msgid "View all contacts" msgstr "Alle Kontakte anzeigen" #: ../../mod/contacts.php:297 ../../mod/contacts.php:344 -#: ../../mod/admin.php:470 +#: ../../mod/admin.php:486 msgid "Unblock" msgstr "Entsperren" #: ../../mod/contacts.php:297 ../../mod/contacts.php:344 -#: ../../mod/admin.php:469 +#: ../../mod/admin.php:485 msgid "Block" msgstr "Sperren" @@ -1444,8 +1473,8 @@ msgstr "Kontakt Informationen / Notizen" msgid "Edit contact notes" msgstr "Notizen zum Kontakt bearbiten" -#: ../../mod/contacts.php:328 ../../mod/contacts.php:458 -#: ../../mod/viewcontacts.php:61 +#: ../../mod/contacts.php:328 ../../mod/contacts.php:497 +#: ../../mod/viewcontacts.php:60 #, php-format msgid "Visit %s's profile [%s]" msgstr "Besuche %ss Profil [%s]" @@ -1478,7 +1507,7 @@ msgstr "letzte Aktualisierung:" msgid "Update public posts" msgstr "Öffentliche Beiträge aktualisieren" -#: ../../mod/contacts.php:341 ../../mod/admin.php:701 +#: ../../mod/contacts.php:341 ../../mod/admin.php:896 msgid "Update now" msgstr "Jetzt aktualisieren" @@ -1495,52 +1524,60 @@ msgid "" "Replies/likes to your public posts <strong>may</strong> still be visible" msgstr "Antworten/Likes auf deine öffentlichen Beiträge <strong>könnten</strong> weiterhin sichtbar sein" -#: ../../mod/contacts.php:387 ../../include/nav.php:131 -msgid "Contacts" -msgstr "Kontakte" +#: ../../mod/contacts.php:399 ../../mod/group.php:194 +msgid "All Contacts" +msgstr "Alle Kontakte" -#: ../../mod/contacts.php:389 -msgid "Show Unblocked Contacts" -msgstr "Nicht geblockte Kontakte anzeigen" +#: ../../mod/contacts.php:404 +msgid "Unblocked Contacts" +msgstr "Nicht blockierte Kontakte" -#: ../../mod/contacts.php:389 -msgid "Show Blocked Contacts" -msgstr "Blockierte Kontakte anzeigen" +#: ../../mod/contacts.php:410 +msgid "Blocked Contacts" +msgstr "Blockierte Kontakte" -#: ../../mod/contacts.php:391 -msgid "Show All Contacts" -msgstr "Alle Kontakte anzeigen" +#: ../../mod/contacts.php:416 +msgid "Ignored Contacts" +msgstr "Ignorierte Kontakte" -#: ../../mod/contacts.php:393 -msgid "Search your contacts" -msgstr "Suche in deinen Kontakten" +#: ../../mod/contacts.php:422 +msgid "Hidden Contacts" +msgstr "Verborgene Kontakte" -#: ../../mod/contacts.php:394 ../../mod/directory.php:65 -msgid "Finding: " -msgstr "Funde: " - -#: ../../mod/contacts.php:395 ../../mod/directory.php:67 -#: ../../include/contact_widgets.php:34 -msgid "Find" -msgstr "Finde" - -#: ../../mod/contacts.php:434 +#: ../../mod/contacts.php:473 msgid "Mutual Friendship" msgstr "Beidseitige Freundschaft" -#: ../../mod/contacts.php:438 +#: ../../mod/contacts.php:477 msgid "is a fan of yours" msgstr "ist ein Fan von dir" -#: ../../mod/contacts.php:442 +#: ../../mod/contacts.php:481 msgid "you are a fan of" msgstr "du bist Fan von" -#: ../../mod/contacts.php:459 ../../include/Contact.php:135 -#: ../../include/conversation.php:748 +#: ../../mod/contacts.php:498 ../../include/Contact.php:135 +#: ../../include/conversation.php:773 msgid "Edit contact" msgstr "Kontakt bearbeiten" +#: ../../mod/contacts.php:518 ../../include/nav.php:132 +msgid "Contacts" +msgstr "Kontakte" + +#: ../../mod/contacts.php:522 +msgid "Search your contacts" +msgstr "Suche in deinen Kontakten" + +#: ../../mod/contacts.php:523 ../../mod/directory.php:67 +msgid "Finding: " +msgstr "Funde: " + +#: ../../mod/contacts.php:524 ../../mod/directory.php:69 +#: ../../include/contact_widgets.php:34 +msgid "Find" +msgstr "Finde" + #: ../../mod/lostpass.php:16 msgid "No valid account found." msgstr "Kein gültiger Account gefunden." @@ -1557,7 +1594,7 @@ msgstr "Anfrage zum Zurücksetzen des Passworts auf %s erhalten" #: ../../mod/lostpass.php:44 ../../mod/lostpass.php:106 #: ../../mod/register.php:380 ../../mod/register.php:434 #: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:716 -#: ../../include/items.php:2452 +#: ../../include/items.php:2513 msgid "Administrator" msgstr "Administrator" @@ -1567,7 +1604,7 @@ msgid "" "Password reset failed." msgstr "Anfrage konnte nicht verifiziert werden. (Eventuell hast du bereits ähnliche Anfrage gestellt.) Zurücksetzen des Passworts gescheitert." -#: ../../mod/lostpass.php:82 ../../boot.php:719 +#: ../../mod/lostpass.php:82 ../../boot.php:723 msgid "Password Reset" msgstr "Passwort zurücksetzen" @@ -1615,7 +1652,7 @@ msgstr "Zurücksetzen" msgid "Missing some important data!" msgstr "Wichtige Daten fehlen!" -#: ../../mod/settings.php:73 ../../mod/settings.php:479 ../../mod/admin.php:62 +#: ../../mod/settings.php:73 ../../mod/settings.php:479 ../../mod/admin.php:75 msgid "Update" msgstr "Aktualisierungen" @@ -1657,15 +1694,16 @@ msgstr " Keine gültige E-Mail." #: ../../mod/settings.php:283 msgid " Cannot change to that email." -msgstr " Cannot change to that email." +msgstr "Ändern der E-Mail nicht möglich. " -#: ../../mod/settings.php:351 ../../addon/facebook/facebook.php:320 -#: ../../addon/impressum/impressum.php:64 ../../addon/piwik/piwik.php:94 -#: ../../addon/twitter/twitter.php:310 +#: ../../mod/settings.php:351 ../../addon/facebook/facebook.php:321 +#: ../../addon/impressum/impressum.php:64 +#: ../../addon/openstreetmap/openstreetmap.php:80 +#: ../../addon/piwik/piwik.php:105 ../../addon/twitter/twitter.php:350 msgid "Settings updated." msgstr "Einstellungen aktualisiert." -#: ../../mod/settings.php:415 ../../include/nav.php:129 +#: ../../mod/settings.php:415 ../../include/nav.php:130 msgid "Account settings" msgstr "Account Einstellungen" @@ -1691,12 +1729,12 @@ msgid "Add application" msgstr "Programm hinzufügen" #: ../../mod/settings.php:456 ../../mod/settings.php:482 -#: ../../addon/statusnet/statusnet.php:489 +#: ../../addon/statusnet/statusnet.php:526 msgid "Consumer Key" msgstr "Consumer Key" #: ../../mod/settings.php:457 ../../mod/settings.php:483 -#: ../../addon/statusnet/statusnet.php:488 +#: ../../addon/statusnet/statusnet.php:525 msgid "Consumer Secret" msgstr "Consumer Secret" @@ -1807,7 +1845,7 @@ msgstr "Reply-to Adresse:" msgid "Send public posts to all email contacts:" msgstr "Sende öffentliche Beiträge an alle E-Mail-Kontakte:" -#: ../../mod/settings.php:648 ../../mod/admin.php:126 ../../mod/admin.php:443 +#: ../../mod/settings.php:648 ../../mod/admin.php:142 ../../mod/admin.php:459 msgid "Normal Account" msgstr "Normaler Account" @@ -1815,7 +1853,7 @@ msgstr "Normaler Account" msgid "This account is a normal personal profile" msgstr "Dieser Account ist ein normales persönliches Profil" -#: ../../mod/settings.php:652 ../../mod/admin.php:127 ../../mod/admin.php:444 +#: ../../mod/settings.php:652 ../../mod/admin.php:143 ../../mod/admin.php:460 msgid "Soapbox Account" msgstr "Sandkasten-Account" @@ -1823,7 +1861,7 @@ msgstr "Sandkasten-Account" msgid "Automatically approve all connection/friend requests as read-only fans" msgstr "Freundschaftsanfragen werden automatisch als Nurlese-Fans akzeptiert" -#: ../../mod/settings.php:656 ../../mod/admin.php:128 ../../mod/admin.php:445 +#: ../../mod/settings.php:656 ../../mod/admin.php:144 ../../mod/admin.php:461 msgid "Community/Celebrity Account" msgstr "Gemeinschafts/Promi-Account" @@ -1832,7 +1870,7 @@ msgid "" "Automatically approve all connection/friend requests as read-write fans" msgstr "Freundschaftsanfragen werden automatisch als Lese-und-Schreib-Fans akzeptiert" -#: ../../mod/settings.php:660 ../../mod/admin.php:129 ../../mod/admin.php:446 +#: ../../mod/settings.php:660 ../../mod/admin.php:145 ../../mod/admin.php:462 msgid "Automatic Friend Account" msgstr "Automatischer Freundesaccount" @@ -1880,159 +1918,159 @@ msgstr "Erlaube uns dich als potentiellen Kontakt für neue Mitglieder vorzuschl msgid "Profile is <strong>not published</strong>." msgstr "Profil ist <strong>nicht veröffentlicht</strong>." -#: ../../mod/settings.php:744 ../../mod/profile_photo.php:206 +#: ../../mod/settings.php:757 ../../mod/profile_photo.php:206 msgid "or" msgstr "oder" -#: ../../mod/settings.php:749 +#: ../../mod/settings.php:762 msgid "Your Identity Address is" msgstr "Die Adresse deines Profils lautet:" -#: ../../mod/settings.php:760 +#: ../../mod/settings.php:773 msgid "Automatically expire posts after this many days:" msgstr "Beiträge verfallen automatisch nach dieser Anzahl von Tagen" -#: ../../mod/settings.php:760 +#: ../../mod/settings.php:773 msgid "If empty, posts will not expire. Expired posts will be deleted" msgstr "Wenn leer verfallen Beiträge nie automatisch. Verfallene Beiträge werden gelöscht." -#: ../../mod/settings.php:761 +#: ../../mod/settings.php:774 msgid "Advanced expiration settings" msgstr "Erweiterte Verfallseinstellungen" -#: ../../mod/settings.php:762 +#: ../../mod/settings.php:775 msgid "Advanced Expiration" msgstr "Erweitertes Verfallen" -#: ../../mod/settings.php:763 +#: ../../mod/settings.php:776 msgid "Expire posts:" msgstr "Beiträge verfallen lassen:" -#: ../../mod/settings.php:764 +#: ../../mod/settings.php:777 msgid "Expire personal notes:" msgstr "Persönliche Notizen verfallen lassen:" -#: ../../mod/settings.php:765 +#: ../../mod/settings.php:778 msgid "Expire starred posts:" msgstr "Markierte Beiträge verfallen lassen:" -#: ../../mod/settings.php:766 +#: ../../mod/settings.php:779 msgid "Expire photos:" msgstr "Fotos verfallen lassen:" -#: ../../mod/settings.php:771 +#: ../../mod/settings.php:784 msgid "Account Settings" msgstr "Account-Einstellungen" -#: ../../mod/settings.php:779 +#: ../../mod/settings.php:792 msgid "Password Settings" msgstr "Passwort-Einstellungen" -#: ../../mod/settings.php:780 +#: ../../mod/settings.php:793 msgid "New Password:" msgstr "Neues Passwort:" -#: ../../mod/settings.php:781 +#: ../../mod/settings.php:794 msgid "Confirm:" msgstr "Bestätigen:" -#: ../../mod/settings.php:781 +#: ../../mod/settings.php:794 msgid "Leave password fields blank unless changing" msgstr "Lass die Passwort-Felder leer, außer du willst das Passwort ändern" -#: ../../mod/settings.php:785 +#: ../../mod/settings.php:798 msgid "Basic Settings" msgstr "Grundeinstellungen" -#: ../../mod/settings.php:786 ../../include/profile_advanced.php:15 +#: ../../mod/settings.php:799 ../../include/profile_advanced.php:15 msgid "Full Name:" msgstr "Kompletter Name:" -#: ../../mod/settings.php:787 +#: ../../mod/settings.php:800 msgid "Email Address:" msgstr "Emailadresse:" -#: ../../mod/settings.php:788 +#: ../../mod/settings.php:801 msgid "Your Timezone:" msgstr "Deine Zeitzone:" -#: ../../mod/settings.php:789 +#: ../../mod/settings.php:802 msgid "Default Post Location:" msgstr "Standardstandort:" -#: ../../mod/settings.php:790 +#: ../../mod/settings.php:803 msgid "Use Browser Location:" msgstr "Verwende den Standort des Browsers:" -#: ../../mod/settings.php:791 +#: ../../mod/settings.php:804 msgid "Display Theme:" msgstr "Theme:" -#: ../../mod/settings.php:792 +#: ../../mod/settings.php:805 msgid "Update browser every xx seconds" msgstr "Browser alle xx Sekunden aktualisieren" -#: ../../mod/settings.php:792 +#: ../../mod/settings.php:805 msgid "Minimum of 10 seconds, no maximum" msgstr "Minimal 10 Sekunden, kein Maximum" -#: ../../mod/settings.php:794 +#: ../../mod/settings.php:807 msgid "Security and Privacy Settings" msgstr "Sicherheits- und Privatsphäre-Einstellungen" -#: ../../mod/settings.php:796 +#: ../../mod/settings.php:809 msgid "Maximum Friend Requests/Day:" msgstr "Maximale Anzahl von Freundschaftsanfragen/Tag:" -#: ../../mod/settings.php:796 +#: ../../mod/settings.php:809 msgid "(to prevent spam abuse)" msgstr "(um SPAM zu vermeiden)" -#: ../../mod/settings.php:797 +#: ../../mod/settings.php:810 msgid "Default Post Permissions" msgstr "Standard-Zugriffsrechte für Beiträge" -#: ../../mod/settings.php:798 +#: ../../mod/settings.php:811 msgid "(click to open/close)" msgstr "(klicke zum öffnen/schließen)" -#: ../../mod/settings.php:813 +#: ../../mod/settings.php:826 msgid "Notification Settings" msgstr "Benachrichtigungseinstellungen" -#: ../../mod/settings.php:814 +#: ../../mod/settings.php:827 msgid "Send a notification email when:" msgstr "Benachrichtigungs-E-Mail senden wenn:" -#: ../../mod/settings.php:815 +#: ../../mod/settings.php:828 msgid "You receive an introduction" msgstr "Du eine Kontaktanfrage erhältst" -#: ../../mod/settings.php:816 +#: ../../mod/settings.php:829 msgid "Your introductions are confirmed" msgstr "Eine deiner Kontaktanfragen akzeptiert wurde" -#: ../../mod/settings.php:817 +#: ../../mod/settings.php:830 msgid "Someone writes on your profile wall" -msgstr "Jemand etwas auf deine Pinnwand schreibt" +msgstr "Jemand schreibt etwas auf deine Pinnwand" -#: ../../mod/settings.php:818 +#: ../../mod/settings.php:831 msgid "Someone writes a followup comment" -msgstr "Jemand auch einen Kommentar verfasst" +msgstr "Jemand verfasst auch einen Kommentar" -#: ../../mod/settings.php:819 +#: ../../mod/settings.php:832 msgid "You receive a private message" -msgstr "Du eine private Nachricht erhältst" +msgstr "Du erhältst eine private Nachricht" -#: ../../mod/settings.php:820 +#: ../../mod/settings.php:833 msgid "You receive a friend suggestion" msgstr "Du eine Empfehlung erhältst" -#: ../../mod/settings.php:821 +#: ../../mod/settings.php:834 msgid "You are tagged in a post" msgstr "Du wurdest in einem Beitrag erwähnt" -#: ../../mod/settings.php:824 +#: ../../mod/settings.php:837 msgid "Advanced Page Settings" msgstr "Erweiterte Seiten-Einstellungen" @@ -2098,31 +2136,31 @@ msgstr[1] "Warnung: Diese Gruppe beinhaltet %s Personen aus unsicheren Netzwerke msgid "Private messages to this group are at risk of public disclosure." msgstr "Private Nachrichten an diese Gruppe könnten an die Öffentlichkeit geraten." -#: ../../mod/network.php:304 +#: ../../mod/network.php:300 msgid "No such group" msgstr "Es gibt keine solche Gruppe" -#: ../../mod/network.php:315 +#: ../../mod/network.php:311 msgid "Group is empty" msgstr "Gruppe ist leer" -#: ../../mod/network.php:319 +#: ../../mod/network.php:315 msgid "Group: " msgstr "Gruppe: " -#: ../../mod/network.php:329 +#: ../../mod/network.php:325 msgid "Contact: " msgstr "Kontakt: " -#: ../../mod/network.php:331 +#: ../../mod/network.php:327 msgid "Private messages to this person are at risk of public disclosure." msgstr "Private Nachrichten an diese Person könnten an die Öffentlichkeit gelangen." -#: ../../mod/network.php:336 +#: ../../mod/network.php:332 msgid "Invalid contact." msgstr "Ungültiger Kontakt." -#: ../../mod/notes.php:44 ../../boot.php:1350 +#: ../../mod/notes.php:44 ../../boot.php:1354 msgid "Personal Notes" msgstr "Persönliche Notizen" @@ -2141,14 +2179,17 @@ msgstr "Checkliste für neue Mitglieder" #: ../../mod/newmember.php:12 msgid "" "We would like to offer some tips and links to help make your experience " -"enjoyable. Click any item to visit the relevant page." -msgstr "Wir möchten dir einige Tipps und Links anbieten, um deine Erfahrung mit Friendica so angenehm wie möglich zu machen. Klicke einfach einen Aspekt an, um weitere Informationen zu erhalten." +"enjoyable. Click any item to visit the relevant page. A link to this page " +"will be visible from your home page for two weeks after your initial " +"registration and then will quietly disappear." +msgstr "Wir möchten Dir einige Tipps und Links anbieten, die Dir helfen könnten, den Einstieg angenehmer zu machen. Klicke auf ein Element, um die entsprechende Seite zu besuchen. Ein Link zu dieser Seite hier bleibt sichtbar über Deine Pinnwand für zwei Wochen nach dem Registrierungsdatum und wird dann verschwinden." #: ../../mod/newmember.php:16 msgid "" "On your <em>Settings</em> page - change your initial password. Also make a " -"note of your Identity Address. This will be useful in making friends." -msgstr "Ändere dein anfängliches Passwort auf der <em>Einstellungen</em> Seite. Bei dieser Gelegenheit solltest du dir die Adresse deines Profils merken, diese wird benötigt um mit Anderen in Kontakt zu treten." +"note of your Identity Address. This looks just like an email address - and " +"will be useful in making friends on the free social web." +msgstr "Ändere bitte unter <em>Einstellungen</em> Dein Passwort. Außerdem merke Dir Deine Indentifikations Adresse. Diese sieht aus wie eine E-Mail Adresse und wird benötig um Freunschaften mit anderen im Friendica Netzwerk zu schliessen." #: ../../mod/newmember.php:18 msgid "" @@ -2171,49 +2212,64 @@ msgid "" "and we will (optionally) import all your Facebook friends and conversations." msgstr "Richte die Verbindung zu Facebook ein, wenn du im Augenblick ein Facebook Konto hast und (optional) deine Facebook Freunde und Unterhaltungen importieren willst." -#: ../../mod/newmember.php:28 +#: ../../mod/newmember.php:25 +msgid "" +"<em>If</em> this is your own personal server, installing the Facebook addon " +"may ease your transition to the free social web." +msgstr "<em>Wenn</em> dies dein privater Server ist könnte die Installation des Facebook Connectors deinen Umzug ins freie Soziale Netz angenehmer gestalten." + +#: ../../mod/newmember.php:30 msgid "" "Enter your email access information on your Connector Settings page if you " "wish to import and interact with friends or mailing lists from your email " "INBOX" msgstr "Gib deine E-Mail-Zugangsinformationen auf der Connector-Einstellungsseite ein, falls du E-Mails aus deinem Posteingang importieren und mit Freunden und Mailinglisten interagieren willlst." -#: ../../mod/newmember.php:30 +#: ../../mod/newmember.php:32 msgid "" "Edit your <strong>default</strong> profile to your liking. Review the " "settings for hiding your list of friends and hiding the profile from unknown" " visitors." msgstr "Editiere dein <strong>Standard</strong> Profil nach deinen Vorlieben. Überprüfe die Einstellungen zum Verbergen deiner Freundesliste vor unbekannten Betrachtern des Profils." -#: ../../mod/newmember.php:32 +#: ../../mod/newmember.php:34 msgid "" "Set some public keywords for your default profile which describe your " "interests. We may be able to find other people with similar interests and " "suggest friendships." msgstr "Trage ein paar öffentliche Stichwörter in dein Standardprofil ein, die deine Interessen beschreiben. Eventuell sind wir in der Lage Leute zu finden, die deine Interessen teilen und können dir dann Kontakte vorschlagen." -#: ../../mod/newmember.php:34 +#: ../../mod/newmember.php:36 msgid "" "Your Contacts page is your gateway to managing friendships and connecting " "with friends on other networks. Typically you enter their address or site " "URL in the <em>Add New Contact</em> dialog." msgstr "Die Kontakte-Seite ist die Einstiegsseite, von der aus du Kontakte verwalten und dich mit Freunden in anderen Netzwerken verbinden kannst. Normalerweise gibst du dazu einfach ihre Adresse oder die URL der Seite im Kasten <em>Neuen Kontakt hinzufügen</em> ein." -#: ../../mod/newmember.php:36 +#: ../../mod/newmember.php:38 msgid "" "The Directory page lets you find other people in this network or other " "federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on " "their profile page. Provide your own Identity Address if requested." msgstr "Über die Verzeichnisseite kannst du andere Personen auf diesem Server oder anderen verteilten Seiten finden. Halte nach einem <em>Verbinden</em> oder <em>Folgen</em> Link auf deren Profilseiten Ausschau und gib deine eigene Profiladresse an falls du danach gefragt wirst." -#: ../../mod/newmember.php:38 +#: ../../mod/newmember.php:40 +msgid "" +"On the side panel of the Contacts page are several tools to find new " +"friends. We can match people by interest, look up people by name or " +"interest, and provide suggestions based on network relationships. On a brand" +" new site, friend suggestions will usually begin to be populated within 24 " +"hours." +msgstr "Im seitlichen Bedienfeld der Kontakte-Seite gibt es diverse Werkzeuge, um neue Freunde zu finden. Wir können Menschen mit den gleichen Interessen finden, anhand von Namen oder Interessen suchen oder aber aufgrund vorhandener Kontakte neue Freunde vorschlagen.\nAuf einer brandneuen - soeben erstellten - Seite starten die Kontaktvorschläge innerhalb von 24 Stunden." + +#: ../../mod/newmember.php:42 msgid "" "Once you have made some friends, organize them into private conversation " "groups from the sidebar of your Contacts page and then you can interact with" " each group privately on your Network page." msgstr "Sobald du einige Freunde gefunden hast, organisiere sie in Gruppen zur privaten Kommunikation im Seitenmenü der Kontakte-Seite. Du kannst dann mit jeder dieser Gruppen von der Netzwerkseite aus privat interagieren." -#: ../../mod/newmember.php:40 +#: ../../mod/newmember.php:44 msgid "" "Our <strong>help</strong> pages may be consulted for detail on other program" " features and resources." @@ -2275,10 +2331,6 @@ msgstr "Gruppeneditor" msgid "Members" msgstr "Mitglieder" -#: ../../mod/group.php:194 -msgid "All Contacts" -msgstr "Alle Kontakte" - #: ../../mod/profperm.php:25 ../../mod/profperm.php:55 msgid "Invalid profile identifier." msgstr "Ungültiger Profil-Bezeichner" @@ -2289,7 +2341,7 @@ msgstr "Editor für die Profil-Sichtbarkeit" #: ../../mod/profperm.php:103 ../../include/profile_advanced.php:7 #: ../../include/profile_advanced.php:76 ../../include/nav.php:48 -#: ../../boot.php:1332 +#: ../../boot.php:1336 msgid "Profile" msgstr "Profil" @@ -2301,14 +2353,14 @@ msgstr "Sichtbar für" msgid "All Contacts (with secure profile access)" msgstr "Alle Kontakte (mit gesichertem Profilzugriff)" -#: ../../mod/viewcontacts.php:25 ../../include/text.php:578 -msgid "View Contacts" -msgstr "Kontakte anzeigen" - -#: ../../mod/viewcontacts.php:40 +#: ../../mod/viewcontacts.php:39 msgid "No contacts." msgstr "Keine Kontakte." +#: ../../mod/viewcontacts.php:73 ../../include/text.php:578 +msgid "View Contacts" +msgstr "Kontakte anzeigen" + #: ../../mod/register.php:62 msgid "An invitation is required." msgstr "Du benötigst eine Einladung." @@ -2361,7 +2413,7 @@ msgstr "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen." #: ../../mod/register.php:170 msgid "SERIOUS ERROR: Generation of security keys failed." -msgstr "SERIOUS ERROR: Generation of security keys failed." +msgstr "FATALER FEHLER: Sicherheitsschlüssel konnten nicht erzeugt werden." #: ../../mod/register.php:238 msgid "An error occurred during registration. Please try again." @@ -2432,7 +2484,7 @@ msgstr "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung mögli msgid "Your invitation ID: " msgstr "ID deiner Einladung: " -#: ../../mod/register.php:540 ../../mod/admin.php:297 +#: ../../mod/register.php:540 ../../mod/admin.php:313 msgid "Registration" msgstr "Registrierung" @@ -2455,7 +2507,7 @@ msgstr "Wähle einen Spitznamen für dein Profil. Dieser muss mit einem Buchstab msgid "Choose a nickname: " msgstr "Spitznamen wählen: " -#: ../../mod/register.php:554 ../../include/nav.php:77 ../../boot.php:689 +#: ../../mod/register.php:554 ../../include/nav.php:77 ../../boot.php:693 msgid "Register" msgstr "Registrieren" @@ -2464,30 +2516,31 @@ msgid "People Search" msgstr "Personen Suche" #: ../../mod/like.php:127 ../../mod/tagger.php:70 -#: ../../addon/facebook/facebook.php:1091 +#: ../../addon/facebook/facebook.php:1092 #: ../../addon/communityhome/communityhome.php:158 #: ../../addon/communityhome/communityhome.php:167 -#: ../../include/diaspora.php:1587 ../../include/conversation.php:26 -#: ../../include/conversation.php:35 ../../include/conversation.php:99 -#: ../../include/conversation.php:108 +#: ../../include/diaspora.php:1600 ../../include/conversation.php:48 +#: ../../include/conversation.php:57 ../../include/conversation.php:121 +#: ../../include/conversation.php:130 msgid "status" msgstr "Status" -#: ../../mod/like.php:144 ../../addon/facebook/facebook.php:1095 +#: ../../mod/like.php:144 ../../addon/facebook/facebook.php:1096 #: ../../addon/communityhome/communityhome.php:172 -#: ../../include/diaspora.php:1603 ../../include/conversation.php:43 +#: ../../include/diaspora.php:1616 ../../include/conversation.php:65 #, php-format msgid "%1$s likes %2$s's %3$s" msgstr "%1$s mag %2$ss %3$s" -#: ../../mod/like.php:146 ../../include/conversation.php:46 +#: ../../mod/like.php:146 ../../include/conversation.php:68 #, php-format msgid "%1$s doesn't like %2$s's %3$s" msgstr "%1$s mag %2$ss %3$s nicht" -#: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:111 -#: ../../mod/admin.php:502 ../../mod/display.php:28 ../../mod/display.php:116 -#: ../../mod/viewd.php:14 ../../include/items.php:2819 +#: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:127 +#: ../../mod/admin.php:518 ../../mod/admin.php:694 ../../mod/display.php:29 +#: ../../mod/display.php:134 ../../mod/viewd.php:14 +#: ../../include/items.php:2880 msgid "Item not found." msgstr "Beitrag nicht gefunden." @@ -2508,43 +2561,43 @@ msgstr "Registrierung für %s wurde zurückgezogen" msgid "Please login." msgstr "Bitte melde dich an." -#: ../../mod/item.php:88 +#: ../../mod/item.php:89 msgid "Unable to locate original post." msgstr "Konnte den Originalbeitrag nicht finden." -#: ../../mod/item.php:248 +#: ../../mod/item.php:249 msgid "Empty post discarded." msgstr "Leerer Beitrag wurde verworfen." -#: ../../mod/item.php:350 ../../mod/wall_upload.php:81 +#: ../../mod/item.php:351 ../../mod/wall_upload.php:81 #: ../../mod/wall_upload.php:90 ../../mod/wall_upload.php:97 #: ../../include/message.php:143 msgid "Wall Photos" msgstr "Pinnwand-Bilder" -#: ../../mod/item.php:827 +#: ../../mod/item.php:830 msgid "System error. Post not saved." msgstr "Systemfehler. Beitrag konnte nicht gespeichert werden." -#: ../../mod/item.php:852 +#: ../../mod/item.php:855 #, php-format msgid "" "This message was sent to you by %s, a member of the Friendica social " "network." msgstr "Diese Nachricht wurde dir von %s geschickt, einem Mitglied des Sozialen Netzwerks Friendica." -#: ../../mod/item.php:854 +#: ../../mod/item.php:857 #, php-format msgid "You may visit them online at %s" msgstr "Du kannst sie online unter %s besuchen" -#: ../../mod/item.php:855 +#: ../../mod/item.php:858 msgid "" "Please contact the sender by replying to this post if you do not wish to " "receive these messages." msgstr "Falls du diese Beiträge nicht erhalten möchtest, kontaktiere bitte den Autor, indem du auf diese Nachricht antwortest." -#: ../../mod/item.php:857 +#: ../../mod/item.php:860 #, php-format msgid "%s posted an update." msgstr "%s hat ein Update veröffentlicht." @@ -2668,7 +2721,7 @@ msgstr "Nachricht gelöscht." msgid "Conversation removed." msgstr "Unterhaltung gelöscht." -#: ../../mod/message.php:137 ../../include/conversation.php:843 +#: ../../mod/message.php:137 ../../include/conversation.php:868 msgid "Please enter a link URL:" msgstr "Bitte gib die URL des Links ein:" @@ -2722,348 +2775,357 @@ msgstr "Freunde von %s" msgid "No friends to display." msgstr "Keine Freunde zum Anzeigen." -#: ../../mod/admin.php:59 ../../mod/admin.php:295 +#: ../../mod/admin.php:71 ../../mod/admin.php:311 msgid "Site" msgstr "Seite" -#: ../../mod/admin.php:60 ../../mod/admin.php:460 ../../mod/admin.php:472 +#: ../../mod/admin.php:72 ../../mod/admin.php:476 ../../mod/admin.php:488 msgid "Users" msgstr "Nutzer" -#: ../../mod/admin.php:61 ../../mod/admin.php:549 ../../mod/admin.php:586 +#: ../../mod/admin.php:73 ../../mod/admin.php:565 ../../mod/admin.php:602 msgid "Plugins" msgstr "Plugins" -#: ../../mod/admin.php:76 ../../mod/admin.php:651 +#: ../../mod/admin.php:74 ../../mod/admin.php:736 ../../mod/admin.php:768 +msgid "Themes" +msgstr "Themen" + +#: ../../mod/admin.php:89 ../../mod/admin.php:846 msgid "Logs" msgstr "Protokolle" -#: ../../mod/admin.php:81 +#: ../../mod/admin.php:94 msgid "User registrations waiting for confirmation" msgstr "Nutzeranmeldungen die auf Bestätigung warten" -#: ../../mod/admin.php:144 ../../mod/admin.php:294 ../../mod/admin.php:459 -#: ../../mod/admin.php:548 ../../mod/admin.php:585 ../../mod/admin.php:650 +#: ../../mod/admin.php:160 ../../mod/admin.php:310 ../../mod/admin.php:475 +#: ../../mod/admin.php:564 ../../mod/admin.php:601 ../../mod/admin.php:735 +#: ../../mod/admin.php:767 ../../mod/admin.php:845 msgid "Administration" msgstr "Administration" -#: ../../mod/admin.php:145 +#: ../../mod/admin.php:161 msgid "Summary" msgstr "Zusammenfassung" -#: ../../mod/admin.php:146 +#: ../../mod/admin.php:162 msgid "Registered users" msgstr "Registrierte Nutzer" -#: ../../mod/admin.php:148 +#: ../../mod/admin.php:164 msgid "Pending registrations" msgstr "Anstehende Anmeldungen" -#: ../../mod/admin.php:149 +#: ../../mod/admin.php:165 msgid "Version" msgstr "Version" -#: ../../mod/admin.php:151 +#: ../../mod/admin.php:167 msgid "Active plugins" msgstr "Aktive Plugins" -#: ../../mod/admin.php:243 +#: ../../mod/admin.php:259 msgid "Site settings updated." msgstr "Seiteneinstellungen aktualisiert." -#: ../../mod/admin.php:287 +#: ../../mod/admin.php:303 msgid "Closed" msgstr "Geschlossen" -#: ../../mod/admin.php:288 +#: ../../mod/admin.php:304 msgid "Requires approval" msgstr "Bedarf Zustimmung" -#: ../../mod/admin.php:289 +#: ../../mod/admin.php:305 msgid "Open" msgstr "Offen" -#: ../../mod/admin.php:298 +#: ../../mod/admin.php:314 msgid "File upload" msgstr "Datei hochladen" -#: ../../mod/admin.php:299 +#: ../../mod/admin.php:315 msgid "Policies" msgstr "Regeln" -#: ../../mod/admin.php:300 +#: ../../mod/admin.php:316 msgid "Advanced" msgstr "Erweitert" -#: ../../mod/admin.php:304 ../../addon/statusnet/statusnet.php:486 +#: ../../mod/admin.php:320 ../../addon/statusnet/statusnet.php:523 msgid "Site name" msgstr "Seitenname" -#: ../../mod/admin.php:305 +#: ../../mod/admin.php:321 msgid "Banner/Logo" msgstr "Banner/Logo" -#: ../../mod/admin.php:306 +#: ../../mod/admin.php:322 msgid "System language" msgstr "Systemsprache" -#: ../../mod/admin.php:307 +#: ../../mod/admin.php:323 msgid "System theme" msgstr "Systemweites Thema" -#: ../../mod/admin.php:309 +#: ../../mod/admin.php:325 msgid "Maximum image size" msgstr "Maximale Größe von Bildern" -#: ../../mod/admin.php:311 +#: ../../mod/admin.php:327 msgid "Register policy" msgstr "Registrierungsmethode" -#: ../../mod/admin.php:312 +#: ../../mod/admin.php:328 msgid "Register text" msgstr "Registrierungstext" -#: ../../mod/admin.php:313 +#: ../../mod/admin.php:329 msgid "Accounts abandoned after x days" msgstr "Accounts gelten nach x Tagen als unbenutzt" -#: ../../mod/admin.php:313 +#: ../../mod/admin.php:329 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "Verschwende keine System-Ressourcen fürs Pollen externer Seiten, wenn Accounts nicht mehr benutzt werden. 0 eingeben für kein Limit." -#: ../../mod/admin.php:314 +#: ../../mod/admin.php:330 msgid "Allowed friend domains" msgstr "Erlaubte Domains für Kontakte" -#: ../../mod/admin.php:315 +#: ../../mod/admin.php:331 msgid "Allowed email domains" msgstr "Erlaubte Domains für Emails" -#: ../../mod/admin.php:316 +#: ../../mod/admin.php:332 msgid "Block public" msgstr "Öffentlichen Zugriff blockieren" -#: ../../mod/admin.php:317 +#: ../../mod/admin.php:333 msgid "Force publish" msgstr "Erzwinge Veröffentlichung" -#: ../../mod/admin.php:318 +#: ../../mod/admin.php:334 msgid "Global directory update URL" msgstr "URL für Updates beim weltweiten Verzeichnis" -#: ../../mod/admin.php:320 +#: ../../mod/admin.php:336 msgid "Block multiple registrations" msgstr "Unterbinde Mehrfachregistrierung" -#: ../../mod/admin.php:321 +#: ../../mod/admin.php:337 msgid "OpenID support" msgstr "OpenID Unterstützung" -#: ../../mod/admin.php:322 +#: ../../mod/admin.php:338 msgid "Gravatar support" msgstr "Gravatar Unterstützung" -#: ../../mod/admin.php:323 +#: ../../mod/admin.php:339 msgid "Fullname check" msgstr "Name auf Vollständigkeit überprüfen" -#: ../../mod/admin.php:324 +#: ../../mod/admin.php:340 msgid "UTF-8 Regular expressions" msgstr "UTF-8 Reguläre Ausdrücke" -#: ../../mod/admin.php:325 +#: ../../mod/admin.php:341 msgid "Show Community Page" msgstr "Gemeinschaftsseite anzeigen" -#: ../../mod/admin.php:326 +#: ../../mod/admin.php:342 msgid "Enable OStatus support" msgstr "OStatus Unterstützung aktivieren" -#: ../../mod/admin.php:327 +#: ../../mod/admin.php:343 msgid "Enable Diaspora support" msgstr "Diaspora-Support aktivieren" -#: ../../mod/admin.php:328 +#: ../../mod/admin.php:344 msgid "Only allow Friendica contacts" msgstr "Nur Friendica-Kontakte erlauben" -#: ../../mod/admin.php:329 +#: ../../mod/admin.php:345 msgid "Verify SSL" msgstr "SSL Überprüfen" -#: ../../mod/admin.php:330 +#: ../../mod/admin.php:346 msgid "Proxy user" msgstr "Proxy Nutzer" -#: ../../mod/admin.php:331 +#: ../../mod/admin.php:347 msgid "Proxy URL" msgstr "Proxy URL" -#: ../../mod/admin.php:332 +#: ../../mod/admin.php:348 msgid "Network timeout" msgstr "Netzwerk Wartezeit" -#: ../../mod/admin.php:353 +#: ../../mod/admin.php:369 #, php-format msgid "%s user blocked" msgid_plural "%s users blocked/unblocked" msgstr[0] "%s Nutzer gesperrt" msgstr[1] "%s Nutzer gesperrt/entsperrt" -#: ../../mod/admin.php:360 +#: ../../mod/admin.php:376 #, php-format msgid "%s user deleted" msgid_plural "%s users deleted" msgstr[0] "%s Nutzer gelöscht" msgstr[1] "%s Nutzer gelöscht" -#: ../../mod/admin.php:394 +#: ../../mod/admin.php:410 #, php-format msgid "User '%s' deleted" msgstr "Nutzer '%s' gelöscht" -#: ../../mod/admin.php:401 +#: ../../mod/admin.php:417 #, php-format msgid "User '%s' unblocked" msgstr "Nutzer '%s' entsperrt" -#: ../../mod/admin.php:401 +#: ../../mod/admin.php:417 #, php-format msgid "User '%s' blocked" msgstr "Nutzer '%s' gesperrt" -#: ../../mod/admin.php:462 +#: ../../mod/admin.php:478 msgid "select all" msgstr "Alle auswählen" -#: ../../mod/admin.php:463 +#: ../../mod/admin.php:479 msgid "User registrations waiting for confirm" msgstr "Neuanmeldungen, die auf deine Bestätigung warten" -#: ../../mod/admin.php:464 +#: ../../mod/admin.php:480 msgid "Request date" msgstr "Anfrage Datum" -#: ../../mod/admin.php:464 ../../mod/admin.php:473 +#: ../../mod/admin.php:480 ../../mod/admin.php:489 #: ../../include/contact_selectors.php:79 msgid "Email" msgstr "Email" -#: ../../mod/admin.php:465 +#: ../../mod/admin.php:481 msgid "No registrations." msgstr "Keine Neuanmeldungen." -#: ../../mod/admin.php:467 +#: ../../mod/admin.php:483 msgid "Deny" msgstr "Verwehren" -#: ../../mod/admin.php:473 +#: ../../mod/admin.php:489 msgid "Register date" msgstr "Anmeldedatum" -#: ../../mod/admin.php:473 +#: ../../mod/admin.php:489 msgid "Last login" msgstr "Letzte Anmeldung" -#: ../../mod/admin.php:473 +#: ../../mod/admin.php:489 msgid "Last item" msgstr "Letzter Beitrag" -#: ../../mod/admin.php:473 +#: ../../mod/admin.php:489 msgid "Account" msgstr "Nutzerkonto" -#: ../../mod/admin.php:475 +#: ../../mod/admin.php:491 msgid "" "Selected users will be deleted!\\n\\nEverything these users had posted on " "this site will be permanently deleted!\\n\\nAre you sure?" msgstr "Die markierten Nutzer werden gelöscht!\\n\\nAlle Beiträge, die diese Nutzer auf dieser Seite veröffentlicht haben, werden permanent gelöscht!\\n\\nBist du sicher?" -#: ../../mod/admin.php:476 +#: ../../mod/admin.php:492 msgid "" "The user {0} will be deleted!\\n\\nEverything this user has posted on this " "site will be permanently deleted!\\n\\nAre you sure?" msgstr "Der Nutzer {0} wird gelöscht!\\n\\nAlles was dieser Nutzer auf dieser Seite veröffentlicht hat, wird permanent gelöscht!\\n\\nBist du sicher?" -#: ../../mod/admin.php:512 +#: ../../mod/admin.php:528 #, php-format msgid "Plugin %s disabled." msgstr "Plugin %s deaktiviert." -#: ../../mod/admin.php:516 +#: ../../mod/admin.php:532 #, php-format msgid "Plugin %s enabled." msgstr "Plugin %s aktiviert." -#: ../../mod/admin.php:526 +#: ../../mod/admin.php:542 ../../mod/admin.php:718 msgid "Disable" msgstr "Ausschalten" -#: ../../mod/admin.php:528 +#: ../../mod/admin.php:544 ../../mod/admin.php:720 msgid "Enable" msgstr "Einschalten" -#: ../../mod/admin.php:550 +#: ../../mod/admin.php:566 ../../mod/admin.php:737 msgid "Toggle" msgstr "Umschalten" -#: ../../mod/admin.php:551 ../../include/nav.php:129 +#: ../../mod/admin.php:567 ../../mod/admin.php:738 ../../include/nav.php:130 msgid "Settings" msgstr "Einstellungen" -#: ../../mod/admin.php:613 +#: ../../mod/admin.php:683 +msgid "No themes found." +msgstr "Keine Themen gefunden." + +#: ../../mod/admin.php:795 msgid "Log settings updated." msgstr "Protokolleinstellungen aktualisiert." -#: ../../mod/admin.php:653 +#: ../../mod/admin.php:848 msgid "Clear" msgstr "löschen" -#: ../../mod/admin.php:659 +#: ../../mod/admin.php:854 msgid "Debugging" msgstr "Protokoll führen" -#: ../../mod/admin.php:660 +#: ../../mod/admin.php:855 msgid "Log file" msgstr "Protokolldatei" -#: ../../mod/admin.php:660 +#: ../../mod/admin.php:855 msgid "" "Must be writable by web server. Relative to your Friendica top-level " "directory." msgstr "Webserver muss Schreibrechte besitzen. Relativ zum Friendica-Installationsverzeichnis." -#: ../../mod/admin.php:661 +#: ../../mod/admin.php:856 msgid "Log level" msgstr "Protokollevel" -#: ../../mod/admin.php:702 +#: ../../mod/admin.php:897 msgid "Close" msgstr "Schließen" -#: ../../mod/admin.php:708 +#: ../../mod/admin.php:903 msgid "FTP Host" msgstr "FTP Host" -#: ../../mod/admin.php:709 +#: ../../mod/admin.php:904 msgid "FTP Path" msgstr "FTP Pfad" -#: ../../mod/admin.php:710 +#: ../../mod/admin.php:905 msgid "FTP User" msgstr "FTP Nutzername" -#: ../../mod/admin.php:711 +#: ../../mod/admin.php:906 msgid "FTP Password" msgstr "FTP Passwort" -#: ../../mod/profile.php:15 ../../boot.php:841 +#: ../../mod/profile.php:15 ../../boot.php:845 msgid "Requested profile is not available." msgstr "Profil nicht vorhanden." -#: ../../mod/profile.php:111 ../../mod/display.php:66 +#: ../../mod/profile.php:111 ../../mod/display.php:67 msgid "Access to this profile has been restricted." msgstr "Der Zugriff zu diesem Profil wurde eingeschränkt." @@ -3071,48 +3133,48 @@ msgstr "Der Zugriff zu diesem Profil wurde eingeschränkt." msgid "Tips for New Members" msgstr "Tipps für neue Nutzer" -#: ../../mod/ping.php:148 +#: ../../mod/ping.php:146 msgid "{0} wants to be your friend" msgstr "{0} möchte mit dir in Kontakt treten" -#: ../../mod/ping.php:153 +#: ../../mod/ping.php:151 msgid "{0} sent you a message" msgstr "{0} hat dir eine Nachricht geschickt" -#: ../../mod/ping.php:158 +#: ../../mod/ping.php:156 msgid "{0} requested registration" msgstr "{0} möchte sich registrieren" -#: ../../mod/ping.php:164 +#: ../../mod/ping.php:162 #, php-format msgid "{0} commented %s's post" msgstr "{0} kommentierte einen Beitrag von %s" -#: ../../mod/ping.php:169 +#: ../../mod/ping.php:167 #, php-format msgid "{0} liked %s's post" msgstr "{0} mag %ss Beitrag" -#: ../../mod/ping.php:174 +#: ../../mod/ping.php:172 #, php-format msgid "{0} disliked %s's post" msgstr "{0} mag %ss Beitrag nicht" -#: ../../mod/ping.php:179 +#: ../../mod/ping.php:177 #, php-format msgid "{0} is now friends with %s" msgstr "{0} ist jetzt mit %s befreundet" -#: ../../mod/ping.php:184 +#: ../../mod/ping.php:182 msgid "{0} posted" msgstr "{0} hat etwas veröffentlicht" -#: ../../mod/ping.php:189 +#: ../../mod/ping.php:187 #, php-format msgid "{0} tagged %s's post with #%s" msgstr "{0} hat %ss Beitrag mit dem Schlagwort #%s versehen" -#: ../../mod/ping.php:195 +#: ../../mod/ping.php:193 msgid "{0} mentioned you in a post" msgstr "{0} hat dich in einem Beitrag erwähnt" @@ -3130,39 +3192,39 @@ msgid "" "This site is not configured to allow communications with other networks." msgstr "Diese Seite ist so konfiguriert, dass keine Kommunikation mit anderen Netzwerken erfolgen kann." -#: ../../mod/follow.php:48 ../../mod/follow.php:58 +#: ../../mod/follow.php:48 ../../mod/follow.php:63 msgid "No compatible communication protocols or feeds were discovered." msgstr "Es wurden keine kompatiblen Kommunikationsprotokolle oder Feeds gefunden." -#: ../../mod/follow.php:56 +#: ../../mod/follow.php:61 msgid "The profile address specified does not provide adequate information." msgstr "Die angegebene Profiladresse liefert unzureichende Informationen." -#: ../../mod/follow.php:60 +#: ../../mod/follow.php:65 msgid "An author or name was not found." msgstr "Es wurde kein Autor oder Name gefunden." -#: ../../mod/follow.php:62 +#: ../../mod/follow.php:67 msgid "No browser URL could be matched to this address." msgstr "Zu dieser Adresse konnte keine passende Browser URL gefunden werden." -#: ../../mod/follow.php:69 +#: ../../mod/follow.php:74 msgid "" "The profile address specified belongs to a network which has been disabled " "on this site." msgstr "Die Adresse dieses Profils gehört zu einem Netzwerk mit dem die Kommunikation auf dieser Seite ausgeschaltet wurde." -#: ../../mod/follow.php:74 +#: ../../mod/follow.php:79 msgid "" "Limited profile. This person will be unable to receive direct/personal " "notifications from you." msgstr "Eingeschränktes Profil. Diese Person wird keine direkten/privaten Nachrichten von dir erhalten können." -#: ../../mod/follow.php:144 +#: ../../mod/follow.php:149 msgid "Unable to retrieve contact information." msgstr "Konnte die Kontaktinformationen nicht empfangen." -#: ../../mod/follow.php:190 +#: ../../mod/follow.php:195 msgid "following" msgstr "folgen" @@ -3174,7 +3236,7 @@ msgstr "Gemeinsame Freunde" msgid "No friends in common." msgstr "Keine gemeinsamen Freunde." -#: ../../mod/display.php:109 +#: ../../mod/display.php:127 msgid "Item has been removed." msgstr "Eintrag wurde entfernt." @@ -3378,7 +3440,7 @@ msgid "" "be visible to anybody using the internet." msgstr "Dies ist dein <strong>öffentliches</strong> Profil.<br />Es <strong>könnte</strong> für jeden Nutzer des Internets sichtbar sein." -#: ../../mod/profiles.php:426 ../../mod/directory.php:122 +#: ../../mod/profiles.php:426 ../../mod/directory.php:124 msgid "Age: " msgstr "Alter: " @@ -3386,27 +3448,27 @@ msgstr "Alter: " msgid "Edit/Manage Profiles" msgstr "Verwalte/Editiere Profile" -#: ../../mod/profiles.php:462 ../../boot.php:942 +#: ../../mod/profiles.php:462 ../../boot.php:946 msgid "Change profile photo" msgstr "Profilbild ändern" -#: ../../mod/profiles.php:463 ../../boot.php:943 +#: ../../mod/profiles.php:463 ../../boot.php:947 msgid "Create New Profile" msgstr "Neues Profil anlegen" -#: ../../mod/profiles.php:473 ../../boot.php:953 +#: ../../mod/profiles.php:473 ../../boot.php:957 msgid "Profile Image" msgstr "Profilbild" -#: ../../mod/profiles.php:475 ../../boot.php:956 +#: ../../mod/profiles.php:475 ../../boot.php:960 msgid "visible to everybody" msgstr "sichtbar für jeden" -#: ../../mod/profiles.php:476 ../../boot.php:957 +#: ../../mod/profiles.php:476 ../../boot.php:961 msgid "Edit visibility" msgstr "Sichtbarkeit bearbeiten" -#: ../../mod/tagger.php:103 ../../include/conversation.php:116 +#: ../../mod/tagger.php:103 ../../include/conversation.php:138 #, php-format msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "%1$s hat %2$ss %3$s mit %4$s getaggt" @@ -3460,31 +3522,31 @@ msgstr "Keine Vorschläge. Falls der Server frisch aufgesetzt wurde, versuche es msgid "Ignore/Hide" msgstr "Ignorieren/Verbergen" -#: ../../mod/directory.php:49 +#: ../../mod/directory.php:51 msgid "Global Directory" msgstr "Weltweites Verzeichnis" -#: ../../mod/directory.php:55 +#: ../../mod/directory.php:57 msgid "Normal site view" msgstr "Normale Seitenansicht" -#: ../../mod/directory.php:57 +#: ../../mod/directory.php:59 msgid "Admin - View all site entries" msgstr "Admin: Alle Einträge dieses Servers anzeigen" -#: ../../mod/directory.php:63 +#: ../../mod/directory.php:65 msgid "Find on this site" msgstr "Auf diesem Server suchen" -#: ../../mod/directory.php:66 +#: ../../mod/directory.php:68 msgid "Site Directory" msgstr "Verzeichnis" -#: ../../mod/directory.php:125 +#: ../../mod/directory.php:127 msgid "Gender: " msgstr "Geschlecht:" -#: ../../mod/directory.php:151 +#: ../../mod/directory.php:153 msgid "No entries (some entries may be hidden)." msgstr "Keine Einträge (einige Einträge könnten versteckt sein)." @@ -3570,7 +3632,7 @@ msgid "Unable to set contact photo." msgstr "Konnte das Bild des Kontakts nicht speichern." #: ../../mod/dfrn_confirm.php:473 ../../include/diaspora.php:495 -#: ../../include/conversation.php:79 +#: ../../include/conversation.php:101 #, php-format msgid "%1$s is now friends with %2$s" msgstr "%1$s ist nun mit %2$s befreundet" @@ -3616,71 +3678,71 @@ msgstr "Die Updates für dein Profil konnten nicht gespeichert werden" msgid "Connection accepted at %s" msgstr "Auf %s wurde die Verbindung akzeptiert" -#: ../../addon/facebook/facebook.php:337 +#: ../../addon/facebook/facebook.php:338 msgid "Facebook disabled" msgstr "Facebook deaktiviert" -#: ../../addon/facebook/facebook.php:342 +#: ../../addon/facebook/facebook.php:343 msgid "Updating contacts" msgstr "Aktualisiere Kontakte" -#: ../../addon/facebook/facebook.php:351 +#: ../../addon/facebook/facebook.php:352 msgid "Facebook API key is missing." msgstr "Facebook-API-Schlüssel nicht gefunden" -#: ../../addon/facebook/facebook.php:358 +#: ../../addon/facebook/facebook.php:359 msgid "Facebook Connect" msgstr "Mit Facebook verbinden" -#: ../../addon/facebook/facebook.php:364 +#: ../../addon/facebook/facebook.php:365 msgid "Install Facebook connector for this account." msgstr "Facebook-Connector für diesen Account installieren." -#: ../../addon/facebook/facebook.php:371 +#: ../../addon/facebook/facebook.php:372 msgid "Remove Facebook connector" msgstr "Facebook-Connector entfernen" -#: ../../addon/facebook/facebook.php:376 +#: ../../addon/facebook/facebook.php:377 msgid "" "Re-authenticate [This is necessary whenever your Facebook password is " "changed.]" msgstr "Neu authentifizieren [Das ist immer dann nötig, wenn Du Dein Facebook-Passwort geändert hast.]" -#: ../../addon/facebook/facebook.php:383 +#: ../../addon/facebook/facebook.php:384 msgid "Post to Facebook by default" msgstr "Veröffentliche standardmäßig bei Facebook" -#: ../../addon/facebook/facebook.php:387 +#: ../../addon/facebook/facebook.php:388 msgid "Link all your Facebook friends and conversations on this website" msgstr "All meine Facebook-Kontakte und -Konversationen hier auf diese Website importieren" -#: ../../addon/facebook/facebook.php:389 +#: ../../addon/facebook/facebook.php:390 msgid "" "Facebook conversations consist of your <em>profile wall</em> and your friend" " <em>stream</em>." msgstr "Facebook-Konversationen sind alles, was auf deiner <em>Pinnwand</em> erscheint, und die Beiträge deiner Freunde <em>(Stream).</em>" -#: ../../addon/facebook/facebook.php:390 +#: ../../addon/facebook/facebook.php:391 msgid "On this website, your Facebook friend stream is only visible to you." msgstr "Hier auf dieser Webseite kannst nur du die Beiträge Deiner Facebook-Freunde (Stream) sehen." -#: ../../addon/facebook/facebook.php:391 +#: ../../addon/facebook/facebook.php:392 msgid "" "The following settings determine the privacy of your Facebook profile wall " "on this website." msgstr "Mit den folgenden Einstellungen kannst Du die Privatsphäre der Kopie Deiner Facebook-Pinnwand hier auf dieser Seite einstellen." -#: ../../addon/facebook/facebook.php:395 +#: ../../addon/facebook/facebook.php:396 msgid "" "On this website your Facebook profile wall conversations will only be " "visible to you" msgstr "Meine Facebook-Pinnwand hier auf dieser Webseite nur für mich sichtbar machen" -#: ../../addon/facebook/facebook.php:400 +#: ../../addon/facebook/facebook.php:401 msgid "Do not import your Facebook profile wall conversations" msgstr "Facebook-Pinnwand nicht importieren" -#: ../../addon/facebook/facebook.php:402 +#: ../../addon/facebook/facebook.php:403 msgid "" "If you choose to link conversations and leave both of these boxes unchecked," " your Facebook profile wall will be merged with your profile wall on this " @@ -3688,43 +3750,43 @@ msgid "" "who may see the conversations." msgstr "Wenn Du Facebook-Konversationen importierst und diese beiden Häkchen nicht setzt, wird Deine Facebook-Pinnwand mit der Pinnwand hier auf dieser Webseite vereinigt. Die Privatsphäre-Einstellungen für Deine Pinnwand auf dieser Webseite geben dann an, wer die Konversationen sehen kann." -#: ../../addon/facebook/facebook.php:407 +#: ../../addon/facebook/facebook.php:408 msgid "Comma separated applications to ignore" msgstr "Komma separierte Liste von Anwendungen die ignoriert werden sollen" -#: ../../addon/facebook/facebook.php:475 +#: ../../addon/facebook/facebook.php:476 #: ../../include/contact_selectors.php:81 msgid "Facebook" msgstr "Facebook" -#: ../../addon/facebook/facebook.php:476 +#: ../../addon/facebook/facebook.php:477 msgid "Facebook Connector Settings" msgstr "Facebook-Verbindungseinstellungen" -#: ../../addon/facebook/facebook.php:490 +#: ../../addon/facebook/facebook.php:491 msgid "Post to Facebook" msgstr "Bei Facebook veröffentlichen" -#: ../../addon/facebook/facebook.php:581 +#: ../../addon/facebook/facebook.php:582 msgid "" "Post to Facebook cancelled because of multi-network access permission " "conflict." msgstr "Beitrag wurde nicht bei Facebook veröffentlicht, da Konflikte bei den Multi-Netzwerk-Zugriffsrechten vorliegen." -#: ../../addon/facebook/facebook.php:650 +#: ../../addon/facebook/facebook.php:651 msgid "Image: " msgstr "Bild: " -#: ../../addon/facebook/facebook.php:727 +#: ../../addon/facebook/facebook.php:728 msgid "View on Friendica" msgstr "In Friendica betrachten" -#: ../../addon/facebook/facebook.php:751 +#: ../../addon/facebook/facebook.php:752 msgid "Facebook post failed. Queued for retry." msgstr "Veröffentlichung bei Facebook gescheitert. Wir versuchen es später erneut." -#: ../../addon/facebook/facebook.php:876 ../../addon/facebook/facebook.php:885 -#: ../../include/bb2diaspora.php:113 +#: ../../addon/facebook/facebook.php:877 ../../addon/facebook/facebook.php:886 +#: ../../include/bb2diaspora.php:132 msgid "link" msgstr "Verweis" @@ -3809,7 +3871,7 @@ msgstr "%s – Zum Öffnen/Schließen klicken" #: ../../addon/communityhome/communityhome.php:28 #: ../../addon/communityhome/communityhome.php:34 ../../include/nav.php:62 -#: ../../boot.php:706 +#: ../../boot.php:710 msgid "Login" msgstr "Anmeldung" @@ -3834,7 +3896,7 @@ msgid "Last likes" msgstr "Zuletzt gemocht" #: ../../addon/communityhome/communityhome.php:155 -#: ../../include/conversation.php:23 ../../include/conversation.php:96 +#: ../../include/conversation.php:45 ../../include/conversation.php:118 msgid "event" msgstr "Veranstaltung" @@ -3990,19 +4052,19 @@ msgstr "Ziehe die Dateien hierher die du hochladen willst" msgid "Failed" msgstr "Fehlgeschlagen" -#: ../../addon/js_upload/js_upload.php:294 +#: ../../addon/js_upload/js_upload.php:297 msgid "No files were uploaded." msgstr "Keine Dateien hochgeladen." -#: ../../addon/js_upload/js_upload.php:300 +#: ../../addon/js_upload/js_upload.php:303 msgid "Uploaded file is empty" msgstr "Hochgeladene Datei ist leer" -#: ../../addon/js_upload/js_upload.php:323 +#: ../../addon/js_upload/js_upload.php:326 msgid "File has an invalid extension, it should be one of " msgstr "Die Dateierweiterung ist nicht erlaubt, sie muss eine der folgenden sein " -#: ../../addon/js_upload/js_upload.php:334 +#: ../../addon/js_upload/js_upload.php:337 msgid "Upload was cancelled, or server error encountered" msgstr "Upload abgebrochen oder Serverfehler aufgetreten" @@ -4086,6 +4148,48 @@ msgstr "Autor blockieren" msgid "blockem settings updated" msgstr "blockem Einstellungen aktualisiert" +#: ../../addon/qcomment/qcomment.php:51 +msgid ":-)" +msgstr ":-)" + +#: ../../addon/qcomment/qcomment.php:51 +msgid ":-(" +msgstr ":-(" + +#: ../../addon/qcomment/qcomment.php:51 +msgid "lol" +msgstr "lol" + +#: ../../addon/qcomment/qcomment.php:54 +msgid "Quick Comment Settings" +msgstr "Schnell-Kommentar Einstellungen" + +#: ../../addon/qcomment/qcomment.php:56 +msgid "Enter quick comments, one per line" +msgstr "Gibt ein Schnell-Kommentar pro Zeile ein" + +#: ../../addon/qcomment/qcomment.php:74 +msgid "Quick Comment settings saved." +msgstr "Schnell-Kommentare Einstellungen gespeichert" + +#: ../../addon/openstreetmap/openstreetmap.php:71 +msgid "Tile Server URL" +msgstr "Tile Server URL" + +#: ../../addon/openstreetmap/openstreetmap.php:71 +msgid "" +"A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" " +"target=\"_blank\">public tile servers</a>" +msgstr "Eine Liste <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">öffentlicher Tile Server</a>" + +#: ../../addon/openstreetmap/openstreetmap.php:72 +msgid "Default zoom" +msgstr "Standard Zoom" + +#: ../../addon/openstreetmap/openstreetmap.php:72 +msgid "The default zoom level. (1:world, 18:highest)" +msgstr "Standard Zoo,level (1: Welt; 18: höchstes)" + #: ../../addon/editplain/editplain.php:46 msgid "Editplain settings updated." msgstr "Editplain Einstellungen aktualisiert" @@ -4110,44 +4214,44 @@ msgstr "pageheader-Einstellungen gespeichert." msgid "View Source" msgstr "Quelle ansehen" -#: ../../addon/statusnet/statusnet.php:140 +#: ../../addon/statusnet/statusnet.php:134 msgid "Post to StatusNet" msgstr "Bei StatusNet veröffentlichen" -#: ../../addon/statusnet/statusnet.php:182 +#: ../../addon/statusnet/statusnet.php:175 msgid "" "Please contact your site administrator.<br />The provided API URL is not " "valid." msgstr "Bitte kontaktiere den Administrator des Servers.<br />Die angegebene API-URL ist nicht gültig." -#: ../../addon/statusnet/statusnet.php:210 +#: ../../addon/statusnet/statusnet.php:203 msgid "We could not contact the StatusNet API with the Path you entered." msgstr "Die StatusNet-API konnte mit dem angegebenen Pfad nicht erreicht werden." -#: ../../addon/statusnet/statusnet.php:236 +#: ../../addon/statusnet/statusnet.php:229 msgid "StatusNet settings updated." msgstr "StatusNet Einstellungen aktualisiert." -#: ../../addon/statusnet/statusnet.php:259 +#: ../../addon/statusnet/statusnet.php:252 msgid "StatusNet Posting Settings" msgstr "StatusNet-Beitragseinstellungen" -#: ../../addon/statusnet/statusnet.php:273 +#: ../../addon/statusnet/statusnet.php:266 msgid "Globally Available StatusNet OAuthKeys" msgstr "Verfügbare OAuth Schlüssel für StatusNet" -#: ../../addon/statusnet/statusnet.php:274 +#: ../../addon/statusnet/statusnet.php:267 msgid "" "There are preconfigured OAuth key pairs for some StatusNet servers " "available. If you are useing one of them, please use these credentials. If " "not feel free to connect to any other StatusNet instance (see below)." msgstr "Für einige StatusNet Server sind OAuth Schlüsselpaare verfügbar. Solltest du einen dieser Server benutzen, dann verwende doch bitte diese Schlüssel. Falls nicht kannst du weiter unten deine eigenen OAuth Schlüssel eintragen." -#: ../../addon/statusnet/statusnet.php:282 +#: ../../addon/statusnet/statusnet.php:275 msgid "Provide your own OAuth Credentials" msgstr "Eigene OAuth Schlüssel eintragen" -#: ../../addon/statusnet/statusnet.php:283 +#: ../../addon/statusnet/statusnet.php:276 msgid "" "No consumer key pair for StatusNet found. Register your Friendica Account as" " an desktop client on your StatusNet account, copy the consumer key pair " @@ -4156,19 +4260,19 @@ msgid "" "Friendica installation at your favorited StatusNet installation." msgstr "Kein Consumer-Schlüsselpaar für StatusNet gefunden. Registriere deinen Friendica-Account als Desktop-Client, kopiere das Consumer-Schlüsselpaar hierher und gib die API-URL ein.<br />Bevor du dein eigenes Consumer-Schlüsselpaar registrierst, frage den Administrator dieses Friendica-Servers, ob schon ein Schlüsselpaar für diesen Friendica-Server auf diesem StatusNet-Server existiert." -#: ../../addon/statusnet/statusnet.php:285 +#: ../../addon/statusnet/statusnet.php:278 msgid "OAuth Consumer Key" msgstr "OAuth Consumer Key" -#: ../../addon/statusnet/statusnet.php:288 +#: ../../addon/statusnet/statusnet.php:281 msgid "OAuth Consumer Secret" msgstr "OAuth Consumer Secret" -#: ../../addon/statusnet/statusnet.php:291 +#: ../../addon/statusnet/statusnet.php:284 msgid "Base API Path (remember the trailing /)" msgstr "Basis-URL der StatusNet-API (vergiss den abschließenden / nicht)" -#: ../../addon/statusnet/statusnet.php:312 +#: ../../addon/statusnet/statusnet.php:305 msgid "" "To connect to your StatusNet account click the button below to get a " "security code from StatusNet which you have to copy into the input box below" @@ -4176,50 +4280,58 @@ msgid "" " to StatusNet." msgstr "Um deinen Account mit einem StatusNet-Account zu verknüpfen, klicke den Button an, um einen Sicherheitscode von StatusNet zu erhalten, und kopiere diesen in das Eingabefeld weiter unten. Es werden ausschließlich deine <strong>öffentlichen</strong> Nachrichten an StatusNet gesendet." -#: ../../addon/statusnet/statusnet.php:313 +#: ../../addon/statusnet/statusnet.php:306 msgid "Log in with StatusNet" msgstr "Bei StatusNet anmelden" -#: ../../addon/statusnet/statusnet.php:315 +#: ../../addon/statusnet/statusnet.php:308 msgid "Copy the security code from StatusNet here" msgstr "Kopiere den Sicherheitscode von StatusNet hier hin" -#: ../../addon/statusnet/statusnet.php:321 +#: ../../addon/statusnet/statusnet.php:314 msgid "Cancel Connection Process" msgstr "Verbindungsprozess abbrechen" -#: ../../addon/statusnet/statusnet.php:323 +#: ../../addon/statusnet/statusnet.php:316 msgid "Current StatusNet API is" msgstr "Derzeitige StatusNet-API-URL lautet" -#: ../../addon/statusnet/statusnet.php:324 +#: ../../addon/statusnet/statusnet.php:317 msgid "Cancel StatusNet Connection" msgstr "Verbindung zum StatusNet Server abbrechen" -#: ../../addon/statusnet/statusnet.php:335 ../../addon/twitter/twitter.php:189 +#: ../../addon/statusnet/statusnet.php:328 ../../addon/twitter/twitter.php:184 msgid "Currently connected to: " msgstr "Momentan verbunden mit: " -#: ../../addon/statusnet/statusnet.php:336 +#: ../../addon/statusnet/statusnet.php:329 msgid "" "If enabled all your <strong>public</strong> postings can be posted to the " "associated StatusNet account. You can choose to do so by default (here) or " "for every posting separately in the posting options when writing the entry." msgstr "Wenn aktiviert können all deine <strong>öffentlichen</strong> Einträge auf dem verbundenen StatusNet Konto veröffentlicht werden. Du kannst das (hier) als Standardverhalten einstellen oder beim Schreiben eines Beitrags in den Beitragsoptionen festlegen." -#: ../../addon/statusnet/statusnet.php:338 +#: ../../addon/statusnet/statusnet.php:331 +msgid "" +"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile " +"details from unknown viewers?</em>) the link potentially included in public " +"postings relayed to StatusNet will lead the visitor to a blank page " +"informing the visitor that the access to your profile has been restricted." +msgstr "<strong>Hinweis</strong>: Aufgrund deiner Privatsphären Einstellungen (<em>Profil-Details vor unbekannten Betrachtern verbergen?</em>) wird der Link der eventuell an an deinen StatusNet Account weitergeleitete angehangen wird um auf den original Artikel zu verweisen den Betrachter auf eine leere Seite führen, auf der er darüber informiert wird, dass der Zugriff eingeschränkt wurde." + +#: ../../addon/statusnet/statusnet.php:334 msgid "Allow posting to StatusNet" msgstr "Veröffentlichung bei StatusNet erlauben" -#: ../../addon/statusnet/statusnet.php:341 +#: ../../addon/statusnet/statusnet.php:337 msgid "Send public postings to StatusNet by default" msgstr "Veröffentliche öffentliche Beiträge standardmäßig bei StatusNet" -#: ../../addon/statusnet/statusnet.php:346 ../../addon/twitter/twitter.php:200 +#: ../../addon/statusnet/statusnet.php:342 ../../addon/twitter/twitter.php:198 msgid "Clear OAuth configuration" msgstr "OAuth-Konfiguration löschen" -#: ../../addon/statusnet/statusnet.php:487 +#: ../../addon/statusnet/statusnet.php:524 msgid "API URL" msgstr "API-URL" @@ -4287,13 +4399,33 @@ msgstr "WordPress-API-URL" msgid "Post to WordPress by default" msgstr "Standardmäßig auf WordPress veröffentlichen" -#: ../../addon/piwik/piwik.php:70 +#: ../../addon/showmore/showmore.php:38 +msgid "\"Show more\" Settings" +msgstr "\"Mehr zeigen\" Einstellungen" + +#: ../../addon/showmore/showmore.php:41 +msgid "Enable Show More" +msgstr "Aktiviere \"Mehr zeigen\"" + +#: ../../addon/showmore/showmore.php:44 +msgid "Cutting posts after how much characters" +msgstr "Begrenze Beiträge nach der Anzahl der Buchstaben" + +#: ../../addon/showmore/showmore.php:64 +msgid "Show More Settings saved." +msgstr "\"Mehr zeigen\" Einstellungen gesichert." + +#: ../../addon/showmore/showmore.php:86 +msgid "Show More" +msgstr "\"Mehr zeigen\"" + +#: ../../addon/piwik/piwik.php:79 msgid "" "This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> " "analytics tool." msgstr "Diese Website benutzt <a href='http://www.piwik.org'>Piwik</a>, eine Open Source-Software zur statistischen Auswertung der Besucherzugriffe." -#: ../../addon/piwik/piwik.php:73 +#: ../../addon/piwik/piwik.php:82 #, php-format msgid "" "If you do not want that your visits are logged this way you <a href='%s'>can" @@ -4301,37 +4433,47 @@ msgid "" "(opt-out)." msgstr "Wenn Du nicht willst, dass Deine Besuche auf diese Weise gespeichert werden, kannst Du <a href='%s'>ein Cookie setzen</a>. Dann wird Piwik Dich auf dieser Website nicht mehr verfolgen (opt-out)." -#: ../../addon/piwik/piwik.php:82 +#: ../../addon/piwik/piwik.php:90 msgid "Piwik Base URL" msgstr "Piwik Basis URL" -#: ../../addon/piwik/piwik.php:83 +#: ../../addon/piwik/piwik.php:90 +msgid "" +"Absolute path to your Piwik installation. (without protocol (http/s), with " +"trailing slash)" +msgstr "Absoluter Pfad zu deiner Piwik Installation (ohen Protokoll (http/s) und mit abschließendem Schrägstrich)" + +#: ../../addon/piwik/piwik.php:91 msgid "Site ID" msgstr "Seiten ID" -#: ../../addon/piwik/piwik.php:84 +#: ../../addon/piwik/piwik.php:92 msgid "Show opt-out cookie link?" msgstr "Link zum Setzen des Opt-Out Cookies anzeigen?" -#: ../../addon/twitter/twitter.php:78 +#: ../../addon/piwik/piwik.php:93 +msgid "Asynchronous tracking" +msgstr "Asynchroned Tracken" + +#: ../../addon/twitter/twitter.php:73 msgid "Post to Twitter" msgstr "Bei Twitter veröffentlichen" -#: ../../addon/twitter/twitter.php:124 +#: ../../addon/twitter/twitter.php:119 msgid "Twitter settings updated." msgstr "Twitter Einstellungen aktualisiert." -#: ../../addon/twitter/twitter.php:146 +#: ../../addon/twitter/twitter.php:141 msgid "Twitter Posting Settings" msgstr "Twitter-Beitragseinstellungen" -#: ../../addon/twitter/twitter.php:153 +#: ../../addon/twitter/twitter.php:148 msgid "" "No consumer key pair for Twitter found. Please contact your site " "administrator." msgstr "Kein Consumer-Schlüsselpaar für Twitter gefunden. Bitte wende dich an den Administrator der Seite." -#: ../../addon/twitter/twitter.php:172 +#: ../../addon/twitter/twitter.php:167 msgid "" "At this Friendica instance the Twitter plugin was enabled but you have not " "yet connected your account to your Twitter account. To do so click the " @@ -4340,34 +4482,42 @@ msgid "" " be posted to Twitter." msgstr "Auf diesem Friendica-Server wurde das Twitter-Plugin aktiviert, aber du hast deinen Account noch nicht mit deinem Twitter-Account verbunden. Klicke dazu die Schaltfläche unten. Du erhältst dann eine PIN von Twitter, die du in das Eingabefeld unten kopieren musst. Nicht vergessen, den Senden-Knopf zu drücken! Nur <strong>öffentliche</strong> Beiträge werden bei Twitter veröffentlicht." -#: ../../addon/twitter/twitter.php:173 +#: ../../addon/twitter/twitter.php:168 msgid "Log in with Twitter" msgstr "bei Twitter anmelden" -#: ../../addon/twitter/twitter.php:175 +#: ../../addon/twitter/twitter.php:170 msgid "Copy the PIN from Twitter here" msgstr "Kopiere die Twitter-PIN hier her" -#: ../../addon/twitter/twitter.php:190 +#: ../../addon/twitter/twitter.php:185 msgid "" "If enabled all your <strong>public</strong> postings can be posted to the " "associated Twitter account. You can choose to do so by default (here) or for" " every posting separately in the posting options when writing the entry." msgstr "Wenn aktiviert können all deine <strong>öffentlichen</strong> Einträge auf dem verbundenen Twitter Konto veröffentlicht werden. Du kannst dies (hier) als Standardverhalten einstellen oder beim Schreiben eines Beitrags in den Beitragsoptionen festlegen." -#: ../../addon/twitter/twitter.php:192 +#: ../../addon/twitter/twitter.php:187 +msgid "" +"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile " +"details from unknown viewers?</em>) the link potentially included in public " +"postings relayed to Twitter will lead the visitor to a blank page informing " +"the visitor that the access to your profile has been restricted." +msgstr "<strong>Hinweis</strong>: Aufgrund deiner Privatsphären Einstellungen (<em>Profil-Details vor unbekannten Betrachtern verbergen?</em>) wird der Link der eventuell an an deinen Twitter Account weitergeleitete angehangen wird um auf den original Artikel zu verweisen den Betrachter auf eine leere Seite führen, auf der er darüber informiert wird, dass der Zugriff eingeschränkt wurde." + +#: ../../addon/twitter/twitter.php:190 msgid "Allow posting to Twitter" msgstr "Veröffentlichung bei Twitter erlauben" -#: ../../addon/twitter/twitter.php:195 +#: ../../addon/twitter/twitter.php:193 msgid "Send public postings to Twitter by default" msgstr "Veröffentliche öffentliche Beiträge standardmäßig bei Twitter" -#: ../../addon/twitter/twitter.php:317 +#: ../../addon/twitter/twitter.php:357 msgid "Consumer key" msgstr "Consumer Key" -#: ../../addon/twitter/twitter.php:318 +#: ../../addon/twitter/twitter.php:358 msgid "Consumer secret" msgstr "Consumer Secret" @@ -4395,7 +4545,7 @@ msgstr "Posterous-Passwort" msgid "Post to Posterous by default" msgstr "Veröffentliche öffentliche Beiträge standardmäßig bei Posterous" -#: ../../include/profile_advanced.php:17 ../../boot.php:978 +#: ../../include/profile_advanced.php:17 ../../boot.php:982 msgid "Gender:" msgstr "Geschlecht:" @@ -4408,7 +4558,7 @@ msgid "j F" msgstr "j F" #: ../../include/profile_advanced.php:30 ../../include/datetime.php:438 -#: ../../include/items.php:1318 +#: ../../include/items.php:1349 msgid "Birthday:" msgstr "Geburtstag:" @@ -4416,11 +4566,11 @@ msgstr "Geburtstag:" msgid "Age:" msgstr "Alter:" -#: ../../include/profile_advanced.php:37 ../../boot.php:981 +#: ../../include/profile_advanced.php:37 ../../boot.php:985 msgid "Status:" msgstr "Status:" -#: ../../include/profile_advanced.php:45 ../../boot.php:983 +#: ../../include/profile_advanced.php:45 ../../boot.php:987 msgid "Homepage:" msgstr "Homepage:" @@ -4756,20 +4906,20 @@ msgstr "Ist mir nicht wichtig" msgid "Ask me" msgstr "Frag mich" -#: ../../include/event.php:17 ../../include/bb2diaspora.php:255 +#: ../../include/event.php:17 ../../include/bb2diaspora.php:274 msgid "Starts:" msgstr "Beginnt:" -#: ../../include/event.php:27 ../../include/bb2diaspora.php:263 +#: ../../include/event.php:27 ../../include/bb2diaspora.php:282 msgid "Finishes:" msgstr "Endet:" -#: ../../include/delivery.php:416 ../../include/notifier.php:629 +#: ../../include/delivery.php:424 ../../include/notifier.php:637 msgid "(no subject)" msgstr "(kein Betreff)" -#: ../../include/delivery.php:423 ../../include/enotify.php:16 -#: ../../include/notifier.php:636 +#: ../../include/delivery.php:431 ../../include/enotify.php:16 +#: ../../include/notifier.php:644 msgid "noreply" msgstr "noreply" @@ -4804,91 +4954,91 @@ msgstr[1] "%d Kontakte" msgid "Search" msgstr "Suche" -#: ../../include/text.php:735 +#: ../../include/text.php:813 msgid "Monday" msgstr "Montag" -#: ../../include/text.php:735 +#: ../../include/text.php:813 msgid "Tuesday" msgstr "Dienstag" -#: ../../include/text.php:735 +#: ../../include/text.php:813 msgid "Wednesday" msgstr "Mittwoch" -#: ../../include/text.php:735 +#: ../../include/text.php:813 msgid "Thursday" msgstr "Donnerstag" -#: ../../include/text.php:735 +#: ../../include/text.php:813 msgid "Friday" msgstr "Freitag" -#: ../../include/text.php:735 +#: ../../include/text.php:813 msgid "Saturday" msgstr "Samstag" -#: ../../include/text.php:735 +#: ../../include/text.php:813 msgid "Sunday" msgstr "Sonntag" -#: ../../include/text.php:739 +#: ../../include/text.php:817 msgid "January" msgstr "Januar" -#: ../../include/text.php:739 +#: ../../include/text.php:817 msgid "February" msgstr "Februar" -#: ../../include/text.php:739 +#: ../../include/text.php:817 msgid "March" msgstr "März" -#: ../../include/text.php:739 +#: ../../include/text.php:817 msgid "April" msgstr "April" -#: ../../include/text.php:739 +#: ../../include/text.php:817 msgid "May" msgstr "Mai" -#: ../../include/text.php:739 +#: ../../include/text.php:817 msgid "June" msgstr "Juni" -#: ../../include/text.php:739 +#: ../../include/text.php:817 msgid "July" msgstr "Juli" -#: ../../include/text.php:739 +#: ../../include/text.php:817 msgid "August" msgstr "August" -#: ../../include/text.php:739 +#: ../../include/text.php:817 msgid "September" msgstr "September" -#: ../../include/text.php:739 +#: ../../include/text.php:817 msgid "October" msgstr "Oktober" -#: ../../include/text.php:739 +#: ../../include/text.php:817 msgid "November" msgstr "November" -#: ../../include/text.php:739 +#: ../../include/text.php:817 msgid "December" msgstr "Dezember" -#: ../../include/text.php:809 +#: ../../include/text.php:887 msgid "bytes" msgstr "Byte" -#: ../../include/text.php:901 +#: ../../include/text.php:982 msgid "Select an alternate language" msgstr "Alternative Sprache auswählen" -#: ../../include/text.php:913 +#: ../../include/text.php:994 msgid "default" msgstr "standard" @@ -4896,11 +5046,11 @@ msgstr "standard" msgid "Sharing notification from Diaspora network" msgstr "Freigabe-Benachrichtigung von Diaspora" -#: ../../include/diaspora.php:1895 +#: ../../include/diaspora.php:1911 msgid "Attachments:" msgstr "Anhänge:" -#: ../../include/diaspora.php:2078 +#: ../../include/diaspora.php:2094 #, php-format msgid "[Relayed] Comment authored by %s from network %s" msgstr "[Weitergeleitet] Kommentar von %s aus dem %s Netzwerk" @@ -4940,7 +5090,7 @@ msgstr "Gruppe bearbeiten" msgid "Create a new group" msgstr "Neue Gruppe erstellen" -#: ../../include/nav.php:44 ../../boot.php:705 +#: ../../include/nav.php:44 ../../boot.php:709 msgid "Logout" msgstr "Abmelden" @@ -4948,7 +5098,7 @@ msgstr "Abmelden" msgid "End this session" msgstr "Diese Sitzung beenden" -#: ../../include/nav.php:47 ../../boot.php:1327 +#: ../../include/nav.php:47 ../../boot.php:1331 msgid "Status" msgstr "Status" @@ -4960,7 +5110,7 @@ msgstr "Deine Beiträge und Unterhaltungen" msgid "Your profile page" msgstr "Deine Profilseite" -#: ../../include/nav.php:49 ../../boot.php:1337 +#: ../../include/nav.php:49 ../../boot.php:1341 msgid "Photos" msgstr "Bilder" @@ -5032,39 +5182,43 @@ msgstr "Kontaktanfragen" msgid "See all notifications" msgstr "Alle Benachrichtigungen anzeigen" -#: ../../include/nav.php:123 +#: ../../include/nav.php:120 +msgid "Mark all system notifications seen" +msgstr "Markiere alle System Benachrichtigungen als gelesen" + +#: ../../include/nav.php:124 msgid "Private mail" msgstr "Private Email" -#: ../../include/nav.php:126 +#: ../../include/nav.php:127 msgid "Manage" msgstr "Verwalten" -#: ../../include/nav.php:126 +#: ../../include/nav.php:127 msgid "Manage other pages" msgstr "Andere Seiten verwalten" -#: ../../include/nav.php:130 ../../boot.php:936 +#: ../../include/nav.php:131 ../../boot.php:940 msgid "Profiles" msgstr "Profile" -#: ../../include/nav.php:130 ../../boot.php:936 +#: ../../include/nav.php:131 ../../boot.php:940 msgid "Manage/edit profiles" msgstr "Profile verwalten/editieren" -#: ../../include/nav.php:131 +#: ../../include/nav.php:132 msgid "Manage/edit friends and contacts" msgstr "Freunde und Kontakte verwalten/editieren" -#: ../../include/nav.php:138 +#: ../../include/nav.php:139 msgid "Admin" msgstr "Administration" -#: ../../include/nav.php:138 +#: ../../include/nav.php:139 msgid "Site setup and configuration" msgstr "Einstellungen der Seite und Konfiguration" -#: ../../include/nav.php:161 +#: ../../include/nav.php:162 msgid "Nothing new here" msgstr "Keine Neuigkeiten." @@ -5196,11 +5350,15 @@ msgstr "Sekunden" msgid "%1$d %2$s ago" msgstr "%1$d %2$s her" -#: ../../include/poller.php:459 +#: ../../include/poller.php:474 msgid "From: " msgstr "Von: " -#: ../../include/bbcode.php:166 ../../include/bbcode.php:225 +#: ../../include/bbcode.php:202 +msgid "$1 wrote:" +msgstr "$1 geschrieben:" + +#: ../../include/bbcode.php:216 ../../include/bbcode.php:282 msgid "Image/photo" msgstr "Bild/Foto" @@ -5248,6 +5406,15 @@ msgstr "Neue Nachricht auf %s empfangen" msgid "%s sent you a new private message at %s." msgstr "%s hat dir eine neue private Nachricht auf %s geschrieben." +#: ../../include/enotify.php:31 +#, php-format +msgid "%s sent you %s." +msgstr "%s hat Dir geschickt %s" + +#: ../../include/enotify.php:31 +msgid "a private message" +msgstr "eine private Nachricht" + #: ../../include/enotify.php:32 #, php-format msgid "Please visit %s to view and/or reply to your private messages." @@ -5263,84 +5430,138 @@ msgstr "%s kommentierte einen Beitrag auf %s" msgid "%s commented on an item/conversation you have been following." msgstr "%s hat einen Beitrag kommentiert, dem du folgst." -#: ../../include/enotify.php:42 ../../include/enotify.php:51 -#: ../../include/enotify.php:60 ../../include/enotify.php:69 +#: ../../include/enotify.php:42 +#, php-format +msgid "%s commented in %s." +msgstr "%s wurde kommentiert in %s" + +#: ../../include/enotify.php:42 +msgid "a watched conversation" +msgstr "eine beobachtete Unterhaltung" + +#: ../../include/enotify.php:44 ../../include/enotify.php:54 +#: ../../include/enotify.php:64 ../../include/enotify.php:74 #, php-format msgid "Please visit %s to view and/or reply to the conversation." msgstr "Bitte besuche %s, um die Konversation anzusehen und/oder zu kommentieren." -#: ../../include/enotify.php:49 +#: ../../include/enotify.php:51 #, php-format msgid "%s posted to your profile wall at %s" msgstr "%s hat auf deine Pinnwand bei %s gepostet" -#: ../../include/enotify.php:58 +#: ../../include/enotify.php:52 +#, php-format +msgid "%s posted to %s" +msgstr "%s schrieb an %s" + +#: ../../include/enotify.php:52 +msgid "your profile wall." +msgstr "Deine Pinnwand" + +#: ../../include/enotify.php:61 #, php-format msgid "%s tagged you at %s" msgstr "%s hat dich auf %s erwähnt" -#: ../../include/enotify.php:67 +#: ../../include/enotify.php:62 +#, php-format +msgid "%s %s." +msgstr "%s %s." + +#: ../../include/enotify.php:62 +msgid "tagged you" +msgstr "erwähnte Dich" + +#: ../../include/enotify.php:71 #, php-format msgid "%s tagged your post at %s" msgstr "%s hat deinen Beitrag auf %s getaggt" -#: ../../include/enotify.php:76 +#: ../../include/enotify.php:72 +#, php-format +msgid "%s tagged %s" +msgstr "%s markierte %s" + +#: ../../include/enotify.php:72 +msgid "your post" +msgstr "Dein Beitrag" + +#: ../../include/enotify.php:81 #, php-format msgid "Introduction received at %s" msgstr "Kontaktanfrage auf %s erhalten" -#: ../../include/enotify.php:77 +#: ../../include/enotify.php:82 #, php-format msgid "You've received an introduction from '%s' at %s" msgstr "Du hast eine Kontaktanfrage von '%s' auf %s erhalten" -#: ../../include/enotify.php:78 ../../include/enotify.php:91 +#: ../../include/enotify.php:83 +#, php-format +msgid "You've received %s from %s." +msgstr "Du hast %s von %s erhalten." + +#: ../../include/enotify.php:83 +msgid "an introduction" +msgstr "eine Einführung" + +#: ../../include/enotify.php:84 ../../include/enotify.php:101 #, php-format msgid "You may visit their profile at %s" msgstr "Hier kannst du das Profil betrachten: %s" -#: ../../include/enotify.php:80 +#: ../../include/enotify.php:86 #, php-format msgid "Please visit %s to approve or reject the introduction." msgstr "Bitte besuche %s, um die Kontaktanfrage anzunehmen oder abzulehnen." -#: ../../include/enotify.php:87 +#: ../../include/enotify.php:93 #, php-format msgid "Friend suggestion received at %s" msgstr "Kontaktvorschlag empfangen auf %s" -#: ../../include/enotify.php:88 +#: ../../include/enotify.php:94 #, php-format msgid "You've received a friend suggestion from '%s' at %s" msgstr "Du hast von '%s' einen Kontaktvorschlag erhalten auf %s" -#: ../../include/enotify.php:89 +#: ../../include/enotify.php:95 +#, php-format +msgid "You've received %s for %s from %s." +msgstr "Du hast %s für %s von %s erhalten." + +#: ../../include/enotify.php:96 +msgid "a friend suggestion" +msgstr "ein Freunde Vorschlag" + +#: ../../include/enotify.php:99 msgid "Name:" msgstr "Name:" -#: ../../include/enotify.php:90 +#: ../../include/enotify.php:100 msgid "Photo:" msgstr "Foto:" -#: ../../include/enotify.php:93 +#: ../../include/enotify.php:103 #, php-format msgid "Please visit %s to approve or reject the suggestion." msgstr "Bitte besuche %s, um den Vorschlag zu akzeptieren oder abzulehnen." -#: ../../include/items.php:2450 +#: ../../include/items.php:2511 msgid "A new person is sharing with you at " msgstr "Eine neue Person teilt mit dir auf " -#: ../../include/items.php:2450 +#: ../../include/items.php:2511 msgid "You have a new follower at " msgstr "Du hast einen neuen Kontakt auf " -#: ../../include/bb2diaspora.php:64 +#: ../../include/bb2diaspora.php:83 msgid "view full size" msgstr "Volle Größe anzeigen" -#: ../../include/bb2diaspora.php:113 ../../include/bb2diaspora.php:123 -#: ../../include/bb2diaspora.php:124 +#: ../../include/bb2diaspora.php:132 ../../include/bb2diaspora.php:142 +#: ../../include/bb2diaspora.php:143 msgid "image/photo" msgstr "Bild/Foto" @@ -5356,282 +5577,282 @@ msgstr "Bitte lade ein Profilbild hoch." msgid "Welcome back " msgstr "Willkommen zurück " -#: ../../include/Contact.php:131 ../../include/conversation.php:744 +#: ../../include/Contact.php:131 ../../include/conversation.php:769 msgid "View status" msgstr "Status anzeigen" -#: ../../include/Contact.php:132 ../../include/conversation.php:745 +#: ../../include/Contact.php:132 ../../include/conversation.php:770 msgid "View profile" msgstr "Profil anzeigen" -#: ../../include/Contact.php:133 ../../include/conversation.php:746 +#: ../../include/Contact.php:133 ../../include/conversation.php:771 msgid "View photos" msgstr "Fotos ansehen" #: ../../include/Contact.php:134 ../../include/Contact.php:147 -#: ../../include/conversation.php:747 +#: ../../include/conversation.php:772 msgid "View recent" msgstr "Neueste anzeigen" #: ../../include/Contact.php:136 ../../include/Contact.php:147 -#: ../../include/conversation.php:749 +#: ../../include/conversation.php:774 msgid "Send PM" msgstr "Private Nachricht senden" -#: ../../include/conversation.php:141 +#: ../../include/conversation.php:163 msgid "post/item" msgstr "Nachricht/Beitrag" -#: ../../include/conversation.php:142 +#: ../../include/conversation.php:164 #, php-format msgid "%1$s marked %2$s's %3$s as favorite" msgstr "%1$s hat %2$s\\s %3$s als Favorit markiert" -#: ../../include/conversation.php:279 ../../include/conversation.php:535 +#: ../../include/conversation.php:301 ../../include/conversation.php:562 msgid "Select" msgstr "Auswählen" -#: ../../include/conversation.php:294 ../../include/conversation.php:623 -#: ../../include/conversation.php:624 +#: ../../include/conversation.php:316 ../../include/conversation.php:648 +#: ../../include/conversation.php:649 #, php-format msgid "View %s's profile @ %s" msgstr "Das Profil von %s auf %s betrachten." -#: ../../include/conversation.php:303 ../../include/conversation.php:635 +#: ../../include/conversation.php:325 ../../include/conversation.php:660 #, php-format msgid "%s from %s" msgstr "%s von %s" -#: ../../include/conversation.php:319 +#: ../../include/conversation.php:341 msgid "View in context" msgstr "Im Zusammenhang betrachten" -#: ../../include/conversation.php:434 +#: ../../include/conversation.php:456 #, php-format msgid "%d comment" msgid_plural "%d comments" msgstr[0] "%d Kommentar" msgstr[1] "%d Kommentare" -#: ../../include/conversation.php:437 ../../boot.php:444 +#: ../../include/conversation.php:459 ../../boot.php:448 msgid "show more" msgstr "mehr anzeigen" -#: ../../include/conversation.php:497 +#: ../../include/conversation.php:519 msgid "like" msgstr "mag ich" -#: ../../include/conversation.php:498 +#: ../../include/conversation.php:520 msgid "dislike" msgstr "mag ich nicht" -#: ../../include/conversation.php:500 +#: ../../include/conversation.php:522 msgid "Share this" msgstr "Teilen" -#: ../../include/conversation.php:500 +#: ../../include/conversation.php:522 msgid "share" msgstr "Teilen" -#: ../../include/conversation.php:545 +#: ../../include/conversation.php:572 msgid "add star" msgstr "markieren" -#: ../../include/conversation.php:546 +#: ../../include/conversation.php:573 msgid "remove star" msgstr "Markierung entfernen" -#: ../../include/conversation.php:547 +#: ../../include/conversation.php:574 msgid "toggle star status" msgstr "Markierung umschalten" -#: ../../include/conversation.php:550 +#: ../../include/conversation.php:577 msgid "starred" msgstr "markiert" -#: ../../include/conversation.php:551 +#: ../../include/conversation.php:578 msgid "add tag" msgstr "Tag hinzufügen" -#: ../../include/conversation.php:625 +#: ../../include/conversation.php:650 msgid "to" msgstr "to" -#: ../../include/conversation.php:626 +#: ../../include/conversation.php:651 msgid "Wall-to-Wall" msgstr "Wall-to-Wall" -#: ../../include/conversation.php:627 +#: ../../include/conversation.php:652 msgid "via Wall-To-Wall:" msgstr "via Wall-To-Wall:" -#: ../../include/conversation.php:669 +#: ../../include/conversation.php:694 msgid "Delete Selected Items" msgstr "Lösche die markierten Beiträge" -#: ../../include/conversation.php:801 +#: ../../include/conversation.php:826 #, php-format msgid "%s likes this." msgstr "%s mag das." -#: ../../include/conversation.php:801 +#: ../../include/conversation.php:826 #, php-format msgid "%s doesn't like this." msgstr "%s mag das nicht." -#: ../../include/conversation.php:805 +#: ../../include/conversation.php:830 #, php-format msgid "<span %1$s>%2$d people</span> like this." msgstr "<span %1$s>%2$d Leute</span> mögen das." -#: ../../include/conversation.php:807 +#: ../../include/conversation.php:832 #, php-format msgid "<span %1$s>%2$d people</span> don't like this." msgstr "<span %1$s>%2$d Leute</span> mögen das nicht." -#: ../../include/conversation.php:813 +#: ../../include/conversation.php:838 msgid "and" msgstr "und" -#: ../../include/conversation.php:816 +#: ../../include/conversation.php:841 #, php-format msgid ", and %d other people" msgstr " und %d andere" -#: ../../include/conversation.php:817 +#: ../../include/conversation.php:842 #, php-format msgid "%s like this." msgstr "%s mögen das." -#: ../../include/conversation.php:817 +#: ../../include/conversation.php:842 #, php-format msgid "%s don't like this." msgstr "%s mögen das nicht." -#: ../../include/conversation.php:842 +#: ../../include/conversation.php:867 msgid "Visible to <strong>everybody</strong>" msgstr "Für <strong>Jedermann</strong> sichtbar" -#: ../../include/conversation.php:844 +#: ../../include/conversation.php:869 msgid "Please enter a video link/URL:" msgstr "Bitte Link/URL zum Video einfügen:" -#: ../../include/conversation.php:845 +#: ../../include/conversation.php:870 msgid "Please enter an audio link/URL:" msgstr "Bitte Link/URL zum Audio einfügen:" -#: ../../include/conversation.php:846 +#: ../../include/conversation.php:871 msgid "Tag term:" msgstr "Tag:" -#: ../../include/conversation.php:847 +#: ../../include/conversation.php:872 msgid "Where are you right now?" msgstr "Wo hältst du dich jetzt gerade auf?" -#: ../../include/conversation.php:848 +#: ../../include/conversation.php:873 msgid "Enter a title for this item" msgstr "Gib den Titel für diesen Beitrag ein" -#: ../../include/conversation.php:891 +#: ../../include/conversation.php:916 msgid "upload photo" msgstr "Bild hochladen" -#: ../../include/conversation.php:893 +#: ../../include/conversation.php:918 msgid "attach file" msgstr "Datei anhängen" -#: ../../include/conversation.php:895 +#: ../../include/conversation.php:920 msgid "web link" msgstr "Weblink" -#: ../../include/conversation.php:896 +#: ../../include/conversation.php:921 msgid "Insert video link" msgstr "Video-Adresse einfügen" -#: ../../include/conversation.php:897 +#: ../../include/conversation.php:922 msgid "video link" msgstr "Video-Link" -#: ../../include/conversation.php:898 +#: ../../include/conversation.php:923 msgid "Insert audio link" msgstr "Audio-Adresse einfügen" -#: ../../include/conversation.php:899 +#: ../../include/conversation.php:924 msgid "audio link" msgstr "Audio-Link" -#: ../../include/conversation.php:901 +#: ../../include/conversation.php:926 msgid "set location" msgstr "Ort setzen" -#: ../../include/conversation.php:903 +#: ../../include/conversation.php:928 msgid "clear location" msgstr "Ort löschen" -#: ../../include/conversation.php:908 +#: ../../include/conversation.php:933 msgid "permissions" msgstr "Zugriffsrechte" -#: ../../boot.php:442 +#: ../../boot.php:446 msgid "Delete this item?" msgstr "Diesen Beitrag löschen?" -#: ../../boot.php:445 +#: ../../boot.php:449 msgid "show fewer" msgstr "weniger anzeigen" -#: ../../boot.php:688 +#: ../../boot.php:692 msgid "Create a New Account" msgstr "Neuen Account erstellen" -#: ../../boot.php:708 +#: ../../boot.php:712 msgid "Nickname or Email address: " msgstr "Spitzname oder Email-Adresse: " -#: ../../boot.php:709 +#: ../../boot.php:713 msgid "Password: " msgstr "Passwort: " -#: ../../boot.php:712 +#: ../../boot.php:716 msgid "Or login using OpenID: " msgstr "Oder melde dich mit deiner OpenID an: " -#: ../../boot.php:718 +#: ../../boot.php:722 msgid "Forgot your password?" msgstr "Passwort vergessen?" -#: ../../boot.php:875 +#: ../../boot.php:879 msgid "Edit profile" msgstr "Profil bearbeiten" -#: ../../boot.php:1042 ../../boot.php:1113 +#: ../../boot.php:1046 ../../boot.php:1117 msgid "g A l F d" msgstr "l. d, F G \\U\\h\\\\r" -#: ../../boot.php:1043 ../../boot.php:1114 +#: ../../boot.php:1047 ../../boot.php:1118 msgid "F d" msgstr "d. F" -#: ../../boot.php:1068 +#: ../../boot.php:1072 msgid "Birthday Reminders" msgstr "Geburtstagserinnerungen" -#: ../../boot.php:1069 +#: ../../boot.php:1073 msgid "Birthdays this week:" msgstr "Geburtstage diese Woche:" -#: ../../boot.php:1092 ../../boot.php:1156 +#: ../../boot.php:1096 ../../boot.php:1160 msgid "[today]" msgstr "[heute]" -#: ../../boot.php:1137 +#: ../../boot.php:1141 msgid "Event Reminders" msgstr "Veranstaltungserinnerungen" -#: ../../boot.php:1138 +#: ../../boot.php:1142 msgid "Events this week:" msgstr "Veranstaltungen diese Woche" -#: ../../boot.php:1150 +#: ../../boot.php:1154 msgid "[No description]" msgstr "[keine Beschreibung]" diff --git a/view/de/strings.php b/view/de/strings.php index 166880f0d..284c87f2f 100755 --- a/view/de/strings.php +++ b/view/de/strings.php @@ -34,13 +34,13 @@ $a->strings["Friend suggestion sent."] = "Kontaktvorschlag gesendet."; $a->strings["Suggest Friends"] = "Kontakte vorschlagen"; $a->strings["Suggest a friend for %s"] = "Schlage %s einen Kontakt vor"; $a->strings["Event description and start time are required."] = "Ereignis Beschreibung und Startzeit sind erforderlich."; +$a->strings["l, F j"] = "l, F j"; +$a->strings["Edit event"] = "Veranstaltung bearbeiten"; +$a->strings["link to source"] = "Link zum Originalbeitrag"; $a->strings["Events"] = "Veranstaltungen"; $a->strings["Create New Event"] = "Neue Veranstaltung erstellen"; $a->strings["Previous"] = "Vorherige"; $a->strings["Next"] = "Nächste"; -$a->strings["l, F j"] = "l, F j"; -$a->strings["Edit event"] = "Veranstaltung bearbeiten"; -$a->strings["link to source"] = "Link zum Originalbeitrag"; $a->strings["hour:minute"] = "Stunde:Minute"; $a->strings["Event details"] = "Veranstaltungsdetails"; $a->strings["Format is %s %s. Starting date and Description are required."] = "Format ist %s %s. Anfangsdatum und Beschreibung sind notwendig."; @@ -251,6 +251,7 @@ $a->strings["Welcome to %s"] = "Willkommen zu %s"; $a->strings["Invalid request identifier."] = "Invalid request identifier."; $a->strings["Discard"] = "Verwerfen"; $a->strings["Ignore"] = "Ignorieren"; +$a->strings["System"] = "System"; $a->strings["Network"] = "Netzwerk"; $a->strings["Personal"] = "Persönlich"; $a->strings["Home"] = "Pinnwand"; @@ -282,15 +283,20 @@ $a->strings["%s is now friends with %s"] = "%s ist jetzt mit %s befreundet"; $a->strings["%s created a new post"] = "%s hat einen neuen Beitrag erstellt"; $a->strings["%s commented on %s's post"] = "%s hat %ss Beitrag kommentiert"; $a->strings["No more network notifications."] = "Keine weiteren Netzwerk-Benachrichtigungen."; +$a->strings["Network Notifications"] = "Netzwerk Benachrichtigungen"; +$a->strings["No more system notifications."] = "Keine weiteren System Benachrichtigungen."; +$a->strings["System Notifications"] = "System Benachrichtigungen"; $a->strings["No more personal notifications."] = "Keine weiteren persönlichen Benachrichtigungen"; +$a->strings["Personal Notifications"] = "Persönliche Benachrichtigungen"; $a->strings["No more home notifications."] = "Keine weiteren Pinnwand-Benachrichtigungen"; +$a->strings["Home Notifications"] = "Pinnwand Benachrichtigungen"; $a->strings["Could not access contact record."] = "Konnte nicht auf die Kontaktdaten zugreifen."; $a->strings["Could not locate selected profile."] = "Konnte das ausgewählte Profil nicht finden."; $a->strings["Contact updated."] = "Kontakt aktualisiert."; $a->strings["Contact has been blocked"] = "Kontakt wurde blockiert"; $a->strings["Contact has been unblocked"] = "Kontakt wurde wieder freigegeben"; -$a->strings["Contact has been ignored"] = "Der Kontakt wurde ignoriert"; -$a->strings["Contact has been unignored"] = "Kontakt wurde ignoriert"; +$a->strings["Contact has been ignored"] = "Kontakt wurde ignoriert"; +$a->strings["Contact has been unignored"] = "Kontakt wird nicht mehr ignoriert"; $a->strings["stopped following"] = "wird nicht mehr gefolgt"; $a->strings["Contact has been removed."] = "Kontakt wurde entfernt."; $a->strings["You are mutual friends with %s"] = "Du hast mit %s eine beidseitige Freundschaft"; @@ -328,17 +334,19 @@ $a->strings["Update now"] = "Jetzt aktualisieren"; $a->strings["Currently blocked"] = "Derzeit geblockt"; $a->strings["Currently ignored"] = "Derzeit ignoriert"; $a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Antworten/Likes auf deine öffentlichen Beiträge <strong>könnten</strong> weiterhin sichtbar sein"; -$a->strings["Contacts"] = "Kontakte"; -$a->strings["Show Unblocked Contacts"] = "Nicht geblockte Kontakte anzeigen"; -$a->strings["Show Blocked Contacts"] = "Blockierte Kontakte anzeigen"; -$a->strings["Show All Contacts"] = "Alle Kontakte anzeigen"; -$a->strings["Search your contacts"] = "Suche in deinen Kontakten"; -$a->strings["Finding: "] = "Funde: "; -$a->strings["Find"] = "Finde"; +$a->strings["All Contacts"] = "Alle Kontakte"; +$a->strings["Unblocked Contacts"] = "Nicht blockierte Kontakte"; +$a->strings["Blocked Contacts"] = "Blockierte Kontakte"; +$a->strings["Ignored Contacts"] = "Ignorierte Kontakte"; +$a->strings["Hidden Contacts"] = "Verborgene Kontakte"; $a->strings["Mutual Friendship"] = "Beidseitige Freundschaft"; $a->strings["is a fan of yours"] = "ist ein Fan von dir"; $a->strings["you are a fan of"] = "du bist Fan von"; $a->strings["Edit contact"] = "Kontakt bearbeiten"; +$a->strings["Contacts"] = "Kontakte"; +$a->strings["Search your contacts"] = "Suche in deinen Kontakten"; +$a->strings["Finding: "] = "Funde: "; +$a->strings["Find"] = "Finde"; $a->strings["No valid account found."] = "Kein gültiger Account gefunden."; $a->strings["Password reset request issued. Check your email."] = "Zurücksetzen des Passworts eingeleitet. Bitte überprüfe deine E-Mail."; $a->strings["Password reset requested at %s"] = "Anfrage zum Zurücksetzen des Passworts auf %s erhalten"; @@ -365,7 +373,7 @@ $a->strings["Password update failed. Please try again."] = "Aktualisierung des P $a->strings[" Please use a shorter name."] = " Bitte verwende einen kürzeren Namen."; $a->strings[" Name too short."] = " Name ist zu kurz."; $a->strings[" Not valid email."] = " Keine gültige E-Mail."; -$a->strings[" Cannot change to that email."] = " Cannot change to that email."; +$a->strings[" Cannot change to that email."] = "Ändern der E-Mail nicht möglich. "; $a->strings["Settings updated."] = "Einstellungen aktualisiert."; $a->strings["Account settings"] = "Account Einstellungen"; $a->strings["Connector settings"] = "Connector-Einstellungen"; @@ -452,9 +460,9 @@ $a->strings["Notification Settings"] = "Benachrichtigungseinstellungen"; $a->strings["Send a notification email when:"] = "Benachrichtigungs-E-Mail senden wenn:"; $a->strings["You receive an introduction"] = "Du eine Kontaktanfrage erhältst"; $a->strings["Your introductions are confirmed"] = "Eine deiner Kontaktanfragen akzeptiert wurde"; -$a->strings["Someone writes on your profile wall"] = "Jemand etwas auf deine Pinnwand schreibt"; -$a->strings["Someone writes a followup comment"] = "Jemand auch einen Kommentar verfasst"; -$a->strings["You receive a private message"] = "Du eine private Nachricht erhältst"; +$a->strings["Someone writes on your profile wall"] = "Jemand schreibt etwas auf deine Pinnwand"; +$a->strings["Someone writes a followup comment"] = "Jemand verfasst auch einen Kommentar"; +$a->strings["You receive a private message"] = "Du erhältst eine private Nachricht"; $a->strings["You receive a friend suggestion"] = "Du eine Empfehlung erhältst"; $a->strings["You are tagged in a post"] = "Du wurdest in einem Beitrag erwähnt"; $a->strings["Advanced Page Settings"] = "Erweiterte Seiten-Einstellungen"; @@ -485,16 +493,18 @@ $a->strings["Personal Notes"] = "Persönliche Notizen"; $a->strings["Save"] = "Speichern"; $a->strings["Welcome to Friendica"] = "Willkommen bei Friendica"; $a->strings["New Member Checklist"] = "Checkliste für neue Mitglieder"; -$a->strings["We would like to offer some tips and links to help make your experience enjoyable. Click any item to visit the relevant page."] = "Wir möchten dir einige Tipps und Links anbieten, um deine Erfahrung mit Friendica so angenehm wie möglich zu machen. Klicke einfach einen Aspekt an, um weitere Informationen zu erhalten."; -$a->strings["On your <em>Settings</em> page - change your initial password. Also make a note of your Identity Address. This will be useful in making friends."] = "Ändere dein anfängliches Passwort auf der <em>Einstellungen</em> Seite. Bei dieser Gelegenheit solltest du dir die Adresse deines Profils merken, diese wird benötigt um mit Anderen in Kontakt zu treten."; +$a->strings["We would like to offer some tips and links to help make your experience enjoyable. Click any item to visit the relevant page. A link to this page will be visible from your home page for two weeks after your initial registration and then will quietly disappear."] = "Wir möchten Dir einige Tipps und Links anbieten, die Dir helfen könnten, den Einstieg angenehmer zu machen. Klicke auf ein Element, um die entsprechende Seite zu besuchen. Ein Link zu dieser Seite hier bleibt sichtbar über Deine Pinnwand für zwei Wochen nach dem Registrierungsdatum und wird dann verschwinden."; +$a->strings["On your <em>Settings</em> page - change your initial password. Also make a note of your Identity Address. This looks just like an email address - and will be useful in making friends on the free social web."] = "Ändere bitte unter <em>Einstellungen</em> Dein Passwort. Außerdem merke Dir Deine Indentifikations Adresse. Diese sieht aus wie eine E-Mail Adresse und wird benötig um Freunschaften mit anderen im Friendica Netzwerk zu schliessen."; $a->strings["Review the other settings, particularly the privacy settings. An unpublished directory listing is like having an unlisted phone number. In general, you should probably publish your listing - unless all of your friends and potential friends know exactly how to find you."] = "Überprüfe die restlichen Einstellungen, insbesondere die Einstellungen zur Privatsphäre. Wenn du dein Profil nicht veröffentlichst ist das wie wenn niemand deine Telefonnummer kennt. Im Allgemeinen solltest du es veröffentlichen - außer all deine Freunde und potentiellen Freunde wissen wie man dich findet."; $a->strings["Upload a profile photo if you have not done so already. Studies have shown that people with real photos of themselves are ten times more likely to make friends than people who do not."] = "Lade ein Profilbild hoch falls du es noch nicht getan hast. Studien haben gezeigt, dass es zehnmal wahrscheinlicher ist neue Freunde zu finden, wenn du ein Bild von dir selbst verwendest als wenn du dies nicht tust."; $a->strings["Authorise the Facebook Connector if you currently have a Facebook account and we will (optionally) import all your Facebook friends and conversations."] = "Richte die Verbindung zu Facebook ein, wenn du im Augenblick ein Facebook Konto hast und (optional) deine Facebook Freunde und Unterhaltungen importieren willst."; +$a->strings["<em>If</em> this is your own personal server, installing the Facebook addon may ease your transition to the free social web."] = "<em>Wenn</em> dies dein privater Server ist könnte die Installation des Facebook Connectors deinen Umzug ins freie Soziale Netz angenehmer gestalten."; $a->strings["Enter your email access information on your Connector Settings page if you wish to import and interact with friends or mailing lists from your email INBOX"] = "Gib deine E-Mail-Zugangsinformationen auf der Connector-Einstellungsseite ein, falls du E-Mails aus deinem Posteingang importieren und mit Freunden und Mailinglisten interagieren willlst."; $a->strings["Edit your <strong>default</strong> profile to your liking. Review the settings for hiding your list of friends and hiding the profile from unknown visitors."] = "Editiere dein <strong>Standard</strong> Profil nach deinen Vorlieben. Überprüfe die Einstellungen zum Verbergen deiner Freundesliste vor unbekannten Betrachtern des Profils."; $a->strings["Set some public keywords for your default profile which describe your interests. We may be able to find other people with similar interests and suggest friendships."] = "Trage ein paar öffentliche Stichwörter in dein Standardprofil ein, die deine Interessen beschreiben. Eventuell sind wir in der Lage Leute zu finden, die deine Interessen teilen und können dir dann Kontakte vorschlagen."; $a->strings["Your Contacts page is your gateway to managing friendships and connecting with friends on other networks. Typically you enter their address or site URL in the <em>Add New Contact</em> dialog."] = "Die Kontakte-Seite ist die Einstiegsseite, von der aus du Kontakte verwalten und dich mit Freunden in anderen Netzwerken verbinden kannst. Normalerweise gibst du dazu einfach ihre Adresse oder die URL der Seite im Kasten <em>Neuen Kontakt hinzufügen</em> ein."; $a->strings["The Directory page lets you find other people in this network or other federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on their profile page. Provide your own Identity Address if requested."] = "Über die Verzeichnisseite kannst du andere Personen auf diesem Server oder anderen verteilten Seiten finden. Halte nach einem <em>Verbinden</em> oder <em>Folgen</em> Link auf deren Profilseiten Ausschau und gib deine eigene Profiladresse an falls du danach gefragt wirst."; +$a->strings["On the side panel of the Contacts page are several tools to find new friends. We can match people by interest, look up people by name or interest, and provide suggestions based on network relationships. On a brand new site, friend suggestions will usually begin to be populated within 24 hours."] = "Im seitlichen Bedienfeld der Kontakte-Seite gibt es diverse Werkzeuge, um neue Freunde zu finden. Wir können Menschen mit den gleichen Interessen finden, anhand von Namen oder Interessen suchen oder aber aufgrund vorhandener Kontakte neue Freunde vorschlagen.\nAuf einer brandneuen - soeben erstellten - Seite starten die Kontaktvorschläge innerhalb von 24 Stunden."; $a->strings["Once you have made some friends, organize them into private conversation groups from the sidebar of your Contacts page and then you can interact with each group privately on your Network page."] = "Sobald du einige Freunde gefunden hast, organisiere sie in Gruppen zur privaten Kommunikation im Seitenmenü der Kontakte-Seite. Du kannst dann mit jeder dieser Gruppen von der Netzwerkseite aus privat interagieren."; $a->strings["Our <strong>help</strong> pages may be consulted for detail on other program features and resources."] = "Unsere <strong>Hilfe</strong> Seiten können herangezogen werden, um weitere Einzelheiten zu andern Programm Features zu erhalten."; $a->strings["Item not available."] = "Beitrag nicht verfügbar."; @@ -511,14 +521,13 @@ $a->strings["Unable to remove group."] = "Konnte die Gruppe nicht entfernen."; $a->strings["Click on a contact to add or remove."] = "Klicke einen Kontakt an, um ihn hinzuzufügen oder zu entfernen"; $a->strings["Group Editor"] = "Gruppeneditor"; $a->strings["Members"] = "Mitglieder"; -$a->strings["All Contacts"] = "Alle Kontakte"; $a->strings["Invalid profile identifier."] = "Ungültiger Profil-Bezeichner"; $a->strings["Profile Visibility Editor"] = "Editor für die Profil-Sichtbarkeit"; $a->strings["Profile"] = "Profil"; $a->strings["Visible To"] = "Sichtbar für"; $a->strings["All Contacts (with secure profile access)"] = "Alle Kontakte (mit gesichertem Profilzugriff)"; -$a->strings["View Contacts"] = "Kontakte anzeigen"; $a->strings["No contacts."] = "Keine Kontakte."; +$a->strings["View Contacts"] = "Kontakte anzeigen"; $a->strings["An invitation is required."] = "Du benötigst eine Einladung."; $a->strings["Invitation could not be verified."] = "Die Einladung konnte nicht überprüft werden."; $a->strings["Invalid OpenID url"] = "Ungültige OpenID URL"; @@ -531,7 +540,7 @@ $a->strings["Not a valid email address."] = "Keine gültige E-Mail-Adresse."; $a->strings["Cannot use that email."] = "Konnte diese E-Mail-Adresse nicht verwenden."; $a->strings["Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and must also begin with a letter."] = "Dein Spitzname darf nur aus Buchstaben und Zahlen (\"a-z\",\"0-9\", \"_\" und \"-\") bestehen, außerdem muss er mit einem Buchstaben beginnen."; $a->strings["Nickname is already registered. Please choose another."] = "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen."; -$a->strings["SERIOUS ERROR: Generation of security keys failed."] = "SERIOUS ERROR: Generation of security keys failed."; +$a->strings["SERIOUS ERROR: Generation of security keys failed."] = "FATALER FEHLER: Sicherheitsschlüssel konnten nicht erzeugt werden."; $a->strings["An error occurred during registration. Please try again."] = "Wärend der Anmeldung ist ein Fehler aufgetreten. Bitte versuche es noch einmal."; $a->strings["An error occurred creating your default profile. Please try again."] = "Bei der Erstellung des Standard-Profils ist ein Fehler aufgetreten. Bitte versuche es noch einmal."; $a->strings["Registration details for %s"] = "Details der Registration von %s"; @@ -614,6 +623,7 @@ $a->strings["No friends to display."] = "Keine Freunde zum Anzeigen."; $a->strings["Site"] = "Seite"; $a->strings["Users"] = "Nutzer"; $a->strings["Plugins"] = "Plugins"; +$a->strings["Themes"] = "Themen"; $a->strings["Logs"] = "Protokolle"; $a->strings["User registrations waiting for confirmation"] = "Nutzeranmeldungen die auf Bestätigung warten"; $a->strings["Administration"] = "Administration"; @@ -685,6 +695,7 @@ $a->strings["Disable"] = "Ausschalten"; $a->strings["Enable"] = "Einschalten"; $a->strings["Toggle"] = "Umschalten"; $a->strings["Settings"] = "Einstellungen"; +$a->strings["No themes found."] = "Keine Themen gefunden."; $a->strings["Log settings updated."] = "Protokolleinstellungen aktualisiert."; $a->strings["Clear"] = "löschen"; $a->strings["Debugging"] = "Protokoll führen"; @@ -941,6 +952,16 @@ $a->strings["Blocked %s - Click to open/close"] = "%s blockiert - Zum Öffnen/Sc $a->strings["Unblock Author"] = "Autor freischalten"; $a->strings["Block Author"] = "Autor blockieren"; $a->strings["blockem settings updated"] = "blockem Einstellungen aktualisiert"; +$a->strings[":-)"] = ":-)"; +$a->strings[":-("] = ":-("; +$a->strings["lol"] = "lol"; +$a->strings["Quick Comment Settings"] = "Schnell-Kommentar Einstellungen"; +$a->strings["Enter quick comments, one per line"] = "Gibt ein Schnell-Kommentar pro Zeile ein"; +$a->strings["Quick Comment settings saved."] = "Schnell-Kommentare Einstellungen gespeichert"; +$a->strings["Tile Server URL"] = "Tile Server URL"; +$a->strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">public tile servers</a>"] = "Eine Liste <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">öffentlicher Tile Server</a>"; +$a->strings["Default zoom"] = "Standard Zoom"; +$a->strings["The default zoom level. (1:world, 18:highest)"] = "Standard Zoo,level (1: Welt; 18: höchstes)"; $a->strings["Editplain settings updated."] = "Editplain Einstellungen aktualisiert"; $a->strings["Editplain Settings"] = "Editplain Einstellungen"; $a->strings["Disable richtext status editor"] = "RichText Editor deaktivieren"; @@ -967,6 +988,7 @@ $a->strings["Current StatusNet API is"] = "Derzeitige StatusNet-API-URL lautet"; $a->strings["Cancel StatusNet Connection"] = "Verbindung zum StatusNet Server abbrechen"; $a->strings["Currently connected to: "] = "Momentan verbunden mit: "; $a->strings["If enabled all your <strong>public</strong> postings can be posted to the associated StatusNet account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Wenn aktiviert können all deine <strong>öffentlichen</strong> Einträge auf dem verbundenen StatusNet Konto veröffentlicht werden. Du kannst das (hier) als Standardverhalten einstellen oder beim Schreiben eines Beitrags in den Beitragsoptionen festlegen."; +$a->strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to StatusNet will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Hinweis</strong>: Aufgrund deiner Privatsphären Einstellungen (<em>Profil-Details vor unbekannten Betrachtern verbergen?</em>) wird der Link der eventuell an an deinen StatusNet Account weitergeleitete angehangen wird um auf den original Artikel zu verweisen den Betrachter auf eine leere Seite führen, auf der er darüber informiert wird, dass der Zugriff eingeschränkt wurde."; $a->strings["Allow posting to StatusNet"] = "Veröffentlichung bei StatusNet erlauben"; $a->strings["Send public postings to StatusNet by default"] = "Veröffentliche öffentliche Beiträge standardmäßig bei StatusNet"; $a->strings["Clear OAuth configuration"] = "OAuth-Konfiguration löschen"; @@ -987,11 +1009,18 @@ $a->strings["WordPress username"] = "WordPress-Benutzername"; $a->strings["WordPress password"] = "WordPress-Passwort"; $a->strings["WordPress API URL"] = "WordPress-API-URL"; $a->strings["Post to WordPress by default"] = "Standardmäßig auf WordPress veröffentlichen"; +$a->strings["\"Show more\" Settings"] = "\"Mehr zeigen\" Einstellungen"; +$a->strings["Enable Show More"] = "Aktiviere \"Mehr zeigen\""; +$a->strings["Cutting posts after how much characters"] = "Begrenze Beiträge nach der Anzahl der Buchstaben"; +$a->strings["Show More Settings saved."] = "\"Mehr zeigen\" Einstellungen gesichert."; +$a->strings["Show More"] = "\"Mehr zeigen\""; $a->strings["This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> analytics tool."] = "Diese Website benutzt <a href='http://www.piwik.org'>Piwik</a>, eine Open Source-Software zur statistischen Auswertung der Besucherzugriffe."; $a->strings["If you do not want that your visits are logged this way you <a href='%s'>can set a cookie to prevent Piwik from tracking further visits of the site</a> (opt-out)."] = "Wenn Du nicht willst, dass Deine Besuche auf diese Weise gespeichert werden, kannst Du <a href='%s'>ein Cookie setzen</a>. Dann wird Piwik Dich auf dieser Website nicht mehr verfolgen (opt-out)."; $a->strings["Piwik Base URL"] = "Piwik Basis URL"; +$a->strings["Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)"] = "Absoluter Pfad zu deiner Piwik Installation (ohen Protokoll (http/s) und mit abschließendem Schrägstrich)"; $a->strings["Site ID"] = "Seiten ID"; $a->strings["Show opt-out cookie link?"] = "Link zum Setzen des Opt-Out Cookies anzeigen?"; +$a->strings["Asynchronous tracking"] = "Asynchroned Tracken"; $a->strings["Post to Twitter"] = "Bei Twitter veröffentlichen"; $a->strings["Twitter settings updated."] = "Twitter Einstellungen aktualisiert."; $a->strings["Twitter Posting Settings"] = "Twitter-Beitragseinstellungen"; @@ -1000,6 +1029,7 @@ $a->strings["At this Friendica instance the Twitter plugin was enabled but you h $a->strings["Log in with Twitter"] = "bei Twitter anmelden"; $a->strings["Copy the PIN from Twitter here"] = "Kopiere die Twitter-PIN hier her"; $a->strings["If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Wenn aktiviert können all deine <strong>öffentlichen</strong> Einträge auf dem verbundenen Twitter Konto veröffentlicht werden. Du kannst dies (hier) als Standardverhalten einstellen oder beim Schreiben eines Beitrags in den Beitragsoptionen festlegen."; +$a->strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Hinweis</strong>: Aufgrund deiner Privatsphären Einstellungen (<em>Profil-Details vor unbekannten Betrachtern verbergen?</em>) wird der Link der eventuell an an deinen Twitter Account weitergeleitete angehangen wird um auf den original Artikel zu verweisen den Betrachter auf eine leere Seite führen, auf der er darüber informiert wird, dass der Zugriff eingeschränkt wurde."; $a->strings["Allow posting to Twitter"] = "Veröffentlichung bei Twitter erlauben"; $a->strings["Send public postings to Twitter by default"] = "Veröffentliche öffentliche Beiträge standardmäßig bei Twitter"; $a->strings["Consumer key"] = "Consumer Key"; @@ -1170,6 +1200,7 @@ $a->strings["People directory"] = "Nutzerverzeichnis"; $a->strings["Conversations from your friends"] = "Unterhaltungen deiner Kontakte"; $a->strings["Friend Requests"] = "Kontaktanfragen"; $a->strings["See all notifications"] = "Alle Benachrichtigungen anzeigen"; +$a->strings["Mark all system notifications seen"] = "Markiere alle System Benachrichtigungen als gelesen"; $a->strings["Private mail"] = "Private Email"; $a->strings["Manage"] = "Verwalten"; $a->strings["Manage other pages"] = "Andere Seiten verwalten"; @@ -1214,6 +1245,7 @@ $a->strings["second"] = "Sekunde"; $a->strings["seconds"] = "Sekunden"; $a->strings["%1\$d %2\$s ago"] = "%1\$d %2\$s her"; $a->strings["From: "] = "Von: "; +$a->strings["$1 wrote:"] = "$1 geschrieben:"; $a->strings["Image/photo"] = "Bild/Foto"; $a->strings["Cannot locate DNS info for database server '%s'"] = "Kann die DNS Informationen für den Datenbanken Server '%s' nicht ermitteln."; $a->strings["[no subject]"] = "[kein Betreff]"; @@ -1225,19 +1257,33 @@ $a->strings["Thank You,"] = "Danke,"; $a->strings["%s Administrator"] = "der Administrator von %s"; $a->strings["New mail received at %s"] = "Neue Nachricht auf %s empfangen"; $a->strings["%s sent you a new private message at %s."] = "%s hat dir eine neue private Nachricht auf %s geschrieben."; +$a->strings["%s sent you %s."] = "%s hat Dir geschickt %s"; +$a->strings["a private message"] = "eine private Nachricht"; $a->strings["Please visit %s to view and/or reply to your private messages."] = "Bitte besuche %s, um deine privaten Nachrichten anzusehen und/oder zu beantworten."; $a->strings["%s commented on an item at %s"] = "%s kommentierte einen Beitrag auf %s"; $a->strings["%s commented on an item/conversation you have been following."] = "%s hat einen Beitrag kommentiert, dem du folgst."; +$a->strings["%s commented in %s."] = "%s wurde kommentiert in %s"; +$a->strings["a watched conversation"] = "eine beobachtete Unterhaltung"; $a->strings["Please visit %s to view and/or reply to the conversation."] = "Bitte besuche %s, um die Konversation anzusehen und/oder zu kommentieren."; $a->strings["%s posted to your profile wall at %s"] = "%s hat auf deine Pinnwand bei %s gepostet"; +$a->strings["%s posted to %s"] = "%s schrieb an %s"; +$a->strings["your profile wall."] = "Deine Pinnwand"; $a->strings["%s tagged you at %s"] = "%s hat dich auf %s erwähnt"; +$a->strings["%s %s."] = "%s %s."; +$a->strings["tagged you"] = "erwähnte Dich"; $a->strings["%s tagged your post at %s"] = "%s hat deinen Beitrag auf %s getaggt"; +$a->strings["%s tagged %s"] = "%s markierte %s"; +$a->strings["your post"] = "Dein Beitrag"; $a->strings["Introduction received at %s"] = "Kontaktanfrage auf %s erhalten"; $a->strings["You've received an introduction from '%s' at %s"] = "Du hast eine Kontaktanfrage von '%s' auf %s erhalten"; +$a->strings["You've received %s from %s."] = "Du hast %s von %s erhalten."; +$a->strings["an introduction"] = "eine Einführung"; $a->strings["You may visit their profile at %s"] = "Hier kannst du das Profil betrachten: %s"; $a->strings["Please visit %s to approve or reject the introduction."] = "Bitte besuche %s, um die Kontaktanfrage anzunehmen oder abzulehnen."; $a->strings["Friend suggestion received at %s"] = "Kontaktvorschlag empfangen auf %s"; $a->strings["You've received a friend suggestion from '%s' at %s"] = "Du hast von '%s' einen Kontaktvorschlag erhalten auf %s"; +$a->strings["You've received %s for %s from %s."] = "Du hast %s für %s von %s erhalten."; +$a->strings["a friend suggestion"] = "ein Freunde Vorschlag"; $a->strings["Name:"] = "Name:"; $a->strings["Photo:"] = "Foto:"; $a->strings["Please visit %s to approve or reject the suggestion."] = "Bitte besuche %s, um den Vorschlag zu akzeptieren oder abzulehnen."; diff --git a/view/email_notify_html.tpl b/view/email_notify_html.tpl index b302c2149..43f72f15c 100755 --- a/view/email_notify_html.tpl +++ b/view/email_notify_html.tpl @@ -18,7 +18,7 @@ <tr><td style="font-weight:bold;padding-bottom:5px;">$title</td></tr> <tr><td style="padding-right:22px;">$htmlversion</td></tr> <tr><td style="padding-top:11px;" colspan="2">$hsitelink</td></tr> - <tr><td style="padding-bottom:11px;" colspan="2">$itemlink</td></tr> + <tr><td style="padding-bottom:11px;" colspan="2">$hitemlink</td></tr> <tr><td></td><td>$thanks</td></tr> <tr><td></td><td>$site_admin</td></tr> </tbody> diff --git a/view/email_notify_text.tpl b/view/email_notify_text.tpl index f7f5a4c68..018bb6078 100755 --- a/view/email_notify_text.tpl +++ b/view/email_notify_text.tpl @@ -6,7 +6,7 @@ $title $textversion $tsitelink -$itemlink +$titemlink $thanks $site_admin diff --git a/view/head.tpl b/view/head.tpl index 2a1837088..f606f2f7e 100755 --- a/view/head.tpl +++ b/view/head.tpl @@ -11,10 +11,10 @@ <link rel="search" href="$baseurl/opensearch" type="application/opensearchdescription+xml" - title="Search in Friendika" /> + title="Search in Friendica" /> <!--[if IE]> -<script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> +<script type="text/javascript" src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <script type="text/javascript" src="$baseurl/js/jquery.js" ></script> <script type="text/javascript" src="$baseurl/js/jquery.textinputs.js" ></script> diff --git a/view/jot-header.tpl b/view/jot-header.tpl index 007f639b6..d6b172b6a 100755 --- a/view/jot-header.tpl +++ b/view/jot-header.tpl @@ -15,7 +15,7 @@ function initEditor(cb){ $("a#jot-perms-icon").fancybox({ 'transitionIn' : 'elastic', 'transitionOut' : 'elastic' - }); + }); $(".jothidden").show(); if (typeof cb!="undefined") cb(); return; @@ -129,7 +129,6 @@ function enableOnUser(){ $("#profile-jot-text").focus(enableOnUser); $("#profile-jot-text").click(enableOnUser); - var uploader = new window.AjaxUpload( 'wall-image-upload', { action: 'wall_upload/$nickname', diff --git a/view/settings_connectors.tpl b/view/settings_connectors.tpl index 0f3357873..9493c8bf7 100755 --- a/view/settings_connectors.tpl +++ b/view/settings_connectors.tpl @@ -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" /> diff --git a/view/theme/clean/unsupported b/view/theme/clean/unsupported new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/view/theme/clean/unsupported diff --git a/view/theme/darkness/unsupported b/view/theme/darkness/unsupported new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/view/theme/darkness/unsupported diff --git a/view/theme/darkzero-NS/border.jpg b/view/theme/darkzero-NS/border.jpg Binary files differnew file mode 100755 index 000000000..4967412bf --- /dev/null +++ b/view/theme/darkzero-NS/border.jpg diff --git a/view/theme/darkzero-NS/head.jpg b/view/theme/darkzero-NS/head.jpg Binary files differnew file mode 100755 index 000000000..67e852140 --- /dev/null +++ b/view/theme/darkzero-NS/head.jpg diff --git a/view/theme/darkzero-NS/sectionend.jpg b/view/theme/darkzero-NS/sectionend.jpg Binary files differnew file mode 100755 index 000000000..9d5d5c8f3 --- /dev/null +++ b/view/theme/darkzero-NS/sectionend.jpg diff --git a/view/theme/darkzero-NS/shiny.png b/view/theme/darkzero-NS/shiny.png Binary files differnew file mode 100755 index 000000000..994c0d05d --- /dev/null +++ b/view/theme/darkzero-NS/shiny.png diff --git a/view/theme/darkzero-NS/style.css b/view/theme/darkzero-NS/style.css new file mode 100755 index 000000000..047381a92 --- /dev/null +++ b/view/theme/darkzero-NS/style.css @@ -0,0 +1,99 @@ +@import url('../duepuntozero/style.css'); + +/* dark variation Fabio Comuni <fabrix.xm@gmail.com> */ + +a:link, a:visited { color: #99CCFF; text-decoration: none; } +a:hover {text-decoration: underline; } + +input, select, textarea { + background-color: #222222; + color: #FFFFFF !important; + border: 1px solid #444444; +} +.openid { background-color: #222222;} + +body { background-color: #222222; color: #cccccc; background-image: url(head.jpg); } +aside{ background-image: url(border.jpg); padding-bottom: 0px; } +section { background-color: #333333; background-image: url(border.jpg); } + + +.tabs { background-image: url(head.jpg); } +div.wall-item-content-wrapper.shiny { background-image: url('shiny.png'); } + +nav #banner #logo-text a { color: #ffffff; } + +.wall-item-content-wrapper { border: 1px solid #444444; } +.wall-item-tools { background-color: #444444; background-image: none;} +.comment-edit-wrapper{ background-color: #333333; } +.wall-item-content-wrapper.comment { background-color: #444444; border: 0px;} +.photo-top-album-name{ background-color: #333333; } +.photo-album-image-wrapper .caption { background-color: rgba(51, 51, 51, 0.8); color: #FFFFFF; } + +.nav-selected.nav-link { color: #ffffff!important; border-bottom: 0px} +.nav-commlink, .nav-login-link {background-color: #b7bab3;} +.nav-commlink:link, .nav-commlink:visited, +.nav-login-link:link, .nav-login-link:visited{ + color: #ffffff; +} + +.fakelink, .fakelink:visited { + color: #99CCFF; +} + +.wall-item-name-link { + color: #99CCFF; +} + +.wall-item-photo-menu li a { + color: #CCCCCC; background-color: #333333; +} + +.wall-item-photo-menu li a:hover { + background-color: #CCCCCC; color: #333333; +} +#page-footer { min-height: 1em;} +footer { + margin: 0px 10%; + display: block; + background-image: url('sectionend.jpg'); + background-position: top left; + background-repeat: repeat-x; + height: 25px; +} + + +input#dfrn-url { + background-color: #222222; + color: #FFFFFF !important; +} +.pager_first a, .pager_last a, .pager_prev a, .pager_next a, .pager_n a, .pager_current { + color: #000088; +} + +#jot-perms-icon { + float: left; +} + + +#jot-title { + background-color: #333333; + border: 1px solid #333333; +} + +#jot-title::-webkit-input-placeholder{ color: #555555!important;} +#jot-title:-moz-placeholder{color: #555555!important;} + + +#jot-title:hover, +#jot-title:focus { + border: 1px solid #cccccc; +} + +.wall-item-content { + max-height: 20000px; + overflow: none; +} +blockquote { + background: #ddd; + color: #000; +} diff --git a/view/theme/darkzero-NS/theme.php b/view/theme/darkzero-NS/theme.php new file mode 100755 index 000000000..521b1859e --- /dev/null +++ b/view/theme/darkzero-NS/theme.php @@ -0,0 +1,57 @@ +<?php + +/* + * Name: Darkzero-NS + * Description: Darkzero theme with posts that do not scroll + * Version: 1.0 + * Author: Mike Macgirvin <mike@macgirvin.com> + */ + +$a->theme_info = array( + 'extends' => 'duepuntozero', +); + +$a->page['htmlhead'] .= <<< EOT +<script> +$(document).ready(function() { + +$('.group-edit-icon').hover( + function() { + $(this).addClass('icon'); $(this).removeClass('iconspacer');}, + function() { + $(this).removeClass('icon'); $(this).addClass('iconspacer');} + ); + +$('.sidebar-group-element').hover( + function() { + id = $(this).attr('id'); + $('#edit-' + id).addClass('icon'); $('#edit-' + id).removeClass('iconspacer');}, + + function() { + id = $(this).attr('id'); + $('#edit-' + id).removeClass('icon');$('#edit-' + id).addClass('iconspacer');} + ); + + +$('.savedsearchdrop').hover( + function() { + $(this).addClass('drop'); $(this).addClass('icon'); $(this).removeClass('iconspacer');}, + function() { + $(this).removeClass('drop'); $(this).removeClass('icon'); $(this).addClass('iconspacer');} + ); + +$('.savedsearchterm').hover( + function() { + id = $(this).attr('id'); + $('#drop-' + id).addClass('icon'); $('#drop-' + id).addClass('drophide'); $('#drop-' + id).removeClass('iconspacer');}, + + function() { + id = $(this).attr('id'); + $('#drop-' + id).removeClass('icon');$('#drop-' + id).removeClass('drophide'); $('#drop-' + id).addClass('iconspacer');} + ); + +}); + + +</script> +EOT; diff --git a/view/theme/darkzero-NS/unsupported b/view/theme/darkzero-NS/unsupported new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/view/theme/darkzero-NS/unsupported diff --git a/view/theme/darkzero/style.css b/view/theme/darkzero/style.css index 25ae0c71f..fdaf26f19 100755 --- a/view/theme/darkzero/style.css +++ b/view/theme/darkzero/style.css @@ -88,3 +88,7 @@ input#dfrn-url { #jot-title:focus { border: 1px solid #cccccc; } +blockquote { + background: #ddd; + color: #000; +} diff --git a/view/theme/darkzero/theme.php b/view/theme/darkzero/theme.php index e03bcc7b8..37632c4b5 100755 --- a/view/theme/darkzero/theme.php +++ b/view/theme/darkzero/theme.php @@ -3,7 +3,7 @@ /* * Name: Darkzero * Version: 1.0 - * Author: Mike Macgirvin <mike@macgirvin.com> + * Author: Fabio Communi <fabrix.xm@gmail.com> */ $a->theme_info = array( diff --git a/view/theme/dispy/premium.png b/view/theme/dispy/premium.png Binary files differnew file mode 100755 index 000000000..1ad601c0f --- /dev/null +++ b/view/theme/dispy/premium.png diff --git a/view/theme/dispy/star.png b/view/theme/dispy/star.png Binary files differnew file mode 100755 index 000000000..a327ba14e --- /dev/null +++ b/view/theme/dispy/star.png diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index 5bc1450db..7f563293a 100755 --- a/view/theme/dispy/style.css +++ b/view/theme/dispy/style.css @@ -1099,6 +1099,21 @@ div[id$="wrapper"] br { clear: left; } border-bottom: 0px; }*/ +.starred { + background-image: url("star.png"); + repeat: no-repeat; +} +.unstarred { + background-image: url("premium.png"); + repeat: no-repeat; +} + +.tagged { + background-image: url("tag.png"); + repeat: no-repeat; +} + + .border { border: 1px solid #babdb6; diff --git a/view/theme/dispy/tag.png b/view/theme/dispy/tag.png Binary files differnew file mode 100644 index 000000000..aca10707a --- /dev/null +++ b/view/theme/dispy/tag.png diff --git a/view/theme/dispy/wall_item.tpl b/view/theme/dispy/wall_item.tpl index 9c3703f5f..882843a09 100755 --- a/view/theme/dispy/wall_item.tpl +++ b/view/theme/dispy/wall_item.tpl @@ -24,6 +24,7 @@ <div class="wall-item-tools" id="wall-item-tools-$id"> {{ if $star }} <a href="#" id="starred-$id" onclick="dostar($id); return false;" class="star-item icon $isstarred" title="$star.toggle"></a> + <a href="#" id="tagger-$id" onclick="itemTag($id); return false;" class="tag-item icon tagged" title="$star.tagger"></a> {{ endif }} {{ if $vote }} <div class="wall-item-like-buttons" id="wall-item-like-buttons-$id"> diff --git a/view/theme/dispy/wallwall_item.tpl b/view/theme/dispy/wallwall_item.tpl index 95c68220a..57c6600b7 100755 --- a/view/theme/dispy/wallwall_item.tpl +++ b/view/theme/dispy/wallwall_item.tpl @@ -29,6 +29,7 @@ <div class="wall-item-tools" id="wall-item-tools-$id"> {{ if $star }} <a href="#" id="starred-$id" onclick="dostar($id); return false;" class="star-item icon $isstarred" title="$star.toggle"></a> + <a href="#" id="tagger-$id" onclick="itemTag($id); return false;" class="tag-item icon tagged" title="$star.tagger"></a> {{ endif }} {{ if $vote }} <div class="wall-item-like-buttons" id="wall-item-like-buttons-$id"> diff --git a/view/theme/duepuntozero/nav.tpl b/view/theme/duepuntozero/nav.tpl index fa0ecf7b6..4675c3e5c 100755 --- a/view/theme/duepuntozero/nav.tpl +++ b/view/theme/duepuntozero/nav.tpl @@ -48,8 +48,8 @@ <a id="nav-notifications-linkmenu" class="nav-commlink" href="$nav.notifications.0" rel="#nav-notifications-menu" title="$nav.notifications.1">$nav.notifications.1</a> <span id="notify-update" class="nav-ajax-left"></span> <ul id="nav-notifications-menu" class="menu-popup"> - <li id="nav-notifications-mark-all"><a href="#" onclick="notifyMarkAll(); return false;">$nav.notifications.mark.1</a></li> <li id="nav-notifications-see-all"><a href="$nav.notifications.all.0">$nav.notifications.all.1</a></li> + <li id="nav-notifications-mark-all"><a href="#" onclick="notifyMarkAll(); return false;">$nav.notifications.mark.1</a></li> <li class="empty">$emptynotifications</li> </ul> {{ endif }} diff --git a/view/theme/duepuntozero/wallwall_item.tpl b/view/theme/duepuntozero/wallwall_item.tpl index ea9a218b4..4675f1e00 100755 --- a/view/theme/duepuntozero/wallwall_item.tpl +++ b/view/theme/duepuntozero/wallwall_item.tpl @@ -59,6 +59,7 @@ {{ if $star }} <a href="#" id="starred-$id" onclick="dostar($id); return false;" class="star-item icon $isstarred" title="$star.toggle"></a> + <a href="#" id="tagger-$id" onclick="itemTag($id); return false;" class="tag-item icon tagged" title="$star.tagger"></a> {{ endif }} <div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$id" > diff --git a/view/theme/easterbunny/unsupported b/view/theme/easterbunny/unsupported new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/view/theme/easterbunny/unsupported diff --git a/view/theme/ghost/unsupported b/view/theme/ghost/unsupported new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/view/theme/ghost/unsupported diff --git a/view/theme/goldenrod/unsupported b/view/theme/goldenrod/unsupported new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/view/theme/goldenrod/unsupported diff --git a/view/theme/loozah/unsupported b/view/theme/loozah/unsupported new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/view/theme/loozah/unsupported diff --git a/view/theme/loozah/wall_item.tpl b/view/theme/loozah/wall_item.tpl index 727e3d1c2..56c8a82e2 100755 --- a/view/theme/loozah/wall_item.tpl +++ b/view/theme/loozah/wall_item.tpl @@ -49,6 +49,8 @@ {{ if $star }} <a href="#" id="starred-$id" onclick="dostar($id); return false;" class="star-item icon $isstarred" title="$star.toggle"></a> + <a href="#" id="tagger-$id" onclick="itemTag($id); return false;" class="tag-item icon tagged" title="$star.tagger"></a> + {{ endif }} <div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$id" > diff --git a/view/theme/loozah/wallwall_item.tpl b/view/theme/loozah/wallwall_item.tpl index 09de86c7b..0e4c1a6cf 100755 --- a/view/theme/loozah/wallwall_item.tpl +++ b/view/theme/loozah/wallwall_item.tpl @@ -53,6 +53,7 @@ {{ if $star }} <a href="#" id="starred-$id" onclick="dostar($id); return false;" class="star-item icon $isstarred" title="$star.toggle"></a> + <a href="#" id="tagger-$id" onclick="itemTag($id); return false;" class="tag-item icon tagged" title="$star.tagger"></a> {{ endif }} <div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$id" > diff --git a/view/theme/shady/unsupported b/view/theme/shady/unsupported new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/view/theme/shady/unsupported diff --git a/view/theme/vier/colors.less b/view/theme/vier/colors.less index 5314b5284..18d0fc620 100644 --- a/view/theme/vier/colors.less +++ b/view/theme/vier/colors.less @@ -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; diff --git a/view/theme/vier/icons.less b/view/theme/vier/icons.less index f87327703..e314fba1f 100644 --- a/view/theme/vier/icons.less +++ b/view/theme/vier/icons.less @@ -13,6 +13,11 @@ &.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"); } } diff --git a/view/theme/vier/quattro.less b/view/theme/vier/quattro.less index 671577303..9d2608261 100644 --- a/view/theme/vier/quattro.less +++ b/view/theme/vier/quattro.less @@ -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; +} + diff --git a/view/theme/vier/search_item.tpl b/view/theme/vier/search_item.tpl index 9cd3c8e2e..372e0d034 100755 --- a/view/theme/vier/search_item.tpl +++ b/view/theme/vier/search_item.tpl @@ -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">- {{ 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"> diff --git a/view/theme/vier/style.css b/view/theme/vier/style.css index 89dd98146..39f4ffea4 100644 --- a/view/theme/vier/style.css +++ b/view/theme/vier/style.css @@ -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; } + diff --git a/view/theme/vier/wall_item.tpl b/view/theme/vier/wall_item.tpl index 03cbd4c0b..abd2862a1 100644 --- a/view/theme/vier/wall_item.tpl +++ b/view/theme/vier/wall_item.tpl @@ -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">- + <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"> diff --git a/view/theme/vier/wallwall_item.tpl b/view/theme/vier/wallwall_item.tpl index 3357bd8e0..8e452f4f6 100644 --- a/view/theme/vier/wallwall_item.tpl +++ b/view/theme/vier/wallwall_item.tpl @@ -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">- {{ 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> @@ -61,6 +62,7 @@ {{ if $star }} <a href="#" id="star-$id" onclick="dostar($id); return false;" class="$star.classdo" title="$star.do">$star.do</a> <a href="#" id="unstar-$id" onclick="dostar($id); return false;" class="$star.classundo" title="$star.undo">$star.undo</a> + <a href="#" id="tagger-$id" onclick="itemTag($id); return false;" class="$star.classtagger" title="$star.tagger">$star.tagger</a> {{ endif }} {{ if $vote }} diff --git a/view/wallwall_item.tpl b/view/wallwall_item.tpl index 11297647a..61a248135 100755 --- a/view/wallwall_item.tpl +++ b/view/wallwall_item.tpl @@ -55,6 +55,8 @@ {{ if $star }} <a href="#" id="star-$id" onclick="dostar($id); return false;" class="$star.classdo" title="$star.do">$star.do</a> <a href="#" id="unstar-$id" onclick="dostar($id); return false;" class="$star.classundo" title="$star.undo">$star.undo</a> + <a href="#" id="tagger-$id" onclick="itemTag($id); return false;" class="$star.classtagger" title="$star.tagger">$star.tagger</a> + {{ endif }} {{ if $vote }} |