diff options
-rw-r--r-- | boot.php | 4 | ||||
-rw-r--r-- | database.sql | 10 | ||||
-rw-r--r-- | include/api.php | 2 | ||||
-rw-r--r-- | include/bb2diaspora.php | 2 | ||||
-rw-r--r-- | include/bbcode.php | 13 | ||||
-rw-r--r-- | include/datetime.php | 9 | ||||
-rw-r--r-- | include/delivery.php | 2 | ||||
-rw-r--r-- | include/event.php | 16 | ||||
-rwxr-xr-x | include/items.php | 163 | ||||
-rw-r--r-- | include/notifier.php | 2 | ||||
-rw-r--r-- | include/plugin.php | 21 | ||||
-rwxr-xr-x | mod/events.php | 24 | ||||
-rw-r--r-- | mod/item.php | 64 | ||||
-rwxr-xr-x | mod/like.php | 184 | ||||
-rw-r--r-- | mod/settings.php | 27 | ||||
-rw-r--r-- | mod/wall_attach.php | 13 | ||||
-rw-r--r-- | mod/wall_upload.php | 13 | ||||
-rw-r--r-- | update.php | 11 | ||||
-rw-r--r-- | util/messages.po | 563 | ||||
-rw-r--r-- | view/event_form.tpl | 4 | ||||
-rwxr-xr-x | view/theme/diabook/jot.tpl | 2 | ||||
-rw-r--r-- | view/theme/duepuntozero/style.css | 31 |
22 files changed, 741 insertions, 439 deletions
@@ -10,9 +10,9 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1384' ); +define ( 'FRIENDICA_VERSION', '3.0.1386' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); -define ( 'DB_UPDATE_VERSION', 1150 ); +define ( 'DB_UPDATE_VERSION', 1151 ); define ( 'EOL', "<br />\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/database.sql b/database.sql index 8178ffa86..b3b8c3a06 100644 --- a/database.sql +++ b/database.sql @@ -254,6 +254,7 @@ CREATE TABLE IF NOT EXISTS `event` ( `edited` datetime NOT NULL, `start` datetime NOT NULL, `finish` datetime NOT NULL, + `summary` text NOT NULL, `desc` text NOT NULL, `location` text NOT NULL, `type` char(255) NOT NULL, @@ -263,7 +264,14 @@ CREATE TABLE IF NOT EXISTS `event` ( `allow_gid` mediumtext NOT NULL, `deny_cid` mediumtext NOT NULL, `deny_gid` mediumtext NOT NULL, - PRIMARY KEY (`id`) + PRIMARY KEY (`id`), + KEY `uid` ( `uid` ), + KEY `cid` ( `cid` ), + KEY `uri` ( `uri` ), + KEY `type` ( `type` ), + KEY `start` ( `start` ), + KEY `finish` ( `finish` ), + KEY `adjust` ( `adjust` ) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -------------------------------------------------------- diff --git a/include/api.php b/include/api.php index cee1fde23..09cca8d8d 100644 --- a/include/api.php +++ b/include/api.php @@ -565,7 +565,7 @@ if(requestdata('lat') && requestdata('long')) $_REQUEST['coord'] = sprintf("%s %s",requestdata('lat'),requestdata('long')); $_REQUEST['profile_uid'] = local_user(); -// if(requestdata('parent')) + if($parent) $_REQUEST['type'] = 'net-comment'; else { diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index a0d114a37..25edb28d7 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -113,7 +113,7 @@ function bb2diaspora($Text,$preserve_nl = false) { // to define the closing tag for the list elements. So nested lists // are going to be flattened out in Diaspora for now $endlessloop = 0; - while ((strpos($Text, "[/list]") !== false) && (strpos($Text, "[list") !== false) + while ((strpos($Text, "[/list]") !== false) && (strpos($Text, "[list") !== false) && (strpos($Text, "[/ol]") !== false) && (strpos($Text, "[ol]") !== false) && (strpos($Text, "[/ul]") !== false) && (strpos($Text, "[ul]") !== false) && (++$endlessloop < 20)) { $Text = preg_replace_callback("/\[list\](.*?)\[\/list\]/is", 'diaspora_ul', $Text); diff --git a/include/bbcode.php b/include/bbcode.php index 36d480a17..ee31b4a1a 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -162,7 +162,8 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { // handle nested lists $endlessloop = 0; - while ((strpos($Text, "[/list]") !== false) && (strpos($Text, "[list]") !== false) && + + while ((strpos($Text, "[/list]") !== false) && (strpos($Text, "[list") !== false) && (strpos($Text, "[/ol]") !== false) && (strpos($Text, "[ol]") !== false) && (strpos($Text, "[/ul]") !== false) && (strpos($Text, "[ul]") !== false) && (++$endlessloop < 20)) { $Text = preg_replace("/\[list\](.*?)\[\/list\]/ism", '<ul class="listbullet" style="list-style-type: circle;">$1</ul>' ,$Text); @@ -296,12 +297,16 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { $Text = oembed_bbcode2html($Text); // If we found an event earlier, strip out all the event code and replace with a reformatted version. + // Replace the event-start section with the entire formatted event. The other bbcode is stripped. + // Summary (e.g. title) is required, earlier revisions only required description (in addition to + // start which is always required). Allow desc with a missing summary for compatibility. - if(x($ev,'desc') && x($ev,'start')) { + if((x($ev,'desc') || x($ev,'summary')) && x($ev,'start')) { $sub = format_event_html($ev); - $Text = preg_replace("/\[event\-description\](.*?)\[\/event\-description\]/ism",$sub,$Text); - $Text = preg_replace("/\[event\-start\](.*?)\[\/event\-start\]/ism",'',$Text); + $Text = preg_replace("/\[event\-summary\](.*?)\[\/event\-summary\]/ism",'',$Text); + $Text = preg_replace("/\[event\-description\](.*?)\[\/event\-description\]/ism",'',$Text); + $Text = preg_replace("/\[event\-start\](.*?)\[\/event\-start\]/ism",$sub,$Text); $Text = preg_replace("/\[event\-finish\](.*?)\[\/event\-finish\]/ism",'',$Text); $Text = preg_replace("/\[event\-location\](.*?)\[\/event\-location\]/ism",'',$Text); $Text = preg_replace("/\[event\-adjust\](.*?)\[\/event\-adjust\]/ism",'',$Text); diff --git a/include/datetime.php b/include/datetime.php index 58a618610..75ae685f3 100644 --- a/include/datetime.php +++ b/include/datetime.php @@ -447,11 +447,13 @@ function update_contact_birthdays() { * */ - $bdtext = t('Birthday:') . ' [url=' . $rr['url'] . ']' . $rr['name'] . '[/url]' ; + $bdtext = sprintf( t('%s\'s birthday'), $rr['name']); + $bdtext2 = sprintf( t('Happy Birthday %s'), ' [url=' . $rr['url'] . ']' . $rr['name'] . '[/url]') ; - $r = q("INSERT INTO `event` (`uid`,`cid`,`created`,`edited`,`start`,`finish`,`desc`,`type`,`adjust`) - VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%d' ) ", + + $r = q("INSERT INTO `event` (`uid`,`cid`,`created`,`edited`,`start`,`finish`,`summary`,`desc`,`type`,`adjust`) + VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%d' ) ", intval($rr['uid']), intval($rr['id']), dbesc(datetime_convert()), @@ -459,6 +461,7 @@ function update_contact_birthdays() { dbesc(datetime_convert('UTC','UTC', $nextbd)), dbesc(datetime_convert('UTC','UTC', $nextbd . ' + 1 day ')), dbesc($bdtext), + dbesc($bdtext2), dbesc('birthday'), intval(0) ); diff --git a/include/delivery.php b/include/delivery.php index e6cfc8155..815287668 100644 --- a/include/delivery.php +++ b/include/delivery.php @@ -113,7 +113,7 @@ function delivery_run($argv, $argc){ $uid = $r[0]['uid']; $updated = $r[0]['edited']; - // The following seems superfluous. We've already checked for "if (! intval($r[0]['parent']))" a few lines up + // POSSIBLE CLEANUP --> The following seems superfluous. We've already checked for "if (! intval($r[0]['parent']))" a few lines up if(! $parent_id) continue; diff --git a/include/event.php b/include/event.php index 866ae8c3f..8aef0a263 100644 --- a/include/event.php +++ b/include/event.php @@ -12,6 +12,9 @@ function format_event_html($ev) { $o = '<div class="vevent">' . "\r\n"; + + $o .= '<p class="summary event-summary">' . bbcode($ev['summary']) . '</p>' . "\r\n"; + $o .= '<p class="description event-description">' . bbcode($ev['desc']) . '</p>' . "\r\n"; $o .= '<p class="event-start">' . t('Starts:') . ' <abbr class="dtstart" title="' @@ -114,6 +117,9 @@ function format_event_bbcode($ev) { $o = ''; + if($ev['summary']) + $o .= '[event-summary]' . $ev['summary'] . '[/event-summary]'; + if($ev['desc']) $o .= '[event-description]' . $ev['desc'] . '[/event-description]'; @@ -148,6 +154,9 @@ function bbtoevent($s) { $ev = array(); $match = ''; + if(preg_match("/\[event\-summary\](.*?)\[\/event\-summary\]/is",$s,$match)) + $ev['summary'] = $match[1]; + $match = ''; if(preg_match("/\[event\-description\](.*?)\[\/event\-description\]/is",$s,$match)) $ev['desc'] = $match[1]; $match = ''; @@ -244,6 +253,7 @@ function event_store($arr) { `edited` = '%s', `start` = '%s', `finish` = '%s', + `summary` = '%s', `desc` = '%s', `location` = '%s', `type` = '%s', @@ -258,6 +268,7 @@ function event_store($arr) { dbesc($arr['edited']), dbesc($arr['start']), dbesc($arr['finish']), + dbesc($arr['summary']), dbesc($arr['desc']), dbesc($arr['location']), dbesc($arr['type']), @@ -306,9 +317,9 @@ function event_store($arr) { // New event. Store it. - $r = q("INSERT INTO `event` ( `uid`,`cid`,`uri`,`created`,`edited`,`start`,`finish`,`desc`,`location`,`type`, + $r = q("INSERT INTO `event` ( `uid`,`cid`,`uri`,`created`,`edited`,`start`,`finish`,`summary`, `desc`,`location`,`type`, `adjust`,`nofinish`,`allow_cid`,`allow_gid`,`deny_cid`,`deny_gid`) - VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', '%s', '%s', '%s' ) ", + VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', '%s', '%s', '%s' ) ", intval($arr['uid']), intval($arr['cid']), dbesc($arr['uri']), @@ -316,6 +327,7 @@ function event_store($arr) { dbesc($arr['edited']), dbesc($arr['start']), dbesc($arr['finish']), + dbesc($arr['summary']), dbesc($arr['desc']), dbesc($arr['location']), dbesc($arr['type']), diff --git a/include/items.php b/include/items.php index e495393fa..1f0571968 100755 --- a/include/items.php +++ b/include/items.php @@ -1457,11 +1457,12 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) * */ - $bdtext = t('Birthday:') . ' [url=' . $contact['url'] . ']' . $contact['name'] . '[/url]' ; + $bdtext = sprintf( t('%s\'s birthday'), $contact['name']); + $bdtext2 = sprintf( t('Happy Birthday %s'), ' [url=' . $contact['url'] . ']' . $contact['name'] . '[/url]' ) ; - $r = q("INSERT INTO `event` (`uid`,`cid`,`created`,`edited`,`start`,`finish`,`desc`,`type`) - VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s' ) ", + $r = q("INSERT INTO `event` (`uid`,`cid`,`created`,`edited`,`start`,`finish`,`summary`,`desc`,`type`) + VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ", intval($contact['uid']), intval($contact['id']), dbesc(datetime_convert()), @@ -1469,6 +1470,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) dbesc(datetime_convert('UTC','UTC', $birthday)), dbesc(datetime_convert('UTC','UTC', $birthday . ' + 1 day ')), dbesc($bdtext), + dbesc($bdtext2), dbesc('birthday') ); @@ -2148,6 +2150,67 @@ function local_delivery($importer,$data) { } if($deleted) { + // check for relayed deletes to our conversation + + $is_reply = false; + $r = q("select * from item where uri = '%s' and uid = %d limit 1", + dbesc($uri), + intval($importer['importer_uid']) + ); + if(count($r)) { + $parent_uri = $r[0]['parent-uri']; + if($r[0]['id'] != $r[0]['parent']) + $is_reply = true; + } + + if($is_reply) { + $community = false; + + if($importer['page-flags'] == PAGE_COMMUNITY || $importer['page-flags'] == PAGE_PRVGROUP ) { + $sql_extra = ''; + $community = true; + logger('local_delivery: possible community delete'); + } + else + $sql_extra = " and contact.self = 1 and item.wall = 1 "; + + // was the top-level post for this reply written by somebody on this site? + // Specifically, the recipient? + + $is_a_remote_delete = false; + + $r = q("select `item`.`id`, `item`.`uri`, `item`.`tag`, `item`.`forum_mode`,`item`.`origin`,`item`.`wall`, + `contact`.`name`, `contact`.`url`, `contact`.`thumb` from `item` + LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` + WHERE `item`.`uri` = '%s' AND (`item`.`parent-uri` = '%s' or `item`.`thr-parent` = '%s') + AND `item`.`uid` = %d + $sql_extra + LIMIT 1", + dbesc($parent_uri), + dbesc($parent_uri), + dbesc($parent_uri), + intval($importer['importer_uid']) + ); + if($r && count($r)) + $is_a_remote_delete = true; + + // Does this have the characteristics of a community or private group comment? + // If it's a reply to a wall post on a community/prvgroup page it's a + // valid community comment. Also forum_mode makes it valid for sure. + // If neither, it's not. + + if($is_a_remote_delete && $community) { + if((! $r[0]['forum_mode']) && (! $r[0]['wall'])) { + $is_a_remote_delete = false; + logger('local_delivery: not a community delete'); + } + } + + if($is_a_remote_delete) { + logger('local_delivery: received remote delete'); + } + } + $r = q("SELECT `item`.*, `contact`.`self` FROM `item` left join contact on `item`.`contact-id` = `contact`.`id` WHERE `uri` = '%s' AND `item`.`uid` = %d AND `contact-id` = %d AND NOT `item`.`file` LIKE '%%[%%' LIMIT 1", dbesc($uri), @@ -2235,7 +2298,11 @@ function local_delivery($importer,$data) { ); } } - } + // if this is a relayed delete, propagate it to other recipients + + if($is_a_remote_delete) + proc_run('php',"include/notifier.php","drop",$item['id']); + } } } } @@ -2268,6 +2335,7 @@ function local_delivery($importer,$data) { $is_a_remote_comment = false; + // POSSIBLE CLEANUP --> Why select so many fields when only forum_mode and wall are used? $r = q("select `item`.`id`, `item`.`uri`, `item`.`tag`, `item`.`forum_mode`,`item`.`origin`,`item`.`wall`, `contact`.`name`, `contact`.`url`, `contact`.`thumb` from `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` @@ -3359,40 +3427,8 @@ function drop_item($id,$interactive = true) { ); } - // Add a relayable_retraction signature for Diaspora. Note that we can't add a target_author_signature - // if the comment was deleted by a remote user. That should be ok, because if a remote user is deleting - // the comment, that means we're the home of the post, and Diaspora will only - // check the parent_author_signature of retractions that it doesn't have to relay further - // - // I don't think this function gets called for an "unlike," but I'll check anyway - $signed_text = $item['guid'] . ';' . ( ($item['verb'] === ACTIVITY_LIKE) ? 'Like' : 'Comment'); - - if(local_user() == $item['uid']) { - - $handle = $a->user['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3); - $authorsig = base64_encode(rsa_sign($signed_text,$a->user['prvkey'],'sha256')); - } - else { - $r = q("SELECT `nick`, `url` FROM `contact` WHERE `id` = '%d' LIMIT 1", - $item['contact-id'] - ); - if(count($r)) { - // The below handle only works for NETWORK_DFRN. I think that's ok, because this function - // only handles DFRN deletes - $handle_baseurl_start = strpos($r['url'],'://') + 3; - $handle_baseurl_length = strpos($r['url'],'/profile') - $handle_baseurl_start; - $handle = $r['nick'] . '@' . substr($r['url'], $handle_baseurl_start, $handle_baseurl_length); - $authorsig = ''; - } - } - - if(isset($handle)) - q("insert into sign (`retract_iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", - intval($item['id']), - dbesc($signed_text), - dbesc($authorsig), - dbesc($handle) - ); + // Add a relayable_retraction signature for Diaspora. + store_diaspora_retract_sig($item, $a->user, $a->get_baseurl()); } $drop_id = intval($item['id']); @@ -3479,4 +3515,53 @@ function posted_date_widget($url,$uid,$wall) { '$dates' => $ret )); return $o; -}
\ No newline at end of file +} + + +function store_diaspora_retract_sig($item, $user, $baseurl) { + // Note that we can't add a target_author_signature + // if the comment was deleted by a remote user. That should be ok, because if a remote user is deleting + // the comment, that means we're the home of the post, and Diaspora will only + // check the parent_author_signature of retractions that it doesn't have to relay further + // + // I don't think this function gets called for an "unlike," but I'll check anyway + + $enabled = intval(get_config('system','diaspora_enabled')); + if(! $enabled) { + logger('drop_item: diaspora support disabled, not storing retraction signature', LOGGER_DEBUG); + return; + } + + logger('drop_item: storing diaspora retraction signature'); + + $signed_text = $item['guid'] . ';' . ( ($item['verb'] === ACTIVITY_LIKE) ? 'Like' : 'Comment'); + + if(local_user() == $item['uid']) { + + $handle = $user['nickname'] . '@' . substr($baseurl, strpos($baseurl,'://') + 3); + $authorsig = base64_encode(rsa_sign($signed_text,$user['prvkey'],'sha256')); + } + else { + $r = q("SELECT `nick`, `url` FROM `contact` WHERE `id` = '%d' LIMIT 1", + $item['contact-id'] + ); + if(count($r)) { + // The below handle only works for NETWORK_DFRN. I think that's ok, because this function + // only handles DFRN deletes + $handle_baseurl_start = strpos($r['url'],'://') + 3; + $handle_baseurl_length = strpos($r['url'],'/profile') - $handle_baseurl_start; + $handle = $r['nick'] . '@' . substr($r['url'], $handle_baseurl_start, $handle_baseurl_length); + $authorsig = ''; + } + } + + if(isset($handle)) + q("insert into sign (`retract_iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", + intval($item['id']), + dbesc($signed_text), + dbesc($authorsig), + dbesc($handle) + ); + + return; +} diff --git a/include/notifier.php b/include/notifier.php index f0a1940d4..443cc3014 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -125,7 +125,7 @@ function notifier_run($argv, $argc){ $uid = $r[0]['uid']; $updated = $r[0]['edited']; - // The following seems superfluous. We've already checked for "if (! intval($r[0]['parent']))" a few lines up + // POSSIBLE CLEANUP --> The following seems superfluous. We've already checked for "if (! intval($r[0]['parent']))" a few lines up if(! $parent_id) return; diff --git a/include/plugin.php b/include/plugin.php index d762e8717..ffa562273 100644 --- a/include/plugin.php +++ b/include/plugin.php @@ -380,20 +380,23 @@ function service_class_fetch($uid,$property) { } -function upgrade_link() { +function upgrade_link($bbcode = false) { $l = get_config('service_class','upgrade_link'); - $t = sprintf('<a href="%s">' . t('Click here to upgrade.') . '</div>', $l); - if($l) - return $t; - return ''; + if(! $l) + return ''; + if($bbcode) + $t = sprintf('[url=%s]' . t('Click here to upgrade.') . '[/url]', $l); + else + $t = sprintf('<a href="%s">' . t('Click here to upgrade.') . '</div>', $l); + return $t; } -function upgrade_message() { - $x = upgrade_link(); +function upgrade_message($bbcode = false) { + $x = upgrade_link($bbcode); return t('This action exceeds the limits set by your subscription plan.') . (($x) ? ' ' . $x : '') ; } -function upgrade_bool_message() { - $x = upgrade_link(); +function upgrade_bool_message($bbcode = false) { + $x = upgrade_link($bbcode); return t('This action is not available under your subscription plan.') . (($x) ? ' ' . $x : '') ; } diff --git a/mod/events.php b/mod/events.php index 2a6fb692e..4a6d3f100 100755 --- a/mod/events.php +++ b/mod/events.php @@ -57,12 +57,13 @@ function events_post(&$a) { if(strcmp($finish,$start) < 0) $finish = $start; + $summary = escape_tags(trim($_POST['summary'])); $desc = escape_tags(trim($_POST['desc'])); $location = escape_tags(trim($_POST['location'])); $type = 'event'; - if((! $desc) || (! $start)) { - notice( t('Event description and start time are required.') . EOL); + if((! $summary) || (! $start)) { + notice( t('Event title and start time are required.') . EOL); goaway($a->get_baseurl() . '/events/new'); } @@ -107,6 +108,7 @@ function events_post(&$a) { $datarray = array(); $datarray['start'] = $start; $datarray['finish'] = $finish; + $datarray['summary'] = $summary; $datarray['desc'] = $desc; $datarray['location'] = $location; $datarray['type'] = $type; @@ -278,9 +280,11 @@ function events_content(&$a) { $last_date = $d; $edit = ((! $rr['cid']) ? array($a->get_baseurl().'/events/event/'.$rr['id'],t('Edit event'),'','') : null); - - list($title, $_trash) = explode("<br",bbcode($rr['desc']),2); - $title = strip_tags($title); + $title = strip_tags(bbcode($rr['summary'])); + if(! $title) { + list($title, $_trash) = explode("<br",bbcode($rr['desc']),2); + $title = strip_tags($title); + } $html = format_event_html($rr); $rr['desc'] = bbcode($rr['desc']); $rr['location'] = bbcode($rr['location']); @@ -351,6 +355,7 @@ function events_content(&$a) { $n_checked = ((x($orig_event) && $orig_event['nofinish']) ? ' checked="checked" ' : ''); $a_checked = ((x($orig_event) && $orig_event['adjust']) ? ' checked="checked" ' : ''); + $t_orig = ((x($orig_event)) ? $orig_event['summary'] : ''); $d_orig = ((x($orig_event)) ? $orig_event['desc'] : ''); $l_orig = ((x($orig_event)) ? $orig_event['location'] : ''); $eid = ((x($orig_event)) ? $orig_event['id'] : 0); @@ -405,10 +410,11 @@ function events_content(&$a) { '$eid' => $eid, '$cid' => $cid, '$uri' => $uri, + '$title' => t('Event details'), - '$desc' => sprintf( t('Format is %s %s. Starting date and Description are required.'),$dateformat,$timeformat), + '$desc' => sprintf( t('Format is %s %s. Starting date and Title are required.'),$dateformat,$timeformat), - '$s_text' => t('Event Starts:') . ' <span class="required">*</span> ', + '$s_text' => t('Event Starts:') . ' <span class="required" title="' . t('Required') . '">*</span>', '$s_dsel' => datesel($f,'start',$syear+5,$syear,false,$syear,$smonth,$sday), '$s_tsel' => timesel('start',$shour,$sminute), '$n_text' => t('Finish date/time is not known or not relevant'), @@ -418,10 +424,12 @@ function events_content(&$a) { '$f_tsel' => timesel('finish',$fhour,$fminute), '$a_text' => t('Adjust for viewer timezone'), '$a_checked' => $a_checked, - '$d_text' => t('Description:') . ' <span class="required">*</span>', + '$d_text' => t('Description:'), '$d_orig' => $d_orig, '$l_text' => t('Location:'), '$l_orig' => $l_orig, + '$t_text' => t('Title:') . ' <span class="required" title="' . t('Required') . '">*</span>', + '$t_orig' => $t_orig, '$sh_text' => t('Share this event'), '$sh_checked' => $sh_checked, '$acl' => (($cid) ? '' : populate_acl(((x($orig_event)) ? $orig_event : $a->user),false)), diff --git a/mod/item.php b/mod/item.php index 54f9fc06a..aa022d37d 100644 --- a/mod/item.php +++ b/mod/item.php @@ -728,26 +728,10 @@ function item_post(&$a) { } - // We won't be able to sign Diaspora comments for authenticated visitors - we don't have their private key - - if($self) { - require_once('include/bb2diaspora.php'); - $signed_body = html_entity_decode(bb2diaspora($datarray['body'])); - $myaddr = $a->user['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3); - if($datarray['verb'] === ACTIVITY_LIKE) - $signed_text = $datarray['guid'] . ';' . 'Post' . ';' . $parent_item['guid'] . ';' . 'true' . ';' . $myaddr; - else - $signed_text = $datarray['guid'] . ';' . $parent_item['guid'] . ';' . $signed_body . ';' . $myaddr; - $authorsig = base64_encode(rsa_sign($signed_text,$a->user['prvkey'],'sha256')); + // Store the comment signature information in case we need to relay to Diaspora + store_diaspora_comment_sig($datarray, $author, ($self ? $a->user['prvkey'] : false), $parent_item, $post_id); - q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", - intval($post_id), - dbesc($signed_text), - dbesc(base64_encode($authorsig)), - dbesc($myaddr) - ); - } } else { $parent = $post_id; @@ -1038,3 +1022,47 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) { return array('replaced' => $replaced, 'contact' => $r[0]); } + + +function store_diaspora_comment_sig($datarray, $author, $uprvkey, $parent_item, $post_id) { + // We won't be able to sign Diaspora comments for authenticated visitors - we don't have their private key + + $enabled = intval(get_config('system','diaspora_enabled')); + if(! $enabled) { + logger('mod_item: diaspora support disabled, not storing comment signature', LOGGER_DEBUG); + return; + } + + + logger('mod_item: storing diaspora comment signature'); + + require_once('include/bb2diaspora.php'); + $signed_body = html_entity_decode(bb2diaspora($datarray['body'])); + +// $myaddr = $user['nickname'] . '@' . substr($baseurl, strpos($baseurl,'://') + 3); +// if( $author['network'] === NETWORK_DIASPORA) +// $diaspora_handle = $author['addr']; +// else { + // Only works for NETWORK_DFRN + $contact_baseurl_start = strpos($author['url'],'://') + 3; + $contact_baseurl_length = strpos($author['url'],'/profile') - $contact_baseurl_start; + $contact_baseurl = substr($author['url'], $contact_baseurl_start, $contact_baseurl_length); + $diaspora_handle = $author['nick'] . '@' . $contact_baseurl; +// } + + $signed_text = $datarray['guid'] . ';' . $parent_item['guid'] . ';' . $signed_body . ';' . $diaspora_handle; + + if( $uprvkey !== false ) + $authorsig = base64_encode(rsa_sign($signed_text,$uprvkey,'sha256')); + else + $authorsig = ''; + + q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", + intval($post_id), + dbesc($signed_text), + dbesc(base64_encode($authorsig)), + dbesc($diaspora_handle) + ); + + return; +} diff --git a/mod/like.php b/mod/like.php index 642e948fd..1176c3110 100755 --- a/mod/like.php +++ b/mod/like.php @@ -121,57 +121,16 @@ function like_content(&$a) { intval($like_item['id']) ); - // Clean up the `sign` table + + // Clean up the Diaspora signatures for this like + // Go ahead and do it even if Diaspora support is disabled. We still want to clean up + // if it had been enabled in the past $r = q("DELETE FROM `sign` WHERE `iid` = %d", intval($like_item['id']) ); // Save the author information for the unlike in case we need to relay to Diaspora - // Note that we can only create a signature for a user of the local server. We don't have - // a key for remote users. That is ok, because if a remote user is "unlike"ing a post, it - // means we are the relay, and for relayable_retractions, Diaspora - // only checks the parent_author_signature if it doesn't have to relay further - // - // If $item['resource-id'] exists, it means the item is a photo. Diaspora doesn't support - // likes on photos, so don't bother. - - if(($activity === ACTIVITY_LIKE) && (! $item['resource-id'])) { - $signed_text = $like_item['guid'] . ';' . 'Like'; - - if( $contact['network'] === NETWORK_DIASPORA) - $diaspora_handle = $contact['addr']; - else { // Only works for NETWORK_DFRN - $contact_baseurl_start = strpos($contact['url'],'://') + 3; - $contact_baseurl_length = strpos($contact['url'],'/profile') - $contact_baseurl_start; - $contact_baseurl = substr($contact['url'], $contact_baseurl_start, $contact_baseurl_length); - $diaspora_handle = $contact['nick'] . '@' . $contact_baseurl; - - // Get contact's private key if he's a user of the local Friendica server - $r = q("SELECT `contact`.`uid` FROM `contact` WHERE `url` = '%s' AND `self` = 1 LIMIT 1", - dbesc($contact['url']) - ); - - if( $r) { - $contact_uid = $r['uid']; - $r = q("SELECT prvkey FROM user WHERE uid = %d LIMIT 1", - intval($contact_uid) - ); - - if( $r) - $authorsig = base64_encode(rsa_sign($signed_text,$r['prvkey'],'sha256')); - } - } - - if(! isset($authorsig)) - $authorsig = ''; - - q("insert into sign (`retract_iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", - intval($like_item['id']), - dbesc($signed_text), - dbesc($authorsig), - dbesc($diaspora_handle) - ); - } + store_diaspora_like_retract_sig($activity, $item, $like_item, $contact); // proc_run('php',"include/notifier.php","like","$post_id"); // $post_id isn't defined here! @@ -252,35 +211,118 @@ EOT; // Save the author information for the like in case we need to relay to Diaspora + store_diaspora_like_sig($activity, $post_type, $contact, $post_id); + + + $arr['id'] = $post_id; + + call_hooks('post_local_end', $arr); + + proc_run('php',"include/notifier.php","like","$post_id"); + + killme(); +// return; // NOTREACHED +} + + +function store_diaspora_like_retract_sig($activity, $item, $like_item, $contact) { // Note that we can only create a signature for a user of the local server. We don't have // a key for remote users. That is ok, because if a remote user is "unlike"ing a post, it // means we are the relay, and for relayable_retractions, Diaspora // only checks the parent_author_signature if it doesn't have to relay further + // + // If $item['resource-id'] exists, it means the item is a photo. Diaspora doesn't support + // likes on photos, so don't bother. - if(($activity === ACTIVITY_LIKE) && ($post_type === t('status'))) { - if( $contact['network'] === NETWORK_DIASPORA) - $diaspora_handle = $contact['addr']; - else { // Only works for NETWORK_DFRN - $contact_baseurl_start = strpos($contact['url'],'://') + 3; - $contact_baseurl_length = strpos($contact['url'],'/profile') - $contact_baseurl_start; - $contact_baseurl = substr($contact['url'], $contact_baseurl_start, $contact_baseurl_length); - $diaspora_handle = $contact['nick'] . '@' . $contact_baseurl; - - // Get contact's private key if he's a user of the local Friendica server - $r = q("SELECT `contact`.`uid` FROM `contact` WHERE `url` = '%s' AND `self` = 1 LIMIT 1", - dbesc($contact['url']) + $enabled = intval(get_config('system','diaspora_enabled')); + if(! $enabled) { + logger('mod_like: diaspora support disabled, not storing like retraction signature', LOGGER_DEBUG); + return; + } + + logger('mod_like: storing diaspora like retraction signature'); + + if(($activity === ACTIVITY_LIKE) && (! $item['resource-id'])) { + $signed_text = $like_item['guid'] . ';' . 'Like'; + +// if( $contact['network'] === NETWORK_DIASPORA) +// $diaspora_handle = $contact['addr']; +// else { + // Only works for NETWORK_DFRN + $contact_baseurl_start = strpos($contact['url'],'://') + 3; + $contact_baseurl_length = strpos($contact['url'],'/profile') - $contact_baseurl_start; + $contact_baseurl = substr($contact['url'], $contact_baseurl_start, $contact_baseurl_length); + $diaspora_handle = $contact['nick'] . '@' . $contact_baseurl; + + // Get contact's private key if he's a user of the local Friendica server + $r = q("SELECT `contact`.`uid` FROM `contact` WHERE `url` = '%s' AND `self` = 1 LIMIT 1", + dbesc($contact['url']) + ); + + if( $r) { + $contact_uid = $r['uid']; + $r = q("SELECT prvkey FROM user WHERE uid = %d LIMIT 1", + intval($contact_uid) ); - if( $r) { - $contact_uid = $r['uid']; - $r = q("SELECT prvkey FROM user WHERE uid = %d LIMIT 1", - intval($contact_uid) - ); + if( $r) + $authorsig = base64_encode(rsa_sign($signed_text,$r['prvkey'],'sha256')); + } +// } - if( $r) - $contact_uprvkey = $r['prvkey']; - } + if(! isset($authorsig)) + $authorsig = ''; + + q("insert into sign (`retract_iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", + intval($like_item['id']), + dbesc($signed_text), + dbesc($authorsig), + dbesc($diaspora_handle) + ); + } + + return; +} + +function store_diaspora_like_sig($activity, $post_type, $contact, $post_id) { + // Note that we can only create a signature for a user of the local server. We don't have + // a key for remote users. That is ok, because if a remote user is "unlike"ing a post, it + // means we are the relay, and for relayable_retractions, Diaspora + // only checks the parent_author_signature if it doesn't have to relay further + + $enabled = intval(get_config('system','diaspora_enabled')); + if(! $enabled) { + logger('mod_like: diaspora support disabled, not storing like signature', LOGGER_DEBUG); + return; + } + + logger('mod_like: storing diaspora like signature'); + + if(($activity === ACTIVITY_LIKE) && ($post_type === t('status'))) { +// if( $contact['network'] === NETWORK_DIASPORA) +// $diaspora_handle = $contact['addr']; +// else { + // Only works for NETWORK_DFRN + $contact_baseurl_start = strpos($contact['url'],'://') + 3; + $contact_baseurl_length = strpos($contact['url'],'/profile') - $contact_baseurl_start; + $contact_baseurl = substr($contact['url'], $contact_baseurl_start, $contact_baseurl_length); + $diaspora_handle = $contact['nick'] . '@' . $contact_baseurl; + + // Get contact's private key if he's a user of the local Friendica server + $r = q("SELECT `contact`.`uid` FROM `contact` WHERE `url` = '%s' AND `self` = 1 LIMIT 1", + dbesc($contact['url']) + ); + + if( $r) { + $contact_uid = $r['uid']; + $r = q("SELECT prvkey FROM user WHERE uid = %d LIMIT 1", + intval($contact_uid) + ); + + if( $r) + $contact_uprvkey = $r['prvkey']; } +// } $r = q("SELECT guid, parent FROM `item` WHERE id = %d LIMIT 1", intval($post_id) @@ -308,13 +350,5 @@ EOT; } } - - $arr['id'] = $post_id; - - call_hooks('post_local_end', $arr); - - proc_run('php',"include/notifier.php","like","$post_id"); - - killme(); -// return; // NOTREACHED + return; } diff --git a/mod/settings.php b/mod/settings.php index 92593d7a8..b1c3cf7d4 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -677,6 +677,14 @@ function settings_content(&$a) { $tpl = get_markup_template("settings_connectors.tpl"); + + if(! service_class_allows(local_user(),'email_connect')) { + $mail_disabled_message = upgrade_bool_message(); + } + else { + $mail_disabled_message = (($mail_disabled) ? t('Email access is disabled on this site.') : ''); + } + $o .= replace_macros($tpl, array( '$form_security_token' => get_form_security_token("settings_connectors"), @@ -688,7 +696,7 @@ function settings_content(&$a) { '$h_imap' => t('Email/Mailbox Setup'), '$imap_desc' => t("If you wish to communicate with email contacts using this service \x28optional\x29, please specify how to connect to your mailbox."), '$imap_lastcheck' => array('imap_lastcheck', t('Last successful email check:'), $mail_chk,''), - '$mail_disabled' => (($mail_disabled) ? t('Email access is disabled on this site.') : ''), + '$mail_disabled' => $mail_disabled_message, '$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( 'notls'=>t('None'), 'TLS'=>'TLS', 'SSL'=>'SSL')), @@ -921,18 +929,12 @@ function settings_content(&$a) { )); - - - $invisible = (((! $profile['publish']) && (! $profile['net-publish'])) ? true : false); if($invisible) info( t('Profile is <strong>not published</strong>.') . EOL ); - - - $subdir = ((strlen($a->get_path())) ? '<br />' . t('or') . ' ' . $a->get_baseurl(true) . '/profile/' . $nickname : ''); @@ -1029,17 +1031,6 @@ function settings_content(&$a) { '$h_descadvn' => t('Change the behaviour of this account for special situations'), '$pagetype' => $pagetype, - - - - - - - - - - - )); call_hooks('settings_form',$o); diff --git a/mod/wall_attach.php b/mod/wall_attach.php index 03d9f5105..f179b3ca5 100644 --- a/mod/wall_attach.php +++ b/mod/wall_attach.php @@ -60,6 +60,19 @@ function wall_attach_post(&$a) { return; } + $r = q("select sum(octet_length(data)) as total from attach where uid = %d ", + intval($page_owner_uid) + ); + + $limit = service_class_fetch($page_owner_uid,'attach_upload_limit'); + + if(($limit !== false) && (($r[0]['total'] + strlen($imagedata)) > $limit)) { + echo upgrade_message(true) . EOL ; + @unlink($src); + killme(); + } + + $filedata = @file_get_contents($src); $mimetype = z_mime_content_type($filename); $hash = random_string(); diff --git a/mod/wall_upload.php b/mod/wall_upload.php index 4b81f8d1c..5990f2834 100644 --- a/mod/wall_upload.php +++ b/mod/wall_upload.php @@ -79,6 +79,19 @@ function wall_upload_post(&$a) { killme(); } + $r = q("select sum(octet_length(data)) as total from photo where uid = %d and scale = 0 and album != 'Contact Photos' ", + intval($page_owner_uid) + ); + + $limit = service_class_fetch($page_owner_uid,'photo_upload_limit'); + + if(($limit !== false) && (($r[0]['total'] + strlen($imagedata)) > $limit)) { + echo upgrade_message(true) . EOL ; + @unlink($src); + killme(); + } + + $imagedata = @file_get_contents($src); $ph = new Photo($imagedata, $filetype); diff --git a/update.php b/update.php index eeb8b07b1..b8e247f57 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ <?php -define( 'UPDATE_VERSION' , 1150 ); +define( 'UPDATE_VERSION' , 1151 ); /** * @@ -1298,3 +1298,12 @@ function update_1149() { return UPDATE_FAILED; return UPDATE_SUCCESS; } + + +function update_1150() { + $r = q("ALTER TABLE event ADD summary text NOT NULL after finish, add index ( uid ), add index ( cid ), add index ( uri ), add index ( `start` ), add index ( finish ), add index ( `type` ), add index ( adjust ) "); + if(! $r) + return UPDATE_FAILED; + return UPDATE_SUCCESS; +} + diff --git a/util/messages.po b/util/messages.po index 87e2e0ac6..0ce5eb526 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1384\n" +"Project-Id-Version: 3.0.1386\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-24 10:00-0700\n" +"POT-Creation-Date: 2012-06-26 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -35,8 +35,8 @@ msgid "Contact update failed." msgstr "" #: ../../mod/crepair.php:115 ../../mod/wall_attach.php:44 -#: ../../mod/fsuggest.php:78 ../../mod/events.php:138 ../../mod/api.php:26 -#: ../../mod/api.php:31 ../../mod/photos.php:133 ../../mod/photos.php:931 +#: ../../mod/fsuggest.php:78 ../../mod/events.php:140 ../../mod/api.php:26 +#: ../../mod/api.php:31 ../../mod/photos.php:135 ../../mod/photos.php:951 #: ../../mod/editpost.php:10 ../../mod/install.php:151 #: ../../mod/notifications.php:66 ../../mod/contacts.php:145 #: ../../mod/settings.php:106 ../../mod/settings.php:537 @@ -52,11 +52,11 @@ msgstr "" #: ../../mod/message.php:97 ../../mod/allfriends.php:9 #: ../../mod/nogroup.php:25 ../../mod/wall_upload.php:53 #: ../../mod/follow.php:9 ../../mod/display.php:138 ../../mod/profiles.php:7 -#: ../../mod/profiles.php:385 ../../mod/delegate.php:6 +#: ../../mod/profiles.php:400 ../../mod/delegate.php:6 #: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81 #: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:508 -#: ../../addon/dav/layout.fnk.php:353 ../../include/items.php:3411 -#: ../../index.php:309 +#: ../../addon/facebook/facebook.php:514 ../../addon/dav/layout.fnk.php:353 +#: ../../include/items.php:3447 ../../index.php:309 msgid "Permission denied." msgstr "" @@ -123,18 +123,18 @@ msgid "New photo from this URL" msgstr "" #: ../../mod/crepair.php:166 ../../mod/fsuggest.php:107 -#: ../../mod/events.php:428 ../../mod/photos.php:966 ../../mod/photos.php:1024 -#: ../../mod/photos.php:1270 ../../mod/photos.php:1310 -#: ../../mod/photos.php:1350 ../../mod/photos.php:1381 +#: ../../mod/events.php:436 ../../mod/photos.php:986 ../../mod/photos.php:1057 +#: ../../mod/photos.php:1303 ../../mod/photos.php:1343 +#: ../../mod/photos.php:1383 ../../mod/photos.php:1414 #: ../../mod/install.php:246 ../../mod/install.php:284 #: ../../mod/localtime.php:45 ../../mod/contacts.php:343 #: ../../mod/settings.php:555 ../../mod/settings.php:701 #: ../../mod/settings.php:762 ../../mod/settings.php:969 #: ../../mod/group.php:85 ../../mod/message.php:216 ../../mod/message.php:410 #: ../../mod/admin.php:420 ../../mod/admin.php:656 ../../mod/admin.php:792 -#: ../../mod/admin.php:991 ../../mod/admin.php:1078 ../../mod/profiles.php:554 +#: ../../mod/admin.php:991 ../../mod/admin.php:1078 ../../mod/profiles.php:569 #: ../../mod/invite.php:119 ../../addon/fromgplus/fromgplus.php:40 -#: ../../addon/facebook/facebook.php:610 +#: ../../addon/facebook/facebook.php:617 #: ../../addon/snautofollow/snautofollow.php:64 #: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93 #: ../../addon/nsfw/nsfw.php:57 ../../addon/page/page.php:164 @@ -194,7 +194,7 @@ msgstr "" msgid "File exceeds size limit of %d" msgstr "" -#: ../../mod/wall_attach.php:86 ../../mod/wall_attach.php:97 +#: ../../mod/wall_attach.php:99 ../../mod/wall_attach.php:110 msgid "File upload failed." msgstr "" @@ -211,79 +211,87 @@ msgstr "" msgid "Suggest a friend for %s" msgstr "" -#: ../../mod/events.php:65 -msgid "Event description and start time are required." +#: ../../mod/events.php:66 +msgid "Event title and start time are required." msgstr "" -#: ../../mod/events.php:258 +#: ../../mod/events.php:260 msgid "l, F j" msgstr "" -#: ../../mod/events.php:280 +#: ../../mod/events.php:282 msgid "Edit event" msgstr "" -#: ../../mod/events.php:300 ../../include/text.php:1065 +#: ../../mod/events.php:304 ../../include/text.php:1065 msgid "link to source" msgstr "" -#: ../../mod/events.php:324 ../../view/theme/diabook/theme.php:131 +#: ../../mod/events.php:328 ../../view/theme/diabook/theme.php:131 #: ../../include/nav.php:52 ../../boot.php:1546 msgid "Events" msgstr "" -#: ../../mod/events.php:325 +#: ../../mod/events.php:329 msgid "Create New Event" msgstr "" -#: ../../mod/events.php:326 ../../addon/dav/layout.fnk.php:154 +#: ../../mod/events.php:330 ../../addon/dav/layout.fnk.php:154 msgid "Previous" msgstr "" -#: ../../mod/events.php:327 ../../mod/install.php:205 +#: ../../mod/events.php:331 ../../mod/install.php:205 #: ../../addon/dav/layout.fnk.php:157 msgid "Next" msgstr "" -#: ../../mod/events.php:399 +#: ../../mod/events.php:404 msgid "hour:minute" msgstr "" -#: ../../mod/events.php:408 +#: ../../mod/events.php:414 msgid "Event details" msgstr "" -#: ../../mod/events.php:409 +#: ../../mod/events.php:415 #, php-format -msgid "Format is %s %s. Starting date and Description are required." +msgid "Format is %s %s. Starting date and Title are required." msgstr "" -#: ../../mod/events.php:411 +#: ../../mod/events.php:417 msgid "Event Starts:" msgstr "" -#: ../../mod/events.php:414 +#: ../../mod/events.php:417 ../../mod/events.php:431 +msgid "Required" +msgstr "" + +#: ../../mod/events.php:420 msgid "Finish date/time is not known or not relevant" msgstr "" -#: ../../mod/events.php:416 +#: ../../mod/events.php:422 msgid "Event Finishes:" msgstr "" -#: ../../mod/events.php:419 +#: ../../mod/events.php:425 msgid "Adjust for viewer timezone" msgstr "" -#: ../../mod/events.php:421 +#: ../../mod/events.php:427 msgid "Description:" msgstr "" -#: ../../mod/events.php:423 ../../include/event.php:37 -#: ../../include/bb2diaspora.php:355 ../../boot.php:1126 +#: ../../mod/events.php:429 ../../include/event.php:40 +#: ../../include/bb2diaspora.php:357 ../../boot.php:1126 msgid "Location:" msgstr "" -#: ../../mod/events.php:425 +#: ../../mod/events.php:431 +msgid "Title:" +msgstr "" + +#: ../../mod/events.php:433 msgid "Share this event" msgstr "" @@ -340,7 +348,7 @@ msgstr "" #: ../../mod/settings.php:956 ../../mod/settings.php:957 #: ../../mod/settings.php:958 ../../mod/settings.php:959 #: ../../mod/settings.php:960 ../../mod/register.php:234 -#: ../../mod/profiles.php:531 +#: ../../mod/profiles.php:546 msgid "Yes" msgstr "" @@ -352,36 +360,36 @@ msgstr "" #: ../../mod/settings.php:956 ../../mod/settings.php:957 #: ../../mod/settings.php:958 ../../mod/settings.php:959 #: ../../mod/settings.php:960 ../../mod/register.php:235 -#: ../../mod/profiles.php:532 +#: ../../mod/profiles.php:547 msgid "No" msgstr "" -#: ../../mod/photos.php:44 ../../boot.php:1540 +#: ../../mod/photos.php:46 ../../boot.php:1540 msgid "Photo Albums" msgstr "" -#: ../../mod/photos.php:52 ../../mod/photos.php:154 ../../mod/photos.php:945 -#: ../../mod/photos.php:1016 ../../mod/photos.php:1031 -#: ../../mod/photos.php:1459 ../../mod/photos.php:1471 +#: ../../mod/photos.php:54 ../../mod/photos.php:156 ../../mod/photos.php:965 +#: ../../mod/photos.php:1049 ../../mod/photos.php:1064 +#: ../../mod/photos.php:1492 ../../mod/photos.php:1504 #: ../../addon/communityhome/communityhome.php:110 #: ../../view/theme/diabook/theme.php:598 msgid "Contact Photos" msgstr "" -#: ../../mod/photos.php:59 ../../mod/photos.php:1041 ../../mod/photos.php:1509 +#: ../../mod/photos.php:61 ../../mod/photos.php:1074 ../../mod/photos.php:1542 msgid "Upload New Photos" msgstr "" -#: ../../mod/photos.php:70 ../../mod/settings.php:21 +#: ../../mod/photos.php:72 ../../mod/settings.php:21 msgid "everybody" msgstr "" -#: ../../mod/photos.php:143 +#: ../../mod/photos.php:145 msgid "Contact information unavailable" msgstr "" -#: ../../mod/photos.php:154 ../../mod/photos.php:658 ../../mod/photos.php:1016 -#: ../../mod/photos.php:1031 ../../mod/profile_photo.php:60 +#: ../../mod/photos.php:156 ../../mod/photos.php:660 ../../mod/photos.php:1049 +#: ../../mod/photos.php:1064 ../../mod/profile_photo.php:60 #: ../../mod/profile_photo.php:67 ../../mod/profile_photo.php:74 #: ../../mod/profile_photo.php:176 ../../mod/profile_photo.php:254 #: ../../mod/profile_photo.php:263 @@ -391,23 +399,23 @@ msgstr "" msgid "Profile Photos" msgstr "" -#: ../../mod/photos.php:164 +#: ../../mod/photos.php:166 msgid "Album not found." msgstr "" -#: ../../mod/photos.php:182 ../../mod/photos.php:1025 +#: ../../mod/photos.php:184 ../../mod/photos.php:1058 msgid "Delete Album" msgstr "" -#: ../../mod/photos.php:245 ../../mod/photos.php:1271 +#: ../../mod/photos.php:247 ../../mod/photos.php:1304 msgid "Delete Photo" msgstr "" -#: ../../mod/photos.php:589 +#: ../../mod/photos.php:591 msgid "was tagged in a" msgstr "" -#: ../../mod/photos.php:589 ../../mod/like.php:185 ../../mod/tagger.php:70 +#: ../../mod/photos.php:591 ../../mod/like.php:144 ../../mod/tagger.php:70 #: ../../addon/communityhome/communityhome.php:163 #: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1316 #: ../../include/diaspora.php:1710 ../../include/conversation.php:53 @@ -415,176 +423,186 @@ msgstr "" msgid "photo" msgstr "" -#: ../../mod/photos.php:589 +#: ../../mod/photos.php:591 msgid "by" msgstr "" -#: ../../mod/photos.php:694 ../../addon/js_upload/js_upload.php:315 +#: ../../mod/photos.php:696 ../../addon/js_upload/js_upload.php:315 msgid "Image exceeds size limit of " msgstr "" -#: ../../mod/photos.php:702 +#: ../../mod/photos.php:704 msgid "Image file is empty." msgstr "" -#: ../../mod/photos.php:716 ../../mod/profile_photo.php:126 -#: ../../mod/wall_upload.php:86 +#: ../../mod/photos.php:736 ../../mod/profile_photo.php:126 +#: ../../mod/wall_upload.php:99 msgid "Unable to process image." msgstr "" -#: ../../mod/photos.php:737 ../../mod/profile_photo.php:259 -#: ../../mod/wall_upload.php:105 +#: ../../mod/photos.php:757 ../../mod/profile_photo.php:259 +#: ../../mod/wall_upload.php:118 msgid "Image upload failed." msgstr "" -#: ../../mod/photos.php:823 ../../mod/community.php:16 +#: ../../mod/photos.php:843 ../../mod/community.php:16 #: ../../mod/dfrn_request.php:759 ../../mod/viewcontacts.php:17 #: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:29 msgid "Public access denied." msgstr "" -#: ../../mod/photos.php:833 +#: ../../mod/photos.php:853 msgid "No photos selected" msgstr "" -#: ../../mod/photos.php:912 +#: ../../mod/photos.php:932 msgid "Access to this item is restricted." msgstr "" -#: ../../mod/photos.php:973 +#: ../../mod/photos.php:996 +#, php-format +msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage." +msgstr "" + +#: ../../mod/photos.php:999 +#, php-format +msgid "You have used %1$.2f Mbytes of photo storage." +msgstr "" + +#: ../../mod/photos.php:1005 msgid "Upload Photos" msgstr "" -#: ../../mod/photos.php:976 ../../mod/photos.php:1020 +#: ../../mod/photos.php:1009 ../../mod/photos.php:1053 msgid "New album name: " msgstr "" -#: ../../mod/photos.php:977 +#: ../../mod/photos.php:1010 msgid "or existing album name: " msgstr "" -#: ../../mod/photos.php:978 +#: ../../mod/photos.php:1011 msgid "Do not show a status post for this upload" msgstr "" -#: ../../mod/photos.php:980 ../../mod/photos.php:1266 +#: ../../mod/photos.php:1013 ../../mod/photos.php:1299 msgid "Permissions" msgstr "" -#: ../../mod/photos.php:1035 +#: ../../mod/photos.php:1068 msgid "Edit Album" msgstr "" -#: ../../mod/photos.php:1059 ../../mod/photos.php:1492 +#: ../../mod/photos.php:1092 ../../mod/photos.php:1525 msgid "View Photo" msgstr "" -#: ../../mod/photos.php:1094 +#: ../../mod/photos.php:1127 msgid "Permission denied. Access to this item may be restricted." msgstr "" -#: ../../mod/photos.php:1096 +#: ../../mod/photos.php:1129 msgid "Photo not available" msgstr "" -#: ../../mod/photos.php:1146 +#: ../../mod/photos.php:1179 msgid "View photo" msgstr "" -#: ../../mod/photos.php:1146 +#: ../../mod/photos.php:1179 msgid "Edit photo" msgstr "" -#: ../../mod/photos.php:1147 +#: ../../mod/photos.php:1180 msgid "Use as profile photo" msgstr "" -#: ../../mod/photos.php:1153 ../../include/conversation.php:490 +#: ../../mod/photos.php:1186 ../../include/conversation.php:490 msgid "Private Message" msgstr "" -#: ../../mod/photos.php:1175 +#: ../../mod/photos.php:1208 msgid "View Full Size" msgstr "" -#: ../../mod/photos.php:1243 +#: ../../mod/photos.php:1276 msgid "Tags: " msgstr "" -#: ../../mod/photos.php:1246 +#: ../../mod/photos.php:1279 msgid "[Remove any tag]" msgstr "" -#: ../../mod/photos.php:1256 +#: ../../mod/photos.php:1289 msgid "Rotate CW (right)" msgstr "" -#: ../../mod/photos.php:1257 +#: ../../mod/photos.php:1290 msgid "Rotate CCW (left)" msgstr "" -#: ../../mod/photos.php:1259 +#: ../../mod/photos.php:1292 msgid "New album name" msgstr "" -#: ../../mod/photos.php:1262 +#: ../../mod/photos.php:1295 msgid "Caption" msgstr "" -#: ../../mod/photos.php:1264 +#: ../../mod/photos.php:1297 msgid "Add a Tag" msgstr "" -#: ../../mod/photos.php:1268 +#: ../../mod/photos.php:1301 msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgstr "" -#: ../../mod/photos.php:1288 ../../include/conversation.php:554 +#: ../../mod/photos.php:1321 ../../include/conversation.php:554 msgid "I like this (toggle)" msgstr "" -#: ../../mod/photos.php:1289 ../../include/conversation.php:555 +#: ../../mod/photos.php:1322 ../../include/conversation.php:555 msgid "I don't like this (toggle)" msgstr "" -#: ../../mod/photos.php:1290 ../../include/conversation.php:993 +#: ../../mod/photos.php:1323 ../../include/conversation.php:993 msgid "Share" msgstr "" -#: ../../mod/photos.php:1291 ../../mod/editpost.php:104 +#: ../../mod/photos.php:1324 ../../mod/editpost.php:104 #: ../../mod/wallmessage.php:145 ../../mod/message.php:215 #: ../../mod/message.php:411 ../../include/conversation.php:371 #: ../../include/conversation.php:731 ../../include/conversation.php:1012 msgid "Please wait" msgstr "" -#: ../../mod/photos.php:1307 ../../mod/photos.php:1347 -#: ../../mod/photos.php:1378 ../../include/conversation.php:577 +#: ../../mod/photos.php:1340 ../../mod/photos.php:1380 +#: ../../mod/photos.php:1411 ../../include/conversation.php:577 msgid "This is you" msgstr "" -#: ../../mod/photos.php:1309 ../../mod/photos.php:1349 -#: ../../mod/photos.php:1380 ../../include/conversation.php:579 +#: ../../mod/photos.php:1342 ../../mod/photos.php:1382 +#: ../../mod/photos.php:1413 ../../include/conversation.php:579 #: ../../boot.php:518 msgid "Comment" msgstr "" -#: ../../mod/photos.php:1311 ../../mod/editpost.php:125 +#: ../../mod/photos.php:1344 ../../mod/editpost.php:125 #: ../../include/conversation.php:589 ../../include/conversation.php:1030 msgid "Preview" msgstr "" -#: ../../mod/photos.php:1408 ../../mod/settings.php:618 +#: ../../mod/photos.php:1441 ../../mod/settings.php:618 #: ../../mod/settings.php:699 ../../mod/group.php:168 ../../mod/admin.php:663 #: ../../include/conversation.php:328 ../../include/conversation.php:609 msgid "Delete" msgstr "" -#: ../../mod/photos.php:1498 +#: ../../mod/photos.php:1531 msgid "View Album" msgstr "" -#: ../../mod/photos.php:1507 +#: ../../mod/photos.php:1540 msgid "Recent Photos" msgstr "" @@ -827,7 +845,7 @@ msgstr "" msgid "Confirm" msgstr "" -#: ../../mod/dfrn_request.php:715 ../../include/items.php:2805 +#: ../../mod/dfrn_request.php:715 ../../include/items.php:2873 msgid "[Name Withheld]" msgstr "" @@ -1153,7 +1171,7 @@ msgid "" msgstr "" #: ../../mod/localtime.php:12 ../../include/event.php:11 -#: ../../include/bb2diaspora.php:333 +#: ../../include/bb2diaspora.php:335 msgid "l F d, Y \\@ g:i A" msgstr "" @@ -1726,10 +1744,10 @@ msgstr "" #: ../../mod/lostpass.php:45 ../../mod/lostpass.php:107 #: ../../mod/register.php:90 ../../mod/register.php:144 #: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:752 -#: ../../addon/facebook/facebook.php:693 -#: ../../addon/facebook/facebook.php:1183 +#: ../../addon/facebook/facebook.php:700 +#: ../../addon/facebook/facebook.php:1190 #: ../../addon/public_server/public_server.php:62 -#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2814 +#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2882 #: ../../boot.php:720 msgid "Administrator" msgstr "" @@ -2420,7 +2438,7 @@ msgid "Personal Notes" msgstr "" #: ../../mod/notes.php:63 ../../mod/filer.php:30 -#: ../../addon/facebook/facebook.php:761 +#: ../../addon/facebook/facebook.php:768 #: ../../addon/privacy_image_cache/privacy_image_cache.php:187 #: ../../addon/dav/layout.fnk.php:384 ../../include/text.php:652 msgid "Save" @@ -2665,7 +2683,7 @@ msgid "Profile Visibility Editor" msgstr "" #: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:128 -#: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:79 +#: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:84 #: ../../include/nav.php:50 ../../boot.php:1531 msgid "Profile" msgstr "" @@ -2778,8 +2796,8 @@ msgstr "" msgid "People Search" msgstr "" -#: ../../mod/like.php:185 ../../mod/like.php:260 ../../mod/tagger.php:70 -#: ../../addon/facebook/facebook.php:1577 +#: ../../mod/like.php:144 ../../mod/like.php:301 ../../mod/tagger.php:70 +#: ../../addon/facebook/facebook.php:1584 #: ../../addon/communityhome/communityhome.php:158 #: ../../addon/communityhome/communityhome.php:167 #: ../../view/theme/diabook/theme.php:565 @@ -2789,7 +2807,7 @@ msgstr "" msgid "status" msgstr "" -#: ../../mod/like.php:202 ../../addon/facebook/facebook.php:1581 +#: ../../mod/like.php:161 ../../addon/facebook/facebook.php:1588 #: ../../addon/communityhome/communityhome.php:172 #: ../../view/theme/diabook/theme.php:579 ../../include/diaspora.php:1726 #: ../../include/conversation.php:65 @@ -2797,14 +2815,14 @@ msgstr "" msgid "%1$s likes %2$s's %3$s" msgstr "" -#: ../../mod/like.php:204 ../../include/conversation.php:68 +#: ../../mod/like.php:163 ../../include/conversation.php:68 #, php-format msgid "%1$s doesn't like %2$s's %3$s" msgstr "" #: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:159 #: ../../mod/admin.php:700 ../../mod/admin.php:899 ../../mod/display.php:37 -#: ../../mod/display.php:142 ../../include/items.php:3258 +#: ../../mod/display.php:142 ../../include/items.php:3326 msgid "Item not found." msgstr "" @@ -2842,34 +2860,34 @@ msgstr "" msgid "Empty post discarded." msgstr "" -#: ../../mod/item.php:379 ../../mod/wall_upload.php:102 -#: ../../mod/wall_upload.php:111 ../../mod/wall_upload.php:118 +#: ../../mod/item.php:379 ../../mod/wall_upload.php:115 +#: ../../mod/wall_upload.php:124 ../../mod/wall_upload.php:131 #: ../../include/message.php:144 msgid "Wall Photos" msgstr "" -#: ../../mod/item.php:800 +#: ../../mod/item.php:784 msgid "System error. Post not saved." msgstr "" -#: ../../mod/item.php:825 +#: ../../mod/item.php:809 #, php-format msgid "" "This message was sent to you by %s, a member of the Friendica social network." msgstr "" -#: ../../mod/item.php:827 +#: ../../mod/item.php:811 #, php-format msgid "You may visit them online at %s" msgstr "" -#: ../../mod/item.php:828 +#: ../../mod/item.php:812 msgid "" "Please contact the sender by replying to this post if you do not wish to " "receive these messages." msgstr "" -#: ../../mod/item.php:830 +#: ../../mod/item.php:814 #, php-format msgid "%s posted an update." msgstr "" @@ -3720,8 +3738,8 @@ msgstr "" msgid "Search" msgstr "" -#: ../../mod/profiles.php:21 ../../mod/profiles.php:395 -#: ../../mod/profiles.php:509 ../../mod/dfrn_confirm.php:62 +#: ../../mod/profiles.php:21 ../../mod/profiles.php:410 +#: ../../mod/profiles.php:524 ../../mod/dfrn_confirm.php:62 msgid "Profile not found." msgstr "" @@ -3729,285 +3747,301 @@ msgstr "" msgid "Profile Name is required." msgstr "" -#: ../../mod/profiles.php:152 +#: ../../mod/profiles.php:155 msgid "Marital Status" msgstr "" -#: ../../mod/profiles.php:156 +#: ../../mod/profiles.php:159 msgid "Romantic Partner" msgstr "" -#: ../../mod/profiles.php:160 +#: ../../mod/profiles.php:163 +msgid "Likes" +msgstr "" + +#: ../../mod/profiles.php:167 +msgid "Dislikes" +msgstr "" + +#: ../../mod/profiles.php:171 msgid "Work/Employment" msgstr "" -#: ../../mod/profiles.php:163 +#: ../../mod/profiles.php:174 msgid "Religion" msgstr "" -#: ../../mod/profiles.php:167 +#: ../../mod/profiles.php:178 msgid "Political Views" msgstr "" -#: ../../mod/profiles.php:171 +#: ../../mod/profiles.php:182 msgid "Gender" msgstr "" -#: ../../mod/profiles.php:175 +#: ../../mod/profiles.php:186 msgid "Sexual Preference" msgstr "" -#: ../../mod/profiles.php:179 +#: ../../mod/profiles.php:190 msgid "Homepage" msgstr "" -#: ../../mod/profiles.php:183 +#: ../../mod/profiles.php:194 msgid "Interests" msgstr "" -#: ../../mod/profiles.php:187 +#: ../../mod/profiles.php:198 msgid "Address" msgstr "" -#: ../../mod/profiles.php:194 ../../addon/dav/layout.fnk.php:310 +#: ../../mod/profiles.php:205 ../../addon/dav/layout.fnk.php:310 msgid "Location" msgstr "" -#: ../../mod/profiles.php:273 +#: ../../mod/profiles.php:288 msgid "Profile updated." msgstr "" -#: ../../mod/profiles.php:340 +#: ../../mod/profiles.php:355 msgid " and " msgstr "" -#: ../../mod/profiles.php:348 +#: ../../mod/profiles.php:363 msgid "public profile" msgstr "" -#: ../../mod/profiles.php:351 +#: ../../mod/profiles.php:366 #, php-format msgid "%1$s changed %2$s to “%3$s”" msgstr "" -#: ../../mod/profiles.php:352 +#: ../../mod/profiles.php:367 #, php-format msgid " - Visit %1$s's %2$s" msgstr "" -#: ../../mod/profiles.php:355 +#: ../../mod/profiles.php:370 #, php-format msgid "%1$s has an updated %2$s, changing %3$s." msgstr "" -#: ../../mod/profiles.php:414 +#: ../../mod/profiles.php:429 msgid "Profile deleted." msgstr "" -#: ../../mod/profiles.php:432 ../../mod/profiles.php:466 +#: ../../mod/profiles.php:447 ../../mod/profiles.php:481 msgid "Profile-" msgstr "" -#: ../../mod/profiles.php:451 ../../mod/profiles.php:493 +#: ../../mod/profiles.php:466 ../../mod/profiles.php:508 msgid "New profile created." msgstr "" -#: ../../mod/profiles.php:472 +#: ../../mod/profiles.php:487 msgid "Profile unavailable to clone." msgstr "" -#: ../../mod/profiles.php:530 +#: ../../mod/profiles.php:545 msgid "Hide your contact/friend list from viewers of this profile?" msgstr "" -#: ../../mod/profiles.php:553 +#: ../../mod/profiles.php:568 msgid "Edit Profile Details" msgstr "" -#: ../../mod/profiles.php:555 +#: ../../mod/profiles.php:570 msgid "View this profile" msgstr "" -#: ../../mod/profiles.php:556 +#: ../../mod/profiles.php:571 msgid "Create a new profile using these settings" msgstr "" -#: ../../mod/profiles.php:557 +#: ../../mod/profiles.php:572 msgid "Clone this profile" msgstr "" -#: ../../mod/profiles.php:558 +#: ../../mod/profiles.php:573 msgid "Delete this profile" msgstr "" -#: ../../mod/profiles.php:559 +#: ../../mod/profiles.php:574 msgid "Profile Name:" msgstr "" -#: ../../mod/profiles.php:560 +#: ../../mod/profiles.php:575 msgid "Your Full Name:" msgstr "" -#: ../../mod/profiles.php:561 +#: ../../mod/profiles.php:576 msgid "Title/Description:" msgstr "" -#: ../../mod/profiles.php:562 +#: ../../mod/profiles.php:577 msgid "Your Gender:" msgstr "" -#: ../../mod/profiles.php:563 +#: ../../mod/profiles.php:578 #, php-format msgid "Birthday (%s):" msgstr "" -#: ../../mod/profiles.php:564 +#: ../../mod/profiles.php:579 msgid "Street Address:" msgstr "" -#: ../../mod/profiles.php:565 +#: ../../mod/profiles.php:580 msgid "Locality/City:" msgstr "" -#: ../../mod/profiles.php:566 +#: ../../mod/profiles.php:581 msgid "Postal/Zip Code:" msgstr "" -#: ../../mod/profiles.php:567 +#: ../../mod/profiles.php:582 msgid "Country:" msgstr "" -#: ../../mod/profiles.php:568 +#: ../../mod/profiles.php:583 msgid "Region/State:" msgstr "" -#: ../../mod/profiles.php:569 +#: ../../mod/profiles.php:584 msgid "<span class=\"heart\">♥</span> Marital Status:" msgstr "" -#: ../../mod/profiles.php:570 +#: ../../mod/profiles.php:585 msgid "Who: (if applicable)" msgstr "" -#: ../../mod/profiles.php:571 +#: ../../mod/profiles.php:586 msgid "Examples: cathy123, Cathy Williams, cathy@example.com" msgstr "" -#: ../../mod/profiles.php:572 +#: ../../mod/profiles.php:587 msgid "Since [date]:" msgstr "" -#: ../../mod/profiles.php:573 ../../include/profile_advanced.php:46 +#: ../../mod/profiles.php:588 ../../include/profile_advanced.php:46 msgid "Sexual Preference:" msgstr "" -#: ../../mod/profiles.php:574 +#: ../../mod/profiles.php:589 msgid "Homepage URL:" msgstr "" -#: ../../mod/profiles.php:575 ../../include/profile_advanced.php:50 +#: ../../mod/profiles.php:590 ../../include/profile_advanced.php:50 msgid "Hometown:" msgstr "" -#: ../../mod/profiles.php:576 ../../include/profile_advanced.php:54 +#: ../../mod/profiles.php:591 ../../include/profile_advanced.php:54 msgid "Political Views:" msgstr "" -#: ../../mod/profiles.php:577 +#: ../../mod/profiles.php:592 msgid "Religious Views:" msgstr "" -#: ../../mod/profiles.php:578 +#: ../../mod/profiles.php:593 msgid "Public Keywords:" msgstr "" -#: ../../mod/profiles.php:579 +#: ../../mod/profiles.php:594 msgid "Private Keywords:" msgstr "" -#: ../../mod/profiles.php:580 +#: ../../mod/profiles.php:595 ../../include/profile_advanced.php:62 +msgid "Likes:" +msgstr "" + +#: ../../mod/profiles.php:596 ../../include/profile_advanced.php:64 +msgid "Dislikes:" +msgstr "" + +#: ../../mod/profiles.php:597 msgid "Example: fishing photography software" msgstr "" -#: ../../mod/profiles.php:581 +#: ../../mod/profiles.php:598 msgid "(Used for suggesting potential friends, can be seen by others)" msgstr "" -#: ../../mod/profiles.php:582 +#: ../../mod/profiles.php:599 msgid "(Used for searching profiles, never shown to others)" msgstr "" -#: ../../mod/profiles.php:583 +#: ../../mod/profiles.php:600 msgid "Tell us about yourself..." msgstr "" -#: ../../mod/profiles.php:584 +#: ../../mod/profiles.php:601 msgid "Hobbies/Interests" msgstr "" -#: ../../mod/profiles.php:585 +#: ../../mod/profiles.php:602 msgid "Contact information and Social Networks" msgstr "" -#: ../../mod/profiles.php:586 +#: ../../mod/profiles.php:603 msgid "Musical interests" msgstr "" -#: ../../mod/profiles.php:587 +#: ../../mod/profiles.php:604 msgid "Books, literature" msgstr "" -#: ../../mod/profiles.php:588 +#: ../../mod/profiles.php:605 msgid "Television" msgstr "" -#: ../../mod/profiles.php:589 +#: ../../mod/profiles.php:606 msgid "Film/dance/culture/entertainment" msgstr "" -#: ../../mod/profiles.php:590 +#: ../../mod/profiles.php:607 msgid "Love/romance" msgstr "" -#: ../../mod/profiles.php:591 +#: ../../mod/profiles.php:608 msgid "Work/employment" msgstr "" -#: ../../mod/profiles.php:592 +#: ../../mod/profiles.php:609 msgid "School/education" msgstr "" -#: ../../mod/profiles.php:597 +#: ../../mod/profiles.php:614 msgid "" "This is your <strong>public</strong> profile.<br />It <strong>may</strong> " "be visible to anybody using the internet." msgstr "" -#: ../../mod/profiles.php:607 ../../mod/directory.php:111 +#: ../../mod/profiles.php:624 ../../mod/directory.php:111 msgid "Age: " msgstr "" -#: ../../mod/profiles.php:644 +#: ../../mod/profiles.php:663 msgid "Edit/Manage Profiles" msgstr "" -#: ../../mod/profiles.php:645 ../../boot.php:1092 +#: ../../mod/profiles.php:664 ../../boot.php:1092 msgid "Change profile photo" msgstr "" -#: ../../mod/profiles.php:646 ../../boot.php:1093 +#: ../../mod/profiles.php:665 ../../boot.php:1093 msgid "Create New Profile" msgstr "" -#: ../../mod/profiles.php:657 ../../boot.php:1103 +#: ../../mod/profiles.php:676 ../../boot.php:1103 msgid "Profile Image" msgstr "" -#: ../../mod/profiles.php:659 ../../boot.php:1106 +#: ../../mod/profiles.php:678 ../../boot.php:1106 msgid "visible to everybody" msgstr "" -#: ../../mod/profiles.php:660 ../../boot.php:1107 +#: ../../mod/profiles.php:679 ../../boot.php:1107 msgid "Edit visibility" msgstr "" @@ -4281,83 +4315,83 @@ msgstr "" msgid "Google+ Import Settings saved." msgstr "" -#: ../../addon/facebook/facebook.php:514 +#: ../../addon/facebook/facebook.php:521 msgid "Facebook disabled" msgstr "" -#: ../../addon/facebook/facebook.php:519 +#: ../../addon/facebook/facebook.php:526 msgid "Updating contacts" msgstr "" -#: ../../addon/facebook/facebook.php:542 +#: ../../addon/facebook/facebook.php:549 msgid "Facebook API key is missing." msgstr "" -#: ../../addon/facebook/facebook.php:549 +#: ../../addon/facebook/facebook.php:556 msgid "Facebook Connect" msgstr "" -#: ../../addon/facebook/facebook.php:555 +#: ../../addon/facebook/facebook.php:562 msgid "Install Facebook connector for this account." msgstr "" -#: ../../addon/facebook/facebook.php:562 +#: ../../addon/facebook/facebook.php:569 msgid "Remove Facebook connector" msgstr "" -#: ../../addon/facebook/facebook.php:567 +#: ../../addon/facebook/facebook.php:574 msgid "" "Re-authenticate [This is necessary whenever your Facebook password is " "changed.]" msgstr "" -#: ../../addon/facebook/facebook.php:574 +#: ../../addon/facebook/facebook.php:581 msgid "Post to Facebook by default" msgstr "" -#: ../../addon/facebook/facebook.php:580 +#: ../../addon/facebook/facebook.php:587 msgid "" "Facebook friend linking has been disabled on this site. The following " "settings will have no effect." msgstr "" -#: ../../addon/facebook/facebook.php:584 +#: ../../addon/facebook/facebook.php:591 msgid "" "Facebook friend linking has been disabled on this site. If you disable it, " "you will be unable to re-enable it." msgstr "" -#: ../../addon/facebook/facebook.php:587 +#: ../../addon/facebook/facebook.php:594 msgid "Link all your Facebook friends and conversations on this website" msgstr "" -#: ../../addon/facebook/facebook.php:589 +#: ../../addon/facebook/facebook.php:596 msgid "" "Facebook conversations consist of your <em>profile wall</em> and your friend " "<em>stream</em>." msgstr "" -#: ../../addon/facebook/facebook.php:590 +#: ../../addon/facebook/facebook.php:597 msgid "On this website, your Facebook friend stream is only visible to you." msgstr "" -#: ../../addon/facebook/facebook.php:591 +#: ../../addon/facebook/facebook.php:598 msgid "" "The following settings determine the privacy of your Facebook profile wall " "on this website." msgstr "" -#: ../../addon/facebook/facebook.php:595 +#: ../../addon/facebook/facebook.php:602 msgid "" "On this website your Facebook profile wall conversations will only be " "visible to you" msgstr "" -#: ../../addon/facebook/facebook.php:600 +#: ../../addon/facebook/facebook.php:607 msgid "Do not import your Facebook profile wall conversations" msgstr "" -#: ../../addon/facebook/facebook.php:602 +#: ../../addon/facebook/facebook.php:609 msgid "" "If you choose to link conversations and leave both of these boxes unchecked, " "your Facebook profile wall will be merged with your profile wall on this " @@ -4365,120 +4399,120 @@ msgid "" "who may see the conversations." msgstr "" -#: ../../addon/facebook/facebook.php:607 +#: ../../addon/facebook/facebook.php:614 msgid "Comma separated applications to ignore" msgstr "" -#: ../../addon/facebook/facebook.php:691 +#: ../../addon/facebook/facebook.php:698 msgid "Problems with Facebook Real-Time Updates" msgstr "" -#: ../../addon/facebook/facebook.php:719 +#: ../../addon/facebook/facebook.php:726 #: ../../include/contact_selectors.php:81 msgid "Facebook" msgstr "" -#: ../../addon/facebook/facebook.php:720 +#: ../../addon/facebook/facebook.php:727 msgid "Facebook Connector Settings" msgstr "" -#: ../../addon/facebook/facebook.php:735 +#: ../../addon/facebook/facebook.php:742 msgid "Facebook API Key" msgstr "" -#: ../../addon/facebook/facebook.php:745 +#: ../../addon/facebook/facebook.php:752 msgid "" "Error: it appears that you have specified the App-ID and -Secret in your ." "htconfig.php file. As long as they are specified there, they cannot be set " "using this form.<br><br>" msgstr "" -#: ../../addon/facebook/facebook.php:750 +#: ../../addon/facebook/facebook.php:757 msgid "" "Error: the given API Key seems to be incorrect (the application access token " "could not be retrieved)." msgstr "" -#: ../../addon/facebook/facebook.php:752 +#: ../../addon/facebook/facebook.php:759 msgid "The given API Key seems to work correctly." msgstr "" -#: ../../addon/facebook/facebook.php:754 +#: ../../addon/facebook/facebook.php:761 msgid "" "The correctness of the API Key could not be detected. Somthing strange's " "going on." msgstr "" -#: ../../addon/facebook/facebook.php:757 +#: ../../addon/facebook/facebook.php:764 msgid "App-ID / API-Key" msgstr "" -#: ../../addon/facebook/facebook.php:758 +#: ../../addon/facebook/facebook.php:765 msgid "Application secret" msgstr "" -#: ../../addon/facebook/facebook.php:759 +#: ../../addon/facebook/facebook.php:766 #, php-format msgid "Polling Interval in minutes (minimum %1$s minutes)" msgstr "" -#: ../../addon/facebook/facebook.php:760 +#: ../../addon/facebook/facebook.php:767 msgid "" "Synchronize comments (no comments on Facebook are missed, at the cost of " "increased system load)" msgstr "" -#: ../../addon/facebook/facebook.php:764 +#: ../../addon/facebook/facebook.php:771 msgid "Real-Time Updates" msgstr "" -#: ../../addon/facebook/facebook.php:768 +#: ../../addon/facebook/facebook.php:775 msgid "Real-Time Updates are activated." msgstr "" -#: ../../addon/facebook/facebook.php:769 +#: ../../addon/facebook/facebook.php:776 msgid "Deactivate Real-Time Updates" msgstr "" -#: ../../addon/facebook/facebook.php:771 +#: ../../addon/facebook/facebook.php:778 msgid "Real-Time Updates not activated." msgstr "" -#: ../../addon/facebook/facebook.php:771 +#: ../../addon/facebook/facebook.php:778 msgid "Activate Real-Time Updates" msgstr "" -#: ../../addon/facebook/facebook.php:790 ../../addon/dav/layout.fnk.php:360 +#: ../../addon/facebook/facebook.php:797 ../../addon/dav/layout.fnk.php:360 msgid "The new values have been saved." msgstr "" -#: ../../addon/facebook/facebook.php:814 +#: ../../addon/facebook/facebook.php:821 msgid "Post to Facebook" msgstr "" -#: ../../addon/facebook/facebook.php:912 +#: ../../addon/facebook/facebook.php:919 msgid "" "Post to Facebook cancelled because of multi-network access permission " "conflict." msgstr "" -#: ../../addon/facebook/facebook.php:1132 +#: ../../addon/facebook/facebook.php:1139 msgid "View on Friendica" msgstr "" -#: ../../addon/facebook/facebook.php:1165 +#: ../../addon/facebook/facebook.php:1172 msgid "Facebook post failed. Queued for retry." msgstr "" -#: ../../addon/facebook/facebook.php:1205 +#: ../../addon/facebook/facebook.php:1212 msgid "Your Facebook connection became invalid. Please Re-authenticate." msgstr "" -#: ../../addon/facebook/facebook.php:1206 +#: ../../addon/facebook/facebook.php:1213 msgid "Facebook connection became invalid" msgstr "" -#: ../../addon/facebook/facebook.php:1207 +#: ../../addon/facebook/facebook.php:1214 #, php-format msgid "" "Hi %1$s,\n" @@ -6101,8 +6135,7 @@ msgstr "" msgid "j F" msgstr "" -#: ../../include/profile_advanced.php:30 ../../include/datetime.php:450 -#: ../../include/items.php:1460 +#: ../../include/profile_advanced.php:30 msgid "Birthday:" msgstr "" @@ -6139,35 +6172,35 @@ msgstr "" msgid "Hobbies/Interests:" msgstr "" -#: ../../include/profile_advanced.php:62 +#: ../../include/profile_advanced.php:67 msgid "Contact information and Social Networks:" msgstr "" -#: ../../include/profile_advanced.php:64 +#: ../../include/profile_advanced.php:69 msgid "Musical interests:" msgstr "" -#: ../../include/profile_advanced.php:66 +#: ../../include/profile_advanced.php:71 msgid "Books, literature:" msgstr "" -#: ../../include/profile_advanced.php:68 +#: ../../include/profile_advanced.php:73 msgid "Television:" msgstr "" -#: ../../include/profile_advanced.php:70 +#: ../../include/profile_advanced.php:75 msgid "Film/dance/culture/entertainment:" msgstr "" -#: ../../include/profile_advanced.php:72 +#: ../../include/profile_advanced.php:77 msgid "Love/Romance:" msgstr "" -#: ../../include/profile_advanced.php:74 +#: ../../include/profile_advanced.php:79 msgid "Work/employment:" msgstr "" -#: ../../include/profile_advanced.php:76 +#: ../../include/profile_advanced.php:81 msgid "School/education:" msgstr "" @@ -6475,11 +6508,11 @@ msgstr "" msgid "Ask me" msgstr "" -#: ../../include/event.php:17 ../../include/bb2diaspora.php:339 +#: ../../include/event.php:20 ../../include/bb2diaspora.php:341 msgid "Starts:" msgstr "" -#: ../../include/event.php:27 ../../include/bb2diaspora.php:347 +#: ../../include/event.php:30 ../../include/bb2diaspora.php:349 msgid "Finishes:" msgstr "" @@ -6956,15 +6989,25 @@ msgstr "" msgid "%1$d %2$s ago" msgstr "" +#: ../../include/datetime.php:450 ../../include/items.php:1460 +#, php-format +msgid "%s's birthday" +msgstr "" + +#: ../../include/datetime.php:451 ../../include/items.php:1461 +#, php-format +msgid "Happy Birthday %s" +msgstr "" + #: ../../include/onepoll.php:399 msgid "From: " msgstr "" -#: ../../include/bbcode.php:214 ../../include/bbcode.php:234 +#: ../../include/bbcode.php:216 ../../include/bbcode.php:236 msgid "$1 wrote:" msgstr "" -#: ../../include/bbcode.php:249 ../../include/bbcode.php:322 +#: ../../include/bbcode.php:251 ../../include/bbcode.php:328 msgid "Image/photo" msgstr "" @@ -7159,61 +7202,61 @@ msgid "" "This site is not configured to allow communications with other networks." msgstr "" -#: ../../include/follow.php:60 ../../include/follow.php:75 +#: ../../include/follow.php:60 ../../include/follow.php:80 msgid "No compatible communication protocols or feeds were discovered." msgstr "" -#: ../../include/follow.php:73 +#: ../../include/follow.php:78 msgid "The profile address specified does not provide adequate information." msgstr "" -#: ../../include/follow.php:77 +#: ../../include/follow.php:82 msgid "An author or name was not found." msgstr "" -#: ../../include/follow.php:79 +#: ../../include/follow.php:84 msgid "No browser URL could be matched to this address." msgstr "" -#: ../../include/follow.php:81 +#: ../../include/follow.php:86 msgid "" "Unable to match @-style Identity Address with a known protocol or email " "contact." msgstr "" -#: ../../include/follow.php:82 +#: ../../include/follow.php:87 msgid "Use mailto: in front of address to force email check." msgstr "" -#: ../../include/follow.php:88 +#: ../../include/follow.php:93 msgid "" "The profile address specified belongs to a network which has been disabled " "on this site." msgstr "" -#: ../../include/follow.php:93 +#: ../../include/follow.php:103 msgid "" "Limited profile. This person will be unable to receive direct/personal " "notifications from you." msgstr "" -#: ../../include/follow.php:169 +#: ../../include/follow.php:205 msgid "Unable to retrieve contact information." msgstr "" -#: ../../include/follow.php:223 +#: ../../include/follow.php:259 msgid "following" msgstr "" -#: ../../include/items.php:2812 +#: ../../include/items.php:2880 msgid "A new person is sharing with you at " msgstr "" -#: ../../include/items.php:2812 +#: ../../include/items.php:2880 msgid "You have a new follower at " msgstr "" -#: ../../include/items.php:3476 +#: ../../include/items.php:3512 msgid "Archives" msgstr "" @@ -7556,6 +7599,18 @@ msgstr "" msgid "permissions" msgstr "" +#: ../../include/plugin.php:388 ../../include/plugin.php:390 +msgid "Click here to upgrade." +msgstr "" + +#: ../../include/plugin.php:396 +msgid "This action exceeds the limits set by your subscription plan." +msgstr "" + +#: ../../include/plugin.php:401 +msgid "This action is not available under your subscription plan." +msgstr "" + #: ../../boot.php:517 msgid "Delete this item?" msgstr "" diff --git a/view/event_form.tpl b/view/event_form.tpl index 7d5f8cf4a..536c52b0f 100644 --- a/view/event_form.tpl +++ b/view/event_form.tpl @@ -26,6 +26,10 @@ $f_dsel $f_tsel <div id="event-adjust-break"></div> +<div id="event-summary-text">$t_text</div> +<input type="text" id="event-summary" name="summary" value="$t_orig" /> + + <div id="event-desc-text">$d_text</div> <textarea id="event-desc-textarea" name="desc">$d_orig</textarea> diff --git a/view/theme/diabook/jot.tpl b/view/theme/diabook/jot.tpl index 79151aeed..1d94cb6d3 100755 --- a/view/theme/diabook/jot.tpl +++ b/view/theme/diabook/jot.tpl @@ -70,7 +70,7 @@ <div style="display: none;"> <div id="profile-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;"> $acl - <hr style="clear:both"/> + <hr style="clear:both;"/> <div id="profile-jot-email-label">$emailcc</div><input type="text" name="emailcc" id="profile-jot-email" title="$emtitle" /> <div id="profile-jot-email-end"></div> $jotnets diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index ea3a2da9c..997c6d315 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -2421,9 +2421,40 @@ aside input[type='text'] { font-size: 20px; } +#event-summary-text { + margin-top: 15px; +} + +#event-share-checkbox { + float: left; + margin-top: 10px; +} + +#event-share-text { + float: left; + margin-top: 10px; + margin-left: 5px; +} + +#event-share-break { + clear: both; + margin-bottom: 10px; +} + +#event-summary { + width: 400px; +} + .vevent { border: 1px solid #CCCCCC; } + +.vevent .event-summary { + margin-left: 10px; + margin-right: 10px; + font-weight: bold; +} + .vevent .event-description, .vevent .event-location { margin-left: 10px; margin-right: 10px; |