Merge remote-tracking branch 'friendika/master' into newui

This commit is contained in:
Fabio Comuni 2011-09-05 09:09:34 +02:00
commit 0283cbfcd3
46 changed files with 3080 additions and 1365 deletions

View File

@ -33,3 +33,7 @@ long posts truncated - with a link to view the full post.
Facebook contacts will not be able to view private photos, as they are not able to
authenticate to your site to establish identity. We will address this
in a future release.
Info: please make sure that you understand all aspects due to Friendika's
default licence which is: Creative Commons Attribution 3.0 (further info:
http://creativecommons.org/licenses/by/3.0/ )

View File

@ -273,6 +273,10 @@ function facebook_post(&$a) {
$no_linking = get_pconfig($uid,'facebook','no_linking');
$no_wall = ((x($_POST,'facebook_no_wall')) ? intval($_POST['facebook_no_wall']) : 0);
set__pconfig($uid,'facebook','no_wall',$no_wall);
$linkvalue = ((x($_POST,'facebook_linking')) ? intval($_POST['facebook_linking']) : 0);
set_pconfig($uid,'facebook','no_linking', (($linkvalue) ? 0 : 1));
@ -359,12 +363,11 @@ function facebook_content(&$a) {
$checked = (($no_linking) ? '' : ' checked="checked" ');
$o .= '<input type="checkbox" name="facebook_linking" value="1"' . $checked . '/>' . ' ' . t('Link all your Facebook friends and conversations') . EOL ;
$hidden = (($a->user['hidewall'] || get_config('system','block_public')) ? true : false);
if(! $hidden) {
$o .= EOL;
$o .= t('Warning: Your Facebook privacy settings can not be imported.') . EOL;
$o .= t('Linked Facebook items <strong>may</strong> be publicly visible, depending on your privacy settings for this website/account.') . EOL;
}
$no_wall = get_pconfig(local_user(),'facebook','no_wall');
$checked = (($no_wall) ? ' checked="checked" ' : '');
$o .= '<input type="checkbox" name="facebook_no_wall" value="1"' . $checked . '/>' . ' ' . t('Do not link your Facebook profile wall posts - as these could be visible to people that would not be able to see them on Facebook.') . EOL ;
$o .= '<input type="submit" name="submit" value="' . t('Submit') . '" /></form></div>';
}
@ -766,12 +769,13 @@ function fb_consume_all($uid) {
if(! $access_token)
return;
$s = fetch_url('https://graph.facebook.com/me/feed?access_token=' . $access_token);
if($s) {
$j = json_decode($s);
logger('fb_consume_stream: wall: ' . print_r($j,true), LOGGER_DATA);
fb_consume_stream($uid,$j,true);
if(! get_pconfig($uid,'facebook','no_wall')) {
$s = fetch_url('https://graph.facebook.com/me/feed?access_token=' . $access_token);
if($s) {
$j = json_decode($s);
logger('fb_consume_stream: wall: ' . print_r($j,true), LOGGER_DATA);
fb_consume_stream($uid,$j,true);
}
}
$s = fetch_url('https://graph.facebook.com/me/home?access_token=' . $access_token);
if($s) {

View File

@ -7,7 +7,7 @@ License: 3-clause BSD license (same as Friendika)
About
This plugin adds an Impressum block to the /friendika page with informations
about the page operator/owner and how to countact you in case of any questions.
about the page operator/owner and how to contact you in case of any questions.
In the notes and postal fields you can use HTML tags for formatting.

View File

@ -3,30 +3,30 @@ by Tobias Diekershoff
tobias.diekershoff(at)gmx.net
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This addon is currently in under development. If you have any problem !!
!! This addon is currently under development. If you have any problem !!
!! with it, please contact the Author. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
With this addon to Friendika you can give your user the possibility to post
their public messages to any StatusNet instance like identi.ca for example. The
messages will be strapped their rich context and shortened to to the character
their public messages to any StatusNet instance (like identi.ca for example).
The messages will be strapped their rich context and shortened to to the character
limit of the StatusNet instance in question if necessary. If shortening of the
message was performed a link will be added to the notice pointing to the
original message on your server.
There is a similar plugin to forward public messages to Twitter Twitter Plugin.
There is a similar plugin to forward public messages to Twitter: Twitter Plugin.
Online version of this document: http://ur1.ca/35mpb
___ Requirements ___
Due to the distributed nature of the StatusNet network, each user who wishes to
forward public messages to a StatusNet account has get the OAuth credentials
for themselves, which makes this addon a little bit more user unfriendly then
the Twitter Plugin is. Nothing to geeky though!
forward public messages to a StatusNet account has to get the OAuth credentials
for themselves, which makes this addon a little bit more user unfriendly than
the Twitter Plugin is. Nothing too geeky though!
The inclusion of a shorturl for the original posting in cases when the message
was longer then the maximal allowed notice length requires it, that you have
was longer than the maximal allowed notice length requires it, that you have
PHP5+ and curl on your server.
Where to find
@ -58,7 +58,7 @@ To get the OAuth Consumer key pair the user has to (a) ask her Friendika admin
if a pair already exists or (b) has to register the Friendika server as a
client application on the StatusNet server. This can be done from the account
settings under "Connect -> Connections -> Register an OAuth client application
-> Register new application".
-> Register a new application".
During the registration of the OAuth client remember the following:
* there is no callback url
@ -69,7 +69,7 @@ During the registration of the OAuth client remember the following:
After the required credentials for the application are stored in the
configuration you have to actually connect your Friendika account with
StatusNet. To do so follow the Sign in with StatusNet button, allow the access
and copy the security code into the addon configuration. Friendika will then
and copy the security code into the plugin configuration. Friendika will then
try to acquire the final OAuth credentials from the API, if successful the
addon settings will allow you to select to post your public messages to your
plugin settings will allow you to select to post your public messages to your
StatusNet account.

View File

@ -355,7 +355,10 @@ function statusnet_post_hook(&$a,&$b) {
logger('StatusNet post invoked');
if((local_user()) && (local_user() == $b['uid']) && (! $b['private']) && (!$b['parent']) ) {
if((local_user()) && (local_user() == $b['uid']) && (! $b['private'])) {
// mike 2-9-11 there was a restriction to only allow this for top level posts
// now relaxed so should allow one's own comments to be forwarded through the connector as well.
// Status.Net is not considered a private network
if($b['prvnets'])

View File

@ -3,7 +3,7 @@ By Tobias Diekershoff
tobias.diekershoff(at)gmx.net
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This addon is currently in under development. If you have any problem !!
!! This addon is currently under development. If you have any problem !!
!! with it, please contact the Author. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@ -29,7 +29,7 @@ After you registered the application you get an OAuth consumer key / secret
pair that identifies your app, you will need them for configuration.
The inclusion of a shorturl for the original posting in cases when the
message was longer then 140 characters requires it, that you have *PHP5+* and
message was longer than 140 characters requires it, that you have *PHP5+* and
*curl* on your server.
___ Where to find ___
@ -51,19 +51,19 @@ To activate this addon add @twitter@ to the list of active addons in your
.htconfig.php file
$a->config['system']['addon'] = "twitter, ..."
Afterwards you need to add your OAuth consumer key / secret pair to it by
adding the following to lines
adding the following two lines
$a->config['twitter']['consumerkey'] = 'your consumer KEY here';
$a->config['twitter']['consumersecret'] = 'your consumer SECRET here';
When this is done your user can now configure their Twitter connection at
"Settings -> Addon Settings" and enable the forwarding of their *public*
"Settings -> Plugin Settings" and enable the forwarding of their *public*
messages to Twitter.
__ User Configuration __
When the OAuth consumer informations are correctly placed into the
configuration file and a user visits the "Addon Settings" page they can now
configuration file and a user visits the "Plugin Settings" page they can now
connect to Twitter. To do so one has to follow the _Sign in with Twitter_
button (the page will be opened in a new browser window/tab) and get a PIN from
Twitter. This PIN has to be entered on the settings page. After submitting the
@ -71,7 +71,7 @@ PIN the plugin will get OAuth credentials identifying this user from the
Friendika account.
If this first step was successful the Twitter configuration will be changed
on the "Addon Settings" page displaying two check boxes. One to enable/disable
on the "Plugin Settings" page displaying two check boxes. One to enable/disable
the forwarding of *all public* postings to Twitter and one to clear the
personal configuration from the Twitter credentials.

View File

@ -4,7 +4,7 @@ function like_widget_name() {
return "Shows likes";
}
function like_widget_help() {
return "Search first item wich contains <em>KEY</em> and print like/dislike count";
return "Search first item which contains <em>KEY</em> and print like/dislike count";
}
function like_widget_args(){

View File

@ -8,9 +8,9 @@ require_once("include/pgettext.php");
require_once('include/nav.php');
define ( 'FRIENDIKA_VERSION', '2.2.1087' );
define ( 'FRIENDIKA_VERSION', '2.2.1093' );
define ( 'DFRN_PROTOCOL_VERSION', '2.21' );
define ( 'DB_UPDATE_VERSION', 1084 );
define ( 'DB_UPDATE_VERSION', 1087 );
define ( 'EOL', "<br />\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
@ -675,6 +675,8 @@ function login($register = false) {
'$lostlink' => $lostlink
));
call_hooks('login_hook',$o);
return $o;
}}

View File

@ -58,6 +58,7 @@ CREATE TABLE IF NOT EXISTS `contact` (
`network` char(255) NOT NULL,
`name` char(255) NOT NULL,
`nick` char(255) NOT NULL,
`attag` char(255) NOT NULL,
`photo` text NOT NULL,
`thumb` text NOT NULL,
`micro` text NOT NULL,
@ -205,6 +206,7 @@ CREATE TABLE IF NOT EXISTS `item` (
`pubmail` tinyint(1) NOT NULL DEFAULT '0',
`visible` tinyint(1) NOT NULL DEFAULT '0',
`starred` tinyint(1) NOT NULL DEFAULT '0',
`bookmark` tinyint(1) NOT NULL DEFAULT '0',
`unseen` tinyint(1) NOT NULL DEFAULT '1',
`deleted` tinyint(1) NOT NULL DEFAULT '0',
`last-child` tinyint(1) unsigned NOT NULL DEFAULT '1',
@ -612,3 +614,11 @@ CREATE TABLE IF NOT EXISTS `deliverq` (
`item` INT NOT NULL ,
`contact` INT NOT NULL
) ENGINE = MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `search` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`uid` INT NOT NULL ,
`term` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
INDEX ( `uid` ),
INDEX ( `term` )
) ENGINE = MyISAM DEFAULT CHARSET=utf8;

View File

@ -12,7 +12,7 @@ All three of these plugins require an account on the target network. In addition
**Site Configuration**
Plugins must be installed by the site administrator before they can be use. This is accomplished through the site
Plugins must be installed by the site administrator before they can be used. This is accomplished through the site
configuration file ".htconfig.php".
The configuration directive looks like:
@ -84,7 +84,7 @@ To get the OAuth Consumer key pair the user has to
(a) ask her Friendika admin if a pair already exists or
(b) has to register the Friendika server as a client application on the StatusNet server.
This can be done from the account settings under "Settings -> Connections -> Register an OAuth client application -> Register new application".
This can be done from the account settings under "Settings -> Connections -> Register an OAuth client application -> Register a new application".
During the registration of the OAuth client remember the following:
@ -133,8 +133,8 @@ d. Navigate to Set Web->Site URL & Domain -> Website Settings. Set Site URL
to yoursubdomain.yourdomain.com. Set Site Domain to your yourdomain.com.
Visit the Facebook Settings section of the "Settings->Plugin Settings" page.
and click 'Install Facebook Connector'.
Visit the Facebook Settings section of the "Settings->Plugin Settings" page.
And click 'Install Facebook Connector'.
This will ask you to login to Facebook and grant permission to the
plugin to do its stuff. Allow it to do so.

View File

@ -332,10 +332,12 @@ function probe_url($url, $mode = PROBE_NORMAL) {
if(! $url)
return $result;
$network = null;
$diaspora = false;
$diaspora_base = '';
$diaspora_guid = '';
$diaspora_key = '';
$has_lrdd = false;
$email_conversant = false;
$twitter = ((strpos($url,'twitter.com') !== false) ? true : false);
@ -352,6 +354,8 @@ function probe_url($url, $mode = PROBE_NORMAL) {
$links = lrdd($url);
if(count($links)) {
$has_lrdd = true;
logger('probe_url: found lrdd links: ' . print_r($links,true), LOGGER_DATA);
foreach($links as $link) {
if($link['@attributes']['rel'] === NAMESPACE_ZOT)
@ -493,7 +497,7 @@ function probe_url($url, $mode = PROBE_NORMAL) {
if($network !== NETWORK_ZOT && $network !== NETWORK_DFRN && $network !== NETWORK_MAIL) {
if($diaspora)
$network = NETWORK_DIASPORA;
else
elseif($has_lrdd)
$network = NETWORK_OSTATUS;
$priority = 0;
@ -637,7 +641,7 @@ function probe_url($url, $mode = PROBE_NORMAL) {
$vcard['nick'] = trim(substr($vcard['nick'],0,strpos($vcard['nick'],' ')));
}
if(! $network)
$network = 'feed';
$network = NETWORK_FEED;
if(! $priority)
$priority = 2;
}
@ -651,10 +655,14 @@ function probe_url($url, $mode = PROBE_NORMAL) {
if(! $profile)
$profile = $url;
// No human could be associated with this link, use the URL as the contact name
if(($network === NETWORK_FEED) && ($poll) && (! x($vcard,'fn')))
$vcard['fn'] = $url;
$vcard['fn'] = notags($vcard['fn']);
$vcard['nick'] = str_replace(' ','',notags($vcard['nick']));
$result['name'] = $vcard['fn'];
$result['nick'] = $vcard['nick'];
$result['url'] = $profile;

View File

@ -16,7 +16,10 @@ function diaspora2bb($s) {
$s = preg_replace("/\*(.+?)\*/", '[i]$1[/i]', $s);
$s = preg_replace("/\_(.+?)\_/", '[i]$1[/i]', $s);
$s = str_replace(array('-^doublestar^-','-^doublescore-^','-^star^-','-^score^-'), array('**','__','*','_'), $s);
$s = preg_replace('/\!\[(.+?)\]\((.+?)\)/','[img]$2[/img]',$s);
$s = preg_replace('/\[(.+?)\]\((.+?)\)/','[url=$2]$1[/url]',$s);
$s = preg_replace('/\@\{(.+?)\; (.+?)\@(.+?)\}/','@[url=https://$3/u/$2]$1[/url]',$s);
$s = escape_tags($s);
return $s;
@ -40,6 +43,11 @@ function bb2diaspora($Text,$preserve_nl = false) {
$Text = str_replace("<", "&lt;", $Text);
$Text = str_replace(">", "&gt;", $Text);
// If we find any event code, turn it into an event.
// After we're finished processing the bbcode we'll
// replace all of the event code with a reformatted version.
$ev = bbtoevent($Text);
if($preserve_nl)
$Text = str_replace(array("\n","\r"), array('',''),$Text);
@ -54,8 +62,9 @@ function bb2diaspora($Text,$preserve_nl = false) {
// [img]pathtoimage[/img]
$Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/", '[$1]($1)', $Text);
$Text = preg_replace("(\[url\=([$URLSearchString]*)\](.*?)\[/url\])", '[$2]($1)', $Text);
$Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/ism", '[$1]($1)', $Text);
$Text = preg_replace("/\#\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '[#$2]($1)', $Text);
$Text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '[$2]($1)', $Text);
// $Text = preg_replace("/\[img\](.*?)\[\/img\]/", t('Image/photo: ') . '$1', $Text);
// $Text = preg_replace("/\[img\](.*?)\[\/img\]/", t('image/photo'), $Text);
@ -156,19 +165,20 @@ function bb2diaspora($Text,$preserve_nl = false) {
// oembed tag
// $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(x($ev,'desc') && x($ev,'start')) {
// $sub = format_event_html($ev);
if(x($ev,'desc') && x($ev,'start')) {
// $Text = preg_replace("/\[event\-description\](.*?)\[\/event\-description\]/is",$sub,$Text);
//$Text = preg_replace("/\[event\-start\](.*?)\[\/event\-start\]/is",'',$Text);
// $Text = preg_replace("/\[event\-finish\](.*?)\[\/event\-finish\]/is",'',$Text);
// $Text = preg_replace("/\[event\-location\](.*?)\[\/event\-location\]/is",'',$Text);
// $Text = preg_replace("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",'',$Text);
// }
$sub = format_event_diaspora($ev);
$Text = preg_replace("/\[event\-description\](.*?)\[\/event\-description\]/is",$sub,$Text);
$Text = preg_replace("/\[event\-start\](.*?)\[\/event\-start\]/is",'',$Text);
$Text = preg_replace("/\[event\-finish\](.*?)\[\/event\-finish\]/is",'',$Text);
$Text = preg_replace("/\[event\-location\](.*?)\[\/event\-location\]/is",'',$Text);
$Text = preg_replace("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",'',$Text);
}
@ -176,3 +186,37 @@ function bb2diaspora($Text,$preserve_nl = false) {
return $Text;
}
function format_event_diaspora($ev) {
if(! ((is_array($ev)) && count($ev)))
return '';
$bd_format = t('l F d, Y \@ g:i A') ; // Friday January 18, 2011 @ 8 AM
$o = 'Friendika event notification:' . "\n";
$o .= '**' . bb2diaspora($ev['desc']) . '**' . "\n";
$o .= t('Starts:') . ' '
. (($ev['adjust']) ? day_translate(datetime_convert('UTC', 'UTC',
$ev['start'] , $bd_format ))
: day_translate(datetime_convert('UTC', 'UTC',
$ev['start'] , $bd_format)))
. "\n";
if(! $ev['nofinish'])
$o .= t('Finishes:') . ' '
. (($ev['adjust']) ? day_translate(datetime_convert('UTC', 'UTC',
$ev['finish'] , $bd_format ))
: day_translate(datetime_convert('UTC', 'UTC',
$ev['finish'] , $bd_format )))
. "\n";
if(strlen($ev['location']))
$o .= t('Location:') . bb2diaspora($ev['location'])
. "\n";
$o .= "\n";
return $o;
}

View File

@ -43,65 +43,65 @@ function bbcode($Text,$preserve_nl = false) {
$Text = preg_replace("/([^\]\=]|^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\.\=\_\~\#\%\$\!\+\,]+)/", '$1<a href="$2" target="external-link">$2</a>', $Text);
$Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/", '<a href="$1" target="external-link">$1</a>', $Text);
$Text = preg_replace("(\[url\=([$URLSearchString]*)\](.*?)\[/url\])", '<a href="$1" target="external-link">$2</a>', $Text);
//$Text = preg_replace("(\[url\=([$URLSearchString]*)\]([$URLSearchString]*)\[/url\])", '<a href="$1" target="_blank">$2</a>', $Text);
$Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/m", '<a href="$1" target="external-link">$1</a>', $Text);
$Text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/m", '<a href="$1" target="external-link">$2</a>', $Text);
//$Text = preg_replace("/\[url\=([$URLSearchString]*)\]([$URLSearchString]*)\[\/url\]/m", '<a href="$1" target="_blank">$2</a>', $Text);
// Perform MAIL Search
$Text = preg_replace("(\[mail\]([$MAILSearchString]*)\[/mail\])", '<a href="mailto:$1">$1</a>', $Text);
$Text = preg_replace("/\[mail\]([$MAILSearchString]*)\[\/mail\]/", '<a href="mailto:$1">$1</a>', $Text);
$Text = preg_replace("/\[mail\=([$MAILSearchString]*)\](.*?)\[\/mail\]/", '<a href="mailto:$1">$2</a>', $Text);
// Check for bold text
$Text = preg_replace("(\[b\](.*?)\[\/b\])is",'<strong>$1</strong>',$Text);
$Text = preg_replace("(\[b\](.*?)\[\/b\])ism",'<strong>$1</strong>',$Text);
// Check for Italics text
$Text = preg_replace("(\[i\](.*?)\[\/i\])is",'<em>$1</em>',$Text);
$Text = preg_replace("(\[i\](.*?)\[\/i\])ism",'<em>$1</em>',$Text);
// Check for Underline text
$Text = preg_replace("(\[u\](.*?)\[\/u\])is",'<u>$1</u>',$Text);
$Text = preg_replace("(\[u\](.*?)\[\/u\])ism",'<u>$1</u>',$Text);
// Check for strike-through text
$Text = preg_replace("(\[s\](.*?)\[\/s\])is",'<strike>$1</strike>',$Text);
$Text = preg_replace("(\[s\](.*?)\[\/s\])ism",'<strike>$1</strike>',$Text);
// Check for over-line text
$Text = preg_replace("(\[o\](.*?)\[\/o\])is",'<span class="overline">$1</span>',$Text);
$Text = preg_replace("(\[o\](.*?)\[\/o\])ism",'<span class="overline">$1</span>',$Text);
// Check for colored text
$Text = preg_replace("(\[color=(.*?)\](.*?)\[\/color\])is","<span style=\"color: $1;\">$2</span>",$Text);
$Text = preg_replace("(\[color=(.*?)\](.*?)\[\/color\])ism","<span style=\"color: $1;\">$2</span>",$Text);
// Check for sized text
$Text = preg_replace("(\[size=(.*?)\](.*?)\[\/size\])is","<span style=\"font-size: $1;\">$2</span>",$Text);
$Text = preg_replace("(\[size=(.*?)\](.*?)\[\/size\])ism","<span style=\"font-size: $1;\">$2</span>",$Text);
// Check for list text
$Text = preg_replace("/\[list\](.*?)\[\/list\]/is", '<ul class="listbullet">$1</ul>' ,$Text);
$Text = preg_replace("/\[list=1\](.*?)\[\/list\]/is", '<ul class="listdecimal">$1</ul>' ,$Text);
$Text = preg_replace("/\[list=i\](.*?)\[\/list\]/s",'<ul class="listlowerroman">$1</ul>' ,$Text);
$Text = preg_replace("/\[list=I\](.*?)\[\/list\]/s", '<ul class="listupperroman">$1</ul>' ,$Text);
$Text = preg_replace("/\[list=a\](.*?)\[\/list\]/s", '<ul class="listloweralpha">$1</ul>' ,$Text);
$Text = preg_replace("/\[list=A\](.*?)\[\/list\]/s", '<ul class="listupperalpha">$1</ul>' ,$Text);
$Text = preg_replace("/\[li\](.*?)\[\/li\]/s", '<li>$1</li>' ,$Text);
$Text = preg_replace("/\[list\](.*?)\[\/list\]/ism", '<ul class="listbullet">$1</ul>' ,$Text);
$Text = preg_replace("/\[list=1\](.*?)\[\/list\]/ism", '<ul class="listdecimal">$1</ul>' ,$Text);
$Text = preg_replace("/\[list=i\](.*?)\[\/list\]/sm",'<ul class="listlowerroman">$1</ul>' ,$Text);
$Text = preg_replace("/\[list=I\](.*?)\[\/list\]/sm", '<ul class="listupperroman">$1</ul>' ,$Text);
$Text = preg_replace("/\[list=a\](.*?)\[\/list\]/sm", '<ul class="listloweralpha">$1</ul>' ,$Text);
$Text = preg_replace("/\[list=A\](.*?)\[\/list\]/sm", '<ul class="listupperalpha">$1</ul>' ,$Text);
$Text = preg_replace("/\[li\](.*?)\[\/li\]/sm", '<li>$1</li>' ,$Text);
$Text = preg_replace("/\[td\](.*?)\[\/td\]/s", '<td>$1</td>' ,$Text);
$Text = preg_replace("/\[tr\](.*?)\[\/tr\]/s", '<tr>$1</tr>' ,$Text);
$Text = preg_replace("/\[table\](.*?)\[\/table\]/s", '<table>$1</table>' ,$Text);
$Text = preg_replace("/\[td\](.*?)\[\/td\]/sm", '<td>$1</td>' ,$Text);
$Text = preg_replace("/\[tr\](.*?)\[\/tr\]/sm", '<tr>$1</tr>' ,$Text);
$Text = preg_replace("/\[table\](.*?)\[\/table\]/sm", '<table>$1</table>' ,$Text);
$Text = preg_replace("/\[table border=1\](.*?)\[\/table\]/s", '<table border="1" >$1</table>' ,$Text);
$Text = preg_replace("/\[table border=0\](.*?)\[\/table\]/s", '<table border="0" >$1</table>' ,$Text);
$Text = preg_replace("/\[table border=1\](.*?)\[\/table\]/sm", '<table border="1" >$1</table>' ,$Text);
$Text = preg_replace("/\[table border=0\](.*?)\[\/table\]/sm", '<table border="0" >$1</table>' ,$Text);
// $Text = str_replace("[*]", "<li>", $Text);
// Check for font change text
$Text = preg_replace("(\[font=(.*?)\](.*?)\[\/font\])","<span style=\"font-family: $1;\">$2</span>",$Text);
$Text = preg_replace("/\[font=(.*?)\](.*?)\[\/font\]/m","<span style=\"font-family: $1;\">$2</span>",$Text);
// Declare the format for [code] layout
$Text = preg_replace_callback("/\[code\](.*?)\[\/code\]/is",'stripcode_br_cb',$Text);
$Text = preg_replace_callback("/\[code\](.*?)\[\/code\]/ism",'stripcode_br_cb',$Text);
$CodeLayout = '<code>$1</code>';
// Check for [code] text
$Text = preg_replace("/\[code\](.*?)\[\/code\]/is","$CodeLayout", $Text);
$Text = preg_replace("/\[code\](.*?)\[\/code\]/ism","$CodeLayout", $Text);
@ -109,22 +109,22 @@ function bbcode($Text,$preserve_nl = false) {
// Declare the format for [quote] layout
$QuoteLayout = '<blockquote>$1</blockquote>';
// Check for [quote] text
$Text = preg_replace("/\[quote\](.*?)\[\/quote\]/is","$QuoteLayout", $Text);
$Text = preg_replace("/\[quote\](.*?)\[\/quote\]/ism","$QuoteLayout", $Text);
// Images
// [img]pathtoimage[/img]
$Text = preg_replace("/\[img\](.*?)\[\/img\]/", '<img src="$1" alt="' . t('Image/photo') . '" />', $Text);
$Text = preg_replace("/\[img\](.*?)\[\/img\]/ism", '<img src="$1" alt="' . t('Image/photo') . '" />', $Text);
// html5 video and audio
$Text = preg_replace("/\[video\](.*?)\[\/video\]/", '<video src="$1" controls="controls" width="425" height="350"><a href="$1">$1</a></video>', $Text);
$Text = preg_replace("/\[video\](.*?)\[\/video\]/ism", '<video src="$1" controls="controls" width="425" height="350"><a href="$1">$1</a></video>', $Text);
$Text = preg_replace("/\[audio\](.*?)\[\/audio\]/", '<audio src="$1" controls="controls"><a href="$1">$1</a></audio>', $Text);
$Text = preg_replace("/\[audio\](.*?)\[\/audio\]/ism", '<audio src="$1" controls="controls"><a href="$1">$1</a></audio>', $Text);
$Text = preg_replace("/\[iframe\](.*?)\[\/iframe\]/", '<iframe src="$1" width="425" height="350"><a href="$1">$1</a></iframe>', $Text);
$Text = preg_replace("/\[iframe\](.*?)\[\/iframe\]/ism", '<iframe src="$1" width="425" height="350"><a href="$1">$1</a></iframe>', $Text);
// [img=widthxheight]image source[/img]
$Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/", '<img src="$3" style="height:{$2}px; width:{$1}px;" >', $Text);
$Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '<img src="$3" style="height:{$2}px; width:{$1}px;" >', $Text);
if (get_pconfig(local_user(), 'oembed', 'use_for_youtube' )==1){
// use oembed for youtube links
@ -132,13 +132,15 @@ function bbcode($Text,$preserve_nl = false) {
$Text = preg_replace("/\[\/youtube\]/",'[/embed]',$Text);
} else {
// Youtube extensions
$Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/youtube\]/",'[youtube]$1[/youtube]',$Text);
$Text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.*?)\[\/youtube\]/",'[youtube]$1[/youtube]',$Text);
$Text = preg_replace("/\[youtube\](.*?)\[\/youtube\]/", '<iframe width="425" height="349" src="http://www.youtube.com/embed/$1" frameborder="0" ></iframe>', $Text);
$Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text);
$Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/embed\/(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text);
$Text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text);
$Text = preg_replace("/\[youtube\]([A-Za-z0-9\-_=]+)(.*?)\[\/youtube\]/ism", '<iframe width="425" height="350" src="http://www.youtube.com/embed/$1" frameborder="0" ></iframe>', $Text);
}
// $Text = preg_replace("/\[youtube\](.*?)\[\/youtube\]/", '<object width="425" height="350" type="application/x-shockwave-flash" data="http://www.youtube.com/v/$1" ><param name="movie" value="http://www.youtube.com/v/$1"></param><!--[if IE]><embed src="http://www.youtube.com/v/$1" type="application/x-shockwave-flash" width="425" height="350" /><![endif]--></object>', $Text);
// $Text = preg_replace("/\[youtube\](.*?)\[\/youtube\]/", '<object width="425" height="350" type="application/x-shockwave-flash" data="http://www.youtube.com/v/$1" ><param name="movie" value="http://www.youtube.com/v/$1"></param><!--[if IE]><embed src="http://www.youtube.com/v/$1" type="application/x-shockwave-flash" width="425" height="350" /><![endif]--></object>', $Text);
// oembed tag
$Text = oembed_bbcode2html($Text);
@ -148,11 +150,11 @@ function bbcode($Text,$preserve_nl = false) {
if(x($ev,'desc') && x($ev,'start')) {
$sub = format_event_html($ev);
$Text = preg_replace("/\[event\-description\](.*?)\[\/event\-description\]/is",$sub,$Text);
$Text = preg_replace("/\[event\-start\](.*?)\[\/event\-start\]/is",'',$Text);
$Text = preg_replace("/\[event\-finish\](.*?)\[\/event\-finish\]/is",'',$Text);
$Text = preg_replace("/\[event\-location\](.*?)\[\/event\-location\]/is",'',$Text);
$Text = preg_replace("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",'',$Text);
$Text = preg_replace("/\[event\-description\](.*?)\[\/event\-description\]/ism",$sub,$Text);
$Text = preg_replace("/\[event\-start\](.*?)\[\/event\-start\]/ism",'',$Text);
$Text = preg_replace("/\[event\-finish\](.*?)\[\/event\-finish\]/ism",'',$Text);
$Text = preg_replace("/\[event\-location\](.*?)\[\/event\-location\]/ism",'',$Text);
$Text = preg_replace("/\[event\-adjust\](.*?)\[\/event\-adjust\]/ism",'',$Text);
}

View File

@ -80,8 +80,6 @@ function localize_item(&$item){
}
// fix bad embeds
$item['body'] = str_replace('http://www.youtube.com/embed/http:','http:',$item['body']);
}

View File

@ -262,24 +262,27 @@ function aes_unencapsulate($data,$prvkey) {
}
function zot_encapsulate($data,$sender,$pubkey) {
// This has been superceded.
function zot_encapsulate($data,$envelope,$pubkey) {
$res = aes_encapsulate($data,$pubkey);
openssl_public_encrypt($sender,$s,$pubkey);
$s1 = base64url_encode($s,true);
return <<< EOT
<?xml version='1.0' encoding='UTF-8'?>
<zot:env xmlns:zot='http://purl.org/zot/1.0'>
<zot:msg xmlns:zot='http://purl.org/zot/1.0'>
<zot:key>{$res['key']}</zot:key>
<zot:iv>{$res['iv']}</zot:iv>
<zot:sender>$s1</zot:sender>
<zot:env>$s1</zot:env>
<zot:sig key_id="$keyid">$sig</zot:sig>
<zot:alg>AES-256-CBC</zot:alg>
<zot:data type='application/magic-envelope+xml'>{$res['data']}</zot:data>
</zot:env>
</zot:msg>
EOT;
}
// so has this
function zot_unencapsulate($data,$prvkey) {
$ret = array();
$c = array();

View File

@ -140,6 +140,8 @@ function delivery_run($argv, $argc){
$owner = $r[0];
$walltowall = ((($top_level) && ($owner['id'] != $items[0]['contact-id'])) ? true : false);
$public_message = true;
// fill this in with a single salmon slap if applicable
@ -417,7 +419,8 @@ function delivery_run($argv, $argc){
diaspora_send_relay($target_item,$owner,$contact);
break;
}
elseif($top_level) {
elseif(($top_level) && (! $walltowall)) {
// currently no workable solution for sending walltowall
logger('delivery: diaspora status: ' . $contact['name']);
diaspora_send_status($target_item,$owner,$contact);
break;

View File

@ -398,6 +398,7 @@ function diaspora_request($importer,$xml) {
function diaspora_post($importer,$xml) {
$a = get_app();
$guid = notags(unxmlify($xml->guid));
$diaspora_handle = notags(unxmlify($xml->diaspora_handle));
@ -457,7 +458,14 @@ function diaspora_post($importer,$xml) {
$datarray['body'] = $body;
$datarray['app'] = 'Diaspora';
item_store($datarray);
$message_id = item_store($datarray);
if($message_id) {
q("update item set plink = '%s' where id = %d limit 1",
dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id),
intval($message_id)
);
}
return;
@ -465,6 +473,7 @@ function diaspora_post($importer,$xml) {
function diaspora_comment($importer,$xml,$msg) {
$a = get_app();
$guid = notags(unxmlify($xml->guid));
$parent_guid = notags(unxmlify($xml->parent_guid));
$diaspora_handle = notags(unxmlify($xml->diaspora_handle));
@ -576,6 +585,13 @@ function diaspora_comment($importer,$xml,$msg) {
$message_id = item_store($datarray);
if($message_id) {
q("update item set plink = '%s' where id = %d limit 1",
dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id),
intval($message_id)
);
}
if(! $parent_author_signature) {
q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
intval($message_id),
@ -595,6 +611,7 @@ function diaspora_comment($importer,$xml,$msg) {
function diaspora_photo($importer,$xml,$msg) {
$a = get_app();
$remote_photo_path = notags(unxmlify($xml->remote_photo_path));
$remote_photo_name = notags(unxmlify($xml->remote_photo_name));
@ -732,8 +749,8 @@ function diaspora_like($importer,$xml,$msg) {
}
if($parent_author_signature) {
// $owner_signed_data = $guid . ';' . $parent_guid . ';' . $target_type . ';' . $positive . ';' . $msg['author'];
$owner_signed_data = $guid . ';' . $parent_guid . ';' . $target_type . ';' . $positive . ';' . $diaspora_handle;
$owner_signed_data = $guid . ';' . $target_type . ';' . $parent_guid . ';' . $positive . ';' . $diaspora_handle;
$parent_author_signature = base64_decode($parent_author_signature);
@ -805,6 +822,14 @@ EOT;
$message_id = item_store($arr);
if($message_id) {
q("update item set plink = '%s' where id = %d limit 1",
dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id),
intval($message_id)
);
}
if(! $parent_author_signature) {
q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
intval($message_id),

View File

@ -154,7 +154,7 @@ $o .= <<< EOT
<div id="sidebar-group-list">
<ul id="sidebar-group-ul">
<li class="sidebar-group-li" ><a href="$every" $selected >$linktext</a></li>
<li class="sidebar-group-li" ><a href="$every" class="sidebar-group-element" $selected >$linktext</a></li>
EOT;
@ -170,10 +170,10 @@ EOT;
$selected = (($group_id == $rr['id']) ? ' class="group-selected" ' : '');
$o .= ' <li class="sidebar-group-li">'
. (($edit) ? "<a href=\"group/{$rr['id']}\" title=\"" . t('Edit')
. "\" ><img src=\"images/spencil.gif\" alt=\"" . t('Edit') . "\"></a> " : "")
. "\" class=\"groupsideedit\" ><img src=\"images/spencil.gif\" alt=\"" . t('Edit') . "\"></a> " : "")
. (($cid) ? '<input type="checkbox" class="' . (($selected) ? 'ticked' : 'unticked') . '" onclick="contactgroupChangeMember(' . $rr['id'] . ',' . $cid . ');return true;" '
. ((in_array($rr['id'],$member_of)) ? ' checked="checked" ' : '') . '/>' : '')
. "<a href=\"$each/{$rr['id']}\" $selected >{$rr['name']}</a></li>\r\n";
. "<a href=\"$each/{$rr['id']}\" class=\"sidebar-group-element\" $selected >{$rr['name']}</a></li>\r\n";
}
}
$o .= " </ul>\r\n </div>";

View File

@ -20,6 +20,8 @@ function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0)
for($x = 2; $x < $a->argc; $x++) {
if($a->argv[$x] == 'converse')
$converse = true;
if($a->argv[$x] == 'starred')
$starred = true;
}
}
@ -376,6 +378,10 @@ function get_atom_elements($feed,$item) {
if($dguid)
$res['guid'] = unxmlify($dguid[0]['data']);
$bm = $item->get_item_tags(NAMESPACE_DFRN,'bookmark');
if($bm)
$res['bookmark'] = ((unxmlify($bm[0]['data']) === 'true') ? 1 : 0);
/**
* If there's a copy of the body content which is guaranteed to have survived mangling in transit, use it.
@ -731,6 +737,7 @@ function item_store($arr,$force_parent = false) {
$arr['deny_cid'] = ((x($arr,'deny_cid')) ? trim($arr['deny_cid']) : '');
$arr['deny_gid'] = ((x($arr,'deny_gid')) ? trim($arr['deny_gid']) : '');
$arr['private'] = ((x($arr,'private')) ? intval($arr['private']) : 0 );
$arr['bookmark'] = ((x($arr,'bookmark')) ? intval($arr['bookmark']) : 0 );
$arr['body'] = ((x($arr,'body')) ? trim($arr['body']) : '');
$arr['tag'] = ((x($arr,'tag')) ? notags(trim($arr['tag'])) : '');
$arr['attach'] = ((x($arr,'attach')) ? notags(trim($arr['attach'])) : '');
@ -1704,6 +1711,8 @@ function atom_entry($item,$type,$author,$owner,$comment = false) {
if($item['extid'])
$o .= '<dfrn:extid>' . xmlify($item['extid']) . '</dfrn:extid>' . "\r\n";
if($item['bookmark'])
$o .= '<dfrn:bookmark>true</dfrn:bookmark>' . "\r\n";
if($item['app'])
$o .= '<statusnet:notice_info local_id="' . $item['id'] . '" source="' . xmlify($item['app']) . '" ></statusnet:notice_info>' . "\r\n";

View File

@ -2,6 +2,20 @@
require_once("boot.php");
/*
* This file was at one time responsible for doing all deliveries, but this caused
* big problems on shared hosting systems, where the process might get killed by the
* hosting provider and nothing would get delivered.
* It now only delivers one message under certain cases, and invokes a queued
* delivery mechanism (include/deliver.php) to deliver individual contacts at
* controlled intervals.
* This has a much better chance of surviving random processes getting killed
* by the hosting provider.
* A lot of this code is duplicated in include/deliver.php until we have time to go back
* and re-structure the delivery procedure based on the obstacles that have been thrown at
* us by hosting providers.
*/
function notifier_run($argv, $argc){
global $a, $db;
@ -129,6 +143,7 @@ function notifier_run($argv, $argc){
logger('notifier: top level post');
$top_level = true;
}
}
$r = q("SELECT `contact`.*, `user`.`pubkey` AS `upubkey`, `user`.`prvkey` AS `uprvkey`,
@ -144,6 +159,8 @@ function notifier_run($argv, $argc){
$owner = $r[0];
$walltowall = ((($top_level) && ($owner['id'] != $items[0]['contact-id'])) ? true : false);
$hub = get_config('system','huburl');
// If this is a public conversation, notify the feed hub
@ -591,7 +608,8 @@ function notifier_run($argv, $argc){
diaspora_send_relay($target_item,$owner,$contact);
break;
}
elseif($top_level) {
elseif(($top_level) && (! $walltowall)) {
// currently no workable solution for sending walltowall
diaspora_send_status($target_item,$owner,$contact);
break;
}

View File

@ -610,12 +610,14 @@ function micropro($contact, $redirect = false, $class = '', $textmode = false) {
if(! function_exists('search')) {
function search($s,$id='search-box',$url='/search') {
function search($s,$id='search-box',$url='/search',$save = false) {
$a = get_app();
$o = '<div id="' . $id . '">';
$o .= '<form action="' . $a->get_baseurl() . $url . '" method="get" >';
$o .= '<input type="text" name="search" id="search-text" value="' . $s .'" />';
$o .= '<input type="submit" name="submit" id="search-submit" value="' . t('Search') . '" />';
if($save)
$o .= '<input type="submit" name="save" id="search-save" value="' . t('Save') . '" />';
$o .= '</form></div>';
return $o;
}}

View File

@ -70,6 +70,7 @@
// example: <strong> to [b]
rep(/<a class=\"bookmark\" href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[bookmark=$1]$2[/bookmark]");
rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");
rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");
rep(/<span style=\"color:(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");
@ -119,6 +120,7 @@
rep(/\[\/i\]/gi,"</em>");
rep(/\[u\]/gi,"<u>");
rep(/\[\/u\]/gi,"</u>");
rep(/\[bookmark=([^\]]+)\](.*?)\[\/bookmark\]/gi,"<a class=\"bookmark\" href=\"$1\">$2</a>");
rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");
rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
rep(/\[img=(.*?)x(.*?)\](.*?)\[\/img\]/gi,"<img width=\"$1\" height=\"$2\" src=\"$3\" />");

View File

@ -344,7 +344,7 @@ function admin_page_site(&$a) {
* Users admin page
*/
function admin_page_users_post(&$a){
$pending = ( x(£_POST, 'pending') ? $_POST['pending'] : Array() );
$pending = ( x($_POST, 'pending') ? $_POST['pending'] : Array() );
$users = ( x($_POST, 'user') ? $_POST['user'] : Array() );
if (x($_POST,'page_users_block')){
@ -632,7 +632,7 @@ function admin_page_logs(&$a){
$f = get_config('system','logfile');
$size = filesize($f);
if($size > 5000000)
if($size > 5000000 || $size < 0)
$size = 5000000;
$data = '';

View File

@ -18,15 +18,16 @@ function crepair_post(&$a) {
$contact = $r[0];
$nick = ((x($_POST,'nick')) ? $_POST['nick'] : null);
$url = ((x($_POST,'url')) ? $_POST['url'] : null);
$request = ((x($_POST,'request')) ? $_POST['request'] : null);
$confirm = ((x($_POST,'confirm')) ? $_POST['confirm'] : null);
$notify = ((x($_POST,'notify')) ? $_POST['notify'] : null);
$poll = ((x($_POST,'poll')) ? $_POST['poll'] : null);
$nick = ((x($_POST,'nick')) ? $_POST['nick'] : '');
$url = ((x($_POST,'url')) ? $_POST['url'] : '');
$request = ((x($_POST,'request')) ? $_POST['request'] : '');
$confirm = ((x($_POST,'confirm')) ? $_POST['confirm'] : '');
$notify = ((x($_POST,'notify')) ? $_POST['notify'] : '');
$poll = ((x($_POST,'poll')) ? $_POST['poll'] : '');
$attag = ((x($_POST,'attag')) ? $_POST['attag'] : '');
$r = q("UPDATE `contact` SET `nick` = '%s', `url` = '%s', `request` = '%s', `confirm` = '%s', `notify` = '%s', `poll` = '%s'
$r = q("UPDATE `contact` SET `nick` = '%s', `url` = '%s', `request` = '%s', `confirm` = '%s', `notify` = '%s', `poll` = '%s', `attag` = '%s'
WHERE `id` = %d AND `uid` = %d LIMIT 1",
dbesc($nick),
dbesc($url),
@ -34,6 +35,7 @@ function crepair_post(&$a) {
dbesc($confirm),
dbesc($notify),
dbesc($poll),
dbesc($attag),
intval($contact['id']),
local_user()
);
@ -84,6 +86,7 @@ function crepair_content(&$a) {
$o .= replace_macros($tpl, array(
'$label_name' => t('Name'),
'$label_nick' => t('Account Nickname'),
'$label_attag' => t('@Tagname - overrides Name/Nickname'),
'$label_url' => t('Account URL'),
'$label_request' => t('Friend Request URL'),
'$label_confirm' => t('Friend Confirm URL'),
@ -97,6 +100,7 @@ function crepair_content(&$a) {
'$confirm' => $contact['confirm'],
'$notify' => $contact['notify'],
'$poll' => $contact['poll'],
'$contact_attag' => $contact['attag'],
'$lbl_submit' => t('Submit')
));

View File

@ -332,6 +332,15 @@ function item_post(&$a) {
}
}
// embedded bookmark in post? convert to regular url and set bookmark flag
$bookmark = 0;
if(preg_match_all("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/m",$body,$match)) {
$bookmark = 1;
$body = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/m",'[url=$1]$2[/url]',$body);
}
/**
* Fold multi-line [code] sequences
*/
@ -353,7 +362,7 @@ function item_post(&$a) {
* and we are replying, and there isn't one already
*/
if(($parent_contact) && ($parent_contact['network'] === 'stat')
if(($parent_contact) && ($parent_contact['network'] === NETWORK_OSTATUS)
&& ($parent_contact['nick']) && (! in_array('@' . $parent_contact['nick'],$tags))) {
$body = '@' . $parent_contact['nick'] . ' ' . $body;
$tags[] = '@' . $parent_contact['nick'];
@ -404,7 +413,8 @@ function item_post(&$a) {
);
}
else {
$r = q("SELECT * FROM `contact` WHERE `nick` = '%s' AND `uid` = %d LIMIT 1",
$r = q("SELECT * FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1",
dbesc($name),
dbesc($name),
intval($profile_uid)
);
@ -508,6 +518,7 @@ function item_post(&$a) {
$datarray['private'] = $private;
$datarray['pubmail'] = $pubmail_enable;
$datarray['attach'] = $attachments;
$datarray['bookmark'] = intval($bookmark);
$datarray['thr-parent'] = $thr_parent;
/**
@ -550,8 +561,8 @@ function item_post(&$a) {
$r = q("INSERT INTO `item` (`guid`, `uid`,`type`,`wall`,`gravity`,`contact-id`,`owner-name`,`owner-link`,`owner-avatar`,
`author-name`, `author-link`, `author-avatar`, `created`, `edited`, `received`, `changed`, `uri`, `thr-parent`, `title`, `body`, `app`, `location`, `coord`,
`tag`, `inform`, `verb`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `private`, `pubmail`, `attach` )
VALUES( '%s', %d, '%s', %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s' )",
`tag`, `inform`, `verb`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `private`, `pubmail`, `attach`, `bookmark` )
VALUES( '%s', %d, '%s', %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d )",
dbesc($datarray['guid']),
intval($datarray['uid']),
dbesc($datarray['type']),
@ -584,7 +595,8 @@ function item_post(&$a) {
dbesc($datarray['deny_gid']),
intval($datarray['private']),
intval($datarray['pubmail']),
dbesc($datarray['attach'])
dbesc($datarray['attach']),
intval($datarray['bookmark'])
);
$r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' LIMIT 1",

44
mod/localtime.php Normal file
View File

@ -0,0 +1,44 @@
<?php
require_once('include/datetime.php');
function localtime_post(&$a) {
$t = $_REQUEST['time'];
if(! $t)
$t = 'now';
$bd_format = t('l F d, Y \@ g:i A') ; // Friday January 18, 2011 @ 8 AM
if($_POST['timezone'])
$a->data['mod-localtime'] = datetime_convert('UTC',$_POST['timezone'],$t,$bd_format);
}
function localtime_content(&$a) {
$t = $_REQUEST['time'];
if(! $t)
$t = 'now';
$o .= '<h3>' . t('Time Conversion') . '</h3>';
$o .= '<p>' . t('Friendika provides this service for sharing events with other networks and friends in unknown timezones.') . '</p>';
if(x($a->data,'mod-localtime'))
$o .= '<p>' . sprintf( t('Converted localtime: %s'),$a->data['mod-localtime']) . '</p>';
$o .= '<p>' . sprintf( t('UTC time: %s'), $t) . '</p>';
$o .= '<form action ="' . $a->get_baseurl() . '/localtime?f=&time=' . $t . '" method="post" >';
$o .= '<p>' . t('Please select your timezone:') . '</p>';
$o .= select_timezone();
$o .= '<input type="submit" name="submit" value="' . t('Submit') . '" /></form>';
return $o;
}

View File

@ -14,10 +14,31 @@ function network_init(&$a) {
$a->page['aside'] = '';
$search = ((x($_GET,'search')) ? escape_tags($_GET['search']) : '');
$srchurl = '/network' . ((x($_GET,'cid')) ? '?cid=' . $_GET['cid'] : '') . ((x($_GET,'star')) ? '?star=' . $_GET['star'] : '');
$srchurl = '/network'
. ((x($_GET,'cid')) ? '?cid=' . $_GET['cid'] : '')
. ((x($_GET,'star')) ? '?star=' . $_GET['star'] : '')
. ((x($_GET,'bmark')) ? '?bmark=' . $_GET['bmark'] : '');
if(x($_GET,'save')) {
$r = q("select * from `search` where `uid` = %d and `term` = '%s' limit 1",
intval(local_user()),
dbesc($search)
);
if(! count($r)) {
q("insert into `search` ( `uid`,`term` ) values ( %d, '%s') ",
intval(local_user()),
dbesc($search)
);
}
}
if(x($_GET,'remove')) {
q("delete from `search` where `uid` = %d and `term` = '%s' limit 1",
intval(local_user()),
dbesc($search)
);
}
$a->page['aside'] .= search($search,'netsearch-box',$srchurl);
$a->page['aside'] .= search($search,'netsearch-box',$srchurl,true);
$a->page['aside'] .= '<div id="network-new-link">';
@ -49,8 +70,34 @@ function network_init(&$a) {
$a->page['aside'] .= '</div>';
$a->page['aside'] .= group_side('network','network',true,$group_id);
$a->page['aside'] .= saved_searches();
}
function saved_searches() {
$o = '';
$r = q("select `term` from `search` WHERE `uid` = %d",
intval(local_user())
);
if(count($r)) {
$o .= '<h3>' . t('Saved Searches') . '</h3>' . "\r\n";
$o .= '<div id="saved-search-list"><ul id="saved-search-ul">' . "\r\n";
foreach($r as $rr) {
$o .= '<li class="saved-search-li clear"><a href="network/?f=&remove=1&search=' . $rr['term'] . '" class="icon drophide savedsearchdrop" title="' . t('Remove term') . '" onclick="return confirmDelete();" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a> <a href="network/?f&search=' . $rr['term'] . '" class="savedsearchterm" >' . $rr['term'] . '</a></li>' . "\r\n";
}
$o .= '</ul></div>' . "\r\n";
}
return $o;
}
function network_content(&$a, $update = 0) {
@ -70,6 +117,7 @@ function network_content(&$a, $update = 0) {
$cid = ((x($_GET['cid'])) ? intval($_GET['cid']) : 0);
$star = ((x($_GET['star'])) ? intval($_GET['star']) : 0);
$bmark = ((x($_GET['bmark'])) ? intval($_GET['bmark']) : 0);
if(($a->argc > 2) && $a->argv[2] === 'new')
$nouveau = true;
@ -130,6 +178,7 @@ function network_content(&$a, $update = 0) {
. ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '')
. ((x($_GET,'search')) ? '&search=' . $_GET['search'] : '')
. ((x($_GET,'star')) ? '&star=' . $_GET['star'] : '')
. ((x($_GET,'bmark')) ? '&bmark=' . $_GET['bmark'] : '')
. "'; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
}
@ -151,6 +200,9 @@ function network_content(&$a, $update = 0) {
$star_sql = (($star) ? " AND `starred` = 1 " : '');
if($bmark)
$star_sql .= " AND `bookmark` = 1 ";
$sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` $star_sql ) ";
if($group) {

View File

@ -13,7 +13,7 @@ function parse_url_content(&$a) {
$text = null;
$template = "<br /><a href=\"%s\" >%s</a>%s<br />";
$template = "<br /><a class=\"bookmark\" href=\"%s\" >%s</a>%s<br />";
$arr = array('url' => $url, 'text' => '');
@ -119,6 +119,12 @@ function parse_url_content(&$a) {
$text = '<br /><br /><blockquote>' . $text . '</blockquote><br />';
}
echo sprintf($template,$url,($title) ? $title : $url,$text);
$title = str_replace("\n",'',$title);
$result = sprintf($template,$url,($title) ? $title : $url,$text);
logger('parse_url: returns: ' . $result);
echo $result;
killme();
}

View File

@ -414,7 +414,8 @@ function photos_post(&$a) {
);
}
else {
$r = q("SELECT * FROM `contact` WHERE `nick` = '%s' AND `uid` = %d LIMIT 1",
$r = q("SELECT * FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1",
dbesc($name),
dbesc($name),
intval($page_owner_uid)
);

View File

@ -1,6 +1,6 @@
<?php
define( 'UPDATE_VERSION' , 1084 );
define( 'UPDATE_VERSION' , 1087 );
/**
*
@ -704,6 +704,25 @@ function update_1083() {
`cmd` CHAR( 32 ) NOT NULL ,
`item` INT NOT NULL ,
`contact` INT NOT NULL
) ENGINE = MYISAM ;");
) ENGINE = MYISAM ");
}
function update_1084() {
q("ALTER TABLE `contact` ADD `attag` CHAR( 255 ) NOT NULL AFTER `nick` ");
}
function update_1085() {
q("CREATE TABLE IF NOT EXISTS `search` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`uid` INT NOT NULL ,
`term` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
INDEX ( `uid` ),
INDEX ( `term` )
) ENGINE = MYISAM ");
}
function update_1086() {
q("ALTER TABLE `item` ADD `bookmark` tinyint(1) NOT NULL DEFAULT '0' AFTER `starred` ");
}
}

View File

@ -7,6 +7,10 @@
<input type="text" id="crepair-nick" name="nick" value="$contact_nick" />
<div class="clear"></div>
<label id="crepair-attag-label" for="crepair-attag">$label_attag</label>
<input type="text" id="crepair-attag" name="attag" value="$contact_attag" />
<div class="clear"></div>
<label id="crepair-url-label" for="crepair-url">$label_url</label>
<input type="text" id="crepair-url" name="url" value="$contact_url" />
<div class="clear"></div>

View File

@ -24,6 +24,10 @@ $default_timezone = '$timezone';
$a->config['sitename'] = "Moje síť přátel";
// Nastavení defaultního jazyka webu
$a->config['system']['language'] = 'cs';
// Vaše možnosti jsou REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
// Ujistěte se, že jste si vytvořili Váš osobníúčet dříve, než nastavíte
// REGISTER_CLOSED. 'register_text' (pokud je nastaven) se bude zobrazovat jako první text na

View File

@ -15,7 +15,7 @@ Následně si toto heslo můžete změnit z vašeho účtu na stránce Nastaven
Přihlašovací údaje jsou tato:
Adresa webu: $siteurl
Adresa webu: $siteurl
Přihlašovací jméno: $email
S pozdravem,

View File

@ -16,7 +16,7 @@
<td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
<tr><td style="font-weight:bold;padding-bottom:5px;">$title</td></tr>
<tr><td style="padding-right:22px;">$htmlversion</td></tr>
<tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Přihlaste se na <a href="$siteurl">$siteurl$<a/> pro čtení a zaslání odpovědí na Vaše soukromé zprávy.</td></tr>
<tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Přihlaste se na <a href="$siteurl">$siteurl<a/> pro čtení a zaslání odpovědí na Vaše soukromé zprávy.</td></tr>
<tr><td></td><td>Díky,</td></tr>
<tr><td></td><td>$siteName administrátor</td></tr>
</tbody>

File diff suppressed because it is too large Load Diff

View File

@ -4,9 +4,9 @@ Milý/Milá $username,
Vaše přihlašovací údaje jsou tato:
Adresa webu: $siteurl
Adresa webu: $siteurl
Přihlašovací jméno: $email
Heslo: $new_password
Heslo: $new_password
Toto heslo si můžete změnit z vašeho účtu na stránce Nastavení poté, co se přihlásíte.

View File

@ -2,9 +2,9 @@ Milý/milá $username,
Díky za registraci na $sitename. Váš účet byl vytvořen.
Vaše přihlašovací údaje jsou tato:
Adresa webu: $siteurl
Adresa webu: $siteurl
Přihlašovací jméno: $email
Heslo: $password
Heslo: $password
Toto heslo si můžete změnit z vašeho účtu na stránce "Nastavení" poté, co se přihlásíte.

View File

@ -3,9 +3,9 @@ Na webu $sitename byla vytvořena nová uživatelská registrace, která vyžadu
Přihlašovací údaje jsou tato:
Celé jméno: $username
Adresa webu: $siteurl
Přihlašovací jméno: $email
Celé jméno: $username
Adresa webu: $siteurl
Přihlašovací jméno: $email
Pro odsouhlasení tohoto požadavku prosím klikněte na následující odkaz:

View File

@ -5,25 +5,49 @@ function string_plural_select($n){
}
;
$a->strings["Post successful."] = "Příspěvek úspěšně odeslán";
$a->strings["Contact settings applied."] = "Opravit nastavení kontaktu";
$a->strings["Contact settings applied."] = "Nastavení kontaktu změněno";
$a->strings["Contact update failed."] = "Aktualizace kontaktu selhala.";
$a->strings["Permission denied."] = "Přístup odmítnut.";
$a->strings["Contact not found."] = "Kontakt nenalezen.";
$a->strings["Repair Contact Settings"] = "Opravit nastavení kontaktu";
$a->strings["<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact will stop working."] = "<strong>VAROVÁNÍ: Toto je velmi pokročilé nastavení,</strong> pokud zadáte nesprávné informace, komunikace s tímto kontaktem přestane fungovat.";
$a->strings["Please use your browser 'Back' button <strong>now</strong> if you are uncertain what to do on this page."] = "Aktualizace kontaktu selhala";
$a->strings["Please use your browser 'Back' button <strong>now</strong> if you are uncertain what to do on this page."] = "Prosím použijte <strong>ihned</strong> v prohlížeči tlačítko \"zpět\" pokud si nejste jistí co dělat na této stránce.";
$a->strings["Name"] = "Jméno";
$a->strings["Account Nickname"] = "Přezdívka účtu";
$a->strings["Account URL"] = "URL adresa účtu";
$a->strings["Friend Request URL"] = "Žádost o přátelství URL";
$a->strings["Friend Confirm URL"] = "URL adresa potvrzení přátelství";
$a->strings["Notification Endpoint URL"] = "Notifikační URL adresa";
$a->strings["Poll/Feed URL"] = "Sdílený obsah v síti Friendika je poskytována pod <a href=\"http://creativecommons.org/licenses/by/3.0/cz/\">licencí Creative Commons Attribution 3.0</a>";
$a->strings["Poll/Feed URL"] = "Poll/Feed URL adresa";
$a->strings["Submit"] = "Odeslat";
$a->strings["Help:"] = "Nápověda:";
$a->strings["Help"] = "Nápověda";
$a->strings["File exceeds size limit of %d"] = "Velikost souboru přesáhla limit %d";
$a->strings["File upload failed."] = "Nahrání souboru se nezdařilo.";
$a->strings["Friend suggestion sent."] = "Návrhy přátelství odeslány ";
$a->strings["Suggest Friends"] = "Navrhněte přátelé";
$a->strings["Suggest a friend for %s"] = "Navrhněte přátelé pro uživatele %s";
$a->strings["Status"] = "Stav";
$a->strings["Profile"] = "Profil";
$a->strings["Photos"] = "Fotografie";
$a->strings["Events"] = "Události";
$a->strings["Personal Notes"] = "Osobní poznámky";
$a->strings["Create New Event"] = "Vytvořit novou událost";
$a->strings["Previous"] = "Předchozí";
$a->strings["Next"] = "Následující";
$a->strings["l, F j"] = "l, F j";
$a->strings["Edit event"] = "Editovat událost";
$a->strings["link to source"] = "odkaz na zdroj";
$a->strings["hour:minute"] = "hodina:minuta";
$a->strings["Event details"] = "Detaily události";
$a->strings["Format is %s %s. Starting date and Description are required."] = "Formát je %s %s. Datum zahájení a popis jsou povinné.";
$a->strings["Event Starts:"] = "Událost začíná:";
$a->strings["Finish date/time is not known or not relevant"] = "Datum/čas konce není zadán nebo není relevantní";
$a->strings["Event Finishes:"] = "Akce končí:";
$a->strings["Adjust for viewer timezone"] = "Nastavit časové pásmo pro uživatele s právem pro čtení";
$a->strings["Description:"] = "Popis:";
$a->strings["Location:"] = "Místo:";
$a->strings["Share this event"] = "Sdílet tuto událost";
$a->strings["Cancel"] = "Zrušit";
$a->strings["Tag removed"] = "Štítek odstraněn";
$a->strings["Remove Item Tag"] = "Odebrat štítek položky";
@ -32,6 +56,7 @@ $a->strings["Remove"] = "Odstranit";
$a->strings["%s welcomes %s"] = "%s vítá %s ";
$a->strings["Photo Albums"] = "Fotoalba";
$a->strings["Contact Photos"] = "Fotogalerie kontaktu";
$a->strings["everybody"] = "Žádost o připojení selhala nebo byla zrušena.";
$a->strings["Contact information unavailable"] = "Kontakt byl zablokován";
$a->strings["Profile Photos"] = "Profilové fotografie";
$a->strings["Album not found."] = "Album nenalezeno.";
@ -41,10 +66,12 @@ $a->strings["was tagged in a"] = "štítek byl přidán v";
$a->strings["photo"] = "fotografie";
$a->strings["by"] = "od";
$a->strings["Image exceeds size limit of "] = "Velikost obrázku překračuje limit velikosti";
$a->strings["Unable to process image."] = "Kontakt byl odblokován";
$a->strings["Image file is empty."] = "Soubor obrázku je prázdný.";
$a->strings["Unable to process image."] = "Obrázek není možné zprocesovat";
$a->strings["Image upload failed."] = "Nahrání obrázku selhalo.";
$a->strings["Public access denied."] = "Veřejný přístup odepřen.";
$a->strings["No photos selected"] = "Není vybrána žádná fotografie";
$a->strings["Access to this item is restricted."] = "Přístup k této položce je omezen.";
$a->strings["Upload Photos"] = "Nahrání fotografií ";
$a->strings["New album name: "] = "Název nového alba:";
$a->strings["or existing album name: "] = "nebo stávající název alba:";
@ -55,15 +82,13 @@ $a->strings["Photo not available"] = "Fotografie není k dispozici";
$a->strings["Edit photo"] = "Editovat fotografii";
$a->strings["Use as profile photo"] = "Použít jako profilovou fotografii";
$a->strings["Private Message"] = "Soukromá zpráva";
$a->strings["<< Prev"] = "<< Předchozí";
$a->strings["View Full Size"] = "Zobrazit v plné velikosti";
$a->strings["Next >>"] = "Následující >>";
$a->strings["Tags: "] = "Štítky:";
$a->strings["[Remove any tag]"] = "[Odstranit všechny štítky]";
$a->strings["New album name"] = "Nové jméno alba";
$a->strings["Caption"] = "Titulek";
$a->strings["Add a Tag"] = "Přidat štítek";
$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Kontakt byl ignorován";
$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Příklad: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping";
$a->strings["I like this (toggle)"] = "Líbí se mi to (přepínač)";
$a->strings["I don't like this (toggle)"] = "Nelíbí se mi to (přepínač)";
$a->strings["Share"] = "Sdílet";
@ -74,6 +99,10 @@ $a->strings["Delete"] = "Odstranit";
$a->strings["Recent Photos"] = "Aktuální fotografie";
$a->strings["Upload New Photos"] = "Nahrát nové fotografie";
$a->strings["View Album"] = "Zobrazit album";
$a->strings["Not available."] = "Není k dispozici.";
$a->strings["Community"] = "Komunita";
$a->strings["No results."] = "Žádné výsledky.";
$a->strings["Shared content is covered by the <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0</a> license."] = "Sdílený obsah je v souladu s <a href=\"http://creativecommons.org/licenses/by/3.0/\">Commons Creative 3.0</a> licencí.";
$a->strings["Item not found"] = "Položka nenalezena";
$a->strings["Edit post"] = "Upravit příspěvek";
$a->strings["Post to Email"] = "Poslat příspěvek na e-mail";
@ -84,14 +113,14 @@ $a->strings["Insert web link"] = "Vložit webový odkaz";
$a->strings["Insert YouTube video"] = "Vložit YouTube video";
$a->strings["Insert Vorbis [.ogg] video"] = "Vložit Vorbis [.ogg] video";
$a->strings["Insert Vorbis [.ogg] audio"] = "Vložit Vorbis [.ogg] audio";
$a->strings["Set your location"] = "Kontakt přestal být ignorován";
$a->strings["Clear browser location"] = "Kontakt byl odstraněn";
$a->strings["Set your location"] = "Nastavte vaši polohu";
$a->strings["Clear browser location"] = "Odstranit adresu v prohlížeči";
$a->strings["Permission settings"] = "Nastavení oprávnění";
$a->strings["CC: email addresses"] = "skrytá kopie: e-mailové adresy";
$a->strings["Public post"] = "Veřejný příspěvek";
$a->strings["Example: bob@example.com, mary@example.com"] = "Editor kontaktu";
$a->strings["This introduction has already been accepted."] = "Kontaktní informace / poznámky";
$a->strings["Profile location is not valid or does not contain profile information."] = "Zablokovat/Odblokovat kontakt";
$a->strings["Example: bob@example.com, mary@example.com"] = "Příklad: bob@example.com, mary@example.com";
$a->strings["This introduction has already been accepted."] = "Toto pozvání již bylo přijato";
$a->strings["Profile location is not valid or does not contain profile information."] = "Adresa profilu není platná nebo neobsahuje profilové informace";
$a->strings["Warning: profile location has no identifiable owner name."] = "Varování: umístění profilu nemá žádné identifikovatelné jméno vlastníka";
$a->strings["Warning: profile location has no profile photo."] = "Varování: umístění profilu nemá žádnou profilovou fotografii.";
$a->strings["%d required parameter was not found at the given location"] = array(
@ -100,10 +129,10 @@ $a->strings["%d required parameter was not found at the given location"] = array
2 => "%d požadované parametry nebyly nalezeny na daném místě",
);
$a->strings["Introduction complete."] = "Představení dokončeno.";
$a->strings["Unrecoverable protocol error."] = "Smazat kontakt";
$a->strings["Unrecoverable protocol error."] = "Neopravitelná chyba protokolu";
$a->strings["Profile unavailable."] = "Profil není k dispozici.";
$a->strings["%s has received too many connection requests today."] = "%s dnes obdržel příliš mnoho požadavků na připojení.";
$a->strings["Spam protection measures have been invoked."] = "Blokovat tento kontakt";
$a->strings["Spam protection measures have been invoked."] = "Ochrana proti spamu byla aktivována";
$a->strings["Friends are advised to please try again in 24 hours."] = "Přátelům se doporučuje to zkusit znovu za 24 hodin.";
$a->strings["Invalid locator"] = "Neplatný odkaz";
$a->strings["Unable to resolve your name at the provided location."] = "Nepodařilo se zjistit Vaše jméno na zadané adrese.";
@ -120,11 +149,11 @@ $a->strings["Please confirm your introduction/connection request to %s."] = "Pro
$a->strings["Confirm"] = "Potvrdit";
$a->strings["[Name Withheld]"] = "[Jméno odepřeno]";
$a->strings["Introduction received at "] = "Pozvánka přijata v";
$a->strings["Administrator"] = "Správce";
$a->strings["Administrator"] = "Administrátor";
$a->strings["Friend/Connection Request"] = "Požadavek o přátelství / propojení";
$a->strings["Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca"] = "Příklady: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca";
$a->strings["Please answer the following:"] = "Odpovězte, prosím, následující:";
$a->strings["Does \$name know you?"] = "Zná Vás \$name?";
$a->strings["Does %s know you?"] = "Zná Vás uživatel %s ?";
$a->strings["Yes"] = "Ano";
$a->strings["No"] = "Ne";
$a->strings["Add a personal note:"] = "Přidat osobní poznámku:";
@ -147,14 +176,15 @@ $a->strings["You may need to import the file \"database.sql\" manually using php
$a->strings["Welcome to Friendika."] = "Vítejte na Friendice.";
$a->strings["Friendika Social Network"] = "Sociální síť Friendika ";
$a->strings["Installation"] = "Instalace";
$a->strings["In order to install Friendika we need to know how to contact your database."] = "Pro instalaci Friendiky musíme vědět, jak se připojit k Vaší databázi.";
$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Obraťte se na svého poskytovatele hostingu nebo správce serveru, pokud máte dotazy týkající se těchto nastavení.";
$a->strings["The database you specify below must already exist. If it does not, please create it before continuing."] = "Databáze zadáte níže již musí existovat. Pokud ještě neexistuje, vytvořte ji, prosím, aby bylo možné pokračovat.";
$a->strings["In order to install Friendika we need to know how to connect to your database."] = "Pro instalaci Friendika musíme vědět, jak se připojit k databázi.";
$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Obraťte se na svého poskytovatele hostingu nebo administrátora serveru , pokud máte dotazy týkající se těchto nastavení.";
$a->strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "Databázi, kterou uvedete níže by již měla existovat. Pokud tak není, prosíme, vytvořte ji před pokračováním.";
$a->strings["Database Server Name"] = "Jméno databázového serveru";
$a->strings["Database Login Name"] = "Přihlašovací jméno k databázi";
$a->strings["Database Login Password"] = "Heslo k databázovému účtu ";
$a->strings["Database Name"] = "Jméno databáze";
$a->strings["Please select a default timezone for your website"] = "Prosím, vyberte výchozí časové pásmo pro vaše webové stránky";
$a->strings["Site administrator email address. Your account email address must match this in order to use the web admin panel."] = "e-mailová adresa administrárota webu. E-mailová adresa vašeho účtu se musí shodovat, aby bylo možné využívat panel webové administrace.";
$a->strings["Could not find a command line version of PHP in the web server PATH."] = "Nelze najít verzi PHP pro příkazový řádek v PATH webového serveru.";
$a->strings["This is required. Please adjust the configuration file .htconfig.php accordingly."] = "Tento krok je nutný. Upravte příslušným způsobem konfigurační soubor .htconfig.php.";
$a->strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "Verze PHP pro příkazový řádek na vašem systému nemá povolen \"register_argc_argv\".";
@ -166,13 +196,16 @@ $a->strings["Error: libCURL PHP module required but not installed."] = "Chyba: p
$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Chyba: požadovaný GD graphics PHP modul není nainstalován.";
$a->strings["Error: openssl PHP module required but not installed."] = "Chyba: požadovaný openssl PHP modul není nainstalován.";
$a->strings["Error: mysqli PHP module required but not installed."] = "Chyba: požadovaný mysqli PHP modul není nainstalován.";
$a->strings["Error: mb_string PHP module required but not installed."] = "Chyba: PHP modul mb_string je vyžadován, ale není nainstalován.";
$a->strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "Webový instalátor musí být schopen vytvořit soubor s názvem \".htconfig.php\" v hlavním adresáři vašeho webového serveru ale nyní mu to není umožněno.";
$a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Toto je nejčastěji nastavením oprávnění, kdy webový server nemusí být schopen zapisovat soubory do vašeho adresáře - i když Vy můžete.";
$a->strings["Please check with your site documentation or support people to see if this situation can be corrected."] = "Prosím, poraďte se s dokumentací k Vašemu hostingu nebo s technickou podporou, zda-li lze tuto situaci napravit.";
$a->strings["If not, you may be required to perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = "Pokud ne, může být vyžadováno provedení ruční instalace. Prosím, seznamte se s návodem popsaným v souboru \"INSTALL.txt\".";
$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Databázový konfigurační soubor \".htconfig.php\" nemohl být uložen. Prosím, použijte přiložený text k vytvoření konfiguračního souboru ve vašem kořenovém adresáři webového serveru.";
$a->strings["Errors encountered creating database tables."] = "Při vytváření databázových tabulek došlo k chybám.";
$a->strings["[Embedded content - reload page to view]"] = "[Vložený obsah - obnovení stránky pro zobrazení]";
$a->strings["Profile Match"] = "Shoda profilu";
$a->strings["No keywords to match. Please add keywords to your default profile."] = "Žádná klíčová slova k porovnání. Prosím, přidejte klíčová slova do Vašeho výchozího profilu.";
$a->strings["No matches"] = "Žádné shody";
$a->strings["Remote privacy information not available."] = "Vzdálené soukromé informace nejsou k dispozici.";
$a->strings["Visible to:"] = "Viditelné pro:";
@ -183,21 +216,25 @@ $a->strings["Ignore"] = "Ignorovat";
$a->strings["Pending Friend/Connect Notifications"] = "Čekající požadavky na Přátelství / Připojení ";
$a->strings["Show Ignored Requests"] = "Zobrazit ignorované žádosti";
$a->strings["Hide Ignored Requests"] = "Skrýt ignorované žádosti";
$a->strings["Notification type: "] = "Typ oznámení:";
$a->strings["Friend Suggestion"] = "Návrh přátelství";
$a->strings["suggested by %s"] = "navrhl %s";
$a->strings["Approve"] = "Schválit";
$a->strings["Claims to be known to you: "] = "Vaši údajní známí:";
$a->strings["yes"] = "ano";
$a->strings["no"] = "ne";
$a->strings["Approve as: "] = "Schválit jako:";
$a->strings["Friend"] = "Přítel";
$a->strings["Fan/Admirer"] = "Fanoušek / obdivovatel";
$a->strings["Notification type: "] = "Typ oznámení:";
$a->strings["Friend/Connect Request"] = "Přítel / žádost o připojení";
$a->strings["New Follower"] = "Nový následovník";
$a->strings["Approve"] = "Schválit";
$a->strings["No notifications."] = "Žádné oznámení.";
$a->strings["User registrations waiting for confirm"] = "Registrace uživatele čeká na potvrzení";
$a->strings["Deny"] = "Odmítnout";
$a->strings["No registrations."] = "Žádné registrace.";
$a->strings["Invite Friends"] = "Pozvat přátele";
$a->strings["%d invitation available"] = array(
0 => "Pozvánka %d k dispozici",
1 => "Pozvánky %d k dispozici",
2 => "Pozvánky %d k dispozici",
);
$a->strings["Find People With Shared Interests"] = "Najít lidi se společnými zájmy";
$a->strings["Connect/Follow"] = "Připojit / Následovat";
$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Příklad: jan@příklad.cz, http://příklad.cz/jana";
@ -219,6 +256,7 @@ $a->strings["Private communications are not available for this contact."] = "Sou
$a->strings["Never"] = "Nikdy";
$a->strings["(Update was successful)"] = "(Aktualizace byla úspěšná)";
$a->strings["(Update was not successful)"] = "(Aktualizace nebyla úspěšná)";
$a->strings["Suggest friends"] = "Navrhněte přátelé";
$a->strings["Contact Editor"] = "Editor kontaktu";
$a->strings["Profile Visibility"] = "Viditelnost profilu";
$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Vyberte prosím profil, který chcete zobrazit %s při zabezpečeném prohlížení vašeho profilu.";
@ -227,7 +265,7 @@ $a->strings["Online Reputation"] = "Online pověst";
$a->strings["Occasionally your friends may wish to inquire about this person's online legitimacy."] = "Občas mohou vaši přátelé chtít informovat o online legitimitě této osoby.";
$a->strings["You may help them choose whether or not to interact with this person by providing a <em>reputation</em> to guide them."] = "Poskytnutím <em>pověsti</em> jim můžete pomoci se rozhodnout, zda-li s touto osobou komunikovat či nikoliv.";
$a->strings["Please take a moment to elaborate on this selection if you feel it could be helpful to others."] = "Věnujte prosím chvilku vyplnění této volby, pokud máte pocit, že by mohlo být užitečné pro ostatní.";
$a->strings["Visit \$name's profile"] = "Navštívit profil \$name";
$a->strings["Visit %s's profile [%s]"] = "Navštivte profil uživatele %s [%s]";
$a->strings["Block/Unblock contact"] = "Blokovat / Odblokovat kontakt";
$a->strings["Ignore contact"] = "Ignorovat kontakt";
$a->strings["Repair contact URL settings"] = "Opravit nastavení URL kontaktu";
@ -248,13 +286,13 @@ $a->strings["Show Blocked Connections"] = "Zobrazit blokované spojení";
$a->strings["Hide Blocked Connections"] = "Skrýt blokované spojení";
$a->strings["Finding: "] = "Zjištění: ";
$a->strings["Find"] = "Najít";
$a->strings["Visit \$username's profile"] = "Navštívit profil uživatele \$username";
$a->strings["Edit contact"] = "Editovat kontakt";
$a->strings["No valid account found."] = "Nenalezen žádný platný účet.";
$a->strings["Password reset request issued. Check your email."] = "Žádost o obnovení hesla vyřízena. Zkontrolujte Vaši e-mailovou schránku.";
$a->strings["Password reset requested at %s"] = "Resetování hesla vyžádáno v %s";
$a->strings["Password reset requested at %s"] = "Na %s bylo zažádáno o resetování hesla";
$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Žádost nemohla být ověřena. (Možná jste ji odeslali již dříve.) Obnovení hesla se nezdařilo.";
$a->strings["Password Reset"] = "Obnovit heslo";
$a->strings["Your password has been reset as requested."] = "Vaše heslo bylo resetováno jak bylo požadováno.";
$a->strings["Password Reset"] = "Obnovení hesla";
$a->strings["Your password has been reset as requested."] = "Vaše heslo bylo na Vaše přání resetováno.";
$a->strings["Your new password is"] = "Vaše nové heslo je";
$a->strings["Save or copy your new password - and then"] = "Uložte si nebo zkopírujte nové heslo - a pak";
$a->strings["click here to login"] = "klikněte zde pro přihlášení";
@ -267,73 +305,82 @@ $a->strings["Passwords do not match. Password unchanged."] = "Hesla se neshoduj
$a->strings["Empty passwords are not allowed. Password unchanged."] = "Prázdné hesla nejsou povolena. Heslo nebylo změněno.";
$a->strings["Password changed."] = "Heslo bylo změněno.";
$a->strings["Password update failed. Please try again."] = "Aktualizace hesla se nezdařila. Zkuste to prosím znovu.";
$a->strings["Failed to connect with email account using the settings provided."] = "Nepodařilo se připojit k e-mailovému účtu pomocí dodaného nastavení.";
$a->strings[" Please use a shorter name."] = "Prosím použijte kratší jméno.";
$a->strings[" Name too short."] = "Jméno je příliš krátké.";
$a->strings[" Not valid email."] = "Neplatný e-mail.";
$a->strings[" Cannot change to that email."] = "Nelze provést změnu na tento e-mail.";
$a->strings["Settings updated."] = "Nastavení aktualizováno.";
$a->strings["Plugin Settings"] = "Nastavení doplňku";
$a->strings["Account Settings"] = "Nastavení účtu";
$a->strings["Account settings"] = "Nastavení účtu";
$a->strings["Plugin settings"] = "Nastavení pluginu";
$a->strings["No Plugin settings configured"] = "Žádný doplněk není nastaven";
$a->strings["Plugin Settings"] = "Nastavení doplňku";
$a->strings["Normal Account"] = "Normální účet";
$a->strings["This account is a normal personal profile"] = "Tento účet je běžný osobní profil";
$a->strings["Soapbox Account"] = "Soapbox účet";
$a->strings["Automatically approve all connection/friend requests as read-only fans"] = "Automaticky schválit všechna spojení / přátelství jako fanoušky s právem pouze ke čtení";
$a->strings["Community/Celebrity Account"] = "Komunitní účet / Účet celebrity";
$a->strings["Automatically approve all connection/friend requests as read-write fans"] = "Automaticky schvalovat všechny žádosti o spojení / přátelství, jako fanoušky s právem ke čtení.";
$a->strings["Automatic Friend Account"] = "Automatický účet přítele";
$a->strings["Automatic Friend Account"] = "Účet s automatickým schvalováním přátel";
$a->strings["Automatically approve all connection/friend requests as friends"] = "Automaticky schvalovat všechny žádosti o spojení / přátelství jako přátele";
$a->strings["OpenID: "] = "OpenID: ";
$a->strings["&nbsp;(Optional) Allow this OpenID to login to this account."] = "&nbsp;(Volitelné) Povolit toto OpenID pro přihlášení k tomuto účtu.";
$a->strings["Publish your default profile in site directory?"] = "Zveřejnit Váš výchozí profil v místním adresáři?";
$a->strings["Publish your default profile in global social directory?"] = "Zveřejnit Váš výchozí profil v globálním sociální adresáři?";
$a->strings["OpenID:"] = "OpenID:";
$a->strings["(Optional) Allow this OpenID to login to this account."] = "(Volitelné) Povolit OpenID pro přihlášení k tomuto účtu.";
$a->strings["Publish your default profile in your local site directory?"] = "Publikovat Váš výchozí profil v místním adresáři webu?";
$a->strings["Publish your default profile in the global social directory?"] = "Publikovat Váš výchozí profil v globální sociálním adresáři?";
$a->strings["Hide your contact/friend list from viewers of your default profile?"] = "Skrýt Vaše kontaktní údaje a seznam přátel před návštěvníky ve Vašem výchozím profilu?";
$a->strings["Hide profile details and all your messages from unknown viewers?"] = "Skrýt detaily profilu a všechny zprávy před neznámými uživateli?";
$a->strings["Profile is <strong>not published</strong>."] = "Profil <strong>není zveřejněn</strong>.";
$a->strings["or"] = "nebo";
$a->strings["Your Identity Address is"] = "Vaše adresa identity je";
$a->strings["Account Settings"] = "Nastavení účtu";
$a->strings["Export Personal Data"] = "Export osobních údajů";
$a->strings["Password Settings"] = "Nastavení hesla";
$a->strings["New Password:"] = "Nové heslo:";
$a->strings["Confirm:"] = "Potvrďte:";
$a->strings["Leave password fields blank unless changing"] = "Pokud nechcete změnit heslo, položku hesla nevyplňujte";
$a->strings["Basic Settings"] = "Základní nastavení";
$a->strings["Full Name:"] = "Celé jméno:";
$a->strings["Email Address:"] = "E-mailová adresa:";
$a->strings["Your Timezone:"] = "Vaše časové pásmo:";
$a->strings["Default Post Location:"] = "Výchozí umístění příspěvků:";
$a->strings["Use Browser Location:"] = "Použijte prohlížeč Místo:";
$a->strings["Display Theme:"] = "Zobrazit téma:";
$a->strings["Use Browser Location:"] = "Používat umístění dle prohlížeče:";
$a->strings["Display Theme:"] = "Vybrat grafickou šablonu:";
$a->strings["Security and Privacy Settings"] = "Nastavení zabezpečení a soukromí";
$a->strings["Maximum Friend Requests/Day:"] = "Maximální počet žádostí o přátelství za den:";
$a->strings["(to prevent spam abuse)"] = "(Aby se zabránilo spamu)";
$a->strings["Allow friends to post to your profile page:"] = "Povolit přátelům příspěvky na Vaši profilovou stránku:";
$a->strings["Automatically expire (delete) posts older than"] = "Automaticky smazat příspěvky starší než";
$a->strings["days"] = "dnů";
$a->strings["Notification Settings"] = "Nastavení notifikací";
$a->strings["Send a notification email when:"] = "Posílat e-mailové upozornění když: ";
$a->strings["You receive an introduction"] = "Obdržíte žádost o propojení";
$a->strings["Your introductions are confirmed"] = "Vaše žádosti jsou potvrzeny";
$a->strings["Someone writes on your profile wall"] = "Někdo píše na Vaši profilovou stránku";
$a->strings["Someone writes a followup comment"] = "Někdo píše následný komentář";
$a->strings["You receive a private message"] = "Obdržel jste soukromou zprávu";
$a->strings["Password Settings"] = "Nastavení hesla";
$a->strings["Leave password fields blank unless changing"] = "Pokud nechcete změnit heslo, položku hesla nevyplňujte";
$a->strings["New Password:"] = "Nové heslo:";
$a->strings["Confirm:"] = "Potvrďte:";
$a->strings["Advanced Page Settings"] = "Pokročilé nastavení stránky";
$a->strings["Default Post Permissions"] = "Výchozí oprávnění pro příspěvek";
$a->strings["(click to open/close)"] = "(Klikněte pro otevření/zavření)";
$a->strings["Allow friends to post to your profile page:"] = "Povolit přátelům příspěvky na Vaši profilovou stránku:";
$a->strings["Automatically expire posts after days:"] = "Po kolika dnech automaticky expirovat příspěvky:";
$a->strings["If empty, posts will not expire. Expired posts will be deleted"] = "Pokud je prázdné, příspěvky nebudou nikdy expirovat. Expirované příspěvky budou vymazány";
$a->strings["Notification Settings"] = "Nastavení notifikací";
$a->strings["Send a notification email when:"] = "Poslat notifikaci e-mailem, když";
$a->strings["You receive an introduction"] = "obdržíte žádost o propojení";
$a->strings["Your introductions are confirmed"] = "Vaše žádosti jsou potvrzeny";
$a->strings["Someone writes on your profile wall"] = "někdo Vám napíše na Vaši profilovou stránku";
$a->strings["Someone writes a followup comment"] = "někdo Vám napíše následný komentář";
$a->strings["You receive a private message"] = "obdržíte soukromou zprávu";
$a->strings["Email/Mailbox Setup"] = "Nastavení e-mailu";
$a->strings["If you wish to communicate with email contacts using this service (optional), please specify how to connect to your mailbox."] = "Pokud chcete komunikovat pomocí této služby s Vašimi kontakty z e-mailu (volitelné), uveďte, jak se připojit k Vaší e-mailové schránce.";
$a->strings["Last successful email check:"] = "Poslední úspěšná kontrola e-mailu:";
$a->strings["Email access is disabled on this site."] = "Přístup k elektronické poště je na tomto serveru zakázán.";
$a->strings["IMAP server name:"] = "jméno IMAP serveru:";
$a->strings["IMAP port:"] = "IMAP port:";
$a->strings["Security (TLS or SSL):"] = "Zabezpečení (TLS nebo SSL):";
$a->strings["Security:"] = "Zabezpečení:";
$a->strings["None"] = "Žádný";
$a->strings["Email login name:"] = "přihlašovací jméno k e-mailu:";
$a->strings["Email password:"] = "heslo k Vašemu e-mailu:";
$a->strings["Reply-to address (Optional):"] = "Odpovědět na adresu (nepovinné):";
$a->strings["Reply-to address:"] = "Odpovědět na adresu:";
$a->strings["Send public posts to all email contacts:"] = "Poslat veřejné příspěvky na všechny e-mailové kontakty:";
$a->strings["Email access is disabled on this site."] = "Přístup k elektronické poště je na tomto serveru zakázán.";
$a->strings["Advanced Page Settings"] = "Pokročilé nastavení stránky";
$a->strings["Welcome back %s"] = "Vítejte zpět %s";
$a->strings["Manage Identities and/or Pages"] = "Správa identit a / nebo stránek";
$a->strings["(Toggle between different identities or community/group pages which share your account details.)"] = "(Přepínání mezi různými identitami nebo komunitními / skupinovými stránkami, které sdílejí Vaše detaily účtu.)";
$a->strings["Select an identity to manage: "] = "Vyberte identitu pro správu:";
$a->strings["Normal View"] = "Normální zobrazení";
$a->strings["New Item View"] = "Zobrazení nových položek";
$a->strings["View Conversations"] = "Zobrazit konverzace";
$a->strings["View New Items"] = "Zobrazit nové položky";
$a->strings["View Any Items"] = "Zobrazit všechny položky";
$a->strings["View Starred Items"] = "Zobrazit položky označené hvězdu";
$a->strings["Warning: This group contains %s member from an insecure network."] = array(
0 => "Upozornění: Tato skupina obsahuje %s člena z nezabezpečené sítě.",
1 => "Upozornění: Tato skupina obsahuje %s členy z nezabezpečené sítě.",
@ -346,9 +393,21 @@ $a->strings["Group: "] = "Skupina:";
$a->strings["Contact: "] = "Kontakt:";
$a->strings["Private messages to this person are at risk of public disclosure."] = "Soukromé zprávy této osobě jsou vystaveny riziku prozrazení.";
$a->strings["Invalid contact."] = "Neplatný kontakt.";
$a->strings["Shared content is covered by the <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0</a> license."] = "Sdílený obsah je v souladu s <a href=\"http://creativecommons.org/licenses/by/3.0/\">Commons Creative 3.0</a> licencí.";
$a->strings["Private Notes"] = "Soukromé poznámky";
$a->strings["Save"] = "Uložit";
$a->strings["Welcome to Friendika"] = "Vítejte na Friendika";
$a->strings["New Member Checklist"] = "Seznam doporučení pro nového člena";
$a->strings["We would like to offer some tips and links to help make your experience enjoyable. Click any item to visit the relevant page."] = "Dovolujeme si Vám nabídnout některé tipy a odkazy, abychom Vám zpříjemnili práci se systémem Friendika. Kliknutím na libovolnou položku navštívit příslušnou stránku.";
$a->strings["On your <em>Settings</em> page - change your initial password. Also make a note of your Identity Address. This will be useful in making friends."] = "Na stránce <em>Nastavení</em> - změnit výchozí heslo. Poznamenejte si také adresu své identity. To může být užitečné při navazování přátelství.";
$a->strings["Review the other settings, particularly the privacy settings. An unpublished directory listing is like having an unlisted phone number. In general, you should probably publish your listing - unless all of your friends and potential friends know exactly how to find you."] = "Prohlédněte si další nastavení, a to zejména nastavení soukromí. Nezveřejnění svého účtu v adresáři je jako mít nezveřejněné telefonní číslo. Obecně platí, že je lepší mít svůj účet zveřejněný, leda by všichni vaši potenciální přátelé věděli, jak vás přesně najít.";
$a->strings["Upload a profile photo if you have not done so already. Studies have shown that people with real photos of themselves are ten times more likely to make friends than people who do not."] = "Nahrajte si svou profilovou fotku, pokud jste tak již neučinili. Studie ukázaly, že lidé se skutečnými fotografiemi mají desetkrát častěji přátele než lidé, kteří nemají.";
$a->strings["Authorise the Facebook Connector if you currently have a Facebook account and we will (optionally) import all your Facebook friends and conversations."] = "Jestliže máte účet na Facebooku, povolte konektor na Facebook a bude možné (na přání) importovat všechny Vaš přátele na Facebooku a všechny Vaše konverzace.";
$a->strings["Enter your email access information on your Settings page if you wish to import and interact with friends or mailing lists from your email INBOX"] = "na stránce Nastavení zadejte informace pro přístup k Vaší e-mailové stránce, pokud si přejete importovat a komunikovat s přáteli nebo distribučními skupinami z Vaší e-mailové schránky";
$a->strings["Edit your <strong>default</strong> profile to your liking. Review the settings for hiding your list of friends and hiding the profile from unknown visitors."] = "Upravit <strong>výchozí</strong> profil podle vašich představ. Prověřte nastavení pro skrytí Vašeho seznamu přátel a skrytí profilu před neznámými návštěvníky.";
$a->strings["Set some public keywords for your default profile which describe your interests. We may be able to find other people with similar interests and suggest friendships."] = "Nastavte si nějaká veřejné klíčová slova pro výchozí profil, která popisují vaše zájmy. Friendika Vám může nalézt další lidi s podobnými zájmy a navrhnout přátelství.";
$a->strings["Your Contacts page is your gateway to managing friendships and connecting with friends on other networks. Typically you enter their address or site URL in the <em>Connect</em> dialog."] = "Stránka Kontakty je Vaším odrazovým můstkem k řízení přátelství a spojení s kamarády v jiných sítích. Obvykle zadáte jejich adresu nebo adresu URL do dialogu <em>Připojit</em>.";
$a->strings["The Directory page lets you find other people in this network or other federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on their profile page. Provide your own Identity Address if requested."] = "Stránka Adresář Vám pomůže najít další lidi na tomto serveru nebo v jiných propojených serverech. Prostřednictvím odkazů <em>Připojení</em> nebo <em>Následovat</em> si prohlédněte jejich profilovou stránku. Uveďte svou vlastní adresu identity, je-li požadována.";
$a->strings["Once you have made some friends, organize them into private conversation groups from the sidebar of your Contacts page and then you can interact with each group privately on your Network page."] = "Jakmile získáte nějaké přátele, uspořádejte si je do soukromých konverzačních skupin na postranním panelu vaší stránky Kontakty a pak můžete komunikovat s každou touto skupinu soukromě prostřednictvím stránky Síť.";
$a->strings["Our <strong>help</strong> pages may be consulted for detail on other program features and resources."] = "Na stránkách <strong>Nápověda</strong> naleznete nejen další podrobnosti o všech funkcích Friendika ale také další zdroje informací.";
$a->strings["Item not available."] = "Položka není k dispozici.";
$a->strings["Item was not found."] = "Položka nebyla nalezena.";
$a->strings["Group created."] = "Skupina vytvořena.";
@ -366,11 +425,12 @@ $a->strings["Members"] = "Členové";
$a->strings["All Contacts"] = "Všechny kontakty";
$a->strings["Invalid profile identifier."] = "Neplatný identifikátor profilu.";
$a->strings["Profile Visibility Editor"] = "Editor viditelnosti profilu ";
$a->strings["Profile"] = "Profil";
$a->strings["Visible To"] = "Viditelný pro";
$a->strings["All Contacts (with secure profile access)"] = "Všechny kontakty (se zabezpečeným přístupovým profilem )";
$a->strings["View Contacts"] = "Zobrazit kontakty";
$a->strings["No contacts."] = "Žádné kontakty.";
$a->strings["An invitation is required."] = "Pozvánka je vyžadována.";
$a->strings["Invitation could not be verified."] = "Pozvánka nemohla být ověřena.";
$a->strings["Invalid OpenID url"] = "Neplatný odkaz OpenID";
$a->strings["Please enter the required information."] = "Zadejte prosím požadované informace.";
$a->strings["Please use a shorter name."] = "Použijte prosím kratší jméno.";
@ -394,6 +454,8 @@ $a->strings["You may (optionally) fill in this form via OpenID by supplying your
$a->strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "Pokud nepoužíváte OpenID, nechte prosím toto pole prázdné a vyplňte zbylé položky.";
$a->strings["Your OpenID (optional): "] = "Vaše OpenID (nepovinné):";
$a->strings["Include your profile in member directory?"] = "Uvést Váš profil v adresáři členů?";
$a->strings["Membership on this site is by invitation only."] = "Členství na tomto webu je pouze na pozvání.";
$a->strings["Your invitation ID: "] = "Vaše pozvání ID:";
$a->strings["Registration"] = "Registrace";
$a->strings["Your Full Name (e.g. Joe Smith): "] = "Vaše celé jméno (např. Jan Novák):";
$a->strings["Your Email Address: "] = "Vaše e-mailová adresa:";
@ -411,15 +473,14 @@ $a->strings["Bug reports and issues: please visit"] = "Pro hlášení chyb a ná
$a->strings["Suggestions, praise, donations, etc. - please email \"Info\" at Friendika - dot com"] = "Návrhy, chválu, dary, atd. - prosím pošlete na e-mail \"Info\" na Friendika tečka com";
$a->strings["Installed plugins/addons/apps"] = "Nainstalované doplňky/aplikace";
$a->strings["No installed plugins/addons/apps"] = "Nejsou žádné nainstalované doplňky/aplikace";
$a->strings["Please login."] = "Přihlaste se, prosím.";
$a->strings["Registration revoked for %s"] = "Registrace zrušena pro %s";
$a->strings["Account approved."] = "Účet schválen.";
$a->strings["[Embedded content - reload page to view]"] = "[Vložený obsah - obnovení stránky pro zobrazení]";
$a->strings["Registration revoked for %s"] = "Registrace zrušena pro %s";
$a->strings["Please login."] = "Přihlaste se, prosím.";
$a->strings["Unable to locate original post."] = "Nelze nalézt původní příspěvek.";
$a->strings["Empty post discarded."] = "Prázdný příspěvek odstraněn.";
$a->strings["Wall Photos"] = "Fotografie na zdi";
$a->strings["noreply"] = "bez odpovědi";
$a->strings["Administrator@"] = "Správce@";
$a->strings["Administrator@"] = "Administrator@";
$a->strings["%s commented on an item at %s"] = "%s okomentoval položku v %s";
$a->strings["%s posted to your profile wall at %s"] = "%s přidal příspěvek na vaší profilovou zeď v %s";
$a->strings["System error. Post not saved."] = "Chyba systému. Příspěvek nebyl uložen.";
@ -427,7 +488,6 @@ $a->strings["This message was sent to you by %s, a member of the Friendika socia
$a->strings["You may visit them online at %s"] = "Můžete je navštívit online na adrese %s";
$a->strings["Please contact the sender by replying to this post if you do not wish to receive these messages."] = "Pokud nechcete dostávat tyto zprávy, kontaktujte prosím odesilatele odpovědí na tento záznam.";
$a->strings["%s posted an update."] = "%s poslal aktualizaci.";
$a->strings["Item not found."] = "Položka nenalezena.";
$a->strings["Image uploaded but image cropping failed."] = "Obrázek byl odeslán, ale jeho oříznutí se nesdařilo.";
$a->strings["Image size reduction [%s] failed."] = "Nepodařilo se snížit velikost obrázku [%s].";
$a->strings["Unable to process image"] = "Obrázek nelze zpracovat ";
@ -441,6 +501,7 @@ $a->strings["Crop Image"] = "Oříznout obrázek";
$a->strings["Please adjust the image cropping for optimum viewing."] = "Prosím, ořízněte tento obrázek pro optimální zobrazení.";
$a->strings["Done Editing"] = "Editace dokončena";
$a->strings["Image uploaded successfully."] = "Obrázek byl úspěšně nahrán.";
$a->strings["No profile"] = "Žádný profil";
$a->strings["Remove My Account"] = "Odstranit můj účet";
$a->strings["This will completely remove your account. Once this has been done it is not recoverable."] = "Tímto bude kompletně odstraněn váš účet. Jakmile bude účet odstraněn, nebude už možné ho obnovit.";
$a->strings["Please enter your password for verification:"] = "Prosím, zadejte své heslo pro ověření:";
@ -466,26 +527,114 @@ $a->strings["D, d M Y - g:i A"] = "D M R - g:i A";
$a->strings["Message not available."] = "Zpráva není k dispozici.";
$a->strings["Delete message"] = "Smazat zprávu";
$a->strings["Send Reply"] = "Poslat odpověď";
$a->strings["No profile"] = "Žádný profil";
$a->strings["Site"] = "Web";
$a->strings["Users"] = "Uživatelé";
$a->strings["Plugins"] = "Pluginy";
$a->strings["Update"] = "Aktualizace";
$a->strings["Logs"] = "Logy";
$a->strings["User registrations waiting for confirmation"] = "Registrace uživatele čeká na potvrzení";
$a->strings["Item not found."] = "Položka nenalezena.";
$a->strings["Administration"] = "Administrace";
$a->strings["Summary"] = "Shrnutí";
$a->strings["Registered users"] = "Registrovaní uživatelé";
$a->strings["Pending registrations"] = "Čekající registrace";
$a->strings["Version"] = "Verze";
$a->strings["Active plugins"] = "Aktivní pluginy";
$a->strings["Site settings updated."] = "Nastavení webu aktualizováno.";
$a->strings["Closed"] = "Uzavřít";
$a->strings["Requires approval"] = "Vyžaduje schválení";
$a->strings["Open"] = "Otevřená";
$a->strings["File upload"] = "Nahrání souborů";
$a->strings["Policies"] = "Politiky";
$a->strings["Advanced"] = "Pokročilé";
$a->strings["Site name"] = "Název webu";
$a->strings["Banner/Logo"] = "Banner/logo";
$a->strings["System language"] = "Systémový jazyk";
$a->strings["System theme"] = "Grafická šablona systému ";
$a->strings["Maximum image size"] = "Maximální velikost obrazu";
$a->strings["Register policy"] = "Politika registrace";
$a->strings["Register text"] = "Registrace textu";
$a->strings["Allowed friend domains"] = "Povolené domény přátel";
$a->strings["Allowed email domains"] = "Povolené e-mailové domény";
$a->strings["Block public"] = "Blokovat veřejnost";
$a->strings["Force publish"] = "Publikovat";
$a->strings["Global directory update URL"] = "aktualizace URL adresy Globálního adresáře ";
$a->strings["Block multiple registrations"] = "Blokovat více registrací";
$a->strings["OpenID support"] = "podpora OpenID";
$a->strings["Gravatar support"] = "podpora Gravatar";
$a->strings["Fullname check"] = "kontrola úplného jména";
$a->strings["UTF-8 Regular expressions"] = "UTF-8 Regulární výrazy";
$a->strings["Show Community Page"] = "Zobrazit stránku komunity";
$a->strings["Enable OStatus support"] = "Zapnout podporu OStatus";
$a->strings["Only allow Friendika contacts"] = "Povolit pouze Friendika kontakty ";
$a->strings["Verify SSL"] = "Ověřit SSL";
$a->strings["Proxy user"] = "Proxy uživatel";
$a->strings["Proxy URL"] = "Proxy URL adresa";
$a->strings["Network timeout"] = "čas síťového spojení vypršelo (timeout)";
$a->strings["%s user blocked"] = array(
0 => "%s uživatel zablokován",
1 => "%s uživatelů zablokováno / odblokováno",
2 => "%s uživatelů zablokováno / odblokováno",
);
$a->strings["%s user deleted"] = array(
0 => "%s uživatel smazán",
1 => "%s uživatelů smazáno",
2 => "%s uživatelů smazáno",
);
$a->strings["User '%s' deleted"] = "Uživatel '%s' smazán";
$a->strings["User '%s' unblocked"] = "Uživatel '%s' odblokován";
$a->strings["User '%s' blocked"] = "Uživatel '%s' blokován";
$a->strings["select all"] = "Vybrat vše";
$a->strings["User registrations waiting for confirm"] = "Registrace uživatele čeká na potvrzení";
$a->strings["Request date"] = "Datum žádosti";
$a->strings["Email"] = "E-mail";
$a->strings["No registrations."] = "Žádné registrace.";
$a->strings["Deny"] = "Odmítnout";
$a->strings["Block"] = "Blokovat";
$a->strings["Unblock"] = "Odblokovat";
$a->strings["Register date"] = "Datum registrace";
$a->strings["Last login"] = "Datum posledního přihlášení";
$a->strings["Last item"] = "Poslední položka";
$a->strings["Account"] = "Účet";
$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Vybraní uživatelé budou smazáni!\\n\\n Vše, co tito uživatelé na těchto stránkách vytvořili, bude trvale odstraněno!\\n\\n Opravdu pokračovat?";
$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Uživatel {0} bude smazán!\\n\\n Vše, co tento uživatel na těchto stránkách vytvořil, bude trvale odstraněno!\\n\\n Opravdu pokračovat?";
$a->strings["Plugin %s disabled."] = "Plugin %s zakázán.";
$a->strings["Plugin %s enabled."] = "Plugin %s povolen.";
$a->strings["Disable"] = "Zakázat";
$a->strings["Enable"] = "Povolit";
$a->strings["Toggle"] = "Přepnout";
$a->strings["Settings"] = "Nastavení";
$a->strings["Log settings updated."] = "Nastavení protokolu aktualizováno.";
$a->strings["Clear"] = "Vyčistit";
$a->strings["Debugging"] = "Ladění";
$a->strings["Log file"] = "Soubor s logem";
$a->strings["Must be writable by web server. Relative to your Friendika index.php."] = "Webový server musí mít práva zápisu . Relativní k index.php Friendika.";
$a->strings["Log level"] = "Úroveň auditu";
$a->strings["Close"] = "Uzavřená";
$a->strings["FTP Host"] = "Hostitel FTP";
$a->strings["FTP Path"] = "Cesta FTP";
$a->strings["FTP User"] = "FTP uživatel";
$a->strings["FTP Password"] = "FTP heslo";
$a->strings["Access to this profile has been restricted."] = "Přístup na tento profil byl omezen.";
$a->strings["Status"] = "Stav";
$a->strings["Photos"] = "Fotografie";
$a->strings["Tips for New Members"] = "Tipy pro nové členy";
$a->strings["Login failed."] = "Přihlášení se nezdařilo.";
$a->strings["Welcome "] = "Vítejte";
$a->strings["Welcome "] = "Vítejte ";
$a->strings["Please upload a profile photo."] = "Prosím nahrejte profilovou fotografii";
$a->strings["Welcome back "] = "Vítejte zpět";
$a->strings["The profile address specified does not provide adequate information."] = "Uvedená adresa profilu neposkytuje dostatečné informace.";
$a->strings["Welcome back "] = "Vítejte zpět ";
$a->strings["This site is not configured to allow communications with other networks."] = "Tento web není nakonfigurován tak, aby umožňoval komunikaci s ostatními sítěmi.";
$a->strings["No compatible communication protocols or feeds were discovered."] = "Nenalezen žádný kompatibilní komunikační protokol nebo kanál.";
$a->strings["The profile address specified does not provide adequate information."] = "Uvedená adresa profilu neposkytuje dostatečné informace.";
$a->strings["An author or name was not found."] = "Autor nebo jméno nenalezeno";
$a->strings["No browser URL could be matched to this address."] = "Této adrese neodpovídá žádné URL prohlížeče.";
$a->strings["The profile address specified belongs to a network which has been disabled on this site."] = "Zadaná adresa profilu patří do sítě, která byla na tomto serveru zakázána.";
$a->strings["Limited profile. This person will be unable to receive direct/personal notifications from you."] = "Omezený profil. Tato osoba nebude schopna od Vás přijímat přímé / osobní sdělení.";
$a->strings["Unable to retrieve contact information."] = "Nepodařilo se získat kontaktní informace.";
$a->strings["following"] = "následující";
$a->strings["Item has been removed."] = "Položka byla odstraněna.";
$a->strings["New mail received at "] = "Přišel nový e-mail v";
$a->strings["Applications"] = "Aplikace";
$a->strings["No installed applications."] = "Žádné nainstalované aplikace.";
$a->strings["Search"] = "Vyhledávání";
$a->strings["No results."] = "Žádné výsledky.";
$a->strings["Profile not found."] = "Profil nenalezen";
$a->strings["Profile Name is required."] = "Jméno profilu je povinné.";
$a->strings["Profile updated."] = "Profil aktualizován.";
@ -494,7 +643,6 @@ $a->strings["Profile-"] = "Profil-";
$a->strings["New profile created."] = "Nový profil vytvořen.";
$a->strings["Profile unavailable to clone."] = "Profil není možné naklonovat.";
$a->strings["Hide your contact/friend list from viewers of this profile?"] = "Skrýt u tohoto profilu vaše kontakty / seznam přátel před před dalšími uživateli zobrazující si tento profil?";
$a->strings["Hide profile details and all your messages from unknown viewers?"] = "Skrýt detaily profilu a všechny zprávy před neznámými uživateli?";
$a->strings["Edit Profile Details"] = "Upravit podrobnosti profilu ";
$a->strings["View this profile"] = "Zobrazit tento profil";
$a->strings["Create a new profile using these settings"] = "Vytvořit nový profil pomocí tohoto nastavení";
@ -504,7 +652,7 @@ $a->strings["Profile Name:"] = "Jméno profilu:";
$a->strings["Your Full Name:"] = "Vaše celé jméno:";
$a->strings["Title/Description:"] = "Název / Popis:";
$a->strings["Your Gender:"] = "Vaše pohlaví:";
$a->strings["Birthday (y/m/d):"] = "Narozeniny (rok/měsíc/den):";
$a->strings["Birthday (%s):"] = "Narozeniny uživatele (%s):";
$a->strings["Street Address:"] = "Ulice:";
$a->strings["Locality/City:"] = "Město:";
$a->strings["Postal/Zip Code:"] = "PSČ:";
@ -538,7 +686,7 @@ $a->strings["Profiles"] = "Profily";
$a->strings["Change profile photo"] = "Změnit profilovou fotografii";
$a->strings["Create New Profile"] = "Vytvořit nový profil";
$a->strings["Profile Image"] = "Profilový obrázek";
$a->strings["Visible to everybody"] = "Viditelné pro všechny";
$a->strings["visible to everybody"] = "viditelné pro všechny";
$a->strings["Edit visibility"] = "Upravit viditelnost";
$a->strings["Global Directory"] = "Globální adresář";
$a->strings["Normal site view"] = "Normální zobrazení stránky";
@ -554,10 +702,12 @@ $a->strings["%d message sent."] = array(
1 => "%d zprávy odeslány.",
2 => "%d zprávy odeslány.",
);
$a->strings["You have no more invitations available"] = "Nemáte k dispozici žádné další pozvánky";
$a->strings["Send invitations"] = "Poslat pozvánky";
$a->strings["Enter email addresses, one per line:"] = "Zadejte e-mailové adresy, jednu na řádek:";
$a->strings["Please join my social network on %s"] = "Prosím, připojte se do mé sociální sítě na %s";
$a->strings["To accept this invitation, please visit:"] = "Chcete-li toto pozvání přijmout, navštivte prosím:";
$a->strings["You will need to supply this invitation code: \$invite_code"] = "Budete muset zadat kód této pozvánky: \$invite_code";
$a->strings["Once you have registered, please connect with me via my profile page at:"] = "Jakmile se zaregistrujete, prosím spojte se se mnou přes mou profilovu stránku na:";
$a->strings["Response from remote site was not understood."] = "Odpověď ze vzdáleného serveru nebyla srozumitelná.";
$a->strings["Unexpected response from remote site: "] = "Neočekávaná odpověď od vzdáleného serveru:";
@ -582,14 +732,19 @@ $a->strings["Facebook Connect"] = "Facebook připojen";
$a->strings["Install Facebook connector for this account."] = "Nainstalovat pro tento účet Facebook konektor.";
$a->strings["Remove Facebook connector"] = "Odstranit konektor na Facebook";
$a->strings["Post to Facebook by default"] = "Standardně posílat příspěvky na Facebook";
$a->strings["Link all your Facebook friends and conversations"] = "Připojit všechny své přátele na Facebooku a konverzace";
$a->strings["Warning: Your Facebook privacy settings can not be imported."] = "Upozornění: nastavení ochrany osobních údajů na Facebooku nelze importovat.";
$a->strings["Linked Facebook items <strong>may</strong> be publicly visible, depending on your privacy settings for this website/account."] = "Propojené položky z Facebook <strong>mohou</strong> být veřejně viditelné, v závislosti na nastavení ochrany osobních údajů pro tuto webovou stránku/účet.";
$a->strings["Facebook"] = "Facebook";
$a->strings["Facebook Connector Settings"] = "Nastavení Facebook konektoru ";
$a->strings["Post to Facebook"] = "Přidat příspěvek na Facebook";
$a->strings["Post to Facebook cancelled because of multi-network access permission conflict."] = "Příspěvek na Facebook zrušen kvůli konfliktu přístupových práv mezi sítěmi.";
$a->strings["Image: "] = "Obrázek: ";
$a->strings["View on Friendika"] = "Pohled na Friendiku";
$a->strings["Widgets key: "] = "Widgets klíč:";
$a->strings["Facebook post failed. Queued for retry."] = "Zaslání příspěvku na Facebook selhalo. Příspěvek byl zařazen do fronty pro opakované odeslání.";
$a->strings["Generate new key"] = "Generovat nové klíče";
$a->strings["Widgets key"] = "Widgety klíč";
$a->strings["Widgets available"] = "Widgety k dispozici";
$a->strings["Connect on Friendika!"] = "Spojit se na Friendice!";
$a->strings["Three Dimensional Tic-Tac-Toe"] = "Trojrozměrné Tic-Tac-Toe";
$a->strings["3D Tic-Tac-Toe"] = "3D Tic-Tac-Toe";
@ -605,28 +760,32 @@ $a->strings["\"Cat\" game!"] = "\"Kočičí\" hra!";
$a->strings["I won!"] = "Vyhrál jsem!";
$a->strings["Randplace Settings"] = "Randplace Nastavení";
$a->strings["Enable Randplace Plugin"] = "Povolit Randplace Plugin";
$a->strings["Select files to upload: "] = "Vyberte soubory k nahrání:";
$a->strings["Use the following controls only if the Java uploader [above] fails to launch."] = "Následující ovládací prvky použijte pouze v případě, že se nezdaří hru spustit s pomocí Java uploaderu [výše].";
$a->strings["Upload a file"] = "Nahrát soubor";
$a->strings["Drop files here to upload"] = "Přeneste sem soubory k nahrání";
$a->strings["Failed"] = "Neúspěch";
$a->strings["No files were uploaded."] = "Žádné soubory nebyly nahrány.";
$a->strings["Uploaded file is empty"] = "Nahraný soubor je prázdný";
$a->strings["Uploaded file is too large"] = "Nahraný soubor je příliš velký";
$a->strings["File has an invalid extension, it should be one of "] = "Soubor má neplatnou příponu, ta by měla být jednou z";
$a->strings["Upload was cancelled, or server error encountered"] = "Nahrávání bylo zrušeno nebo došlo k chybě na serveru";
$a->strings["Impressum"] = "Impressum";
$a->strings["Site Owner"] = "Vlastník webu";
$a->strings["Email Address"] = "E-mailová adresa";
$a->strings["Postal Address"] = "Poštovní adresa";
$a->strings["The impressum addon needs to be configured!<br />Please add at least the <tt>owner</tt> variable to your config file. For other variables please refer to the README file of the addon."] = "Doplněk Impressum musí být nakonfigurován!<br/>Prosím, přidejte alespoň proměnnou <tt>owner</tt> do konfiguračního souboru. Pro nastavení ostatních proměnných se seznamte s nápovědou v souboru README tohoto doplňku.";
$a->strings["Site Owners Profile"] = "Profil majitele webu";
$a->strings["Notes"] = "Poznámky";
$a->strings["OEmbed settings updated"] = "OEmbed nastavení aktualizováno";
$a->strings["Use OEmbed for YouTube videos: "] = "Použít OEmbed pro videa YouTube:";
$a->strings["Use OEmbed for YouTube videos"] = "Použití OEmbed pro videa na YouTube";
$a->strings["URL to embed:"] = "URL adresa k vložení:";
$a->strings["Post to StatusNet"] = "Poslat příspěvek na StatusNet";
$a->strings["Please contact your site administrator.<br />The provided API URL is not valid."] = "Obraťte se na správce webu.<br />Poskytnutý odkaz na API není platný.";
$a->strings["Please contact your site administrator.<br />The provided API URL is not valid."] = "Obraťte se na administratora webu.<br />Poskytnutý odkaz na API není platný.";
$a->strings["We could not contact the StatusNet API with the Path you entered."] = "S cestou, kterou jste zadali, se nebylo možné spojit s API StatusNetu.";
$a->strings["StatusNet settings updated."] = "Nastavení StatusNetu aktualizováno.";
$a->strings["StatusNet Posting Settings"] = "Nastavení zasílání příspěvků na StatusNet ";
$a->strings["Globally Available StatusNet OAuthKeys"] = "Globálně dostupné StatusNet OAuth klíče";
$a->strings["There are preconfigured OAuth key pairs for some StatusNet servers available. If you are useing one of them, please use these credentials. If not feel free to connect to any other StatusNet instance (see below)."] = "Jsou dostupné přednastavené OAuth páry klíčů pro některé servery StatusNetu. Pokud používáte některý z nich, použijte toto přihlášení. Pokud ne, neváhejte se připojit k jiné instanci StatusNet (viz níže).";
$a->strings["Provide your own OAuth Credentials"] = "Uveďte své vlastní OAuth přihlašovací údaje";
$a->strings["No consumer key pair for StatusNet found. Register your Friendika Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendika installation at your favorited StatusNet installation."] = "Nenalezen žádný consumer pár klíčů pro StatusNet. Zaregistrujte svůj Friendika účet jako desktopový klient na svém účtu StatusNetu, zkopírujte níže consumer pár klíčů a zadejte API base root.<br />Než si zaregistrujete svůj vlastní pár klíčů OAuth, zjistěte si od správce, zda-li už náhodou na tento Friendika server nepřidal pár klíčů pro vámi požadovanou instalaci StatusNetu.";
$a->strings["No consumer key pair for StatusNet found. Register your Friendika Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendika installation at your favorited StatusNet installation."] = "Nenalezen žádný consumer pár klíčů pro StatusNet. Zaregistrujte svůj Friendika účet jako desktopový klient na svém účtu StatusNetu, zkopírujte níže consumer pár klíčů a zadejte API base root.<br />Než si zaregistrujete svůj vlastní pár klíčů OAuth, zjistěte si od administrátora, zda-li už náhodou na tento Friendika server nepřidal pár klíčů pro vámi požadovanou instalaci StatusNetu.";
$a->strings["OAuth Consumer Key"] = "OAuth Consumer Key";
$a->strings["OAuth Consumer Secret"] = "OAuth Consumer Secret";
$a->strings["Base API Path (remember the trailing /)"] = "Cesta k Base API (nezapomeňte na koncový /)";
@ -637,18 +796,28 @@ $a->strings["Cancel Connection Process"] = "Zrušit připojování";
$a->strings["Current StatusNet API is"] = "Aktuální StatusNet API je";
$a->strings["Cancel StatusNet Connection"] = "Zrušit StatusNet připojení";
$a->strings["Currently connected to: "] = "V současné době připojen k:";
$a->strings["If enabled all your <strong>public</strong> postings will be posted to the associated StatusNet account."] = "Je-li povoleno, všechny Vaše <strong>veřejné</strong> příspěvky budou zveřejněny na příslušném účtu StatusNetu.";
$a->strings["If enabled all your <strong>public</strong> postings can be posted to the associated StatusNet account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Je-li povoleno, všechny Vaše <strong>veřejné</strong> příspěvky mohou být zaslány na související StatusNet účet. Můžete si vybrat, zda-li toto bude výchozí nastavení (zde), nebo budete mít možnost si vybrat požadované chování při psaní každého příspěvku.";
$a->strings["Allow posting to StatusNet"] = "Povolit zasílání příspěvků na StatusNet";
$a->strings["Send public postings to StatusNet by default"] = "Standardně poslílat veřejné příspěvky na StatusNet";
$a->strings["Clear OAuth configuration"] = "Vymazat konfiguraci OAuth";
$a->strings["API URL"] = "API URL";
$a->strings["Consumer Secret"] = "Consumer Secret";
$a->strings["Consumer Key"] = "Consumer Key";
$a->strings["Piwik Base URL"] = "Piwik Base adresa URL";
$a->strings["Site ID"] = "ID webu";
$a->strings["Show opt-out cookie link?"] = "Zobrazit odkaz opt-out cookie?";
$a->strings["Post to Twitter"] = "Poslat příspěvek na Twitter";
$a->strings["Twitter settings updated."] = "Nastavení Twitteru aktualizováno.";
$a->strings["Twitter Posting Settings"] = "Nastavení zasílání příspěvků na Twitter ";
$a->strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "Nenalezen žádný spotřebitelský páru klíčů pro Twitter. Obraťte se na správce webu.";
$a->strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "Nenalezen žádný spotřebitelský páru klíčů pro Twitter. Obraťte se na administrátora webu.";
$a->strings["At this Friendika instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "Na tomto Friendika serveru je Twitter plugin povolen, ale ještě nemáte svůj účet připojen ke svému Twitter účtu. Chcete-li tak učinit, klepnutím na tlačítko níže získejte PIN z Twitteru, který musíte zkopírovat do vstupního pole níže a odešlete formulář. Pouze Vaše <strong>veřejné</strong> příspěvky budou zveřejněny na Twitteru.";
$a->strings["Log in with Twitter"] = "Přihlásit se s Twitter";
$a->strings["Copy the PIN from Twitter here"] = "Zkopírujte sem PIN z Twitteru";
$a->strings["If enabled all your <strong>public</strong> postings will be posted to the associated Twitter account as well."] = "Je-li povoleno, všechny <strong>veřejné</strong> příspěvky budou zároveň zveřejněny na příslušný Twitter účet.";
$a->strings["Send public postings to Twitter"] = "Poslat veřejné příspěvky na Twitter";
$a->strings["If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Je-li povoleno, všechny Vaše <strong>veřejné</strong> příspěvky mohou být zaslány na související Twitter účet. Můžete si vybrat, zda-li toto bude výchozí nastavení (zde), nebo budete mít možnost si vybrat požadované chování při psaní každého příspěvku.";
$a->strings["Allow posting to Twitter"] = "Povolit odesílání na Twitter";
$a->strings["Send public postings to Twitter by default"] = "Defaultně zasílat veřejné komentáře na Twitter";
$a->strings["Consumer key"] = "Consumer key";
$a->strings["Consumer secret"] = "Consumer secret";
$a->strings["Gender:"] = "Pohlaví:";
$a->strings["Birthday:"] = "Narozeniny:";
$a->strings["j F, Y"] = "j F, Y";
@ -732,78 +901,9 @@ $a->strings["Uncertain"] = "Nejistý";
$a->strings["Complicated"] = "Komplikovaný";
$a->strings["Don't care"] = "Nezajímá";
$a->strings["Ask me"] = "Zeptej se mě";
$a->strings["Embedding disabled"] = "Vkládání zakázáno";
$a->strings["Create a new group"] = "Vytvořit novou skupinu";
$a->strings["Everybody"] = "Všichni";
$a->strings["Logout"] = "Odhlásit se";
$a->strings["Login"] = "Přihlásit se";
$a->strings["Home"] = "Domů";
$a->strings["Apps"] = "Aplikace";
$a->strings["Directory"] = "Adresář";
$a->strings["Network"] = "Síť";
$a->strings["Notifications"] = "Upozornění";
$a->strings["Manage"] = "Spravovat";
$a->strings["Settings"] = "Nastavení";
$a->strings["Logged out."] = "Odhlášen.";
$a->strings["Miscellaneous"] = "Různé";
$a->strings["less than a second ago"] = "méně než před sekundou";
$a->strings["year"] = "rok";
$a->strings["years"] = "let";
$a->strings["month"] = "měsíc";
$a->strings["months"] = "měsíců";
$a->strings["week"] = "týden";
$a->strings["weeks"] = "týdny";
$a->strings["day"] = "den";
$a->strings["hour"] = "hodina";
$a->strings["hours"] = "hodin";
$a->strings["minute"] = "minuta";
$a->strings["minutes"] = "minut";
$a->strings["second"] = "sekunda";
$a->strings["seconds"] = "sekund";
$a->strings[" ago"] = "před";
$a->strings["From: "] = "Od:";
$a->strings["Image/photo"] = "Obrázek/fotografie";
$a->strings["Cannot locate DNS info for database server '%s'"] = "Nelze nalézt záznam v DNS pro databázový server '%s'";
$a->strings["Visible To:"] = "Viditelné pro:";
$a->strings["everybody"] = "Žádost o připojení selhala nebo byla zrušena.";
$a->strings["Groups"] = "Skupiny";
$a->strings["Except For:"] = "S výjimkou:";
$a->strings["(no subject)"] = "(Bez předmětu)";
$a->strings["You have a new follower at "] = "Máte nového následovníka na";
$a->strings["View %s's profile"] = "Zobrazit %s profilu";
$a->strings["View in context"] = "Pohled v kontextu";
$a->strings["See more posts like this"] = "Zobrazit více podobných příspěvků";
$a->strings["See all %d comments"] = "Zobrazit všechny komentáře %d";
$a->strings["to"] = "pro";
$a->strings["Wall-to-Wall"] = "Zeď-na-Zeď";
$a->strings["via Wall-To-Wall:"] = "přes Zeď-na-Zeď ";
$a->strings["View status"] = "Zobrazit stav";
$a->strings["View profile"] = "Zobrazit profil";
$a->strings["View photos"] = "Zobrazit fotografie";
$a->strings["View recent"] = "Zobrazit poslední";
$a->strings["Send PM"] = "Poslat PM";
$a->strings["%s likes this."] = "%s se to líbí.";
$a->strings["%s doesn't like this."] = "%s se to nelíbí.";
$a->strings["<span %1\$s>%2\$d people</span> like this."] = "<span %1\$s>%2\$d lidem</span> se to líbí.";
$a->strings["<span %1\$s>%2\$d people</span> don't like this."] = "<span %1\$s>%2\$d lidem</span> se to nelíbí.";
$a->strings["and"] = "a";
$a->strings[", and %d other people"] = ", a %d dalších lidí";
$a->strings["%s like this."] = "%s se to líbí.";
$a->strings["%s don't like this."] = "%s se to nelíbí.";
$a->strings["Visible to <strong>everybody</strong>"] = "Viditelné pro <strong>všechny</strong>";
$a->strings["Please enter a YouTube link:"] = "Prosím zadejte odkaz na YouTube:";
$a->strings["Please enter a video(.ogg) link/URL:"] = "Prosím, zadejte odkaz na video (ogg.):";
$a->strings["Please enter an audio(.ogg) link/URL:"] = "Prosím, zadejte odkaz na audio (ogg.):";
$a->strings["Where are you right now?"] = "Kde právě jste?";
$a->strings["Enter a title for this item"] = "Zadejte titulek pro tuto položku";
$a->strings["Set title"] = "Nastavit titulek";
$a->strings["Delete this item?"] = "Odstranit tuto položku?";
$a->strings["Create a New Account"] = "Vytvořit nový účet";
$a->strings["Nickname or Email address: "] = "Přezdívka nebo e-mailová adresa:";
$a->strings["Password: "] = "Heslo: ";
$a->strings["Nickname/Email/OpenID: "] = "Přezdívka/Email/OpenID: ";
$a->strings["Password (if not OpenID): "] = "Heslo (pokud se nepoužívá OpenID):";
$a->strings["Forgot your password?"] = "Zapomněli jste své heslo?";
$a->strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
$a->strings["Starts:"] = "Začíná:";
$a->strings["Finishes:"] = "Končí:";
$a->strings["prev"] = "předchozí";
$a->strings["first"] = "první";
$a->strings["last"] = "poslední";
@ -814,10 +914,6 @@ $a->strings["%d Contact"] = array(
1 => "%d kontaktů",
2 => "%d kontaktů",
);
$a->strings["Connect"] = "Spojit";
$a->strings["Location:"] = "Místo:";
$a->strings[", "] = ", ";
$a->strings["Status:"] = "Status:";
$a->strings["Monday"] = "Pondělí";
$a->strings["Tuesday"] = "Úterý";
$a->strings["Wednesday"] = "Středa";
@ -837,12 +933,111 @@ $a->strings["September"] = "Září";
$a->strings["October"] = "Října";
$a->strings["November"] = "Listopadu";
$a->strings["December"] = "Prosince";
$a->strings["bytes"] = "bytů";
$a->strings["Select an alternate language"] = "Vyběr alternativního jazyka";
$a->strings["Sharing notification from Diaspora network"] = "Sdílení oznámení ze sítě Diaspora";
$a->strings["Embedding disabled"] = "Vkládání zakázáno";
$a->strings["Create a new group"] = "Vytvořit novou skupinu";
$a->strings["Everybody"] = "Všichni";
$a->strings["Logout"] = "Odhlásit se";
$a->strings["End this session"] = "Konec této relace";
$a->strings["Login"] = "Přihlásit se";
$a->strings["Sign in"] = "Přihlásit se";
$a->strings["Home"] = "Domů";
$a->strings["Home Page"] = "Domácí stránka";
$a->strings["Create an account"] = "Vytvořit účet";
$a->strings["Help and documentation"] = "Nápověda a dokumentace";
$a->strings["Apps"] = "Aplikace";
$a->strings["Addon applications, utilities, games"] = "Doplňkové aplikace, nástroje, hry";
$a->strings["Search site content"] = "Hledání na stránkách tohoto webu";
$a->strings["Conversations on this site"] = "Konverzace na tomto webu";
$a->strings["Directory"] = "Adresář";
$a->strings["People directory"] = "Adresář";
$a->strings["Network"] = "Síť";
$a->strings["Conversations from your friends"] = "Konverzace od Vašich přátel";
$a->strings["Your posts and conversations"] = "Vaše příspěvky a konverzace";
$a->strings["Notifications"] = "Upozornění";
$a->strings["Friend requests"] = "Požadavky přátelství";
$a->strings["Private mail"] = "Soukromá pošta";
$a->strings["Manage"] = "Spravovat";
$a->strings["Manage other pages"] = "Spravovat jiné stránky";
$a->strings["Manage/edit profiles"] = "Spravovat/upravit profily";
$a->strings["Manage/edit friends and contacts"] = "Spravovat/upravit přátelé a kontakty";
$a->strings["Admin"] = "Administrace";
$a->strings["Site setup and configuration"] = "Nastavení webu a konfigurace";
$a->strings["Logged out."] = "Odhlášen.";
$a->strings["Miscellaneous"] = "Různé";
$a->strings["year"] = "rok";
$a->strings["month"] = "měsíc";
$a->strings["day"] = "den";
$a->strings["never"] = "nikdy";
$a->strings["less than a second ago"] = "méně než před sekundou";
$a->strings["years"] = "let";
$a->strings["months"] = "měsíců";
$a->strings["week"] = "týden";
$a->strings["weeks"] = "týdny";
$a->strings["days"] = "dnů";
$a->strings["hour"] = "hodina";
$a->strings["hours"] = "hodin";
$a->strings["minute"] = "minuta";
$a->strings["minutes"] = "minut";
$a->strings["second"] = "sekunda";
$a->strings["seconds"] = "sekund";
$a->strings[" ago"] = " nazpět";
$a->strings["From: "] = "Od:";
$a->strings["Image/photo"] = "Obrázek/fotografie";
$a->strings["Cannot locate DNS info for database server '%s'"] = "Nelze nalézt záznam v DNS pro databázový server '%s'";
$a->strings["Visible to everybody"] = "Viditelné pro všechny";
$a->strings["show"] = "zobrazit";
$a->strings["don't show"] = "nikdy nezobrazit";
$a->strings["(no subject)"] = "(Bez předmětu)";
$a->strings["You have a new follower at "] = "Máte nového následovníka na";
$a->strings["event"] = "událost";
$a->strings["View %s's profile"] = "Zobrazit %s profilu";
$a->strings["%s from %s"] = "%s od %s";
$a->strings["View in context"] = "Pohled v kontextu";
$a->strings["See more posts like this"] = "Zobrazit více podobných příspěvků";
$a->strings["See all %d comments"] = "Zobrazit všechny komentáře %d";
$a->strings["Select"] = "Vybrat";
$a->strings["toggle star status"] = "přepnout hvězdu";
$a->strings["to"] = "pro";
$a->strings["Wall-to-Wall"] = "Zeď-na-Zeď";
$a->strings["via Wall-To-Wall:"] = "přes Zeď-na-Zeď ";
$a->strings["Delete Selected Items"] = "Smazat vybrané položky";
$a->strings["View status"] = "Zobrazit stav";
$a->strings["View profile"] = "Zobrazit profil";
$a->strings["View photos"] = "Zobrazit fotografie";
$a->strings["View recent"] = "Zobrazit poslední";
$a->strings["Send PM"] = "Poslat soukromou zprávu";
$a->strings["%s likes this."] = "%s se to líbí.";
$a->strings["%s doesn't like this."] = "%s se to nelíbí.";
$a->strings["<span %1\$s>%2\$d people</span> like this."] = "<span %1\$s>%2\$d lidem</span> se to líbí.";
$a->strings["<span %1\$s>%2\$d people</span> don't like this."] = "<span %1\$s>%2\$d lidem</span> se to nelíbí.";
$a->strings["and"] = "a";
$a->strings[", and %d other people"] = ", a %d dalších lidí";
$a->strings["%s like this."] = "%s se to líbí.";
$a->strings["%s don't like this."] = "%s se to nelíbí.";
$a->strings["Visible to <strong>everybody</strong>"] = "Viditelné pro <strong>všechny</strong>";
$a->strings["Please enter a YouTube link:"] = "Prosím zadejte odkaz na YouTube:";
$a->strings["Please enter a video(.ogg) link/URL:"] = "Prosím, zadejte odkaz na video (ogg.):";
$a->strings["Please enter an audio(.ogg) link/URL:"] = "Prosím, zadejte odkaz na audio (ogg.):";
$a->strings["Where are you right now?"] = "Kde právě jste?";
$a->strings["Enter a title for this item"] = "Zadejte titulek pro tuto položku";
$a->strings["Set title"] = "Nastavit titulek";
$a->strings["Delete this item?"] = "Odstranit tuto položku?";
$a->strings["Create a New Account"] = "Vytvořit nový účet";
$a->strings["Nickname or Email address: "] = "Přezdívka nebo e-mailová adresa:";
$a->strings["Password: "] = "Heslo: ";
$a->strings["Nickname/Email/OpenID: "] = "Přezdívka/E-mail/OpenID: ";
$a->strings["Password (if not OpenID): "] = "Heslo (pokud se nepoužívá OpenID):";
$a->strings["Forgot your password?"] = "Zapomněli jste své heslo?";
$a->strings["Connect"] = "Spojit";
$a->strings[", "] = ", ";
$a->strings["Status:"] = "Status:";
$a->strings["g A l F d"] = "g A l F d";
$a->strings["Birthday Reminders"] = "Připomínka narozenin";
$a->strings["Birthdays this week:"] = "Narozeniny tento týden:";
$a->strings["(Adjusted for local time)"] = "(Upraveno pro místní čas)";
$a->strings["[today]"] = "[Dnes]";
$a->strings["bytes"] = "bytů";
$a->strings["link to source"] = "odkaz na zdroj";
$a->strings["Not Found"] = "Nenalezen";
$a->strings["Page not found."] = "Stránka nenalezena";

View File

@ -603,7 +603,7 @@ $a->strings["Log settings updated."] = "Protokolleinstellungen aktualisiert.";
$a->strings["Clear"] = "löschen";
$a->strings["Debugging"] = "Protokoll führen";
$a->strings["Log file"] = "Protokolldatei";
$a->strings["Must be writable by web server. Relative to your Friendika index.php."] = "Muss schreibbar durch den Webserver sein. Angabe relativ zu Friendikas indes.php.";
$a->strings["Must be writable by web server. Relative to your Friendika index.php."] = "Muss schreibbar durch den Webserver sein. Angabe relativ zu Friendikas index.php.";
$a->strings["Log level"] = "Protokollevel";
$a->strings["Close"] = "Schließen";
$a->strings["FTP Host"] = "FTP Host";

View File

@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: friendika\n"
"Report-Msgid-Bugs-To: http://bugs.friendika.com/\n"
"POT-Creation-Date: 2011-08-14 21:17-0700\n"
"PO-Revision-Date: 2011-08-26 14:28+0000\n"
"PO-Revision-Date: 2011-09-01 10:32+0000\n"
"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/friendika/team/it/)\n"
"MIME-Version: 1.0\n"
@ -1082,7 +1082,7 @@ msgstr "Amico"
#: ../../mod/notifications.php:141
msgid "Fan/Admirer"
msgstr "Fan/Admiratore"
msgstr "Fan/Ammiratore"
#: ../../mod/notifications.php:149
msgid "Friend/Connect Request"

View File

@ -224,7 +224,7 @@ $a->strings["yes"] = "si";
$a->strings["no"] = "no";
$a->strings["Approve as: "] = "Approva come: ";
$a->strings["Friend"] = "Amico";
$a->strings["Fan/Admirer"] = "Fan/Admiratore";
$a->strings["Fan/Admirer"] = "Fan/Ammiratore";
$a->strings["Friend/Connect Request"] = "Richiesta Amicizia/Connessione";
$a->strings["New Follower"] = "Nuovo Seguace";
$a->strings["No notifications."] = "Nessuna notifica.";

View File

@ -1211,7 +1211,7 @@ footer { display: block; margin: 50px 20%; clear: both; }
float: left;
margin: 4px;
}
.acl-list-item p { font-size: 10px; margin: 0px; padding: 2px 0px 1px; }
.acl-list-item p { height: 12px; font-size: 10px; margin: 0px; padding: 2px 0px 1px; overflow: hidden;}
.acl-list-item a {
font-size: 8px;
display: block;

View File

@ -1591,7 +1591,7 @@ input#dfrn-url {
float: left;
margin: 4px;
}
.acl-list-item p { font-size: 10px; margin: 0px; padding: 2px 0px 1px; }
.acl-list-item p { height: 12px; font-size: 10px; margin: 0px; padding: 2px 0px 1px; overflow: hidden;}
.acl-list-item a {
font-size: 8px;
display: block;
@ -1811,6 +1811,24 @@ a.mail-list-link {
margin-top: 10px;
}
#search-save {
margin-left: 5px;
}
.groupsideedit {
margin-right: 10px;
}
#saved-search-ul {
list-style-type: none;
}
.savedsearchdrop, .savedsearchterm {
float: left;
margin-top: 10px;
}
.savedsearchterm {
margin-left: 10px;
}
#side-follow-wrapper {
margin-top: 20px;
}
@ -2417,6 +2435,7 @@ a.mail-list-link {
}
#crepair-nick-label,
#crepair-attag-label,
#crepair-url-label,
#crepair-request-label,
#crepair-confirm-label,
@ -2428,6 +2447,7 @@ a.mail-list-link {
}
#crepair-nick,
#crepair-attag,
#crepair-url,
#crepair-request,
#crepair-confirm,

View File

@ -1668,7 +1668,7 @@ padding: 5px 10px 0px;
float: left;
margin: 4px;
}
.acl-list-item p { font-size: 10px; margin: 0px; padding: 2px 0px 1px; }
.acl-list-item p { height: 12px; font-size: 10px; margin: 0px; padding: 2px 0px 1px; overflow: hidden;}
.acl-list-item a {
font-size: 8px;
display: block;
@ -1871,6 +1871,25 @@ a.mail-list-link {
margin-top: 10px;
}
#search-save {
margin-left: 5px;
}
.groupsideedit {
margin-right: 10px;
}
#saved-search-ul {
list-style-type: none;
}
.savedsearchdrop, .savedsearchterm {
float: left;
margin-top: 10px;
}
.savedsearchterm {
margin-left: 10px;
}
#side-follow-wrapper {
margin-top: 20px;
}
@ -2384,6 +2403,7 @@ a.mail-list-link {
}
#crepair-nick-label,
#crepair-attag-label,
#crepair-url-label,
#crepair-request-label,
#crepair-confirm-label,
@ -2395,6 +2415,7 @@ a.mail-list-link {
}
#crepair-nick,
#crepair-attag,
#crepair-url,
#crepair-request,
#crepair-confirm,
@ -2405,7 +2426,8 @@ a.mail-list-link {
}
#netsearch-box {
margin-top: 20px;
margin-top: 20px;
width: 150px;
}
#netsearch-box #search-submit {

304
zot.txt Normal file
View File

@ -0,0 +1,304 @@
This is the Zot! social communications protocol.
Specification revision: 1
02 September 2011
Mike Macgirvin
This specification is public domain.
Zot is a framework for secure delivery of messages on the web based on
webfinger and encapsulating salmon.
First read the salmon and salmon magic envelope specifications. Zot also
makes use of webfinger and ActivityStreams and several concepts from RFC822
(email). Zot encompasses the zot delivery framework and the zid remote
access protocol.
The current specification revision (1) is frozen until a reference
implementation is available. After that, any protocol changes will require a
change to the revision number.
****************
* Zot delivery *
****************
Format of a zot wrapper. This completely encapsulates a salmon magic envelope
and provides privacy protection, while defining a delivery envelope - a
concept familiar to email systems. All addresses in zot are webfinger
resolvable addresses containing zot endpoints and salmon public keys (zot
is a superset of salmon).
<?xml version='1.0' encoding='UTF-8'?>
<zot:msg xmlns:zot='http://purl.org/zot/1.0'>
<zot:key>((key))</zot:key>
<zot:iv>((iv))</zot:iv>
<zot:env_key>((env_key))</zot:env_key>
<zot:env_iv>((env_iv))</zot:env_iv>
<zot:env>((envelope))</zot:env>
<zot:sig key_id="xxx">((sender signature))</zot:sig>
<zot:alg>AES-256-CBC</zot:alg>
<zot:data type='application/magic-envelope+xml'>((salmon))</zot:data>
</zot:msg>
zot:key
*******
A suitable randomly generated encyption key of length 32 octets for encrypting
the salmon packet. This is then encrypted with the sender's private key and
base64url encoded.
zot:iv
******
A suitable randomly generated initialisation vector of length 16 octets for
encrypting the salmon packet. This is then encrypted with the sender's private
key and base64url encoded.
zot:env_key
***********
A suitable randomly generated encyption key of length 32 octets for encrypting
the envelope. This is then encrypted with the recipient's public key and
base64url encoded. For bulk deliveries, it is encrypted with the site bulk
delivery public key.
zot:env_iv
**********
A suitable randomly generated initialisation vector of length 16 octets for
encrypting the envelope. This is then encrypted with the recipient's public
key and base64url encoded. For bulk deliveries, it is encrypted with the site
bulk delivery public key.
zot:env
*******
This consists of RFC822-style header fields representing the sender and
recipient(s). Example:
From: bob@example.com
Sender: bob@example.com
To: alice@example.com
Both "From:" and "Sender:" MUST be provided, and represent a webfinger
address of the author and sender respectively. The webfinger address for
the From address MUST contain a discoverable salmon public key that
is needed to verify the enclosed salmon data. Sender is used to indicate
the webfinger identity responsible for transmitting this message. From
indicates the message author.
In web-based social systems, a reply to a message SHOULD be conveyed to all of
the original message participants. Only the author of the original message
may know all the recipients (such as those contained in Bcc: elements). The
author of a message always provides 'From'. They MUST duplicate this
information as 'Sender'.
A reply to a given message MUST be sent to the original From address, and MAY
be sent to any additional addresses in the recipient list. The original author
MUST send the reply to all known recipients of the original message, with
their webfinger identity as Sender, and the comment/reply author as From.
Receiving agents SHOULD validate the From identity as the signer of the salmon
magic envelope, and MAY reject it. They SHOULD also verify the Sender signature
of the zot packet if it is different than the salmon signature. They MAY
reject the message if the Sender is not allowed in their "friend list", or if
they do not have a suitable relationship with the Sender, or if either
signature fails to validate.
To: *
indicates a public message with no specifically enumerated recipients.
The fields To:, Cc:, and/or Bcc: MAY be present. At least one recipient field
MUST be present. These fields may use the entire syntax specified by RFC822,
for example:
To: "Bob Smith" <bob@example.com>, "Alice Jones" <alice@example.com>
is a valid entry. A zot envelope is UTF-8 encoded, which differs from RFC822.
The host component MUST be US-ASCII, with punycode translation of
internationalised domain names applied.
The entire envelope is then encrypted using alg with env_key and env_iv and
base64url encoded for transmission.
The zot envelope MAY include remote addresses. A zot delivery agent MUST parse
all addresses and determine whether a delivery address to the current endpoint
is valid. This may be the result of:
1. An address contains the public message wildcard '*'
2. The current endpoint is a personal endpoint and one of the recipients
listed in the To:, Cc:, or Bcc: addresses matches the webfinger address of
the "owner" of the endpoint.
3. The current endpoint is a bulk delivery endpoint. The bulk delivery
endpoint is defined elsewhere in this document. The bulk delivery agent
will deliver to all local addresses found in the address lists.
zot:sig
*******
The Sender of the message signs the underlying salmon data in the manner
prescribed by salmon. If the Sender and From address are identical, the
signature will be identical to the signature of the underlying salmon packet.
If they are different, this signature is verified with the Sender's public
key to verify the Sender.
zot:alg
*******
Currently the only valid choice for alg is "AES-256-CBC".
zot:data
********
The data field is a salmon magic envelope. This is encrypted with alg using
key and iv. The result is then base64url encoded for transmission.
For the first release of this specification, the data format of the enclosed
salmon SHOULD be 'application/atom+xml' representing an Atom formatted
ActivityStream. Future revisions MAY allow other alternate data formats.
All acceptable formats MUST be listed in an XRD property (described elsewhere
in this document).
Delivery
********
The zot message is then POSTed to the zot endpoint URL as
application/text+xml and can be decoded/decrypted by the recipient using
their private key.
The normal salmon endpoint for a service MAY be used as an alternate
delivery method for non-encrypted (e.g. public) messages.
Discover of the zot endpoint is based on webfinger XRD:
<link rel="http://purl.org/zot/1.0/post"
href="http://example/org/zot-endpoint" />
Bulk Delivery
*************
A site MAY provide a bulk delivery endpoint, which MAY be used to avoid
multiple encryptions of the same data for a single destination.
This is discoverable by providing a zot endpoint with a corresponding
salmon public key in the site's .well-known/host-meta file.
A delivery to this endpoint will deliver to all local recipients provided
within the zot envelope.
Extensibility
*************
This specification is subject to change. The current version which is in
effect at a given site may be noted by XRD properties. The following
properties MUST be present in the XRD providing the relevant endpoint:
<Property xmlns:zot="http://purl.og/zot/1.0"
type="http://purl.org/zot/1.0/version"
zot:version="1" />
<Property xmlns:zot="http://purl.og/zot/1.0"
type="http://purl.org/zot/1.0/accept"
zot:accept="application/atom+xml" />
Version is specified in this document and indicates the current revision.
Implementations MAY provide compatibility to multiple incompatible versions
by using this version indication. The "accept" indicates a range of document
content types which may be enclosed in the underlying salmon magic envelope.
We anticipate this specification will in the future allow for a close variant
of "message/rfc822" and which may include MIME. This may also be used to
embed alternate message formats and protocols such as
"application/x-diaspora+xml". If a delivery agent is unable to provide any
acceptable data format, the delivery MUST be terminated/cancelled.
Foreign Messages
****************
Messages MAY be imported from other networks and systems which have no
knowledge of salmon signatures. The salmon signature in this case MUST be the
exact string 'NOTSIGNED' to indicate that the author (From address) cannot be
validated using salmon verification. This message MUST be relayed by a Sender
who can provide a valid salmon signature of the message. Delivery systems MAY
reject foreign messages.
**********************
* Zid authentication *
**********************
URLs may be present within a zot message which refer to private and/or
protected resources. Zid uses OpenID to gain access to these protected
resources. These could be private photos or profile information - or *any*
web accessible resource. Using zid, these can have access controls which
extends to any resolvable webfinger address.
Zid authentication relies on the presence of an OpenID provider element in
webfinger, and a URL template which is applied to protected resources within
a zot message.
The template is designated with the characters "{zid=}" within a URL of a zot
message. When the page is rendered for viewing to an observer, this template
is replaced with the webfinger address of the viewer (if known), or an empty
string if the webfinger address of the viewer cannot be determined.
For example in a message body:
http://example.com/photos/bob/picture.jpg?{zid=}
refers to a private photo which is only visible to alice@example.com.
If Alice is viewing the page, the link is rendered with
http://example.com/photos/bob/picture.jpg?zid=alice@example.com
If the page viewer is unknown, it is rendered as
http://example.com/photos/bob/picture.jpg?zid=
When the link is visited, the web server at example.com notes the presence of
the zid parameter and uses information from webfinger to locate the OpenID
provider for the zid webfinger address. It then redirects to the OpenID
server and requests authentication of the given person. If this is successful,
access to the protected resource is granted.
A browser cookie may be provided to avoid future authentication redirects
and allow authenticated browsing to other resources on the website.
Only authentication via OpenID is defined in this version of the specification.
This can be used to provide access control of any web resource to any
webfinger identity on the internet.
*********
* Links *
*********
Salmon Protocol
http://www.salmon-protocol.org/salmon-protocol-summary
Salmon Magic Envelope
http://salmon-protocol.googlecode.com/svn/trunk/draft-panzer-magicsig-01.html
Atom Activity Stream Draft
http://activitystrea.ms/specs/atom/1.0/
Activty Stream Base Schema
http://activitystrea.ms/head/activity-schema.html
WebFinger Protocol
http://code.google.com/p/webfinger/wiki/WebFingerProtocol