diff options
29 files changed, 492 insertions, 115 deletions
@@ -9,7 +9,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1294' ); +define ( 'FRIENDICA_VERSION', '2.3.1295' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1133 ); @@ -95,8 +95,8 @@ define ( 'PAGE_BLOG', 4 ); * Network and protocol family types */ -define ( 'NETWORK_ZOT', 'zot!'); // Zot! define ( 'NETWORK_DFRN', 'dfrn'); // Friendica, Mistpark, other DFRN implementations +define ( 'NETWORK_ZOT', 'zot!'); // Zot! define ( 'NETWORK_OSTATUS', 'stat'); // status.net, identi.ca, GNU-social, other OStatus implementations define ( 'NETWORK_FEED', 'feed'); // RSS/Atom feeds with no known "post/notify" protocol define ( 'NETWORK_DIASPORA', 'dspr'); // Diaspora @@ -108,6 +108,28 @@ define ( 'NETWORK_XMPP', 'xmpp'); // XMPP define ( 'NETWORK_MYSPACE', 'mysp'); // MySpace define ( 'NETWORK_GPLUS', 'goog'); // Google+ +/* + * These numbers are used in stored permissions + * and existing allocations MUST NEVER BE CHANGED + * OR RE-ASSIGNED! You may only add to them. + */ + +$netgroup_ids = array( + NETWORK_DFRN => (-1), + NETWORK_ZOT => (-2), + NETWORK_OSTATUS => (-3), + NETWORK_FEED => (-4), + NETWORK_DIASPORA => (-5), + NETWORK_MAIL => (-6), + NETWORK_MAIL2 => (-7), + NETWORK_FACEBOOK => (-8), + NETWORK_LINKEDIN => (-9), + NETWORK_XMPP => (-10), + NETWORK_MYSPACE => (-11), + NETWORK_GPLUS => (-12), +); + + /** * Maximum number of "people who like (or don't like) this" that we will list by name */ diff --git a/include/api.php b/include/api.php index 013f4b97a..64772d657 100755 --- a/include/api.php +++ b/include/api.php @@ -3,6 +3,7 @@ require_once("datetime.php"); require_once("conversation.php"); require_once("oauth.php"); + require_once("html2plain.php"); /* * Twitter-Like API * @@ -306,10 +307,10 @@ } $ret = Array( + 'id' => intval($uinfo[0]['cid']), 'self' => intval($uinfo[0]['self']), 'uid' => intval($uinfo[0]['uid']), - 'id' => intval($uinfo[0]['cid']), - 'name' => $uinfo[0]['name'], + 'name' => (($uinfo[0]['name']) ? $uinfo[0]['name'] : $uinfo[0]['nick']), 'screen_name' => (($uinfo[0]['nick']) ? $uinfo[0]['nick'] : $uinfo[0]['name']), 'location' => ($usr) ? $usr[0]['default-location'] : '', 'profile_image_url' => $uinfo[0]['micro'], @@ -347,6 +348,8 @@ } function api_item_get_user(&$a, $item) { + global $usercache; + // The author is our direct contact, in a conversation with us. if(link_compare($item['url'],$item['author-link'])) { return api_get_user($a,$item['cid']); @@ -362,27 +365,40 @@ list($nick, $name) = array_map("trim",explode("(",$item['author-name'])); $name=str_replace(")","",$name); - + + if ($name == '') + $name = $nick; + + if ($nick == '') + $nick = $name; + + // Generating a random ID + if (!array_key_exists($nick, $usercache)) + $usercache[$nick] = mt_rand(2000000, 2100000); + $ret = array( - 'uid' => 0, - 'id' => 0, + 'id' => $usercache[$nick], 'name' => $name, 'screen_name' => $nick, 'location' => '', //$uinfo[0]['default-location'], + 'description' => '', 'profile_image_url' => $item['author-avatar'], 'url' => $item['author-link'], - 'contact_url' => 0, 'protected' => false, # + 'followers_count' => 0, 'friends_count' => 0, 'created_at' => '', + 'favourites_count' => 0, 'utc_offset' => 0, #XXX: fix me 'time_zone' => '', //$uinfo[0]['timezone'], - 'geo_enabled' => false, 'statuses_count' => 0, + 'following' => 1, + 'statusnet_blocking' => false, + 'notifications' => false, + 'uid' => 0, + 'contact_url' => 0, + 'geo_enabled' => false, 'lang' => 'en', #XXX: fix me - 'description' => '', - 'followers_count' => 0, - 'favourites_count' => 0, 'contributors_enabled' => false, 'follow_request_sent' => false, 'profile_background_color' => 'cfe8f6', @@ -393,7 +409,6 @@ 'profile_background_image_url' => '', 'profile_background_tile' => false, 'profile_use_background_image' => false, - 'notifications' => false, 'verified' => true, #XXX: fix me 'followers' => '', #XXX: fix me 'status' => array() @@ -591,16 +606,16 @@ $in_reply_to_screen_name = $lastwall['reply_author']; } $status_info = array( - 'created_at' => api_date($lastwall['created']), - 'id' => $lastwall['contact-id'], - 'text' => strip_tags(bbcode($lastwall['body'])), - 'source' => (($lastwall['app']) ? $lastwall['app'] : 'web'), + 'text' => html2plain(bbcode($lastwall['body']), 0), 'truncated' => false, + 'created_at' => api_date($lastwall['created']), 'in_reply_to_status_id' => $in_reply_to_status_id, + 'source' => (($lastwall['app']) ? $lastwall['app'] : 'web'), + 'id' => $lastwall['contact-id'], 'in_reply_to_user_id' => $in_reply_to_user_id, - 'favorited' => false, 'in_reply_to_screen_name' => $in_reply_to_screen_name, 'geo' => '', + 'favorited' => false, 'coordinates' => $lastwall['coord'], 'place' => $lastwall['location'], 'contributors' => '' @@ -650,7 +665,7 @@ $user_info['status'] = array( 'created_at' => api_date($lastwall['created']), 'id' => $lastwall['contact-id'], - 'text' => strip_tags(bbcode($lastwall['body'])), + 'text' => html2plain(bbcode($lastwall['body']), 0), 'source' => (($lastwall['app']) ? $lastwall['app'] : 'web'), 'truncated' => false, 'in_reply_to_status_id' => $in_reply_to_status_id, @@ -686,10 +701,17 @@ $count = (x($_REQUEST,'count')?$_REQUEST['count']:20); $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0); if ($page<0) $page=0; - $since_id = 0;//$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); + $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); + $max_id = (x($_REQUEST,'max_id')?$_REQUEST['max_id']:0); + //$since_id = 0;//$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); $start = $page*$count; + //$include_entities = (x($_REQUEST,'include_entities')?$_REQUEST['include_entities']:false); + + if ($max_id > 0) + $sql_extra = 'AND `item`.`id` <= '.intval($max_id); + $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`, @@ -722,6 +744,48 @@ api_register_func('api/statuses/home_timeline','api_statuses_home_timeline', true); api_register_func('api/statuses/friends_timeline','api_statuses_home_timeline', true); + /** + * + */ + function api_statuses_show(&$a, $type){ + if (local_user()===false) return false; + + $user_info = api_get_user($a); + + // params + $id = intval($a->argv[3]); + + logger('API: api_statuses_show: '.$id); + + //$include_entities = (x($_REQUEST,'include_entities')?$_REQUEST['include_entities']:false); + + $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, + `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, + `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`, + `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid` + FROM `item`, `contact` + WHERE `item`.`visible` = 1 and `item`.`moderated` = 0 AND `item`.`deleted` = 0 + AND `contact`.`id` = `item`.`contact-id` + AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 + $sql_extra + AND `item`.`id`=%d", + intval($id) + ); + + $ret = api_format_items($r,$user_info); + + $data = array('$status' => $ret[0]); + /*switch($type){ + case "atom": + case "rss": + $data = api_rss_extra($a, $data, $user_info); + }*/ + return api_apply_template("status", $type, $data); + } + api_register_func('api/statuses/show','api_statuses_show', true); + + //api_register_func('api/statuses/mentions','api_statuses_mentions', true); + //api_register_func('api/statuses/replies','api_statuses_mentions', true); function api_statuses_user_timeline(&$a, $type){ @@ -740,7 +804,8 @@ $count = (x($_REQUEST,'count')?$_REQUEST['count']:20); $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0); if ($page<0) $page=0; - $since_id = 0;//$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); + $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); + //$since_id = 0;//$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); $start = $page*$count; @@ -846,33 +911,64 @@ foreach($r as $item) { localize_item($item); $status_user = (($item['cid']==$user_info['id'])?$user_info: api_item_get_user($a,$item)); + + if ($item['parent']!=$item['id']) { + $r = q("select id from item where parent=%s and id<%s order by id desc limit 1", + intval($item['parent']), intval($item['id'])); + if ($r) + $in_reply_to_status_id = $r[0]['id']; + else + $in_reply_to_status_id = $item['parent']; + + $r = q("select `item`.`contact-id`, `contact`.nick, `item`.`author-name` from item, contact + where `contact`.`id` = `item`.`contact-id` and `item`.id=%d", intval($in_reply_to_status_id)); + + $in_reply_to_screen_name = $r[0]['author-name']; + $in_reply_to_user_id = $r[0]['contact-id']; + + } else { + $in_reply_to_screen_name = ''; + $in_reply_to_user_id = 0; + $in_reply_to_status_id = 0; + } + $status = array( + 'text' => trim($item['title']." \n".html2plain(bbcode($item['body']), 0)), + 'truncated' => False, 'created_at'=> api_date($item['created']), - 'published' => api_date($item['created']), - 'updated' => api_date($item['edited']), - 'id' => intval($item['id']), - 'message_id' => $item['uri'], - 'text' => strip_tags(bbcode($item['body'])), - 'statusnet_html' => bbcode($item['body']), + 'in_reply_to_status_id' => $in_reply_to_status_id, 'source' => (($item['app']) ? $item['app'] : 'web'), - 'url' => ($item['plink']!=''?$item['plink']:$item['author-link']), - 'truncated' => False, - 'in_reply_to_status_id' => ($item['parent']!=$item['id']? intval($item['parent']):''), - 'in_reply_to_user_id' => '', - 'favorited' => $item['starred'] ? true : false, - 'in_reply_to_screen_name' => '', + 'id' => intval($item['id']), + 'in_reply_to_user_id' => $in_reply_to_user_id, + 'in_reply_to_screen_name' => $in_reply_to_screen_name, 'geo' => '', - 'coordinates' => $item['coord'], - 'place' => $item['location'], - 'contributors' => '', - 'annotations' => '', - 'entities' => '', + 'favorited' => $item['starred'] ? true : false, 'user' => $status_user , - 'objecttype' => (($item['object-type']) ? $item['object-type'] : ACTIVITY_OBJ_NOTE), - 'verb' => (($item['verb']) ? $item['verb'] : ACTIVITY_POST), - 'self' => $a->get_baseurl()."/api/statuses/show/".$item['id'].".".$type, - 'edit' => $a->get_baseurl()."/api/statuses/show/".$item['id'].".".$type, + 'statusnet_html' => bbcode($item['body']), + 'statusnet_conversation_id' => 0, ); + + // Seesmic doesn't like the following content + if ($_SERVER['HTTP_USER_AGENT'] != 'Seesmic') { + $status2 = array( + 'updated' => api_date($item['edited']), + 'published' => api_date($item['created']), + 'message_id' => $item['uri'], + 'url' => ($item['plink']!=''?$item['plink']:$item['author-link']), + 'coordinates' => $item['coord'], + 'place' => $item['location'], + 'contributors' => '', + 'annotations' => '', + 'entities' => '', + 'objecttype' => (($item['object-type']) ? $item['object-type'] : ACTIVITY_OBJ_NOTE), + 'verb' => (($item['verb']) ? $item['verb'] : ACTIVITY_POST), + 'self' => $a->get_baseurl()."/api/statuses/show/".$item['id'].".".$type, + 'edit' => $a->get_baseurl()."/api/statuses/show/".$item['id'].".".$type, + ); + + $status = array_merge($status, $status2); + } + $ret[]=$status; }; return $ret; @@ -882,17 +978,31 @@ function api_account_rate_limit_status(&$a,$type) { $hash = array( + 'reset_time_in_seconds' => strtotime('now + 1 hour'), 'remaining_hits' => (string) 150, 'hourly_limit' => (string) 150, 'reset_time' => datetime_convert('UTC','UTC','now + 1 hour',ATOM_TIME), - 'reset_time_in_seconds' => strtotime('now + 1 hour') ); + if ($type == "xml") + $hash['resettime_in_seconds'] = $hash['reset_time_in_seconds']; return api_apply_template('ratelimit', $type, array('$hash' => $hash)); } api_register_func('api/account/rate_limit_status','api_account_rate_limit_status',true); + function api_help_test(&$a,$type) { + + if ($type == 'xml') + $ok = "true"; + else + $ok = "ok"; + + return api_apply_template('test', $type, array('$ok' => $ok)); + + } + api_register_func('api/help/test','api_help_test',true); + /** * https://dev.twitter.com/docs/api/1/get/statuses/friends * This function is deprecated by Twitter @@ -1075,7 +1185,7 @@ 'recipient_screen_name'=> $recipient['screen_name'], 'recipient'=> $recipient, - 'text'=> $item['title']."\n".strip_tags(bbcode($item['body'])) , + 'text'=> $item['title']."\n".html2plain(bbcode($item['body']), 0) , ); @@ -1144,7 +1254,7 @@ 'recipient_screen_name'=> $recipient['screen_name'], 'recipient'=> $recipient, - 'text'=> $item['title']."\n".strip_tags(bbcode($item['body'])) , + 'text'=> $item['title']."\n".html2plain(bbcode($item['body']), 0) , ); @@ -1197,4 +1307,36 @@ api_register_func('api/oauth/request_token', 'api_oauth_request_token', false); api_register_func('api/oauth/access_token', 'api_oauth_access_token', false); - +/* +Not implemented by now: +statuses/public_timeline +statuses/mentions +statuses/replies +statuses/retweets_of_me +statuses/destroy +statuses/retweet +friendships/create +friendships/destroy +friendships/exists +friendships/show +account/update_location +account/update_profile_background_image +account/update_profile_image +favorites +favorites/create +favorites/destroy +blocks/create +blocks/destroy +oauth/authorize + +Not implemented in status.net: +statuses/retweeted_to_me +statuses/retweeted_by_me +direct_messages/destroy +account/end_session +account/update_delivery_device +notifications/follow +notifications/leave +blocks/exists +blocks/blocking +*/ diff --git a/include/bbcode.php b/include/bbcode.php index d69cb263f..9befbd0f7 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -189,8 +189,29 @@ function bbcode($Text,$preserve_nl = false) { // Check for [code] text $Text = preg_replace("/\[code\](.*?)\[\/code\]/ism","$CodeLayout", $Text); + // Declare the format for [spoiler] layout + $SpoilerLayout = '<blockquote class="spoiler">$1</blockquote>'; + + // Check for [spoiler] text + // handle nested quotes + $endlessloop = 0; + while ((strpos($Text, "[/spoiler]") !== false) and (strpos($Text, "[spoiler]") !== false) and (++$endlessloop < 20)) + $Text = preg_replace("/\[spoiler\](.*?)\[\/spoiler\]/ism","$SpoilerLayout", $Text); + + // Check for [spoiler=Author] text + + $t_wrote = t('$1 wrote:'); + + // handle nested quotes + $endlessloop = 0; + while ((strpos($Text, "[/spoiler]")!== false) and (strpos($Text, "[spoiler=") !== false) and (++$endlessloop < 20)) + $Text = preg_replace("/\[spoiler=[\"\']*(.*?)[\"\']*\](.*?)\[\/spoiler\]/ism", + "<br /><strong class=".'"spoiler"'.">" . $t_wrote . "</strong><blockquote class=".'"spoiler"'.">$2</blockquote>", + $Text); + // Declare the format for [quote] layout $QuoteLayout = '<blockquote>$1</blockquote>'; + // Check for [quote] text // handle nested quotes $endlessloop = 0; @@ -205,7 +226,7 @@ function bbcode($Text,$preserve_nl = false) { $endlessloop = 0; 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>", + "<br /><strong class=".'"author"'.">" . $t_wrote . "</strong><blockquote class=".'"author"'.">$2</blockquote>", $Text); // [img=widthxheight]image source[/img] diff --git a/include/dba.php b/include/dba.php index 5beea7a3a..138e82b58 100755 --- a/include/dba.php +++ b/include/dba.php @@ -207,7 +207,10 @@ function q($sql) { unset($args[0]); if($db && $db->connected) { - $ret = $db->q(vsprintf($sql,$args)); + $stmt = vsprintf($sql,$args); + if($stmt === false) + logger('dba: vsprintf error: ' . print_r(debug_bracktrace(),true)); + $ret = $db->q($stmt); return $ret; } diff --git a/include/diaspora.php b/include/diaspora.php index 84d28a7ec..104ccadf2 100755 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -688,9 +688,9 @@ function diaspora_post($importer,$xml) { // don't link tags that are already embedded in links - if(preg_match('/\[(.*?)' . preg_quote($tag) . '(.*?)\]/',$body)) + if(preg_match('/\[(.*?)' . preg_quote($tag,'/') . '(.*?)\]/',$body)) continue; - if(preg_match('/\[(.*?)\]\((.*?)' . preg_quote($tag) . '(.*?)\)/',$body)) + if(preg_match('/\[(.*?)\]\((.*?)' . preg_quote($tag,'/') . '(.*?)\)/',$body)) continue; $basetag = str_replace('_',' ',substr($tag,1)); @@ -853,9 +853,9 @@ function diaspora_reshare($importer,$xml) { // don't link tags that are already embedded in links - if(preg_match('/\[(.*?)' . preg_quote($tag) . '(.*?)\]/',$body)) + if(preg_match('/\[(.*?)' . preg_quote($tag,'/') . '(.*?)\]/',$body)) continue; - if(preg_match('/\[(.*?)\]\((.*?)' . preg_quote($tag) . '(.*?)\)/',$body)) + if(preg_match('/\[(.*?)\]\((.*?)' . preg_quote($tag,'/') . '(.*?)\)/',$body)) continue; @@ -1094,9 +1094,9 @@ function diaspora_comment($importer,$xml,$msg) { // don't link tags that are already embedded in links - if(preg_match('/\[(.*?)' . preg_quote($tag) . '(.*?)\]/',$body)) + if(preg_match('/\[(.*?)' . preg_quote($tag,'/') . '(.*?)\]/',$body)) continue; - if(preg_match('/\[(.*?)\]\((.*?)' . preg_quote($tag) . '(.*?)\)/',$body)) + if(preg_match('/\[(.*?)\]\((.*?)' . preg_quote($tag,'/') . '(.*?)\)/',$body)) continue; diff --git a/include/email.php b/include/email.php index 8ea8145fb..b43ae0dc1 100755 --- a/include/email.php +++ b/include/email.php @@ -74,7 +74,7 @@ function email_msg_headers($mbox,$uid) { } -function email_get_msg($mbox,$uid) { +function email_get_msg($mbox,$uid, $reply) { $ret = array(); $struc = (($mbox && $uid) ? @imap_fetchstructure($mbox,$uid,FT_UID) : null); @@ -114,7 +114,7 @@ function email_get_msg($mbox,$uid) { $ret['body'] = removegpg($ret['body']); $msg = removesig($ret['body']); $ret['body'] = $msg['body']; - $ret['body'] = convertquote($ret['body'], false); + $ret['body'] = convertquote($ret['body'], $reply); if (trim($html) != '') $ret['body'] = removelinebreak($ret['body']); @@ -250,7 +250,7 @@ function email_header_encode($in_str, $charset) { // remove trailing spacer and // add start and end delimiters - $spacer = preg_quote($spacer); + $spacer = preg_quote($spacer,'/'); $out_str = preg_replace("/" . $spacer . "$/", "", $out_str); $out_str = $start . $out_str . $end; } diff --git a/include/html2plain.php b/include/html2plain.php index 2a4cf6639..fe0e3326e 100644 --- a/include/html2plain.php +++ b/include/html2plain.php @@ -1,9 +1,15 @@ <?php require_once "html2bbcode.php"; -function breaklines($line, $level) +function breaklines($line, $level, $wraplength = 75) { - $wraplen = 75-$level; + + if ($wraplength == 0) + $wraplength = 2000000; + + // return($line); + + $wraplen = $wraplength-$level; $newlines = array(); @@ -37,7 +43,7 @@ function breaklines($line, $level) return(implode($newlines, "\n")); } -function quotelevel($message) +function quotelevel($message, $wraplength = 75) { $lines = explode("\n", $message); @@ -65,12 +71,31 @@ function quotelevel($message) } if (!$startquote or ($line != '')) - $newlines[] = breaklines($line, $currlevel); + $newlines[] = breaklines($line, $currlevel, $wraplength); } return(implode($newlines, "\n")); } -function html2plain($html) +function collecturls($message) { + $pattern = '/<a.*?href="(.*?)".*?>(.*?)<\/a>/is'; + preg_match_all($pattern, $message, $result, PREG_SET_ORDER); + + $urls = array(); + foreach ($result as $treffer) { + // A list of some links that should be ignored + $list = array("/user/", "/tag/", "/profile/", "/search?search=", "mailto:", "/u/", "/node/", + "//facebook.com/profile.php?id=", "//plus.google.com/"); + foreach ($list as $listitem) + if (strpos($treffer[1], $listitem) !== false) + $ignore = true; + + if (!$ignore) + $urls[$treffer[1]] = $treffer[1]; + } + return($urls); +} + +function html2plain($html, $wraplength = 75, $compact = false) { global $lang; @@ -93,22 +118,16 @@ function html2plain($html) $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); + // Collecting all links + $urls = collecturls($message); - 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;'), '*', '*'); @@ -117,8 +136,12 @@ function html2plain($html) node2bbcode($doc, 'b', array(), '*', '*'); node2bbcode($doc, 'i', array(), '/', '/'); node2bbcode($doc, 'u', array(), '_', '_'); + */ - node2bbcode($doc, 'blockquote', array(), '[quote]', "[/quote]\n"); + if ($compact) + node2bbcode($doc, 'blockquote', array(), "»", "«"); + else + node2bbcode($doc, 'blockquote', array(), '[quote]', "[/quote]\n"); node2bbcode($doc, 'br', array(), "\n", ''); @@ -143,16 +166,25 @@ function html2plain($html) 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]'); + // Problem: there is no reliable way to detect if it is a link to a tag or profile + //node2bbcode($doc, 'a', array('href'=>'/(.+)/'), ' $1 ', '', true); + node2bbcode($doc, 'a', array('href'=>'/(.+)/', 'rel'=>'oembed'), ' $1 ', '', true); + //node2bbcode($doc, 'img', array('alt'=>'/(.+)/'), '$1', ''); + //node2bbcode($doc, 'img', array('title'=>'/(.+)/'), '$1', ''); + //node2bbcode($doc, 'img', array(), '', ''); + if (!$compact) + node2bbcode($doc, 'img', array('src'=>'/(.+)/'), '[img]$1', '[/img]'); + else + node2bbcode($doc, 'img', array('src'=>'/(.+)/'), '', ''); + + node2bbcode($doc, 'iframe', array('src'=>'/(.+)/'), ' $1 ', '', true); $message = $doc->saveHTML(); - $message = str_replace("[img]", "", $message); - $message = str_replace("[/img]", "", $message); + if (!$compact) { + $message = str_replace("[img]", "", $message); + $message = str_replace("[/img]", "", $message); + } // was ersetze ich da? // Irgendein stoerrisches UTF-Zeug @@ -168,12 +200,20 @@ function html2plain($html) $message = html_entity_decode($message, ENT_QUOTES, 'UTF-8'); + if (!$compact) { + $counter = 1; + foreach ($urls as $id=>$url) + if (strpos($message, $url) == false) + $message .= "\n".$url." "; + //$message .= "\n[".($counter++)."] ".$url; + } + do { $oldmessage = $message; $message = str_replace("\n\n\n", "\n\n", $message); } while ($oldmessage != $message); - $message = quotelevel(trim($message)); + $message = quotelevel(trim($message), $wraplength); return(trim($message)); } diff --git a/include/items.php b/include/items.php index 2eecadad1..9f7eb84d9 100755 --- a/include/items.php +++ b/include/items.php @@ -1090,12 +1090,23 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) { $postvars = array(); $sent_dfrn_id = hex2bin((string) $res->dfrn_id); $challenge = hex2bin((string) $res->challenge); + $perm = (($res->perm) ? $res->perm : null); $dfrn_version = (float) (($res->dfrn_version) ? $res->dfrn_version : 2.0); $rino_allowed = ((intval($res->rino) === 1) ? 1 : 0); $page = (($owner['page-flags'] == PAGE_COMMUNITY) ? 1 : 0); $final_dfrn_id = ''; + if($perm) { + if((($perm == 'rw') && (! intval($contact['writable']))) + || (($perm == 'r') && (intval($contact['writable'])))) { + q("update contact set writable = %d where id = %d limit 1", + intval(($perm == 'rw') ? 1 : 0), + intval($contact['id']) + ); + $contact['writable'] = (string) 1 - intval($contact['writable']); + } + } if(($contact['duplex'] && strlen($contact['pubkey'])) || ($owner['page-flags'] == PAGE_COMMUNITY && strlen($contact['pubkey'])) diff --git a/include/msgclean.php b/include/msgclean.php index 284ad1ce4..eabb47788 100644 --- a/include/msgclean.php +++ b/include/msgclean.php @@ -13,7 +13,7 @@ function savereplace($pattern, $replace, $text) function unifyattributionline($message) { - $quotestr = array('quote', 'collapsed'); + $quotestr = array('quote', 'spoiler'); foreach ($quotestr as $quote) { $message = savereplace('/----- Original Message -----\s.*?From: "([^<"].*?)" <(.*?)>\s.*?To: (.*?)\s*?Cc: (.*?)\s*?Sent: (.*?)\s.*?Subject: ([^\n].*)\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); diff --git a/include/poller.php b/include/poller.php index 8262c1d60..90a97867c 100755 --- a/include/poller.php +++ b/include/poller.php @@ -504,7 +504,12 @@ function poller_run($argv, $argc){ //$datarray['title'] = notags(trim($meta->subject)); $datarray['created'] = datetime_convert('UTC','UTC',$meta->date); - $r = email_get_msg($mbox,$msg_uid); + // Is it reply? + $reply = ((substr(strtolower($datarray['title']), 0, 3) == "re:") or + (substr(strtolower($datarray['title']), 0, 3) == "re-") or + (raw_refs != "")); + + $r = email_get_msg($mbox,$msg_uid, $reply); if(! $r) { logger("Mail: can't fetch msg ".$msg_uid); continue; diff --git a/include/quoteconvert.php b/include/quoteconvert.php index 3aee93234..2a6d28370 100644 --- a/include/quoteconvert.php +++ b/include/quoteconvert.php @@ -124,7 +124,7 @@ function removetofu($message) } if ($quotestart != 0) { - $message = trim(substr($message, 0, $quotestart))."\n[collapsed]\n".substr($message, $quotestart+7, -8).'[/collapsed]'; + $message = trim(substr($message, 0, $quotestart))."\n[spoiler]".substr($message, $quotestart+7, -8).'[/spoiler]'; } return($message); diff --git a/include/text.php b/include/text.php index 5aaf04729..6d557ed84 100644 --- a/include/text.php +++ b/include/text.php @@ -940,6 +940,36 @@ function prepare_body($item,$attach = false) { $s .= '<div class="filesavetags"><span>' . t('Filed under:') . ' </span>' . $x . '</div>'; } + // Look for spoiler + $spoilersearch = '<blockquote class="spoiler">'; + + // Remove line breaks before the spoiler + while ((strpos($s, "\n".$spoilersearch) !== false)) + $s = str_replace("\n".$spoilersearch, $spoilersearch, $s); + while ((strpos($s, "<br />".$spoilersearch) !== false)) + $s = str_replace("<br />".$spoilersearch, $spoilersearch, $s); + + while ((strpos($s, $spoilersearch) !== false)) { + + $pos = strpos($s, $spoilersearch); + $rnd = random_string(8); + $spoilerreplace = '<br /> <span id="spoiler-wrap-'.$rnd.'" style="white-space:nowrap;" class="fakelink" onclick="openClose(\'spoiler-'.$rnd.'\');">'.sprintf(t('Click to open/close')).'</span>'. + '<blockquote class="spoiler" id="spoiler-'.$rnd.'" style="display: none;">'; + $s = substr($s, 0, $pos).$spoilerreplace.substr($s, $pos+strlen($spoilersearch)); + } + + // Look for quote with author + $authorsearch = '<blockquote class="author">'; + + while ((strpos($s, $authorsearch) !== false)) { + + $pos = strpos($s, $authorsearch); + $rnd = random_string(8); + $authorreplace = '<br /> <span id="author-wrap-'.$rnd.'" style="white-space:nowrap;" class="fakelink" onclick="openClose(\'author-'.$rnd.'\');">'.sprintf(t('Click to open/close')).'</span>'. + '<blockquote class="author" id="author-'.$rnd.'" style="display: block;">'; + $s = substr($s, 0, $pos).$authorreplace.substr($s, $pos+strlen($authorsearch)); + } + $prep_arr = array('item' => $item, 'html' => $s); call_hooks('prepare_body_final', $prep_arr); diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index 71860ac3b..8e4ce0671 100755 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -158,6 +158,7 @@ function dfrn_notify_post(&$a) { ); } + logger('dfrn_notify: received notify from ' . $importer['name'] . ' for ' . $importer['username']); logger('dfrn_notify: data: ' . $data, LOGGER_DATA); @@ -174,6 +175,13 @@ function dfrn_notify_post(&$a) { } + + // If we are setup as a soapbox we aren't accepting input from this person + + if($importer['page-flags'] == PAGE_SOAPBOX) + xml_status(0); + + if(strlen($key)) { $rawkey = hex2bin(trim($key)); logger('rino: md5 raw key: ' . md5($rawkey)); @@ -261,7 +269,7 @@ function dfrn_notify_content(&$a) { break; // NOTREACHED } - $r = q("SELECT `contact`.*, `user`.`nickname` FROM `contact` LEFT JOIN `user` ON `user`.`uid` = `contact`.`uid` + $r = q("SELECT `contact`.*, `user`.`nickname`, `user`.`page-flags` FROM `contact` LEFT JOIN `user` ON `user`.`uid` = `contact`.`uid` WHERE `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `user`.`nickname` = '%s' AND `user`.`account_expired` = 0 $sql_extra LIMIT 1", dbesc($a->argv[1]) @@ -299,6 +307,12 @@ function dfrn_notify_content(&$a) { if(! $rino_enable) $rino = 0; + if((($r[0]['rel']) && ($r[0]['rel'] != CONTACT_IS_SHARING)) || ($r[0]['page-flags'] == PAGE_COMMUNITY)) { + $perm = 'rw'; + } + else { + $perm = 'r'; + } header("Content-type: text/xml"); @@ -306,7 +320,8 @@ function dfrn_notify_content(&$a) { . '<dfrn_notify>' . "\r\n" . "\t" . '<status>' . $status . '</status>' . "\r\n" . "\t" . '<dfrn_version>' . DFRN_PROTOCOL_VERSION . '</dfrn_version>' . "\r\n" - . "\t" . '<rino>' . $rino . '</rino>' . "\r\n" + . "\t" . '<rino>' . $rino . '</rino>' . "\r\n" + . "\t" . '<perm>' . $perm . '</perm>' . "\r\n" . "\t" . '<dfrn_id>' . $encrypted_id . '</dfrn_id>' . "\r\n" . "\t" . '<challenge>' . $challenge . '</challenge>' . "\r\n" . '</dfrn_notify>' . "\r\n" ; diff --git a/mod/ping.php b/mod/ping.php index 1562254b1..e911aaf1f 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -22,6 +22,7 @@ function ping_init(&$a) { and seen = 0 order by date desc limit 0, 50", intval(local_user()) ); + $sysnotify = $t[0]['total']; } else { $z1 = q("select * from notify where uid = %d @@ -35,6 +36,7 @@ function ping_init(&$a) { intval(50 - intval($t[0]['total'])) ); $z = array_merge($z1,$z2); + $sysnotify = 0; // we will update this in a moment } @@ -147,13 +149,12 @@ function ping_init(&$a) { $tot = $mail+$intro+$register+count($comments)+count($likes)+count($dislikes)+count($friends)+count($posts)+count($tags); require_once('include/bbcode.php'); - $sysnotify = 0; if($firehose) { echo ' <notif count="'.$tot.'">'; } else { - if(count($z)) { + if(count($z) && (! $sysnotify)) { foreach($z as $zz) { if($zz['seen'] == 0) $sysnotify ++; diff --git a/mod/settings.php b/mod/settings.php index 99bf8842d..db7330fb5 100755 --- a/mod/settings.php +++ b/mod/settings.php @@ -618,7 +618,7 @@ function settings_content(&$a) { '$mail_disabled' => (($mail_disabled) ? t('Email access is disabled on this site.') : ''), '$mail_server' => array('mail_server', t('IMAP server name:'), $mail_server, ''), '$mail_port' => array('mail_port', t('IMAP port:'), $mail_port, ''), - '$mail_ssl' => array('mail_ssl', t('Security:'), strtoupper($mail_ssl), '', array( ''=>t('None'), 'TLS'=>'TLS', 'SSL'=>'SSL')), + '$mail_ssl' => array('mail_ssl', t('Security:'), strtoupper($mail_ssl), '', array( 'notls'=>t('None'), 'TLS'=>'TLS', 'SSL'=>'SSL')), '$mail_user' => array('mail_user', t('Email login name:'), $mail_user, ''), '$mail_pass' => array('mail_pass', t('Email password:'), '', ''), '$mail_replyto' => array('mail_replyto', t('Reply-to address:'), '', 'Optional'), diff --git a/view/api_ratelimit_xml.tpl b/view/api_ratelimit_xml.tpl index 42439f8b5..36ec1993d 100755 --- a/view/api_ratelimit_xml.tpl +++ b/view/api_ratelimit_xml.tpl @@ -1,5 +1,6 @@ <hash> - <remaining-hits type="integer">$hash.remaining_hits</remaining-hits> - <hourly-limit type="integer">$hash.hourly_limit</hourly-limit> - <reset-time type="datetime">$hash.reset_time</reset-time> -</hash>
\ No newline at end of file + <remaining-hits type="integer">$hash.remaining_hits</remaining-hits> + <hourly-limit type="integer">$hash.hourly_limit</hourly-limit> + <reset-time type="datetime">$hash.reset_time</reset-time> + <reset_time_in_seconds type="integer">$hash.resettime_in_seconds</reset_time_in_seconds> +</hash> diff --git a/view/api_user_xml.tpl b/view/api_user_xml.tpl index 78cc1f530..f1e122f3e 100755 --- a/view/api_user_xml.tpl +++ b/view/api_user_xml.tpl @@ -43,4 +43,4 @@ <place>$user.status.place</place> <contributors>$user.status.contributors</contributors> {{ endif }}</status> -</user>
\ No newline at end of file +</user> diff --git a/view/theme/diabook-blue/communityhome.tpl b/view/theme/diabook-blue/communityhome.tpl index 1e3da2199..fa8197dd4 100755 --- a/view/theme/diabook-blue/communityhome.tpl +++ b/view/theme/diabook-blue/communityhome.tpl @@ -6,7 +6,7 @@ <div id="close_helpers"> {{ if $lastusers_title }} -<h3 style="margin-top:0px;">Help or @NewHere ?<a id="close_helpers_icon" onClick="close_helpers()" class="icon close_box"></a></h3> +<h3 style="margin-top:0px;">Help or @NewHere ?<a id="close_helpers_icon" onClick="close_helpers()" class="icon close_box" title="close"></a></h3> <a href="https://helpers.pyxis.uberspace.de/profile/helpers" style="margin-left: 10px; " title="Friendica Support" target="blank">Friendica Support</a><br> <a href="https://letstalk.pyxis.uberspace.de/profile/letstalk" style="margin-left: 10px; " title="Let's talk" target="blank">Let's talk</a><br> <a href="http://newzot.hydra.uberspace.de/profile/newzot" title="Local Friendica" style="margin-left: 10px; " target="blank">Local Friendica</a> @@ -16,7 +16,7 @@ <div id="close_services"> {{ if $lastusers_title }} -<h3>Connectable Services<a id="close_services_icon" onClick="close_services()" class="icon close_box"></a></h3> +<h3>Connectable Services<a id="close_services_icon" onClick="close_services()" class="icon close_box" title="close"></a></h3> <div id="right_service_icons" style="margin-left: 11px; margin-top: 5px;"> <a href="$url/facebook"><img alt="Facebook" src="view/theme/diabook-blue/icons/facebook.png" title="Facebook"></a> <a href="$url/settings/connectors"><img alt="StatusNet" src="view/theme/diabook-blue/icons/StatusNet.png?" title="StatusNet"></a> @@ -32,7 +32,7 @@ <div id="close_friends"> {{ if $nv }} -<h3>Find Friends<a id="close_friends_icon" onClick="close_friends()" class="icon close_box"></a></h3> +<h3>Find Friends<a id="close_friends_icon" onClick="close_friends()" class="icon close_box" title="close"></a></h3> <a class="$nv.directory.2" href="$nv.directory.0" style="margin-left: 10px; " title="$nv.directory.3" >$nv.directory.1</a><br> <a class="$nv.match.2" href="$nv.match.0" style="margin-left: 10px; " title="$nv.match.3" >$nv.match.1</a><br> <a class="$nv.suggest.2" href="$nv.suggest.0" style="margin-left: 10px; " title="$nv.suggest.3" >$nv.suggest.1</a> @@ -42,14 +42,14 @@ <div id="close_postit"> {{ if $lastusers_title }} -<h3>PostIt to Friendica<a id="close_postit_icon" onClick="close_postit()" class="icon close_box"></a></h3> +<h3>PostIt to Friendica<a id="close_postit_icon" onClick="close_postit()" class="icon close_box" title="close"></a></h3> <div style="padding-left: 8px;"><span ><a href="$fostitJS" title="PostIt">Post to Friendica</a> from anywhere by bookmarking the Link.</span></div> {{ endif }} </div> <div id="close_lastusers"> {{ if $lastusers_title }} -<h3>$lastusers_title<a id="close_lastusers_icon" onClick="close_lastusers()" class="icon close_box"></a></h3> +<h3>$lastusers_title<a id="close_lastusers_icon" onClick="close_lastusers()" class="icon close_box" title="close"></a></h3> <div id='lastusers-wrapper' class='items-wrapper'> {{ for $lastusers_items as $i }} $i @@ -70,7 +70,7 @@ <div id="close_lastphotos"> {{ if $photos_title }} -<h3>$photos_title<a id="close_photos_icon" onClick="close_lastphotos()" class="icon close_box"></a></h3> +<h3>$photos_title<a id="close_photos_icon" onClick="close_lastphotos()" class="icon close_box" title="close"></a></h3> <div id='ra-photos-wrapper' class='items-wrapper'> {{ for $photos_items as $i }} $i @@ -81,7 +81,7 @@ <div id="close_lastlikes"> {{ if $like_title }} -<h3>$like_title<a id="close_lastlikes_icon" onClick="close_lastlikes()" class="icon close_box"></a></h3> +<h3>$like_title<a id="close_lastlikes_icon" onClick="close_lastlikes()" class="icon close_box" title="close"></a></h3> <ul id='likes'> {{ for $like_items as $i }} <li id='ra-photos-wrapper'>$i</li> diff --git a/view/theme/diabook-blue/style-network.css b/view/theme/diabook-blue/style-network.css index ebf4da695..fc4e4c60c 100644 --- a/view/theme/diabook-blue/style-network.css +++ b/view/theme/diabook-blue/style-network.css @@ -1197,6 +1197,18 @@ right_aside .icon {width: 10px; height: 10px;} background-image: url("../../../view/theme/diabook-blue/icons/close_box.png"); float: right; cursor: pointer; + opacity: 0.1; + } +.close_box:hover { + background-image: url("../../../view/theme/diabook-blue/icons/close_box.png"); + float: right; + cursor: pointer; + opacity: 1; +-webkit-transition: all 0.2s ease-in-out; +-moz-transition: all 0.2s ease-in-out; +-o-transition: all 0.2s ease-in-out; +-ms-transition: all 0.2s ease-in-out; +transition: all 0.2s ease-in-out; } /* wall item */ @@ -1279,7 +1291,7 @@ right_aside .icon {width: 10px; height: 10px;} } .wall-item-container .wall-item-content img { - max-width: 400px; + max-width: 400px; } .wall-item-container .wall-item-links, .wall-item-container .wall-item-actions { display: table-cell; diff --git a/view/theme/diabook-blue/style-profile.css b/view/theme/diabook-blue/style-profile.css index db172dcda..b3a578680 100644 --- a/view/theme/diabook-blue/style-profile.css +++ b/view/theme/diabook-blue/style-profile.css @@ -1196,6 +1196,18 @@ right_aside .icon {width: 10px; height: 10px;} background-image: url("../../../view/theme/diabook-blue/icons/close_box.png"); float: right; cursor: pointer; + opacity: 0.1; + } +.close_box:hover { + background-image: url("../../../view/theme/diabook-blue/icons/close_box.png"); + float: right; + cursor: pointer; + opacity: 1; +-webkit-transition: all 0.2s ease-in-out; +-moz-transition: all 0.2s ease-in-out; +-o-transition: all 0.2s ease-in-out; +-ms-transition: all 0.2s ease-in-out; +transition: all 0.2s ease-in-out; } /* wall item */ .tread-wrapper { diff --git a/view/theme/diabook-blue/theme.php b/view/theme/diabook-blue/theme.php index 3e35144de..de3042dbf 100755 --- a/view/theme/diabook-blue/theme.php +++ b/view/theme/diabook-blue/theme.php @@ -150,7 +150,7 @@ function diabook_blue_community_info(){ if(local_user()) { $page = '<div id="page-sidebar-right_aside" class="widget"> <div class="title tool"> - <h3>'.t("Community Pages").'<a id="close_pages_icon" onClick="close_pages()" class="icon close_box"></a></h3></div> + <h3>'.t("Community Pages").'<a id="close_pages_icon" onClick="close_pages()" class="icon close_box" title="close"></a></h3></div> <div id="sidebar-page-list"><ul>'; $pagelist = array(); @@ -212,7 +212,7 @@ if ($a->argv[0] === "network" && local_user()){ $ps['usermenu']['events'] = Array('events/', t('Events'), "", t('Your events')); $ps['usermenu']['notes'] = Array('notes/', t('Personal notes'), "", t('Your personal photos')); $ps['usermenu']['community'] = Array('community/', t('Community'), "", ""); - $ps['usermenu']['pgroups'] = Array('http://dir.friendika.com/directory/forum', t('Public Groups'), "", ""); + $ps['usermenu']['pgroups'] = Array('http://dir.friendika.com/directory/forum', t('Community Pages'), "", ""); $tpl = get_markup_template('profile_side.tpl'); @@ -237,7 +237,7 @@ if ($a->argv[0] === "network" && local_user()){ //right_aside at profile pages -if ($a->argv[0] === "profile"){ +if ($a->argv[0].$a->argv[1] === "profile".$a->user['nickname']){ if($ccCookie != "8") { // COMMUNITY diabook_blue_community_info(); diff --git a/view/theme/diabook/communityhome.tpl b/view/theme/diabook/communityhome.tpl index a14705ed7..3e840abc4 100755 --- a/view/theme/diabook/communityhome.tpl +++ b/view/theme/diabook/communityhome.tpl @@ -30,13 +30,14 @@ {{ endif }} </div> -<div id="close_friends"> +<div id="close_friends" style="margin-bottom:53px;"> {{ if $nv }} <h3>Find Friends<a id="close_friends_icon" onClick="close_friends()" class="icon close_box" title="close"></a></h3> <a class="$nv.directory.2" href="$nv.directory.0" style="margin-left: 10px; " title="$nv.directory.3" >$nv.directory.1</a><br> <a class="$nv.match.2" href="$nv.match.0" style="margin-left: 10px; " title="$nv.match.3" >$nv.match.1</a><br> -<a class="$nv.suggest.2" href="$nv.suggest.0" style="margin-left: 10px; " title="$nv.suggest.3" >$nv.suggest.1</a> -<a class="$nv.invite.2" href="$nv.invite.0" style="margin-left: 10px; " title="$nav.invite.3" >$nv.invite.1</a> +<a class="$nv.suggest.2" href="$nv.suggest.0" style="margin-left: 10px; " title="$nv.suggest.3" >$nv.suggest.1</a><br> +<a class="$nv.invite.2" href="$nv.invite.0" style="margin-left: 10px; " title="$nav.invite.3" >$nv.invite.1</a> +$nv.search {{ endif }} </div> diff --git a/view/theme/diabook/icons/srch_bg.gif b/view/theme/diabook/icons/srch_bg.gif Binary files differnew file mode 100644 index 000000000..6a523ba8f --- /dev/null +++ b/view/theme/diabook/icons/srch_bg.gif diff --git a/view/theme/diabook/icons/srch_l.gif b/view/theme/diabook/icons/srch_l.gif Binary files differnew file mode 100644 index 000000000..6d95bf35d --- /dev/null +++ b/view/theme/diabook/icons/srch_l.gif diff --git a/view/theme/diabook/icons/srch_r.gif b/view/theme/diabook/icons/srch_r.gif Binary files differnew file mode 100644 index 000000000..89833a316 --- /dev/null +++ b/view/theme/diabook/icons/srch_r.gif diff --git a/view/theme/diabook/icons/srch_r_f2.gif b/view/theme/diabook/icons/srch_r_f2.gif Binary files differnew file mode 100644 index 000000000..6df457bed --- /dev/null +++ b/view/theme/diabook/icons/srch_r_f2.gif diff --git a/view/theme/diabook/style-network.css b/view/theme/diabook/style-network.css index 3882e37bd..74ab3c233 100644 --- a/view/theme/diabook/style-network.css +++ b/view/theme/diabook/style-network.css @@ -1095,6 +1095,32 @@ aside #side-peoplefind-url { background: url("../../../view/theme/diabook/icons/selected.png") no-repeat left center; } /* widget: search */ +span.sbox_l { + background: white url('../../../view/theme/diabook/icons/srch_l.gif') no-repeat top left; + float: left; + width: 19px; height: 19px; + margin-left: 10px; + margin-top: 5px; + +} + +span.sbox_r { + background: white url('../../../view/theme/diabook/icons/srch_r.gif') no-repeat top left; + float: left; + width: 19px; height: 19px; + margin-top: 5px; +} + +span.sbox input { + background: white url('../../../view/theme/diabook/icons/srch_bg.gif') repeat-x top left; + float: left; + margin-top: 5px; + border: 0; + height: 13px; width: 100px; + padding: 3px; + font: 11px/13px arial; + color: #000; +} #add-search-popup { width: 200px; top: 18px; @@ -1725,12 +1751,13 @@ transition: all 0.2s ease-in-out; margin-left: 5px; } /*input[type="submit"] { - border: 0px; - background-color: @ButtonBackgroundColor; - color: @ButtonColor; - padding: 0px 10px; - .rounded(5px); - height: 18px; + background-color: #33ACFF; + background-image: -moz-linear-gradient(center top , #66C1FF 0%, #0097FF 100%); + border: 1px solid #777777; + color: white; + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; + margin-left: 5px; }*/ /** acl **/ #photo-edit-perms-select, #photos-upload-permissions-wrapper, #profile-jot-acl-wrapper { diff --git a/view/theme/diabook/style-profile.css b/view/theme/diabook/style-profile.css index 249596f9f..9bd67da8d 100644 --- a/view/theme/diabook/style-profile.css +++ b/view/theme/diabook/style-profile.css @@ -1090,6 +1090,32 @@ aside #side-peoplefind-url { background: url("../../../view/theme/diabook/icons/selected.png") no-repeat left center; } /* widget: search */ +span.sbox_l { + background: white url('../../../view/theme/diabook/icons/srch_l.gif') no-repeat top left; + float: left; + width: 19px; height: 19px; + margin-left: 10px; + margin-top: 5px; + +} + +span.sbox_r { + background: white url('../../../view/theme/diabook/icons/srch_r.gif') no-repeat top left; + float: left; + width: 19px; height: 19px; + margin-top: 5px; +} + +span.sbox input { + background: white url('../../../view/theme/diabook/icons/srch_bg.gif') repeat-x top left; + float: left; + margin-top: 5px; + border: 0; + height: 13px; width: 100px; + padding: 3px; + font: 11px/13px arial; + color: #000; +} #add-search-popup { width: 200px; top: 18px; diff --git a/view/theme/diabook/theme.php b/view/theme/diabook/theme.php index a3f0ca0d4..5d6173918 100755 --- a/view/theme/diabook/theme.php +++ b/view/theme/diabook/theme.php @@ -147,6 +147,13 @@ function diabook_community_info(){ $nv['suggest'] = Array('suggest', t('Friend Suggestions'), "", ""); $nv['invite'] = Array('invite', t('Invite Friends'), "", ""); + $nv['search'] = '<form name="simple_bar" method="get" action="http://dir.friendika.com/directory"> + <span class="sbox_l"></span> + <span class="sbox"> + <input type="text" name="search" size="13" maxlength="50"> + </span> + <span class="sbox_r" id="srch_clear"></span>'; + $aside['$nv'] = $nv; }; @@ -243,17 +250,18 @@ if ($a->argv[0] === "network" && local_user()){ //right_aside at profile pages -if ($a->argv[0] === "profile"){ +if ($a->argv[0].$a->argv[1] === "profile".$a->user['nickname']){ if($ccCookie != "8") { // COMMUNITY diabook_community_info(); // CUSTOM CSS $cssFile = $a->get_baseurl($ssl_state)."/view/theme/diabook/style-profile.css"; + + } } - // custom css if (!is_null($cssFile)) $a->page['htmlhead'] .= sprintf('<link rel="stylesheet" type="text/css" href="%s" />', $cssFile); |