diff options
author | fabrixxm <fabrix.xm@gmail.com> | 2011-09-05 21:05:24 +0200 |
---|---|---|
committer | fabrixxm <fabrix.xm@gmail.com> | 2011-09-05 21:05:24 +0200 |
commit | 2f5a34ad1791f01cacb3b86c11501f0e11c67df4 (patch) | |
tree | dd9242b14387c833346f4172e3f190659db56ff7 | |
parent | 5ec4a4e6deb5d28cbfab54093f8b4180912738d4 (diff) | |
parent | 08e54234e30c10e3130b7d71caba9fd43e3593e3 (diff) | |
download | volse-hubzilla-2f5a34ad1791f01cacb3b86c11501f0e11c67df4.tar.gz volse-hubzilla-2f5a34ad1791f01cacb3b86c11501f0e11c67df4.tar.bz2 volse-hubzilla-2f5a34ad1791f01cacb3b86c11501f0e11c67df4.zip |
Merge branch 'newui' of github.com:fabrixxm/friendika into newui
159 files changed, 5000 insertions, 2284 deletions
diff --git a/.gitignore b/.gitignore index 41ec42389..a2d1ffa54 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ include/jquery-1.4.2.min.js *.version* favicon.* home.html +*~ diff --git a/addon/calc/calc.php b/addon/calc/calc.php index 8c079dc7a..47fb22d33 100644 --- a/addon/calc/calc.php +++ b/addon/calc/calc.php @@ -17,7 +17,7 @@ function calc_uninstall() { }
function calc_app_menu($a,&$b) {
- $b['app_menu'] .= '<div class="app-title"><a href="calc">Calculator</a></div>';
+ $b['app_menu'][] = Array('url'=>'calc', 'name'=>'Calculator');
}
diff --git a/addon/convert/convert.php b/addon/convert/convert.php index 7a4c90a53..aaa56a43e 100644 --- a/addon/convert/convert.php +++ b/addon/convert/convert.php @@ -15,7 +15,7 @@ function convert_uninstall() { }
function convert_app_menu($a,&$b) {
- $b['app_menu'] .= '<div class="app-title"><a href="convert">Units Conversion</a></div>';
+ $b['app_menu'][] = Array('url'=>'convert', 'name'=>'Units Conversion');
}
diff --git a/addon/facebook/README b/addon/facebook/README index 19c594886..325f18dd1 100644 --- a/addon/facebook/README +++ b/addon/facebook/README @@ -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/ ) diff --git a/addon/facebook/facebook.php b/addon/facebook/facebook.php index 33895f80d..e8a24070d 100644 --- a/addon/facebook/facebook.php +++ b/addon/facebook/facebook.php @@ -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) { diff --git a/addon/impressum/README b/addon/impressum/README index 9a38c0bec..8e4255bd1 100644 --- a/addon/impressum/README +++ b/addon/impressum/README @@ -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. diff --git a/addon/sniper/sniper.php b/addon/sniper/sniper.php index d431a2466..c7d29cfdf 100644 --- a/addon/sniper/sniper.php +++ b/addon/sniper/sniper.php @@ -22,7 +22,7 @@ function sniper_uninstall() { } function sniper_app_menu($a,&$b) { - $b['app_menu'] .= '<div class="app-title"><a href="sniper">Hot Shot Sniper</a></div>'; + $b['app_menu'][] = Array('url'=>'sniper', 'name'=>'Hot Shot Sniper'); } diff --git a/addon/statusnet/README b/addon/statusnet/README index 8d5e27297..6ace48284 100644 --- a/addon/statusnet/README +++ b/addon/statusnet/README @@ -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. diff --git a/addon/statusnet/statusnet.php b/addon/statusnet/statusnet.php index 2f02ded54..f1b35d6c0 100644 --- a/addon/statusnet/statusnet.php +++ b/addon/statusnet/statusnet.php @@ -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']) diff --git a/addon/tictac/tictac.php b/addon/tictac/tictac.php index d6cec08a0..cc2701f8b 100644 --- a/addon/tictac/tictac.php +++ b/addon/tictac/tictac.php @@ -17,7 +17,7 @@ function tictac_uninstall() { } function tictac_app_menu($a,&$b) { - $b['app_menu'] .= '<div class="app-title"><a href="tictac">' . t('Three Dimensional Tic-Tac-Toe') . '</a></div>'; + $b['app_menu'][] = Array('url'=>'tictac', 'name'=>'Three Dimensional Tic-Tac-Toe'); } diff --git a/addon/twitter/README b/addon/twitter/README index a49fa5cda..e6d5f12c9 100644 --- a/addon/twitter/README +++ b/addon/twitter/README @@ -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. diff --git a/addon/widgets/widget_like.php b/addon/widgets/widget_like.php index 9b54212a8..6927d4324 100644 --- a/addon/widgets/widget_like.php +++ b/addon/widgets/widget_like.php @@ -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(){ @@ -8,9 +8,9 @@ require_once("include/pgettext.php"); require_once('include/nav.php'); -define ( 'FRIENDIKA_VERSION', '2.2.1083' ); +define ( 'FRIENDIKA_VERSION', '2.2.1093' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); -define ( 'DB_UPDATE_VERSION', 1082 ); +define ( 'DB_UPDATE_VERSION', 1087 ); define ( 'EOL', "<br />\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); @@ -246,7 +246,7 @@ class App { public $timezone; public $interactive = true; public $plugins; - public $apps; + public $apps = Array(); public $identities; private $scheme; @@ -675,6 +675,8 @@ function login($register = false) { '$lostlink' => $lostlink )); + call_hooks('login_hook',$o); + return $o; }} @@ -719,14 +721,16 @@ function remote_user() { if(! function_exists('notice')) { function notice($s) { $a = get_app(); + if(! x($_SESSION,'sysmsg')) $_SESSION['sysmsg'] = array(); if($a->interactive) - $_SESSION['sysmsg'] .= $s; + $_SESSION['sysmsg'][] = $s; }} if(! function_exists('info')) { function info($s) { $a = get_app(); + if(! x($_SESSION,'sysmsg_info')) $_SESSION['sysmsg_info'] = array(); if($a->interactive) - $_SESSION['sysmsg_info'] .= $s; + $_SESSION['sysmsg_info'][] = $s; }} @@ -808,8 +812,8 @@ function profile_load(&$a, $nickname, $profile = 0) { $a->page['aside'] .= profile_sidebar($a->profile, $block); - if(! $block) - $a->page['aside'] .= contact_block(); + /*if(! $block) + $a->page['aside'] .= contact_block();*/ return; }} @@ -837,132 +841,105 @@ function profile_sidebar($profile, $block = 0) { $a = get_app(); $o = ''; - $location = ''; + $location = false; $address = false; + $pdesc = true; if((! is_array($profile)) && (! count($profile))) return $o; call_hooks('profile_sidebar_enter', $profile); - $fullname = '<div class="fn">' . $profile['name'] . '</div>'; + + // don't show connect link to yourself + $connect = (($profile['uid'] != local_user()) ? t('Connect') : False); - $pdesc = '<div class="title">' . $profile['pdesc'] . '</div>'; + // don't show connect link to authenticated visitors either - $tabs = ''; + if((remote_user()) && ($_SESSION['visitor_visiting'] == $profile['uid'])) + $connect = False; + + + // show edit profile to yourself + if ($profile['uid'] == local_user()) { + $profile['edit'] = array($a->get_baseurl(). '/profiles', t('Profiles'),"", t('Manage/edit profiles')); + + $r = q("SELECT * FROM `profile` WHERE `uid` = %d", + local_user()); + + $profile['menu'] = array( + 'chg_photo' => t('Change profile photo'), + 'cr_new' => t('Create New Profile'), + 'entries' => array(), + ); + + if(count($r)) { - $photo = '<div id="profile-photo-wrapper"><img class="photo" width="175" height="175" src="' . $profile['photo'] . '" alt="' . $profile['name'] . '" /></div>'; + foreach($r as $rr) { + $profile['menu']['entries'][] = array( + 'photo' => $rr['thumb'], + 'id' => $rr['id'], + 'alt' => t('Profile Image'), + 'profile_name' => $rr['profile-name'], + 'visible' => (($rr['is-default']) ? '<strong>' . t('visible to everybody') . '</strong>' + : '<a href="' . $a->get_baseurl() . '/profperm/' . $rr['id'] . '" />' . t('Edit visibility') . '</a>') + ); + } - // don't show connect link to yourself - $connect = (($profile['uid'] != local_user()) ? '<li><a id="dfrn-request-link" href="dfrn_request/' . $profile['nickname'] . '">' . t('Connect') . '</a></li>' : ''); - // don't show connect link to authenticated visitors either + } + + + } - if((remote_user()) && ($_SESSION['visitor_visiting'] == $profile['uid'])) - $connect = ''; + + if((x($profile,'address') == 1) || (x($profile,'locality') == 1) || (x($profile,'region') == 1) || (x($profile,'postal-code') == 1) || (x($profile,'country-name') == 1)) - $address = true; - - if($address) { - $location .= '<div class="location"><span class="location-label">' . t('Location:') . '</span> <div class="adr">'; - $location .= ((x($profile,'address') == 1) ? '<div class="street-address">' . $profile['address'] . '</div>' : ''); - $location .= (((x($profile,'locality') == 1) || (x($profile,'region') == 1) || (x($profile,'postal-code') == 1)) - ? '<span class="city-state-zip"><span class="locality">' . $profile['locality'] . '</span>' - . ((x($profile['locality']) == 1) ? t(', ') : '') - . '<span class="region">' . $profile['region'] . '</span>' - . ' <span class="postal-code">' . $profile['postal-code'] . '</span></span>' : ''); - $location .= ((x($profile,'country-name') == 1) ? ' <span class="country-name">' . $profile['country-name'] . '</span>' : ''); - $location .= '</div></div><div class="profile-clear"></div>'; + $location = t('Location:'); - } + $gender = ((x($profile,'gender') == 1) ? t('Gender:') : False); - $gender = ((x($profile,'gender') == 1) ? '<div class="mf"><span class="gender-label">' . t('Gender:') . '</span> <span class="x-gender">' . $profile['gender'] . '</span></div><div class="profile-clear"></div>' : ''); + $marital = ((x($profile,'marital') == 1) ? t('Status:') : False); - $pubkey = ((x($profile,'pubkey') == 1) ? '<div class="key" style="display:none;">' . $profile['pubkey'] . '</div>' : ''); + $homepage = ((x($profile,'homepage') == 1) ? t('Homepage:') : False); - $marital = ((x($profile,'marital') == 1) ? '<div class="marital"><span class="marital-label"><span class="heart">♥</span> ' . t('Status:') . ' </span><span class="marital-text">' . $profile['marital'] . '</span></div><div class="profile-clear"></div>' : ''); + if(($profile['hidewall'] || $block) && (! local_user()) && (! remote_user())) { + $location = $pdesc = $connect = $gender = $marital = $homepage = False; + } - $homepage = ((x($profile,'homepage') == 1) ? '<div class="homepage"><span class="homepage-label">' . t('Homepage:') . ' </span><span class="homepage-url">' . linkify($profile['homepage']) . '</span></div><div class="profile-clear"></div>' : ''); + $diaspora = array( + 'podloc' => $a->get_baseurl(), + 'searchable' => (($profile['publish'] && $profile['net-publish']) ? 'true' : 'false' ), + 'nickname ' => $profile['nickname'], + 'fullname' => $profile['name'], + 'photo300' => $a->get_baseurl() . '/photo/custom/300/' . $profile['uid'] . '.jpg', + 'photo100' => $a->get_baseurl() . '/photo/custom/100/' . $profile['uid'] . '.jpg', + 'photo50' => $a->get_baseurl() . '/photo/custom/50/' . $profile['uid'] . '.jpg', + ); - if(($profile['hidewall'] || $block) && (! local_user()) && (! remote_user())) { - $location = $pdesc = $connect = $gender = $marital = $homepage = ''; + if (!$block){ + $contact_block = contact_block(); } - $podloc = $a->get_baseurl(); - $searchable = (($profile['publish'] && $profile['net-publish']) ? 'true' : 'false' ); - $nickname = $profile['nickname']; - $photo300 = $a->get_baseurl() . '/photo/custom/300/' . $profile['uid'] . '.jpg'; - $photo100 = $a->get_baseurl() . '/photo/custom/100/' . $profile['uid'] . '.jpg'; - $photo50 = $a->get_baseurl() . '/photo/custom/50/' . $profile['uid'] . '.jpg'; - - $diaspora_vcard = <<< EOT - -<div style="display:none;"> -<dl class='entity_nickname'> -<dt>Nickname</dt> -<dd> -<a class="nickname url uid" href="$podloc/" rel="me">$nickname</a> -</dd> -</dl> -<dl class='entity_fn'> -<dt>Full name</dt> -<dd> -<span class='fn'>$fullname</span> -</dd> -</dl> -<dl class="entity_url"> -<dt>URL</dt> -<dd> -<a class="url" href="$podloc/" id="pod_location" rel="me">$podloc/</a> -</dd> -</dl> -<dl class="entity_photo"> -<dt>Photo</dt> -<dd> -<img class="photo avatar" height="300px" width="300px" src="$photo300"> -</dd> -</dl> -<dl class="entity_photo_medium"> -<dt>Photo</dt> -<dd> -<img class="photo avatar" height="100px" width="100px" src="$photo100"> -</dd> -</dl> -<dl class="entity_photo_small"> -<dt>Photo</dt> -<dd> -<img class="photo avatar" height="50px" width="50px" src="$photo50"> -</dd> -</dl> -<dl class="entity_searchable"> -<dt>Searchable</dt> -<dd> -<span class="searchable">$searchable</span> -</dd> -</dl> -</div> -EOT; $tpl = get_markup_template('profile_vcard.tpl'); $o .= replace_macros($tpl, array( - '$fullname' => $fullname, - '$pdesc' => $pdesc, - '$tabs' => $tabs, - '$photo' => $photo, + '$profile' => $profile, '$connect' => $connect, '$location' => $location, '$gender' => $gender, - '$pubkey' => $pubkey, + '$pdesc' => $pdesc, '$marital' => $marital, '$homepage' => $homepage, - '$diaspora' => $diaspora_vcard + '$diaspora' => $diaspora, + '$contact_block' => $contact_block, )); diff --git a/database.sql b/database.sql index f6ae4c7c6..ff339929e 100644 --- a/database.sql +++ b/database.sql @@ -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', @@ -606,3 +608,17 @@ INDEX ( `iid` ) ) ENGINE = MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `deliverq` ( +`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , +`cmd` CHAR( 32 ) NOT NULL , +`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; diff --git a/doc/Installing-Connectors.md b/doc/Installing-Connectors.md index c8fc8e790..cb56383ce 100644 --- a/doc/Installing-Connectors.md +++ b/doc/Installing-Connectors.md @@ -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. diff --git a/images/connect-bg.png b/images/connect-bg.png Binary files differnew file mode 100644 index 000000000..0611c73e5 --- /dev/null +++ b/images/connect-bg.png diff --git a/images/icons/10/add.png b/images/icons/10/add.png Binary files differnew file mode 100644 index 000000000..f036ac73e --- /dev/null +++ b/images/icons/10/add.png diff --git a/images/icons/10/delete.png b/images/icons/10/delete.png Binary files differnew file mode 100644 index 000000000..f6bf31da4 --- /dev/null +++ b/images/icons/10/delete.png diff --git a/images/icons/10/edit.png b/images/icons/10/edit.png Binary files differnew file mode 100644 index 000000000..a6af619e2 --- /dev/null +++ b/images/icons/10/edit.png diff --git a/images/icons/10/feed.png b/images/icons/10/feed.png Binary files differnew file mode 100644 index 000000000..0e7d02c9b --- /dev/null +++ b/images/icons/10/feed.png diff --git a/images/icons/10/gear.png b/images/icons/10/gear.png Binary files differnew file mode 100644 index 000000000..df6f87af5 --- /dev/null +++ b/images/icons/10/gear.png diff --git a/images/icons/10/group.png b/images/icons/10/group.png Binary files differnew file mode 100644 index 000000000..23172a027 --- /dev/null +++ b/images/icons/10/group.png diff --git a/images/icons/10/info.png b/images/icons/10/info.png Binary files differnew file mode 100644 index 000000000..8097733f3 --- /dev/null +++ b/images/icons/10/info.png diff --git a/images/icons/10/notice.png b/images/icons/10/notice.png Binary files differnew file mode 100644 index 000000000..327d5834e --- /dev/null +++ b/images/icons/10/notice.png diff --git a/images/icons/10/notify_off.png b/images/icons/10/notify_off.png Binary files differnew file mode 100644 index 000000000..c499de01b --- /dev/null +++ b/images/icons/10/notify_off.png diff --git a/images/icons/10/notify_on.png b/images/icons/10/notify_on.png Binary files differnew file mode 100644 index 000000000..5204e097c --- /dev/null +++ b/images/icons/10/notify_on.png diff --git a/images/icons/10/star.png b/images/icons/10/star.png Binary files differnew file mode 100644 index 000000000..185761177 --- /dev/null +++ b/images/icons/10/star.png diff --git a/images/icons/10/user.png b/images/icons/10/user.png Binary files differnew file mode 100644 index 000000000..419661be6 --- /dev/null +++ b/images/icons/10/user.png diff --git a/images/icons/16/add.png b/images/icons/16/add.png Binary files differnew file mode 100644 index 000000000..7ca375325 --- /dev/null +++ b/images/icons/16/add.png diff --git a/images/icons/16/delete.png b/images/icons/16/delete.png Binary files differnew file mode 100644 index 000000000..ada2535fc --- /dev/null +++ b/images/icons/16/delete.png diff --git a/images/icons/16/edit.png b/images/icons/16/edit.png Binary files differnew file mode 100644 index 000000000..747f5e4e7 --- /dev/null +++ b/images/icons/16/edit.png diff --git a/images/icons/16/feed.png b/images/icons/16/feed.png Binary files differnew file mode 100644 index 000000000..9ac7c6677 --- /dev/null +++ b/images/icons/16/feed.png diff --git a/images/icons/16/gear.png b/images/icons/16/gear.png Binary files differnew file mode 100644 index 000000000..5af85390f --- /dev/null +++ b/images/icons/16/gear.png diff --git a/images/icons/16/group.png b/images/icons/16/group.png Binary files differnew file mode 100644 index 000000000..bab4bcd18 --- /dev/null +++ b/images/icons/16/group.png diff --git a/images/icons/16/info.png b/images/icons/16/info.png Binary files differnew file mode 100644 index 000000000..dcd501f93 --- /dev/null +++ b/images/icons/16/info.png diff --git a/images/icons/16/notice.png b/images/icons/16/notice.png Binary files differnew file mode 100644 index 000000000..8e551ad05 --- /dev/null +++ b/images/icons/16/notice.png diff --git a/images/icons/16/notify_off.png b/images/icons/16/notify_off.png Binary files differnew file mode 100644 index 000000000..f11aa4bde --- /dev/null +++ b/images/icons/16/notify_off.png diff --git a/images/icons/16/notify_on.png b/images/icons/16/notify_on.png Binary files differnew file mode 100644 index 000000000..6e91fd995 --- /dev/null +++ b/images/icons/16/notify_on.png diff --git a/images/icons/16/star.png b/images/icons/16/star.png Binary files differnew file mode 100644 index 000000000..3130be6f0 --- /dev/null +++ b/images/icons/16/star.png diff --git a/images/icons/16/user.png b/images/icons/16/user.png Binary files differnew file mode 100644 index 000000000..df83bc27d --- /dev/null +++ b/images/icons/16/user.png diff --git a/images/icons/22/add.png b/images/icons/22/add.png Binary files differnew file mode 100644 index 000000000..ee83da024 --- /dev/null +++ b/images/icons/22/add.png diff --git a/images/icons/22/delete.png b/images/icons/22/delete.png Binary files differnew file mode 100644 index 000000000..15713471b --- /dev/null +++ b/images/icons/22/delete.png diff --git a/images/icons/22/edit.png b/images/icons/22/edit.png Binary files differnew file mode 100644 index 000000000..6e6bb4f73 --- /dev/null +++ b/images/icons/22/edit.png diff --git a/images/icons/22/feed.png b/images/icons/22/feed.png Binary files differnew file mode 100644 index 000000000..15094ce89 --- /dev/null +++ b/images/icons/22/feed.png diff --git a/images/icons/22/gear.png b/images/icons/22/gear.png Binary files differnew file mode 100644 index 000000000..16bcf77dd --- /dev/null +++ b/images/icons/22/gear.png diff --git a/images/icons/22/group.png b/images/icons/22/group.png Binary files differnew file mode 100644 index 000000000..0505432ca --- /dev/null +++ b/images/icons/22/group.png diff --git a/images/icons/22/info.png b/images/icons/22/info.png Binary files differnew file mode 100644 index 000000000..c3cc715dc --- /dev/null +++ b/images/icons/22/info.png diff --git a/images/icons/22/notice.png b/images/icons/22/notice.png Binary files differnew file mode 100644 index 000000000..e45b18c4c --- /dev/null +++ b/images/icons/22/notice.png diff --git a/images/icons/22/notify_off.png b/images/icons/22/notify_off.png Binary files differnew file mode 100644 index 000000000..f2200bb60 --- /dev/null +++ b/images/icons/22/notify_off.png diff --git a/images/icons/22/notify_on.png b/images/icons/22/notify_on.png Binary files differnew file mode 100644 index 000000000..6b3d7fd08 --- /dev/null +++ b/images/icons/22/notify_on.png diff --git a/images/icons/22/star.png b/images/icons/22/star.png Binary files differnew file mode 100644 index 000000000..b8829cbfd --- /dev/null +++ b/images/icons/22/star.png diff --git a/images/icons/22/user.png b/images/icons/22/user.png Binary files differnew file mode 100644 index 000000000..fad2bee97 --- /dev/null +++ b/images/icons/22/user.png diff --git a/images/icons/48/add.png b/images/icons/48/add.png Binary files differnew file mode 100644 index 000000000..61a0b0982 --- /dev/null +++ b/images/icons/48/add.png diff --git a/images/icons/48/delete.png b/images/icons/48/delete.png Binary files differnew file mode 100644 index 000000000..1be4c9a21 --- /dev/null +++ b/images/icons/48/delete.png diff --git a/images/icons/48/edit.png b/images/icons/48/edit.png Binary files differnew file mode 100644 index 000000000..d09214ec9 --- /dev/null +++ b/images/icons/48/edit.png diff --git a/images/icons/48/feed.png b/images/icons/48/feed.png Binary files differnew file mode 100644 index 000000000..9730b4738 --- /dev/null +++ b/images/icons/48/feed.png diff --git a/images/icons/48/gear.png b/images/icons/48/gear.png Binary files differnew file mode 100644 index 000000000..16434390d --- /dev/null +++ b/images/icons/48/gear.png diff --git a/images/icons/48/group.png b/images/icons/48/group.png Binary files differnew file mode 100644 index 000000000..e624bbfb2 --- /dev/null +++ b/images/icons/48/group.png diff --git a/images/icons/48/info.png b/images/icons/48/info.png Binary files differnew file mode 100644 index 000000000..a66ae388b --- /dev/null +++ b/images/icons/48/info.png diff --git a/images/icons/48/notice.png b/images/icons/48/notice.png Binary files differnew file mode 100644 index 000000000..a44548527 --- /dev/null +++ b/images/icons/48/notice.png diff --git a/images/icons/48/notify_off.png b/images/icons/48/notify_off.png Binary files differnew file mode 100644 index 000000000..0a8854cfe --- /dev/null +++ b/images/icons/48/notify_off.png diff --git a/images/icons/48/notify_on.png b/images/icons/48/notify_on.png Binary files differnew file mode 100644 index 000000000..8440018a6 --- /dev/null +++ b/images/icons/48/notify_on.png diff --git a/images/icons/48/star.png b/images/icons/48/star.png Binary files differnew file mode 100644 index 000000000..4b2816d15 --- /dev/null +++ b/images/icons/48/star.png diff --git a/images/icons/48/user.png b/images/icons/48/user.png Binary files differnew file mode 100644 index 000000000..f73c591e6 --- /dev/null +++ b/images/icons/48/user.png diff --git a/images/icons/add.png b/images/icons/add.png Binary files differnew file mode 100644 index 000000000..78497fbc9 --- /dev/null +++ b/images/icons/add.png diff --git a/images/icons/delete.png b/images/icons/delete.png Binary files differnew file mode 100644 index 000000000..f0cae5154 --- /dev/null +++ b/images/icons/delete.png diff --git a/images/icons/edit.png b/images/icons/edit.png Binary files differnew file mode 100644 index 000000000..aeaf835fe --- /dev/null +++ b/images/icons/edit.png diff --git a/images/icons/feed.png b/images/icons/feed.png Binary files differnew file mode 100644 index 000000000..6894257e9 --- /dev/null +++ b/images/icons/feed.png diff --git a/images/icons/gear.png b/images/icons/gear.png Binary files differnew file mode 100644 index 000000000..02847ef9d --- /dev/null +++ b/images/icons/gear.png diff --git a/images/icons/gear_22.png b/images/icons/gear_22.png Binary files differdeleted file mode 100644 index e363de00d..000000000 --- a/images/icons/gear_22.png +++ /dev/null diff --git a/images/icons/group.png b/images/icons/group.png Binary files differnew file mode 100644 index 000000000..de0dc7901 --- /dev/null +++ b/images/icons/group.png diff --git a/images/icons/info.png b/images/icons/info.png Binary files differnew file mode 100644 index 000000000..ea2b0ffa4 --- /dev/null +++ b/images/icons/info.png diff --git a/images/icons/make.sh b/images/icons/make.sh new file mode 100644 index 000000000..348117411 --- /dev/null +++ b/images/icons/make.sh @@ -0,0 +1,14 @@ +sizes="10 16 22 48" + +for s in $sizes +do + echo "=[ ${s}x${s} ]====" + [ -d $s ] || mkdir $s + for f in *.png + do + convert $f -resize ${s}x${s} $s/$f + echo -n "#" + done + echo +done +echo "Ok." diff --git a/images/icons/notice.png b/images/icons/notice.png Binary files differnew file mode 100644 index 000000000..b6017c8de --- /dev/null +++ b/images/icons/notice.png diff --git a/images/icons/notify_off.png b/images/icons/notify_off.png Binary files differnew file mode 100644 index 000000000..e6eac16b8 --- /dev/null +++ b/images/icons/notify_off.png diff --git a/images/icons/notify_off_22.png b/images/icons/notify_off_22.png Binary files differdeleted file mode 100644 index 0520af327..000000000 --- a/images/icons/notify_off_22.png +++ /dev/null diff --git a/images/icons/notify_on.png b/images/icons/notify_on.png Binary files differnew file mode 100644 index 000000000..b9e07d24e --- /dev/null +++ b/images/icons/notify_on.png diff --git a/images/icons/notify_on_22.png b/images/icons/notify_on_22.png Binary files differdeleted file mode 100644 index a8b305245..000000000 --- a/images/icons/notify_on_22.png +++ /dev/null diff --git a/images/icons/star.png b/images/icons/star.png Binary files differnew file mode 100644 index 000000000..4a2236c9b --- /dev/null +++ b/images/icons/star.png diff --git a/images/icons/user.png b/images/icons/user.png Binary files differnew file mode 100644 index 000000000..f1132b1ae --- /dev/null +++ b/images/icons/user.png diff --git a/include/Scrape.php b/include/Scrape.php index cc46af644..bf64c2243 100644 --- a/include/Scrape.php +++ b/include/Scrape.php @@ -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; - $vcard['fn'] = notags($vcard['fn']); - $vcard['nick'] = str_replace(' ','',notags($vcard['nick'])); + // 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; diff --git a/include/api.php b/include/api.php index aa42313b2..1f58a6baa 100644 --- a/include/api.php +++ b/include/api.php @@ -1,6 +1,7 @@ <?php require_once("bbcode.php"); require_once("datetime.php"); + require_once("conversation.php"); /* * Twitter-Like API @@ -8,7 +9,7 @@ */ $API = Array(); - + $called_api = Null; function api_date($str){ //Wed May 23 06:01:13 +0000 2007 @@ -103,9 +104,10 @@ * MAIN API ENTRY POINT * **************************/ function api_call(&$a){ - GLOBAL $API; + GLOBAL $API, $called_api; foreach ($API as $p=>$info){ if (strpos($a->query_string, $p)===0){ + $called_api= explode("/",$p); #unset($_SERVER['PHP_AUTH_USER']); if ($info['auth']===true && local_user()===false) { api_login($a); @@ -131,7 +133,7 @@ return '<?xml version="1.0" encoding="UTF-8"?>'."\n".$r; break; case "json": - header ("Content-Type: application/json"); + //header ("Content-Type: application/json"); foreach($r as $rr) return json_encode($rr); break; @@ -193,6 +195,7 @@ * Returns user info array. */ function api_get_user(&$a, $contact_id = Null){ + global $called_api; $user = null; $extra_query = ""; @@ -209,16 +212,20 @@ if(is_null($user) && x($_GET, 'screen_name')) { $user = dbesc($_GET['screen_name']); $extra_query = "AND `contact`.`nick` = '%s' "; + if (local_user()!==false) $extra_query .= "AND `contact`.`uid`=".intval(local_user()); + } - if (is_null($user) && $a->argc > 3){ - list($user, $null) = explode(".",$a->argv[3]); + if (is_null($user) && $a->argc > (count($called_api)-1)){ + $argid = count($called_api); + list($user, $null) = explode(".",$a->argv[$argid]); if(is_numeric($user)){ $user = intval($user); $extra_query = "AND `contact`.`id` = %d "; } else { $user = dbesc($user); $extra_query = "AND `contact`.`nick` = '%s' "; + if (local_user()!==false) $extra_query .= "AND `contact`.`uid`=".intval(local_user()); } } @@ -301,6 +308,7 @@ } $ret = Array( + 'self' => intval($uinfo[0]['self']), 'uid' => intval($uinfo[0]['uid']), 'id' => intval($uinfo[0]['cid']), 'name' => $uinfo[0]['name'], @@ -321,7 +329,7 @@ 'followers_count' => intval($countfollowers), 'favourites_count' => intval($starred), 'contributors_enabled' => false, - 'follow_request_sent' => false, + 'follow_request_sent' => true, 'profile_background_color' => 'cfe8f6', 'profile_text_color' => '000000', 'profile_link_color' => 'FF8500', @@ -616,6 +624,7 @@ $user_info = api_get_user($a); // get last newtork messages + // params $count = (x($_REQUEST,'count')?$_REQUEST['count']:20); $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0); @@ -664,6 +673,12 @@ $user_info = api_get_user($a); // get last newtork messages + + logger("api_statuses_user_timeline: local_user: ". local_user() . + "\nuser_info: ".print_r($user_info, true) . + "\n_REQUEST: ".print_r($_REQUEST, true), + LOGGER_DEBUG); + // params $count = (x($_REQUEST,'count')?$_REQUEST['count']:20); $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0); @@ -672,6 +687,7 @@ $start = $page*$count; + if ($user_info['self']==1) $sql_extra = "AND `item`.`wall` = 1 "; $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, @@ -679,14 +695,15 @@ `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid` FROM `item`, `contact` WHERE `item`.`uid` = %d + AND `item`.`contact-id` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 - AND `item`.`wall` = 1 AND `contact`.`id` = `item`.`contact-id` AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 $sql_extra AND `item`.`id`>%d ORDER BY `item`.`received` DESC LIMIT %d ,%d ", - intval($user_info['uid']), + intval(local_user()), + intval($user_info['id']), intval($since_id), intval($start), intval($count) ); @@ -711,33 +728,41 @@ if (local_user()===false) return false; $user_info = api_get_user($a); - // get last newtork messages - - // params - $count = (x($_GET,'count')?$_GET['count']:20); - $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0); - if ($page<0) $page=0; + // in friendika starred item are private + // return favorites only for self + logger('api_favorites: self:' . $user_info['self']); - $start = $page*$count; - - $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, - `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, - `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`, - `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid` - FROM `item`, `contact` - WHERE `item`.`uid` = %d - AND `item`.`visible` = 1 AND `item`.`deleted` = 0 - AND `item`.`starred` = 1 - AND `contact`.`id` = `item`.`contact-id` - AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 - $sql_extra - ORDER BY `item`.`received` DESC LIMIT %d ,%d ", - intval($user_info['uid']), - intval($start), intval($count) - ); - - $ret = api_format_items($r,$user_info); + if ($user_info['self']==0) { + $ret = array(); + } else { + + + // params + $count = (x($_GET,'count')?$_GET['count']:20); + $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0); + if ($page<0) $page=0; + + $start = $page*$count; + + $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, + `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, + `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`, + `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid` + FROM `item`, `contact` + WHERE `item`.`uid` = %d + AND `item`.`visible` = 1 AND `item`.`deleted` = 0 + AND `item`.`starred` = 1 + AND `contact`.`id` = `item`.`contact-id` + AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 + $sql_extra + ORDER BY `item`.`received` DESC LIMIT %d ,%d ", + intval($user_info['uid']), + intval($start), intval($count) + ); + $ret = api_format_items($r,$user_info); + + } $data = array('$statuses' => $ret); switch($type){ @@ -762,6 +787,7 @@ $ret = Array(); foreach($r as $item) { + localize_item($item); $status_user = (($item['cid']==$user_info['id'])?$user_info: api_item_get_user($a,$item)); $status = array( 'created_at'=> api_date($item['created']), @@ -819,15 +845,21 @@ if (local_user()===false) return false; $user_info = api_get_user($a); + + // friends and followers only for self + if ($user_info['self']==0){ + return false; + } + if (x($_GET,'cursor') && $_GET['cursor']=='undefined'){ /* this is to stop Hotot to load friends multiple times * I'm not sure if I'm missing return something or * is a bug in hotot. Workaround, meantime */ - $ret=Array(); - $data = array('$users' => $ret); - return api_apply_template("friends", $type, $data); + /*$ret=Array(); + return array('$users' => $ret);*/ + return false; } if($qtype == 'friends') @@ -845,15 +877,18 @@ } - $data = array('$users' => $ret); - return api_apply_template("friends", $type, $data); + return array('$users' => $ret); } function api_statuses_friends(&$a, $type){ - return api_statuses_f($a,$type,"friends"); + $data = api_statuses_f($a,$type,"friends"); + if ($data===false) return false; + return api_apply_template("friends", $type, $data); } function api_statuses_followers(&$a, $type){ - return api_statuses_f($a,$type,"followers"); + $data = api_statuses_f($a,$type,"followers"); + if ($data===false) return false; + return api_apply_template("friends", $type, $data); } api_register_func('api/statuses/friends','api_statuses_friends',true); api_register_func('api/statuses/followers','api_statuses_followers',true); diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index 7f7b8748d..ca0c961b3 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -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("<", "<", $Text); $Text = str_replace(">", ">", $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; +} diff --git a/include/bbcode.php b/include/bbcode.php index a3f2971e5..86b7fdb4b 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -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); } diff --git a/include/conversation.php b/include/conversation.php index 0d901a3c0..6b5bf8d7c 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -80,6 +80,7 @@ function localize_item(&$item){ } + } /** diff --git a/include/crypto.php b/include/crypto.php index a20606db5..0feb45c24 100644 --- a/include/crypto.php +++ b/include/crypto.php @@ -225,3 +225,71 @@ function pkcs5_unpad($text) if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false; return substr($text, 0, -1 * $pad); } + +function AES256CBC_encrypt($data,$key,$iv) { + return mcrypt_encrypt( + MCRYPT_RIJNDAEL_128, + str_pad($key,32,"\0"), + pkcs5_pad($data,16), + MCRYPT_MODE_CBC, + str_pad($iv,16,"\0")); +} + +function AES256CBC_decrypt($data,$key,$iv) { + return pkcs5_unpad(mcrypt_decrypt( + MCRYPT_RIJNDAEL_128, + str_pad($key,32,"\0"), + $data, + MCRYPT_MODE_CBC, + str_pad($iv,16,"\0"))); +} + +function aes_encapsulate($data,$pubkey) { + $key = random_string(32,RANDOM_STRING_TEXT); + $iv = random_string(16,RANDOM_STRING_TEXT); + $result['data'] = base64url_encode(AES256CBC_encrypt($data,$key,$iv),true); + openssl_public_encrypt($key,$k,$pubkey); + $result['key'] = base64url_encode($k,true); + openssl_public_encrypt($iv,$i,$pubkey); + $result['iv'] = base64url_encode($i,true); + return $result; +} + +function aes_unencapsulate($data,$prvkey) { + openssl_private_decrypt(base64url_decode($data['key']),$k,$prvkey); + openssl_private_decrypt(base64url_decode($data['iv']),$i,$prvkey); + return AES256CBC_decrypt(base64url_decode($data['data']),$k,$i); +} + + +// This has been superceded. + +function zot_encapsulate($data,$envelope,$pubkey) { +$res = aes_encapsulate($data,$pubkey); + +return <<< EOT +<?xml version='1.0' encoding='UTF-8'?> +<zot:msg xmlns:zot='http://purl.org/zot/1.0'> + <zot:key>{$res['key']}</zot:key> + <zot:iv>{$res['iv']}</zot:iv> + <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:msg> +EOT; + +} + +// so has this + +function zot_unencapsulate($data,$prvkey) { + $ret = array(); + $c = array(); + $x = parse_xml_string($data); + $c = array('key' => $x->key,'iv' => $x->iv,'data' => $x->data); + openssl_private_decrypt(base64url_decode($x->sender),$s,$prvkey); + $ret['sender'] = $s; + $ret['data'] = aes_unencapsulate($x,$prvkey); + return $ret; +}
\ No newline at end of file diff --git a/include/delivery.php b/include/delivery.php new file mode 100644 index 000000000..18ef09a31 --- /dev/null +++ b/include/delivery.php @@ -0,0 +1,447 @@ +<?php +require_once("boot.php"); + +function delivery_run($argv, $argc){ + global $a, $db; + + if(is_null($a)){ + $a = new App; + } + + if(is_null($db)) { + @include(".htconfig.php"); + require_once("dba.php"); + $db = new dba($db_host, $db_user, $db_pass, $db_data); + unset($db_host, $db_user, $db_pass, $db_data); + } + + require_once("session.php"); + require_once("datetime.php"); + require_once('include/items.php'); + require_once('include/bbcode.php'); + require_once('include/diaspora.php'); + + load_config('config'); + load_config('system'); + + load_hooks(); + + if($argc < 3) + return; + + $a->set_baseurl(get_config('system','url')); + + logger('delivery: invoked: ' . print_r($argv,true)); + + $cmd = $argv[1]; + $item_id = intval($argv[2]); + $contact_id = intval($argv[3]); + + // Some other process may have delivered this item already. + + $r = q("select * from deliverq where cmd = '%s' and item = %d and contact = %d limit 1", + dbesc($cmd), + dbesc($item_id), + dbesc($contact_id) + ); + if(! count($r)) { + return; + } + + // It's ours to deliver. Remove it from the queue. + + q("delete from deliverq where cmd = '%s' and item = %d and contact = %d limit 1", + dbesc($cmd), + dbesc($item_id), + dbesc($contact_id) + ); + + if((! $item_id) || (! $contact_id)) + return; + + $expire = false; + $top_level = false; + $recipients = array(); + $url_recipients = array(); + + $normal_mode = true; + + $recipients[] = $contact_id; + + if($cmd === 'expire') { + $normal_mode = false; + $expire = true; + $items = q("SELECT * FROM `item` WHERE `uid` = %d AND `wall` = 1 + AND `deleted` = 1 AND `changed` > UTC_TIMESTAMP - INTERVAL 30 MINUTE", + intval($item_id) + ); + $uid = $item_id; + $item_id = 0; + if(! count($items)) + return; + } + else { + + // find ancestors + $r = q("SELECT * FROM `item` WHERE `id` = %d LIMIT 1", + intval($item_id) + ); + + if((! count($r)) || (! intval($r[0]['parent']))) { + return; + } + + $target_item = $r[0]; + $parent_id = intval($r[0]['parent']); + $uid = $r[0]['uid']; + $updated = $r[0]['edited']; + + + + $items = q("SELECT `item`.*, `sign`.`signed_text`,`sign`.`signature`,`sign`.`signer` + FROM `item` LEFT JOIN `sign` ON `sign`.`iid` = `item`.`id` WHERE `parent` = %d ORDER BY `id` ASC", + intval($parent_id) + ); + + if(! count($items)) { + return; + } + + $icontacts = q("SELECT * FROM `contact` WHERE `id` IN ( SELECT distinct(`contact-id`) FROM `item` where `parent` = %d ) ", + intval($parent_id) + ); + if(! count($icontacts)) + return; + + + // avoid race condition with deleting entries + + if($items[0]['deleted']) { + foreach($items as $item) + $item['deleted'] = 1; + } + + if((count($items) == 1) && ($items[0]['uri'] === $items[0]['parent-uri'])) { + logger('delivery: top level post'); + $top_level = true; + } + } + + $r = q("SELECT `contact`.*, `user`.`pubkey` AS `upubkey`, `user`.`prvkey` AS `uprvkey`, + `user`.`timezone`, `user`.`nickname`, `user`.`sprvkey`, `user`.`spubkey`, + `user`.`page-flags`, `user`.`prvnets` + FROM `contact` LEFT JOIN `user` ON `user`.`uid` = `contact`.`uid` + WHERE `contact`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1", + intval($uid) + ); + + if(! count($r)) + return; + + $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 + $slap = ''; + + require_once('include/group.php'); + + $parent = $items[0]; + + // This is IMPORTANT!!!! + + // We will only send a "notify owner to relay" or followup message if the referenced post + // originated on our system by virtue of having our hostname somewhere + // in the URI, AND it was a comment (not top_level) AND the parent originated elsewhere. + // if $parent['wall'] == 1 we will already have the parent message in our array + // and we will relay the whole lot. + + // expire sends an entire group of expire messages and cannot be forwarded. + // However the conversation owner will be a part of the conversation and will + // be notified during this run. + // Other DFRN conversation members will be alerted during polled updates. + + // Diaspora members currently are not notified of expirations, and other networks have + // either limited or no ability to process deletions. We should at least fix Diaspora + // by stringing togther an array of retractions and sending them onward. + + + $localhost = $a->get_hostname(); + if(strpos($localhost,':')) + $localhost = substr($localhost,0,strpos($localhost,':')); + + /** + * + * Be VERY CAREFUL if you make any changes to the following line. Seemingly innocuous changes + * have been known to cause runaway conditions which affected several servers, along with + * permissions issues. + * + */ + + if((! $top_level) && ($parent['wall'] == 0) && (! $expire) && (stristr($target_item['uri'],$localhost))) { + logger('relay denied for delivery agent.'); + + /* no relay allowed for direct contact delivery */ + return; + } + + if((strlen($parent['allow_cid'])) + || (strlen($parent['allow_gid'])) + || (strlen($parent['deny_cid'])) + || (strlen($parent['deny_gid']))) { + $public_message = false; // private recipients, not public + } + + $conversant_str = intval($contact_id); + + $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `blocked` = 0 AND `pending` = 0", + intval($contact_id) + ); + + if(count($r)) + $contact = $r[0]; + + + $feed_template = get_markup_template('atom_feed.tpl'); + $mail_template = get_markup_template('atom_mail.tpl'); + + $atom = ''; + $slaps = array(); + + $hubxml = feed_hublinks(); + + $birthday = feed_birthday($owner['uid'],$owner['timezone']); + + if(strlen($birthday)) + $birthday = '<dfrn:birthday>' . xmlify($birthday) . '</dfrn:birthday>'; + + $atom .= replace_macros($feed_template, array( + '$version' => xmlify(FRIENDIKA_VERSION), + '$feed_id' => xmlify($a->get_baseurl() . '/profile/' . $owner['nickname'] ), + '$feed_title' => xmlify($owner['name']), + '$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', $updated . '+00:00' , ATOM_TIME)) , + '$hub' => $hubxml, + '$salmon' => '', // private feed, we don't use salmon here + '$name' => xmlify($owner['name']), + '$profile_page' => xmlify($owner['url']), + '$photo' => xmlify($owner['photo']), + '$thumb' => xmlify($owner['thumb']), + '$picdate' => xmlify(datetime_convert('UTC','UTC',$owner['avatar-date'] . '+00:00' , ATOM_TIME)) , + '$uridate' => xmlify(datetime_convert('UTC','UTC',$owner['uri-date'] . '+00:00' , ATOM_TIME)) , + '$namdate' => xmlify(datetime_convert('UTC','UTC',$owner['name-date'] . '+00:00' , ATOM_TIME)) , + '$birthday' => $birthday + )); + + foreach($items as $item) { + if(! $item['parent']) + continue; + + // private emails may be in included in public conversations. Filter them. + if(($public_message) && $item['private']) + continue; + + $item_contact = get_item_contact($item,$icontacts); + if(! $item_contact) + continue; + + $atom .= atom_entry($item,'text',$item_contact,$owner,true); + + if(($top_level) && ($public_message) && ($item['author-link'] === $item['owner-link']) && (! $expire)) + $slaps[] = atom_entry($item,'html',$item_contact,$owner,true); + } + + $atom .= '</feed>' . "\r\n"; + + logger('notifier: ' . $atom, LOGGER_DATA); + + logger('notifier: slaps: ' . print_r($slaps,true), LOGGER_DATA); + + + require_once('include/salmon.php'); + + if($contact['self']) + return; + + $deliver_status = 0; + + switch($contact['network']) { + + case NETWORK_DFRN : + logger('notifier: dfrndelivery: ' . $contact['name']); + $deliver_status = dfrn_deliver($owner,$contact,$atom); + + logger('notifier: dfrn_delivery returns ' . $deliver_status); + + if($deliver_status == (-1)) { + logger('notifier: delivery failed: queuing message'); + // queue message for redelivery + q("INSERT INTO `queue` ( `cid`, `created`, `last`, `content`) + VALUES ( %d, '%s', '%s', '%s') ", + intval($contact['id']), + dbesc(datetime_convert()), + dbesc(datetime_convert()), + dbesc($atom) + ); + } + break; + + case NETWORK_OSTATUS : + + // Do not send to otatus if we are not configured to send to public networks + if($owner['prvnets']) + break; + if(get_config('system','ostatus_disabled') || get_config('system','dfrn_only')) + break; + + // only send salmon if public - e.g. if it's ok to notify + // a public hub, it's ok to send a salmon + + if((count($slaps)) && ($public_message) && (! $expire)) { + logger('notifier: slapdelivery: ' . $contact['name']); + foreach($slaps as $slappy) { + if($contact['notify']) { + $deliver_status = slapper($owner,$contact['notify'],$slappy); + if($deliver_status == (-1)) { + // queue message for redelivery + q("INSERT INTO `queue` ( `cid`, `created`, `last`, `content`) + VALUES ( %d, '%s', '%s', '%s') ", + intval($contact['id']), + dbesc(datetime_convert()), + dbesc(datetime_convert()), + dbesc($slappy) + ); + } + } + } + } + + break; + + case NETWORK_MAIL : + + if(get_config('system','dfrn_only')) + break; + // WARNING: does not currently convert to RFC2047 header encodings, etc. + + $addr = $contact['addr']; + if(! strlen($addr)) + break; + + if($cmd === 'wall-new' || $cmd === 'comment-new') { + + $it = null; + if($cmd === 'wall-new') + $it = $items[0]; + else { + $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1", + intval($argv[2]), + intval($uid) + ); + if(count($r)) + $it = $r[0]; + } + if(! $it) + break; + + + $local_user = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", + intval($uid) + ); + if(! count($local_user)) + break; + + $reply_to = ''; + $r1 = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1", + intval($uid) + ); + if($r1 && $r1[0]['reply_to']) + $reply_to = $r1[0]['reply_to']; + + $subject = (($it['title']) ? $it['title'] : t("\x28no subject\x29")) ; + $headers = 'From: ' . $local_user[0]['username'] . ' <' . $local_user[0]['email'] . '>' . "\n"; + if($reply_to) + $headers .= 'Reply-to: ' . $reply_to . "\n"; + $headers .= 'Message-id: <' . $it['uri'] . '>' . "\n"; + if($it['uri'] !== $it['parent-uri']) { + $header .= 'References: <' . $it['parent-uri'] . '>' . "\n"; + if(! strlen($it['title'])) { + $r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1", + dbesc($it['parent-uri']) + ); + if(count($r)) { + $subtitle = $r[0]['title']; + if($subtitle) { + if(strncasecmp($subtitle,'RE:',3)) + $subject = $subtitle; + else + $subject = 'Re: ' . $subtitle; + } + } + } + } + $headers .= 'MIME-Version: 1.0' . "\n"; + $headers .= 'Content-Type: text/html; charset=UTF-8' . "\n"; + $headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n"; + $html = prepare_body($it); + $message = '<html><body>' . $html . '</body></html>'; + logger('notifier: email delivery to ' . $addr); + mail($addr, $subject, $message, $headers); + } + break; + + case NETWORK_DIASPORA : + logger('delivery: diaspora deliver: ' . $contact['name']); + + if(get_config('system','dfrn_only') || (! get_config('system','diaspora_enabled')) || (! $normal_mode)) + break; + + if(! $contact['pubkey']) + break; + + if($target_item['verb'] === ACTIVITY_DISLIKE) { + // unsupported + break; + } + elseif(($target_item['deleted']) && ($target_item['verb'] !== ACTIVITY_LIKE)) { + logger('delivery: diaspora retract: ' . $contact['name']); + // diaspora delete, + diaspora_send_retraction($target_item,$owner,$contact); + break; + } + elseif($target_item['parent'] != $target_item['id']) { + + logger('delivery: diaspora relay: ' . $contact['name']); + + // we are the relay - send comments, likes and unlikes to our conversants + diaspora_send_relay($target_item,$owner,$contact); + break; + } + 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; + } + + logger('delivery: diaspora unknown mode: ' . $contact['name']); + + break; + + case NETWORK_FEED : + case NETWORK_FACEBOOK : + if(get_config('system','dfrn_only')) + break; + default: + break; + } + + return; +} + +if (array_search(__file__,get_included_files())===0){ + delivery_run($argv,$argc); + killme(); +} diff --git a/include/diaspora.php b/include/diaspora.php index 90c802363..6d070ecba 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -3,6 +3,7 @@ require_once('include/crypto.php'); require_once('include/items.php'); require_once('include/bb2diaspora.php'); +require_once('include/contact_selectors.php'); function diaspora_dispatch($importer,$msg) { @@ -139,10 +140,9 @@ EOT; $encrypted_outer_key_bundle = ''; openssl_public_encrypt($outer_json,$encrypted_outer_key_bundle,$pubkey); - logger('outer_bundle_encrypt: ' . openssl_error_string()); $b64_encrypted_outer_key_bundle = base64_encode($encrypted_outer_key_bundle); - logger('outer_bundle: ' . $b64_encrypted_outer_key_bundle . ' key: ' . $pubkey); + logger('outer_bundle: ' . $b64_encrypted_outer_key_bundle . ' key: ' . $pubkey, LOGGER_DATA); $encrypted_header_json_object = json_encode(array('aes_key' => base64_encode($encrypted_outer_key_bundle), 'ciphertext' => base64_encode($ciphertext))); @@ -222,7 +222,7 @@ function diaspora_decode($importer,$xml) { * </decrypted_header> */ - logger('decrypted: ' . $decrypted); + logger('decrypted: ' . $decrypted, LOGGER_DEBUG); $idom = parse_xml_string($decrypted,false); $inner_iv = base64_decode($idom->iv); @@ -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)); @@ -417,8 +418,10 @@ function diaspora_post($importer,$xml) { dbesc($message_id), dbesc($guid) ); - if(count($r)) + if(count($r)) { + logger('diaspora_post: message exists: ' . $guid); return; + } // allocate a guid on our system - we aren't fixing any collisions. // we're ignoring them @@ -453,8 +456,16 @@ function diaspora_post($importer,$xml) { $datarray['author-link'] = $contact['url']; $datarray['author-avatar'] = $contact['thumb']; $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; @@ -462,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)); @@ -474,8 +486,10 @@ function diaspora_comment($importer,$xml,$msg) { $text = $xml->text; $contact = diaspora_get_contact_by_handle($importer['uid'],$msg['author']); - if(! $contact) + if(! $contact) { + logger('diaspora_comment: cannot find contact: ' . $msg['author']); return; + } if(($contact['rel'] == CONTACT_IS_FOLLOWER) || ($contact['blocked']) || ($contact['readonly'])) { logger('diaspora_comment: Ignoring this author.'); @@ -485,6 +499,15 @@ function diaspora_comment($importer,$xml,$msg) { $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", intval($importer['uid']), + dbesc($guid) + ); + if(count($r)) { + logger('diaspora_comment: our comment just got relayed back to us (or there was a guid collision) : ' . $guid); + return; + } + + $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", + intval($importer['uid']), dbesc($parent_guid) ); if(! count($r)) { @@ -558,9 +581,17 @@ function diaspora_comment($importer,$xml,$msg) { $datarray['author-link'] = $person['url']; $datarray['author-avatar'] = ((x($person,'thumb')) ? $person['thumb'] : $person['photo']); $datarray['body'] = $body; + $datarray['app'] = 'Diaspora'; $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), @@ -580,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)); @@ -647,8 +679,10 @@ function diaspora_like($importer,$xml,$msg) { return; $contact = diaspora_get_contact_by_handle($importer['uid'],$msg['author']); - if(! $contact) + if(! $contact) { + logger('diaspora_like: cannot find contact: ' . $msg['author']); return; + } if(($contact['rel'] == CONTACT_IS_FOLLOWER) || ($contact['blocked']) || ($contact['readonly'])) { logger('diaspora_like: Ignoring this author.'); @@ -715,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); @@ -776,6 +810,8 @@ EOT; $plink = '[url=' . $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $parent_item['id'] . ']' . $post_type . '[/url]'; $arr['body'] = sprintf( $bodyverb, $ulink, $alink, $plink ); + $arr['app'] = 'Diaspora'; + $arr['private'] = $parent_item['private']; $arr['verb'] = $activity; $arr['object-type'] = $objtype; @@ -786,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), @@ -897,11 +941,12 @@ function diaspora_send_status($item,$owner,$contact) { } } - $body = xmlify(bb2diaspora($body)); + $body = xmlify(html_entity_decode(bb2diaspora($body))); + $public = (($item['private']) ? 'false' : 'true'); require_once('include/datetime.php'); - $created = datetime_convert('UTC','UTC',$item['created'],'Y-m-d h:i:s \U\T\C'); + $created = datetime_convert('UTC','UTC',$item['created'],'Y-m-d H:i:s \U\T\C'); $tpl = get_markup_template('diaspora_post.tpl'); $msg = replace_macros($tpl, array( @@ -953,7 +998,7 @@ function diaspora_send_images($item,$owner,$contact,$images) { '$guid' => xmlify($r[0]['guid']), '$handle' => xmlify($image['handle']), '$public' => xmlify($public), - '$created_at' => xmlify(datetime_convert('UTC','UTC',$r[0]['created'],'Y-m-d h:i:s \U\T\C')) + '$created_at' => xmlify(datetime_convert('UTC','UTC',$r[0]['created'],'Y-m-d H:i:s \U\T\C')) )); @@ -990,7 +1035,7 @@ function diaspora_send_followup($item,$owner,$contact) { $like = false; } - $text = bb2diaspora($item['body']); + $text = html_entity_decode(bb2diaspora($item['body'])); // sign it @@ -1035,14 +1080,6 @@ function diaspora_send_relay($item,$owner,$contact) { else return; - // fetch the original signature - $r = q("select * from sign where iid = %d limit 1", - intval($item['id']) - ); - if(! count($r)) - return; - $orig_sign = $r[0]; - if($item['verb'] === ACTIVITY_LIKE) { $tpl = get_markup_template('diaspora_like_relay.tpl'); $like = true; @@ -1054,14 +1091,59 @@ function diaspora_send_relay($item,$owner,$contact) { $like = false; } - $text = bb2diaspora($item['body']); + $body = $item['body']; + + $text = html_entity_decode(bb2diaspora($body)); - // sign it + // fetch the original signature if somebody sent the post to us to relay + // If we are relaying for a reply originating on our own account, there wasn't a 'send to relay' + // action. It wasn't needed. In that case create the original signature and the + // owner (parent author) signature + // comments from other networks will be relayed under our name, with a brief + // preamble to describe what's happening and noting the real author - if($like) - $parent_signed_text = $orig_sign['signed_text']; - else - $parent_signed_text = $orig_sign['signed_text']; + $r = q("select * from sign where iid = %d limit 1", + intval($item['id']) + ); + if(count($r)) { + $orig_sign = $r[0]; + $signed_text = $orig_sign['signed_text']; + $authorsig = $orig_sign['signature']; + $handle = $orig_sign['signer']; + } + else { + + $itemcontact = q("select * from contact where `id` = %d limit 1", + intval($item['contact-id']) + ); + if(count($itemcontact)) { + if(! $itemcontact[0]['self']) { + $prefix = sprintf( t('[Relayed] Comment authored by %s from network %s'), + '['. $item['author-name'] . ']' . '(' . $item['author-link'] . ')', + network_to_name($itemcontact['network'])) . "\n"; + $body = $prefix . $body; + } + } + else { + + if($like) + $signed_text = $item['guid'] . ';' . $target_type . ';' . $parent_guid . ';' . $positive . ';' . $myaddr; + else + $signed_text = $item['guid'] . ';' . $parent_guid . ';' . $text . ';' . $myaddr; + + $authorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha')); + + q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", + intval($item['id']), + dbesc($signed_text), + dbesc(base64_encode($authorsig)), + dbesc($myaddr) + ); + $handle = $myaddr; + } + } + + // sign it $parentauthorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha')); @@ -1071,18 +1153,11 @@ function diaspora_send_relay($item,$owner,$contact) { '$target_type' =>xmlify($target_type), '$authorsig' => xmlify($orig_sign['signature']), '$parentsig' => xmlify($parentauthorsig), - '$text' => xmlify($text), + '$body' => xmlify($text), '$positive' => xmlify($positive), - '$diaspora_handle' => xmlify($myaddr) + '$handle' => xmlify($handle) )); - // fetch the original signature - $r = q("select * from sign where iid = %d limit 1", - intval($item['id']) - ); - if(! count($r)) - return; - logger('diaspora_relay_comment: base message: ' . $msg, LOGGER_DATA); $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey']))); diff --git a/include/group.php b/include/group.php index f21ce42e0..8798adf5a 100644 --- a/include/group.php +++ b/include/group.php @@ -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>"; diff --git a/include/items.php b/include/items.php index 150be2707..facd8b2d4 100644 --- a/include/items.php +++ b/include/items.php @@ -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; } } @@ -112,8 +114,10 @@ function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0) `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`name-date`, `contact`.`uri-date`, `contact`.`avatar-date`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`, - `contact`.`id` AS `contact-id`, `contact`.`uid` AS `contact-uid` + `contact`.`id` AS `contact-id`, `contact`.`uid` AS `contact-uid`, + `sign`.`signed_text`, `sign`.`signature`, `sign`.`signer` FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` + LEFT JOIN `sign` ON `sign`.`iid` = `item`.`id` WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`parent` != 0 AND `item`.`wall` = 1 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND ( `item`.`edited` > '%s' OR `item`.`changed` > '%s' ) @@ -363,6 +367,22 @@ function get_atom_elements($feed,$item) { $res['app'] = 'OStatus'; } + // base64 encoded json structure representing Diaspora signature + + $dsig = $item->get_item_tags(NAMESPACE_DFRN,'diaspora_signature'); + if($dsig) { + $res['dsprsig'] = unxmlify($dsig[0]['data']); + } + + $dguid = $item->get_item_tags(NAMESPACE_DFRN,'diaspora_guid'); + 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. */ @@ -659,6 +679,15 @@ function encode_rel_links($links) { function item_store($arr,$force_parent = false) { + // If a Diaspora signature structure was passed in, pull it out of the + // item array and set it aside for later storage. + + $dsprsig = null; + if(x($arr,'dsprsig')) { + $dsprsig = json_decode(base64_decode($arr['dsprsig'])); + unset($arr['dsprsig']); + } + if($arr['gravity']) $arr['gravity'] = intval($arr['gravity']); elseif($arr['parent-uri'] == $arr['uri']) @@ -708,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'])) : ''); @@ -835,6 +865,16 @@ function item_store($arr,$force_parent = false) { intval($current_post) ); + if($dsprsig) { + q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", + intval($current_post), + dbesc($dsprsig->signed_text), + dbesc($dsprsig->signature), + dbesc($dsprsig->signer) + ); + } + + /** * If this is now the last-child, force all _other_ children of this parent to *not* be last-child */ @@ -894,7 +934,7 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) { if(! $curl_stat) return(-1); // timed out - logger('dfrn_deliver: ' . $xml); + logger('dfrn_deliver: ' . $xml, LOGGER_DATA); if(! $xml) return 3; @@ -958,7 +998,7 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) { $key = substr(random_string(),0,16); $data = bin2hex(aes_encrypt($postvars['data'],$key)); $postvars['data'] = $data; - logger('rino: sent key = ' . $key); + logger('rino: sent key = ' . $key, LOGGER_DEBUG); if($dfrn_version >= 2.1) { @@ -1670,10 +1710,21 @@ function atom_entry($item,$type,$author,$owner,$comment = false) { $o .= '<dfrn:private>1</dfrn:private>' . "\r\n"; if($item['extid']) - $o .= '<dfrn:extid>' . $item['extid'] . '</dfrn:extid>' . "\r\n"; + $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="' . $item['app'] . '" ></statusnet:notice_info>'; + $o .= '<statusnet:notice_info local_id="' . $item['id'] . '" source="' . xmlify($item['app']) . '" ></statusnet:notice_info>' . "\r\n"; + + if($item['guid']) + $o .= '<dfrn:diaspora_guid>' . $item['guid'] . '</dfrn:diaspora_guid>' . "\r\n"; + + if($item['signed_text']) { + $sign = base64_encode(json_encode(array('signed_text' => $item['signed_text'],'signature' => $item['signature'],'signer' => $item['signer']))); + $o .= '<dfrn:diaspora_signature>' . xmlify($sign) . '</dfrn:diaspora_signature>' . "\r\n"; + } + $verb = construct_verb($item); $o .= '<as:verb>' . xmlify($verb) . '</as:verb>' . "\r\n"; $actobj = construct_activity_object($item); diff --git a/include/nav.php b/include/nav.php index f9e72bda7..b290a8da2 100644 --- a/include/nav.php +++ b/include/nav.php @@ -81,7 +81,7 @@ function nav(&$a) { if(! get_config('system','hide_help')) $nav['help'] = array($help_url, t('Help'), "", t('Help and documentation')); - if($a->apps) + if(count($a->apps)>0) $nav['apps'] = array('apps', t('Apps'), "", t('Addon applications, utilities, games')); $nav['search'] = array('search', t('Search'), "", t('Search site content')); @@ -158,6 +158,7 @@ function nav(&$a) { '$emptynotifications' => t('Nothing new here'), '$userinfo' => $userinfo, '$sel' => $a->nav_sel, + '$apps' => $a->apps, )); call_hooks('page_header', $a->page['nav']); diff --git a/include/network.php b/include/network.php index 691a8c9f9..2832ae2d3 100644 --- a/include/network.php +++ b/include/network.php @@ -9,37 +9,37 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0) { $a = get_app(); - $ch = curl_init($url); + $ch = @curl_init($url); if(($redirects > 8) || (! $ch)) return false; - curl_setopt($ch, CURLOPT_HEADER, true); - curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); - curl_setopt($ch, CURLOPT_USERAGENT, "Friendika"); + @curl_setopt($ch, CURLOPT_HEADER, true); + @curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); + @curl_setopt($ch, CURLOPT_USERAGENT, "Friendika"); if(intval($timeout)) { - curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); + @curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); } else { $curl_time = intval(get_config('system','curl_timeout')); - curl_setopt($ch, CURLOPT_TIMEOUT, (($curl_time !== false) ? $curl_time : 60)); + @curl_setopt($ch, CURLOPT_TIMEOUT, (($curl_time !== false) ? $curl_time : 60)); } // by default we will allow self-signed certs // but you can override this $check_cert = get_config('system','verifyssl'); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, (($check_cert) ? true : false)); + @curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, (($check_cert) ? true : false)); $prx = get_config('system','proxy'); if(strlen($prx)) { - curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); - curl_setopt($ch, CURLOPT_PROXY, $prx); - $prxusr = get_config('system','proxyuser'); + @curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); + @curl_setopt($ch, CURLOPT_PROXY, $prx); + $prxusr = @get_config('system','proxyuser'); if(strlen($prxusr)) - curl_setopt($ch, CURLOPT_PROXYUSERPWD, $prxusr); + @curl_setopt($ch, CURLOPT_PROXYUSERPWD, $prxusr); } if($binary) - curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); + @curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); $a->set_curl_code(0); @@ -49,7 +49,7 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0) { $s = @curl_exec($ch); $base = $s; - $curl_info = curl_getinfo($ch); + $curl_info = @curl_getinfo($ch); $http_code = $curl_info['http_code']; $header = ''; @@ -80,7 +80,7 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0) { $a->set_curl_headers($header); - curl_close($ch); + @curl_close($ch); return($body); }} diff --git a/include/notifier.php b/include/notifier.php index e92a4f6a8..6ac882c19 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -1,6 +1,21 @@ <?php + 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; @@ -35,7 +50,6 @@ function notifier_run($argv, $argc){ $cmd = $argv[1]; switch($cmd) { - case 'mail': default: $item_id = intval($argv[2]); @@ -46,6 +60,8 @@ function notifier_run($argv, $argc){ } $expire = false; + $mail = false; + $fsuggest = false; $top_level = false; $recipients = array(); $url_recipients = array(); @@ -54,6 +70,7 @@ function notifier_run($argv, $argc){ if($cmd === 'mail') { $normal_mode = false; + $mail = true; $message = q("SELECT * FROM `mail` WHERE `id` = %d LIMIT 1", intval($item_id) ); @@ -79,6 +96,8 @@ function notifier_run($argv, $argc){ } elseif($cmd === 'suggest') { $normal_mode = false; + $fsuggest = true; + $suggest = q("SELECT * FROM `fsuggest` WHERE `id` = %d LIMIT 1", intval($item_id) ); @@ -104,7 +123,8 @@ function notifier_run($argv, $argc){ $uid = $r[0]['uid']; $updated = $r[0]['edited']; - $items = q("SELECT * FROM `item` WHERE `parent` = %d ORDER BY `id` ASC", + $items = q("SELECT `item`.*, `sign`.`signed_text`,`sign`.`signature`,`sign`.`signer` + FROM `item` LEFT JOIN `sign` ON `sign`.`iid` = `item`.`id` WHERE `parent` = %d ORDER BY `id` ASC", intval($parent_id) ); @@ -119,8 +139,11 @@ function notifier_run($argv, $argc){ $item['deleted'] = 1; } - if(count($items) == 1 && $items[0]['uri'] === $items[0]['parent-uri']) + if((count($items) == 1) && ($items[0]['uri'] === $items[0]['parent-uri'])) { + logger('notifier: top level post'); $top_level = true; + } + } $r = q("SELECT `contact`.*, `user`.`pubkey` AS `upubkey`, `user`.`prvkey` AS `uprvkey`, @@ -136,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 @@ -144,7 +169,7 @@ function notifier_run($argv, $argc){ // fill this in with a single salmon slap if applicable $slap = ''; - if($cmd != 'mail' && $cmd != 'suggest') { + if(! ($mail || $fsuggest)) { require_once('include/group.php'); @@ -235,7 +260,6 @@ function notifier_run($argv, $argc){ $r = q("SELECT * FROM `contact` WHERE `id` IN ( $conversant_str ) AND `blocked` = 0 AND `pending` = 0"); - if(count($r)) $contacts = $r; } @@ -270,7 +294,7 @@ function notifier_run($argv, $argc){ '$birthday' => $birthday )); - if($cmd === 'mail') { + if($mail) { $public_message = false; // mail is not public $body = fix_private_photos($item['body'],$owner['uid']); @@ -286,7 +310,7 @@ function notifier_run($argv, $argc){ '$parent_id' => xmlify($item['parent-uri']) )); } - elseif($cmd === 'suggest') { + elseif($fsuggest) { $public_message = false; // suggestions are not public $sugg_template = get_markup_template('atom_suggest.tpl'); @@ -374,17 +398,43 @@ function notifier_run($argv, $argc){ dbesc($recip_str) ); - // delivery loop require_once('include/salmon.php'); + $interval = ((get_config('system','delivery_interval') === false) ? 2 : intval(get_config('system','delivery_interval'))); + + // delivery loop + if(count($r)) { + + foreach($r as $contact) { + if((! $mail) && (! $fsuggest) && (! $followup) && (! $contact['self'])) { + q("insert into deliverq ( `cmd`,`item`,`contact` ) values ('%s', %d, %d )", + dbesc($cmd), + intval($item_id), + intval($contact['id']) + ); + } + } + foreach($r as $contact) { if($contact['self']) continue; + // potentially more than one recipient. Start a new process and space them out a bit. + // we will deliver single recipient types of message and email receipients here. + + if((! $mail) && (! $fsuggest) && (! $followup)) { + proc_run('php','include/delivery.php',$cmd,$item_id,$contact['id']); + if($interval) + @time_sleep_until(microtime(true) + (float) $interval); + continue; + } + $deliver_status = 0; + logger("main delivery by notifier: followup=$followup mail=$mail fsuggest=$fsuggest"); + switch($contact['network']) { case NETWORK_DFRN: logger('notifier: dfrndelivery: ' . $contact['name']); @@ -558,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; } @@ -589,54 +640,33 @@ function notifier_run($argv, $argc){ } } - if((strlen($hub)) && ($public_message)) { - $hubs = explode(',', $hub); - if(count($hubs)) { - foreach($hubs as $h) { - $h = trim($h); - if(! strlen($h)) - continue; - $params = 'hub.mode=publish&hub.url=' . urlencode($a->get_baseurl() . '/dfrn_poll/' . $owner['nickname'] ); - post_url($h,$params); - logger('pubsub: publish: ' . $h . ' ' . $params . ' returned ' . $a->get_curl_code()); - if(count($hubs) > 1) - sleep(7); // try and avoid multiple hubs responding at precisely the same time - } - } - } if($public_message) { - /** - * - * If you have less than 999 dfrn friends and it's a public message, - * we'll just go ahead and push them out securely with dfrn/rino or Diaspora. - * If you've got more than that, you'll have to rely on PuSH delivery. - * - */ - - $max_allowed = ((get_config('system','maxpubdeliver') === false) ? 999 : intval(get_config('system','maxpubdeliver'))); - - /** - * - * Only get the bare essentials and go back for the full record. - * If you've got a lot of friends and we grab all the details at once it could exhaust memory. - * - */ - $r = q("SELECT `id`, `name` FROM `contact` WHERE `network` in ('%s','%s') AND `uid` = %d AND `blocked` = 0 AND `pending` = 0 - AND `rel` != %d ", + AND `rel` != %d order by rand() ", dbesc(NETWORK_DFRN), dbesc(NETWORK_DIASPORA), intval($owner['uid']), intval(CONTACT_IS_SHARING) ); - if((count($r)) && (($max_allowed == 0) || (count($r) < $max_allowed))) { - + if(count($r)) { logger('pubdeliver: ' . print_r($r,true)); + // throw everything into the queue in case we get killed + + foreach($r as $rr) { + if((! $mail) && (! $fsuggest) && (! $followup)) { + q("insert into deliverq ( `cmd`,`item`,`contact` ) values ('%s', %d, %d )", + dbesc($cmd), + intval($item_id), + intval($rr['id']) + ); + } + } + foreach($r as $rr) { /* Don't deliver to folks who have already been delivered to */ @@ -646,63 +676,32 @@ function notifier_run($argv, $argc){ continue; } - $n = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1", - intval($rr['id']) - ); - - if(count($n)) { - $contact = $n[0]; - logger('pubdeliver: network: ' . $contact['network']); - - switch($contact['network']) { - case NETWORK_DFRN : - logger('notifier: dfrnpubdelivery: ' . $contact['name']); - $deliver_status = dfrn_deliver($owner,$contact,$atom); - break; - case NETWORK_DIASPORA : - require_once('include/diaspora.php'); + if((! $mail) && (! $fsuggest) && (! $followup)) { + logger('notifier: delivery agent: ' . $rr['name'] . ' ' . $rr['id']); + proc_run('php','include/delivery.php',$cmd,$item_id,$rr['id']); + if($interval) + @time_sleep_until(microtime(true) + (float) $interval); + } + } + } - logger('notifier: diaspora pubdelivery: ' . $contact['name']); - if(get_config('system','dfrn_only') || (! get_config('system','diaspora_enabled')) || (! $normal_mode)) { - logger('notifier: diaspora pubdelivery not allowed at this time'); - break; - } - - if(! $contact['pubkey']) { - logger('notifier: diaspora pubdelivery: no pubkey'); - break; - } - - if($target_item['verb'] === ACTIVITY_DISLIKE) { - // unsupported - break; - } - elseif(($target_item['deleted']) && ($target_item['verb'] !== ACTIVITY_LIKE)) { - // diaspora delete, - diaspora_send_retraction($target_item,$owner,$contact); - break; - } - elseif($followup) { - // send comments, likes and retractions of likes to owner to relay - diaspora_send_followup($target_item,$owner,$contact); - break; - } - elseif($target_item['parent'] != $target_item['id']) { - // we are the relay - send comments, likes and unlikes to our conversants - diaspora_send_relay($target_item,$owner,$contact); - break; - } - elseif($top_level) { - diaspora_send_status($target_item,$owner,$contact); - break; - } - default: - break; - } + if(strlen($hub)) { + $hubs = explode(',', $hub); + if(count($hubs)) { + foreach($hubs as $h) { + $h = trim($h); + if(! strlen($h)) + continue; + $params = 'hub.mode=publish&hub.url=' . urlencode($a->get_baseurl() . '/dfrn_poll/' . $owner['nickname'] ); + post_url($h,$params); + logger('pubsub: publish: ' . $h . ' ' . $params . ' returned ' . $a->get_curl_code()); + if(count($hubs) > 1) + sleep(7); // try and avoid multiple hubs responding at precisely the same time } } } + } return; diff --git a/include/queue.php b/include/queue.php index f1bcf2e9f..5119a65d8 100644 --- a/include/queue.php +++ b/include/queue.php @@ -3,18 +3,18 @@ require_once("boot.php"); require_once('include/queue_fn.php'); function queue_run($argv, $argc){ - global $a, $db; + global $a, $db; - if(is_null($a)){ - $a = new App; - } + if(is_null($a)){ + $a = new App; + } - if(is_null($db)){ - @include(".htconfig.php"); - require_once("dba.php"); - $db = new dba($db_host, $db_user, $db_pass, $db_data); - unset($db_host, $db_user, $db_pass, $db_data); - }; + if(is_null($db)){ + @include(".htconfig.php"); + require_once("dba.php"); + $db = new dba($db_host, $db_user, $db_pass, $db_data); + unset($db_host, $db_user, $db_pass, $db_data); + }; require_once("session.php"); @@ -38,6 +38,18 @@ function queue_run($argv, $argc){ logger('queue: start'); + $interval = ((get_config('system','delivery_interval') === false) ? 2 : intval(get_config('system','delivery_interval'))); + + $r = q("select * from deliverq where 1"); + if(count($r)) { + foreach($r as $rr) { + logger('queue: deliverq'); + proc_run('php','include/delivery.php',$rr['cmd'],$rr['item'],$rr['contact']); + if($interval) + @time_sleep_until(microtime(true) + (float) $interval); + } + } + $r = q("SELECT `queue`.*, `contact`.`name`, `contact`.`uid` FROM `queue` LEFT JOIN `contact` ON `queue`.`cid` = `contact`.`id` WHERE `queue`.`created` < UTC_TIMESTAMP() - INTERVAL 3 DAY"); diff --git a/include/text.php b/include/text.php index 66447069e..78eae145e 100644 --- a/include/text.php +++ b/include/text.php @@ -539,22 +539,30 @@ function contact_block() { $total = intval($r[0]['total']); } if(! $total) { - $o .= '<h4 class="contact-h4">' . t('No contacts') . '</h4>'; - return $o; - } - $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 and `pending` = 0 ORDER BY RAND() LIMIT %d", - intval($a->profile['uid']), - intval($shown) - ); - if(count($r)) { - $o .= '<h4 class="contact-h4">' . sprintf( tt('%d Contact','%d Contacts', $total),$total) . '</h4><div id="contact-block">'; - foreach($r as $rr) { - $o .= micropro($rr,true,'mpfriend'); - } - $o .= '</div><div id="contact-block-end"></div>'; - $o .= '<div id="viewcontacts"><a id="viewcontacts-link" href="viewcontacts/' . $a->profile['nickname'] . '">' . t('View Contacts') . '</a></div>'; + $contacts = t('No contacts'); + $micropro = Null; + } else { + $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 and `pending` = 0 ORDER BY RAND() LIMIT %d", + intval($a->profile['uid']), + intval($shown) + ); + if(count($r)) { + $contacts = sprintf( tt('%d Contact','%d Contacts', $total),$total); + $micropro = Array(); + foreach($r as $rr) { + $micropro[] = micropro($rr,true,'mpfriend'); + } + } } + + $tpl = get_markup_template('contact_block.tpl'); + $o = replace_macros($tpl, array( + '$contacts' => $contacts, + '$nickname' => $a->profile['nickname'], + '$viewcontacts' => t('View Contacts'), + '$micropro' => $micropro, + )); $arr = array('contacts' => $r, 'output' => $o); @@ -602,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; }} @@ -112,10 +112,10 @@ if(! x($_SESSION,'authenticated')) header('X-Account-Management-Status: none'); if(! x($_SESSION,'sysmsg')) - $_SESSION['sysmsg'] = ''; + $_SESSION['sysmsg'] = array(); if(! x($_SESSION,'sysmsg_info')) - $_SESSION['sysmsg_info'] = ''; + $_SESSION['sysmsg_info'] = array(); /* * check_config() is responsible for running update scripts. These automatically @@ -262,7 +262,7 @@ if(isset($homebase)) // now that we've been through the module content, see if the page reported // a permission problem and if so, a 403 response would seem to be in order. -if(stristr($_SESSION['sysmsg'], t('Permission denied'))) { +if(stristr( implode("",$_SESSION['sysmsg']), t('Permission denied'))) { header($_SERVER["SERVER_PROTOCOL"] . ' 403 ' . t('Permission denied.')); } @@ -272,7 +272,7 @@ if(stristr($_SESSION['sysmsg'], t('Permission denied'))) { * */ -if(x($_SESSION,'sysmsg')) { +/*if(x($_SESSION,'sysmsg')) { $a->page['content'] = "<div id=\"sysmsg\" class=\"error-message\">{$_SESSION['sysmsg']}</div>\r\n" . ((x($a->page,'content')) ? $a->page['content'] : ''); $_SESSION['sysmsg']=""; @@ -283,7 +283,7 @@ if(x($_SESSION,'sysmsg_info')) { . ((x($a->page,'content')) ? $a->page['content'] : ''); $_SESSION['sysmsg_info']=""; unset($_SESSION['sysmsg_info']); -} +}*/ diff --git a/include/acl.js b/js/acl.js index 82b631ee9..82b631ee9 100644 --- a/include/acl.js +++ b/js/acl.js diff --git a/include/ajaxupload.js b/js/ajaxupload.js index 67c4a56fb..67c4a56fb 100644 --- a/include/ajaxupload.js +++ b/js/ajaxupload.js diff --git a/include/country.js b/js/country.js index 07ab29ba6..07ab29ba6 100644 --- a/include/country.js +++ b/js/country.js diff --git a/include/jquery.htmlstream.js b/js/jquery.htmlstream.js index c62c538f7..c62c538f7 100644 --- a/include/jquery.htmlstream.js +++ b/js/jquery.htmlstream.js diff --git a/include/jquery.js b/js/jquery.js index 7c2430802..7c2430802 100644 --- a/include/jquery.js +++ b/js/jquery.js diff --git a/include/main.js b/js/main.js index 83dcc720c..328b1f231 100644 --- a/include/main.js +++ b/js/main.js @@ -34,7 +34,16 @@ msie = $.browser.msie ; - /* setup navbar menus */ + /* setup tooltips */ + $("a,.tt").each(function(){ + var e = $(this); + var pos="bottom"; + if (e.hasClass("tttop")) pos="top"; + if (e.hasClass("ttbottom")) pos="bottom"; + if (e.hasClass("ttleft")) pos="left"; + if (e.hasClass("ttright")) pos="right"; + e.tipTip({defaultPosition: pos}); + }); @@ -103,6 +112,16 @@ if(notif == 0) { notif = ''; $('#notify-update').removeClass('show') } else { $('#notify-update').addClass('show') } $('#notify-update').html(notif); + var eSysmsg = $(data).find('sysmsgs'); + eSysmsg.children("notice").each(function(){ + text = $(this).text(); + $.jGrowl(text, { sticky: true, theme: 'notice' }); + }); + eSysmsg.children("info").each(function(){ + text = $(this).text(); + $.jGrowl(text, { sticky: false, theme: 'info' }); + }); + }); diff --git a/library/jgrowl/README b/library/jgrowl/README new file mode 100644 index 000000000..3c94f7508 --- /dev/null +++ b/library/jgrowl/README @@ -0,0 +1,3 @@ +http://stanlemon.net/projects/jgrowl.html + +jGrowl is free and open source, it's distributed under the MIT and GPL licenses diff --git a/library/jgrowl/jquery.jgrowl.css b/library/jgrowl/jquery.jgrowl.css new file mode 100755 index 000000000..b4deb978c --- /dev/null +++ b/library/jgrowl/jquery.jgrowl.css @@ -0,0 +1,136 @@ + +div.jGrowl { + z-index: 9999; + color: #fff; + font-size: 12px; +} + +/** Special IE6 Style Positioning **/ +div.ie6 { + position: absolute; +} + +div.ie6.top-right { + right: auto; + bottom: auto; + left: expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); + top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); +} + +div.ie6.top-left { + left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); + top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); +} + +div.ie6.bottom-right { + left: expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); + top: expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); +} + +div.ie6.bottom-left { + left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); + top: expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); +} + +div.ie6.center { + left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); + top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); + width: 100%; +} + +/** Normal Style Positions **/ +div.jGrowl { + position: absolute; +} + +body > div.jGrowl { + position: fixed; +} + +div.jGrowl.top-left { + left: 0px; + top: 0px; +} + +div.jGrowl.top-right { + right: 0px; + top: 0px; +} + +div.jGrowl.bottom-left { + left: 0px; + bottom: 0px; +} + +div.jGrowl.bottom-right { + right: 0px; + bottom: 0px; +} + +div.jGrowl.center { + top: 0px; + width: 50%; + left: 25%; +} + +/** Cross Browser Styling **/ +div.center div.jGrowl-notification, div.center div.jGrowl-closer { + margin-left: auto; + margin-right: auto; +} + +div.jGrowl div.jGrowl-notification, div.jGrowl div.jGrowl-closer { + background-color: #000; + opacity: .85; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=85)"; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85); + zoom: 1; + width: 235px; + padding: 10px; + margin-top: 5px; + margin-bottom: 5px; + font-family: Tahoma, Arial, Helvetica, sans-serif; + font-size: 1em; + text-align: left; + display: none; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; +} + +div.jGrowl div.jGrowl-notification { + min-height: 40px; +} + +div.jGrowl div.jGrowl-notification, +div.jGrowl div.jGrowl-closer { + margin: 10px; +} + +div.jGrowl div.jGrowl-notification div.jGrowl-header { + font-weight: bold; + font-size: .85em; +} + +div.jGrowl div.jGrowl-notification div.jGrowl-close { + z-index: 99; + float: right; + font-weight: bold; + font-size: 1em; + cursor: pointer; +} + +div.jGrowl div.jGrowl-closer { + padding-top: 4px; + padding-bottom: 4px; + cursor: pointer; + font-size: .9em; + font-weight: bold; + text-align: center; +} + +/** Hide jGrowl when printing **/ +@media print { + div.jGrowl { + display: none; + } +} diff --git a/library/jgrowl/jquery.jgrowl_minimized.js b/library/jgrowl/jquery.jgrowl_minimized.js new file mode 100644 index 000000000..782898098 --- /dev/null +++ b/library/jgrowl/jquery.jgrowl_minimized.js @@ -0,0 +1,11 @@ +(function($){$.jGrowl=function(m,o){if($('#jGrowl').size()==0) +$('<div id="jGrowl"></div>').addClass((o&&o.position)?o.position:$.jGrowl.defaults.position).appendTo('body');$('#jGrowl').jGrowl(m,o);};$.fn.jGrowl=function(m,o){if($.isFunction(this.each)){var args=arguments;return this.each(function(){var self=this;if($(this).data('jGrowl.instance')==undefined){$(this).data('jGrowl.instance',$.extend(new $.fn.jGrowl(),{notifications:[],element:null,interval:null}));$(this).data('jGrowl.instance').startup(this);} +if($.isFunction($(this).data('jGrowl.instance')[m])){$(this).data('jGrowl.instance')[m].apply($(this).data('jGrowl.instance'),$.makeArray(args).slice(1));}else{$(this).data('jGrowl.instance').create(m,o);}});};};$.extend($.fn.jGrowl.prototype,{defaults:{pool:0,header:'',group:'',sticky:false,position:'top-right',glue:'after',theme:'default',themeState:'highlight',corners:'10px',check:250,life:3000,closeDuration:'normal',openDuration:'normal',easing:'swing',closer:true,closeTemplate:'×',closerTemplate:'<div>[ close all ]</div>',log:function(e,m,o){},beforeOpen:function(e,m,o){},afterOpen:function(e,m,o){},open:function(e,m,o){},beforeClose:function(e,m,o){},close:function(e,m,o){},animateOpen:{opacity:'show'},animateClose:{opacity:'hide'}},notifications:[],element:null,interval:null,create:function(message,o){var o=$.extend({},this.defaults,o);if(typeof o.speed!=='undefined'){o.openDuration=o.speed;o.closeDuration=o.speed;} +this.notifications.push({message:message,options:o});o.log.apply(this.element,[this.element,message,o]);},render:function(notification){var self=this;var message=notification.message;var o=notification.options;var notification=$('<div class="jGrowl-notification '+o.themeState+' ui-corner-all'+ +((o.group!=undefined&&o.group!='')?' '+o.group:'')+'">'+'<div class="jGrowl-close">'+o.closeTemplate+'</div>'+'<div class="jGrowl-header">'+o.header+'</div>'+'<div class="jGrowl-message">'+message+'</div></div>').data("jGrowl",o).addClass(o.theme).children('div.jGrowl-close').bind("click.jGrowl",function(){$(this).parent().trigger('jGrowl.close');}).parent();$(notification).bind("mouseover.jGrowl",function(){$('div.jGrowl-notification',self.element).data("jGrowl.pause",true);}).bind("mouseout.jGrowl",function(){$('div.jGrowl-notification',self.element).data("jGrowl.pause",false);}).bind('jGrowl.beforeOpen',function(){if(o.beforeOpen.apply(notification,[notification,message,o,self.element])!=false){$(this).trigger('jGrowl.open');}}).bind('jGrowl.open',function(){if(o.open.apply(notification,[notification,message,o,self.element])!=false){if(o.glue=='after'){$('div.jGrowl-notification:last',self.element).after(notification);}else{$('div.jGrowl-notification:first',self.element).before(notification);} +$(this).animate(o.animateOpen,o.openDuration,o.easing,function(){if($.browser.msie&&(parseInt($(this).css('opacity'),10)===1||parseInt($(this).css('opacity'),10)===0)) +this.style.removeAttribute('filter');if($(this).data("jGrowl")!=null) +$(this).data("jGrowl").created=new Date();$(this).trigger('jGrowl.afterOpen');});}}).bind('jGrowl.afterOpen',function(){o.afterOpen.apply(notification,[notification,message,o,self.element]);}).bind('jGrowl.beforeClose',function(){if(o.beforeClose.apply(notification,[notification,message,o,self.element])!=false) +$(this).trigger('jGrowl.close');}).bind('jGrowl.close',function(){$(this).data('jGrowl.pause',true);$(this).animate(o.animateClose,o.closeDuration,o.easing,function(){if($.isFunction(o.close)){if(o.close.apply(notification,[notification,message,o,self.element])!==false) +$(this).remove();}else{$(this).remove();}});}).trigger('jGrowl.beforeOpen');if(o.corners!=''&&$.fn.corner!=undefined)$(notification).corner(o.corners);if($('div.jGrowl-notification:parent',self.element).size()>1&&$('div.jGrowl-closer',self.element).size()==0&&this.defaults.closer!=false){$(this.defaults.closerTemplate).addClass('jGrowl-closer ui-state-highlight ui-corner-all').addClass(this.defaults.theme).appendTo(self.element).animate(this.defaults.animateOpen,this.defaults.speed,this.defaults.easing).bind("click.jGrowl",function(){$(this).siblings().trigger("jGrowl.beforeClose");if($.isFunction(self.defaults.closer)){self.defaults.closer.apply($(this).parent()[0],[$(this).parent()[0]]);}});};},update:function(){$(this.element).find('div.jGrowl-notification:parent').each(function(){if($(this).data("jGrowl")!=undefined&&$(this).data("jGrowl").created!=undefined&&($(this).data("jGrowl").created.getTime()+parseInt($(this).data("jGrowl").life))<(new Date()).getTime()&&$(this).data("jGrowl").sticky!=true&&($(this).data("jGrowl.pause")==undefined||$(this).data("jGrowl.pause")!=true)){$(this).trigger('jGrowl.beforeClose');}});if(this.notifications.length>0&&(this.defaults.pool==0||$(this.element).find('div.jGrowl-notification:parent').size()<this.defaults.pool)) +this.render(this.notifications.shift());if($(this.element).find('div.jGrowl-notification:parent').size()<2){$(this.element).find('div.jGrowl-closer').animate(this.defaults.animateClose,this.defaults.speed,this.defaults.easing,function(){$(this).remove();});}},startup:function(e){this.element=$(e).addClass('jGrowl').append('<div class="jGrowl-notification"></div>');this.interval=setInterval(function(){$(e).data('jGrowl.instance').update();},parseInt(this.defaults.check));if($.browser.msie&&parseInt($.browser.version)<7&&!window["XMLHttpRequest"]){$(this.element).addClass('ie6');}},shutdown:function(){$(this.element).removeClass('jGrowl').find('div.jGrowl-notification').remove();clearInterval(this.interval);},close:function(){$(this.element).find('div.jGrowl-notification').each(function(){$(this).trigger('jGrowl.beforeClose');});}});$.jGrowl.defaults=$.fn.jGrowl.prototype.defaults;})(jQuery);
\ No newline at end of file diff --git a/library/stanlemon-jgrowl-tip.tar.gz b/library/stanlemon-jgrowl-tip.tar.gz Binary files differnew file mode 100644 index 000000000..07a5fb097 --- /dev/null +++ b/library/stanlemon-jgrowl-tip.tar.gz diff --git a/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js index db676cd90..789e75c39 100644 --- a/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js @@ -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\" />");
diff --git a/library/tiptip/README b/library/tiptip/README new file mode 100644 index 000000000..a83cfba3e --- /dev/null +++ b/library/tiptip/README @@ -0,0 +1,30 @@ +http://code.drewwilson.com/entry/tiptip-jquery-plugin + +License +This TipTip jQuery plug-in is dual licensed under the MIT and GPL licenses. + + +ChangeLog +Version 1.3 (Mar. 23, 2010) + + Added defaultPoistion option that enables you to set the default orientation TipTip should show up as. + Added attribute option that enables you to set the HTML attribute that TipTip should pull it's content from. + Added content option. This will be used as the content for the TipTip and will overwrite any content pulled form any HTML attribute. + Added activation option enables you to specify the jQuery method TipTip is activated with: hover, focus or click. Now you can use TipTip on forms and for validation! + Added keepAlive option that when set to true the TipTip will only fadeout when you hover over the actual TipTip and then hover off of it. Allowing for hyperlinks inside your TipTip content to be accessible. + +Version 1.2 (Jan. 13, 2010) + + Added HTML support with Tip Tip. You can now add HTML into the Title attribute (though this is not recommended if you want strictly valid code). + Tightened up spacing margins in JS. + Updated margins in CSS file. + +Version 1.1 (Jan. 03, 2010) + + Swapped dynamically added orientation CSS class names ('_left' & '_right') to make better sense. + Added in some tighter spacing for the tooltip in JS. + +Version 1.0 (Jan. 02, 2010) + + Initial release. + diff --git a/library/tiptip/jquery.tipTip.minified.js b/library/tiptip/jquery.tipTip.minified.js new file mode 100644 index 000000000..cdf3a892b --- /dev/null +++ b/library/tiptip/jquery.tipTip.minified.js @@ -0,0 +1,21 @@ + /* + * TipTip + * Copyright 2010 Drew Wilson + * www.drewwilson.com + * code.drewwilson.com/entry/tiptip-jquery-plugin + * + * Version 1.3 - Updated: Mar. 23, 2010 + * + * This Plug-In will create a custom tooltip to replace the default + * browser tooltip. It is extremely lightweight and very smart in + * that it detects the edges of the browser window and will make sure + * the tooltip stays within the current window size. As a result the + * tooltip will adjust itself to be displayed above, below, to the left + * or to the right depending on what is necessary to stay within the + * browser window. It is completely customizable as well via CSS. + * + * This TipTip jQuery plug-in is dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + */ +(function($){$.fn.tipTip=function(options){var defaults={activation:"hover",keepAlive:false,maxWidth:"200px",edgeOffset:3,defaultPosition:"bottom",delay:400,fadeIn:200,fadeOut:200,attribute:"title",content:false,enter:function(){},exit:function(){}};var opts=$.extend(defaults,options);if($("#tiptip_holder").length<=0){var tiptip_holder=$('<div id="tiptip_holder" style="max-width:'+opts.maxWidth+';"></div>');var tiptip_content=$('<div id="tiptip_content"></div>');var tiptip_arrow=$('<div id="tiptip_arrow"></div>');$("body").append(tiptip_holder.html(tiptip_content).prepend(tiptip_arrow.html('<div id="tiptip_arrow_inner"></div>')))}else{var tiptip_holder=$("#tiptip_holder");var tiptip_content=$("#tiptip_content");var tiptip_arrow=$("#tiptip_arrow")}return this.each(function(){var org_elem=$(this);if(opts.content){var org_title=opts.content}else{var org_title=org_elem.attr(opts.attribute)}if(org_title!=""){if(!opts.content){org_elem.removeAttr(opts.attribute)}var timeout=false;if(opts.activation=="hover"){org_elem.hover(function(){active_tiptip()},function(){if(!opts.keepAlive){deactive_tiptip()}});if(opts.keepAlive){tiptip_holder.hover(function(){},function(){deactive_tiptip()})}}else if(opts.activation=="focus"){org_elem.focus(function(){active_tiptip()}).blur(function(){deactive_tiptip()})}else if(opts.activation=="click"){org_elem.click(function(){active_tiptip();return false}).hover(function(){},function(){if(!opts.keepAlive){deactive_tiptip()}});if(opts.keepAlive){tiptip_holder.hover(function(){},function(){deactive_tiptip()})}}function active_tiptip(){opts.enter.call(this);tiptip_content.html(org_title);tiptip_holder.hide().removeAttr("class").css("margin","0");tiptip_arrow.removeAttr("style");var top=parseInt(org_elem.offset()['top']);var left=parseInt(org_elem.offset()['left']);var org_width=parseInt(org_elem.outerWidth());var org_height=parseInt(org_elem.outerHeight());var tip_w=tiptip_holder.outerWidth();var tip_h=tiptip_holder.outerHeight();var w_compare=Math.round((org_width-tip_w)/2);var h_compare=Math.round((org_height-tip_h)/2);var marg_left=Math.round(left+w_compare);var marg_top=Math.round(top+org_height+opts.edgeOffset);var t_class="";var arrow_top="";var arrow_left=Math.round(tip_w-12)/2;if(opts.defaultPosition=="bottom"){t_class="_bottom"}else if(opts.defaultPosition=="top"){t_class="_top"}else if(opts.defaultPosition=="left"){t_class="_left"}else if(opts.defaultPosition=="right"){t_class="_right"}var right_compare=(w_compare+left)<parseInt($(window).scrollLeft());var left_compare=(tip_w+left)>parseInt($(window).width());if((right_compare&&w_compare<0)||(t_class=="_right"&&!left_compare)||(t_class=="_left"&&left<(tip_w+opts.edgeOffset+5))){t_class="_right";arrow_top=Math.round(tip_h-13)/2;arrow_left=-12;marg_left=Math.round(left+org_width+opts.edgeOffset);marg_top=Math.round(top+h_compare)}else if((left_compare&&w_compare<0)||(t_class=="_left"&&!right_compare)){t_class="_left";arrow_top=Math.round(tip_h-13)/2;arrow_left=Math.round(tip_w);marg_left=Math.round(left-(tip_w+opts.edgeOffset+5));marg_top=Math.round(top+h_compare)}var top_compare=(top+org_height+opts.edgeOffset+tip_h+8)>parseInt($(window).height()+$(window).scrollTop());var bottom_compare=((top+org_height)-(opts.edgeOffset+tip_h+8))<0;if(top_compare||(t_class=="_bottom"&&top_compare)||(t_class=="_top"&&!bottom_compare)){if(t_class=="_top"||t_class=="_bottom"){t_class="_top"}else{t_class=t_class+"_top"}arrow_top=tip_h;marg_top=Math.round(top-(tip_h+5+opts.edgeOffset))}else if(bottom_compare|(t_class=="_top"&&bottom_compare)||(t_class=="_bottom"&&!top_compare)){if(t_class=="_top"||t_class=="_bottom"){t_class="_bottom"}else{t_class=t_class+"_bottom"}arrow_top=-12;marg_top=Math.round(top+org_height+opts.edgeOffset)}if(t_class=="_right_top"||t_class=="_left_top"){marg_top=marg_top+5}else if(t_class=="_right_bottom"||t_class=="_left_bottom"){marg_top=marg_top-5}if(t_class=="_left_top"||t_class=="_left_bottom"){marg_left=marg_left+5}tiptip_arrow.css({"margin-left":arrow_left+"px","margin-top":arrow_top+"px"});tiptip_holder.css({"margin-left":marg_left+"px","margin-top":marg_top+"px"}).attr("class","tip"+t_class);if(timeout){clearTimeout(timeout)}timeout=setTimeout(function(){tiptip_holder.stop(true,true).fadeIn(opts.fadeIn)},opts.delay)}function deactive_tiptip(){opts.exit.call(this);if(timeout){clearTimeout(timeout)}tiptip_holder.fadeOut(opts.fadeOut)}}})}})(jQuery);
\ No newline at end of file diff --git a/library/tiptip/tipTip.css b/library/tiptip/tipTip.css new file mode 100644 index 000000000..4fb95d376 --- /dev/null +++ b/library/tiptip/tipTip.css @@ -0,0 +1,113 @@ +/* TipTip CSS - Version 1.2 */ + +#tiptip_holder { + display: none; + position: absolute; + top: 0; + left: 0; + z-index: 99999; +} + +#tiptip_holder.tip_top { + padding-bottom: 5px; +} + +#tiptip_holder.tip_bottom { + padding-top: 5px; +} + +#tiptip_holder.tip_right { + padding-left: 5px; +} + +#tiptip_holder.tip_left { + padding-right: 5px; +} + +#tiptip_content { + font-size: 11px; + color: #fff; + text-shadow: 0 0 2px #000; + padding: 4px 8px; + border: 1px solid rgba(255,255,255,0.25); + background-color: rgb(25,25,25); + background-color: rgba(25,25,25,0.92); + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(transparent), to(#000)); + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + box-shadow: 0 0 3px #555; + -webkit-box-shadow: 0 0 3px #555; + -moz-box-shadow: 0 0 3px #555; +} + +#tiptip_arrow, #tiptip_arrow_inner { + position: absolute; + border-color: transparent; + border-style: solid; + border-width: 6px; + height: 0; + width: 0; +} + +#tiptip_holder.tip_top #tiptip_arrow { + border-top-color: #fff; + border-top-color: rgba(255,255,255,0.35); +} + +#tiptip_holder.tip_bottom #tiptip_arrow { + border-bottom-color: #fff; + border-bottom-color: rgba(255,255,255,0.35); +} + +#tiptip_holder.tip_right #tiptip_arrow { + border-right-color: #fff; + border-right-color: rgba(255,255,255,0.35); +} + +#tiptip_holder.tip_left #tiptip_arrow { + border-left-color: #fff; + border-left-color: rgba(255,255,255,0.35); +} + +#tiptip_holder.tip_top #tiptip_arrow_inner { + margin-top: -7px; + margin-left: -6px; + border-top-color: rgb(25,25,25); + border-top-color: rgba(25,25,25,0.92); +} + +#tiptip_holder.tip_bottom #tiptip_arrow_inner { + margin-top: -5px; + margin-left: -6px; + border-bottom-color: rgb(25,25,25); + border-bottom-color: rgba(25,25,25,0.92); +} + +#tiptip_holder.tip_right #tiptip_arrow_inner { + margin-top: -6px; + margin-left: -5px; + border-right-color: rgb(25,25,25); + border-right-color: rgba(25,25,25,0.92); +} + +#tiptip_holder.tip_left #tiptip_arrow_inner { + margin-top: -6px; + margin-left: -7px; + border-left-color: rgb(25,25,25); + border-left-color: rgba(25,25,25,0.92); +} + +/* Webkit Hacks */ +@media screen and (-webkit-min-device-pixel-ratio:0) { + #tiptip_content { + padding: 4px 8px 5px 8px; + background-color: rgba(45,45,45,0.88); + } + #tiptip_holder.tip_bottom #tiptip_arrow_inner { + border-bottom-color: rgba(45,45,45,0.88); + } + #tiptip_holder.tip_top #tiptip_arrow_inner { + border-top-color: rgba(20,20,20,0.92); + } +}
\ No newline at end of file diff --git a/mod/admin.php b/mod/admin.php index 7799e64ab..da561d554 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -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')){ @@ -540,7 +540,7 @@ function admin_page_plugins(&$a){ } $admin_form=""; - if (in_array($plugin, $a->plugins_admin)){ + if (is_array($a->plugins_admin) && in_array($plugin, $a->plugins_admin)){ @require_once("addon/$plugin/$plugin.php"); $func = $plugin.'_plugin_admin'; $func($a, $admin_form); @@ -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 = ''; diff --git a/mod/apps.php b/mod/apps.php index 7a0a3f59e..8049b45fb 100644 --- a/mod/apps.php +++ b/mod/apps.php @@ -1,15 +1,18 @@ <?php - function apps_content(&$a) { + $title = t('Applications'); - $o .= '<h3>' . t('Applications') . '</h3>'; - - if($a->apps) - $o .= $a->apps; - else + if(count($a->apps)==0) notice( t('No installed applications.') . EOL); - return $o; -}
\ No newline at end of file + $tpl = get_markup_template("apps.tpl"); + return replace_macros($tpl, array( + '$title' => $title, + '$apps' => $a->apps, + )); + + + +} diff --git a/mod/contacts.php b/mod/contacts.php index 3b2b16acf..4decc5042 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -87,25 +87,15 @@ function contacts_post(&$a) { $priority = intval($_POST['poll']); - if($priority == (-1)) - if($priority > 5 || $priority < 0) $priority = 0; - $rating = intval($_POST['reputation']); - if($rating > 5 || $rating < 0) - $rating = 0; - - $reason = notags(trim($_POST['reason'])); - $info = escape_tags(trim($_POST['info'])); - $r = q("UPDATE `contact` SET `profile-id` = %d, `priority` = %d , `rating` = %d, `reason` = '%s', `info` = '%s' + $r = q("UPDATE `contact` SET `profile-id` = %d, `priority` = %d , `info` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($profile_id), intval($priority), - intval($rating), - dbesc($reason), dbesc($info), intval($contact_id), intval(local_user()) @@ -277,8 +267,6 @@ function contacts_content(&$a) { $sparkle = ''; } - $grps = ''; - $insecure = '<div id="profile-edit-insecure"><p><img src="images/unlock_icon.gif" alt="' . t('Privacy Unavailable') . '" /> ' . t('Private communications are not available for this contact.') . '</p></div>'; @@ -313,7 +301,6 @@ function contacts_content(&$a) { '$lblcrepair' => t("Repair contact URL settings \x28WARNING: Advanced\x29"), '$lblrecent' => t('View conversations'), '$lblsuggest' => $lblsuggest, - '$grps' => $grps, '$delete' => t('Delete contact'), '$nettype' => $nettype, '$poll_interval' => contact_poll_interval($r[0]['priority'],(! $poll_enabled)), @@ -330,9 +317,6 @@ function contacts_content(&$a) { '$info' => $r[0]['info'], '$blocked' => (($r[0]['blocked']) ? '<div id="block-message">' . t('Currently blocked') . '</div>' : ''), '$ignored' => (($r[0]['readonly']) ? '<div id="ignore-message">' . t('Currently ignored') . '</div>' : ''), - '$rating' => contact_reputation($r[0]['rating']), - '$reason' => $r[0]['reason'], - '$groups' => '', // group_selector(), '$photo' => $r[0]['photo'], '$name' => $r[0]['name'], '$dir_icon' => $dir_icon, diff --git a/mod/crepair.php b/mod/crepair.php index 4babd6bf7..afa45e881 100644 --- a/mod/crepair.php +++ b/mod/crepair.php @@ -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') )); diff --git a/mod/item.php b/mod/item.php index ef0b232d5..b4ec7666f 100644 --- a/mod/item.php +++ b/mod/item.php @@ -15,6 +15,8 @@ * */ +require_once('include/crypto.php'); + function item_post(&$a) { if((! local_user()) && (! remote_user())) @@ -330,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 */ @@ -351,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']; @@ -402,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) ); @@ -506,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; /** @@ -548,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']), @@ -582,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", @@ -674,6 +688,27 @@ function item_post(&$a) { pop_lang(); } + + // We won't be able to sign Diaspora comments for authenticated visitors - we don't have their private key + + if($self) { + require_once('include/bb2diaspora.php'); + $signed_body = html_entity_decode(bb2diaspora($datarray['body'])); + $myaddr = $a->user['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3); + if($datarray['verb'] === ACTIVITY_LIKE) + $signed_text = $datarray['guid'] . ';' . 'Post' . ';' . $parent_item['guid'] . ';' . 'true' . ';' . $myaddr; + else + $signed_text = $datarray['guid'] . ';' . $parent_item['guid'] . ';' . $signed_body . ';' . $myaddr; + + $authorsig = base64_encode(rsa_sign($signed_text,$a->user['prvkey'],'sha')); + + q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", + intval($post_id), + dbesc($signed_text), + dbesc(base64_encode($authorsig)), + dbesc($myaddr) + ); + } } else { $parent = $post_id; @@ -799,6 +834,12 @@ function item_post(&$a) { } } + + + + + + logger('post_complete'); // figure out how to return, depending on from whence we came diff --git a/mod/localtime.php b/mod/localtime.php new file mode 100644 index 000000000..f5ecf3a96 --- /dev/null +++ b/mod/localtime.php @@ -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; + +}
\ No newline at end of file diff --git a/mod/network.php b/mod/network.php index cf4c994f0..3c8125303 100644 --- a/mod/network.php +++ b/mod/network.php @@ -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) { @@ -188,7 +240,7 @@ function network_content(&$a, $update = 0) { if(count($r)) { $sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` $star_sql AND `contact-id` IN ( " . intval($cid) . " )) "; $o = '<h2>' . t('Contact: ') . $r[0]['name'] . '</h2>' . $o; - if($r[0]['network'] !== NETWORK_MAIL && $r[0]['network'] !== NETWORK_DFRN && $r[0]['network'] !== NETWORK_FACEBOOK && $r[0]['writable'] && (! get_pconfig(local_user(),'system','nowarn_insecure'))) { + if($r[0]['network'] !== NETWORK_MAIL && $r[0]['network'] !== NETWORK_DFRN && $r[0]['network'] !== NETWORK_FACEBOOK && $r[0]['network'] !== NETWORK_DIASPORA && $r[0]['writable'] && (! get_pconfig(local_user(),'system','nowarn_insecure'))) { notice( t('Private messages to this person are at risk of public disclosure.') . EOL); } diff --git a/mod/parse_url.php b/mod/parse_url.php index 9bb0bc464..79c336ddc 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -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(); } diff --git a/mod/photos.php b/mod/photos.php index cb13b7603..b74ca85d7 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -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) ); diff --git a/mod/ping.php b/mod/ping.php index 8a3d284af..38a32744d 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -159,8 +159,26 @@ function ping_init(&$a) { } - echo " </notif> - </result> + echo " </notif>"; + + echo " <sysmsgs>"; + if(x($_SESSION,'sysmsg')){ + foreach ($_SESSION['sysmsg'] as $m){ + echo "<notice>".($m)."</notice>"; + } + $_SESSION['sysmsg']=array(); + unset($_SESSION['sysmsg']); + } + if(x($_SESSION,'sysmsg_info')){ + foreach ($_SESSION['sysmsg_info'] as $m){ + echo "<info>".($m)."</info>"; + } + $_SESSION['sysmsg_info']=array(); + unset($_SESSION['sysmsg_info']); + } + + echo " </sysmsgs>"; + echo"</result> "; killme(); diff --git a/update.php b/update.php index ef036008f..f94e78d72 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ <?php -define( 'UPDATE_VERSION' , 1082 ); +define( 'UPDATE_VERSION' , 1087 ); /** * @@ -676,8 +676,16 @@ function update_1080() { } function update_1081() { - q("ALTER TABLE `photo` ADD `guid` CHAR( 64 ) NOT NULL AFTER `contact`id`, + // there was a typo in update 1081 so it was corrected and moved up to 1082 +} + +function update_1082() { + q("ALTER TABLE `photo` ADD `guid` CHAR( 64 ) NOT NULL AFTER `contact-id`, ADD INDEX ( `guid` ) "); + // make certain the following code is only executed once + $r = q("select `id` from `photo` where `guid` != '' limit 1"); + if($r && count($r)) + return; $r = q("SELECT distinct(`resource-id`) FROM `photo` WHERE 1 group by `id`"); if(count($r)) { foreach($r as $rr) { @@ -689,3 +697,32 @@ function update_1081() { } } } + +function update_1083() { + q("CREATE TABLE IF NOT EXISTS `deliverq` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , + `cmd` CHAR( 32 ) NOT NULL , + `item` INT NOT NULL , + `contact` INT NOT NULL + ) 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` "); +} + diff --git a/view/admin_remoteupdate.tpl b/view/admin_remoteupdate.tpl index 0c15692c2..41ecfaf85 100644 --- a/view/admin_remoteupdate.tpl +++ b/view/admin_remoteupdate.tpl @@ -1,4 +1,4 @@ -<script src="include/jquery.htmlstream.js"></script> +<script src="js/jquery.htmlstream.js"></script> <script> /* ajax updater */ function updateEnd(data){ diff --git a/view/apps.tpl b/view/apps.tpl new file mode 100644 index 000000000..61ea9ee5f --- /dev/null +++ b/view/apps.tpl @@ -0,0 +1,7 @@ +<h3>$title</h3> + +<ul> + {{ for $apps as $ap }} + <li><a href="$ap.url">$ap.name</a></li> + {{ endfor }} +</ul> diff --git a/view/contact_block.tpl b/view/contact_block.tpl new file mode 100644 index 000000000..eb46c6c43 --- /dev/null +++ b/view/contact_block.tpl @@ -0,0 +1,11 @@ +<div id="contact-block"> +<h4 class="contact-block-h4">$contacts</h4> +{{ if $micropro }} + <a class="allcontact-link" href="viewcontacts/$nickname">$viewcontacts</a> + <div class='contact-block-content'> + {{ for $micropro as $m }} + $m + {{ endfor }} + </div> +{{ endif }} +</div> diff --git a/view/contact_edit.tpl b/view/contact_edit.tpl index 0ee88d372..86ebb5608 100644 --- a/view/contact_edit.tpl +++ b/view/contact_edit.tpl @@ -45,8 +45,6 @@ $insecure $blocked $ignored -$grps - <div id="view-recent-wrapper"><a href="network/?cid=$contact_id" id="contact-view-recent">$lblrecent</a></div> $lblsuggest @@ -68,24 +66,5 @@ $profile_select <input class="contact-edit-submit" type="submit" name="submit" value="$submit" /> - -<div id="contact-edit-rating-wrapper"> -<h4>$lbl_rep1</h4> -<p> -$lbl_rep2 $lbl_rep3 -</p> -<div id="contact-edit-rating-select-wrapper"> -$rating -</div> -<div id="contact-edit-rating-explain"> -<p> -$lbl_rep4 -</p> -<textarea id="contact-edit-rating-text" name="reason" rows="3" cols="64" >$reason</textarea> -</div> -</div> -$groups - -<input class="contact-edit-submit" type="submit" name="submit" value="$submit" /> </form> </div> diff --git a/view/crepair.tpl b/view/crepair.tpl index 5870bac60..c73fd0fdf 100644 --- a/view/crepair.tpl +++ b/view/crepair.tpl @@ -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> diff --git a/view/cs/htconfig.tpl b/view/cs/htconfig.tpl index 15fe8402b..dca34f482 100644 --- a/view/cs/htconfig.tpl +++ b/view/cs/htconfig.tpl @@ -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 diff --git a/view/cs/lostpass_eml.tpl b/view/cs/lostpass_eml.tpl index b9ca68ba6..05042ddce 100644 --- a/view/cs/lostpass_eml.tpl +++ b/view/cs/lostpass_eml.tpl @@ -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, diff --git a/view/cs/mail_received_html_body_eml.tpl b/view/cs/mail_received_html_body_eml.tpl index 0909b450c..427c6c98d 100644 --- a/view/cs/mail_received_html_body_eml.tpl +++ b/view/cs/mail_received_html_body_eml.tpl @@ -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> diff --git a/view/cs/messages.po b/view/cs/messages.po index ac83cca4e..82f6f2fb9 100644 --- a/view/cs/messages.po +++ b/view/cs/messages.po @@ -2,13 +2,13 @@ # Copyright (C) 2010, 2011 Mike Macgirvin # This file is distributed under the same license as the Friendika package. # -# Michal Å upler <msupler@gmail.com>, 2011, 2011.0 +# Michal Å upler <msupler@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: friendika\n" "Report-Msgid-Bugs-To: http://bugs.friendika.com/\n" -"POT-Creation-Date: 2011-05-26 06:46-0700\n" -"PO-Revision-Date: 2011-05-29 22:49+0000\n" +"POT-Creation-Date: 2011-08-14 21:17-0700\n" +"PO-Revision-Date: 2011-09-03 04:29+0000\n" "Last-Translator: michal_s <msupler@gmail.com>\n" "Language-Team: Czech (http://www.transifex.net/projects/p/friendika/team/cs/)\n" "MIME-Version: 1.0\n" @@ -23,33 +23,34 @@ msgstr "PÅ™ÃspÄ›vek úspěšnÄ› odeslán" #: ../../mod/crepair.php:42 msgid "Contact settings applied." -msgstr "Opravit nastavenà kontaktu" +msgstr "Nastavenà kontaktu zmÄ›nÄ›no" #: ../../mod/crepair.php:44 msgid "Contact update failed." msgstr "Aktualizace kontaktu selhala." #: ../../mod/crepair.php:54 ../../mod/wall_attach.php:43 -#: ../../mod/photos.php:89 ../../mod/photos.php:802 ../../mod/editpost.php:10 -#: ../../mod/install.php:93 ../../mod/notifications.php:56 -#: ../../mod/contacts.php:106 ../../mod/settings.php:15 -#: ../../mod/settings.php:20 ../../mod/settings.php:251 -#: ../../mod/manage.php:75 ../../mod/network.php:6 ../../mod/notes.php:20 -#: ../../mod/attach.php:64 ../../mod/group.php:19 +#: ../../mod/fsuggest.php:78 ../../mod/events.php:102 ../../mod/photos.php:122 +#: ../../mod/photos.php:849 ../../mod/editpost.php:10 ../../mod/install.php:96 +#: ../../mod/notifications.php:62 ../../mod/contacts.php:132 +#: ../../mod/settings.php:41 ../../mod/settings.php:46 +#: ../../mod/settings.php:305 ../../mod/manage.php:75 ../../mod/network.php:6 +#: ../../mod/notes.php:20 ../../mod/attach.php:33 ../../mod/group.php:19 #: ../../mod/viewcontacts.php:21 ../../mod/register.php:27 -#: ../../mod/regmod.php:18 ../../mod/item.php:57 ../../mod/item.php:801 +#: ../../mod/regmod.php:111 ../../mod/item.php:110 #: ../../mod/profile_photo.php:19 ../../mod/profile_photo.php:133 #: ../../mod/profile_photo.php:144 ../../mod/profile_photo.php:155 -#: ../../mod/message.php:8 ../../mod/message.php:116 +#: ../../mod/message.php:8 ../../mod/message.php:116 ../../mod/admin.php:10 #: ../../mod/wall_upload.php:42 ../../mod/follow.php:8 -#: ../../mod/display.php:138 ../../mod/profiles.php:7 -#: ../../mod/profiles.php:230 ../../mod/invite.php:13 ../../mod/invite.php:54 -#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:242 -#: ../../index.php:256 +#: ../../mod/display.php:108 ../../mod/profiles.php:7 +#: ../../mod/profiles.php:226 ../../mod/invite.php:13 ../../mod/invite.php:81 +#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:308 +#: ../../include/items.php:1930 ../../index.php:266 msgid "Permission denied." msgstr "PÅ™Ãstup odmÃtnut." -#: ../../mod/crepair.php:68 ../../mod/contacts.php:214 +#: ../../mod/crepair.php:68 ../../mod/fsuggest.php:20 +#: ../../mod/fsuggest.php:92 ../../mod/contacts.php:240 #: ../../mod/dfrn_confirm.php:114 msgid "Contact not found." msgstr "Kontakt nenalezen." @@ -70,9 +71,11 @@ msgstr "" msgid "" "Please use your browser 'Back' button <strong>now</strong> if you are " "uncertain what to do on this page." -msgstr "Aktualizace kontaktu selhala" +msgstr "" +"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." -#: ../../mod/crepair.php:85 +#: ../../mod/crepair.php:85 ../../mod/admin.php:464 ../../mod/admin.php:473 msgid "Name" msgstr "Jméno" @@ -98,25 +101,27 @@ msgstr "NotifikaÄnà URL adresa" #: ../../mod/crepair.php:91 msgid "Poll/Feed URL" -msgstr "" -"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>" - -#: ../../mod/crepair.php:100 ../../mod/photos.php:830 ../../mod/photos.php:887 -#: ../../mod/photos.php:1095 ../../mod/photos.php:1135 -#: ../../mod/photos.php:1174 ../../mod/photos.php:1205 -#: ../../mod/install.php:133 ../../mod/contacts.php:264 -#: ../../mod/settings.php:426 ../../mod/manage.php:106 ../../mod/group.php:76 -#: ../../mod/group.php:159 ../../mod/profiles.php:383 ../../mod/invite.php:68 -#: ../../addon/facebook/facebook.php:289 -#: ../../addon/randplace/randplace.php:179 ../../addon/oembed/oembed.php:49 -#: ../../addon/statusnet/statusnet.php:216 -#: ../../addon/statusnet/statusnet.php:230 -#: ../../addon/statusnet/statusnet.php:256 -#: ../../addon/statusnet/statusnet.php:263 -#: ../../addon/statusnet/statusnet.php:285 ../../addon/twitter/twitter.php:156 -#: ../../addon/twitter/twitter.php:175 ../../include/conversation.php:383 +msgstr "Poll/Feed URL adresa" + +#: ../../mod/crepair.php:100 ../../mod/fsuggest.php:107 +#: ../../mod/events.php:333 ../../mod/photos.php:877 ../../mod/photos.php:934 +#: ../../mod/photos.php:1144 ../../mod/photos.php:1184 +#: ../../mod/photos.php:1223 ../../mod/photos.php:1254 +#: ../../mod/install.php:137 ../../mod/contacts.php:296 +#: ../../mod/settings.php:482 ../../mod/manage.php:106 ../../mod/group.php:84 +#: ../../mod/group.php:167 ../../mod/admin.php:298 ../../mod/admin.php:461 +#: ../../mod/admin.php:587 ../../mod/admin.php:652 ../../mod/profiles.php:372 +#: ../../mod/invite.php:106 ../../addon/facebook/facebook.php:366 +#: ../../addon/randplace/randplace.php:178 +#: ../../addon/impressum/impressum.php:69 ../../addon/oembed/oembed.php:41 +#: ../../addon/statusnet/statusnet.php:274 +#: ../../addon/statusnet/statusnet.php:288 +#: ../../addon/statusnet/statusnet.php:314 +#: ../../addon/statusnet/statusnet.php:321 +#: ../../addon/statusnet/statusnet.php:343 +#: ../../addon/statusnet/statusnet.php:468 ../../addon/piwik/piwik.php:76 +#: ../../addon/twitter/twitter.php:171 ../../addon/twitter/twitter.php:194 +#: ../../addon/twitter/twitter.php:280 ../../include/conversation.php:409 msgid "Submit" msgstr "Odeslat" @@ -137,8 +142,112 @@ msgstr "Velikost souboru pÅ™esáhla limit %d" msgid "File upload failed." msgstr "Nahránà souboru se nezdaÅ™ilo." +#: ../../mod/fsuggest.php:63 +msgid "Friend suggestion sent." +msgstr "Návrhy přátelstvà odeslány " + +#: ../../mod/fsuggest.php:97 +msgid "Suggest Friends" +msgstr "NavrhnÄ›te přátelé" + +#: ../../mod/fsuggest.php:99 +#, php-format +msgid "Suggest a friend for %s" +msgstr "NavrhnÄ›te přátelé pro uživatele %s" + +#: ../../mod/events.php:112 ../../mod/photos.php:834 ../../mod/notes.php:46 +#: ../../mod/profile.php:116 +msgid "Status" +msgstr "Stav" + +#: ../../mod/events.php:113 ../../mod/photos.php:835 ../../mod/notes.php:47 +#: ../../mod/profperm.php:103 ../../mod/profile.php:117 +#: ../../include/profile_advanced.php:7 +msgid "Profile" +msgstr "Profil" + +#: ../../mod/events.php:114 ../../mod/photos.php:836 ../../mod/notes.php:48 +#: ../../mod/profile.php:118 +msgid "Photos" +msgstr "Fotografie" + +#: ../../mod/events.php:115 ../../mod/events.php:120 ../../mod/photos.php:837 +#: ../../mod/notes.php:49 ../../mod/profile.php:119 +msgid "Events" +msgstr "Události" + +#: ../../mod/events.php:116 ../../mod/photos.php:838 ../../mod/notes.php:50 +#: ../../mod/notes.php:55 ../../mod/profile.php:120 +msgid "Personal Notes" +msgstr "Osobnà poznámky" + +#: ../../mod/events.php:210 +msgid "Create New Event" +msgstr "VytvoÅ™it novou událost" + +#: ../../mod/events.php:213 +msgid "Previous" +msgstr "PÅ™edchozÃ" + +#: ../../mod/events.php:216 +msgid "Next" +msgstr "NásledujÃcÃ" + +#: ../../mod/events.php:223 +msgid "l, F j" +msgstr "l, F j" + +#: ../../mod/events.php:235 +msgid "Edit event" +msgstr "Editovat událost" + +#: ../../mod/events.php:237 ../../include/text.php:846 +msgid "link to source" +msgstr "odkaz na zdroj" + +#: ../../mod/events.php:305 +msgid "hour:minute" +msgstr "hodina:minuta" + +#: ../../mod/events.php:314 +msgid "Event details" +msgstr "Detaily události" + +#: ../../mod/events.php:315 +#, php-format +msgid "Format is %s %s. Starting date and Description are required." +msgstr "Formát je %s %s. Datum zahájenà a popis jsou povinné." + +#: ../../mod/events.php:316 +msgid "Event Starts:" +msgstr "Událost zaÄÃná:" + +#: ../../mod/events.php:319 +msgid "Finish date/time is not known or not relevant" +msgstr "Datum/Äas konce nenà zadán nebo nenà relevantnÃ" + +#: ../../mod/events.php:321 +msgid "Event Finishes:" +msgstr "Akce konÄÃ:" + +#: ../../mod/events.php:324 +msgid "Adjust for viewer timezone" +msgstr "Nastavit Äasové pásmo pro uživatele s právem pro ÄtenÃ" + +#: ../../mod/events.php:326 +msgid "Description:" +msgstr "Popis:" + +#: ../../mod/events.php:328 ../../include/event.php:37 ../../boot.php:868 +msgid "Location:" +msgstr "MÃsto:" + +#: ../../mod/events.php:330 +msgid "Share this event" +msgstr "SdÃlet tuto událost" + #: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94 -#: ../../mod/dfrn_request.php:644 ../../addon/js_upload/js_upload.php:41 +#: ../../mod/dfrn_request.php:644 ../../addon/js_upload/js_upload.php:45 msgid "Cancel" msgstr "ZruÅ¡it" @@ -163,205 +272,231 @@ msgstr "Odstranit" msgid "%s welcomes %s" msgstr "%s vÃtá %s " -#: ../../mod/photos.php:34 +#: ../../mod/photos.php:37 msgid "Photo Albums" msgstr "Fotoalba" -#: ../../mod/photos.php:38 ../../mod/photos.php:110 ../../mod/photos.php:810 -#: ../../mod/photos.php:879 ../../mod/photos.php:894 ../../mod/photos.php:1282 -#: ../../mod/photos.php:1293 ../../include/Photo.php:233 -#: ../../include/Photo.php:240 ../../include/Photo.php:247 -#: ../../include/items.php:1041 ../../include/items.php:1044 -#: ../../include/items.php:1047 +#: ../../mod/photos.php:45 ../../mod/photos.php:143 ../../mod/photos.php:857 +#: ../../mod/photos.php:926 ../../mod/photos.php:941 ../../mod/photos.php:1332 +#: ../../mod/photos.php:1344 msgid "Contact Photos" msgstr "Fotogalerie kontaktu" -#: ../../mod/photos.php:99 +#: ../../mod/photos.php:57 ../../mod/settings.php:9 +msgid "everybody" +msgstr "Žádost o pÅ™ipojenà selhala nebo byla zruÅ¡ena." + +#: ../../mod/photos.php:132 msgid "Contact information unavailable" msgstr "Kontakt byl zablokován" -#: ../../mod/photos.php:110 ../../mod/photos.php:535 ../../mod/photos.php:879 -#: ../../mod/photos.php:894 ../../mod/register.php:290 -#: ../../mod/register.php:297 ../../mod/register.php:304 +#: ../../mod/photos.php:143 ../../mod/photos.php:577 ../../mod/photos.php:926 +#: ../../mod/photos.php:941 ../../mod/register.php:316 +#: ../../mod/register.php:323 ../../mod/register.php:330 #: ../../mod/profile_photo.php:58 ../../mod/profile_photo.php:65 #: ../../mod/profile_photo.php:72 ../../mod/profile_photo.php:160 #: ../../mod/profile_photo.php:236 ../../mod/profile_photo.php:245 msgid "Profile Photos" msgstr "Profilové fotografie" -#: ../../mod/photos.php:120 +#: ../../mod/photos.php:153 msgid "Album not found." msgstr "Album nenalezeno." -#: ../../mod/photos.php:138 ../../mod/photos.php:888 +#: ../../mod/photos.php:171 ../../mod/photos.php:935 msgid "Delete Album" msgstr "Smazat album" -#: ../../mod/photos.php:201 ../../mod/photos.php:1096 +#: ../../mod/photos.php:234 ../../mod/photos.php:1145 msgid "Delete Photo" msgstr "Smazat fotografii" -#: ../../mod/photos.php:473 +#: ../../mod/photos.php:508 msgid "was tagged in a" msgstr "Å¡tÃtek byl pÅ™idán v" -#: ../../mod/photos.php:473 ../../mod/like.php:110 -#: ../../include/conversation.php:20 +#: ../../mod/photos.php:508 ../../mod/like.php:110 +#: ../../include/diaspora.php:446 ../../include/conversation.php:31 msgid "photo" msgstr "fotografie" -#: ../../mod/photos.php:473 +#: ../../mod/photos.php:508 msgid "by" msgstr "od" -#: ../../mod/photos.php:563 ../../addon/js_upload/js_upload.php:306 +#: ../../mod/photos.php:608 ../../addon/js_upload/js_upload.php:310 msgid "Image exceeds size limit of " msgstr "Velikost obrázku pÅ™ekraÄuje limit velikosti" -#: ../../mod/photos.php:577 ../../mod/profile_photo.php:118 +#: ../../mod/photos.php:616 +msgid "Image file is empty." +msgstr "Soubor obrázku je prázdný." + +#: ../../mod/photos.php:630 ../../mod/profile_photo.php:118 #: ../../mod/wall_upload.php:65 msgid "Unable to process image." -msgstr "Kontakt byl odblokován" +msgstr "Obrázek nenà možné zprocesovat" -#: ../../mod/photos.php:597 ../../mod/profile_photo.php:241 -#: ../../mod/wall_upload.php:82 +#: ../../mod/photos.php:650 ../../mod/profile_photo.php:241 +#: ../../mod/wall_upload.php:84 msgid "Image upload failed." msgstr "Nahránà obrázku selhalo." -#: ../../mod/photos.php:680 ../../mod/dfrn_request.php:591 -#: ../../mod/viewcontacts.php:16 ../../mod/display.php:7 -#: ../../mod/search.php:13 ../../mod/directory.php:20 +#: ../../mod/photos.php:733 ../../mod/community.php:9 +#: ../../mod/dfrn_request.php:591 ../../mod/viewcontacts.php:16 +#: ../../mod/display.php:7 ../../mod/search.php:13 ../../mod/directory.php:20 msgid "Public access denied." msgstr "VeÅ™ejný pÅ™Ãstup odepÅ™en." -#: ../../mod/photos.php:690 +#: ../../mod/photos.php:743 msgid "No photos selected" msgstr "Nenà vybrána žádná fotografie" -#: ../../mod/photos.php:837 +#: ../../mod/photos.php:820 +msgid "Access to this item is restricted." +msgstr "PÅ™Ãstup k této položce je omezen." + +#: ../../mod/photos.php:884 msgid "Upload Photos" msgstr "Nahránà fotografià " -#: ../../mod/photos.php:840 ../../mod/photos.php:883 +#: ../../mod/photos.php:887 ../../mod/photos.php:930 msgid "New album name: " msgstr "Název nového alba:" -#: ../../mod/photos.php:841 +#: ../../mod/photos.php:888 msgid "or existing album name: " msgstr "nebo stávajÃcà název alba:" -#: ../../mod/photos.php:843 ../../mod/photos.php:1091 +#: ../../mod/photos.php:890 ../../mod/photos.php:1140 msgid "Permissions" msgstr "OprávnÄ›nÃ:" -#: ../../mod/photos.php:898 +#: ../../mod/photos.php:945 msgid "Edit Album" msgstr "Edituj album" -#: ../../mod/photos.php:908 ../../mod/photos.php:1311 +#: ../../mod/photos.php:955 ../../mod/photos.php:1362 msgid "View Photo" msgstr "Zobraz fotografii" -#: ../../mod/photos.php:937 +#: ../../mod/photos.php:984 msgid "Photo not available" msgstr "Fotografie nenà k dispozici" -#: ../../mod/photos.php:986 +#: ../../mod/photos.php:1033 msgid "Edit photo" msgstr "Editovat fotografii" -#: ../../mod/photos.php:987 +#: ../../mod/photos.php:1034 msgid "Use as profile photo" msgstr "PoužÃt jako profilovou fotografii" -#: ../../mod/photos.php:993 ../../include/conversation.php:316 +#: ../../mod/photos.php:1040 ../../include/conversation.php:342 msgid "Private Message" msgstr "Soukromá zpráva" -#: ../../mod/photos.php:1000 -msgid "<< Prev" -msgstr "<< PÅ™edchozÃ" - -#: ../../mod/photos.php:1004 +#: ../../mod/photos.php:1051 msgid "View Full Size" msgstr "Zobrazit v plné velikosti" -#: ../../mod/photos.php:1009 -msgid "Next >>" -msgstr "NásledujÃcà >>" - -#: ../../mod/photos.php:1071 +#: ../../mod/photos.php:1119 msgid "Tags: " msgstr "Å tÃtky:" -#: ../../mod/photos.php:1074 +#: ../../mod/photos.php:1122 msgid "[Remove any tag]" msgstr "[Odstranit vÅ¡echny Å¡tÃtky]" -#: ../../mod/photos.php:1084 +#: ../../mod/photos.php:1133 msgid "New album name" msgstr "Nové jméno alba" -#: ../../mod/photos.php:1087 +#: ../../mod/photos.php:1136 msgid "Caption" msgstr "Titulek" -#: ../../mod/photos.php:1089 +#: ../../mod/photos.php:1138 msgid "Add a Tag" msgstr "PÅ™idat Å¡tÃtek" -#: ../../mod/photos.php:1093 +#: ../../mod/photos.php:1142 msgid "" "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" -msgstr "Kontakt byl ignorován" +msgstr "" +"PÅ™Ãklad: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" -#: ../../mod/photos.php:1113 ../../include/conversation.php:364 +#: ../../mod/photos.php:1162 ../../include/conversation.php:390 msgid "I like this (toggle)" msgstr "LÃbà se mi to (pÅ™epÃnaÄ)" -#: ../../mod/photos.php:1114 ../../include/conversation.php:365 +#: ../../mod/photos.php:1163 ../../include/conversation.php:391 msgid "I don't like this (toggle)" msgstr "NelÃbà se mi to (pÅ™epÃnaÄ)" -#: ../../mod/photos.php:1115 ../../include/conversation.php:366 -#: ../../include/conversation.php:731 +#: ../../mod/photos.php:1164 ../../include/conversation.php:392 +#: ../../include/conversation.php:746 msgid "Share" msgstr "SdÃlet" -#: ../../mod/photos.php:1116 ../../mod/editpost.php:97 +#: ../../mod/photos.php:1165 ../../mod/editpost.php:99 #: ../../mod/message.php:190 ../../mod/message.php:324 -#: ../../include/conversation.php:367 ../../include/conversation.php:741 +#: ../../include/conversation.php:393 ../../include/conversation.php:756 msgid "Please wait" msgstr "ÄŒekejte prosÃm" -#: ../../mod/photos.php:1132 ../../mod/photos.php:1171 -#: ../../mod/photos.php:1202 ../../include/conversation.php:380 +#: ../../mod/photos.php:1181 ../../mod/photos.php:1220 +#: ../../mod/photos.php:1251 ../../include/conversation.php:406 msgid "This is you" msgstr "To je Vy" -#: ../../mod/photos.php:1134 ../../mod/photos.php:1173 -#: ../../mod/photos.php:1204 ../../include/conversation.php:382 -#: ../../boot.php:386 +#: ../../mod/photos.php:1183 ../../mod/photos.php:1222 +#: ../../mod/photos.php:1253 ../../include/conversation.php:408 +#: ../../boot.php:411 msgid "Comment" msgstr "Okomentovat" -#: ../../mod/photos.php:1232 ../../mod/group.php:146 -#: ../../include/conversation.php:179 ../../include/conversation.php:393 +#: ../../mod/photos.php:1281 ../../mod/group.php:154 ../../mod/admin.php:468 +#: ../../include/conversation.php:427 msgid "Delete" msgstr "Odstranit" -#: ../../mod/photos.php:1298 +#: ../../mod/photos.php:1349 msgid "Recent Photos" msgstr "Aktuálnà fotografie" -#: ../../mod/photos.php:1302 +#: ../../mod/photos.php:1353 msgid "Upload New Photos" msgstr "Nahrát nové fotografie" -#: ../../mod/photos.php:1315 +#: ../../mod/photos.php:1366 msgid "View Album" msgstr "Zobrazit album" +#: ../../mod/community.php:14 +msgid "Not available." +msgstr "Nenà k dispozici." + +#: ../../mod/community.php:26 ../../include/nav.php:79 +msgid "Community" +msgstr "Komunita" + +#: ../../mod/community.php:56 ../../mod/search.php:65 +msgid "No results." +msgstr "Žádné výsledky." + +#: ../../mod/community.php:83 ../../mod/network.php:302 +#: ../../mod/register.php:504 ../../mod/profile.php:241 +#: ../../mod/display.php:117 +msgid "" +"Shared content is covered by the <a " +"href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons " +"Attribution 3.0</a> license." +msgstr "" +"SdÃlený obsah je v souladu s <a " +"href=\"http://creativecommons.org/licenses/by/3.0/\">Commons Creative " +"3.0</a> licencÃ." + #: ../../mod/editpost.php:17 ../../mod/editpost.php:27 msgid "Item not found" msgstr "Položka nenalezena" @@ -370,72 +505,72 @@ msgstr "Položka nenalezena" msgid "Edit post" msgstr "Upravit pÅ™ÃspÄ›vek" -#: ../../mod/editpost.php:75 ../../include/conversation.php:717 +#: ../../mod/editpost.php:75 ../../include/conversation.php:732 msgid "Post to Email" msgstr "Poslat pÅ™ÃspÄ›vek na e-mail" -#: ../../mod/editpost.php:88 ../../include/group.php:169 -#: ../../include/conversation.php:391 +#: ../../mod/editpost.php:90 ../../include/group.php:171 +#: ../../include/group.php:172 ../../include/conversation.php:417 msgid "Edit" msgstr "Upravit" -#: ../../mod/editpost.php:89 ../../mod/message.php:188 -#: ../../mod/message.php:322 ../../include/conversation.php:732 +#: ../../mod/editpost.php:91 ../../mod/message.php:188 +#: ../../mod/message.php:322 ../../include/conversation.php:747 msgid "Upload photo" msgstr "Nahrát fotografii" -#: ../../mod/editpost.php:90 ../../include/conversation.php:733 +#: ../../mod/editpost.php:92 ../../include/conversation.php:748 msgid "Attach file" msgstr "PÅ™iložit soubor" -#: ../../mod/editpost.php:91 ../../mod/message.php:189 -#: ../../mod/message.php:323 ../../include/conversation.php:734 +#: ../../mod/editpost.php:93 ../../mod/message.php:189 +#: ../../mod/message.php:323 ../../include/conversation.php:749 msgid "Insert web link" msgstr "Vložit webový odkaz" -#: ../../mod/editpost.php:92 ../../include/conversation.php:735 +#: ../../mod/editpost.php:94 ../../include/conversation.php:750 msgid "Insert YouTube video" msgstr "Vložit YouTube video" -#: ../../mod/editpost.php:93 ../../include/conversation.php:736 +#: ../../mod/editpost.php:95 ../../include/conversation.php:751 msgid "Insert Vorbis [.ogg] video" msgstr "Vložit Vorbis [.ogg] video" -#: ../../mod/editpost.php:94 ../../include/conversation.php:737 +#: ../../mod/editpost.php:96 ../../include/conversation.php:752 msgid "Insert Vorbis [.ogg] audio" msgstr "Vložit Vorbis [.ogg] audio" -#: ../../mod/editpost.php:95 ../../include/conversation.php:738 +#: ../../mod/editpost.php:97 ../../include/conversation.php:753 msgid "Set your location" -msgstr "Kontakt pÅ™estal být ignorován" +msgstr "Nastavte vaÅ¡i polohu" -#: ../../mod/editpost.php:96 ../../include/conversation.php:739 +#: ../../mod/editpost.php:98 ../../include/conversation.php:754 msgid "Clear browser location" -msgstr "Kontakt byl odstranÄ›n" +msgstr "Odstranit adresu v prohlÞeÄi" -#: ../../mod/editpost.php:98 ../../include/conversation.php:742 +#: ../../mod/editpost.php:100 ../../include/conversation.php:757 msgid "Permission settings" msgstr "Nastavenà oprávnÄ›nÃ" -#: ../../mod/editpost.php:106 ../../include/conversation.php:750 +#: ../../mod/editpost.php:108 ../../include/conversation.php:765 msgid "CC: email addresses" msgstr "skrytá kopie: e-mailové adresy" -#: ../../mod/editpost.php:107 ../../include/conversation.php:751 +#: ../../mod/editpost.php:109 ../../include/conversation.php:766 msgid "Public post" msgstr "VeÅ™ejný pÅ™ÃspÄ›vek" -#: ../../mod/editpost.php:109 ../../include/conversation.php:753 +#: ../../mod/editpost.php:111 ../../include/conversation.php:768 msgid "Example: bob@example.com, mary@example.com" -msgstr "Editor kontaktu" +msgstr "PÅ™Ãklad: bob@example.com, mary@example.com" #: ../../mod/dfrn_request.php:96 msgid "This introduction has already been accepted." -msgstr "Kontaktnà informace / poznámky" +msgstr "Toto pozvánà již bylo pÅ™ijato" #: ../../mod/dfrn_request.php:120 ../../mod/dfrn_request.php:351 msgid "Profile location is not valid or does not contain profile information." -msgstr "Zablokovat/Odblokovat kontakt" +msgstr "Adresa profilu nenà platná nebo neobsahuje profilové informace" #: ../../mod/dfrn_request.php:125 ../../mod/dfrn_request.php:356 msgid "Warning: profile location has no identifiable owner name." @@ -460,7 +595,7 @@ msgstr "PÅ™edstavenà dokonÄeno." #: ../../mod/dfrn_request.php:192 msgid "Unrecoverable protocol error." -msgstr "Smazat kontakt" +msgstr "Neopravitelná chyba protokolu" #: ../../mod/dfrn_request.php:220 msgid "Profile unavailable." @@ -473,7 +608,7 @@ msgstr "%s dnes obdržel pÅ™ÃliÅ¡ mnoho požadavků na pÅ™ipojenÃ." #: ../../mod/dfrn_request.php:246 msgid "Spam protection measures have been invoked." -msgstr "Blokovat tento kontakt" +msgstr "Ochrana proti spamu byla aktivována" #: ../../mod/dfrn_request.php:247 msgid "Friends are advised to please try again in 24 hours." @@ -504,7 +639,7 @@ msgstr "Neplatné URL profilu." msgid "Disallowed profile URL." msgstr "Nepovolené URL profilu." -#: ../../mod/dfrn_request.php:406 ../../mod/contacts.php:90 +#: ../../mod/dfrn_request.php:406 ../../mod/contacts.php:116 msgid "Failed to update contact record." msgstr "NepodaÅ™ilo se aktualizovat kontakt." @@ -538,7 +673,7 @@ msgstr "ProsÃm potvrÄte VaÅ¡i žádost o pÅ™edstavenÃ/spojenà %s." msgid "Confirm" msgstr "Potvrdit" -#: ../../mod/dfrn_request.php:542 ../../include/items.php:1440 +#: ../../mod/dfrn_request.php:542 ../../include/items.php:1519 msgid "[Name Withheld]" msgstr "[Jméno odepÅ™eno]" @@ -546,13 +681,13 @@ msgstr "[Jméno odepÅ™eno]" msgid "Introduction received at " msgstr "Pozvánka pÅ™ijata v" -#: ../../mod/dfrn_request.php:551 ../../mod/lostpass.php:40 -#: ../../mod/lostpass.php:102 ../../mod/register.php:335 -#: ../../mod/register.php:385 ../../mod/regmod.php:98 -#: ../../mod/dfrn_notify.php:191 ../../mod/dfrn_notify.php:443 -#: ../../mod/dfrn_confirm.php:658 ../../include/items.php:1449 +#: ../../mod/dfrn_request.php:551 ../../mod/lostpass.php:44 +#: ../../mod/lostpass.php:106 ../../mod/register.php:369 +#: ../../mod/register.php:423 ../../mod/regmod.php:54 +#: ../../mod/dfrn_notify.php:291 ../../mod/dfrn_notify.php:547 +#: ../../mod/dfrn_confirm.php:674 ../../include/items.php:1528 msgid "Administrator" -msgstr "Správce" +msgstr "Administrátor" #: ../../mod/dfrn_request.php:630 msgid "Friend/Connection Request" @@ -571,18 +706,21 @@ msgid "Please answer the following:" msgstr "OdpovÄ›zte, prosÃm, následujÃcÃ:" #: ../../mod/dfrn_request.php:633 -msgid "Does $name know you?" -msgstr "Zná Vás $name?" +#, php-format +msgid "Does %s know you?" +msgstr "Zná Vás uživatel %s ?" -#: ../../mod/dfrn_request.php:634 ../../mod/settings.php:350 -#: ../../mod/settings.php:362 ../../mod/register.php:459 -#: ../../mod/profiles.php:358 ../../mod/profiles.php:367 +#: ../../mod/dfrn_request.php:634 ../../mod/settings.php:415 +#: ../../mod/settings.php:421 ../../mod/settings.php:429 +#: ../../mod/settings.php:433 ../../mod/register.php:498 +#: ../../mod/profiles.php:354 msgid "Yes" msgstr "Ano" -#: ../../mod/dfrn_request.php:635 ../../mod/settings.php:351 -#: ../../mod/settings.php:363 ../../mod/register.php:460 -#: ../../mod/profiles.php:359 ../../mod/profiles.php:368 +#: ../../mod/dfrn_request.php:635 ../../mod/settings.php:415 +#: ../../mod/settings.php:421 ../../mod/settings.php:429 +#: ../../mod/settings.php:433 ../../mod/register.php:499 +#: ../../mod/profiles.php:355 msgid "No" msgstr "Ne" @@ -622,41 +760,41 @@ msgstr "Adresa VaÅ¡Ã identity :" msgid "Submit Request" msgstr "Odeslat žádost" -#: ../../mod/install.php:33 +#: ../../mod/install.php:34 msgid "Could not create/connect to database." msgstr "Nelze vytvoÅ™it / pÅ™ipojit se k databázi." -#: ../../mod/install.php:38 +#: ../../mod/install.php:39 msgid "Connected to database." msgstr "PÅ™ipojeno k databázi." -#: ../../mod/install.php:72 +#: ../../mod/install.php:75 msgid "Proceed with Installation" msgstr "PokraÄovat v instalaci" -#: ../../mod/install.php:74 +#: ../../mod/install.php:77 msgid "Your Friendika site database has been installed." msgstr "VaÅ¡e databáze Friendiky byla nainstalována." -#: ../../mod/install.php:75 +#: ../../mod/install.php:78 msgid "" "IMPORTANT: You will need to [manually] setup a scheduled task for the " "poller." msgstr "Důležité: Budete si muset [ruÄnÄ›] plánovat úlohu pro poller." -#: ../../mod/install.php:76 ../../mod/install.php:86 ../../mod/install.php:199 +#: ../../mod/install.php:79 ../../mod/install.php:89 ../../mod/install.php:207 msgid "Please see the file \"INSTALL.txt\"." msgstr "PÅ™eÄtÄ›te si prosÃm informace v souboru \"INSTALL.txt\"." -#: ../../mod/install.php:78 +#: ../../mod/install.php:81 msgid "Proceed to registration" msgstr "PokraÄovat k registraci" -#: ../../mod/install.php:84 +#: ../../mod/install.php:87 msgid "Database import failed." msgstr "Import databáze se nezdaÅ™il." -#: ../../mod/install.php:85 +#: ../../mod/install.php:88 msgid "" "You may need to import the file \"database.sql\" manually using phpmyadmin " "or mysql." @@ -664,65 +802,73 @@ msgstr "" "Možná budete muset importovat soubor \"database.sql\" ruÄnÄ› pomocà " "phpMyAdmin Äi MySQL." -#: ../../mod/install.php:98 +#: ../../mod/install.php:101 msgid "Welcome to Friendika." msgstr "VÃtejte na Friendice." -#: ../../mod/install.php:121 +#: ../../mod/install.php:124 msgid "Friendika Social Network" msgstr "Sociálnà sÃÅ¥ Friendika " -#: ../../mod/install.php:122 +#: ../../mod/install.php:125 msgid "Installation" msgstr "Instalace" -#: ../../mod/install.php:123 +#: ../../mod/install.php:126 msgid "" -"In order to install Friendika we need to know how to contact your database." -msgstr "" -"Pro instalaci Friendiky musÃme vÄ›dÄ›t, jak se pÅ™ipojit k VaÅ¡Ã databázi." +"In order to install Friendika we need to know how to connect to your " +"database." +msgstr "Pro instalaci Friendika musÃme vÄ›dÄ›t, jak se pÅ™ipojit k databázi." -#: ../../mod/install.php:124 +#: ../../mod/install.php:127 msgid "" "Please contact your hosting provider or site administrator if you have " "questions about these settings." msgstr "" -"ObraÅ¥te se na svého poskytovatele hostingu nebo správce serveru, pokud máte " -"dotazy týkajÃcà se tÄ›chto nastavenÃ." +"ObraÅ¥te se na svého poskytovatele hostingu nebo administrátora serveru , " +"pokud máte dotazy týkajÃcà se tÄ›chto nastavenÃ." -#: ../../mod/install.php:125 +#: ../../mod/install.php:128 msgid "" -"The database you specify below must already exist. If it does not, please " +"The database you specify below should already exist. If it does not, please " "create it before continuing." msgstr "" -"Databáze zadáte nÞe již musà existovat. Pokud jeÅ¡tÄ› neexistuje, vytvoÅ™te " -"ji, prosÃm, aby bylo možné pokraÄovat." +"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." -#: ../../mod/install.php:126 +#: ../../mod/install.php:129 msgid "Database Server Name" msgstr "Jméno databázového serveru" -#: ../../mod/install.php:127 +#: ../../mod/install.php:130 msgid "Database Login Name" msgstr "PÅ™ihlaÅ¡ovacà jméno k databázi" -#: ../../mod/install.php:128 +#: ../../mod/install.php:131 msgid "Database Login Password" msgstr "Heslo k databázovému úÄtu " -#: ../../mod/install.php:129 +#: ../../mod/install.php:132 msgid "Database Name" msgstr "Jméno databáze" -#: ../../mod/install.php:130 +#: ../../mod/install.php:133 msgid "Please select a default timezone for your website" msgstr "ProsÃm, vyberte výchozà Äasové pásmo pro vaÅ¡e webové stránky" -#: ../../mod/install.php:148 +#: ../../mod/install.php:134 +msgid "" +"Site administrator email address. Your account email address must match this" +" in order to use the web admin panel." +msgstr "" +"e-mailová adresa administrárota webu. E-mailová adresa vaÅ¡eho úÄtu se musà " +"shodovat, aby bylo možné využÃvat panel webové administrace." + +#: ../../mod/install.php:153 msgid "Could not find a command line version of PHP in the web server PATH." msgstr "Nelze najÃt verzi PHP pro pÅ™Ãkazový řádek v PATH webového serveru." -#: ../../mod/install.php:149 +#: ../../mod/install.php:154 msgid "" "This is required. Please adjust the configuration file .htconfig.php " "accordingly." @@ -730,7 +876,7 @@ msgstr "" "Tento krok je nutný. Upravte pÅ™ÃsluÅ¡ným způsobem konfiguraÄnà soubor " ".htconfig.php." -#: ../../mod/install.php:156 +#: ../../mod/install.php:161 msgid "" "The command line version of PHP on your system does not have " "\"register_argc_argv\" enabled." @@ -738,11 +884,11 @@ msgstr "" "Verze PHP pro pÅ™Ãkazový řádek na vaÅ¡em systému nemá povolen " "\"register_argc_argv\"." -#: ../../mod/install.php:157 +#: ../../mod/install.php:162 msgid "This is required for message delivery to work." msgstr "Toto je nutné pro fungovánà doruÄovánà zpráv." -#: ../../mod/install.php:179 +#: ../../mod/install.php:184 msgid "" "Error: the \"openssl_pkey_new\" function on this system is not able to " "generate encryption keys" @@ -750,7 +896,7 @@ msgstr "" "Chyba: funkce \"openssl_pkey_new\" na tomto systému nenà schopna generovat " "Å¡ifrovacà klÃÄe" -#: ../../mod/install.php:180 +#: ../../mod/install.php:185 msgid "" "If running under Windows, please see " "\"http://www.php.net/manual/en/openssl.installation.php\"." @@ -758,30 +904,34 @@ msgstr "" "Pokud systém běžà na Windows, seznamte se s " "\"http://www.php.net/manual/en/openssl.installation.php\"." -#: ../../mod/install.php:189 +#: ../../mod/install.php:194 msgid "" "Error: Apache webserver mod-rewrite module is required but not installed." msgstr "" "Chyba: Požadovaný Apache webserver mod-rewrite modul nenà nainstalován." -#: ../../mod/install.php:191 +#: ../../mod/install.php:196 msgid "Error: libCURL PHP module required but not installed." msgstr "Chyba: požadovaný libcurl PHP modul nenà nainstalován." -#: ../../mod/install.php:193 +#: ../../mod/install.php:198 msgid "" "Error: GD graphics PHP module with JPEG support required but not installed." msgstr "Chyba: požadovaný GD graphics PHP modul nenà nainstalován." -#: ../../mod/install.php:195 +#: ../../mod/install.php:200 msgid "Error: openssl PHP module required but not installed." msgstr "Chyba: požadovaný openssl PHP modul nenà nainstalován." -#: ../../mod/install.php:197 +#: ../../mod/install.php:202 msgid "Error: mysqli PHP module required but not installed." msgstr "Chyba: požadovaný mysqli PHP modul nenà nainstalován." -#: ../../mod/install.php:208 +#: ../../mod/install.php:204 +msgid "Error: mb_string PHP module required but not installed." +msgstr "Chyba: PHP modul mb_string je vyžadován, ale nenà nainstalován." + +#: ../../mod/install.php:216 msgid "" "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." @@ -790,7 +940,7 @@ msgstr "" "\".htconfig.php\" v hlavnÃm adresáři vaÅ¡eho webového serveru ale nynà mu to " "nenà umožnÄ›no." -#: ../../mod/install.php:209 +#: ../../mod/install.php:217 msgid "" "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." @@ -798,7 +948,7 @@ msgstr "" "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." -#: ../../mod/install.php:210 +#: ../../mod/install.php:218 msgid "" "Please check with your site documentation or support people to see if this " "situation can be corrected." @@ -806,7 +956,7 @@ msgstr "" "ProsÃm, poraÄte se s dokumentacà k VaÅ¡emu hostingu nebo s technickou " "podporou, zda-li lze tuto situaci napravit." -#: ../../mod/install.php:211 +#: ../../mod/install.php:219 msgid "" "If not, you may be required to perform a manual installation. Please see the" " file \"INSTALL.txt\" for instructions." @@ -814,7 +964,7 @@ msgstr "" "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\"." -#: ../../mod/install.php:220 +#: ../../mod/install.php:228 msgid "" "The database configuration file \".htconfig.php\" could not be written. " "Please use the enclosed text to create a configuration file in your web " @@ -824,15 +974,26 @@ msgstr "" "použijte pÅ™iložený text k vytvoÅ™enà konfiguraÄnÃho souboru ve vaÅ¡em " "koÅ™enovém adresáři webového serveru." -#: ../../mod/install.php:235 +#: ../../mod/install.php:243 msgid "Errors encountered creating database tables." msgstr "PÅ™i vytvářenà databázových tabulek doÅ¡lo k chybám." +#: ../../mod/update_community.php:18 ../../mod/update_network.php:22 +#: ../../mod/update_profile.php:41 +msgid "[Embedded content - reload page to view]" +msgstr "[Vložený obsah - obnovenà stránky pro zobrazenÃ]" + #: ../../mod/match.php:10 msgid "Profile Match" msgstr "Shoda profilu" -#: ../../mod/match.php:50 +#: ../../mod/match.php:18 +msgid "No keywords to match. Please add keywords to your default profile." +msgstr "" +"Žádná klÃÄová slova k porovnánÃ. ProsÃm, pÅ™idejte klÃÄová slova do VaÅ¡eho " +"výchozÃho profilu." + +#: ../../mod/match.php:54 msgid "No matches" msgstr "Žádné shody" @@ -849,183 +1010,195 @@ msgstr "Viditelné pro:" msgid "Welcome to %s" msgstr "VÃtá Vás %s" -#: ../../mod/notifications.php:28 +#: ../../mod/notifications.php:26 msgid "Invalid request identifier." msgstr "Neplatný identifikátor požadavku." -#: ../../mod/notifications.php:31 ../../mod/notifications.php:133 +#: ../../mod/notifications.php:35 ../../mod/notifications.php:118 +#: ../../mod/notifications.php:162 msgid "Discard" msgstr "Odstranit" -#: ../../mod/notifications.php:41 ../../mod/notifications.php:132 +#: ../../mod/notifications.php:47 ../../mod/notifications.php:117 +#: ../../mod/notifications.php:161 msgid "Ignore" msgstr "Ignorovat" -#: ../../mod/notifications.php:68 +#: ../../mod/notifications.php:74 msgid "Pending Friend/Connect Notifications" msgstr "ÄŒekajÃcà požadavky na Přátelstvà / PÅ™ipojenà " -#: ../../mod/notifications.php:72 +#: ../../mod/notifications.php:78 msgid "Show Ignored Requests" msgstr "Zobrazit ignorované žádosti" -#: ../../mod/notifications.php:72 +#: ../../mod/notifications.php:78 msgid "Hide Ignored Requests" msgstr "Skrýt ignorované žádosti" -#: ../../mod/notifications.php:104 +#: ../../mod/notifications.php:105 ../../mod/notifications.php:148 +msgid "Notification type: " +msgstr "Typ oznámenÃ:" + +#: ../../mod/notifications.php:106 +msgid "Friend Suggestion" +msgstr "Návrh přátelstvÃ" + +#: ../../mod/notifications.php:108 +#, php-format +msgid "suggested by %s" +msgstr "navrhl %s" + +#: ../../mod/notifications.php:114 ../../mod/notifications.php:159 +#: ../../mod/admin.php:466 +msgid "Approve" +msgstr "Schválit" + +#: ../../mod/notifications.php:133 msgid "Claims to be known to you: " msgstr "VaÅ¡i údajnà známÃ:" -#: ../../mod/notifications.php:104 +#: ../../mod/notifications.php:133 msgid "yes" msgstr "ano" -#: ../../mod/notifications.php:104 +#: ../../mod/notifications.php:133 msgid "no" msgstr "ne" -#: ../../mod/notifications.php:110 +#: ../../mod/notifications.php:139 msgid "Approve as: " msgstr "Schválit jako:" -#: ../../mod/notifications.php:111 +#: ../../mod/notifications.php:140 msgid "Friend" msgstr "PÅ™Ãtel" -#: ../../mod/notifications.php:112 +#: ../../mod/notifications.php:141 msgid "Fan/Admirer" msgstr "FanouÅ¡ek / obdivovatel" -#: ../../mod/notifications.php:119 -msgid "Notification type: " -msgstr "Typ oznámenÃ:" - -#: ../../mod/notifications.php:120 +#: ../../mod/notifications.php:149 msgid "Friend/Connect Request" msgstr "PÅ™Ãtel / žádost o pÅ™ipojenÃ" -#: ../../mod/notifications.php:120 +#: ../../mod/notifications.php:149 msgid "New Follower" msgstr "Nový následovnÃk" -#: ../../mod/notifications.php:130 ../../mod/notifications.php:153 -msgid "Approve" -msgstr "Schválit" - -#: ../../mod/notifications.php:139 +#: ../../mod/notifications.php:168 msgid "No notifications." msgstr "Žádné oznámenÃ." -#: ../../mod/notifications.php:143 -msgid "User registrations waiting for confirm" -msgstr "Registrace uživatele Äeká na potvrzenÃ" - -#: ../../mod/notifications.php:154 -msgid "Deny" -msgstr "OdmÃtnout" - -#: ../../mod/notifications.php:159 -msgid "No registrations." -msgstr "Žádné registrace." - -#: ../../mod/contacts.php:12 +#: ../../mod/contacts.php:26 msgid "Invite Friends" msgstr "Pozvat přátele" -#: ../../mod/contacts.php:15 +#: ../../mod/contacts.php:32 +#, php-format +msgid "%d invitation available" +msgid_plural "%d invitations available" +msgstr[0] "Pozvánka %d k dispozici" +msgstr[1] "Pozvánky %d k dispozici" +msgstr[2] "Pozvánky %d k dispozici" + +#: ../../mod/contacts.php:41 msgid "Find People With Shared Interests" msgstr "NajÃt lidi se spoleÄnými zájmy" -#: ../../mod/contacts.php:19 +#: ../../mod/contacts.php:45 msgid "Connect/Follow" msgstr "PÅ™ipojit / Následovat" -#: ../../mod/contacts.php:20 +#: ../../mod/contacts.php:46 msgid "Example: bob@example.com, http://example.com/barbara" msgstr "PÅ™Ãklad: jan@pÅ™Ãklad.cz, http://pÅ™Ãklad.cz/jana" -#: ../../mod/contacts.php:21 +#: ../../mod/contacts.php:47 msgid "Follow" msgstr "Následovat" -#: ../../mod/contacts.php:43 ../../mod/contacts.php:124 +#: ../../mod/contacts.php:69 ../../mod/contacts.php:150 msgid "Could not access contact record." msgstr "Nelze zÃskat pÅ™Ãstup k záznamu kontaktu." -#: ../../mod/contacts.php:57 +#: ../../mod/contacts.php:83 msgid "Could not locate selected profile." msgstr "Nelze nalézt vybraný profil." -#: ../../mod/contacts.php:88 +#: ../../mod/contacts.php:114 msgid "Contact updated." msgstr "Kontakt aktualizován." -#: ../../mod/contacts.php:146 +#: ../../mod/contacts.php:172 msgid "Contact has been blocked" msgstr "Kontakt byl zablokován" -#: ../../mod/contacts.php:146 +#: ../../mod/contacts.php:172 msgid "Contact has been unblocked" msgstr "Kontakt byl odblokován" -#: ../../mod/contacts.php:160 +#: ../../mod/contacts.php:186 msgid "Contact has been ignored" msgstr "Kontakt bude ignorován" -#: ../../mod/contacts.php:160 +#: ../../mod/contacts.php:186 msgid "Contact has been unignored" msgstr "Kontakt pÅ™estal být ignorován" -#: ../../mod/contacts.php:181 +#: ../../mod/contacts.php:207 msgid "stopped following" msgstr "následovánà zastaveno" -#: ../../mod/contacts.php:200 +#: ../../mod/contacts.php:226 msgid "Contact has been removed." msgstr "Kontakt byl odstranÄ›n." -#: ../../mod/contacts.php:228 ../../mod/contacts.php:363 +#: ../../mod/contacts.php:254 ../../mod/contacts.php:397 msgid "Mutual Friendship" msgstr "Vzájemné přátelstvÃ" -#: ../../mod/contacts.php:232 ../../mod/contacts.php:367 +#: ../../mod/contacts.php:258 ../../mod/contacts.php:401 msgid "is a fan of yours" msgstr "je Váš fanouÅ¡ek" -#: ../../mod/contacts.php:237 ../../mod/contacts.php:371 +#: ../../mod/contacts.php:263 ../../mod/contacts.php:405 msgid "you are a fan of" msgstr "jste fanouÅ¡kem" -#: ../../mod/contacts.php:252 +#: ../../mod/contacts.php:280 msgid "Privacy Unavailable" msgstr "Ochrana soukromà nenà k dispozici" -#: ../../mod/contacts.php:253 +#: ../../mod/contacts.php:281 msgid "Private communications are not available for this contact." msgstr "Soukromá komunikace nenà dostupná pro tento kontakt." -#: ../../mod/contacts.php:256 +#: ../../mod/contacts.php:284 msgid "Never" msgstr "Nikdy" -#: ../../mod/contacts.php:260 +#: ../../mod/contacts.php:288 msgid "(Update was successful)" msgstr "(Aktualizace byla úspěšná)" -#: ../../mod/contacts.php:260 +#: ../../mod/contacts.php:288 msgid "(Update was not successful)" msgstr "(Aktualizace nebyla úspěšná)" -#: ../../mod/contacts.php:263 +#: ../../mod/contacts.php:291 +msgid "Suggest friends" +msgstr "NavrhnÄ›te přátelé" + +#: ../../mod/contacts.php:295 msgid "Contact Editor" msgstr "Editor kontaktu" -#: ../../mod/contacts.php:265 +#: ../../mod/contacts.php:297 msgid "Profile Visibility" msgstr "Viditelnost profilu" -#: ../../mod/contacts.php:266 +#: ../../mod/contacts.php:298 #, php-format msgid "" "Please choose the profile you would like to display to %s when viewing your " @@ -1034,22 +1207,22 @@ msgstr "" "Vyberte prosÃm profil, který chcete zobrazit %s pÅ™i zabezpeÄeném prohlÞenà " "vaÅ¡eho profilu." -#: ../../mod/contacts.php:267 +#: ../../mod/contacts.php:299 msgid "Contact Information / Notes" msgstr "Kontaktnà informace / poznámky" -#: ../../mod/contacts.php:268 +#: ../../mod/contacts.php:300 msgid "Online Reputation" msgstr "Online povÄ›st" -#: ../../mod/contacts.php:269 +#: ../../mod/contacts.php:301 msgid "" "Occasionally your friends may wish to inquire about this person's online " "legitimacy." msgstr "" "ObÄas mohou vaÅ¡i přátelé chtÃt informovat o online legitimitÄ› této osoby." -#: ../../mod/contacts.php:270 +#: ../../mod/contacts.php:302 msgid "" "You may help them choose whether or not to interact with this person by " "providing a <em>reputation</em> to guide them." @@ -1057,7 +1230,7 @@ msgstr "" "PoskytnutÃm <em>povÄ›sti</em> jim můžete pomoci se rozhodnout, zda-li s touto" " osobou komunikovat Äi nikoliv." -#: ../../mod/contacts.php:271 +#: ../../mod/contacts.php:303 msgid "" "Please take a moment to elaborate on this selection if you feel it could be " "helpful to others." @@ -1065,110 +1238,111 @@ msgstr "" "VÄ›nujte prosÃm chvilku vyplnÄ›nà této volby, pokud máte pocit, že by mohlo " "být užiteÄné pro ostatnÃ." -#: ../../mod/contacts.php:272 -msgid "Visit $name's profile" -msgstr "NavÅ¡tÃvit profil $name" +#: ../../mod/contacts.php:304 ../../mod/contacts.php:421 +#: ../../mod/viewcontacts.php:61 +#, php-format +msgid "Visit %s's profile [%s]" +msgstr "NavÅ¡tivte profil uživatele %s [%s]" -#: ../../mod/contacts.php:273 +#: ../../mod/contacts.php:305 msgid "Block/Unblock contact" msgstr "Blokovat / Odblokovat kontakt" -#: ../../mod/contacts.php:274 +#: ../../mod/contacts.php:306 msgid "Ignore contact" msgstr "Ignorovat kontakt" -#: ../../mod/contacts.php:275 +#: ../../mod/contacts.php:307 msgid "Repair contact URL settings" msgstr "Opravit nastavenà URL kontaktu" -#: ../../mod/contacts.php:276 +#: ../../mod/contacts.php:308 msgid "Repair contact URL settings (WARNING: Advanced)" msgstr "Opravit nastavenà URL kontaktu (VarovánÃ: PokroÄilé)" -#: ../../mod/contacts.php:277 +#: ../../mod/contacts.php:309 msgid "View conversations" msgstr "Zobrazit konverzace" -#: ../../mod/contacts.php:278 +#: ../../mod/contacts.php:312 msgid "Delete contact" msgstr "Odstranit kontakt" -#: ../../mod/contacts.php:280 +#: ../../mod/contacts.php:314 msgid "Last updated: " msgstr "Poslednà aktualizace:" -#: ../../mod/contacts.php:281 +#: ../../mod/contacts.php:315 msgid "Update public posts: " msgstr "Aktualizace veÅ™ejných pÅ™ÃspÄ›vků:" -#: ../../mod/contacts.php:283 +#: ../../mod/contacts.php:317 ../../mod/admin.php:701 msgid "Update now" msgstr "Aktualizovat" -#: ../../mod/contacts.php:286 +#: ../../mod/contacts.php:320 msgid "Unblock this contact" msgstr "Odblokovat tento kontakt" -#: ../../mod/contacts.php:286 +#: ../../mod/contacts.php:320 msgid "Block this contact" msgstr "Blokovat tento kontakt" -#: ../../mod/contacts.php:287 +#: ../../mod/contacts.php:321 msgid "Unignore this contact" msgstr "PÅ™estat ignorovat tento kontakt" -#: ../../mod/contacts.php:287 +#: ../../mod/contacts.php:321 msgid "Ignore this contact" msgstr "Ignorovat tento kontakt" -#: ../../mod/contacts.php:290 +#: ../../mod/contacts.php:324 msgid "Currently blocked" msgstr "V souÄasnosti zablokováno" -#: ../../mod/contacts.php:291 +#: ../../mod/contacts.php:325 msgid "Currently ignored" msgstr "V souÄasnosti ignorováno" -#: ../../mod/contacts.php:322 ../../include/nav.php:109 -#: ../../include/acl_selectors.php:141 ../../include/acl_selectors.php:156 +#: ../../mod/contacts.php:356 ../../include/nav.php:110 msgid "Contacts" msgstr "Kontakty" -#: ../../mod/contacts.php:324 +#: ../../mod/contacts.php:358 msgid "Show Blocked Connections" msgstr "Zobrazit blokované spojenÃ" -#: ../../mod/contacts.php:324 +#: ../../mod/contacts.php:358 msgid "Hide Blocked Connections" msgstr "Skrýt blokované spojenÃ" -#: ../../mod/contacts.php:326 ../../mod/directory.php:55 +#: ../../mod/contacts.php:360 ../../mod/directory.php:55 msgid "Finding: " msgstr "ZjiÅ¡tÄ›nÃ: " -#: ../../mod/contacts.php:327 ../../mod/directory.php:57 +#: ../../mod/contacts.php:361 ../../mod/directory.php:57 msgid "Find" msgstr "NajÃt" -#: ../../mod/contacts.php:387 ../../mod/viewcontacts.php:52 -msgid "Visit $username's profile" -msgstr "NavÅ¡tÃvit profil uživatele $username" - -#: ../../mod/contacts.php:388 ../../include/conversation.php:597 +#: ../../mod/contacts.php:422 ../../include/conversation.php:612 msgid "Edit contact" msgstr "Editovat kontakt" -#: ../../mod/lostpass.php:27 +#: ../../mod/lostpass.php:16 +msgid "No valid account found." +msgstr "Nenalezen žádný platný úÄet." + +#: ../../mod/lostpass.php:31 msgid "Password reset request issued. Check your email." msgstr "" "Žádost o obnovenà hesla vyÅ™Ãzena. Zkontrolujte VaÅ¡i e-mailovou schránku." -#: ../../mod/lostpass.php:38 +#: ../../mod/lostpass.php:42 #, php-format msgid "Password reset requested at %s" -msgstr "Resetovánà hesla vyžádáno v %s" +msgstr "Na %s bylo zažádáno o resetovánà hesla" -#: ../../mod/lostpass.php:60 +#: ../../mod/lostpass.php:64 msgid "" "Request could not be verified. (You may have previously submitted it.) " "Password reset failed." @@ -1176,27 +1350,27 @@ msgstr "" "Žádost nemohla být ověřena. (Možná jste ji odeslali již dÅ™Ãve.) Obnovenà " "hesla se nezdaÅ™ilo." -#: ../../mod/lostpass.php:78 ../../boot.php:852 +#: ../../mod/lostpass.php:82 ../../boot.php:654 msgid "Password Reset" -msgstr "Obnovit heslo" +msgstr "Obnovenà hesla" -#: ../../mod/lostpass.php:79 +#: ../../mod/lostpass.php:83 msgid "Your password has been reset as requested." -msgstr "VaÅ¡e heslo bylo resetováno jak bylo požadováno." +msgstr "VaÅ¡e heslo bylo na VaÅ¡e přánà resetováno." -#: ../../mod/lostpass.php:80 +#: ../../mod/lostpass.php:84 msgid "Your new password is" msgstr "VaÅ¡e nové heslo je" -#: ../../mod/lostpass.php:81 +#: ../../mod/lostpass.php:85 msgid "Save or copy your new password - and then" msgstr "Uložte si nebo zkopÃrujte nové heslo - a pak" -#: ../../mod/lostpass.php:82 +#: ../../mod/lostpass.php:86 msgid "click here to login" msgstr "kliknÄ›te zde pro pÅ™ihlášenÃ" -#: ../../mod/lostpass.php:83 +#: ../../mod/lostpass.php:87 msgid "" "Your password may be changed from the <em>Settings</em> page after " "successful login." @@ -1204,11 +1378,11 @@ msgstr "" "VaÅ¡e heslo může být zmÄ›nÄ›no na stránce <em>nastavenÃ</em> po úspěšném " "pÅ™ihlášenÃ." -#: ../../mod/lostpass.php:114 +#: ../../mod/lostpass.php:118 msgid "Forgot your Password?" msgstr "ZapomnÄ›li jste heslo?" -#: ../../mod/lostpass.php:115 +#: ../../mod/lostpass.php:119 msgid "" "Enter your email address and submit to have your password reset. Then check " "your email for further instructions." @@ -1216,246 +1390,267 @@ msgstr "" "Zadejte svůj e-mailovou adresu a odeÅ¡lete žádost o zaslánà VaÅ¡eho nového " "hesla. Poté zkontrolujte svůj e-mail pro dalÅ¡Ã instrukce." -#: ../../mod/lostpass.php:116 +#: ../../mod/lostpass.php:120 msgid "Nickname or Email: " msgstr "PÅ™ezdÃvka nebo e-mail:" -#: ../../mod/lostpass.php:117 +#: ../../mod/lostpass.php:121 msgid "Reset" msgstr "Reset" -#: ../../mod/settings.php:38 +#: ../../mod/settings.php:64 msgid "Passwords do not match. Password unchanged." msgstr "Hesla se neshodujÃ. Heslo nebylo zmÄ›nÄ›no." -#: ../../mod/settings.php:43 +#: ../../mod/settings.php:69 msgid "Empty passwords are not allowed. Password unchanged." msgstr "Prázdné hesla nejsou povolena. Heslo nebylo zmÄ›nÄ›no." -#: ../../mod/settings.php:54 +#: ../../mod/settings.php:80 msgid "Password changed." msgstr "Heslo bylo zmÄ›nÄ›no." -#: ../../mod/settings.php:56 +#: ../../mod/settings.php:82 msgid "Password update failed. Please try again." msgstr "Aktualizace hesla se nezdaÅ™ila. Zkuste to prosÃm znovu." -#: ../../mod/settings.php:138 +#: ../../mod/settings.php:161 +msgid "Failed to connect with email account using the settings provided." +msgstr "NepodaÅ™ilo se pÅ™ipojit k e-mailovému úÄtu pomocà dodaného nastavenÃ." + +#: ../../mod/settings.php:188 msgid " Please use a shorter name." msgstr "ProsÃm použijte kratÅ¡Ã jméno." -#: ../../mod/settings.php:140 +#: ../../mod/settings.php:190 msgid " Name too short." msgstr "Jméno je pÅ™ÃliÅ¡ krátké." -#: ../../mod/settings.php:146 +#: ../../mod/settings.php:196 msgid " Not valid email." msgstr "Neplatný e-mail." -#: ../../mod/settings.php:148 +#: ../../mod/settings.php:198 msgid " Cannot change to that email." msgstr "Nelze provést zmÄ›nu na tento e-mail." -#: ../../mod/settings.php:206 +#: ../../mod/settings.php:257 ../../addon/facebook/facebook.php:297 +#: ../../addon/impressum/impressum.php:64 ../../addon/piwik/piwik.php:89 +#: ../../addon/twitter/twitter.php:275 msgid "Settings updated." msgstr "Nastavenà aktualizováno." -#: ../../mod/settings.php:256 ../../mod/settings.php:418 -#: ../../addon/widgets/widgets.php:123 -msgid "Plugin Settings" -msgstr "Nastavenà doplňku" - -#: ../../mod/settings.php:257 ../../mod/settings.php:417 -msgid "Account Settings" +#: ../../mod/settings.php:311 ../../include/nav.php:108 +msgid "Account settings" msgstr "Nastavenà úÄtu" -#: ../../mod/settings.php:263 +#: ../../mod/settings.php:312 +msgid "Plugin settings" +msgstr "Nastavenà pluginu" + +#: ../../mod/settings.php:322 msgid "No Plugin settings configured" msgstr "Žádný doplnÄ›k nenà nastaven" -#: ../../mod/settings.php:323 +#: ../../mod/settings.php:329 ../../addon/widgets/widgets.php:122 +msgid "Plugin Settings" +msgstr "Nastavenà doplňku" + +#: ../../mod/settings.php:382 ../../mod/admin.php:133 ../../mod/admin.php:443 msgid "Normal Account" msgstr "Normálnà úÄet" -#: ../../mod/settings.php:324 +#: ../../mod/settings.php:383 msgid "This account is a normal personal profile" msgstr "Tento úÄet je běžný osobnà profil" -#: ../../mod/settings.php:325 +#: ../../mod/settings.php:386 ../../mod/admin.php:134 ../../mod/admin.php:444 msgid "Soapbox Account" msgstr "Soapbox úÄet" -#: ../../mod/settings.php:326 +#: ../../mod/settings.php:387 msgid "Automatically approve all connection/friend requests as read-only fans" msgstr "" "Automaticky schválit vÅ¡echna spojenà / přátelstvà jako fanouÅ¡ky s právem " "pouze ke ÄtenÃ" -#: ../../mod/settings.php:327 +#: ../../mod/settings.php:390 ../../mod/admin.php:135 ../../mod/admin.php:445 msgid "Community/Celebrity Account" msgstr "Komunitnà úÄet / ÚÄet celebrity" -#: ../../mod/settings.php:328 +#: ../../mod/settings.php:391 msgid "" "Automatically approve all connection/friend requests as read-write fans" msgstr "" "Automaticky schvalovat vÅ¡echny žádosti o spojenà / přátelstvÃ, jako fanouÅ¡ky" " s právem ke ÄtenÃ." -#: ../../mod/settings.php:329 +#: ../../mod/settings.php:394 ../../mod/admin.php:136 ../../mod/admin.php:446 msgid "Automatic Friend Account" -msgstr "Automatický úÄet pÅ™Ãtele" +msgstr "ÚÄet s automatickým schvalovánÃm přátel" -#: ../../mod/settings.php:330 +#: ../../mod/settings.php:395 msgid "Automatically approve all connection/friend requests as friends" msgstr "" "Automaticky schvalovat vÅ¡echny žádosti o spojenà / přátelstvà jako přátele" -#: ../../mod/settings.php:339 -msgid "OpenID: " -msgstr "OpenID: " +#: ../../mod/settings.php:405 +msgid "OpenID:" +msgstr "OpenID:" + +#: ../../mod/settings.php:405 +msgid "(Optional) Allow this OpenID to login to this account." +msgstr "(Volitelné) Povolit OpenID pro pÅ™ihlášenà k tomuto úÄtu." + +#: ../../mod/settings.php:415 +msgid "Publish your default profile in your local site directory?" +msgstr "Publikovat Váš výchozà profil v mÃstnÃm adresáři webu?" -#: ../../mod/settings.php:339 -msgid " (Optional) Allow this OpenID to login to this account." -msgstr " (Volitelné) Povolit toto OpenID pro pÅ™ihlášenà k tomuto úÄtu." +#: ../../mod/settings.php:421 +msgid "Publish your default profile in the global social directory?" +msgstr "Publikovat Váš výchozà profil v globálnà sociálnÃm adresáři?" -#: ../../mod/settings.php:349 -msgid "Publish your default profile in site directory?" -msgstr "ZveÅ™ejnit Váš výchozà profil v mÃstnÃm adresáři?" +#: ../../mod/settings.php:429 +msgid "Hide your contact/friend list from viewers of your default profile?" +msgstr "" +"Skrýt VaÅ¡e kontaktnà údaje a seznam přátel pÅ™ed návÅ¡tÄ›vnÃky ve VaÅ¡em " +"výchozÃm profilu?" -#: ../../mod/settings.php:361 -msgid "Publish your default profile in global social directory?" -msgstr "ZveÅ™ejnit Váš výchozà profil v globálnÃm sociálnà adresáři?" +#: ../../mod/settings.php:433 +msgid "Hide profile details and all your messages from unknown viewers?" +msgstr "Skrýt detaily profilu a vÅ¡echny zprávy pÅ™ed neznámými uživateli?" -#: ../../mod/settings.php:377 +#: ../../mod/settings.php:442 msgid "Profile is <strong>not published</strong>." msgstr "Profil <strong>nenà zveÅ™ejnÄ›n</strong>." -#: ../../mod/settings.php:398 ../../mod/profile_photo.php:196 +#: ../../mod/settings.php:461 ../../mod/profile_photo.php:196 msgid "or" msgstr "nebo" -#: ../../mod/settings.php:403 +#: ../../mod/settings.php:466 msgid "Your Identity Address is" msgstr "VaÅ¡e adresa identity je" -#: ../../mod/settings.php:413 +#: ../../mod/settings.php:480 +msgid "Account Settings" +msgstr "Nastavenà úÄtu" + +#: ../../mod/settings.php:487 msgid "Export Personal Data" msgstr "Export osobnÃch údajů" -#: ../../mod/settings.php:419 +#: ../../mod/settings.php:490 +msgid "Password Settings" +msgstr "Nastavenà hesla" + +#: ../../mod/settings.php:491 +msgid "New Password:" +msgstr "Nové heslo:" + +#: ../../mod/settings.php:492 +msgid "Confirm:" +msgstr "PotvrÄte:" + +#: ../../mod/settings.php:492 +msgid "Leave password fields blank unless changing" +msgstr "Pokud nechcete zmÄ›nit heslo, položku hesla nevyplňujte" + +#: ../../mod/settings.php:496 msgid "Basic Settings" msgstr "Základnà nastavenÃ" -#: ../../mod/settings.php:420 ../../include/profile_advanced.php:10 +#: ../../mod/settings.php:497 ../../include/profile_advanced.php:10 msgid "Full Name:" msgstr "Celé jméno:" -#: ../../mod/settings.php:421 +#: ../../mod/settings.php:498 msgid "Email Address:" msgstr "E-mailová adresa:" -#: ../../mod/settings.php:422 +#: ../../mod/settings.php:499 msgid "Your Timezone:" msgstr "VaÅ¡e Äasové pásmo:" -#: ../../mod/settings.php:423 +#: ../../mod/settings.php:500 msgid "Default Post Location:" msgstr "Výchozà umÃstÄ›nà pÅ™ÃspÄ›vků:" -#: ../../mod/settings.php:424 +#: ../../mod/settings.php:501 msgid "Use Browser Location:" -msgstr "Použijte prohlÞeÄ MÃsto:" +msgstr "PoužÃvat umÃstÄ›nà dle prohlÞeÄe:" -#: ../../mod/settings.php:425 +#: ../../mod/settings.php:502 msgid "Display Theme:" -msgstr "Zobrazit téma:" +msgstr "Vybrat grafickou Å¡ablonu:" -#: ../../mod/settings.php:427 +#: ../../mod/settings.php:506 msgid "Security and Privacy Settings" msgstr "Nastavenà zabezpeÄenà a soukromÃ" -#: ../../mod/settings.php:428 +#: ../../mod/settings.php:508 msgid "Maximum Friend Requests/Day:" msgstr "Maximálnà poÄet žádostà o přátelstvà za den:" -#: ../../mod/settings.php:429 +#: ../../mod/settings.php:508 msgid "(to prevent spam abuse)" msgstr "(Aby se zabránilo spamu)" -#: ../../mod/settings.php:430 +#: ../../mod/settings.php:509 +msgid "Default Post Permissions" +msgstr "Výchozà oprávnÄ›nà pro pÅ™ÃspÄ›vek" + +#: ../../mod/settings.php:510 +msgid "(click to open/close)" +msgstr "(KliknÄ›te pro otevÅ™enÃ/zavÅ™enÃ)" + +#: ../../mod/settings.php:514 msgid "Allow friends to post to your profile page:" msgstr "Povolit přátelům pÅ™ÃspÄ›vky na VaÅ¡i profilovou stránku:" -#: ../../mod/settings.php:431 -msgid "Automatically expire (delete) posts older than" -msgstr "Automaticky smazat pÅ™ÃspÄ›vky starÅ¡Ã než" +#: ../../mod/settings.php:515 +msgid "Automatically expire posts after days:" +msgstr "Po kolika dnech automaticky expirovat pÅ™ÃspÄ›vky:" -#: ../../mod/settings.php:432 ../../include/datetime.php:154 -msgid "days" -msgstr "dnů" +#: ../../mod/settings.php:515 +msgid "If empty, posts will not expire. Expired posts will be deleted" +msgstr "" +"Pokud je prázdné, pÅ™ÃspÄ›vky nebudou nikdy expirovat. Expirované pÅ™ÃspÄ›vky " +"budou vymazány" -#: ../../mod/settings.php:433 +#: ../../mod/settings.php:524 msgid "Notification Settings" msgstr "Nastavenà notifikacÃ" -#: ../../mod/settings.php:434 +#: ../../mod/settings.php:525 msgid "Send a notification email when:" -msgstr "PosÃlat e-mailové upozornÄ›nà když: " +msgstr "Poslat notifikaci e-mailem, když" -#: ../../mod/settings.php:435 +#: ../../mod/settings.php:526 msgid "You receive an introduction" -msgstr "ObdržÃte žádost o propojenÃ" +msgstr "obdržÃte žádost o propojenÃ" -#: ../../mod/settings.php:436 +#: ../../mod/settings.php:527 msgid "Your introductions are confirmed" msgstr "VaÅ¡e žádosti jsou potvrzeny" -#: ../../mod/settings.php:437 +#: ../../mod/settings.php:528 msgid "Someone writes on your profile wall" -msgstr "NÄ›kdo pÃÅ¡e na VaÅ¡i profilovou stránku" +msgstr "nÄ›kdo Vám napÃÅ¡e na VaÅ¡i profilovou stránku" -#: ../../mod/settings.php:438 +#: ../../mod/settings.php:529 msgid "Someone writes a followup comment" -msgstr "NÄ›kdo pÃÅ¡e následný komentář" +msgstr "nÄ›kdo Vám napÃÅ¡e následný komentář" -#: ../../mod/settings.php:439 +#: ../../mod/settings.php:530 msgid "You receive a private message" -msgstr "Obdržel jste soukromou zprávu" - -#: ../../mod/settings.php:440 -msgid "Password Settings" -msgstr "Nastavenà hesla" - -#: ../../mod/settings.php:441 -msgid "Leave password fields blank unless changing" -msgstr "Pokud nechcete zmÄ›nit heslo, položku hesla nevyplňujte" - -#: ../../mod/settings.php:442 -msgid "New Password:" -msgstr "Nové heslo:" - -#: ../../mod/settings.php:443 -msgid "Confirm:" -msgstr "PotvrÄte:" +msgstr "obdržÃte soukromou zprávu" -#: ../../mod/settings.php:444 -msgid "Advanced Page Settings" -msgstr "PokroÄilé nastavenà stránky" - -#: ../../mod/settings.php:459 -msgid "Default Post Permissions" -msgstr "Výchozà oprávnÄ›nà pro pÅ™ÃspÄ›vek" - -#: ../../mod/settings.php:460 -msgid "(click to open/close)" -msgstr "(KliknÄ›te pro otevÅ™enÃ/zavÅ™enÃ)" - -#: ../../mod/settings.php:473 +#: ../../mod/settings.php:534 msgid "Email/Mailbox Setup" msgstr "Nastavenà e-mailu" -#: ../../mod/settings.php:474 +#: ../../mod/settings.php:535 msgid "" "If you wish to communicate with email contacts using this service " "(optional), please specify how to connect to your mailbox." @@ -1463,37 +1658,49 @@ msgstr "" "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." -#: ../../mod/settings.php:475 +#: ../../mod/settings.php:536 +msgid "Last successful email check:" +msgstr "Poslednà úspěšná kontrola e-mailu:" + +#: ../../mod/settings.php:537 +msgid "Email access is disabled on this site." +msgstr "PÅ™Ãstup k elektronické poÅ¡tÄ› je na tomto serveru zakázán." + +#: ../../mod/settings.php:538 msgid "IMAP server name:" msgstr "jméno IMAP serveru:" -#: ../../mod/settings.php:477 +#: ../../mod/settings.php:539 msgid "IMAP port:" msgstr "IMAP port:" -#: ../../mod/settings.php:479 -msgid "Security (TLS or SSL):" -msgstr "ZabezpeÄenà (TLS nebo SSL):" +#: ../../mod/settings.php:540 +msgid "Security:" +msgstr "ZabezpeÄenÃ:" + +#: ../../mod/settings.php:540 +msgid "None" +msgstr "Žádný" -#: ../../mod/settings.php:481 +#: ../../mod/settings.php:541 msgid "Email login name:" msgstr "pÅ™ihlaÅ¡ovacà jméno k e-mailu:" -#: ../../mod/settings.php:483 +#: ../../mod/settings.php:542 msgid "Email password:" msgstr "heslo k VaÅ¡emu e-mailu:" -#: ../../mod/settings.php:484 -msgid "Reply-to address (Optional):" -msgstr "OdpovÄ›dÄ›t na adresu (nepovinné):" +#: ../../mod/settings.php:543 +msgid "Reply-to address:" +msgstr "OdpovÄ›dÄ›t na adresu:" -#: ../../mod/settings.php:486 +#: ../../mod/settings.php:544 msgid "Send public posts to all email contacts:" msgstr "Poslat veÅ™ejné pÅ™ÃspÄ›vky na vÅ¡echny e-mailové kontakty:" -#: ../../mod/settings.php:488 -msgid "Email access is disabled on this site." -msgstr "PÅ™Ãstup k elektronické poÅ¡tÄ› je na tomto serveru zakázán." +#: ../../mod/settings.php:549 +msgid "Advanced Page Settings" +msgstr "PokroÄilé nastavenà stránky" #: ../../mod/manage.php:37 #, php-format @@ -1516,15 +1723,23 @@ msgstr "" msgid "Select an identity to manage: " msgstr "Vyberte identitu pro správu:" -#: ../../mod/network.php:18 -msgid "Normal View" -msgstr "Normálnà zobrazenÃ" +#: ../../mod/network.php:27 +msgid "View Conversations" +msgstr "Zobrazit konverzace" + +#: ../../mod/network.php:29 +msgid "View New Items" +msgstr "Zobrazit nové položky" + +#: ../../mod/network.php:35 +msgid "View Any Items" +msgstr "Zobrazit vÅ¡echny položky" -#: ../../mod/network.php:20 -msgid "New Item View" -msgstr "Zobrazenà nových položek" +#: ../../mod/network.php:43 +msgid "View Starred Items" +msgstr "Zobrazit položky oznaÄené hvÄ›zdu" -#: ../../mod/network.php:64 +#: ../../mod/network.php:94 #, php-format msgid "Warning: This group contains %s member from an insecure network." msgid_plural "" @@ -1533,58 +1748,167 @@ msgstr[0] "UpozornÄ›nÃ: Tato skupina obsahuje %s Älena z nezabezpeÄené sÃtÄ msgstr[1] "UpozornÄ›nÃ: Tato skupina obsahuje %s Äleny z nezabezpeÄené sÃtÄ›." msgstr[2] "UpozornÄ›nÃ: Tato skupina obsahuje %s Äleny z nezabezpeÄené sÃtÄ›." -#: ../../mod/network.php:67 +#: ../../mod/network.php:97 msgid "Private messages to this group are at risk of public disclosure." msgstr "Soukromé zprávy této skupinÄ› jsou vystaveny riziku prozrazenÃ." -#: ../../mod/network.php:129 +#: ../../mod/network.php:164 msgid "No such group" msgstr "Žádná taková skupina" -#: ../../mod/network.php:140 +#: ../../mod/network.php:175 msgid "Group is empty" msgstr "Skupina je prázdná" -#: ../../mod/network.php:144 +#: ../../mod/network.php:180 msgid "Group: " msgstr "Skupina:" -#: ../../mod/network.php:154 +#: ../../mod/network.php:190 msgid "Contact: " msgstr "Kontakt:" -#: ../../mod/network.php:156 +#: ../../mod/network.php:192 msgid "Private messages to this person are at risk of public disclosure." msgstr "Soukromé zprávy této osobÄ› jsou vystaveny riziku prozrazenÃ." -#: ../../mod/network.php:161 +#: ../../mod/network.php:197 msgid "Invalid contact." msgstr "Neplatný kontakt." -#: ../../mod/network.php:262 ../../mod/register.php:465 -#: ../../mod/profile.php:265 ../../mod/display.php:147 +#: ../../mod/notes.php:74 +msgid "Save" +msgstr "Uložit" + +#: ../../mod/newmember.php:6 +msgid "Welcome to Friendika" +msgstr "VÃtejte na Friendika" + +#: ../../mod/newmember.php:8 +msgid "New Member Checklist" +msgstr "Seznam doporuÄenà pro nového Älena" + +#: ../../mod/newmember.php:12 msgid "" -"Shared content is covered by the <a " -"href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons " -"Attribution 3.0</a> license." +"We would like to offer some tips and links to help make your experience " +"enjoyable. Click any item to visit the relevant page." msgstr "" -"SdÃlený obsah je v souladu s <a " -"href=\"http://creativecommons.org/licenses/by/3.0/\">Commons Creative " -"3.0</a> licencÃ." +"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." -#: ../../mod/notes.php:41 ../../mod/apps.php:8 -msgid "Private Notes" -msgstr "Soukromé poznámky" +#: ../../mod/newmember.php:16 +msgid "" +"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." +msgstr "" +"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Ã." -#: ../../mod/notes.php:60 -msgid "Save" -msgstr "Uložit" +#: ../../mod/newmember.php:18 +msgid "" +"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." +msgstr "" +"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." + +#: ../../mod/newmember.php:20 +msgid "" +"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." +msgstr "" +"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Ã." + +#: ../../mod/newmember.php:23 +msgid "" +"Authorise the Facebook Connector if you currently have a Facebook account " +"and we will (optionally) import all your Facebook friends and conversations." +msgstr "" +"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." + +#: ../../mod/newmember.php:28 +msgid "" +"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" +msgstr "" +"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" + +#: ../../mod/newmember.php:30 +msgid "" +"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." +msgstr "" +"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." + +#: ../../mod/newmember.php:32 +msgid "" +"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." +msgstr "" +"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Ã." + +#: ../../mod/newmember.php:34 +msgid "" +"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." +msgstr "" +"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>." + +#: ../../mod/newmember.php:36 +msgid "" +"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." +msgstr "" +"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." + +#: ../../mod/newmember.php:38 +msgid "" +"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." +msgstr "" +"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ÃÅ¥." + +#: ../../mod/newmember.php:40 +msgid "" +"Our <strong>help</strong> pages may be consulted for detail on other program" +" features and resources." +msgstr "" +"Na stránkách <strong>NápovÄ›da</strong> naleznete nejen dalÅ¡Ã podrobnosti o " +"vÅ¡ech funkcÃch Friendika ale také dalÅ¡Ã zdroje informacÃ." -#: ../../mod/attach.php:6 +#: ../../mod/attach.php:8 msgid "Item not available." msgstr "Položka nenà k dispozici." -#: ../../mod/attach.php:16 +#: ../../mod/attach.php:20 msgid "Item was not found." msgstr "Položka nebyla nalezena." @@ -1596,7 +1920,7 @@ msgstr "Skupina vytvoÅ™ena." msgid "Could not create group." msgstr "Nelze vytvoÅ™it skupinu." -#: ../../mod/group.php:43 ../../mod/group.php:115 +#: ../../mod/group.php:43 ../../mod/group.php:123 msgid "Group not found." msgstr "Skupina nenalezena." @@ -1604,64 +1928,59 @@ msgstr "Skupina nenalezena." msgid "Group name changed." msgstr "Název skupiny byl zmÄ›nÄ›n." -#: ../../mod/group.php:67 ../../mod/profperm.php:19 ../../index.php:255 +#: ../../mod/group.php:67 ../../mod/profperm.php:19 ../../index.php:265 msgid "Permission denied" msgstr "NedostateÄné oprávnÄ›nÃ" -#: ../../mod/group.php:74 +#: ../../mod/group.php:82 msgid "Create a group of contacts/friends." msgstr "VytvoÅ™it skupinu kontaktů / přátel." -#: ../../mod/group.php:75 ../../mod/group.php:158 +#: ../../mod/group.php:83 ../../mod/group.php:166 msgid "Group Name: " msgstr "Název skupiny:" -#: ../../mod/group.php:90 +#: ../../mod/group.php:98 msgid "Group removed." msgstr "Skupina odstranÄ›na. " -#: ../../mod/group.php:92 +#: ../../mod/group.php:100 msgid "Unable to remove group." msgstr "Nelze odstranit skupinu." -#: ../../mod/group.php:156 ../../mod/profperm.php:96 +#: ../../mod/group.php:164 ../../mod/profperm.php:105 msgid "Click on a contact to add or remove." msgstr "KliknÄ›te na kontakt pro pÅ™idánà nebo odebránÃ" -#: ../../mod/group.php:157 +#: ../../mod/group.php:165 msgid "Group Editor" msgstr "Editor skupin" -#: ../../mod/group.php:172 +#: ../../mod/group.php:180 msgid "Members" msgstr "ÄŒlenové" -#: ../../mod/group.php:186 +#: ../../mod/group.php:195 msgid "All Contacts" msgstr "VÅ¡echny kontakty" -#: ../../mod/profperm.php:25 ../../mod/profperm.php:46 +#: ../../mod/profperm.php:25 ../../mod/profperm.php:55 msgid "Invalid profile identifier." msgstr "Neplatný identifikátor profilu." -#: ../../mod/profperm.php:92 +#: ../../mod/profperm.php:101 msgid "Profile Visibility Editor" msgstr "Editor viditelnosti profilu " -#: ../../mod/profperm.php:94 ../../mod/profile.php:116 -#: ../../include/profile_advanced.php:7 -msgid "Profile" -msgstr "Profil" - -#: ../../mod/profperm.php:105 +#: ../../mod/profperm.php:114 msgid "Visible To" msgstr "Viditelný pro" -#: ../../mod/profperm.php:116 +#: ../../mod/profperm.php:128 msgid "All Contacts (with secure profile access)" msgstr "VÅ¡echny kontakty (se zabezpeÄeným pÅ™Ãstupovým profilem )" -#: ../../mod/viewcontacts.php:25 ../../boot.php:2059 +#: ../../mod/viewcontacts.php:25 ../../include/text.php:555 msgid "View Contacts" msgstr "Zobrazit kontakty" @@ -1669,39 +1988,47 @@ msgstr "Zobrazit kontakty" msgid "No contacts." msgstr "Žádné kontakty." -#: ../../mod/register.php:49 +#: ../../mod/register.php:53 +msgid "An invitation is required." +msgstr "Pozvánka je vyžadována." + +#: ../../mod/register.php:58 +msgid "Invitation could not be verified." +msgstr "Pozvánka nemohla být ověřena." + +#: ../../mod/register.php:66 msgid "Invalid OpenID url" msgstr "Neplatný odkaz OpenID" -#: ../../mod/register.php:64 +#: ../../mod/register.php:81 msgid "Please enter the required information." msgstr "Zadejte prosÃm požadované informace." -#: ../../mod/register.php:76 +#: ../../mod/register.php:95 msgid "Please use a shorter name." msgstr "Použijte prosÃm kratÅ¡Ã jméno." -#: ../../mod/register.php:78 +#: ../../mod/register.php:97 msgid "Name too short." msgstr "Jméno je pÅ™ÃliÅ¡ krátké." -#: ../../mod/register.php:93 +#: ../../mod/register.php:112 msgid "That doesn't appear to be your full (First Last) name." msgstr "Nezdá se, že by to bylo vaÅ¡e celé jméno (kÅ™estnà jméno a pÅ™ÃjmenÃ)." -#: ../../mod/register.php:97 +#: ../../mod/register.php:117 msgid "Your email domain is not among those allowed on this site." msgstr "Váš e-mailová doména nenà na tomto serveru mezi povolenými." -#: ../../mod/register.php:100 +#: ../../mod/register.php:120 msgid "Not a valid email address." msgstr "Neplatná e-mailová adresa." -#: ../../mod/register.php:106 +#: ../../mod/register.php:130 msgid "Cannot use that email." msgstr "Tento e-mail nelze použÃt." -#: ../../mod/register.php:111 +#: ../../mod/register.php:136 msgid "" "Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and " "must also begin with a letter." @@ -1709,55 +2036,55 @@ msgstr "" "VaÅ¡e \"pÅ™ezdÃvka\" může obsahovat pouze \"a-z\", \"0-9\", \"-\", a \"_\", a " "musà zaÄÃnat pÃsmenem." -#: ../../mod/register.php:117 ../../mod/register.php:217 +#: ../../mod/register.php:142 ../../mod/register.php:243 msgid "Nickname is already registered. Please choose another." msgstr "PÅ™ezdÃvka je již registrována. ProsÃm vyberte jinou." -#: ../../mod/register.php:136 +#: ../../mod/register.php:161 msgid "SERIOUS ERROR: Generation of security keys failed." msgstr "Závažná chyba: Generovánà bezpeÄnostnÃch klÃÄů se nezdaÅ™ilo." -#: ../../mod/register.php:203 +#: ../../mod/register.php:229 msgid "An error occurred during registration. Please try again." msgstr "DoÅ¡lo k chybÄ› pÅ™i registraci. Zkuste to prosÃm znovu." -#: ../../mod/register.php:239 +#: ../../mod/register.php:265 msgid "An error occurred creating your default profile. Please try again." msgstr "" "DoÅ¡lo k chybÄ› pÅ™i vytvářenà VaÅ¡eho výchozÃho profilu. Zkuste to prosÃm " "znovu." -#: ../../mod/register.php:333 ../../mod/regmod.php:96 +#: ../../mod/register.php:367 ../../mod/regmod.php:52 #, php-format msgid "Registration details for %s" msgstr "RegistraÄnà údaje pro %s" -#: ../../mod/register.php:341 +#: ../../mod/register.php:375 msgid "" "Registration successful. Please check your email for further instructions." msgstr "" "Registrace úspěšná. Zkontrolujte prosÃm svůj e-mail pro dalÅ¡Ã instrukce." -#: ../../mod/register.php:345 +#: ../../mod/register.php:379 msgid "Failed to send email message. Here is the message that failed." msgstr "" "NepodaÅ™ilo se odeslat zprávu na e-mail. Zde je zpráva, která nebyla " "odeslána." -#: ../../mod/register.php:350 +#: ../../mod/register.php:384 msgid "Your registration can not be processed." msgstr "VaÅ¡i registraci nelze zpracovat." -#: ../../mod/register.php:383 +#: ../../mod/register.php:421 #, php-format msgid "Registration request at %s" msgstr "Žádost o registraci na %s" -#: ../../mod/register.php:392 +#: ../../mod/register.php:430 msgid "Your registration is pending approval by the site owner." msgstr "VaÅ¡e registrace Äeká na schválenà vlastnÃkem serveru." -#: ../../mod/register.php:440 +#: ../../mod/register.php:479 msgid "" "You may (optionally) fill in this form via OpenID by supplying your OpenID " "and clicking 'Register'." @@ -1765,7 +2092,7 @@ msgstr "" "Tento formulář můžete (volitelnÄ›) vyplnit s pomocà OpenID tÃm, že vyplnÃte " "své OpenID a kliknutete na tlaÄÃtko 'Zaregistrovat'." -#: ../../mod/register.php:441 +#: ../../mod/register.php:480 msgid "" "If you are not familiar with OpenID, please leave that field blank and fill " "in the rest of the items." @@ -1773,27 +2100,35 @@ msgstr "" "Pokud nepoužÃváte OpenID, nechte prosÃm toto pole prázdné a vyplňte zbylé " "položky." -#: ../../mod/register.php:442 +#: ../../mod/register.php:481 msgid "Your OpenID (optional): " msgstr "VaÅ¡e OpenID (nepovinné):" -#: ../../mod/register.php:456 +#: ../../mod/register.php:495 msgid "Include your profile in member directory?" msgstr "Uvést Váš profil v adresáři Älenů?" -#: ../../mod/register.php:472 +#: ../../mod/register.php:511 +msgid "Membership on this site is by invitation only." +msgstr "ÄŒlenstvà na tomto webu je pouze na pozvánÃ." + +#: ../../mod/register.php:512 +msgid "Your invitation ID: " +msgstr "VaÅ¡e pozvánà ID:" + +#: ../../mod/register.php:515 ../../mod/admin.php:299 msgid "Registration" msgstr "Registrace" -#: ../../mod/register.php:480 +#: ../../mod/register.php:523 msgid "Your Full Name (e.g. Joe Smith): " msgstr "VaÅ¡e celé jméno (napÅ™. Jan Novák):" -#: ../../mod/register.php:481 +#: ../../mod/register.php:524 msgid "Your Email Address: " msgstr "VaÅ¡e e-mailová adresa:" -#: ../../mod/register.php:482 +#: ../../mod/register.php:525 msgid "" "Choose a profile nickname. This must begin with a text character. Your " "profile address on this site will then be " @@ -1802,39 +2137,41 @@ msgstr "" "Vyberte pÅ™ezdÃvku k profilu. Ta musà zaÄÃt s textovým znakem. VaÅ¡e profilová" " adresa na tomto webu pak bude \"<strong>pÅ™ezdÃvka@$sitename</strong>\"." -#: ../../mod/register.php:483 +#: ../../mod/register.php:526 msgid "Choose a nickname: " msgstr "Vyberte pÅ™ezdÃvku:" -#: ../../mod/register.php:486 ../../include/nav.php:59 ../../boot.php:835 +#: ../../mod/register.php:529 ../../include/nav.php:59 ../../boot.php:637 msgid "Register" msgstr "Registrovat" -#: ../../mod/like.php:110 ../../addon/facebook/facebook.php:774 -#: ../../include/conversation.php:20 +#: ../../mod/like.php:110 ../../addon/facebook/facebook.php:954 +#: ../../include/diaspora.php:446 ../../include/conversation.php:26 +#: ../../include/conversation.php:35 msgid "status" msgstr "Stav" -#: ../../mod/like.php:127 ../../addon/facebook/facebook.php:778 -#: ../../include/conversation.php:25 +#: ../../mod/like.php:127 ../../addon/facebook/facebook.php:958 +#: ../../include/diaspora.php:463 ../../include/conversation.php:43 #, php-format msgid "%1$s likes %2$s's %3$s" msgstr "%1$s má rád %2$s' na %3$s" -#: ../../mod/like.php:129 ../../include/conversation.php:28 +#: ../../mod/like.php:129 ../../include/diaspora.php:465 +#: ../../include/conversation.php:46 #, php-format msgid "%1$s doesn't like %2$s's %3$s" msgstr "%1$s nemá rád %2$s na %3$s" -#: ../../mod/friendika.php:43 +#: ../../mod/friendika.php:42 msgid "This is Friendika version" msgstr "Toto je Friendika verze" -#: ../../mod/friendika.php:44 +#: ../../mod/friendika.php:43 msgid "running at web location" msgstr "běžÃcà na webu" -#: ../../mod/friendika.php:46 +#: ../../mod/friendika.php:45 msgid "" "Shared content within the Friendika network is provided under the <a " "href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons " @@ -1844,7 +2181,7 @@ msgstr "" "href=\"http://creativecommons.org/licenses/by/3.0/cz/\">licencà Creative " "Commons Attribution 3.0</a>" -#: ../../mod/friendika.php:48 +#: ../../mod/friendika.php:47 msgid "" "Please visit <a " "href=\"http://project.friendika.com\">Project.Friendika.com</a> to learn " @@ -1853,11 +2190,11 @@ msgstr "" "Pokud se chcete dozvÄ›dÄ›t vÃce o projektu Friendika, navÅ¡tivte, prosÃm, <a " "href=\"http://project.friendika.com\">Project.Friendika.com</a>" -#: ../../mod/friendika.php:50 +#: ../../mod/friendika.php:49 msgid "Bug reports and issues: please visit" msgstr "Pro hlášenà chyb a námÄ›tů na zmÄ›ny navÅ¡tivte:" -#: ../../mod/friendika.php:51 +#: ../../mod/friendika.php:50 msgid "" "Suggestions, praise, donations, etc. - please email \"Info\" at Friendika - " "dot com" @@ -1865,84 +2202,80 @@ msgstr "" "Návrhy, chválu, dary, atd. - prosÃm poÅ¡lete na e-mail \"Info\" na Friendika " "teÄka com" -#: ../../mod/friendika.php:56 +#: ../../mod/friendika.php:55 msgid "Installed plugins/addons/apps" msgstr "Nainstalované doplňky/aplikace" -#: ../../mod/friendika.php:64 +#: ../../mod/friendika.php:63 msgid "No installed plugins/addons/apps" msgstr "Nejsou žádné nainstalované doplňky/aplikace" -#: ../../mod/regmod.php:12 -msgid "Please login." -msgstr "PÅ™ihlaste se, prosÃm." +#: ../../mod/regmod.php:61 +msgid "Account approved." +msgstr "ÚÄet schválen." -#: ../../mod/regmod.php:56 +#: ../../mod/regmod.php:93 #, php-format msgid "Registration revoked for %s" msgstr "Registrace zruÅ¡ena pro %s" #: ../../mod/regmod.php:105 -msgid "Account approved." -msgstr "ÚÄet schválen." - -#: ../../mod/update_network.php:22 ../../mod/update_profile.php:41 -msgid "[Embedded content - reload page to view]" -msgstr "[Vložený obsah - obnovenà stránky pro zobrazenÃ]" +msgid "Please login." +msgstr "PÅ™ihlaste se, prosÃm." -#: ../../mod/item.php:37 +#: ../../mod/item.php:81 msgid "Unable to locate original post." msgstr "Nelze nalézt původnà pÅ™ÃspÄ›vek." -#: ../../mod/item.php:128 +#: ../../mod/item.php:196 msgid "Empty post discarded." msgstr "Prázdný pÅ™ÃspÄ›vek odstranÄ›n." -#: ../../mod/item.php:214 ../../mod/message.php:93 -#: ../../mod/wall_upload.php:79 ../../mod/wall_upload.php:88 -#: ../../mod/wall_upload.php:95 +#: ../../mod/item.php:296 ../../mod/message.php:93 +#: ../../mod/wall_upload.php:81 ../../mod/wall_upload.php:90 +#: ../../mod/wall_upload.php:97 msgid "Wall Photos" msgstr "Fotografie na zdi" -#: ../../mod/item.php:517 ../../mod/item.php:560 ../../mod/item.php:583 -#: ../../mod/item.php:624 ../../mod/dfrn_notify.php:193 -#: ../../mod/dfrn_notify.php:401 ../../mod/dfrn_notify.php:444 -#: ../../mod/dfrn_notify.php:530 ../../mod/dfrn_notify.php:571 +#: ../../mod/item.php:623 ../../mod/item.php:668 ../../mod/item.php:691 +#: ../../mod/item.php:734 ../../mod/dfrn_notify.php:293 +#: ../../mod/dfrn_notify.php:503 ../../mod/dfrn_notify.php:548 +#: ../../mod/dfrn_notify.php:634 ../../mod/dfrn_notify.php:677 msgid "noreply" msgstr "bez odpovÄ›di" -#: ../../mod/item.php:559 ../../mod/item.php:623 ../../mod/dfrn_notify.php:570 +#: ../../mod/item.php:667 ../../mod/item.php:733 ../../mod/dfrn_notify.php:676 msgid "Administrator@" -msgstr "Správce@" +msgstr "Administrator@" -#: ../../mod/item.php:562 ../../mod/dfrn_notify.php:446 -#: ../../mod/dfrn_notify.php:573 +#: ../../mod/item.php:670 ../../mod/dfrn_notify.php:550 +#: ../../mod/dfrn_notify.php:679 #, php-format msgid "%s commented on an item at %s" msgstr "%s okomentoval položku v %s" -#: ../../mod/item.php:626 +#: ../../mod/item.php:736 #, php-format msgid "%s posted to your profile wall at %s" msgstr "%s pÅ™idal pÅ™ÃspÄ›vek na vaÅ¡Ã profilovou zeÄ v %s" -#: ../../mod/item.php:655 +#: ../../mod/item.php:765 msgid "System error. Post not saved." msgstr "Chyba systému. PÅ™ÃspÄ›vek nebyl uložen." -#: ../../mod/item.php:674 +#: ../../mod/item.php:784 #, php-format msgid "" "This message was sent to you by %s, a member of the Friendika social " "network." msgstr "Tuto zprávu Vám zaslal %s, Älen sociálnà sÃtÄ› Friendika." -#: ../../mod/item.php:676 +#: ../../mod/item.php:786 #, php-format msgid "You may visit them online at %s" msgstr "Můžete je navÅ¡tÃvit online na adrese %s" -#: ../../mod/item.php:677 +#: ../../mod/item.php:787 msgid "" "Please contact the sender by replying to this post if you do not wish to " "receive these messages." @@ -1950,15 +2283,11 @@ msgstr "" "Pokud nechcete dostávat tyto zprávy, kontaktujte prosÃm odesilatele odpovÄ›dÃ" " na tento záznam." -#: ../../mod/item.php:679 +#: ../../mod/item.php:789 #, php-format msgid "%s posted an update." msgstr "%s poslal aktualizaci." -#: ../../mod/item.php:730 ../../mod/display.php:25 ../../mod/display.php:142 -msgid "Item not found." -msgstr "Položka nenalezena." - #: ../../mod/profile_photo.php:28 msgid "Image uploaded but image cropping failed." msgstr "Obrázek byl odeslán, ale jeho oÅ™Ãznutà se nesdaÅ™ilo." @@ -2014,6 +2343,10 @@ msgstr "Editace dokonÄena" msgid "Image uploaded successfully." msgstr "Obrázek byl úspěšnÄ› nahrán." +#: ../../mod/hcard.php:11 ../../mod/profile.php:11 ../../boot.php:792 +msgid "No profile" +msgstr "Žádný profil" + #: ../../mod/removeme.php:42 ../../mod/removeme.php:45 msgid "Remove My Account" msgstr "Odstranit můj úÄet" @@ -2050,7 +2383,7 @@ msgstr "Zpráva odeslána." msgid "Message could not be sent." msgstr "Zprávu se nepodaÅ™ilo odeslat." -#: ../../mod/message.php:125 ../../include/nav.php:101 +#: ../../mod/message.php:125 ../../include/nav.php:102 msgid "Messages" msgstr "Zprávy" @@ -2074,7 +2407,7 @@ msgstr "Zpráva odstranÄ›na." msgid "Conversation removed." msgstr "Konverzace odstranÄ›na." -#: ../../mod/message.php:172 ../../include/conversation.php:684 +#: ../../mod/message.php:172 ../../include/conversation.php:699 msgid "Please enter a link URL:" msgstr "Zadejte prosÃm URL odkaz:" @@ -2090,7 +2423,8 @@ msgstr "Adresát:" msgid "Subject:" msgstr "PÅ™edmÄ›t:" -#: ../../mod/message.php:185 ../../mod/message.php:319 ../../mod/invite.php:63 +#: ../../mod/message.php:185 ../../mod/message.php:319 +#: ../../mod/invite.php:101 msgid "Your message:" msgstr "VaÅ¡e zpráva:" @@ -2118,56 +2452,406 @@ msgstr "Smazat zprávu" msgid "Send Reply" msgstr "Poslat odpovÄ›Ä" -#: ../../mod/profile.php:11 ../../boot.php:2270 -msgid "No profile" -msgstr "Žádný profil" +#: ../../mod/admin.php:66 ../../mod/admin.php:297 +msgid "Site" +msgstr "Web" + +#: ../../mod/admin.php:67 ../../mod/admin.php:460 ../../mod/admin.php:472 +msgid "Users" +msgstr "Uživatelé" + +#: ../../mod/admin.php:68 ../../mod/admin.php:549 ../../mod/admin.php:586 +msgid "Plugins" +msgstr "Pluginy" + +#: ../../mod/admin.php:69 +msgid "Update" +msgstr "Aktualizace" + +#: ../../mod/admin.php:83 ../../mod/admin.php:651 +msgid "Logs" +msgstr "Logy" + +#: ../../mod/admin.php:88 +msgid "User registrations waiting for confirmation" +msgstr "Registrace uživatele Äeká na potvrzenÃ" + +#: ../../mod/admin.php:118 ../../mod/admin.php:502 ../../mod/display.php:25 +#: ../../mod/display.php:112 ../../include/items.php:1842 +msgid "Item not found." +msgstr "Položka nenalezena." + +#: ../../mod/admin.php:151 ../../mod/admin.php:296 ../../mod/admin.php:459 +#: ../../mod/admin.php:548 ../../mod/admin.php:585 ../../mod/admin.php:650 +msgid "Administration" +msgstr "Administrace" + +#: ../../mod/admin.php:152 +msgid "Summary" +msgstr "ShrnutÃ" + +#: ../../mod/admin.php:153 +msgid "Registered users" +msgstr "Registrovanà uživatelé" + +#: ../../mod/admin.php:155 +msgid "Pending registrations" +msgstr "ÄŒekajÃcà registrace" + +#: ../../mod/admin.php:156 +msgid "Version" +msgstr "Verze" + +#: ../../mod/admin.php:158 +msgid "Active plugins" +msgstr "Aktivnà pluginy" + +#: ../../mod/admin.php:245 +msgid "Site settings updated." +msgstr "Nastavenà webu aktualizováno." + +#: ../../mod/admin.php:289 +msgid "Closed" +msgstr "UzavÅ™Ãt" + +#: ../../mod/admin.php:290 +msgid "Requires approval" +msgstr "Vyžaduje schválenÃ" + +#: ../../mod/admin.php:291 +msgid "Open" +msgstr "OtevÅ™ená" + +#: ../../mod/admin.php:300 +msgid "File upload" +msgstr "Nahránà souborů" + +#: ../../mod/admin.php:301 +msgid "Policies" +msgstr "Politiky" + +#: ../../mod/admin.php:302 +msgid "Advanced" +msgstr "PokroÄilé" + +#: ../../mod/admin.php:306 ../../addon/statusnet/statusnet.php:459 +msgid "Site name" +msgstr "Název webu" + +#: ../../mod/admin.php:307 +msgid "Banner/Logo" +msgstr "Banner/logo" + +#: ../../mod/admin.php:308 +msgid "System language" +msgstr "Systémový jazyk" + +#: ../../mod/admin.php:309 +msgid "System theme" +msgstr "Grafická Å¡ablona systému " + +#: ../../mod/admin.php:311 +msgid "Maximum image size" +msgstr "Maximálnà velikost obrazu" + +#: ../../mod/admin.php:313 +msgid "Register policy" +msgstr "Politika registrace" -#: ../../mod/profile.php:59 +#: ../../mod/admin.php:314 +msgid "Register text" +msgstr "Registrace textu" + +#: ../../mod/admin.php:315 +msgid "Allowed friend domains" +msgstr "Povolené domény přátel" + +#: ../../mod/admin.php:316 +msgid "Allowed email domains" +msgstr "Povolené e-mailové domény" + +#: ../../mod/admin.php:317 +msgid "Block public" +msgstr "Blokovat veÅ™ejnost" + +#: ../../mod/admin.php:318 +msgid "Force publish" +msgstr "Publikovat" + +#: ../../mod/admin.php:319 +msgid "Global directory update URL" +msgstr "aktualizace URL adresy GlobálnÃho adresáře " + +#: ../../mod/admin.php:321 +msgid "Block multiple registrations" +msgstr "Blokovat vÃce registracÃ" + +#: ../../mod/admin.php:322 +msgid "OpenID support" +msgstr "podpora OpenID" + +#: ../../mod/admin.php:323 +msgid "Gravatar support" +msgstr "podpora Gravatar" + +#: ../../mod/admin.php:324 +msgid "Fullname check" +msgstr "kontrola úplného jména" + +#: ../../mod/admin.php:325 +msgid "UTF-8 Regular expressions" +msgstr "UTF-8 Regulárnà výrazy" + +#: ../../mod/admin.php:326 +msgid "Show Community Page" +msgstr "Zobrazit stránku komunity" + +#: ../../mod/admin.php:327 +msgid "Enable OStatus support" +msgstr "Zapnout podporu OStatus" + +#: ../../mod/admin.php:328 +msgid "Only allow Friendika contacts" +msgstr "Povolit pouze Friendika kontakty " + +#: ../../mod/admin.php:329 +msgid "Verify SSL" +msgstr "Ověřit SSL" + +#: ../../mod/admin.php:330 +msgid "Proxy user" +msgstr "Proxy uživatel" + +#: ../../mod/admin.php:331 +msgid "Proxy URL" +msgstr "Proxy URL adresa" + +#: ../../mod/admin.php:332 +msgid "Network timeout" +msgstr "Äas sÃÅ¥ového spojenà vyprÅ¡elo (timeout)" + +#: ../../mod/admin.php:353 +#, php-format +msgid "%s user blocked" +msgid_plural "%s users blocked/unblocked" +msgstr[0] "%s uživatel zablokován" +msgstr[1] "%s uživatelů zablokováno / odblokováno" +msgstr[2] "%s uživatelů zablokováno / odblokováno" + +#: ../../mod/admin.php:360 +#, php-format +msgid "%s user deleted" +msgid_plural "%s users deleted" +msgstr[0] "%s uživatel smazán" +msgstr[1] "%s uživatelů smazáno" +msgstr[2] "%s uživatelů smazáno" + +#: ../../mod/admin.php:394 +#, php-format +msgid "User '%s' deleted" +msgstr "Uživatel '%s' smazán" + +#: ../../mod/admin.php:401 +#, php-format +msgid "User '%s' unblocked" +msgstr "Uživatel '%s' odblokován" + +#: ../../mod/admin.php:401 +#, php-format +msgid "User '%s' blocked" +msgstr "Uživatel '%s' blokován" + +#: ../../mod/admin.php:462 +msgid "select all" +msgstr "Vybrat vÅ¡e" + +#: ../../mod/admin.php:463 +msgid "User registrations waiting for confirm" +msgstr "Registrace uživatele Äeká na potvrzenÃ" + +#: ../../mod/admin.php:464 +msgid "Request date" +msgstr "Datum žádosti" + +#: ../../mod/admin.php:464 ../../mod/admin.php:473 +msgid "Email" +msgstr "E-mail" + +#: ../../mod/admin.php:465 +msgid "No registrations." +msgstr "Žádné registrace." + +#: ../../mod/admin.php:467 +msgid "Deny" +msgstr "OdmÃtnout" + +#: ../../mod/admin.php:469 +msgid "Block" +msgstr "Blokovat" + +#: ../../mod/admin.php:470 +msgid "Unblock" +msgstr "Odblokovat" + +#: ../../mod/admin.php:473 +msgid "Register date" +msgstr "Datum registrace" + +#: ../../mod/admin.php:473 +msgid "Last login" +msgstr "Datum poslednÃho pÅ™ihlášenÃ" + +#: ../../mod/admin.php:473 +msgid "Last item" +msgstr "Poslednà položka" + +#: ../../mod/admin.php:473 +msgid "Account" +msgstr "ÚÄet" + +#: ../../mod/admin.php:475 +msgid "" +"Selected users will be deleted!\\n\\nEverything these users had posted on " +"this site will be permanently deleted!\\n\\nAre you sure?" +msgstr "" +"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?" + +#: ../../mod/admin.php:476 +msgid "" +"The user {0} will be deleted!\\n\\nEverything this user has posted on this " +"site will be permanently deleted!\\n\\nAre you sure?" +msgstr "" +"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?" + +#: ../../mod/admin.php:512 +#, php-format +msgid "Plugin %s disabled." +msgstr "Plugin %s zakázán." + +#: ../../mod/admin.php:516 +#, php-format +msgid "Plugin %s enabled." +msgstr "Plugin %s povolen." + +#: ../../mod/admin.php:526 +msgid "Disable" +msgstr "Zakázat" + +#: ../../mod/admin.php:528 +msgid "Enable" +msgstr "Povolit" + +#: ../../mod/admin.php:550 +msgid "Toggle" +msgstr "PÅ™epnout" + +#: ../../mod/admin.php:551 ../../include/nav.php:108 +msgid "Settings" +msgstr "NastavenÃ" + +#: ../../mod/admin.php:613 +msgid "Log settings updated." +msgstr "Nastavenà protokolu aktualizováno." + +#: ../../mod/admin.php:653 +msgid "Clear" +msgstr "VyÄistit" + +#: ../../mod/admin.php:659 +msgid "Debugging" +msgstr "LadÄ›nÃ" + +#: ../../mod/admin.php:660 +msgid "Log file" +msgstr "Soubor s logem" + +#: ../../mod/admin.php:660 +msgid "Must be writable by web server. Relative to your Friendika index.php." +msgstr "" +"Webový server musà mÃt práva zápisu . Relativnà k index.php Friendika." + +#: ../../mod/admin.php:661 +msgid "Log level" +msgstr "Úroveň auditu" + +#: ../../mod/admin.php:702 +msgid "Close" +msgstr "UzavÅ™ená" + +#: ../../mod/admin.php:708 +msgid "FTP Host" +msgstr "Hostitel FTP" + +#: ../../mod/admin.php:709 +msgid "FTP Path" +msgstr "Cesta FTP" + +#: ../../mod/admin.php:710 +msgid "FTP User" +msgstr "FTP uživatel" + +#: ../../mod/admin.php:711 +msgid "FTP Password" +msgstr "FTP heslo" + +#: ../../mod/profile.php:102 ../../mod/display.php:63 msgid "Access to this profile has been restricted." msgstr "PÅ™Ãstup na tento profil byl omezen." -#: ../../mod/profile.php:115 -msgid "Status" -msgstr "Stav" - -#: ../../mod/profile.php:117 -msgid "Photos" -msgstr "Fotografie" +#: ../../mod/profile.php:133 +msgid "Tips for New Members" +msgstr "Tipy pro nové Äleny" -#: ../../mod/openid.php:62 ../../mod/openid.php:122 ../../include/auth.php:114 -#: ../../include/auth.php:139 ../../include/auth.php:192 +#: ../../mod/openid.php:62 ../../mod/openid.php:122 ../../include/auth.php:120 +#: ../../include/auth.php:145 ../../include/auth.php:198 msgid "Login failed." msgstr "PÅ™ihlášenà se nezdaÅ™ilo." -#: ../../mod/openid.php:78 ../../include/auth.php:208 +#: ../../mod/openid.php:78 ../../include/auth.php:214 msgid "Welcome " -msgstr "VÃtejte" +msgstr "VÃtejte " -#: ../../mod/openid.php:79 ../../include/auth.php:209 +#: ../../mod/openid.php:79 ../../include/auth.php:215 msgid "Please upload a profile photo." msgstr "ProsÃm nahrejte profilovou fotografii" -#: ../../mod/openid.php:82 ../../include/auth.php:212 +#: ../../mod/openid.php:82 ../../include/auth.php:218 msgid "Welcome back " -msgstr "VÃtejte zpÄ›t" +msgstr "VÃtejte zpÄ›t " -#: ../../mod/follow.php:43 -msgid "The profile address specified does not provide adequate information." -msgstr "Uvedená adresa profilu neposkytuje dostateÄné informace." +#: ../../mod/follow.php:39 +msgid "" +"This site is not configured to allow communications with other networks." +msgstr "" +"Tento web nenà nakonfigurován tak, aby umožňoval komunikaci s ostatnÃmi " +"sÃtÄ›mi." -#: ../../mod/follow.php:45 +#: ../../mod/follow.php:40 ../../mod/follow.php:50 msgid "No compatible communication protocols or feeds were discovered." msgstr "Nenalezen žádný kompatibilnà komunikaÄnà protokol nebo kanál." -#: ../../mod/follow.php:47 +#: ../../mod/follow.php:48 +msgid "The profile address specified does not provide adequate information." +msgstr "Uvedená adresa profilu neposkytuje dostateÄné informace." + +#: ../../mod/follow.php:52 msgid "An author or name was not found." msgstr "Autor nebo jméno nenalezeno" -#: ../../mod/follow.php:49 +#: ../../mod/follow.php:54 msgid "No browser URL could be matched to this address." msgstr "Této adrese neodpovÃdá žádné URL prohlÞeÄe." -#: ../../mod/follow.php:57 +#: ../../mod/follow.php:61 +msgid "" +"The profile address specified belongs to a network which has been disabled " +"on this site." +msgstr "" +"Zadaná adresa profilu patřà do sÃtÄ›, která byla na tomto serveru zakázána." + +#: ../../mod/follow.php:66 msgid "" "Limited profile. This person will be unable to receive direct/personal " "notifications from you." @@ -2175,19 +2859,19 @@ msgstr "" "Omezený profil. Tato osoba nebude schopna od Vás pÅ™ijÃmat pÅ™Ãmé / osobnà " "sdÄ›lenÃ." -#: ../../mod/follow.php:112 +#: ../../mod/follow.php:122 msgid "Unable to retrieve contact information." msgstr "NepodaÅ™ilo se zÃskat kontaktnà informace." -#: ../../mod/follow.php:158 +#: ../../mod/follow.php:168 msgid "following" msgstr "následujÃcÃ" -#: ../../mod/display.php:135 +#: ../../mod/display.php:105 msgid "Item has been removed." msgstr "Položka byla odstranÄ›na." -#: ../../mod/dfrn_notify.php:251 +#: ../../mod/dfrn_notify.php:353 msgid "New mail received at " msgstr "PÅ™iÅ¡el nový e-mail v" @@ -2195,16 +2879,16 @@ msgstr "PÅ™iÅ¡el nový e-mail v" msgid "Applications" msgstr "Aplikace" -#: ../../mod/search.php:26 ../../include/nav.php:70 ../../boot.php:2114 +#: ../../mod/apps.php:11 +msgid "No installed applications." +msgstr "Žádné nainstalované aplikace." + +#: ../../mod/search.php:26 ../../include/text.php:610 ../../include/nav.php:69 msgid "Search" msgstr "VyhledávánÃ" -#: ../../mod/search.php:69 -msgid "No results." -msgstr "Žádné výsledky." - -#: ../../mod/profiles.php:21 ../../mod/profiles.php:240 -#: ../../mod/profiles.php:345 ../../mod/dfrn_confirm.php:62 +#: ../../mod/profiles.php:21 ../../mod/profiles.php:236 +#: ../../mod/profiles.php:341 ../../mod/dfrn_confirm.php:62 msgid "Profile not found." msgstr "Profil nenalezen" @@ -2212,187 +2896,184 @@ msgstr "Profil nenalezen" msgid "Profile Name is required." msgstr "Jméno profilu je povinné." -#: ../../mod/profiles.php:202 +#: ../../mod/profiles.php:198 msgid "Profile updated." msgstr "Profil aktualizován." -#: ../../mod/profiles.php:257 +#: ../../mod/profiles.php:253 msgid "Profile deleted." msgstr "Profil smazán." -#: ../../mod/profiles.php:273 ../../mod/profiles.php:304 +#: ../../mod/profiles.php:269 ../../mod/profiles.php:300 msgid "Profile-" msgstr "Profil-" -#: ../../mod/profiles.php:292 ../../mod/profiles.php:331 +#: ../../mod/profiles.php:288 ../../mod/profiles.php:327 msgid "New profile created." msgstr "Nový profil vytvoÅ™en." -#: ../../mod/profiles.php:310 +#: ../../mod/profiles.php:306 msgid "Profile unavailable to clone." msgstr "Profil nenà možné naklonovat." -#: ../../mod/profiles.php:357 +#: ../../mod/profiles.php:353 msgid "Hide your contact/friend list from viewers of this profile?" msgstr "" "Skrýt u tohoto profilu vaÅ¡e kontakty / seznam přátel pÅ™ed pÅ™ed dalÅ¡Ãmi " "uživateli zobrazujÃcà si tento profil?" -#: ../../mod/profiles.php:366 -msgid "Hide profile details and all your messages from unknown viewers?" -msgstr "Skrýt detaily profilu a vÅ¡echny zprávy pÅ™ed neznámými uživateli?" - -#: ../../mod/profiles.php:382 +#: ../../mod/profiles.php:371 msgid "Edit Profile Details" msgstr "Upravit podrobnosti profilu " -#: ../../mod/profiles.php:384 +#: ../../mod/profiles.php:373 msgid "View this profile" msgstr "Zobrazit tento profil" -#: ../../mod/profiles.php:385 +#: ../../mod/profiles.php:374 msgid "Create a new profile using these settings" msgstr "VytvoÅ™it nový profil pomocà tohoto nastavenÃ" -#: ../../mod/profiles.php:386 +#: ../../mod/profiles.php:375 msgid "Clone this profile" msgstr "Klonovat tento profil" -#: ../../mod/profiles.php:387 +#: ../../mod/profiles.php:376 msgid "Delete this profile" msgstr "Smazat tento profil" -#: ../../mod/profiles.php:388 +#: ../../mod/profiles.php:377 msgid "Profile Name:" msgstr "Jméno profilu:" -#: ../../mod/profiles.php:389 +#: ../../mod/profiles.php:378 msgid "Your Full Name:" msgstr "VaÅ¡e celé jméno:" -#: ../../mod/profiles.php:390 +#: ../../mod/profiles.php:379 msgid "Title/Description:" msgstr "Název / Popis:" -#: ../../mod/profiles.php:391 +#: ../../mod/profiles.php:380 msgid "Your Gender:" msgstr "VaÅ¡e pohlavÃ:" -#: ../../mod/profiles.php:392 -msgid "Birthday (y/m/d):" -msgstr "Narozeniny (rok/mÄ›sÃc/den):" +#: ../../mod/profiles.php:381 +#, php-format +msgid "Birthday (%s):" +msgstr "Narozeniny uživatele (%s):" -#: ../../mod/profiles.php:393 +#: ../../mod/profiles.php:382 msgid "Street Address:" msgstr "Ulice:" -#: ../../mod/profiles.php:394 +#: ../../mod/profiles.php:383 msgid "Locality/City:" msgstr "MÄ›sto:" -#: ../../mod/profiles.php:395 +#: ../../mod/profiles.php:384 msgid "Postal/Zip Code:" msgstr "PSÄŒ:" -#: ../../mod/profiles.php:396 +#: ../../mod/profiles.php:385 msgid "Country:" msgstr "ZemÄ›:" -#: ../../mod/profiles.php:397 +#: ../../mod/profiles.php:386 msgid "Region/State:" msgstr "Region / stát:" -#: ../../mod/profiles.php:398 +#: ../../mod/profiles.php:387 msgid "<span class=\"heart\">♥</span> Marital Status:" msgstr "<span class=\"heart\">♥</span> Rodinný stav:" -#: ../../mod/profiles.php:399 +#: ../../mod/profiles.php:388 msgid "Who: (if applicable)" msgstr "Kdo: (pokud je možné)" -#: ../../mod/profiles.php:400 +#: ../../mod/profiles.php:389 msgid "Examples: cathy123, Cathy Williams, cathy@example.com" msgstr "PÅ™Ãklady: jan123, Jan Novák, jan@seznam.cz" -#: ../../mod/profiles.php:401 ../../include/profile_advanced.php:90 +#: ../../mod/profiles.php:390 ../../include/profile_advanced.php:90 msgid "Sexual Preference:" msgstr "Sexuálnà preference:" -#: ../../mod/profiles.php:402 +#: ../../mod/profiles.php:391 msgid "Homepage URL:" msgstr "Odkaz na domovskou stránku:" -#: ../../mod/profiles.php:403 ../../include/profile_advanced.php:115 +#: ../../mod/profiles.php:392 ../../include/profile_advanced.php:115 msgid "Political Views:" msgstr "Politické pÅ™esvÄ›dÄenÃ:" -#: ../../mod/profiles.php:404 +#: ../../mod/profiles.php:393 msgid "Religious Views:" msgstr "Náboženské pÅ™esvÄ›dÄenÃ:" -#: ../../mod/profiles.php:405 +#: ../../mod/profiles.php:394 msgid "Public Keywords:" msgstr "VeÅ™ejná klÃÄová slova:" -#: ../../mod/profiles.php:406 +#: ../../mod/profiles.php:395 msgid "Private Keywords:" msgstr "Soukromá klÃÄová slova:" -#: ../../mod/profiles.php:407 +#: ../../mod/profiles.php:396 msgid "Example: fishing photography software" msgstr "PÅ™Ãklad: fishing photography software" -#: ../../mod/profiles.php:408 +#: ../../mod/profiles.php:397 msgid "(Used for suggesting potential friends, can be seen by others)" msgstr "" "(PoužÃvá se pro doporuÄovánà potenciálnÃch přátel, může být vidÄ›no " "ostatnÃmi)" -#: ../../mod/profiles.php:409 +#: ../../mod/profiles.php:398 msgid "(Used for searching profiles, never shown to others)" msgstr "(PoužÃvá se pro vyhledávánà profilů, nenà nikdy zobrazeno ostatnÃm)" -#: ../../mod/profiles.php:410 +#: ../../mod/profiles.php:399 msgid "Tell us about yourself..." msgstr "ŘeknÄ›te nám nÄ›co o sobÄ› ..." -#: ../../mod/profiles.php:411 +#: ../../mod/profiles.php:400 msgid "Hobbies/Interests" msgstr "KonÃÄky/zájmy" -#: ../../mod/profiles.php:412 +#: ../../mod/profiles.php:401 msgid "Contact information and Social Networks" msgstr "Kontaktnà informace a sociálnà sÃtÄ›" -#: ../../mod/profiles.php:413 +#: ../../mod/profiles.php:402 msgid "Musical interests" msgstr "Hudebnà vkus" -#: ../../mod/profiles.php:414 +#: ../../mod/profiles.php:403 msgid "Books, literature" msgstr "Knihy, literatura" -#: ../../mod/profiles.php:415 +#: ../../mod/profiles.php:404 msgid "Television" msgstr "Televize" -#: ../../mod/profiles.php:416 +#: ../../mod/profiles.php:405 msgid "Film/dance/culture/entertainment" msgstr "Film/tanec/kultura/zábava" -#: ../../mod/profiles.php:417 +#: ../../mod/profiles.php:406 msgid "Love/romance" msgstr "Láska/romantika" -#: ../../mod/profiles.php:418 +#: ../../mod/profiles.php:407 msgid "Work/employment" msgstr "Práce/zamÄ›stnánÃ" -#: ../../mod/profiles.php:419 +#: ../../mod/profiles.php:408 msgid "School/education" msgstr "Å kola/vzdÄ›lánÃ" -#: ../../mod/profiles.php:424 +#: ../../mod/profiles.php:413 msgid "" "This is your <strong>public</strong> profile.<br />It <strong>may</strong> " "be visible to anybody using the internet." @@ -2400,31 +3081,31 @@ msgstr "" "Toto je váš <strong>veÅ™ejný</strong> profil.<br />Ten <strong>může</strong> " "být viditelný kýmkoliv na internetu." -#: ../../mod/profiles.php:435 ../../mod/directory.php:112 +#: ../../mod/profiles.php:423 ../../mod/directory.php:112 msgid "Age: " msgstr "VÄ›k: " -#: ../../mod/profiles.php:470 ../../include/nav.php:108 +#: ../../mod/profiles.php:458 ../../include/nav.php:109 msgid "Profiles" msgstr "Profily" -#: ../../mod/profiles.php:471 +#: ../../mod/profiles.php:459 msgid "Change profile photo" msgstr "ZmÄ›nit profilovou fotografii" -#: ../../mod/profiles.php:472 +#: ../../mod/profiles.php:460 msgid "Create New Profile" msgstr "VytvoÅ™it nový profil" -#: ../../mod/profiles.php:482 +#: ../../mod/profiles.php:470 msgid "Profile Image" msgstr "Profilový obrázek" -#: ../../mod/profiles.php:484 -msgid "Visible to everybody" -msgstr "Viditelné pro vÅ¡echny" +#: ../../mod/profiles.php:472 +msgid "visible to everybody" +msgstr "viditelné pro vÅ¡echny" -#: ../../mod/profiles.php:485 +#: ../../mod/profiles.php:473 msgid "Edit visibility" msgstr "Upravit viditelnost" @@ -2452,22 +3133,22 @@ msgstr "PohlavÃ: " msgid "No entries (some entries may be hidden)." msgstr "Žádné záznamy (nÄ›které položky mohou být skryty)." -#: ../../mod/invite.php:28 +#: ../../mod/invite.php:35 #, php-format msgid "%s : Not a valid email address." msgstr "%s : nenà platná e-mailová adresa." -#: ../../mod/invite.php:32 +#: ../../mod/invite.php:59 #, php-format msgid "Please join my network on %s" msgstr "ProsÃm, pÅ™ipojte se do mé sÃtÄ› na %s" -#: ../../mod/invite.php:42 +#: ../../mod/invite.php:69 #, php-format msgid "%s : Message delivery failed." msgstr "%s : DoruÄenà zprávy se nezdaÅ™ilo." -#: ../../mod/invite.php:46 +#: ../../mod/invite.php:73 #, php-format msgid "%d message sent." msgid_plural "%d messages sent." @@ -2475,83 +3156,91 @@ msgstr[0] "%d zpráva odeslána." msgstr[1] "%d zprávy odeslány." msgstr[2] "%d zprávy odeslány." -#: ../../mod/invite.php:61 +#: ../../mod/invite.php:92 +msgid "You have no more invitations available" +msgstr "Nemáte k dispozici žádné dalÅ¡Ã pozvánky" + +#: ../../mod/invite.php:99 msgid "Send invitations" msgstr "Poslat pozvánky" -#: ../../mod/invite.php:62 +#: ../../mod/invite.php:100 msgid "Enter email addresses, one per line:" msgstr "Zadejte e-mailové adresy, jednu na řádek:" -#: ../../mod/invite.php:64 +#: ../../mod/invite.php:102 #, php-format msgid "Please join my social network on %s" msgstr "ProsÃm, pÅ™ipojte se do mé sociálnà sÃtÄ› na %s" -#: ../../mod/invite.php:65 +#: ../../mod/invite.php:103 msgid "To accept this invitation, please visit:" msgstr "Chcete-li toto pozvánà pÅ™ijmout, navÅ¡tivte prosÃm:" -#: ../../mod/invite.php:66 +#: ../../mod/invite.php:104 +msgid "You will need to supply this invitation code: $invite_code" +msgstr "Budete muset zadat kód této pozvánky: $invite_code" + +#: ../../mod/invite.php:104 msgid "" "Once you have registered, please connect with me via my profile page at:" msgstr "" "Jakmile se zaregistrujete, prosÃm spojte se se mnou pÅ™es mou profilovu " "stránku na:" -#: ../../mod/dfrn_confirm.php:231 +#: ../../mod/dfrn_confirm.php:233 msgid "Response from remote site was not understood." msgstr "OdpovÄ›Ä ze vzdáleného serveru nebyla srozumitelná." -#: ../../mod/dfrn_confirm.php:240 +#: ../../mod/dfrn_confirm.php:242 msgid "Unexpected response from remote site: " msgstr "NeoÄekávaná odpovÄ›Ä od vzdáleného serveru:" -#: ../../mod/dfrn_confirm.php:248 +#: ../../mod/dfrn_confirm.php:250 msgid "Confirmation completed successfully." msgstr "Potvrzenà úspěšnÄ› dokonÄena." -#: ../../mod/dfrn_confirm.php:250 ../../mod/dfrn_confirm.php:264 -#: ../../mod/dfrn_confirm.php:271 +#: ../../mod/dfrn_confirm.php:252 ../../mod/dfrn_confirm.php:266 +#: ../../mod/dfrn_confirm.php:273 msgid "Remote site reported: " msgstr "Vzdálený server oznámil:" -#: ../../mod/dfrn_confirm.php:262 +#: ../../mod/dfrn_confirm.php:264 msgid "Temporary failure. Please wait and try again." msgstr "DoÄasné selhánÃ. ProsÃm, vyÄkejte a zkuste to znovu." -#: ../../mod/dfrn_confirm.php:269 +#: ../../mod/dfrn_confirm.php:271 msgid "Introduction failed or was revoked." msgstr "Žádost o propojenà selhala nebo byla zruÅ¡ena." -#: ../../mod/dfrn_confirm.php:387 +#: ../../mod/dfrn_confirm.php:393 msgid "Unable to set contact photo." msgstr "Nelze nastavit fotografii kontaktu." -#: ../../mod/dfrn_confirm.php:430 ../../include/conversation.php:61 +#: ../../mod/dfrn_confirm.php:436 ../../include/conversation.php:79 #, php-format msgid "%1$s is now friends with %2$s" msgstr "%1$s je nynà pÅ™Ãtel s %2$s" -#: ../../mod/dfrn_confirm.php:501 +#: ../../mod/dfrn_confirm.php:507 #, php-format msgid "No user record found for '%s' " msgstr "Pro '%s' nenalezen žádný uživatelský záznam " -#: ../../mod/dfrn_confirm.php:511 +#: ../../mod/dfrn_confirm.php:517 msgid "Our site encryption key is apparently messed up." msgstr "Náš Å¡ifrovacà klÃÄ zÅ™ejmÄ› pÅ™estal správnÄ› fungovat." -#: ../../mod/dfrn_confirm.php:522 +#: ../../mod/dfrn_confirm.php:528 msgid "Empty site URL was provided or URL could not be decrypted by us." msgstr "" "Byla poskytnuta prázdná URL adresa nebo se nepodaÅ™ilo URL adresu deÅ¡ifrovat." -#: ../../mod/dfrn_confirm.php:534 +#: ../../mod/dfrn_confirm.php:549 msgid "Contact record was not found for you on our site." msgstr "Kontakt záznam nebyl nalezen pro vás na naÅ¡ich stránkách." -#: ../../mod/dfrn_confirm.php:562 +#: ../../mod/dfrn_confirm.php:578 msgid "" "The ID provided by your system is a duplicate on our system. It should work " "if you try again." @@ -2559,103 +3248,131 @@ msgstr "" "Váš systém poskytl duplicitnà ID vůÄi naÅ¡emu systému. Pokuste se akci " "zopakovat." -#: ../../mod/dfrn_confirm.php:573 +#: ../../mod/dfrn_confirm.php:589 msgid "Unable to set your contact credentials on our system." msgstr "Nelze nastavit VaÅ¡e pÅ™ihlaÅ¡ovacà údaje v naÅ¡em systému." -#: ../../mod/dfrn_confirm.php:626 +#: ../../mod/dfrn_confirm.php:642 msgid "Unable to update your contact profile details on our system" msgstr "Nelze aktualizovat Váš profil v naÅ¡em systému" -#: ../../mod/dfrn_confirm.php:656 +#: ../../mod/dfrn_confirm.php:672 #, php-format msgid "Connection accepted at %s" msgstr "PÅ™ipojenà pÅ™ijato na %s" -#: ../../addon/facebook/facebook.php:248 +#: ../../addon/facebook/facebook.php:314 msgid "Facebook disabled" msgstr "Facebook zakázán" -#: ../../addon/facebook/facebook.php:253 +#: ../../addon/facebook/facebook.php:319 msgid "Updating contacts" msgstr "Aktualizace kontaktů" -#: ../../addon/facebook/facebook.php:262 +#: ../../addon/facebook/facebook.php:328 msgid "Facebook API key is missing." msgstr "Chybà Facebook API klÃÄ." -#: ../../addon/facebook/facebook.php:269 +#: ../../addon/facebook/facebook.php:335 msgid "Facebook Connect" msgstr "Facebook pÅ™ipojen" -#: ../../addon/facebook/facebook.php:275 +#: ../../addon/facebook/facebook.php:341 msgid "Install Facebook connector for this account." msgstr "Nainstalovat pro tento úÄet Facebook konektor." -#: ../../addon/facebook/facebook.php:282 +#: ../../addon/facebook/facebook.php:348 msgid "Remove Facebook connector" msgstr "Odstranit konektor na Facebook" -#: ../../addon/facebook/facebook.php:288 +#: ../../addon/facebook/facebook.php:354 msgid "Post to Facebook by default" msgstr "StandardnÄ› posÃlat pÅ™ÃspÄ›vky na Facebook" -#: ../../addon/facebook/facebook.php:350 +#: ../../addon/facebook/facebook.php:358 +msgid "Link all your Facebook friends and conversations" +msgstr "PÅ™ipojit vÅ¡echny své přátele na Facebooku a konverzace" + +#: ../../addon/facebook/facebook.php:363 +msgid "Warning: Your Facebook privacy settings can not be imported." +msgstr "" +"UpozornÄ›nÃ: nastavenà ochrany osobnÃch údajů na Facebooku nelze importovat." + +#: ../../addon/facebook/facebook.php:364 +msgid "" +"Linked Facebook items <strong>may</strong> be publicly visible, depending on" +" your privacy settings for this website/account." +msgstr "" +"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." + +#: ../../addon/facebook/facebook.php:419 msgid "Facebook" msgstr "Facebook" -#: ../../addon/facebook/facebook.php:351 +#: ../../addon/facebook/facebook.php:420 msgid "Facebook Connector Settings" msgstr "Nastavenà Facebook konektoru " -#: ../../addon/facebook/facebook.php:365 +#: ../../addon/facebook/facebook.php:434 msgid "Post to Facebook" msgstr "PÅ™idat pÅ™ÃspÄ›vek na Facebook" -#: ../../addon/facebook/facebook.php:434 +#: ../../addon/facebook/facebook.php:507 msgid "" "Post to Facebook cancelled because of multi-network access permission " "conflict." msgstr "" "PÅ™ÃspÄ›vek na Facebook zruÅ¡en kvůli konfliktu pÅ™Ãstupových práv mezi sÃtÄ›mi." -#: ../../addon/facebook/facebook.php:500 +#: ../../addon/facebook/facebook.php:580 msgid "Image: " msgstr "Obrázek: " -#: ../../addon/facebook/facebook.php:576 +#: ../../addon/facebook/facebook.php:656 msgid "View on Friendika" msgstr "Pohled na Friendiku" -#: ../../addon/widgets/widgets.php:41 -msgid "Widgets key: " -msgstr "Widgets klÃÄ:" +#: ../../addon/facebook/facebook.php:687 +msgid "Facebook post failed. Queued for retry." +msgstr "" +"Zaslánà pÅ™ÃspÄ›vku na Facebook selhalo. PÅ™ÃspÄ›vek byl zaÅ™azen do fronty pro " +"opakované odeslánÃ." -#: ../../addon/widgets/widgets.php:45 +#: ../../addon/widgets/widgets.php:53 msgid "Generate new key" msgstr "Generovat nové klÃÄe" +#: ../../addon/widgets/widgets.php:56 +msgid "Widgets key" +msgstr "Widgety klÃÄ" + +#: ../../addon/widgets/widgets.php:58 +msgid "Widgets available" +msgstr "Widgety k dispozici" + #: ../../addon/widgets/widget_friends.php:30 msgid "Connect on Friendika!" msgstr "Spojit se na Friendice!" -#: ../../addon/tictac/tictac.php:14 +#: ../../addon/tictac/tictac.php:20 msgid "Three Dimensional Tic-Tac-Toe" msgstr "TrojrozmÄ›rné Tic-Tac-Toe" -#: ../../addon/tictac/tictac.php:47 +#: ../../addon/tictac/tictac.php:53 msgid "3D Tic-Tac-Toe" msgstr "3D Tic-Tac-Toe" -#: ../../addon/tictac/tictac.php:52 +#: ../../addon/tictac/tictac.php:58 msgid "New game" msgstr "Nová hra" -#: ../../addon/tictac/tictac.php:53 +#: ../../addon/tictac/tictac.php:59 msgid "New game with handicap" msgstr "Nová hra s handicapem" -#: ../../addon/tictac/tictac.php:54 +#: ../../addon/tictac/tictac.php:60 msgid "" "Three dimensional tic-tac-toe is just like the traditional game except that " "it is played on multiple levels simultaneously. " @@ -2663,7 +3380,7 @@ msgstr "" "TrojrozmÄ›rné tic-tac-toe je podobná této tradiÄnà hÅ™e kromÄ› toho, že se " "hraje na vÃce úrovnÃch souÄasnÄ›." -#: ../../addon/tictac/tictac.php:55 +#: ../../addon/tictac/tictac.php:61 msgid "" "In this case there are three levels. You win by getting three in a row on " "any level, as well as up, down, and diagonally across the different levels." @@ -2671,7 +3388,7 @@ msgstr "" "V tomto pÅ™ÃpadÄ› existujà tÅ™i úrovnÄ›. Vyhrajete tÃm, že dostane tÅ™i v Å™adÄ› na" " jakékoli úrovni, stejnÄ› jako nahoru, dolů a Å¡ikmo na různých úrovnÃch." -#: ../../addon/tictac/tictac.php:57 +#: ../../addon/tictac/tictac.php:63 msgid "" "The handicap game disables the center position on the middle level because " "the player claiming this square often has an unfair advantage." @@ -2679,118 +3396,141 @@ msgstr "" "Hra s handicapem zakáže centrálnà pozici na stÅ™ednà úrovni, protože hrÃ¡Ä " "zaujÃmajÃcà tuto polohu má Äasto nespravedlivou výhodu." -#: ../../addon/tictac/tictac.php:176 +#: ../../addon/tictac/tictac.php:182 msgid "You go first..." msgstr "Vy zaÄnÄ›te ..." -#: ../../addon/tictac/tictac.php:181 +#: ../../addon/tictac/tictac.php:187 msgid "I'm going first this time..." msgstr "Tentokrát zaÄnu já..." -#: ../../addon/tictac/tictac.php:187 +#: ../../addon/tictac/tictac.php:193 msgid "You won!" msgstr "Vyhrál jste!" -#: ../../addon/tictac/tictac.php:193 ../../addon/tictac/tictac.php:218 +#: ../../addon/tictac/tictac.php:199 ../../addon/tictac/tictac.php:224 msgid "\"Cat\" game!" msgstr "\"KoÄiÄÃ\" hra!" -#: ../../addon/tictac/tictac.php:216 +#: ../../addon/tictac/tictac.php:222 msgid "I won!" msgstr "Vyhrál jsem!" -#: ../../addon/randplace/randplace.php:171 +#: ../../addon/randplace/randplace.php:170 msgid "Randplace Settings" msgstr "Randplace NastavenÃ" -#: ../../addon/randplace/randplace.php:173 +#: ../../addon/randplace/randplace.php:172 msgid "Enable Randplace Plugin" msgstr "Povolit Randplace Plugin" -#: ../../addon/java_upload/java_upload.php:33 -msgid "Select files to upload: " -msgstr "Vyberte soubory k nahránÃ:" - -#: ../../addon/java_upload/java_upload.php:35 -msgid "" -"Use the following controls only if the Java uploader [above] fails to " -"launch." -msgstr "" -"NásledujÃcà ovládacà prvky použijte pouze v pÅ™ÃpadÄ›, že se nezdařà hru " -"spustit s pomocà Java uploaderu [výše]." - -#: ../../addon/js_upload/js_upload.php:39 +#: ../../addon/js_upload/js_upload.php:43 msgid "Upload a file" msgstr "Nahrát soubor" -#: ../../addon/js_upload/js_upload.php:40 +#: ../../addon/js_upload/js_upload.php:44 msgid "Drop files here to upload" msgstr "PÅ™eneste sem soubory k nahránÃ" -#: ../../addon/js_upload/js_upload.php:42 +#: ../../addon/js_upload/js_upload.php:46 msgid "Failed" msgstr "NeúspÄ›ch" -#: ../../addon/js_upload/js_upload.php:288 +#: ../../addon/js_upload/js_upload.php:292 msgid "No files were uploaded." msgstr "Žádné soubory nebyly nahrány." -#: ../../addon/js_upload/js_upload.php:294 +#: ../../addon/js_upload/js_upload.php:298 msgid "Uploaded file is empty" msgstr "Nahraný soubor je prázdný" -#: ../../addon/js_upload/js_upload.php:299 -msgid "Uploaded file is too large" -msgstr "Nahraný soubor je pÅ™ÃliÅ¡ velký" - -#: ../../addon/js_upload/js_upload.php:317 +#: ../../addon/js_upload/js_upload.php:321 msgid "File has an invalid extension, it should be one of " msgstr "Soubor má neplatnou pÅ™Ãponu, ta by mÄ›la být jednou z" -#: ../../addon/js_upload/js_upload.php:328 +#: ../../addon/js_upload/js_upload.php:332 msgid "Upload was cancelled, or server error encountered" msgstr "Nahrávánà bylo zruÅ¡eno nebo doÅ¡lo k chybÄ› na serveru" -#: ../../addon/oembed/oembed.php:29 +#: ../../addon/impressum/impressum.php:25 +msgid "Impressum" +msgstr "Impressum" + +#: ../../addon/impressum/impressum.php:38 +#: ../../addon/impressum/impressum.php:40 +#: ../../addon/impressum/impressum.php:70 +msgid "Site Owner" +msgstr "VlastnÃk webu" + +#: ../../addon/impressum/impressum.php:38 +#: ../../addon/impressum/impressum.php:74 +msgid "Email Address" +msgstr "E-mailová adresa" + +#: ../../addon/impressum/impressum.php:43 +#: ../../addon/impressum/impressum.php:72 +msgid "Postal Address" +msgstr "PoÅ¡tovnà adresa" + +#: ../../addon/impressum/impressum.php:49 +msgid "" +"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." +msgstr "" +"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." + +#: ../../addon/impressum/impressum.php:71 +msgid "Site Owners Profile" +msgstr "Profil majitele webu" + +#: ../../addon/impressum/impressum.php:73 +msgid "Notes" +msgstr "Poznámky" + +#: ../../addon/oembed/oembed.php:30 msgid "OEmbed settings updated" msgstr "OEmbed nastavenà aktualizováno" -#: ../../addon/oembed/oembed.php:42 -msgid "Use OEmbed for YouTube videos: " -msgstr "PoužÃt OEmbed pro videa YouTube:" +#: ../../addon/oembed/oembed.php:43 +msgid "Use OEmbed for YouTube videos" +msgstr "Použità OEmbed pro videa na YouTube" -#: ../../addon/oembed/oembed.php:76 +#: ../../addon/oembed/oembed.php:71 msgid "URL to embed:" msgstr "URL adresa k vloženÃ:" -#: ../../addon/statusnet/statusnet.php:78 +#: ../../addon/statusnet/statusnet.php:133 msgid "Post to StatusNet" msgstr "Poslat pÅ™ÃspÄ›vek na StatusNet" -#: ../../addon/statusnet/statusnet.php:117 +#: ../../addon/statusnet/statusnet.php:175 msgid "" "Please contact your site administrator.<br />The provided API URL is not " "valid." -msgstr "ObraÅ¥te se na správce webu.<br />Poskytnutý odkaz na API nenà platný." +msgstr "" +"ObraÅ¥te se na administratora webu.<br />Poskytnutý odkaz na API nenà platný." -#: ../../addon/statusnet/statusnet.php:145 +#: ../../addon/statusnet/statusnet.php:203 msgid "We could not contact the StatusNet API with the Path you entered." msgstr "" "S cestou, kterou jste zadali, se nebylo možné spojit s API StatusNetu." -#: ../../addon/statusnet/statusnet.php:172 +#: ../../addon/statusnet/statusnet.php:230 msgid "StatusNet settings updated." msgstr "Nastavenà StatusNetu aktualizováno." -#: ../../addon/statusnet/statusnet.php:195 +#: ../../addon/statusnet/statusnet.php:253 msgid "StatusNet Posting Settings" msgstr "Nastavenà zasÃlánà pÅ™ÃspÄ›vků na StatusNet " -#: ../../addon/statusnet/statusnet.php:209 +#: ../../addon/statusnet/statusnet.php:267 msgid "Globally Available StatusNet OAuthKeys" msgstr "GlobálnÄ› dostupné StatusNet OAuth klÃÄe" -#: ../../addon/statusnet/statusnet.php:210 +#: ../../addon/statusnet/statusnet.php:268 msgid "" "There are preconfigured OAuth key pairs for some StatusNet servers " "available. If you are useing one of them, please use these credentials. If " @@ -2800,11 +3540,11 @@ msgstr "" " 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)." -#: ../../addon/statusnet/statusnet.php:218 +#: ../../addon/statusnet/statusnet.php:276 msgid "Provide your own OAuth Credentials" msgstr "UveÄte své vlastnà OAuth pÅ™ihlaÅ¡ovacà údaje" -#: ../../addon/statusnet/statusnet.php:219 +#: ../../addon/statusnet/statusnet.php:277 msgid "" "No consumer key pair for StatusNet found. Register your Friendika Account as" " an desktop client on your StatusNet account, copy the consumer key pair " @@ -2815,23 +3555,23 @@ msgstr "" "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." +"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." -#: ../../addon/statusnet/statusnet.php:221 +#: ../../addon/statusnet/statusnet.php:279 msgid "OAuth Consumer Key" msgstr "OAuth Consumer Key" -#: ../../addon/statusnet/statusnet.php:224 +#: ../../addon/statusnet/statusnet.php:282 msgid "OAuth Consumer Secret" msgstr "OAuth Consumer Secret" -#: ../../addon/statusnet/statusnet.php:227 +#: ../../addon/statusnet/statusnet.php:285 msgid "Base API Path (remember the trailing /)" msgstr "Cesta k Base API (nezapomeňte na koncový /)" -#: ../../addon/statusnet/statusnet.php:248 +#: ../../addon/statusnet/statusnet.php:306 msgid "" "To connect to your StatusNet account click the button below to get a " "security code from StatusNet which you have to copy into the input box below" @@ -2843,67 +3583,98 @@ msgstr "" "vstupnÃho pole nÞe a odelat formulář. Pouze VaÅ¡e <strong>veÅ™ejné</strong> " "pÅ™ÃspÄ›vky budou zveÅ™ejnÄ›ny na StatusNetu." -#: ../../addon/statusnet/statusnet.php:249 +#: ../../addon/statusnet/statusnet.php:307 msgid "Log in with StatusNet" msgstr "PÅ™ihlásit se s StatusNet" -#: ../../addon/statusnet/statusnet.php:251 +#: ../../addon/statusnet/statusnet.php:309 msgid "Copy the security code from StatusNet here" msgstr "ZkopÃrujte sem bezpeÄnostnà kód ze StatusNet" -#: ../../addon/statusnet/statusnet.php:257 +#: ../../addon/statusnet/statusnet.php:315 msgid "Cancel Connection Process" msgstr "ZruÅ¡it pÅ™ipojovánÃ" -#: ../../addon/statusnet/statusnet.php:259 +#: ../../addon/statusnet/statusnet.php:317 msgid "Current StatusNet API is" msgstr "Aktuálnà StatusNet API je" -#: ../../addon/statusnet/statusnet.php:260 +#: ../../addon/statusnet/statusnet.php:318 msgid "Cancel StatusNet Connection" msgstr "ZruÅ¡it StatusNet pÅ™ipojenÃ" -#: ../../addon/statusnet/statusnet.php:271 ../../addon/twitter/twitter.php:165 +#: ../../addon/statusnet/statusnet.php:329 ../../addon/twitter/twitter.php:180 msgid "Currently connected to: " msgstr "V souÄasné dobÄ› pÅ™ipojen k:" -#: ../../addon/statusnet/statusnet.php:272 +#: ../../addon/statusnet/statusnet.php:330 msgid "" -"If enabled all your <strong>public</strong> postings will be posted to the " -"associated StatusNet account." +"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." msgstr "" -"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." +"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." -#: ../../addon/statusnet/statusnet.php:274 +#: ../../addon/statusnet/statusnet.php:332 msgid "Allow posting to StatusNet" msgstr "Povolit zasÃlánà pÅ™ÃspÄ›vků na StatusNet" -#: ../../addon/statusnet/statusnet.php:277 +#: ../../addon/statusnet/statusnet.php:335 msgid "Send public postings to StatusNet by default" msgstr "StandardnÄ› poslÃlat veÅ™ejné pÅ™ÃspÄ›vky na StatusNet" -#: ../../addon/statusnet/statusnet.php:282 ../../addon/twitter/twitter.php:172 +#: ../../addon/statusnet/statusnet.php:340 ../../addon/twitter/twitter.php:191 msgid "Clear OAuth configuration" msgstr "Vymazat konfiguraci OAuth" -#: ../../addon/twitter/twitter.php:64 +#: ../../addon/statusnet/statusnet.php:460 +msgid "API URL" +msgstr "API URL" + +#: ../../addon/statusnet/statusnet.php:461 +msgid "Consumer Secret" +msgstr "Consumer Secret" + +#: ../../addon/statusnet/statusnet.php:462 +msgid "Consumer Key" +msgstr "Consumer Key" + +#: ../../addon/piwik/piwik.php:77 +msgid "Piwik Base URL" +msgstr "Piwik Base adresa URL" + +#: ../../addon/piwik/piwik.php:78 +msgid "Site ID" +msgstr "ID webu" + +#: ../../addon/piwik/piwik.php:79 +msgid "Show opt-out cookie link?" +msgstr "Zobrazit odkaz opt-out cookie?" + +#: ../../addon/twitter/twitter.php:70 msgid "Post to Twitter" msgstr "Poslat pÅ™ÃspÄ›vek na Twitter" -#: ../../addon/twitter/twitter.php:122 +#: ../../addon/twitter/twitter.php:115 +msgid "Twitter settings updated." +msgstr "Nastavenà Twitteru aktualizováno." + +#: ../../addon/twitter/twitter.php:137 msgid "Twitter Posting Settings" msgstr "Nastavenà zasÃlánà pÅ™ÃspÄ›vků na Twitter " -#: ../../addon/twitter/twitter.php:129 +#: ../../addon/twitter/twitter.php:144 msgid "" "No consumer key pair for Twitter found. Please contact your site " "administrator." msgstr "" -"Nenalezen žádný spotÅ™ebitelský páru klÃÄů pro Twitter. ObraÅ¥te se na správce" -" webu." +"Nenalezen žádný spotÅ™ebitelský páru klÃÄů pro Twitter. ObraÅ¥te se na " +"administrátora webu." -#: ../../addon/twitter/twitter.php:148 +#: ../../addon/twitter/twitter.php:163 msgid "" "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 " @@ -2917,31 +3688,46 @@ msgstr "" "pole nÞe a odeÅ¡lete formulář. Pouze VaÅ¡e <strong>veÅ™ejné</strong> pÅ™ÃspÄ›vky" " budou zveÅ™ejnÄ›ny na Twitteru." -#: ../../addon/twitter/twitter.php:149 +#: ../../addon/twitter/twitter.php:164 msgid "Log in with Twitter" msgstr "PÅ™ihlásit se s Twitter" -#: ../../addon/twitter/twitter.php:151 +#: ../../addon/twitter/twitter.php:166 msgid "Copy the PIN from Twitter here" msgstr "ZkopÃrujte sem PIN z Twitteru" -#: ../../addon/twitter/twitter.php:166 +#: ../../addon/twitter/twitter.php:181 msgid "" -"If enabled all your <strong>public</strong> postings will be posted to the " -"associated Twitter account as well." +"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." msgstr "" -"Je-li povoleno, vÅ¡echny <strong>veÅ™ejné</strong> pÅ™ÃspÄ›vky budou zároveň " -"zveÅ™ejnÄ›ny na pÅ™ÃsluÅ¡ný Twitter úÄet." +"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." + +#: ../../addon/twitter/twitter.php:183 +msgid "Allow posting to Twitter" +msgstr "Povolit odesÃlánà na Twitter" + +#: ../../addon/twitter/twitter.php:186 +msgid "Send public postings to Twitter by default" +msgstr "DefaultnÄ› zasÃlat veÅ™ejné komentáře na Twitter" + +#: ../../addon/twitter/twitter.php:282 +msgid "Consumer key" +msgstr "Consumer key" -#: ../../addon/twitter/twitter.php:168 -msgid "Send public postings to Twitter" -msgstr "Poslat veÅ™ejné pÅ™ÃspÄ›vky na Twitter" +#: ../../addon/twitter/twitter.php:283 +msgid "Consumer secret" +msgstr "Consumer secret" -#: ../../include/profile_advanced.php:23 ../../boot.php:2356 +#: ../../include/profile_advanced.php:23 ../../boot.php:880 msgid "Gender:" msgstr "PohlavÃ:" -#: ../../include/profile_advanced.php:36 ../../include/items.php:1086 +#: ../../include/profile_advanced.php:36 ../../include/items.php:1137 msgid "Birthday:" msgstr "Narozeniny:" @@ -2961,7 +3747,7 @@ msgstr "VÄ›k:" msgid "<span class=\"heart\">♥</span> Status:" msgstr "<span class=\"heart\">♥</span> Status:" -#: ../../include/profile_advanced.php:103 ../../boot.php:2362 +#: ../../include/profile_advanced.php:103 ../../boot.php:886 msgid "Homepage:" msgstr "Domácà stránka:" @@ -3269,6 +4055,134 @@ msgstr "NezajÃmá" msgid "Ask me" msgstr "Zeptej se mÄ›" +#: ../../include/event.php:11 +msgid "l F d, Y \\@ g:i A" +msgstr "l F d, Y \\@ g:i A" + +#: ../../include/event.php:17 +msgid "Starts:" +msgstr "ZaÄÃná:" + +#: ../../include/event.php:27 +msgid "Finishes:" +msgstr "KonÄÃ:" + +#: ../../include/text.php:229 +msgid "prev" +msgstr "pÅ™edchozÃ" + +#: ../../include/text.php:231 +msgid "first" +msgstr "prvnÃ" + +#: ../../include/text.php:260 +msgid "last" +msgstr "poslednÃ" + +#: ../../include/text.php:263 +msgid "next" +msgstr "dalÅ¡Ã" + +#: ../../include/text.php:542 +msgid "No contacts" +msgstr "Žádné kontakty" + +#: ../../include/text.php:550 +#, php-format +msgid "%d Contact" +msgid_plural "%d Contacts" +msgstr[0] "%d kontakt" +msgstr[1] "%d kontaktů" +msgstr[2] "%d kontaktů" + +#: ../../include/text.php:711 +msgid "Monday" +msgstr "PondÄ›lÃ" + +#: ../../include/text.php:711 +msgid "Tuesday" +msgstr "Úterý" + +#: ../../include/text.php:711 +msgid "Wednesday" +msgstr "StÅ™eda" + +#: ../../include/text.php:711 +msgid "Thursday" +msgstr "ÄŒtvrtek" + +#: ../../include/text.php:711 +msgid "Friday" +msgstr "Pátek" + +#: ../../include/text.php:711 +msgid "Saturday" +msgstr "Sobota" + +#: ../../include/text.php:711 +msgid "Sunday" +msgstr "NedÄ›le" + +#: ../../include/text.php:715 +msgid "January" +msgstr "Ledna" + +#: ../../include/text.php:715 +msgid "February" +msgstr "Února" + +#: ../../include/text.php:715 +msgid "March" +msgstr "BÅ™ezna" + +#: ../../include/text.php:715 +msgid "April" +msgstr "Dubna" + +#: ../../include/text.php:715 +msgid "May" +msgstr "KvÄ›tna" + +#: ../../include/text.php:715 +msgid "June" +msgstr "ÄŒervna" + +#: ../../include/text.php:715 +msgid "July" +msgstr "ÄŒervence" + +#: ../../include/text.php:715 +msgid "August" +msgstr "Srpna" + +#: ../../include/text.php:715 +msgid "September" +msgstr "ZářÃ" + +#: ../../include/text.php:715 +msgid "October" +msgstr "ŘÃjna" + +#: ../../include/text.php:715 +msgid "November" +msgstr "Listopadu" + +#: ../../include/text.php:715 +msgid "December" +msgstr "Prosince" + +#: ../../include/text.php:778 +msgid "bytes" +msgstr "bytů" + +#: ../../include/text.php:861 +msgid "Select an alternate language" +msgstr "VybÄ›r alternativnÃho jazyka" + +#: ../../include/diaspora.php:309 +msgid "Sharing notification from Diaspora network" +msgstr "SdÃlenà oznámenà ze sÃtÄ› Diaspora" + #: ../../include/oembed.php:95 msgid "Embedding disabled" msgstr "Vkládánà zakázáno" @@ -3281,41 +4195,109 @@ msgstr "VytvoÅ™it novou skupinu" msgid "Everybody" msgstr "VÅ¡ichni" -#: ../../include/nav.php:41 ../../boot.php:865 +#: ../../include/nav.php:41 ../../boot.php:667 msgid "Logout" msgstr "Odhlásit se" -#: ../../include/nav.php:44 ../../boot.php:843 ../../boot.php:849 +#: ../../include/nav.php:41 +msgid "End this session" +msgstr "Konec této relace" + +#: ../../include/nav.php:44 ../../boot.php:645 ../../boot.php:651 msgid "Login" msgstr "PÅ™ihlásit se" -#: ../../include/nav.php:55 ../../include/nav.php:92 +#: ../../include/nav.php:44 +msgid "Sign in" +msgstr "PÅ™ihlásit se" + +#: ../../include/nav.php:55 ../../include/nav.php:93 msgid "Home" msgstr "Domů" -#: ../../include/nav.php:68 +#: ../../include/nav.php:55 +msgid "Home Page" +msgstr "Domácà stránka" + +#: ../../include/nav.php:59 +msgid "Create an account" +msgstr "VytvoÅ™it úÄet" + +#: ../../include/nav.php:64 +msgid "Help and documentation" +msgstr "NápovÄ›da a dokumentace" + +#: ../../include/nav.php:67 msgid "Apps" msgstr "Aplikace" -#: ../../include/nav.php:80 +#: ../../include/nav.php:67 +msgid "Addon applications, utilities, games" +msgstr "Doplňkové aplikace, nástroje, hry" + +#: ../../include/nav.php:69 +msgid "Search site content" +msgstr "Hledánà na stránkách tohoto webu" + +#: ../../include/nav.php:79 +msgid "Conversations on this site" +msgstr "Konverzace na tomto webu" + +#: ../../include/nav.php:81 msgid "Directory" msgstr "Adresář" -#: ../../include/nav.php:90 +#: ../../include/nav.php:81 +msgid "People directory" +msgstr "Adresář" + +#: ../../include/nav.php:91 msgid "Network" msgstr "SÃÅ¥" -#: ../../include/nav.php:98 +#: ../../include/nav.php:91 +msgid "Conversations from your friends" +msgstr "Konverzace od VaÅ¡ich přátel" + +#: ../../include/nav.php:93 +msgid "Your posts and conversations" +msgstr "VaÅ¡e pÅ™ÃspÄ›vky a konverzace" + +#: ../../include/nav.php:99 msgid "Notifications" msgstr "UpozornÄ›nÃ" -#: ../../include/nav.php:104 +#: ../../include/nav.php:99 +msgid "Friend requests" +msgstr "Požadavky přátelstvÃ" + +#: ../../include/nav.php:102 +msgid "Private mail" +msgstr "Soukromá poÅ¡ta" + +#: ../../include/nav.php:105 msgid "Manage" msgstr "Spravovat" -#: ../../include/nav.php:107 -msgid "Settings" -msgstr "NastavenÃ" +#: ../../include/nav.php:105 +msgid "Manage other pages" +msgstr "Spravovat jiné stránky" + +#: ../../include/nav.php:109 +msgid "Manage/edit profiles" +msgstr "Spravovat/upravit profily" + +#: ../../include/nav.php:110 +msgid "Manage/edit friends and contacts" +msgstr "Spravovat/upravit přátelé a kontakty" + +#: ../../include/nav.php:117 +msgid "Admin" +msgstr "Administrace" + +#: ../../include/nav.php:117 +msgid "Site setup and configuration" +msgstr "Nastavenà webu a konfigurace" #: ../../include/auth.php:27 msgid "Logged out." @@ -3325,71 +4307,79 @@ msgstr "Odhlášen." msgid "Miscellaneous" msgstr "Různé" -#: ../../include/datetime.php:148 -msgid "less than a second ago" -msgstr "ménÄ› než pÅ™ed sekundou" - -#: ../../include/datetime.php:151 +#: ../../include/datetime.php:105 ../../include/datetime.php:237 msgid "year" msgstr "rok" -#: ../../include/datetime.php:151 -msgid "years" -msgstr "let" - -#: ../../include/datetime.php:152 +#: ../../include/datetime.php:110 ../../include/datetime.php:238 msgid "month" msgstr "mÄ›sÃc" -#: ../../include/datetime.php:152 +#: ../../include/datetime.php:115 ../../include/datetime.php:240 +msgid "day" +msgstr "den" + +#: ../../include/datetime.php:228 +msgid "never" +msgstr "nikdy" + +#: ../../include/datetime.php:234 +msgid "less than a second ago" +msgstr "ménÄ› než pÅ™ed sekundou" + +#: ../../include/datetime.php:237 +msgid "years" +msgstr "let" + +#: ../../include/datetime.php:238 msgid "months" msgstr "mÄ›sÃců" -#: ../../include/datetime.php:153 +#: ../../include/datetime.php:239 msgid "week" msgstr "týden" -#: ../../include/datetime.php:153 +#: ../../include/datetime.php:239 msgid "weeks" msgstr "týdny" -#: ../../include/datetime.php:154 -msgid "day" -msgstr "den" +#: ../../include/datetime.php:240 +msgid "days" +msgstr "dnů" -#: ../../include/datetime.php:155 +#: ../../include/datetime.php:241 msgid "hour" msgstr "hodina" -#: ../../include/datetime.php:155 +#: ../../include/datetime.php:241 msgid "hours" msgstr "hodin" -#: ../../include/datetime.php:156 +#: ../../include/datetime.php:242 msgid "minute" msgstr "minuta" -#: ../../include/datetime.php:156 +#: ../../include/datetime.php:242 msgid "minutes" msgstr "minut" -#: ../../include/datetime.php:157 +#: ../../include/datetime.php:243 msgid "second" msgstr "sekunda" -#: ../../include/datetime.php:157 +#: ../../include/datetime.php:243 msgid "seconds" msgstr "sekund" -#: ../../include/datetime.php:164 +#: ../../include/datetime.php:250 msgid " ago" -msgstr "pÅ™ed" +msgstr " nazpÄ›t" -#: ../../include/poller.php:380 +#: ../../include/poller.php:418 msgid "From: " msgstr "Od:" -#: ../../include/bbcode.php:83 +#: ../../include/bbcode.php:116 msgid "Image/photo" msgstr "Obrázek/fotografie" @@ -3398,329 +4388,230 @@ msgstr "Obrázek/fotografie" msgid "Cannot locate DNS info for database server '%s'" msgstr "Nelze nalézt záznam v DNS pro databázový server '%s'" -#: ../../include/acl_selectors.php:133 -msgid "Visible To:" -msgstr "Viditelné pro:" - -#: ../../include/acl_selectors.php:133 -msgid "everybody" -msgstr "Žádost o pÅ™ipojenà selhala nebo byla zruÅ¡ena." +#: ../../include/acl_selectors.php:279 +msgid "Visible to everybody" +msgstr "Viditelné pro vÅ¡echny" -#: ../../include/acl_selectors.php:137 ../../include/acl_selectors.php:152 -msgid "Groups" -msgstr "Skupiny" +#: ../../include/acl_selectors.php:280 +msgid "show" +msgstr "zobrazit" -#: ../../include/acl_selectors.php:148 -msgid "Except For:" -msgstr "S výjimkou:" +#: ../../include/acl_selectors.php:281 +msgid "don't show" +msgstr "nikdy nezobrazit" -#: ../../include/notifier.php:414 +#: ../../include/notifier.php:465 msgid "(no subject)" msgstr "(Bez pÅ™edmÄ›tu)" -#: ../../include/items.php:1447 +#: ../../include/items.php:1526 msgid "You have a new follower at " msgstr "Máte nového následovnÃka na" -#: ../../include/conversation.php:191 ../../include/conversation.php:451 -#: ../../include/conversation.php:452 +#: ../../include/conversation.php:23 +msgid "event" +msgstr "událost" + +#: ../../include/conversation.php:213 ../../include/conversation.php:488 +#: ../../include/conversation.php:489 #, php-format msgid "View %s's profile" msgstr "Zobrazit %s profilu" -#: ../../include/conversation.php:207 +#: ../../include/conversation.php:222 ../../include/conversation.php:501 +#, php-format +msgid "%s from %s" +msgstr "%s od %s" + +#: ../../include/conversation.php:230 msgid "View in context" msgstr "Pohled v kontextu" -#: ../../include/conversation.php:278 +#: ../../include/conversation.php:301 msgid "See more posts like this" msgstr "Zobrazit vÃce podobných pÅ™ÃspÄ›vků" -#: ../../include/conversation.php:303 +#: ../../include/conversation.php:329 #, php-format msgid "See all %d comments" msgstr "Zobrazit vÅ¡echny komentáře %d" -#: ../../include/conversation.php:453 +#: ../../include/conversation.php:427 +msgid "Select" +msgstr "Vybrat" + +#: ../../include/conversation.php:429 +msgid "toggle star status" +msgstr "pÅ™epnout hvÄ›zdu" + +#: ../../include/conversation.php:490 msgid "to" msgstr "pro" -#: ../../include/conversation.php:454 +#: ../../include/conversation.php:491 msgid "Wall-to-Wall" msgstr "ZeÄ-na-ZeÄ" -#: ../../include/conversation.php:455 +#: ../../include/conversation.php:492 msgid "via Wall-To-Wall:" msgstr "pÅ™es ZeÄ-na-ZeÄ " -#: ../../include/conversation.php:593 +#: ../../include/conversation.php:534 +msgid "Delete Selected Items" +msgstr "Smazat vybrané položky" + +#: ../../include/conversation.php:608 msgid "View status" msgstr "Zobrazit stav" -#: ../../include/conversation.php:594 +#: ../../include/conversation.php:609 msgid "View profile" msgstr "Zobrazit profil" -#: ../../include/conversation.php:595 +#: ../../include/conversation.php:610 msgid "View photos" msgstr "Zobrazit fotografie" -#: ../../include/conversation.php:596 +#: ../../include/conversation.php:611 msgid "View recent" msgstr "Zobrazit poslednÃ" -#: ../../include/conversation.php:598 +#: ../../include/conversation.php:613 msgid "Send PM" -msgstr "Poslat PM" +msgstr "Poslat soukromou zprávu" -#: ../../include/conversation.php:648 +#: ../../include/conversation.php:663 #, php-format msgid "%s likes this." msgstr "%s se to lÃbÃ." -#: ../../include/conversation.php:648 +#: ../../include/conversation.php:663 #, php-format msgid "%s doesn't like this." msgstr "%s se to nelÃbÃ." -#: ../../include/conversation.php:652 +#: ../../include/conversation.php:667 #, php-format msgid "<span %1$s>%2$d people</span> like this." msgstr "<span %1$s>%2$d lidem</span> se to lÃbÃ." -#: ../../include/conversation.php:654 +#: ../../include/conversation.php:669 #, php-format msgid "<span %1$s>%2$d people</span> don't like this." msgstr "<span %1$s>%2$d lidem</span> se to nelÃbÃ." -#: ../../include/conversation.php:660 +#: ../../include/conversation.php:675 msgid "and" msgstr "a" -#: ../../include/conversation.php:663 +#: ../../include/conversation.php:678 #, php-format msgid ", and %d other people" msgstr ", a %d dalÅ¡Ãch lidÃ" -#: ../../include/conversation.php:664 +#: ../../include/conversation.php:679 #, php-format msgid "%s like this." msgstr "%s se to lÃbÃ." -#: ../../include/conversation.php:664 +#: ../../include/conversation.php:679 #, php-format msgid "%s don't like this." msgstr "%s se to nelÃbÃ." -#: ../../include/conversation.php:683 +#: ../../include/conversation.php:698 msgid "Visible to <strong>everybody</strong>" msgstr "Viditelné pro <strong>vÅ¡echny</strong>" -#: ../../include/conversation.php:685 +#: ../../include/conversation.php:700 msgid "Please enter a YouTube link:" msgstr "ProsÃm zadejte odkaz na YouTube:" -#: ../../include/conversation.php:686 +#: ../../include/conversation.php:701 msgid "Please enter a video(.ogg) link/URL:" msgstr "ProsÃm, zadejte odkaz na video (ogg.):" -#: ../../include/conversation.php:687 +#: ../../include/conversation.php:702 msgid "Please enter an audio(.ogg) link/URL:" msgstr "ProsÃm, zadejte odkaz na audio (ogg.):" -#: ../../include/conversation.php:688 +#: ../../include/conversation.php:703 msgid "Where are you right now?" msgstr "Kde právÄ› jste?" -#: ../../include/conversation.php:689 +#: ../../include/conversation.php:704 msgid "Enter a title for this item" msgstr "Zadejte titulek pro tuto položku" -#: ../../include/conversation.php:740 +#: ../../include/conversation.php:755 msgid "Set title" msgstr "Nastavit titulek" -#: ../../boot.php:385 +#: ../../boot.php:410 msgid "Delete this item?" msgstr "Odstranit tuto položku?" -#: ../../boot.php:834 +#: ../../boot.php:636 msgid "Create a New Account" msgstr "VytvoÅ™it nový úÄet" -#: ../../boot.php:841 +#: ../../boot.php:643 msgid "Nickname or Email address: " msgstr "PÅ™ezdÃvka nebo e-mailová adresa:" -#: ../../boot.php:842 +#: ../../boot.php:644 msgid "Password: " msgstr "Heslo: " -#: ../../boot.php:847 +#: ../../boot.php:649 msgid "Nickname/Email/OpenID: " -msgstr "PÅ™ezdÃvka/Email/OpenID: " +msgstr "PÅ™ezdÃvka/E-mail/OpenID: " -#: ../../boot.php:848 +#: ../../boot.php:650 msgid "Password (if not OpenID): " msgstr "Heslo (pokud se nepoužÃvá OpenID):" -#: ../../boot.php:851 +#: ../../boot.php:653 msgid "Forgot your password?" msgstr "ZapomnÄ›li jste své heslo?" -#: ../../boot.php:1113 -msgid "prev" -msgstr "pÅ™edchozÃ" - -#: ../../boot.php:1115 -msgid "first" -msgstr "prvnÃ" - -#: ../../boot.php:1144 -msgid "last" -msgstr "poslednÃ" - -#: ../../boot.php:1147 -msgid "next" -msgstr "dalÅ¡Ã" - -#: ../../boot.php:2046 -msgid "No contacts" -msgstr "Žádné kontakty" - -#: ../../boot.php:2054 -#, php-format -msgid "%d Contact" -msgid_plural "%d Contacts" -msgstr[0] "%d kontakt" -msgstr[1] "%d kontaktů" -msgstr[2] "%d kontaktů" - -#: ../../boot.php:2329 +#: ../../boot.php:853 msgid "Connect" msgstr "Spojit" -#: ../../boot.php:2344 -msgid "Location:" -msgstr "MÃsto:" - -#: ../../boot.php:2348 +#: ../../boot.php:872 msgid ", " msgstr ", " -#: ../../boot.php:2360 +#: ../../boot.php:884 msgid "Status:" msgstr "Status:" -#: ../../boot.php:2457 -msgid "Monday" -msgstr "PondÄ›lÃ" - -#: ../../boot.php:2457 -msgid "Tuesday" -msgstr "Úterý" - -#: ../../boot.php:2457 -msgid "Wednesday" -msgstr "StÅ™eda" - -#: ../../boot.php:2457 -msgid "Thursday" -msgstr "ÄŒtvrtek" - -#: ../../boot.php:2457 -msgid "Friday" -msgstr "Pátek" - -#: ../../boot.php:2457 -msgid "Saturday" -msgstr "Sobota" - -#: ../../boot.php:2457 -msgid "Sunday" -msgstr "NedÄ›le" - -#: ../../boot.php:2461 -msgid "January" -msgstr "Ledna" - -#: ../../boot.php:2461 -msgid "February" -msgstr "Února" - -#: ../../boot.php:2461 -msgid "March" -msgstr "BÅ™ezna" - -#: ../../boot.php:2461 -msgid "April" -msgstr "Dubna" - -#: ../../boot.php:2461 -msgid "May" -msgstr "KvÄ›tna" - -#: ../../boot.php:2461 -msgid "June" -msgstr "ÄŒervna" - -#: ../../boot.php:2461 -msgid "July" -msgstr "ÄŒervence" - -#: ../../boot.php:2461 -msgid "August" -msgstr "Srpna" - -#: ../../boot.php:2461 -msgid "September" -msgstr "ZářÃ" - -#: ../../boot.php:2461 -msgid "October" -msgstr "ŘÃjna" - -#: ../../boot.php:2461 -msgid "November" -msgstr "Listopadu" - -#: ../../boot.php:2461 -msgid "December" -msgstr "Prosince" - -#: ../../boot.php:2476 +#: ../../boot.php:975 msgid "g A l F d" msgstr "g A l F d" -#: ../../boot.php:2494 +#: ../../boot.php:993 msgid "Birthday Reminders" msgstr "PÅ™ipomÃnka narozenin" -#: ../../boot.php:2495 +#: ../../boot.php:994 msgid "Birthdays this week:" msgstr "Narozeniny tento týden:" -#: ../../boot.php:2496 +#: ../../boot.php:995 msgid "(Adjusted for local time)" msgstr "(Upraveno pro mÃstnà Äas)" -#: ../../boot.php:2507 +#: ../../boot.php:1006 msgid "[today]" msgstr "[Dnes]" -#: ../../boot.php:2570 -msgid "bytes" -msgstr "bytů" - -#: ../../boot.php:2744 -msgid "link to source" -msgstr "odkaz na zdroj" - -#: ../../index.php:199 +#: ../../index.php:209 msgid "Not Found" msgstr "Nenalezen" -#: ../../index.php:200 +#: ../../index.php:210 msgid "Page not found." msgstr "Stránka nenalezena" diff --git a/view/cs/passchanged_eml.tpl b/view/cs/passchanged_eml.tpl index 7d144dbd8..5447d2e80 100644 --- a/view/cs/passchanged_eml.tpl +++ b/view/cs/passchanged_eml.tpl @@ -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. diff --git a/view/cs/register_open_eml.tpl b/view/cs/register_open_eml.tpl index 96235e572..f8e42678b 100644 --- a/view/cs/register_open_eml.tpl +++ b/view/cs/register_open_eml.tpl @@ -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. diff --git a/view/cs/register_verify_eml.tpl b/view/cs/register_verify_eml.tpl index a843a857e..4b34c6b6d 100644 --- a/view/cs/register_verify_eml.tpl +++ b/view/cs/register_verify_eml.tpl @@ -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: diff --git a/view/cs/strings.php b/view/cs/strings.php index 32d06de99..38f3041b7 100644 --- a/view/cs/strings.php +++ b/view/cs/strings.php @@ -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[" (Optional) Allow this OpenID to login to this account."] = " (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["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 (delete) posts older than"] = "Automaticky smazat pÅ™ÃspÄ›vky starÅ¡Ã než"; -$a->strings["days"] = "dnů"; +$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:"] = "PosÃlat e-mailové upozornÄ›nà když: "; -$a->strings["You receive an introduction"] = "ObdržÃte žádost o propojenÃ"; +$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 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["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,56 +901,114 @@ $a->strings["Uncertain"] = "Nejistý"; $a->strings["Complicated"] = "Komplikovaný"; $a->strings["Don't care"] = "NezajÃmá"; $a->strings["Ask me"] = "Zeptej se mÄ›"; +$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Ã"; +$a->strings["next"] = "dalÅ¡Ã"; +$a->strings["No contacts"] = "Žádné kontakty"; +$a->strings["%d Contact"] = array( + 0 => "%d kontakt", + 1 => "%d kontaktů", + 2 => "%d kontaktů", +); +$a->strings["Monday"] = "PondÄ›lÃ"; +$a->strings["Tuesday"] = "Úterý"; +$a->strings["Wednesday"] = "StÅ™eda"; +$a->strings["Thursday"] = "ÄŒtvrtek"; +$a->strings["Friday"] = "Pátek"; +$a->strings["Saturday"] = "Sobota"; +$a->strings["Sunday"] = "NedÄ›le"; +$a->strings["January"] = "Ledna"; +$a->strings["February"] = "Února"; +$a->strings["March"] = "BÅ™ezna"; +$a->strings["April"] = "Dubna"; +$a->strings["May"] = "KvÄ›tna"; +$a->strings["June"] = "ÄŒervna"; +$a->strings["July"] = "ÄŒervence"; +$a->strings["August"] = "Srpna"; +$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["Settings"] = "NastavenÃ"; +$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["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["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["day"] = "den"; +$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"] = "pÅ™ed"; +$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:"] = "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["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 PM"; +$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Ã."; @@ -801,48 +1028,16 @@ $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["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["prev"] = "pÅ™edchozÃ"; -$a->strings["first"] = "prvnÃ"; -$a->strings["last"] = "poslednÃ"; -$a->strings["next"] = "dalÅ¡Ã"; -$a->strings["No contacts"] = "Žádné kontakty"; -$a->strings["%d Contact"] = array( - 0 => "%d kontakt", - 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"; -$a->strings["Thursday"] = "ÄŒtvrtek"; -$a->strings["Friday"] = "Pátek"; -$a->strings["Saturday"] = "Sobota"; -$a->strings["Sunday"] = "NedÄ›le"; -$a->strings["January"] = "Ledna"; -$a->strings["February"] = "Února"; -$a->strings["March"] = "BÅ™ezna"; -$a->strings["April"] = "Dubna"; -$a->strings["May"] = "KvÄ›tna"; -$a->strings["June"] = "ÄŒervna"; -$a->strings["July"] = "ÄŒervence"; -$a->strings["August"] = "Srpna"; -$a->strings["September"] = "ZářÃ"; -$a->strings["October"] = "ŘÃjna"; -$a->strings["November"] = "Listopadu"; -$a->strings["December"] = "Prosince"; $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"; diff --git a/view/de/strings.php b/view/de/strings.php index 56d54a6d3..affae0bfe 100644 --- a/view/de/strings.php +++ b/view/de/strings.php @@ -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"; diff --git a/view/diaspora_vcard.tpl b/view/diaspora_vcard.tpl new file mode 100644 index 000000000..aa2c9eded --- /dev/null +++ b/view/diaspora_vcard.tpl @@ -0,0 +1,44 @@ +<div style="display:none;"> + <dl class='entity_nickname'> + <dt>Nickname</dt> + <dd> + <a class="nickname url uid" href="$podloc/" rel="me">$diaspora.nickname</a> + </dd> + </dl> + <dl class='entity_fn'> + <dt>Full name</dt> + <dd> + <span class='fn'>$diaspora.fullname</span> + </dd> + </dl> + <dl class="entity_url"> + <dt>URL</dt> + <dd> + <a class="url" href="$diaspora.podloc/" id="pod_location" rel="me">$diaspora.podloc/</a> + </dd> + </dl> + <dl class="entity_photo"> + <dt>Photo</dt> + <dd> + <img class="photo avatar" height="300px" width="300px" src="$diaspora.photo300"> + </dd> + </dl> + <dl class="entity_photo_medium"> + <dt>Photo</dt> + <dd> + <img class="photo avatar" height="100px" width="100px" src="$diaspora.photo100"> + </dd> + </dl> + <dl class="entity_photo_small"> + <dt>Photo</dt> + <dd> + <img class="photo avatar" height="50px" width="50px" src="$diaspora.photo50"> + </dd> + </dl> + <dl class="entity_searchable"> + <dt>Searchable</dt> + <dd> + <span class="searchable">$diaspora.searchable</span> + </dd> + </dl> +</div> diff --git a/view/head.tpl b/view/head.tpl index 9d73269e1..b6d78da39 100644 --- a/view/head.tpl +++ b/view/head.tpl @@ -1,8 +1,12 @@ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <base href="$baseurl/" /> <meta name="generator" content="$generator" /> -<link rel="stylesheet" type="text/css" href="$stylesheet" media="all" /> <link rel="stylesheet" href="$baseurl/library/fancybox/jquery.fancybox-1.3.4.css" type="text/css" media="screen" /> +<link rel="stylesheet" href="$baseurl/library/tiptip/tipTip.css" type="text/css" media="screen" /> +<link rel="stylesheet" href="$baseurl/library/jgrowl/jquery.jgrowl.css" type="text/css" media="screen" /> + +<link rel="stylesheet" type="text/css" href="$stylesheet" media="all" /> + <link rel="shortcut icon" href="$baseurl/images/friendika-32.png" /> <link rel="search" href="$baseurl/opensearch" @@ -12,11 +16,13 @@ <!--[if IE]> <script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> -<script type="text/javascript" src="$baseurl/include/jquery.js" ></script> +<script type="text/javascript" src="$baseurl/js/jquery.js" ></script> <script type="text/javascript" src="$baseurl/library/fancybox/jquery.fancybox-1.3.4.pack.js"></script> +<script type="text/javascript" src="$baseurl/library/tiptip/jquery.tipTip.minified.js"></script> +<script type="text/javascript" src="$baseurl/library/jgrowl/jquery.jgrowl_minimized.js"></script> <script type="text/javascript" src="$baseurl/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js" ></script> -<script type="text/javascript" src="$baseurl/include/acl.js" ></script> -<script type="text/javascript" src="$baseurl/include/main.js" ></script> +<script type="text/javascript" src="$baseurl/js/acl.js" ></script> +<script type="text/javascript" src="$baseurl/js/main.js" ></script> <script> function confirmDelete() { return confirm("$delitem"); } diff --git a/view/it/messages.po b/view/it/messages.po index 6b28ba782..235cfbcf7 100644 --- a/view/it/messages.po +++ b/view/it/messages.po @@ -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-17 17:49+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" @@ -2158,7 +2158,7 @@ msgstr "Regitrati" #: ../../include/diaspora.php:446 ../../include/conversation.php:26 #: ../../include/conversation.php:35 msgid "status" -msgstr "stato" +msgstr "lo stato" #: ../../mod/like.php:127 ../../addon/facebook/facebook.php:958 #: ../../include/diaspora.php:463 ../../include/conversation.php:43 @@ -4420,7 +4420,7 @@ msgstr "Hai un nuovo seguace su " #: ../../include/conversation.php:23 msgid "event" -msgstr "evento" +msgstr "l'evento" #: ../../include/conversation.php:213 ../../include/conversation.php:488 #: ../../include/conversation.php:489 diff --git a/view/it/strings.php b/view/it/strings.php index 9e3a2262f..7d6c2e704 100644 --- a/view/it/strings.php +++ b/view/it/strings.php @@ -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."; @@ -459,7 +459,7 @@ $a->strings["Your Email Address: "] = "Il tuo Indirizzo Email: "; $a->strings["Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be '<strong>nickname@\$sitename</strong>'."] = "Scegli un soprannome. Deve cominciare con un carattere. L'indirizzo del tuo profilo sarà '<strong>soprannome@\$sitename</strong>'."; $a->strings["Choose a nickname: "] = "Scegli un soprannome: "; $a->strings["Register"] = "Regitrati"; -$a->strings["status"] = "stato"; +$a->strings["status"] = "lo stato"; $a->strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s piace %3\$s di %2\$s"; $a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s non piace %3\$s di %2\$s"; $a->strings["This is Friendika version"] = "Questo è Friendika versione"; @@ -985,7 +985,7 @@ $a->strings["show"] = "mostra"; $a->strings["don't show"] = "non mostrare"; $a->strings["(no subject)"] = "(nessun oggetto)"; $a->strings["You have a new follower at "] = "Hai un nuovo seguace su "; -$a->strings["event"] = "evento"; +$a->strings["event"] = "l'evento"; $a->strings["View %s's profile"] = "Vedi il profilo di %s"; $a->strings["%s from %s"] = "%s da %s"; $a->strings["View in context"] = "Vedi nel contesto"; diff --git a/view/jot-header.tpl b/view/jot-header.tpl index 6195c5bbc..8174026ab 100644 --- a/view/jot-header.tpl +++ b/view/jot-header.tpl @@ -80,7 +80,7 @@ function initEditor(cb){ } </script> -<script type="text/javascript" src="include/ajaxupload.js" ></script> +<script type="text/javascript" src="js/ajaxupload.js" ></script> <script> var ispublic = '$ispublic'; $(document).ready(function() { diff --git a/view/msg-header.tpl b/view/msg-header.tpl index 67775a45b..a74154c19 100644 --- a/view/msg-header.tpl +++ b/view/msg-header.tpl @@ -53,7 +53,7 @@ tinyMCE.init({ }); </script> -<script type="text/javascript" src="include/ajaxupload.js" ></script> +<script type="text/javascript" src="js/ajaxupload.js" ></script> <script> $(document).ready(function() { var uploader = new window.AjaxUpload( diff --git a/view/nav.tpl b/view/nav.tpl index 434c9f844..cf1c2a227 100644 --- a/view/nav.tpl +++ b/view/nav.tpl @@ -81,7 +81,12 @@ {{ if $nav.apps }} <li id="nav-apps-link" class="nav-menu $sel.apps"> - <a class=" $nav.apps.2" href="$nav.apps.0" title="$nav.apps.3" >$nav.apps.1</a> + <a class=" $nav.apps.2" href="#" rel="#nav-apps-menu" title="$nav.apps.3" >$nav.apps.1</a> + <ul id="nav-apps-menu" class="menu-popup"> + {{ for $apps as $ap }} + <li><a href="$ap.url">$ap.name</a></li> + {{ endfor }} + </ul> </li> {{ endif }} </ul> diff --git a/view/profile_vcard.tpl b/view/profile_vcard.tpl index 34f265ee6..cab732cc1 100644 --- a/view/profile_vcard.tpl +++ b/view/profile_vcard.tpl @@ -1,29 +1,61 @@ <div class="vcard"> - $fullname - $pdesc - $tabs + <div class="tool"> + <div class="fn label">$profile.name</div> + {{ if $profile.edit }} + <div class="action"> + <a class="icon s16 edit ttright" href="#" rel="#profiles-menu" title="$profile.edit.3"><span>$profile.edit.1</span></a> + <ul id="profiles-menu" class="menu-popup"> + {{ for $profile.menu.entries as $e }} + <li><a href="profiles/$e.id"><img src='$e.photo'>$e.profile_name</a></li> + {{ endfor }} + <li><a href="profile_photo" >$profile.menu.chg_photo</a></li> + <li><a href="profiles/new" id="profile-listing-new-link">$profile.menu.cr_new</a></li> + + </ul> + </div> + {{ endif }} + </div> + + + {{ if $pdesc }}<div class="title">$profile.pdesc</div>{{ endif }} + <div id="profile-photo-wrapper"><img class="photo" width="175" height="175" src="$profile.photo" alt="$profile.name"></div> - $photo - <div id="profile-extra-links"> - <ul> - $connect - </ul> - </div> - $location + {{ if $location }} + <dl class="location"><dt class="location-label">$location</dt> + <dd class="adr"> + {{ if $profile.address }}<div class="street-address">$profile.address</div>{{ endif }} + <span class="city-state-zip"> + <span class="locality">$profile.locality</span>{{ if $profile.locality }}, {{ endif }} + <span class="region">$profile.region</span> + <span class="postal-code">$profile.postal-code</span> + </span> + {{ if $profile.country-name }}<span class="country-name">$profile.country-name</span>{{ endif }} + </dd> + </dl> + {{ endif }} - $gender + {{ if $gender }}<dl class="mf"><dt class="gender-label">$gender</dt> <dd class="x-gender">$profile.gender</dd></dl>{{ endif }} + + {{ if $profile.pubkey }}<div class="key" style="display:none;">$profile.pubkey</div>{{ endif }} - $pubkey + {{ if $marital }}<dl class="marital"><dt class="marital-label"><span class="heart">♥</span>$marital</dt><dd class="marital-text">$profile.marital</dd></dl>{{ endif }} -$diaspora + {{ if $homepage }}<dl class="homepage"><dt class="homepage-label">$homepage</dt><dd class="homepage-url"><a href="$profile.homepage" target="external-link">$profile.homepage</a></dd></dl>{{ endif }} + {{ inc diaspora_vcard.tpl }}{{ endinc }} + + <div id="profile-extra-links"> + <ul> + {{ if $connect }} + <li><a id="dfrn-request-link" href="dfrn_request/$profile.nickname">$connect</a></li> + {{ endif }} + </ul> + </div> </div> -$marital - -$homepage +$contact_block diff --git a/view/theme/dispy/jot-header.tpl b/view/theme/dispy/jot-header.tpl index 155595056..0093bf82a 100644 --- a/view/theme/dispy/jot-header.tpl +++ b/view/theme/dispy/jot-header.tpl @@ -90,7 +90,7 @@ function initEditor(cb) { } } // initEditor </script> -<script type="text/javascript" src="include/ajaxupload.js" ></script> +<script type="text/javascript" src="js/ajaxupload.js" ></script> <script> var ispublic = '$ispublic'; $(document).ready(function() { diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index 78efb57ff..8dc017c9c 100644 --- a/view/theme/dispy/style.css +++ b/view/theme/dispy/style.css @@ -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; diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index f47af934c..8a681a0e0 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -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, diff --git a/view/theme/loozah/style.css b/view/theme/loozah/style.css index 781526eae..d552d59c6 100644 --- a/view/theme/loozah/style.css +++ b/view/theme/loozah/style.css @@ -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 { diff --git a/view/theme/quattro/LIBERATION-FONTS-COPYING b/view/theme/quattro/LIBERATION-FONTS-COPYING deleted file mode 100644 index d511905c1..000000000 --- a/view/theme/quattro/LIBERATION-FONTS-COPYING +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/view/theme/quattro/LiberationSans-Bold.ttf b/view/theme/quattro/LiberationSans-Bold.ttf Binary files differdeleted file mode 100644 index 169fac34d..000000000 --- a/view/theme/quattro/LiberationSans-Bold.ttf +++ /dev/null diff --git a/view/theme/quattro/LiberationSans-Italic.ttf b/view/theme/quattro/LiberationSans-Italic.ttf Binary files differdeleted file mode 100644 index 8b9dc760a..000000000 --- a/view/theme/quattro/LiberationSans-Italic.ttf +++ /dev/null diff --git a/view/theme/quattro/LiberationSans-Regular.ttf b/view/theme/quattro/LiberationSans-Regular.ttf Binary files differdeleted file mode 100644 index ceeaa2740..000000000 --- a/view/theme/quattro/LiberationSans-Regular.ttf +++ /dev/null diff --git a/view/theme/quattro/colors.less b/view/theme/quattro/colors.less new file mode 100644 index 000000000..3d3074d60 --- /dev/null +++ b/view/theme/quattro/colors.less @@ -0,0 +1,66 @@ +// Quattro Theme LESS file + +// "Echo" palette from Inkscape +@Blue1:rgb(25,174,255); +@Blue2:rgb(0,132,200); +@Blue3:rgb(0,92,148); +@Red1:rgb(255,65,65); +@Red2:rgb(220,0,0); +@Red3:rgb(181,0,0); +@Orange1:rgb(255,255,62); +@Orange2:rgb(255,153,0); +@Orange3:rgb(255,102,0); +@Brown1:rgb(255,192,34); +@Brown2:rgb(184,129,0); +@Brown3:rgb(128,77,0); +@Green1:rgb(204,255,66); +@Green2:rgb(154,222,0); +@Green3:rgb(0,145,0); +@Purple1:rgb(241,202,255); +@Purple2:rgb(215,108,255); +@Purple3:rgb(186,0,255); +@Metalic1:rgb(189,205,212); +@Metalic2:rgb(158,171,176); +@Metalic3:rgb(54,78,89); +@Metalic4:rgb(14,35,46); +@Grey1:rgb(255,255,255); +@Grey2:rgb(204,204,204); +@Grey3:rgb(153,153,153); +@Grey4:rgb(102,102,102); +@Grey5:rgb(45,45,45); + + +// Theme colors +@BodyBackground: @Grey1; +@BodyColor: @Grey5; + +@Link: @Blue3; +@LinkHover: @Blue3; +@LinkVisited: @Blue3; + +@Banner: @Grey1; + +@NavbarBackground:@Metalic4; +@NavbarSelectedBg:@Metalic3; +@NavbarSelectedBorder: @Metalic2; +@NavbarNotifBg: @Blue1; + +@Menu: @Grey5; +@MenuBg: @Grey1; +@MenuBorder: @Metalic3; +@MenuItem: @Grey5; +@MenuItemHoverBg: @Metalic1; +@MenuItemSeparator: @Metalic2; +@MenuEmpty: @Metalic2; +@MenuItemDetail: @Metalic2; + +@AsideBorder: @Metalic1; +@AsideConnect: @Grey1; +@AsideConnectBg: @Blue3; +@AsideConnectHoverBg: @Blue1; + +@InfoColor: @Grey1; +@InfoBackgroundColor: @Metalic3; + +@NoticeColor: @Grey1; +@NoticeBackgroundColor: #511919; diff --git a/view/theme/quattro/experimental b/view/theme/quattro/experimental new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/view/theme/quattro/experimental diff --git a/view/theme/quattro/icons.less b/view/theme/quattro/icons.less new file mode 100644 index 000000000..8f7111aff --- /dev/null +++ b/view/theme/quattro/icons.less @@ -0,0 +1,37 @@ +/* icons */ + +.icons(@size: 22) { + &.notify { background-image: url("../../../images/icons/@{size}/notify_off.png"); } + &.gear { background-image: url("../../../images/icons/@{size}/gear.png"); } + + &.add { background-image: url("../../../images/icons/@{size}/add.png"); } + &.delete { background-image: url("../../../images/icons/@{size}/delete.png"); } + &.edit { background-image: url("../../../images/icons/@{size}/edit.png"); } + &.start { background-image: url("../../../images/icons/@{size}/star.png"); } +} + + +.icon { + background-color: transparent ; + background-repeat: no-repeat; + background-position: center center; + display: block; + overflow: hidden; + text-indent: -9999px; + padding: 1px; + + &.text { + text-indent: 0px; + } + + &.s16 { + width:22px; height: 22px; + .icons(16); + } + &.s22 { + width:22px; height: 22px; + .icons(22); + } + + +} diff --git a/view/theme/quattro/liberation-fonts-ttf-1.07.0.tar.gz b/view/theme/quattro/liberation-fonts-ttf-1.07.0.tar.gz Binary files differdeleted file mode 100644 index 0c86f7347..000000000 --- a/view/theme/quattro/liberation-fonts-ttf-1.07.0.tar.gz +++ /dev/null diff --git a/view/theme/quattro/quattro.less b/view/theme/quattro/quattro.less new file mode 100644 index 000000000..01d0b94b9 --- /dev/null +++ b/view/theme/quattro/quattro.less @@ -0,0 +1,252 @@ +// Quattro Theme LESS file + +/* global */ +body { + font-family: Liberation Sans,helvetica,arial,clean,sans-serif; + font-size: 12px; + background-color: @BodyBackground; + color: @BodyColor; + margin: 50px 0px 0px 0px; + display:table; +} + +.shadow(@x: 0px, @y: 5px){ + -webkit-box-shadow:@x @y 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow:@x @y 10px rgba(0, 0, 0, 0.7); + box-shadow:@x @y 10px rgba(0, 0, 0, 0.7); +} + +.rounded(@tr: 5px, @tl: 5px, @bl: 5px, @br: 5px){ + -moz-border-radius: @arguments; + -webkit-border-radius: @arguments; + border-radius: @arguments; +} + +.roundbottom (@radius: 5px){ .rounded(0, 0, @radius, @radius); } +.roundtop (@radius: 5px){ .rounded(@radius, @radius, 0, 0); } + +a, a:link { color: @Link; text-decoration: none; } +a:visited { color: @LinkVisited; text-decoration: none; } +a:hover {color: @LinkHover; text-decoration: underline; } + +.left { float: left; } +.right { float: right; } + +.tool { + height: auto; overflow: auto; + .label { float: left;} + .action { float: right; } +} + +/* popup notifications */ +div.jGrowl div.notice { + background: @NoticeBackgroundColor url("../../../images/icons/48/notice.png") no-repeat 5px center; + color: @NoticeColor; + padding-left: 58px; +} +div.jGrowl div.info { + background: @InfoBackgroundColor url("../../../images/icons/48/info.png") no-repeat 5px center; + color: @InfoColor; + padding-left: 58px; +} + + + +/* header */ +header { + position: fixed; left: 43%; right: 43%; top: 0px; + margin: 0px; padding: 0px; + /*width: 100%; height: 12px; */ + z-index: 110; + color: @Grey1; + #site-location { + display: none; + } + + #banner { + + text-align: center; + width: 100%; + a, a:active, a:visited, a:link, a:hover { color: @Grey1; text-decoration: none; outline: none; vertical-align: bottom; } + #logo-img { height: 22px; margin-top:5px;} + #logo-text { font-size: 22px } + } +} +/* nav */ +nav { + width: 100%; height: 32px; + position: fixed; left: 0px; top: 0px; + padding: 0px; + background-color: @NavbarBackground; + color: @Grey1; + z-index: 100; + .shadow(0px, 0px); + + a, a:active, a:visited, a:link, a:hover { color: @Banner; text-decoration: none; outline: none; } + + ul { + margin: 0px; + padding: 0px 20px; + li { + list-style: none; + margin: 0px; padding: 0px; + float: left; + .menu-popup{ left: 0px; right: auto; } + } + + } + + .nav-menu-icon { + position: relative; + height: 22px; + padding: 5px; + margin: 0px 10px; + .roundtop(); + + &.selected { + background-color: @NavbarSelectedBg; + } + + img { width: 22px; height: 22px; } + .nav-notify { top: 3px; } + } + + .nav-menu { + position: relative; + height: 16px; + padding: 5px; + margin: 3px 15px 0px; + font-size: 14px; + border-bottom: 3px solid @NavbarBackground; + &.selected { + border-bottom: 3px solid @NavbarSelectedBorder; + } + + } + + .nav-notify { + display: none; + position: absolute; + background-color: @NavbarNotifBg; + .rounded(); + font-size: 10px; + padding: 1px 3px; + top: 0px; + right: -10px; + min-width: 15px; + text-align: right; + + &.show{ display: block; } + } + + + #nav-help-link, + #nav-search-link, + #nav-directory-link, + #nav-apps-link, + #nav-site-linkmenu { + float: right; + .menu-popup{ right: 0px; left: auto; } + } + + #nav-notifications-linkmenu.selected .icon.s22.notify { background-image: url("../../../images/icons/22/notify_on.png") } + #nav-apps-link.selected { background-color: @NavbarSelectedBg; } +} + + +ul.menu-popup { + position: absolute; + display: none; + width: 10em; + background: @MenuBg; + color: @Menu; + margin: 0px; + padding: 0px; + list-style: none; + border: 3px solid @MenuBorder; + z-index: 100000; + + .shadow(); + + a { display: block; color: @MenuItem; padding: 5px 10px; text-decoration: none;} + a:hover { background-color: @MenuItemHoverBg; } + .menu-sep { border-top: 1px solid @MenuItemSeparator; } + li { float: none; overflow: auto; height: auto; display: block; } + li img { float: left; width: 16px; height: 16px; padding-right: 5px;} + .empty { + padding: 5px; + text-align: center; + color: @MenuEmpty; + } +} + +#nav-notifications-menu { + width: 400px; + img { float: left; margin-right: 5px; } + .contactname { font-weight: bold; } + .notif-when { font-size: 10px; color: @MenuItemDetail; display: block; } +} + + + + +/* aside */ +aside { + display: table-cell; + width: 200px; + padding:0px 10px 0px 20px; + border-right: 1px solid @AsideBorder; + + .vcard { + .fn { font-size: 16px; font-weight: bold; margin-bottom: 5px; } + .title { margin-bottom: 5px; } + dl { height: auto; overflow: auto; } + dt {float: left; margin-left: 0px; width: 35%; } + dd {float: left; margin-left: 4px; width: 60%;} + + } + + #profile-extra-links { + ul { padding: 0px; margin: 0px; } + li { padding: 0px; margin: 0px; list-style: none; } + } + + #dfrn-request-link { + display: block; + .rounded(); + color: @AsideConnect; + background: @AsideConnectBg url('../../../images/connect-bg.png') no-repeat left center; + font-weight: bold; + text-transform:uppercase; + padding: 4px 2px 2px 35px; + + &:hover { text-decoration: none; background-color: @AsideConnectHoverBg; } + } + +} + +#contact-block { + overflow: auto; height: auto; + .contact-block-h4 { float: left; margin: 5px 0px; } + .allcontact-link { float: right; margin: 5px 0px; } + .contact-block-content { + clear: both; + overflow: auto; height: auto; + } + .contact-block-link { + float: left; + margin: 0px 2px 2px 0px; + } +} + + + + +/* section */ +section { + display: table-cell; + width: 800px; + padding:0px 20px 0px 10px; +} + + diff --git a/view/theme/quattro/style.css b/view/theme/quattro/style.css index ea0ed8eac..6daef77a3 100644 --- a/view/theme/quattro/style.css +++ b/view/theme/quattro/style.css @@ -1,20 +1,82 @@ /** * Fabio Comuni <http://kirgroup.com/profile/fabrixxm> **/ +/* icons */ +.icon { + background-color: transparent ; + background-repeat: no-repeat; + background-position: center center; + display: block; + overflow: hidden; + text-indent: -9999px; + padding: 1px; +} +.icon.text { + text-indent: 0px; +} +.icon.s16 { + width: 22px; + height: 22px; +} +.icon.s16.notify { + background-image: url("../../../images/icons/16/notify_off.png"); +} +.icon.s16.gear { + background-image: url("../../../images/icons/16/gear.png"); +} +.icon.s16.add { + background-image: url("../../../images/icons/16/add.png"); +} +.icon.s16.delete { + background-image: url("../../../images/icons/16/delete.png"); +} +.icon.s16.edit { + background-image: url("../../../images/icons/16/edit.png"); +} +.icon.s16.start { + background-image: url("../../../images/icons/16/star.png"); +} +.icon.s22 { + width: 22px; + height: 22px; +} +.icon.s22.notify { + background-image: url("../../../images/icons/22/notify_off.png"); +} +.icon.s22.gear { + background-image: url("../../../images/icons/22/gear.png"); +} +.icon.s22.add { + background-image: url("../../../images/icons/22/add.png"); +} +.icon.s22.delete { + background-image: url("../../../images/icons/22/delete.png"); +} +.icon.s22.edit { + background-image: url("../../../images/icons/22/edit.png"); +} +.icon.s22.start { + background-image: url("../../../images/icons/22/star.png"); +} /* global */ body { font-family: Liberation Sans, helvetica, arial, clean, sans-serif; font-size: 12px; background-color: #ffffff; color: #2d2d2d; - margin: 0px; - display: table-row; + margin: 50px 0px 0px 0px; + display: table; } -a, a:visited, a:link { +a, a:link { + color: #005c94; + text-decoration: none; +} +a:visited { color: #005c94; text-decoration: none; } a:hover { + color: #005c94; text-decoration: underline; } .left { @@ -23,25 +85,26 @@ a:hover { .right { float: right; } -/* icons */ -.icon { - background-color: transparent ; - background-repeat: no-repeat; - background-position: center center; - display: block; - overflow: hidden; - text-indent: -9999px; +.tool { + height: auto; + overflow: auto; } -.icon.s22 { - width: 22px; - height: 22px; - padding: 1px; +.tool .label { + float: left; } -.icon.s22.notify { - background-image: url("../../../images/icons/notify_off_22.png"); +.tool .action { + float: right; } -.icon.s22.gear { - background-image: url("../../../images/icons/gear_22.png"); +/* popup notifications */ +div.jGrowl div.notice { + background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center; + color: #ffffff; + padding-left: 58px; +} +div.jGrowl div.info { + background: #364e59 url("../../../images/icons/48/info.png") no-repeat 5px center; + color: #ffffff; + padding-left: 58px; } /* header */ header { @@ -57,13 +120,6 @@ header { color: #ffffff; } header #site-location { - /*font-size:8px; - float:left; - background-color: @Metalic3; - padding: 1px 5px; - margin-left: 20px; - .roundbottom()*/ - display: none; } header #banner { @@ -188,7 +244,10 @@ nav #nav-site-linkmenu .menu-popup { left: auto; } nav #nav-notifications-linkmenu.selected .icon.s22.notify { - background-image: url("../../../images/icons/notify_on_22.png"); + background-image: url("../../../images/icons/22/notify_on.png"); +} +nav #nav-apps-link.selected { + background-color: #364e59; } ul.menu-popup { position: absolute; @@ -209,6 +268,7 @@ ul.menu-popup a { display: block; color: #2d2d2d; padding: 5px 10px; + text-decoration: none; } ul.menu-popup a:hover { background-color: #bdcdd4; @@ -222,6 +282,12 @@ ul.menu-popup li { height: auto; display: block; } +ul.menu-popup li img { + float: left; + width: 16px; + height: 16px; + padding-right: 5px; +} ul.menu-popup .empty { padding: 5px; text-align: center; @@ -246,11 +312,79 @@ ul.menu-popup .empty { aside { display: table-cell; width: 200px; - padding: 50px 10px 0px 20px; + padding: 0px 10px 0px 20px; + border-right: 1px solid #bdcdd4; +} +aside .vcard .fn { + font-size: 16px; + font-weight: bold; + margin-bottom: 5px; +} +aside .vcard .title { + margin-bottom: 5px; +} +aside .vcard dl { + height: auto; + overflow: auto; +} +aside .vcard dt { + float: left; + margin-left: 0px; + width: 35%; +} +aside .vcard dd { + float: left; + margin-left: 4px; + width: 60%; +} +aside #profile-extra-links ul { + padding: 0px; + margin: 0px; +} +aside #profile-extra-links li { + padding: 0px; + margin: 0px; + list-style: none; +} +aside #dfrn-request-link { + display: block; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + color: #ffffff; + background: #005c94 url('../../../images/connect-bg.png') no-repeat left center; + font-weight: bold; + text-transform: uppercase; + padding: 4px 2px 2px 35px; +} +aside #dfrn-request-link:hover { + text-decoration: none; + background-color: #19aeff; +} +#contact-block { + overflow: auto; + height: auto; +} +#contact-block .contact-block-h4 { + float: left; + margin: 5px 0px; +} +#contact-block .allcontact-link { + float: right; + margin: 5px 0px; +} +#contact-block .contact-block-content { + clear: both; + overflow: auto; + height: auto; +} +#contact-block .contact-block-link { + float: left; + margin: 0px 2px 2px 0px; } /* section */ section { display: table-cell; width: 800px; - padding: 50px 20px 0px 10px; + padding: 0px 20px 0px 10px; } diff --git a/view/theme/quattro/style.less b/view/theme/quattro/style.less index 5f3958f9d..c3dbae777 100644 --- a/view/theme/quattro/style.less +++ b/view/theme/quattro/style.less @@ -5,265 +5,10 @@ // compile with lessc // $ lessc style.less > style.css -// "Echo" palette from Inkscape -@Blue1:rgb(25,174,255); -@Blue2:rgb(0,132,200); -@Blue3:rgb(0,92,148); -@Red1:rgb(255,65,65); -@Red2:rgb(220,0,0); -@Red3:rgb(181,0,0); -@Orange1:rgb(255,255,62); -@Orange2:rgb(255,153,0); -@Orange3:rgb(255,102,0); -@Brown1:rgb(255,192,34); -@Brown2:rgb(184,129,0); -@Brown3:rgb(128,77,0); -@Green1:rgb(204,255,66); -@Green2:rgb(154,222,0); -@Green3:rgb(0,145,0); -@Purple1:rgb(241,202,255); -@Purple2:rgb(215,108,255); -@Purple3:rgb(186,0,255); -@Metalic1:rgb(189,205,212); -@Metalic2:rgb(158,171,176); -@Metalic3:rgb(54,78,89); -@Metalic4:rgb(14,35,46); -@Grey1:rgb(255,255,255); -@Grey2:rgb(204,204,204); -@Grey3:rgb(153,153,153); -@Grey4:rgb(102,102,102); -@Grey5:rgb(45,45,45); +@import "colors"; +@import "icons"; +@import "quattro"; -///* fonts */ -// @font-face { -// font-family: "LiberationSans"; -// src: local("Liberation Sans"),url( LiberationSans-Regular.ttf ) format("truetype"); -// font-weight: bold; font-style: italic; -// } -// -// @font-face { -// font-family: "LiberationSans"; -// src: local("Liberation Sans"),url( LiberationSans-Bold.ttf ) format("truetype"); -// font-weight: bold; font-style: normal; -// } -// @font-face { -// font-family: "LiberationSans"; -// src: local("Liberation Sans"),url( LiberationSans-Italic.ttf ) format("truetype"); -// font-weight: normal; font-style: italic; -// } -/* global */ -body { - font-family: Liberation Sans,helvetica,arial,clean,sans-serif; - font-size: 12px; - background-color: @Grey1; - color: @Grey5; - margin: 0px; - display:table-row; -} -.shadow(@x: 0px, @y: 5px){ - -webkit-box-shadow:@x @y 10px rgba(0, 0, 0, 0.7); - -moz-box-shadow:@x @y 10px rgba(0, 0, 0, 0.7); - box-shadow:@x @y 10px rgba(0, 0, 0, 0.7); -} - -.rounded(@tr: 5px, @tl: 5px, @bl: 5px, @br: 5px){ - -moz-border-radius: @arguments; - -webkit-border-radius: @arguments; - border-radius: @arguments; -} - -.roundbottom (@radius: 5px){ .rounded(0, 0, @radius, @radius); } -.roundtop (@radius: 5px){ .rounded(@radius, @radius, 0, 0); } - -a, a:visited, a:link { color: @Blue3; text-decoration: none; } -a:hover {text-decoration: underline; } - -.left { float: left; } -.right { float: right; } - -/* icons */ - - -.icons(@size: 22) { - &.notify { background-image: url("../../../images/icons/notify_off_@{size}.png"); } - &.gear { background-image: url("../../../images/icons/gear_@{size}.png"); } -} - - -.icon { - background-color: transparent ; - background-repeat: no-repeat; - background-position: center center; - display: block; - overflow: hidden; - text-indent: -9999px; - - &.s22 { - width:22px; height: 22px; - padding: 1px; - .icons(22); - } - -} - - - -/* header */ -header { - position: fixed; left: 43%; right: 43%; top: 0px; - margin: 0px; padding: 0px; - /*width: 100%; height: 12px; */ - z-index: 110; - color: @Grey1; - #site-location { - /*font-size:8px; - float:left; - background-color: @Metalic3; - padding: 1px 5px; - margin-left: 20px; - .roundbottom()*/ - display: none; - } - - #banner { - - text-align: center; - width: 100%; - a, a:active, a:visited, a:link, a:hover { color: @Grey1; text-decoration: none; outline: none; vertical-align: bottom; } - #logo-img { height: 22px; margin-top:5px;} - #logo-text { font-size: 22px } - } -} -/* nav */ -nav { - width: 100%; height: 32px; - position: fixed; left: 0px; top: 0px; - padding: 0px; - background-color: @Metalic4; - color: @Grey1; - z-index: 100; - .shadow(0px, 0px); - - a, a:active, a:visited, a:link, a:hover { color: @Grey1; text-decoration: none; outline: none; } - - ul { - margin: 0px; - padding: 0px 20px; - li { - list-style: none; - margin: 0px; padding: 0px; - float: left; - .menu-popup{ left: 0px; right: auto; } - } - - } - - .nav-menu-icon { - position: relative; - height: 22px; - padding: 5px; - margin: 0px 10px; - .roundtop(); - - &.selected { - background-color: @Metalic3; - } - - img { width: 22px; height: 22px; } - .nav-notify { top: 3px; } - } - - .nav-menu { - position: relative; - height: 16px; - padding: 5px; - margin: 3px 15px 0px; - font-size: 14px; - border-bottom: 3px solid @Metalic4; - &.selected { - border-bottom: 3px solid @Metalic2; - } - - } - - .nav-notify { - display: none; - position: absolute; - background-color: @Blue1; - .rounded(); - font-size: 10px; - padding: 1px 3px; - top: 0px; - right: -10px; - min-width: 15px; - text-align: right; - - &.show{ display: block; } - } - - - #nav-help-link, - #nav-search-link, - #nav-directory-link, - #nav-apps-link, - #nav-site-linkmenu { - float: right; - .menu-popup{ right: 0px; left: auto; } - } - - #nav-notifications-linkmenu.selected .icon.s22.notify { background-image: url("../../../images/icons/notify_on_22.png") } - -} - -ul.menu-popup { - position: absolute; - display: none; - width: 10em; - background: @Grey1; - color: @Grey5; - margin: 0px; - padding: 0px; - list-style: none; - border: 3px solid @Metalic3; - z-index: 100000; - - .shadow(); - - a { display: block; color: @Grey5; padding: 5px 10px;} - a:hover { background-color: @Metalic1; } - .menu-sep { border-top: 1px solid @Metalic2; } - li { float: none; overflow: auto; height: auto; display: block; } - - .empty { - padding: 5px; - text-align: center; - color: @Metalic2; - } -} - -#nav-notifications-menu { - width: 400px; - img { float: left; margin-right: 5px; } - .contactname { font-weight: bold; } - .notif-when { font-size: 10px; color: @Metalic2; display: block; } -} - - - - -/* aside */ -aside { - display: table-cell; - width: 200px; - padding:50px 10px 0px 20px; -} - -/* section */ -section { - display: table-cell; - width: 800px; - padding:50px 20px 0px 10px; -} diff --git a/zot.txt b/zot.txt new file mode 100644 index 000000000..0704875af --- /dev/null +++ b/zot.txt @@ -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 + + |