aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xboot.php26
-rwxr-xr-xinclude/api.php230
-rw-r--r--include/bbcode.php23
-rwxr-xr-xinclude/dba.php5
-rwxr-xr-xinclude/diaspora.php12
-rwxr-xr-xinclude/email.php6
-rw-r--r--include/html2plain.php86
-rwxr-xr-xinclude/items.php11
-rw-r--r--include/msgclean.php2
-rwxr-xr-xinclude/poller.php7
-rw-r--r--include/quoteconvert.php2
-rw-r--r--include/text.php30
-rwxr-xr-xmod/dfrn_notify.php19
-rw-r--r--mod/ping.php5
-rwxr-xr-xmod/settings.php2
-rwxr-xr-xview/api_ratelimit_xml.tpl9
-rwxr-xr-xview/api_user_xml.tpl2
-rwxr-xr-xview/theme/diabook-blue/communityhome.tpl14
-rw-r--r--view/theme/diabook-blue/style-network.css14
-rw-r--r--view/theme/diabook-blue/style-profile.css12
-rwxr-xr-xview/theme/diabook-blue/theme.php6
-rwxr-xr-xview/theme/diabook/communityhome.tpl7
-rw-r--r--view/theme/diabook/icons/srch_bg.gifbin0 -> 65 bytes
-rw-r--r--view/theme/diabook/icons/srch_l.gifbin0 -> 303 bytes
-rw-r--r--view/theme/diabook/icons/srch_r.gifbin0 -> 227 bytes
-rw-r--r--view/theme/diabook/icons/srch_r_f2.gifbin0 -> 278 bytes
-rw-r--r--view/theme/diabook/style-network.css39
-rw-r--r--view/theme/diabook/style-profile.css26
-rwxr-xr-xview/theme/diabook/theme.php12
29 files changed, 492 insertions, 115 deletions
diff --git a/boot.php b/boot.php
index e0ab98bde..b02e686ba 100755
--- a/boot.php
+++ b/boot.php
@@ -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
new file mode 100644
index 000000000..6a523ba8f
--- /dev/null
+++ b/view/theme/diabook/icons/srch_bg.gif
Binary files differ
diff --git a/view/theme/diabook/icons/srch_l.gif b/view/theme/diabook/icons/srch_l.gif
new file mode 100644
index 000000000..6d95bf35d
--- /dev/null
+++ b/view/theme/diabook/icons/srch_l.gif
Binary files differ
diff --git a/view/theme/diabook/icons/srch_r.gif b/view/theme/diabook/icons/srch_r.gif
new file mode 100644
index 000000000..89833a316
--- /dev/null
+++ b/view/theme/diabook/icons/srch_r.gif
Binary files differ
diff --git a/view/theme/diabook/icons/srch_r_f2.gif b/view/theme/diabook/icons/srch_r_f2.gif
new file mode 100644
index 000000000..6df457bed
--- /dev/null
+++ b/view/theme/diabook/icons/srch_r_f2.gif
Binary files differ
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);