This commit is contained in:
Sebastian Egbers 2012-06-26 08:33:41 +02:00
commit 0f0fb2e2f3
27 changed files with 745 additions and 471 deletions

View file

@ -10,9 +10,9 @@ require_once('include/nav.php');
require_once('include/cache.php'); require_once('include/cache.php');
define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_PLATFORM', 'Friendica');
define ( 'FRIENDICA_VERSION', '3.0.1384' ); define ( 'FRIENDICA_VERSION', '3.0.1385' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
define ( 'DB_UPDATE_VERSION', 1150 ); define ( 'DB_UPDATE_VERSION', 1151 );
define ( 'EOL', "<br />\r\n" ); define ( 'EOL', "<br />\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );

View file

@ -254,6 +254,7 @@ CREATE TABLE IF NOT EXISTS `event` (
`edited` datetime NOT NULL, `edited` datetime NOT NULL,
`start` datetime NOT NULL, `start` datetime NOT NULL,
`finish` datetime NOT NULL, `finish` datetime NOT NULL,
`summary` text NOT NULL,
`desc` text NOT NULL, `desc` text NOT NULL,
`location` text NOT NULL, `location` text NOT NULL,
`type` char(255) NOT NULL, `type` char(255) NOT NULL,
@ -263,7 +264,14 @@ CREATE TABLE IF NOT EXISTS `event` (
`allow_gid` mediumtext NOT NULL, `allow_gid` mediumtext NOT NULL,
`deny_cid` mediumtext NOT NULL, `deny_cid` mediumtext NOT NULL,
`deny_gid` 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; ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- -------------------------------------------------------- -- --------------------------------------------------------

View file

@ -565,18 +565,19 @@
if(requestdata('lat') && requestdata('long')) if(requestdata('lat') && requestdata('long'))
$_REQUEST['coord'] = sprintf("%s %s",requestdata('lat'),requestdata('long')); $_REQUEST['coord'] = sprintf("%s %s",requestdata('lat'),requestdata('long'));
$_REQUEST['profile_uid'] = local_user(); $_REQUEST['profile_uid'] = local_user();
if(requestdata('parent'))
if($parent)
$_REQUEST['type'] = 'net-comment'; $_REQUEST['type'] = 'net-comment';
else { else {
$_REQUEST['type'] = 'wall'; $_REQUEST['type'] = 'wall';
if(x($_FILES,'media')) { if(x($_FILES,'media')) {
// upload the image if we have one // upload the image if we have one
$_REQUEST['hush']='yeah'; //tell wall_upload function to return img info instead of echo $_REQUEST['hush']='yeah'; //tell wall_upload function to return img info instead of echo
require_once('mod/wall_upload.php'); require_once('mod/wall_upload.php');
$media = wall_upload_post($a); $media = wall_upload_post($a);
if(strlen($media)>0) if(strlen($media)>0)
$_REQUEST['body'] .= "\n\n".$media; $_REQUEST['body'] .= "\n\n".$media;
} }
} }
// set this so that the item_post() function is quiet and doesn't redirect or emit json // set this so that the item_post() function is quiet and doesn't redirect or emit json

View file

@ -109,20 +109,22 @@ function bb2diaspora($Text,$preserve_nl = false) {
// "<li>" into a deeper nested element until it crashes. So pre-format // "<li>" into a deeper nested element until it crashes. So pre-format
// the lists as Diaspora lists before sending the $Text to bbcode() // the lists as Diaspora lists before sending the $Text to bbcode()
// //
// Note that regular expressions are really not suitable for parsing // Note that to get nested lists to work for Diaspora, we would need
// text with opening and closing tags, so nested lists may make things // to define the closing tag for the list elements. So nested lists
// wonky // are going to be flattened out in Diaspora for now
$endlessloop = 0; $endlessloop = 0;
while ((strpos($Text, "[/list]") !== false) && (strpos($Text, "[list") !== false) && (++$endlessloop < 20)) { 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); $Text = preg_replace_callback("/\[list\](.*?)\[\/list\]/is", 'diaspora_ul', $Text);
$Text = preg_replace_callback("/\[list=1\](.*?)\[\/list\]/is", 'diaspora_ol', $Text); $Text = preg_replace_callback("/\[list=1\](.*?)\[\/list\]/is", 'diaspora_ol', $Text);
$Text = preg_replace_callback("/\[list=i\](.*?)\[\/list\]/s",'diaspora_ol', $Text); $Text = preg_replace_callback("/\[list=i\](.*?)\[\/list\]/s",'diaspora_ol', $Text);
$Text = preg_replace_callback("/\[list=I\](.*?)\[\/list\]/s", 'diaspora_ol', $Text); $Text = preg_replace_callback("/\[list=I\](.*?)\[\/list\]/s", 'diaspora_ol', $Text);
$Text = preg_replace_callback("/\[list=a\](.*?)\[\/list\]/s", 'diaspora_ol', $Text); $Text = preg_replace_callback("/\[list=a\](.*?)\[\/list\]/s", 'diaspora_ol', $Text);
$Text = preg_replace_callback("/\[list=A\](.*?)\[\/list\]/s", 'diaspora_ol', $Text); $Text = preg_replace_callback("/\[list=A\](.*?)\[\/list\]/s", 'diaspora_ol', $Text);
$Text = preg_replace_callback("/\[ul\](.*?)\[\/ul\]/is", 'diaspora_ul', $Text);
$Text = preg_replace_callback("/\[ol\](.*?)\[\/ol\]/is", 'diaspora_ol', $Text);
} }
$Text = preg_replace_callback("/\[ul\](.*?)\[\/ul\]/is", 'diaspora_ul', $Text);
$Text = preg_replace_callback("/\[ol\](.*?)\[\/ol\]/is", 'diaspora_ol', $Text);
// Convert it to HTML - don't try oembed // Convert it to HTML - don't try oembed
$Text = bbcode($Text, $preserve_nl, false); $Text = bbcode($Text, $preserve_nl, false);

View file

@ -162,7 +162,10 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) {
// handle nested lists // handle nested lists
$endlessloop = 0; $endlessloop = 0;
while ((strpos($Text, "[/list]") !== false) and (strpos($Text, "[list") !== false) and (++$endlessloop < 20)) {
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); $Text = preg_replace("/\[list\](.*?)\[\/list\]/ism", '<ul class="listbullet" style="list-style-type: circle;">$1</ul>' ,$Text);
$Text = preg_replace("/\[list=\](.*?)\[\/list\]/ism", '<ul class="listnone" style="list-style-type: none;">$1</ul>' ,$Text); $Text = preg_replace("/\[list=\](.*?)\[\/list\]/ism", '<ul class="listnone" style="list-style-type: none;">$1</ul>' ,$Text);
$Text = preg_replace("/\[list=1\](.*?)\[\/list\]/ism", '<ul class="listdecimal" style="list-style-type: decimal;">$1</ul>' ,$Text); $Text = preg_replace("/\[list=1\](.*?)\[\/list\]/ism", '<ul class="listdecimal" style="list-style-type: decimal;">$1</ul>' ,$Text);
@ -170,11 +173,10 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) {
$Text = preg_replace("/\[list=((?-i)I)\](.*?)\[\/list\]/ism", '<ul class="listupperroman" style="list-style-type: upper-roman;">$2</ul>' ,$Text); $Text = preg_replace("/\[list=((?-i)I)\](.*?)\[\/list\]/ism", '<ul class="listupperroman" style="list-style-type: upper-roman;">$2</ul>' ,$Text);
$Text = preg_replace("/\[list=((?-i)a)\](.*?)\[\/list\]/ism", '<ul class="listloweralpha" style="list-style-type: lower-alpha;">$2</ul>' ,$Text); $Text = preg_replace("/\[list=((?-i)a)\](.*?)\[\/list\]/ism", '<ul class="listloweralpha" style="list-style-type: lower-alpha;">$2</ul>' ,$Text);
$Text = preg_replace("/\[list=((?-i)A)\](.*?)\[\/list\]/ism", '<ul class="listupperalpha" style="list-style-type: upper-alpha;">$2</ul>' ,$Text); $Text = preg_replace("/\[list=((?-i)A)\](.*?)\[\/list\]/ism", '<ul class="listupperalpha" style="list-style-type: upper-alpha;">$2</ul>' ,$Text);
$Text = preg_replace("/\[ul\](.*?)\[\/ul\]/ism", '<ul class="listbullet" style="list-style-type: circle;">$1</ul>' ,$Text);
$Text = preg_replace("/\[ol\](.*?)\[\/ol\]/ism", '<ul class="listdecimal" style="list-style-type: decimal;">$1</ul>' ,$Text);
} }
$Text = preg_replace("/\[ul\](.*?)\[\/ul\]/ism", '<ul class="listbullet" style="list-style-type: circle;">$1</ul>' ,$Text);
$Text = preg_replace("/\[ol\](.*?)\[\/ol\]/ism", '<ul class="listdecimal" style="list-style-type: decimal;">$1</ul>' ,$Text);
$Text = preg_replace("/\[th\](.*?)\[\/th\]/sm", '<th>$1</th>' ,$Text); $Text = preg_replace("/\[th\](.*?)\[\/th\]/sm", '<th>$1</th>' ,$Text);
$Text = preg_replace("/\[td\](.*?)\[\/td\]/sm", '<td>$1</td>' ,$Text); $Text = preg_replace("/\[td\](.*?)\[\/td\]/sm", '<td>$1</td>' ,$Text);
$Text = preg_replace("/\[tr\](.*?)\[\/tr\]/sm", '<tr>$1</tr>' ,$Text); $Text = preg_replace("/\[tr\](.*?)\[\/tr\]/sm", '<tr>$1</tr>' ,$Text);
@ -295,12 +297,16 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) {
$Text = oembed_bbcode2html($Text); $Text = oembed_bbcode2html($Text);
// If we found an event earlier, strip out all the event code and replace with a reformatted version. // 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); $sub = format_event_html($ev);
$Text = preg_replace("/\[event\-description\](.*?)\[\/event\-description\]/ism",$sub,$Text); $Text = preg_replace("/\[event\-summary\](.*?)\[\/event\-summary\]/ism",'',$Text);
$Text = preg_replace("/\[event\-start\](.*?)\[\/event\-start\]/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\-finish\](.*?)\[\/event\-finish\]/ism",'',$Text);
$Text = preg_replace("/\[event\-location\](.*?)\[\/event\-location\]/ism",'',$Text); $Text = preg_replace("/\[event\-location\](.*?)\[\/event\-location\]/ism",'',$Text);
$Text = preg_replace("/\[event\-adjust\](.*?)\[\/event\-adjust\]/ism",'',$Text); $Text = preg_replace("/\[event\-adjust\](.*?)\[\/event\-adjust\]/ism",'',$Text);

View file

@ -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['uid']),
intval($rr['id']), intval($rr['id']),
dbesc(datetime_convert()), dbesc(datetime_convert()),
@ -459,6 +461,7 @@ function update_contact_birthdays() {
dbesc(datetime_convert('UTC','UTC', $nextbd)), dbesc(datetime_convert('UTC','UTC', $nextbd)),
dbesc(datetime_convert('UTC','UTC', $nextbd . ' + 1 day ')), dbesc(datetime_convert('UTC','UTC', $nextbd . ' + 1 day ')),
dbesc($bdtext), dbesc($bdtext),
dbesc($bdtext2),
dbesc('birthday'), dbesc('birthday'),
intval(0) intval(0)
); );

View file

@ -113,7 +113,7 @@ function delivery_run($argv, $argc){
$uid = $r[0]['uid']; $uid = $r[0]['uid'];
$updated = $r[0]['edited']; $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) if(! $parent_id)
continue; continue;

View file

@ -12,6 +12,9 @@ function format_event_html($ev) {
$o = '<div class="vevent">' . "\r\n"; $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="description event-description">' . bbcode($ev['desc']) . '</p>' . "\r\n";
$o .= '<p class="event-start">' . t('Starts:') . ' <abbr class="dtstart" title="' $o .= '<p class="event-start">' . t('Starts:') . ' <abbr class="dtstart" title="'
@ -114,6 +117,9 @@ function format_event_bbcode($ev) {
$o = ''; $o = '';
if($ev['summary'])
$o .= '[event-summary]' . $ev['summary'] . '[/event-summary]';
if($ev['desc']) if($ev['desc'])
$o .= '[event-description]' . $ev['desc'] . '[/event-description]'; $o .= '[event-description]' . $ev['desc'] . '[/event-description]';
@ -147,6 +153,9 @@ function bbtoevent($s) {
$ev = array(); $ev = array();
$match = '';
if(preg_match("/\[event\-summary\](.*?)\[\/event\-summary\]/is",$s,$match))
$ev['summary'] = $match[1];
$match = ''; $match = '';
if(preg_match("/\[event\-description\](.*?)\[\/event\-description\]/is",$s,$match)) if(preg_match("/\[event\-description\](.*?)\[\/event\-description\]/is",$s,$match))
$ev['desc'] = $match[1]; $ev['desc'] = $match[1];
@ -244,6 +253,7 @@ function event_store($arr) {
`edited` = '%s', `edited` = '%s',
`start` = '%s', `start` = '%s',
`finish` = '%s', `finish` = '%s',
`summary` = '%s',
`desc` = '%s', `desc` = '%s',
`location` = '%s', `location` = '%s',
`type` = '%s', `type` = '%s',
@ -258,6 +268,7 @@ function event_store($arr) {
dbesc($arr['edited']), dbesc($arr['edited']),
dbesc($arr['start']), dbesc($arr['start']),
dbesc($arr['finish']), dbesc($arr['finish']),
dbesc($arr['summary']),
dbesc($arr['desc']), dbesc($arr['desc']),
dbesc($arr['location']), dbesc($arr['location']),
dbesc($arr['type']), dbesc($arr['type']),
@ -306,9 +317,9 @@ function event_store($arr) {
// New event. Store it. // 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`) `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['uid']),
intval($arr['cid']), intval($arr['cid']),
dbesc($arr['uri']), dbesc($arr['uri']),
@ -316,6 +327,7 @@ function event_store($arr) {
dbesc($arr['edited']), dbesc($arr['edited']),
dbesc($arr['start']), dbesc($arr['start']),
dbesc($arr['finish']), dbesc($arr['finish']),
dbesc($arr['summary']),
dbesc($arr['desc']), dbesc($arr['desc']),
dbesc($arr['location']), dbesc($arr['location']),
dbesc($arr['type']), dbesc($arr['type']),

View file

@ -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`) $r = q("INSERT INTO `event` (`uid`,`cid`,`created`,`edited`,`start`,`finish`,`summary`,`desc`,`type`)
VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s' ) ", VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ",
intval($contact['uid']), intval($contact['uid']),
intval($contact['id']), intval($contact['id']),
dbesc(datetime_convert()), 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)),
dbesc(datetime_convert('UTC','UTC', $birthday . ' + 1 day ')), dbesc(datetime_convert('UTC','UTC', $birthday . ' + 1 day ')),
dbesc($bdtext), dbesc($bdtext),
dbesc($bdtext2),
dbesc('birthday') dbesc('birthday')
); );
@ -2148,6 +2150,67 @@ function local_delivery($importer,$data) {
} }
if($deleted) { 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` $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", WHERE `uri` = '%s' AND `item`.`uid` = %d AND `contact-id` = %d AND NOT `item`.`file` LIKE '%%[%%' LIMIT 1",
dbesc($uri), 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; $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`, $r = q("select `item`.`id`, `item`.`uri`, `item`.`tag`, `item`.`forum_mode`,`item`.`origin`,`item`.`wall`,
`contact`.`name`, `contact`.`url`, `contact`.`thumb` from `item` `contact`.`name`, `contact`.`url`, `contact`.`thumb` from `item`
LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` 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 // Add a relayable_retraction signature for Diaspora.
// if the comment was deleted by a remote user. That should be ok, because if a remote user is deleting store_diaspora_retract_sig($item, $a->user, $a->get_baseurl());
// 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)
);
} }
$drop_id = intval($item['id']); $drop_id = intval($item['id']);
@ -3479,4 +3515,53 @@ function posted_date_widget($url,$uid,$wall) {
'$dates' => $ret '$dates' => $ret
)); ));
return $o; return $o;
} }
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;
}

View file

@ -125,7 +125,7 @@ function notifier_run($argv, $argc){
$uid = $r[0]['uid']; $uid = $r[0]['uid'];
$updated = $r[0]['edited']; $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) if(! $parent_id)
return; return;

View file

@ -449,7 +449,7 @@ function onepoll_run($argv, $argc){
if($xml) { if($xml) {
logger('poller: received xml : ' . $xml, LOGGER_DATA); logger('poller: received xml : ' . $xml, LOGGER_DATA);
if((! strstr($xml,'<?xml')) && (! strstr($xml,'<rss'))) { if((! strstr($xml,'<?xml')) && (! strstr($xml,'<rss'))) {
logger('poller: post_handshake: response from ' . $url . ' did not contain XML.'); logger('poller: post_handshake: response from ' . $url . ' did not contain XML.');
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1", $r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()), dbesc(datetime_convert()),

View file

@ -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'); $l = get_config('service_class','upgrade_link');
$t = sprintf('<a href="%s">' . t('Click here to upgrade.') . '</div>', $l); if(! $l)
if($l) return '';
return $t; if($bbcode)
return ''; $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() { function upgrade_message($bbcode = false) {
$x = upgrade_link(); $x = upgrade_link($bbcode);
return t('This action exceeds the limits set by your subscription plan.') . (($x) ? ' ' . $x : '') ; return t('This action exceeds the limits set by your subscription plan.') . (($x) ? ' ' . $x : '') ;
} }
function upgrade_bool_message() { function upgrade_bool_message($bbcode = false) {
$x = upgrade_link(); $x = upgrade_link($bbcode);
return t('This action is not available under your subscription plan.') . (($x) ? ' ' . $x : '') ; return t('This action is not available under your subscription plan.') . (($x) ? ' ' . $x : '') ;
} }

View file

@ -57,12 +57,13 @@ function events_post(&$a) {
if(strcmp($finish,$start) < 0) if(strcmp($finish,$start) < 0)
$finish = $start; $finish = $start;
$summary = escape_tags(trim($_POST['summary']));
$desc = escape_tags(trim($_POST['desc'])); $desc = escape_tags(trim($_POST['desc']));
$location = escape_tags(trim($_POST['location'])); $location = escape_tags(trim($_POST['location']));
$type = 'event'; $type = 'event';
if((! $desc) || (! $start)) { if((! $summary) || (! $start)) {
notice( t('Event description and start time are required.') . EOL); notice( t('Event title and start time are required.') . EOL);
goaway($a->get_baseurl() . '/events/new'); goaway($a->get_baseurl() . '/events/new');
} }
@ -107,6 +108,7 @@ function events_post(&$a) {
$datarray = array(); $datarray = array();
$datarray['start'] = $start; $datarray['start'] = $start;
$datarray['finish'] = $finish; $datarray['finish'] = $finish;
$datarray['summary'] = $summary;
$datarray['desc'] = $desc; $datarray['desc'] = $desc;
$datarray['location'] = $location; $datarray['location'] = $location;
$datarray['type'] = $type; $datarray['type'] = $type;
@ -278,9 +280,11 @@ function events_content(&$a) {
$last_date = $d; $last_date = $d;
$edit = ((! $rr['cid']) ? array($a->get_baseurl().'/events/event/'.$rr['id'],t('Edit event'),'','') : null); $edit = ((! $rr['cid']) ? array($a->get_baseurl().'/events/event/'.$rr['id'],t('Edit event'),'','') : null);
$title = strip_tags(bbcode($rr['summary']));
list($title, $_trash) = explode("<br",bbcode($rr['desc']),2); if(! $title) {
$title = strip_tags($title); list($title, $_trash) = explode("<br",bbcode($rr['desc']),2);
$title = strip_tags($title);
}
$html = format_event_html($rr); $html = format_event_html($rr);
$rr['desc'] = bbcode($rr['desc']); $rr['desc'] = bbcode($rr['desc']);
$rr['location'] = bbcode($rr['location']); $rr['location'] = bbcode($rr['location']);
@ -351,6 +355,7 @@ function events_content(&$a) {
$n_checked = ((x($orig_event) && $orig_event['nofinish']) ? ' checked="checked" ' : ''); $n_checked = ((x($orig_event) && $orig_event['nofinish']) ? ' checked="checked" ' : '');
$a_checked = ((x($orig_event) && $orig_event['adjust']) ? ' 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'] : ''); $d_orig = ((x($orig_event)) ? $orig_event['desc'] : '');
$l_orig = ((x($orig_event)) ? $orig_event['location'] : ''); $l_orig = ((x($orig_event)) ? $orig_event['location'] : '');
$eid = ((x($orig_event)) ? $orig_event['id'] : 0); $eid = ((x($orig_event)) ? $orig_event['id'] : 0);
@ -405,10 +410,11 @@ function events_content(&$a) {
'$eid' => $eid, '$eid' => $eid,
'$cid' => $cid, '$cid' => $cid,
'$uri' => $uri, '$uri' => $uri,
'$title' => t('Event details'), '$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_dsel' => datesel($f,'start',$syear+5,$syear,false,$syear,$smonth,$sday),
'$s_tsel' => timesel('start',$shour,$sminute), '$s_tsel' => timesel('start',$shour,$sminute),
'$n_text' => t('Finish date/time is not known or not relevant'), '$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), '$f_tsel' => timesel('finish',$fhour,$fminute),
'$a_text' => t('Adjust for viewer timezone'), '$a_text' => t('Adjust for viewer timezone'),
'$a_checked' => $a_checked, '$a_checked' => $a_checked,
'$d_text' => t('Description:') . ' <span class="required">*</span>', '$d_text' => t('Description:'),
'$d_orig' => $d_orig, '$d_orig' => $d_orig,
'$l_text' => t('Location:'), '$l_text' => t('Location:'),
'$l_orig' => $l_orig, '$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_text' => t('Share this event'),
'$sh_checked' => $sh_checked, '$sh_checked' => $sh_checked,
'$acl' => (($cid) ? '' : populate_acl(((x($orig_event)) ? $orig_event : $a->user),false)), '$acl' => (($cid) ? '' : populate_acl(((x($orig_event)) ? $orig_event : $a->user),false)),

View file

@ -108,7 +108,7 @@ function item_post(&$a) {
} }
} }
if($parent) logger('mod_post: parent=' . $parent); if($parent) logger('mod_item: item_post parent=' . $parent);
$profile_uid = ((x($_REQUEST,'profile_uid')) ? intval($_REQUEST['profile_uid']) : 0); $profile_uid = ((x($_REQUEST,'profile_uid')) ? intval($_REQUEST['profile_uid']) : 0);
$post_id = ((x($_REQUEST,'post_id')) ? intval($_REQUEST['post_id']) : 0); $post_id = ((x($_REQUEST,'post_id')) ? intval($_REQUEST['post_id']) : 0);
@ -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) { // Store the comment signature information in case we need to relay to Diaspora
require_once('include/bb2diaspora.php'); store_diaspora_comment_sig($datarray, $author, ($self ? $a->user['prvkey'] : false), $parent_item, $post_id);
$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'));
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 { else {
$parent = $post_id; $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]); 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;
}

View file

@ -121,57 +121,16 @@ function like_content(&$a) {
intval($like_item['id']) 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", $r = q("DELETE FROM `sign` WHERE `iid` = %d",
intval($like_item['id']) intval($like_item['id'])
); );
// Save the author information for the unlike in case we need to relay to Diaspora // 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 store_diaspora_like_retract_sig($activity, $item, $like_item, $contact);
// 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)
);
}
// proc_run('php',"include/notifier.php","like","$post_id"); // $post_id isn't defined here! // 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 // 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.
$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)
$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)
);
}
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 // 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 // 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 // means we are the relay, and for relayable_retractions, Diaspora
// only checks the parent_author_signature if it doesn't have to relay further // only checks the parent_author_signature if it doesn't have to relay further
if(($activity === ACTIVITY_LIKE) && ($post_type === t('status'))) { $enabled = intval(get_config('system','diaspora_enabled'));
if( $contact['network'] === NETWORK_DIASPORA) if(! $enabled) {
$diaspora_handle = $contact['addr']; logger('mod_like: diaspora support disabled, not storing like signature', LOGGER_DEBUG);
else { // Only works for NETWORK_DFRN return;
$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 logger('mod_like: storing diaspora like signature');
$r = q("SELECT `contact`.`uid` FROM `contact` WHERE `url` = '%s' AND `self` = 1 LIMIT 1",
dbesc($contact['url']) 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) { if( $r)
$contact_uid = $r['uid']; $contact_uprvkey = $r['prvkey'];
$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", $r = q("SELECT guid, parent FROM `item` WHERE id = %d LIMIT 1",
intval($post_id) intval($post_id)
@ -308,13 +350,5 @@ EOT;
} }
} }
return;
$arr['id'] = $post_id;
call_hooks('post_local_end', $arr);
proc_run('php',"include/notifier.php","like","$post_id");
killme();
// return; // NOTREACHED
} }

View file

@ -60,6 +60,19 @@ function wall_attach_post(&$a) {
return; 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); $filedata = @file_get_contents($src);
$mimetype = z_mime_content_type($filename); $mimetype = z_mime_content_type($filename);
$hash = random_string(); $hash = random_string();

View file

@ -79,6 +79,19 @@ function wall_upload_post(&$a) {
killme(); 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); $imagedata = @file_get_contents($src);
$ph = new Photo($imagedata, $filetype); $ph = new Photo($imagedata, $filetype);

View file

@ -1,6 +1,6 @@
<?php <?php
define( 'UPDATE_VERSION' , 1150 ); define( 'UPDATE_VERSION' , 1151 );
/** /**
* *
@ -1298,3 +1298,12 @@ function update_1149() {
return UPDATE_FAILED; return UPDATE_FAILED;
return UPDATE_SUCCESS; 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;
}

View file

@ -6,9 +6,9 @@
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 3.0.1384\n" "Project-Id-Version: 3.0.1385\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-24 10:00-0700\n" "POT-Creation-Date: 2012-06-25 10:00-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -36,7 +36,7 @@ msgstr ""
#: ../../mod/crepair.php:115 ../../mod/wall_attach.php:44 #: ../../mod/crepair.php:115 ../../mod/wall_attach.php:44
#: ../../mod/fsuggest.php:78 ../../mod/events.php:138 ../../mod/api.php:26 #: ../../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/api.php:31 ../../mod/photos.php:135 ../../mod/photos.php:951
#: ../../mod/editpost.php:10 ../../mod/install.php:151 #: ../../mod/editpost.php:10 ../../mod/install.php:151
#: ../../mod/notifications.php:66 ../../mod/contacts.php:145 #: ../../mod/notifications.php:66 ../../mod/contacts.php:145
#: ../../mod/settings.php:106 ../../mod/settings.php:537 #: ../../mod/settings.php:106 ../../mod/settings.php:537
@ -52,11 +52,11 @@ msgstr ""
#: ../../mod/message.php:97 ../../mod/allfriends.php:9 #: ../../mod/message.php:97 ../../mod/allfriends.php:9
#: ../../mod/nogroup.php:25 ../../mod/wall_upload.php:53 #: ../../mod/nogroup.php:25 ../../mod/wall_upload.php:53
#: ../../mod/follow.php:9 ../../mod/display.php:138 ../../mod/profiles.php:7 #: ../../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/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81
#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:508 #: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:508
#: ../../addon/dav/layout.fnk.php:353 ../../include/items.php:3411 #: ../../addon/facebook/facebook.php:514 ../../addon/dav/layout.fnk.php:353
#: ../../index.php:309 #: ../../include/items.php:3411 ../../index.php:309
msgid "Permission denied." msgid "Permission denied."
msgstr "" msgstr ""
@ -123,18 +123,18 @@ msgid "New photo from this URL"
msgstr "" msgstr ""
#: ../../mod/crepair.php:166 ../../mod/fsuggest.php:107 #: ../../mod/crepair.php:166 ../../mod/fsuggest.php:107
#: ../../mod/events.php:428 ../../mod/photos.php:966 ../../mod/photos.php:1024 #: ../../mod/events.php:428 ../../mod/photos.php:986 ../../mod/photos.php:1057
#: ../../mod/photos.php:1270 ../../mod/photos.php:1310 #: ../../mod/photos.php:1303 ../../mod/photos.php:1343
#: ../../mod/photos.php:1350 ../../mod/photos.php:1381 #: ../../mod/photos.php:1383 ../../mod/photos.php:1414
#: ../../mod/install.php:246 ../../mod/install.php:284 #: ../../mod/install.php:246 ../../mod/install.php:284
#: ../../mod/localtime.php:45 ../../mod/contacts.php:343 #: ../../mod/localtime.php:45 ../../mod/contacts.php:343
#: ../../mod/settings.php:555 ../../mod/settings.php:701 #: ../../mod/settings.php:555 ../../mod/settings.php:701
#: ../../mod/settings.php:762 ../../mod/settings.php:969 #: ../../mod/settings.php:762 ../../mod/settings.php:969
#: ../../mod/group.php:85 ../../mod/message.php:216 ../../mod/message.php:410 #: ../../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: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 #: ../../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/snautofollow/snautofollow.php:64
#: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93 #: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93
#: ../../addon/nsfw/nsfw.php:57 ../../addon/page/page.php:164 #: ../../addon/nsfw/nsfw.php:57 ../../addon/page/page.php:164
@ -340,7 +340,7 @@ msgstr ""
#: ../../mod/settings.php:956 ../../mod/settings.php:957 #: ../../mod/settings.php:956 ../../mod/settings.php:957
#: ../../mod/settings.php:958 ../../mod/settings.php:959 #: ../../mod/settings.php:958 ../../mod/settings.php:959
#: ../../mod/settings.php:960 ../../mod/register.php:234 #: ../../mod/settings.php:960 ../../mod/register.php:234
#: ../../mod/profiles.php:531 #: ../../mod/profiles.php:546
msgid "Yes" msgid "Yes"
msgstr "" msgstr ""
@ -352,36 +352,36 @@ msgstr ""
#: ../../mod/settings.php:956 ../../mod/settings.php:957 #: ../../mod/settings.php:956 ../../mod/settings.php:957
#: ../../mod/settings.php:958 ../../mod/settings.php:959 #: ../../mod/settings.php:958 ../../mod/settings.php:959
#: ../../mod/settings.php:960 ../../mod/register.php:235 #: ../../mod/settings.php:960 ../../mod/register.php:235
#: ../../mod/profiles.php:532 #: ../../mod/profiles.php:547
msgid "No" msgid "No"
msgstr "" msgstr ""
#: ../../mod/photos.php:44 ../../boot.php:1540 #: ../../mod/photos.php:46 ../../boot.php:1540
msgid "Photo Albums" msgid "Photo Albums"
msgstr "" msgstr ""
#: ../../mod/photos.php:52 ../../mod/photos.php:154 ../../mod/photos.php:945 #: ../../mod/photos.php:54 ../../mod/photos.php:156 ../../mod/photos.php:965
#: ../../mod/photos.php:1016 ../../mod/photos.php:1031 #: ../../mod/photos.php:1049 ../../mod/photos.php:1064
#: ../../mod/photos.php:1459 ../../mod/photos.php:1471 #: ../../mod/photos.php:1492 ../../mod/photos.php:1504
#: ../../addon/communityhome/communityhome.php:110 #: ../../addon/communityhome/communityhome.php:110
#: ../../view/theme/diabook/theme.php:598 #: ../../view/theme/diabook/theme.php:598
msgid "Contact Photos" msgid "Contact Photos"
msgstr "" 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" msgid "Upload New Photos"
msgstr "" msgstr ""
#: ../../mod/photos.php:70 ../../mod/settings.php:21 #: ../../mod/photos.php:72 ../../mod/settings.php:21
msgid "everybody" msgid "everybody"
msgstr "" msgstr ""
#: ../../mod/photos.php:143 #: ../../mod/photos.php:145
msgid "Contact information unavailable" msgid "Contact information unavailable"
msgstr "" msgstr ""
#: ../../mod/photos.php:154 ../../mod/photos.php:658 ../../mod/photos.php:1016 #: ../../mod/photos.php:156 ../../mod/photos.php:660 ../../mod/photos.php:1049
#: ../../mod/photos.php:1031 ../../mod/profile_photo.php:60 #: ../../mod/photos.php:1064 ../../mod/profile_photo.php:60
#: ../../mod/profile_photo.php:67 ../../mod/profile_photo.php:74 #: ../../mod/profile_photo.php:67 ../../mod/profile_photo.php:74
#: ../../mod/profile_photo.php:176 ../../mod/profile_photo.php:254 #: ../../mod/profile_photo.php:176 ../../mod/profile_photo.php:254
#: ../../mod/profile_photo.php:263 #: ../../mod/profile_photo.php:263
@ -391,23 +391,23 @@ msgstr ""
msgid "Profile Photos" msgid "Profile Photos"
msgstr "" msgstr ""
#: ../../mod/photos.php:164 #: ../../mod/photos.php:166
msgid "Album not found." msgid "Album not found."
msgstr "" msgstr ""
#: ../../mod/photos.php:182 ../../mod/photos.php:1025 #: ../../mod/photos.php:184 ../../mod/photos.php:1058
msgid "Delete Album" msgid "Delete Album"
msgstr "" msgstr ""
#: ../../mod/photos.php:245 ../../mod/photos.php:1271 #: ../../mod/photos.php:247 ../../mod/photos.php:1304
msgid "Delete Photo" msgid "Delete Photo"
msgstr "" msgstr ""
#: ../../mod/photos.php:589 #: ../../mod/photos.php:591
msgid "was tagged in a" msgid "was tagged in a"
msgstr "" msgstr ""
#: ../../mod/photos.php:589 ../../mod/like.php:185 ../../mod/tagger.php:70 #: ../../mod/photos.php:591 ../../mod/like.php:185 ../../mod/tagger.php:70
#: ../../addon/communityhome/communityhome.php:163 #: ../../addon/communityhome/communityhome.php:163
#: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1316 #: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1316
#: ../../include/diaspora.php:1710 ../../include/conversation.php:53 #: ../../include/diaspora.php:1710 ../../include/conversation.php:53
@ -415,176 +415,186 @@ msgstr ""
msgid "photo" msgid "photo"
msgstr "" msgstr ""
#: ../../mod/photos.php:589 #: ../../mod/photos.php:591
msgid "by" msgid "by"
msgstr "" 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 " msgid "Image exceeds size limit of "
msgstr "" msgstr ""
#: ../../mod/photos.php:702 #: ../../mod/photos.php:704
msgid "Image file is empty." msgid "Image file is empty."
msgstr "" msgstr ""
#: ../../mod/photos.php:716 ../../mod/profile_photo.php:126 #: ../../mod/photos.php:736 ../../mod/profile_photo.php:126
#: ../../mod/wall_upload.php:86 #: ../../mod/wall_upload.php:86
msgid "Unable to process image." msgid "Unable to process image."
msgstr "" msgstr ""
#: ../../mod/photos.php:737 ../../mod/profile_photo.php:259 #: ../../mod/photos.php:757 ../../mod/profile_photo.php:259
#: ../../mod/wall_upload.php:105 #: ../../mod/wall_upload.php:105
msgid "Image upload failed." msgid "Image upload failed."
msgstr "" 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/dfrn_request.php:759 ../../mod/viewcontacts.php:17
#: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:29 #: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:29
msgid "Public access denied." msgid "Public access denied."
msgstr "" msgstr ""
#: ../../mod/photos.php:833 #: ../../mod/photos.php:853
msgid "No photos selected" msgid "No photos selected"
msgstr "" msgstr ""
#: ../../mod/photos.php:912 #: ../../mod/photos.php:932
msgid "Access to this item is restricted." msgid "Access to this item is restricted."
msgstr "" 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" msgid "Upload Photos"
msgstr "" msgstr ""
#: ../../mod/photos.php:976 ../../mod/photos.php:1020 #: ../../mod/photos.php:1009 ../../mod/photos.php:1053
msgid "New album name: " msgid "New album name: "
msgstr "" msgstr ""
#: ../../mod/photos.php:977 #: ../../mod/photos.php:1010
msgid "or existing album name: " msgid "or existing album name: "
msgstr "" msgstr ""
#: ../../mod/photos.php:978 #: ../../mod/photos.php:1011
msgid "Do not show a status post for this upload" msgid "Do not show a status post for this upload"
msgstr "" msgstr ""
#: ../../mod/photos.php:980 ../../mod/photos.php:1266 #: ../../mod/photos.php:1013 ../../mod/photos.php:1299
msgid "Permissions" msgid "Permissions"
msgstr "" msgstr ""
#: ../../mod/photos.php:1035 #: ../../mod/photos.php:1068
msgid "Edit Album" msgid "Edit Album"
msgstr "" msgstr ""
#: ../../mod/photos.php:1059 ../../mod/photos.php:1492 #: ../../mod/photos.php:1092 ../../mod/photos.php:1525
msgid "View Photo" msgid "View Photo"
msgstr "" msgstr ""
#: ../../mod/photos.php:1094 #: ../../mod/photos.php:1127
msgid "Permission denied. Access to this item may be restricted." msgid "Permission denied. Access to this item may be restricted."
msgstr "" msgstr ""
#: ../../mod/photos.php:1096 #: ../../mod/photos.php:1129
msgid "Photo not available" msgid "Photo not available"
msgstr "" msgstr ""
#: ../../mod/photos.php:1146 #: ../../mod/photos.php:1179
msgid "View photo" msgid "View photo"
msgstr "" msgstr ""
#: ../../mod/photos.php:1146 #: ../../mod/photos.php:1179
msgid "Edit photo" msgid "Edit photo"
msgstr "" msgstr ""
#: ../../mod/photos.php:1147 #: ../../mod/photos.php:1180
msgid "Use as profile photo" msgid "Use as profile photo"
msgstr "" msgstr ""
#: ../../mod/photos.php:1153 ../../include/conversation.php:490 #: ../../mod/photos.php:1186 ../../include/conversation.php:490
msgid "Private Message" msgid "Private Message"
msgstr "" msgstr ""
#: ../../mod/photos.php:1175 #: ../../mod/photos.php:1208
msgid "View Full Size" msgid "View Full Size"
msgstr "" msgstr ""
#: ../../mod/photos.php:1243 #: ../../mod/photos.php:1276
msgid "Tags: " msgid "Tags: "
msgstr "" msgstr ""
#: ../../mod/photos.php:1246 #: ../../mod/photos.php:1279
msgid "[Remove any tag]" msgid "[Remove any tag]"
msgstr "" msgstr ""
#: ../../mod/photos.php:1256 #: ../../mod/photos.php:1289
msgid "Rotate CW (right)" msgid "Rotate CW (right)"
msgstr "" msgstr ""
#: ../../mod/photos.php:1257 #: ../../mod/photos.php:1290
msgid "Rotate CCW (left)" msgid "Rotate CCW (left)"
msgstr "" msgstr ""
#: ../../mod/photos.php:1259 #: ../../mod/photos.php:1292
msgid "New album name" msgid "New album name"
msgstr "" msgstr ""
#: ../../mod/photos.php:1262 #: ../../mod/photos.php:1295
msgid "Caption" msgid "Caption"
msgstr "" msgstr ""
#: ../../mod/photos.php:1264 #: ../../mod/photos.php:1297
msgid "Add a Tag" msgid "Add a Tag"
msgstr "" msgstr ""
#: ../../mod/photos.php:1268 #: ../../mod/photos.php:1301
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
msgstr "" msgstr ""
#: ../../mod/photos.php:1288 ../../include/conversation.php:554 #: ../../mod/photos.php:1321 ../../include/conversation.php:554
msgid "I like this (toggle)" msgid "I like this (toggle)"
msgstr "" msgstr ""
#: ../../mod/photos.php:1289 ../../include/conversation.php:555 #: ../../mod/photos.php:1322 ../../include/conversation.php:555
msgid "I don't like this (toggle)" msgid "I don't like this (toggle)"
msgstr "" msgstr ""
#: ../../mod/photos.php:1290 ../../include/conversation.php:993 #: ../../mod/photos.php:1323 ../../include/conversation.php:993
msgid "Share" msgid "Share"
msgstr "" 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/wallmessage.php:145 ../../mod/message.php:215
#: ../../mod/message.php:411 ../../include/conversation.php:371 #: ../../mod/message.php:411 ../../include/conversation.php:371
#: ../../include/conversation.php:731 ../../include/conversation.php:1012 #: ../../include/conversation.php:731 ../../include/conversation.php:1012
msgid "Please wait" msgid "Please wait"
msgstr "" msgstr ""
#: ../../mod/photos.php:1307 ../../mod/photos.php:1347 #: ../../mod/photos.php:1340 ../../mod/photos.php:1380
#: ../../mod/photos.php:1378 ../../include/conversation.php:577 #: ../../mod/photos.php:1411 ../../include/conversation.php:577
msgid "This is you" msgid "This is you"
msgstr "" msgstr ""
#: ../../mod/photos.php:1309 ../../mod/photos.php:1349 #: ../../mod/photos.php:1342 ../../mod/photos.php:1382
#: ../../mod/photos.php:1380 ../../include/conversation.php:579 #: ../../mod/photos.php:1413 ../../include/conversation.php:579
#: ../../boot.php:518 #: ../../boot.php:518
msgid "Comment" msgid "Comment"
msgstr "" 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 #: ../../include/conversation.php:589 ../../include/conversation.php:1030
msgid "Preview" msgid "Preview"
msgstr "" 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 #: ../../mod/settings.php:699 ../../mod/group.php:168 ../../mod/admin.php:663
#: ../../include/conversation.php:328 ../../include/conversation.php:609 #: ../../include/conversation.php:328 ../../include/conversation.php:609
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: ../../mod/photos.php:1498 #: ../../mod/photos.php:1531
msgid "View Album" msgid "View Album"
msgstr "" msgstr ""
#: ../../mod/photos.php:1507 #: ../../mod/photos.php:1540
msgid "Recent Photos" msgid "Recent Photos"
msgstr "" msgstr ""
@ -1726,8 +1736,8 @@ msgstr ""
#: ../../mod/lostpass.php:45 ../../mod/lostpass.php:107 #: ../../mod/lostpass.php:45 ../../mod/lostpass.php:107
#: ../../mod/register.php:90 ../../mod/register.php:144 #: ../../mod/register.php:90 ../../mod/register.php:144
#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:752 #: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:752
#: ../../addon/facebook/facebook.php:693 #: ../../addon/facebook/facebook.php:700
#: ../../addon/facebook/facebook.php:1183 #: ../../addon/facebook/facebook.php:1190
#: ../../addon/public_server/public_server.php:62 #: ../../addon/public_server/public_server.php:62
#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2814 #: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2814
#: ../../boot.php:720 #: ../../boot.php:720
@ -2420,7 +2430,7 @@ msgid "Personal Notes"
msgstr "" msgstr ""
#: ../../mod/notes.php:63 ../../mod/filer.php:30 #: ../../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/privacy_image_cache/privacy_image_cache.php:187
#: ../../addon/dav/layout.fnk.php:384 ../../include/text.php:652 #: ../../addon/dav/layout.fnk.php:384 ../../include/text.php:652
msgid "Save" msgid "Save"
@ -2665,7 +2675,7 @@ msgid "Profile Visibility Editor"
msgstr "" msgstr ""
#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:128 #: ../../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 #: ../../include/nav.php:50 ../../boot.php:1531
msgid "Profile" msgid "Profile"
msgstr "" msgstr ""
@ -2779,7 +2789,7 @@ msgid "People Search"
msgstr "" msgstr ""
#: ../../mod/like.php:185 ../../mod/like.php:260 ../../mod/tagger.php:70 #: ../../mod/like.php:185 ../../mod/like.php:260 ../../mod/tagger.php:70
#: ../../addon/facebook/facebook.php:1577 #: ../../addon/facebook/facebook.php:1584
#: ../../addon/communityhome/communityhome.php:158 #: ../../addon/communityhome/communityhome.php:158
#: ../../addon/communityhome/communityhome.php:167 #: ../../addon/communityhome/communityhome.php:167
#: ../../view/theme/diabook/theme.php:565 #: ../../view/theme/diabook/theme.php:565
@ -2789,7 +2799,7 @@ msgstr ""
msgid "status" msgid "status"
msgstr "" msgstr ""
#: ../../mod/like.php:202 ../../addon/facebook/facebook.php:1581 #: ../../mod/like.php:202 ../../addon/facebook/facebook.php:1588
#: ../../addon/communityhome/communityhome.php:172 #: ../../addon/communityhome/communityhome.php:172
#: ../../view/theme/diabook/theme.php:579 ../../include/diaspora.php:1726 #: ../../view/theme/diabook/theme.php:579 ../../include/diaspora.php:1726
#: ../../include/conversation.php:65 #: ../../include/conversation.php:65
@ -3720,8 +3730,8 @@ msgstr ""
msgid "Search" msgid "Search"
msgstr "" msgstr ""
#: ../../mod/profiles.php:21 ../../mod/profiles.php:395 #: ../../mod/profiles.php:21 ../../mod/profiles.php:410
#: ../../mod/profiles.php:509 ../../mod/dfrn_confirm.php:62 #: ../../mod/profiles.php:524 ../../mod/dfrn_confirm.php:62
msgid "Profile not found." msgid "Profile not found."
msgstr "" msgstr ""
@ -3729,285 +3739,301 @@ msgstr ""
msgid "Profile Name is required." msgid "Profile Name is required."
msgstr "" msgstr ""
#: ../../mod/profiles.php:152 #: ../../mod/profiles.php:155
msgid "Marital Status" msgid "Marital Status"
msgstr "" msgstr ""
#: ../../mod/profiles.php:156 #: ../../mod/profiles.php:159
msgid "Romantic Partner" msgid "Romantic Partner"
msgstr "" msgstr ""
#: ../../mod/profiles.php:160
msgid "Work/Employment"
msgstr ""
#: ../../mod/profiles.php:163 #: ../../mod/profiles.php:163
msgid "Religion" msgid "Likes"
msgstr "" msgstr ""
#: ../../mod/profiles.php:167 #: ../../mod/profiles.php:167
msgid "Political Views" msgid "Dislikes"
msgstr "" msgstr ""
#: ../../mod/profiles.php:171 #: ../../mod/profiles.php:171
msgid "Work/Employment"
msgstr ""
#: ../../mod/profiles.php:174
msgid "Religion"
msgstr ""
#: ../../mod/profiles.php:178
msgid "Political Views"
msgstr ""
#: ../../mod/profiles.php:182
msgid "Gender" msgid "Gender"
msgstr "" msgstr ""
#: ../../mod/profiles.php:175 #: ../../mod/profiles.php:186
msgid "Sexual Preference" msgid "Sexual Preference"
msgstr "" msgstr ""
#: ../../mod/profiles.php:179 #: ../../mod/profiles.php:190
msgid "Homepage" msgid "Homepage"
msgstr "" msgstr ""
#: ../../mod/profiles.php:183 #: ../../mod/profiles.php:194
msgid "Interests" msgid "Interests"
msgstr "" msgstr ""
#: ../../mod/profiles.php:187 #: ../../mod/profiles.php:198
msgid "Address" msgid "Address"
msgstr "" msgstr ""
#: ../../mod/profiles.php:194 ../../addon/dav/layout.fnk.php:310 #: ../../mod/profiles.php:205 ../../addon/dav/layout.fnk.php:310
msgid "Location" msgid "Location"
msgstr "" msgstr ""
#: ../../mod/profiles.php:273 #: ../../mod/profiles.php:288
msgid "Profile updated." msgid "Profile updated."
msgstr "" msgstr ""
#: ../../mod/profiles.php:340 #: ../../mod/profiles.php:355
msgid " and " msgid " and "
msgstr "" msgstr ""
#: ../../mod/profiles.php:348 #: ../../mod/profiles.php:363
msgid "public profile" msgid "public profile"
msgstr "" msgstr ""
#: ../../mod/profiles.php:351 #: ../../mod/profiles.php:366
#, php-format #, php-format
msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;" msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
msgstr "" msgstr ""
#: ../../mod/profiles.php:352 #: ../../mod/profiles.php:367
#, php-format #, php-format
msgid " - Visit %1$s's %2$s" msgid " - Visit %1$s's %2$s"
msgstr "" msgstr ""
#: ../../mod/profiles.php:355 #: ../../mod/profiles.php:370
#, php-format #, php-format
msgid "%1$s has an updated %2$s, changing %3$s." msgid "%1$s has an updated %2$s, changing %3$s."
msgstr "" msgstr ""
#: ../../mod/profiles.php:414 #: ../../mod/profiles.php:429
msgid "Profile deleted." msgid "Profile deleted."
msgstr "" msgstr ""
#: ../../mod/profiles.php:432 ../../mod/profiles.php:466 #: ../../mod/profiles.php:447 ../../mod/profiles.php:481
msgid "Profile-" msgid "Profile-"
msgstr "" msgstr ""
#: ../../mod/profiles.php:451 ../../mod/profiles.php:493 #: ../../mod/profiles.php:466 ../../mod/profiles.php:508
msgid "New profile created." msgid "New profile created."
msgstr "" msgstr ""
#: ../../mod/profiles.php:472 #: ../../mod/profiles.php:487
msgid "Profile unavailable to clone." msgid "Profile unavailable to clone."
msgstr "" msgstr ""
#: ../../mod/profiles.php:530 #: ../../mod/profiles.php:545
msgid "Hide your contact/friend list from viewers of this profile?" msgid "Hide your contact/friend list from viewers of this profile?"
msgstr "" msgstr ""
#: ../../mod/profiles.php:553 #: ../../mod/profiles.php:568
msgid "Edit Profile Details" msgid "Edit Profile Details"
msgstr "" msgstr ""
#: ../../mod/profiles.php:555 #: ../../mod/profiles.php:570
msgid "View this profile" msgid "View this profile"
msgstr "" msgstr ""
#: ../../mod/profiles.php:556 #: ../../mod/profiles.php:571
msgid "Create a new profile using these settings" msgid "Create a new profile using these settings"
msgstr "" msgstr ""
#: ../../mod/profiles.php:557 #: ../../mod/profiles.php:572
msgid "Clone this profile" msgid "Clone this profile"
msgstr "" msgstr ""
#: ../../mod/profiles.php:558 #: ../../mod/profiles.php:573
msgid "Delete this profile" msgid "Delete this profile"
msgstr "" msgstr ""
#: ../../mod/profiles.php:559 #: ../../mod/profiles.php:574
msgid "Profile Name:" msgid "Profile Name:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:560 #: ../../mod/profiles.php:575
msgid "Your Full Name:" msgid "Your Full Name:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:561 #: ../../mod/profiles.php:576
msgid "Title/Description:" msgid "Title/Description:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:562 #: ../../mod/profiles.php:577
msgid "Your Gender:" msgid "Your Gender:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:563 #: ../../mod/profiles.php:578
#, php-format #, php-format
msgid "Birthday (%s):" msgid "Birthday (%s):"
msgstr "" msgstr ""
#: ../../mod/profiles.php:564 #: ../../mod/profiles.php:579
msgid "Street Address:" msgid "Street Address:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:565 #: ../../mod/profiles.php:580
msgid "Locality/City:" msgid "Locality/City:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:566 #: ../../mod/profiles.php:581
msgid "Postal/Zip Code:" msgid "Postal/Zip Code:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:567 #: ../../mod/profiles.php:582
msgid "Country:" msgid "Country:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:568 #: ../../mod/profiles.php:583
msgid "Region/State:" msgid "Region/State:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:569 #: ../../mod/profiles.php:584
msgid "<span class=\"heart\">&hearts;</span> Marital Status:" msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:570 #: ../../mod/profiles.php:585
msgid "Who: (if applicable)" msgid "Who: (if applicable)"
msgstr "" msgstr ""
#: ../../mod/profiles.php:571 #: ../../mod/profiles.php:586
msgid "Examples: cathy123, Cathy Williams, cathy@example.com" msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
msgstr "" msgstr ""
#: ../../mod/profiles.php:572 #: ../../mod/profiles.php:587
msgid "Since [date]:" msgid "Since [date]:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:573 ../../include/profile_advanced.php:46 #: ../../mod/profiles.php:588 ../../include/profile_advanced.php:46
msgid "Sexual Preference:" msgid "Sexual Preference:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:574 #: ../../mod/profiles.php:589
msgid "Homepage URL:" msgid "Homepage URL:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:575 ../../include/profile_advanced.php:50 #: ../../mod/profiles.php:590 ../../include/profile_advanced.php:50
msgid "Hometown:" msgid "Hometown:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:576 ../../include/profile_advanced.php:54 #: ../../mod/profiles.php:591 ../../include/profile_advanced.php:54
msgid "Political Views:" msgid "Political Views:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:577 #: ../../mod/profiles.php:592
msgid "Religious Views:" msgid "Religious Views:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:578 #: ../../mod/profiles.php:593
msgid "Public Keywords:" msgid "Public Keywords:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:579 #: ../../mod/profiles.php:594
msgid "Private Keywords:" msgid "Private Keywords:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:580 #: ../../mod/profiles.php:595 ../../include/profile_advanced.php:62
msgid "Example: fishing photography software" msgid "Likes:"
msgstr "" msgstr ""
#: ../../mod/profiles.php:581 #: ../../mod/profiles.php:596 ../../include/profile_advanced.php:64
msgid "(Used for suggesting potential friends, can be seen by others)" msgid "Dislikes:"
msgstr ""
#: ../../mod/profiles.php:582
msgid "(Used for searching profiles, never shown to others)"
msgstr ""
#: ../../mod/profiles.php:583
msgid "Tell us about yourself..."
msgstr ""
#: ../../mod/profiles.php:584
msgid "Hobbies/Interests"
msgstr ""
#: ../../mod/profiles.php:585
msgid "Contact information and Social Networks"
msgstr ""
#: ../../mod/profiles.php:586
msgid "Musical interests"
msgstr ""
#: ../../mod/profiles.php:587
msgid "Books, literature"
msgstr ""
#: ../../mod/profiles.php:588
msgid "Television"
msgstr ""
#: ../../mod/profiles.php:589
msgid "Film/dance/culture/entertainment"
msgstr ""
#: ../../mod/profiles.php:590
msgid "Love/romance"
msgstr ""
#: ../../mod/profiles.php:591
msgid "Work/employment"
msgstr ""
#: ../../mod/profiles.php:592
msgid "School/education"
msgstr "" msgstr ""
#: ../../mod/profiles.php:597 #: ../../mod/profiles.php:597
msgid "Example: fishing photography software"
msgstr ""
#: ../../mod/profiles.php:598
msgid "(Used for suggesting potential friends, can be seen by others)"
msgstr ""
#: ../../mod/profiles.php:599
msgid "(Used for searching profiles, never shown to others)"
msgstr ""
#: ../../mod/profiles.php:600
msgid "Tell us about yourself..."
msgstr ""
#: ../../mod/profiles.php:601
msgid "Hobbies/Interests"
msgstr ""
#: ../../mod/profiles.php:602
msgid "Contact information and Social Networks"
msgstr ""
#: ../../mod/profiles.php:603
msgid "Musical interests"
msgstr ""
#: ../../mod/profiles.php:604
msgid "Books, literature"
msgstr ""
#: ../../mod/profiles.php:605
msgid "Television"
msgstr ""
#: ../../mod/profiles.php:606
msgid "Film/dance/culture/entertainment"
msgstr ""
#: ../../mod/profiles.php:607
msgid "Love/romance"
msgstr ""
#: ../../mod/profiles.php:608
msgid "Work/employment"
msgstr ""
#: ../../mod/profiles.php:609
msgid "School/education"
msgstr ""
#: ../../mod/profiles.php:614
msgid "" msgid ""
"This is your <strong>public</strong> profile.<br />It <strong>may</strong> " "This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
"be visible to anybody using the internet." "be visible to anybody using the internet."
msgstr "" msgstr ""
#: ../../mod/profiles.php:607 ../../mod/directory.php:111 #: ../../mod/profiles.php:624 ../../mod/directory.php:111
msgid "Age: " msgid "Age: "
msgstr "" msgstr ""
#: ../../mod/profiles.php:644 #: ../../mod/profiles.php:663
msgid "Edit/Manage Profiles" msgid "Edit/Manage Profiles"
msgstr "" msgstr ""
#: ../../mod/profiles.php:645 ../../boot.php:1092 #: ../../mod/profiles.php:664 ../../boot.php:1092
msgid "Change profile photo" msgid "Change profile photo"
msgstr "" msgstr ""
#: ../../mod/profiles.php:646 ../../boot.php:1093 #: ../../mod/profiles.php:665 ../../boot.php:1093
msgid "Create New Profile" msgid "Create New Profile"
msgstr "" msgstr ""
#: ../../mod/profiles.php:657 ../../boot.php:1103 #: ../../mod/profiles.php:676 ../../boot.php:1103
msgid "Profile Image" msgid "Profile Image"
msgstr "" msgstr ""
#: ../../mod/profiles.php:659 ../../boot.php:1106 #: ../../mod/profiles.php:678 ../../boot.php:1106
msgid "visible to everybody" msgid "visible to everybody"
msgstr "" msgstr ""
#: ../../mod/profiles.php:660 ../../boot.php:1107 #: ../../mod/profiles.php:679 ../../boot.php:1107
msgid "Edit visibility" msgid "Edit visibility"
msgstr "" msgstr ""
@ -4281,83 +4307,83 @@ msgstr ""
msgid "Google+ Import Settings saved." msgid "Google+ Import Settings saved."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:514 #: ../../addon/facebook/facebook.php:521
msgid "Facebook disabled" msgid "Facebook disabled"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:519 #: ../../addon/facebook/facebook.php:526
msgid "Updating contacts" msgid "Updating contacts"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:542 #: ../../addon/facebook/facebook.php:549
msgid "Facebook API key is missing." msgid "Facebook API key is missing."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:549 #: ../../addon/facebook/facebook.php:556
msgid "Facebook Connect" msgid "Facebook Connect"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:555 #: ../../addon/facebook/facebook.php:562
msgid "Install Facebook connector for this account." msgid "Install Facebook connector for this account."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:562 #: ../../addon/facebook/facebook.php:569
msgid "Remove Facebook connector" msgid "Remove Facebook connector"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:567 #: ../../addon/facebook/facebook.php:574
msgid "" msgid ""
"Re-authenticate [This is necessary whenever your Facebook password is " "Re-authenticate [This is necessary whenever your Facebook password is "
"changed.]" "changed.]"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:574 #: ../../addon/facebook/facebook.php:581
msgid "Post to Facebook by default" msgid "Post to Facebook by default"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:580 #: ../../addon/facebook/facebook.php:587
msgid "" msgid ""
"Facebook friend linking has been disabled on this site. The following " "Facebook friend linking has been disabled on this site. The following "
"settings will have no effect." "settings will have no effect."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:584 #: ../../addon/facebook/facebook.php:591
msgid "" msgid ""
"Facebook friend linking has been disabled on this site. If you disable it, " "Facebook friend linking has been disabled on this site. If you disable it, "
"you will be unable to re-enable it." "you will be unable to re-enable it."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:587 #: ../../addon/facebook/facebook.php:594
msgid "Link all your Facebook friends and conversations on this website" msgid "Link all your Facebook friends and conversations on this website"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:589 #: ../../addon/facebook/facebook.php:596
msgid "" msgid ""
"Facebook conversations consist of your <em>profile wall</em> and your friend " "Facebook conversations consist of your <em>profile wall</em> and your friend "
"<em>stream</em>." "<em>stream</em>."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:590 #: ../../addon/facebook/facebook.php:597
msgid "On this website, your Facebook friend stream is only visible to you." msgid "On this website, your Facebook friend stream is only visible to you."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:591 #: ../../addon/facebook/facebook.php:598
msgid "" msgid ""
"The following settings determine the privacy of your Facebook profile wall " "The following settings determine the privacy of your Facebook profile wall "
"on this website." "on this website."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:595 #: ../../addon/facebook/facebook.php:602
msgid "" msgid ""
"On this website your Facebook profile wall conversations will only be " "On this website your Facebook profile wall conversations will only be "
"visible to you" "visible to you"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:600 #: ../../addon/facebook/facebook.php:607
msgid "Do not import your Facebook profile wall conversations" msgid "Do not import your Facebook profile wall conversations"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:602 #: ../../addon/facebook/facebook.php:609
msgid "" msgid ""
"If you choose to link conversations and leave both of these boxes unchecked, " "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 " "your Facebook profile wall will be merged with your profile wall on this "
@ -4365,120 +4391,120 @@ msgid ""
"who may see the conversations." "who may see the conversations."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:607 #: ../../addon/facebook/facebook.php:614
msgid "Comma separated applications to ignore" msgid "Comma separated applications to ignore"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:691 #: ../../addon/facebook/facebook.php:698
msgid "Problems with Facebook Real-Time Updates" msgid "Problems with Facebook Real-Time Updates"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:719 #: ../../addon/facebook/facebook.php:726
#: ../../include/contact_selectors.php:81 #: ../../include/contact_selectors.php:81
msgid "Facebook" msgid "Facebook"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:720 #: ../../addon/facebook/facebook.php:727
msgid "Facebook Connector Settings" msgid "Facebook Connector Settings"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:735 #: ../../addon/facebook/facebook.php:742
msgid "Facebook API Key" msgid "Facebook API Key"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:745 #: ../../addon/facebook/facebook.php:752
msgid "" msgid ""
"Error: it appears that you have specified the App-ID and -Secret in your ." "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 " "htconfig.php file. As long as they are specified there, they cannot be set "
"using this form.<br><br>" "using this form.<br><br>"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:750 #: ../../addon/facebook/facebook.php:757
msgid "" msgid ""
"Error: the given API Key seems to be incorrect (the application access token " "Error: the given API Key seems to be incorrect (the application access token "
"could not be retrieved)." "could not be retrieved)."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:752 #: ../../addon/facebook/facebook.php:759
msgid "The given API Key seems to work correctly." msgid "The given API Key seems to work correctly."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:754 #: ../../addon/facebook/facebook.php:761
msgid "" msgid ""
"The correctness of the API Key could not be detected. Somthing strange's " "The correctness of the API Key could not be detected. Somthing strange's "
"going on." "going on."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:757 #: ../../addon/facebook/facebook.php:764
msgid "App-ID / API-Key" msgid "App-ID / API-Key"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:758 #: ../../addon/facebook/facebook.php:765
msgid "Application secret" msgid "Application secret"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:759 #: ../../addon/facebook/facebook.php:766
#, php-format #, php-format
msgid "Polling Interval in minutes (minimum %1$s minutes)" msgid "Polling Interval in minutes (minimum %1$s minutes)"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:760 #: ../../addon/facebook/facebook.php:767
msgid "" msgid ""
"Synchronize comments (no comments on Facebook are missed, at the cost of " "Synchronize comments (no comments on Facebook are missed, at the cost of "
"increased system load)" "increased system load)"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:764 #: ../../addon/facebook/facebook.php:771
msgid "Real-Time Updates" msgid "Real-Time Updates"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:768 #: ../../addon/facebook/facebook.php:775
msgid "Real-Time Updates are activated." msgid "Real-Time Updates are activated."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:769 #: ../../addon/facebook/facebook.php:776
msgid "Deactivate Real-Time Updates" msgid "Deactivate Real-Time Updates"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:771 #: ../../addon/facebook/facebook.php:778
msgid "Real-Time Updates not activated." msgid "Real-Time Updates not activated."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:771 #: ../../addon/facebook/facebook.php:778
msgid "Activate Real-Time Updates" msgid "Activate Real-Time Updates"
msgstr "" 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." msgid "The new values have been saved."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:814 #: ../../addon/facebook/facebook.php:821
msgid "Post to Facebook" msgid "Post to Facebook"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:912 #: ../../addon/facebook/facebook.php:919
msgid "" msgid ""
"Post to Facebook cancelled because of multi-network access permission " "Post to Facebook cancelled because of multi-network access permission "
"conflict." "conflict."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:1132 #: ../../addon/facebook/facebook.php:1139
msgid "View on Friendica" msgid "View on Friendica"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:1165 #: ../../addon/facebook/facebook.php:1172
msgid "Facebook post failed. Queued for retry." msgid "Facebook post failed. Queued for retry."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:1205 #: ../../addon/facebook/facebook.php:1212
msgid "Your Facebook connection became invalid. Please Re-authenticate." msgid "Your Facebook connection became invalid. Please Re-authenticate."
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:1206 #: ../../addon/facebook/facebook.php:1213
msgid "Facebook connection became invalid" msgid "Facebook connection became invalid"
msgstr "" msgstr ""
#: ../../addon/facebook/facebook.php:1207 #: ../../addon/facebook/facebook.php:1214
#, php-format #, php-format
msgid "" msgid ""
"Hi %1$s,\n" "Hi %1$s,\n"
@ -6139,35 +6165,35 @@ msgstr ""
msgid "Hobbies/Interests:" msgid "Hobbies/Interests:"
msgstr "" msgstr ""
#: ../../include/profile_advanced.php:62 #: ../../include/profile_advanced.php:67
msgid "Contact information and Social Networks:" msgid "Contact information and Social Networks:"
msgstr "" msgstr ""
#: ../../include/profile_advanced.php:64 #: ../../include/profile_advanced.php:69
msgid "Musical interests:" msgid "Musical interests:"
msgstr "" msgstr ""
#: ../../include/profile_advanced.php:66 #: ../../include/profile_advanced.php:71
msgid "Books, literature:" msgid "Books, literature:"
msgstr "" msgstr ""
#: ../../include/profile_advanced.php:68 #: ../../include/profile_advanced.php:73
msgid "Television:" msgid "Television:"
msgstr "" msgstr ""
#: ../../include/profile_advanced.php:70 #: ../../include/profile_advanced.php:75
msgid "Film/dance/culture/entertainment:" msgid "Film/dance/culture/entertainment:"
msgstr "" msgstr ""
#: ../../include/profile_advanced.php:72 #: ../../include/profile_advanced.php:77
msgid "Love/Romance:" msgid "Love/Romance:"
msgstr "" msgstr ""
#: ../../include/profile_advanced.php:74 #: ../../include/profile_advanced.php:79
msgid "Work/employment:" msgid "Work/employment:"
msgstr "" msgstr ""
#: ../../include/profile_advanced.php:76 #: ../../include/profile_advanced.php:81
msgid "School/education:" msgid "School/education:"
msgstr "" msgstr ""
@ -7159,49 +7185,49 @@ msgid ""
"This site is not configured to allow communications with other networks." "This site is not configured to allow communications with other networks."
msgstr "" 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." msgid "No compatible communication protocols or feeds were discovered."
msgstr "" msgstr ""
#: ../../include/follow.php:73 #: ../../include/follow.php:78
msgid "The profile address specified does not provide adequate information." msgid "The profile address specified does not provide adequate information."
msgstr "" msgstr ""
#: ../../include/follow.php:77 #: ../../include/follow.php:82
msgid "An author or name was not found." msgid "An author or name was not found."
msgstr "" msgstr ""
#: ../../include/follow.php:79 #: ../../include/follow.php:84
msgid "No browser URL could be matched to this address." msgid "No browser URL could be matched to this address."
msgstr "" msgstr ""
#: ../../include/follow.php:81 #: ../../include/follow.php:86
msgid "" msgid ""
"Unable to match @-style Identity Address with a known protocol or email " "Unable to match @-style Identity Address with a known protocol or email "
"contact." "contact."
msgstr "" msgstr ""
#: ../../include/follow.php:82 #: ../../include/follow.php:87
msgid "Use mailto: in front of address to force email check." msgid "Use mailto: in front of address to force email check."
msgstr "" msgstr ""
#: ../../include/follow.php:88 #: ../../include/follow.php:93
msgid "" msgid ""
"The profile address specified belongs to a network which has been disabled " "The profile address specified belongs to a network which has been disabled "
"on this site." "on this site."
msgstr "" msgstr ""
#: ../../include/follow.php:93 #: ../../include/follow.php:103
msgid "" msgid ""
"Limited profile. This person will be unable to receive direct/personal " "Limited profile. This person will be unable to receive direct/personal "
"notifications from you." "notifications from you."
msgstr "" msgstr ""
#: ../../include/follow.php:169 #: ../../include/follow.php:205
msgid "Unable to retrieve contact information." msgid "Unable to retrieve contact information."
msgstr "" msgstr ""
#: ../../include/follow.php:223 #: ../../include/follow.php:259
msgid "following" msgid "following"
msgstr "" msgstr ""
@ -7556,6 +7582,18 @@ msgstr ""
msgid "permissions" msgid "permissions"
msgstr "" msgstr ""
#: ../../include/plugin.php:385
msgid "Click here to upgrade."
msgstr ""
#: ../../include/plugin.php:393
msgid "This action exceeds the limits set by your subscription plan."
msgstr ""
#: ../../include/plugin.php:398
msgid "This action is not available under your subscription plan."
msgstr ""
#: ../../boot.php:517 #: ../../boot.php:517
msgid "Delete this item?" msgid "Delete this item?"
msgstr "" msgstr ""

View file

@ -26,6 +26,10 @@ $f_dsel $f_tsel
<div id="event-adjust-break"></div> <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> <div id="event-desc-text">$d_text</div>
<textarea id="event-desc-textarea" name="desc">$d_orig</textarea> <textarea id="event-desc-textarea" name="desc">$d_orig</textarea>

View file

@ -70,7 +70,7 @@
<div style="display: none;"> <div style="display: none;">
<div id="profile-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;"> <div id="profile-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;">
$acl $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-label">$emailcc</div><input type="text" name="emailcc" id="profile-jot-email" title="$emtitle" />
<div id="profile-jot-email-end"></div> <div id="profile-jot-email-end"></div>
$jotnets $jotnets

View file

@ -528,7 +528,7 @@ if ($color=="dark") $color_path = "/diabook-dark/";
$entry = replace_macros($tpl,array( $entry = replace_macros($tpl,array(
'$id' => $rr['id'], '$id' => $rr['id'],
'$profile-link' => $profile_link, '$profile-link' => $profile_link,
'$photo' => $rr[$photo], '$photo' => $a->get_cached_avatar_image($rr[$photo]),
'$alt-text' => $rr['name'], '$alt-text' => $rr['name'],
)); ));
$aside['$lastusers_items'][] = $entry; $aside['$lastusers_items'][] = $entry;

View file

@ -59,7 +59,7 @@ h6{font-size:xx-small;}
.button{color:#eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;padding:5px;cursor:pointer;}.button a{color:#eeeecc;font-weight:bold;} .button{color:#eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;padding:5px;cursor:pointer;}.button a{color:#eeeecc;font-weight:bold;}
#profile-listing-desc a{color:#eeeecc;font-weight:bold;} #profile-listing-desc a{color:#eeeecc;font-weight:bold;}
[class$="-desc"],[id$="-desc"]{color:#eeeecc;background:#2e2f2e;border:2px outset #d4d580;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:3px 10px 7px 0;padding:5px;font-weight:bold;font-size:smaller;} [class$="-desc"],[id$="-desc"]{color:#eeeecc;background:#2e2f2e;border:2px outset #d4d580;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:3px 10px 7px 0;padding:5px;font-weight:bold;font-size:smaller;}
#item-delete-selected-desc{float:left;margin-right:5px;}#item-delete-selected-desc:hover{text-decoration:underline;} #item-delete-selected-desc{float:left;font-size:smaller;margin-right:5px;}#item-delete-selected-desc:hover{text-decoration:underline;}
.intro-approve-as-friend-desc{margin-top:10px;} .intro-approve-as-friend-desc{margin-top:10px;}
.intro-desc{margin-bottom:20px;font-weight:bold;} .intro-desc{margin-bottom:20px;font-weight:bold;}
#group-edit-desc{margin:10px 0px;} #group-edit-desc{margin:10px 0px;}
@ -214,7 +214,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
.wall-item-subtools1{width:30px;height:30px;list-style:none outside none;margin:18px 0 30px -20px;padding:0;} .wall-item-subtools1{width:30px;height:30px;list-style:none outside none;margin:18px 0 30px -20px;padding:0;}
.wall-item-subtools2{width:25px;height:25px;list-style:none outside none;margin:-78px 0 0 5px;padding:0;} .wall-item-subtools2{width:25px;height:25px;list-style:none outside none;margin:-78px 0 0 5px;padding:0;}
.wall-item-title{font-size:1.2em;font-weight:bold;margin-bottom:1.4em;} .wall-item-title{font-size:1.2em;font-weight:bold;margin-bottom:1.4em;}
.wall-item-body{margin:15px 10px 10px 0px;text-align:left;overflow-x:auto;} .wall-item-body{margin:1em;text-align:left;overflow-x:auto;}
.wall-item-lock-wrapper{float:right;width:22px;height:22px;margin:0 -5px 0 0;opacity:1;} .wall-item-lock-wrapper{float:right;width:22px;height:22px;margin:0 -5px 0 0;opacity:1;}
.wall-item-dislike,.wall-item-like{clear:left;font-size:0.8em;color:#888b85;margin:5px 0 5px 10.2em;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;opacity:0.5;}.wall-item-dislike:hover,.wall-item-like:hover{opacity:1;} .wall-item-dislike,.wall-item-like{clear:left;font-size:0.8em;color:#888b85;margin:5px 0 5px 10.2em;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;opacity:0.5;}.wall-item-dislike:hover,.wall-item-like:hover{opacity:1;}
.wall-item-author,.wall-item-actions-author,.wall-item-ago{color:#eeeecc;line-height:1;display:inline-block;font-size:x-small;margin:0.5em auto;font-weight:bold;} .wall-item-author,.wall-item-actions-author,.wall-item-ago{color:#eeeecc;line-height:1;display:inline-block;font-size:x-small;margin:0.5em auto;font-weight:bold;}
@ -226,7 +226,6 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
.wallwall .wall-item-photo-end{clear:both;} .wallwall .wall-item-photo-end{clear:both;}
.wall-item-arrowphoto-wrapper{position:absolute;left:35px;top:80px;z-index:10002;} .wall-item-arrowphoto-wrapper{position:absolute;left:35px;top:80px;z-index:10002;}
.wall-item-photo-menu{min-width:92px;font-size:0.75em;border:2px solid #555753;border-top:0px;background:#555753;position:absolute;left:-2px;top:101px;display:none;z-index:10003;-o-border-radius:0 5px 5px 5px;-webkit-border-radius:0 5px 5px 5px;-moz-border-radius:0 5px 5px 5px;-ms-border-radius:0 5px 5px 5px;border-radius:0 5px 5px 5px;}.wall-item-photo-menu li a{white-space:nowrap;display:block;padding:5px 6px;color:#eeeeee;}.wall-item-photo-menu li a:hover{color:#555753;background:#eeeeee;} .wall-item-photo-menu{min-width:92px;font-size:0.75em;border:2px solid #555753;border-top:0px;background:#555753;position:absolute;left:-2px;top:101px;display:none;z-index:10003;-o-border-radius:0 5px 5px 5px;-webkit-border-radius:0 5px 5px 5px;-moz-border-radius:0 5px 5px 5px;-ms-border-radius:0 5px 5px 5px;border-radius:0 5px 5px 5px;}.wall-item-photo-menu li a{white-space:nowrap;display:block;padding:5px 6px;color:#eeeeee;}.wall-item-photo-menu li a:hover{color:#555753;background:#eeeeee;}
#item-delete-selected{overflow:auto;width:100%;}
#connect-services-header,#extra-help-header{margin:1.5em 0 0 0;} #connect-services-header,#extra-help-header{margin:1.5em 0 0 0;}
#connect-services,#extra-help{margin:0px;padding:0px;list-style:none;list-style-position:inside;margin:1em 0 0 0;}#connect-services li,#extra-help li{display:inline;} #connect-services,#extra-help{margin:0px;padding:0px;list-style:none;list-style-position:inside;margin:1em 0 0 0;}#connect-services li,#extra-help li{display:inline;}
.ccollapse-wrapper{font-size:0.9em;margin-left:5em;} .ccollapse-wrapper{font-size:0.9em;margin-left:5em;}
@ -390,10 +389,8 @@ div[id$="wrapper"]{height:100%;}div[id$="wrapper"] br{clear:left;}
.filesavetags:hover,.categorytags:hover{margin:20px 0;opacity:1.0 !important;} .filesavetags:hover,.categorytags:hover{margin:20px 0;opacity:1.0 !important;}
.item-select{opacity:0.1;margin:5px 0 0 6px !important;}.item-select:hover{opacity:1;} .item-select{opacity:0.1;margin:5px 0 0 6px !important;}.item-select:hover{opacity:1;}
.checkeditem{opacity:1;} .checkeditem{opacity:1;}
#item-delete-selected{margin-top:30px;} #item-delete-selected{margin-top:30px;position:absolute;left:35px;width:15em;overflow:auto;}
#item-delete-selected{position:absolute;left:35px;margin-top:20px;} #item-delete-selected-icon{float:left;margin:11px 5px;}
#item-delete-selected-icon{float:left;margin-right:5px;}
#item-delete-selected-desc{font-size:smaller;}
.fc-state-highlight{background:#eeeecc;color:#2e2f2e;} .fc-state-highlight{background:#eeeecc;color:#2e2f2e;}
.directory-item{float:left;margin:0 5px 4px 0;padding:3px;width:180px;height:250px;position:relative;} .directory-item{float:left;margin:0 5px 4px 0;padding:3px;width:180px;height:250px;position:relative;}
#group-sidebar{margin-bottom:10px;} #group-sidebar{margin-bottom:10px;}

View file

@ -325,6 +325,7 @@ h6 {
} }
#item-delete-selected-desc { #item-delete-selected-desc {
float: left; float: left;
font-size: smaller;
margin-right: 5px; margin-right: 5px;
&:hover { &:hover {
text-decoration: underline; text-decoration: underline;
@ -1428,7 +1429,7 @@ nav #nav-notifications-linkmenu {
margin-bottom: 1.4em; margin-bottom: 1.4em;
} }
.wall-item-body { .wall-item-body {
margin: 15px 10px 10px 0px; margin: 1em;
text-align: left; text-align: left;
overflow-x: auto; overflow-x: auto;
} }
@ -1533,10 +1534,6 @@ nav #nav-notifications-linkmenu {
} }
} }
} }
#item-delete-selected {
overflow: auto;
width: 100%;
}
#connect-services-header, #connect-services-header,
#extra-help-header { #extra-help-header {
margin: 1.5em 0 0 0; margin: 1.5em 0 0 0;
@ -2370,20 +2367,14 @@ div {
} }
#item-delete-selected { #item-delete-selected {
margin-top: 30px; margin-top: 30px;
}
/* was tired of having no way of moving it around, so
* here's a little 'hook' to do so */
#item-delete-selected {
position: absolute; position: absolute;
left: 35px; left: 35px;
margin-top: 20px; width: 15em;
overflow: auto;
} }
#item-delete-selected-icon { #item-delete-selected-icon {
float: left; float: left;
margin-right: 5px; margin: 11px 5px;
}
#item-delete-selected-desc {
font-size: smaller;
} }
.fc-state-highlight { .fc-state-highlight {
background: @main_colour; background: @main_colour;

View file

@ -59,7 +59,7 @@ h6{font-size:xx-small;}
.button{color:#111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;padding:5px;cursor:pointer;}.button a{color:#111111;font-weight:bold;} .button{color:#111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;padding:5px;cursor:pointer;}.button a{color:#111111;font-weight:bold;}
#profile-listing-desc a{color:#eeeeec;font-weight:bold;} #profile-listing-desc a{color:#eeeeec;font-weight:bold;}
[class$="-desc"],[id$="-desc"]{color:#eeeeec;background:#2e3436;border:2px outset #111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:3px 10px 7px 0;padding:5px;font-weight:bold;font-size:smaller;} [class$="-desc"],[id$="-desc"]{color:#eeeeec;background:#2e3436;border:2px outset #111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:3px 10px 7px 0;padding:5px;font-weight:bold;font-size:smaller;}
#item-delete-selected-desc{float:left;margin-right:5px;}#item-delete-selected-desc:hover{text-decoration:underline;} #item-delete-selected-desc{float:left;font-size:smaller;margin-right:5px;}#item-delete-selected-desc:hover{text-decoration:underline;}
.intro-approve-as-friend-desc{margin-top:10px;} .intro-approve-as-friend-desc{margin-top:10px;}
.intro-desc{margin-bottom:20px;font-weight:bold;} .intro-desc{margin-bottom:20px;font-weight:bold;}
#group-edit-desc{margin:10px 0px;} #group-edit-desc{margin:10px 0px;}
@ -214,7 +214,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
.wall-item-subtools1{width:30px;height:30px;list-style:none outside none;margin:18px 0 30px -20px;padding:0;} .wall-item-subtools1{width:30px;height:30px;list-style:none outside none;margin:18px 0 30px -20px;padding:0;}
.wall-item-subtools2{width:25px;height:25px;list-style:none outside none;margin:-78px 0 0 5px;padding:0;} .wall-item-subtools2{width:25px;height:25px;list-style:none outside none;margin:-78px 0 0 5px;padding:0;}
.wall-item-title{font-size:1.2em;font-weight:bold;margin-bottom:1.4em;} .wall-item-title{font-size:1.2em;font-weight:bold;margin-bottom:1.4em;}
.wall-item-body{margin:15px 10px 10px 0px;text-align:left;overflow-x:auto;} .wall-item-body{margin:1em;text-align:left;overflow-x:auto;}
.wall-item-lock-wrapper{float:right;width:22px;height:22px;margin:0 -5px 0 0;opacity:1;} .wall-item-lock-wrapper{float:right;width:22px;height:22px;margin:0 -5px 0 0;opacity:1;}
.wall-item-dislike,.wall-item-like{clear:left;font-size:0.8em;color:#111111;margin:5px 0 5px 10.2em;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;opacity:0.5;}.wall-item-dislike:hover,.wall-item-like:hover{opacity:1;} .wall-item-dislike,.wall-item-like{clear:left;font-size:0.8em;color:#111111;margin:5px 0 5px 10.2em;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;opacity:0.5;}.wall-item-dislike:hover,.wall-item-like:hover{opacity:1;}
.wall-item-author,.wall-item-actions-author,.wall-item-ago{color:#111111;line-height:1;display:inline-block;font-size:x-small;margin:0.5em auto;font-weight:bold;} .wall-item-author,.wall-item-actions-author,.wall-item-ago{color:#111111;line-height:1;display:inline-block;font-size:x-small;margin:0.5em auto;font-weight:bold;}
@ -226,7 +226,6 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
.wallwall .wall-item-photo-end{clear:both;} .wallwall .wall-item-photo-end{clear:both;}
.wall-item-arrowphoto-wrapper{position:absolute;left:35px;top:80px;z-index:10002;} .wall-item-arrowphoto-wrapper{position:absolute;left:35px;top:80px;z-index:10002;}
.wall-item-photo-menu{min-width:92px;font-size:0.75em;border:2px solid #555753;border-top:0px;background:#555753;position:absolute;left:-2px;top:101px;display:none;z-index:10003;-o-border-radius:0 5px 5px 5px;-webkit-border-radius:0 5px 5px 5px;-moz-border-radius:0 5px 5px 5px;-ms-border-radius:0 5px 5px 5px;border-radius:0 5px 5px 5px;}.wall-item-photo-menu li a{white-space:nowrap;display:block;padding:5px 6px;color:#eeeeec;}.wall-item-photo-menu li a:hover{color:#555753;background:#eeeeec;} .wall-item-photo-menu{min-width:92px;font-size:0.75em;border:2px solid #555753;border-top:0px;background:#555753;position:absolute;left:-2px;top:101px;display:none;z-index:10003;-o-border-radius:0 5px 5px 5px;-webkit-border-radius:0 5px 5px 5px;-moz-border-radius:0 5px 5px 5px;-ms-border-radius:0 5px 5px 5px;border-radius:0 5px 5px 5px;}.wall-item-photo-menu li a{white-space:nowrap;display:block;padding:5px 6px;color:#eeeeec;}.wall-item-photo-menu li a:hover{color:#555753;background:#eeeeec;}
#item-delete-selected{overflow:auto;width:100%;}
#connect-services-header,#extra-help-header{margin:1.5em 0 0 0;} #connect-services-header,#extra-help-header{margin:1.5em 0 0 0;}
#connect-services,#extra-help{margin:0px;padding:0px;list-style:none;list-style-position:inside;margin:1em 0 0 0;}#connect-services li,#extra-help li{display:inline;} #connect-services,#extra-help{margin:0px;padding:0px;list-style:none;list-style-position:inside;margin:1em 0 0 0;}#connect-services li,#extra-help li{display:inline;}
.ccollapse-wrapper{font-size:0.9em;margin-left:5em;} .ccollapse-wrapper{font-size:0.9em;margin-left:5em;}
@ -390,10 +389,8 @@ div[id$="wrapper"]{height:100%;}div[id$="wrapper"] br{clear:left;}
.filesavetags:hover,.categorytags:hover{margin:20px 0;opacity:1.0 !important;} .filesavetags:hover,.categorytags:hover{margin:20px 0;opacity:1.0 !important;}
.item-select{opacity:0.1;margin:5px 0 0 6px !important;}.item-select:hover{opacity:1;} .item-select{opacity:0.1;margin:5px 0 0 6px !important;}.item-select:hover{opacity:1;}
.checkeditem{opacity:1;} .checkeditem{opacity:1;}
#item-delete-selected{margin-top:30px;} #item-delete-selected{margin-top:30px;position:absolute;left:35px;width:15em;overflow:auto;}
#item-delete-selected{position:absolute;left:35px;margin-top:20px;} #item-delete-selected-icon{float:left;margin:11px 5px;}
#item-delete-selected-icon{float:left;margin-right:5px;}
#item-delete-selected-desc{font-size:smaller;}
.fc-state-highlight{background:#eeeeec;color:#111111;} .fc-state-highlight{background:#eeeeec;color:#111111;}
.directory-item{float:left;margin:0 5px 4px 0;padding:3px;width:180px;height:250px;position:relative;} .directory-item{float:left;margin:0 5px 4px 0;padding:3px;width:180px;height:250px;position:relative;}
#group-sidebar{margin-bottom:10px;} #group-sidebar{margin-bottom:10px;}

View file

@ -326,6 +326,7 @@ h6 {
} }
#item-delete-selected-desc { #item-delete-selected-desc {
float: left; float: left;
font-size: smaller;
margin-right: 5px; margin-right: 5px;
&:hover { &:hover {
text-decoration: underline; text-decoration: underline;
@ -1429,7 +1430,7 @@ nav #nav-notifications-linkmenu {
margin-bottom: 1.4em; margin-bottom: 1.4em;
} }
.wall-item-body { .wall-item-body {
margin: 15px 10px 10px 0px; margin: 1em;
text-align: left; text-align: left;
overflow-x: auto; overflow-x: auto;
} }
@ -1534,10 +1535,6 @@ nav #nav-notifications-linkmenu {
} }
} }
} }
#item-delete-selected {
overflow: auto;
width: 100%;
}
#connect-services-header, #connect-services-header,
#extra-help-header { #extra-help-header {
margin: 1.5em 0 0 0; margin: 1.5em 0 0 0;
@ -2371,20 +2368,14 @@ div {
} }
#item-delete-selected { #item-delete-selected {
margin-top: 30px; margin-top: 30px;
}
/* was tired of having no way of moving it around, so
* here's a little 'hook' to do so */
#item-delete-selected {
position: absolute; position: absolute;
left: 35px; left: 35px;
margin-top: 20px; width: 15em;
overflow: auto;
} }
#item-delete-selected-icon { #item-delete-selected-icon {
float: left; float: left;
margin-right: 5px; margin: 11px 5px;
}
#item-delete-selected-desc {
font-size: smaller;
} }
.fc-state-highlight { .fc-state-highlight {
background: @bg_colour; background: @bg_colour;

View file

@ -2421,9 +2421,40 @@ aside input[type='text'] {
font-size: 20px; 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 { .vevent {
border: 1px solid #CCCCCC; border: 1px solid #CCCCCC;
} }
.vevent .event-summary {
margin-left: 10px;
margin-right: 10px;
font-weight: bold;
}
.vevent .event-description, .vevent .event-location { .vevent .event-description, .vevent .event-location {
margin-left: 10px; margin-left: 10px;
margin-right: 10px; margin-right: 10px;