aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfabrixxm <fabrix.xm@gmail.com>2011-09-05 21:05:24 +0200
committerfabrixxm <fabrix.xm@gmail.com>2011-09-05 21:05:24 +0200
commit2f5a34ad1791f01cacb3b86c11501f0e11c67df4 (patch)
treedd9242b14387c833346f4172e3f190659db56ff7
parent5ec4a4e6deb5d28cbfab54093f8b4180912738d4 (diff)
parent08e54234e30c10e3130b7d71caba9fd43e3593e3 (diff)
downloadvolse-hubzilla-2f5a34ad1791f01cacb3b86c11501f0e11c67df4.tar.gz
volse-hubzilla-2f5a34ad1791f01cacb3b86c11501f0e11c67df4.tar.bz2
volse-hubzilla-2f5a34ad1791f01cacb3b86c11501f0e11c67df4.zip
Merge branch 'newui' of github.com:fabrixxm/friendika into newui
-rw-r--r--.gitignore1
-rw-r--r--addon/calc/calc.php2
-rw-r--r--addon/convert/convert.php2
-rw-r--r--addon/facebook/README4
-rw-r--r--addon/facebook/facebook.php28
-rw-r--r--addon/impressum/README2
-rw-r--r--addon/sniper/sniper.php2
-rw-r--r--addon/statusnet/README22
-rw-r--r--addon/statusnet/statusnet.php5
-rw-r--r--addon/tictac/tictac.php2
-rw-r--r--addon/twitter/README12
-rw-r--r--addon/widgets/widget_like.php2
-rw-r--r--boot.php169
-rw-r--r--database.sql16
-rw-r--r--doc/Installing-Connectors.md8
-rw-r--r--images/connect-bg.pngbin0 -> 689 bytes
-rw-r--r--images/icons/10/add.pngbin0 -> 2946 bytes
-rw-r--r--images/icons/10/delete.pngbin0 -> 3018 bytes
-rw-r--r--images/icons/10/edit.pngbin0 -> 3011 bytes
-rw-r--r--images/icons/10/feed.pngbin0 -> 535 bytes
-rw-r--r--images/icons/10/gear.pngbin0 -> 3043 bytes
-rw-r--r--images/icons/10/group.pngbin0 -> 543 bytes
-rw-r--r--images/icons/10/info.pngbin0 -> 488 bytes
-rw-r--r--images/icons/10/notice.pngbin0 -> 471 bytes
-rw-r--r--images/icons/10/notify_off.pngbin0 -> 478 bytes
-rw-r--r--images/icons/10/notify_on.pngbin0 -> 369 bytes
-rw-r--r--images/icons/10/star.pngbin0 -> 3229 bytes
-rw-r--r--images/icons/10/user.pngbin0 -> 534 bytes
-rw-r--r--images/icons/16/add.pngbin0 -> 3068 bytes
-rw-r--r--images/icons/16/delete.pngbin0 -> 3142 bytes
-rw-r--r--images/icons/16/edit.pngbin0 -> 3129 bytes
-rw-r--r--images/icons/16/feed.pngbin0 -> 828 bytes
-rw-r--r--images/icons/16/gear.pngbin0 -> 3199 bytes
-rw-r--r--images/icons/16/group.pngbin0 -> 852 bytes
-rw-r--r--images/icons/16/info.pngbin0 -> 854 bytes
-rw-r--r--images/icons/16/notice.pngbin0 -> 591 bytes
-rw-r--r--images/icons/16/notify_off.pngbin0 -> 835 bytes
-rw-r--r--images/icons/16/notify_on.pngbin0 -> 542 bytes
-rw-r--r--images/icons/16/star.pngbin0 -> 3498 bytes
-rw-r--r--images/icons/16/user.pngbin0 -> 794 bytes
-rw-r--r--images/icons/22/add.pngbin0 -> 3210 bytes
-rw-r--r--images/icons/22/delete.pngbin0 -> 3294 bytes
-rw-r--r--images/icons/22/edit.pngbin0 -> 3247 bytes
-rw-r--r--images/icons/22/feed.pngbin0 -> 1136 bytes
-rw-r--r--images/icons/22/gear.pngbin0 -> 3384 bytes
-rw-r--r--images/icons/22/group.pngbin0 -> 1146 bytes
-rw-r--r--images/icons/22/info.pngbin0 -> 1106 bytes
-rw-r--r--images/icons/22/notice.pngbin0 -> 780 bytes
-rw-r--r--images/icons/22/notify_off.pngbin0 -> 1093 bytes
-rw-r--r--images/icons/22/notify_on.pngbin0 -> 721 bytes
-rw-r--r--images/icons/22/star.pngbin0 -> 3780 bytes
-rw-r--r--images/icons/22/user.pngbin0 -> 1084 bytes
-rw-r--r--images/icons/48/add.pngbin0 -> 3944 bytes
-rw-r--r--images/icons/48/delete.pngbin0 -> 3997 bytes
-rw-r--r--images/icons/48/edit.pngbin0 -> 3948 bytes
-rw-r--r--images/icons/48/feed.pngbin0 -> 2692 bytes
-rw-r--r--images/icons/48/gear.pngbin0 -> 4225 bytes
-rw-r--r--images/icons/48/group.pngbin0 -> 2392 bytes
-rw-r--r--images/icons/48/info.pngbin0 -> 2152 bytes
-rw-r--r--images/icons/48/notice.pngbin0 -> 1730 bytes
-rw-r--r--images/icons/48/notify_off.pngbin0 -> 2147 bytes
-rw-r--r--images/icons/48/notify_on.pngbin0 -> 1506 bytes
-rw-r--r--images/icons/48/star.pngbin0 -> 4776 bytes
-rw-r--r--images/icons/48/user.pngbin0 -> 2269 bytes
-rw-r--r--images/icons/add.pngbin0 -> 8685 bytes
-rw-r--r--images/icons/delete.pngbin0 -> 7905 bytes
-rw-r--r--images/icons/edit.pngbin0 -> 8297 bytes
-rw-r--r--images/icons/feed.pngbin0 -> 9007 bytes
-rw-r--r--images/icons/gear.pngbin0 -> 10744 bytes
-rw-r--r--images/icons/gear_22.pngbin886 -> 0 bytes
-rw-r--r--images/icons/group.pngbin0 -> 7268 bytes
-rw-r--r--images/icons/info.pngbin0 -> 4287 bytes
-rw-r--r--images/icons/make.sh14
-rw-r--r--images/icons/notice.pngbin0 -> 3701 bytes
-rw-r--r--images/icons/notify_off.pngbin0 -> 4340 bytes
-rw-r--r--images/icons/notify_off_22.pngbin884 -> 0 bytes
-rw-r--r--images/icons/notify_on.pngbin0 -> 3671 bytes
-rw-r--r--images/icons/notify_on_22.pngbin561 -> 0 bytes
-rw-r--r--images/icons/star.pngbin0 -> 9307 bytes
-rw-r--r--images/icons/user.pngbin0 -> 6921 bytes
-rw-r--r--include/Scrape.php16
-rw-r--r--include/api.php115
-rw-r--r--include/bb2diaspora.php66
-rw-r--r--include/bbcode.php84
-rw-r--r--include/conversation.php1
-rw-r--r--include/crypto.php68
-rw-r--r--include/delivery.php447
-rw-r--r--include/diaspora.php147
-rw-r--r--include/group.php6
-rw-r--r--include/items.php61
-rw-r--r--include/nav.php3
-rw-r--r--include/network.php28
-rw-r--r--include/notifier.php191
-rw-r--r--include/queue.php32
-rw-r--r--include/text.php40
-rw-r--r--index.php10
-rw-r--r--js/acl.js (renamed from include/acl.js)0
-rw-r--r--js/ajaxupload.js (renamed from include/ajaxupload.js)0
-rw-r--r--js/country.js (renamed from include/country.js)0
-rw-r--r--js/jquery.htmlstream.js (renamed from include/jquery.htmlstream.js)0
-rw-r--r--js/jquery.js (renamed from include/jquery.js)0
-rw-r--r--js/main.js (renamed from include/main.js)21
-rw-r--r--library/jgrowl/README3
-rwxr-xr-xlibrary/jgrowl/jquery.jgrowl.css136
-rw-r--r--library/jgrowl/jquery.jgrowl_minimized.js11
-rw-r--r--library/stanlemon-jgrowl-tip.tar.gzbin0 -> 213973 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js2
-rw-r--r--library/tiptip/README30
-rw-r--r--library/tiptip/jquery.tipTip.minified.js21
-rw-r--r--library/tiptip/tipTip.css113
-rw-r--r--mod/admin.php6
-rw-r--r--mod/apps.php19
-rw-r--r--mod/contacts.php18
-rw-r--r--mod/crepair.php18
-rw-r--r--mod/item.php51
-rw-r--r--mod/localtime.php44
-rw-r--r--mod/network.php58
-rw-r--r--mod/parse_url.php10
-rw-r--r--mod/photos.php3
-rw-r--r--mod/ping.php22
-rw-r--r--update.php41
-rw-r--r--view/admin_remoteupdate.tpl2
-rw-r--r--view/apps.tpl7
-rw-r--r--view/contact_block.tpl11
-rw-r--r--view/contact_edit.tpl21
-rw-r--r--view/crepair.tpl4
-rw-r--r--view/cs/htconfig.tpl4
-rw-r--r--view/cs/lostpass_eml.tpl2
-rw-r--r--view/cs/mail_received_html_body_eml.tpl2
-rw-r--r--view/cs/messages.po2879
-rw-r--r--view/cs/passchanged_eml.tpl4
-rw-r--r--view/cs/register_open_eml.tpl4
-rw-r--r--view/cs/register_verify_eml.tpl6
-rw-r--r--view/cs/strings.php453
-rw-r--r--view/de/strings.php2
-rw-r--r--view/diaspora_vcard.tpl44
-rw-r--r--view/head.tpl14
-rw-r--r--view/it/messages.po8
-rw-r--r--view/it/strings.php6
-rw-r--r--view/jot-header.tpl2
-rw-r--r--view/msg-header.tpl2
-rw-r--r--view/nav.tpl7
-rw-r--r--view/profile_vcard.tpl64
-rw-r--r--view/theme/dispy/jot-header.tpl2
-rw-r--r--view/theme/dispy/style.css2
-rw-r--r--view/theme/duepuntozero/style.css22
-rw-r--r--view/theme/loozah/style.css26
-rw-r--r--view/theme/quattro/LIBERATION-FONTS-COPYING339
-rw-r--r--view/theme/quattro/LiberationSans-Bold.ttfbin136664 -> 0 bytes
-rw-r--r--view/theme/quattro/LiberationSans-Italic.ttfbin161532 -> 0 bytes
-rw-r--r--view/theme/quattro/LiberationSans-Regular.ttfbin139036 -> 0 bytes
-rw-r--r--view/theme/quattro/colors.less66
-rw-r--r--view/theme/quattro/experimental0
-rw-r--r--view/theme/quattro/icons.less37
-rw-r--r--view/theme/quattro/liberation-fonts-ttf-1.07.0.tar.gzbin1326750 -> 0 bytes
-rw-r--r--view/theme/quattro/quattro.less252
-rw-r--r--view/theme/quattro/style.css192
-rw-r--r--view/theme/quattro/style.less261
-rw-r--r--zot.txt304
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(){
diff --git a/boot.php b/boot.php
index 28467006d..10195c2ba 100644
--- a/boot.php
+++ b/boot.php
@@ -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">&hearts;</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
new file mode 100644
index 000000000..0611c73e5
--- /dev/null
+++ b/images/connect-bg.png
Binary files differ
diff --git a/images/icons/10/add.png b/images/icons/10/add.png
new file mode 100644
index 000000000..f036ac73e
--- /dev/null
+++ b/images/icons/10/add.png
Binary files differ
diff --git a/images/icons/10/delete.png b/images/icons/10/delete.png
new file mode 100644
index 000000000..f6bf31da4
--- /dev/null
+++ b/images/icons/10/delete.png
Binary files differ
diff --git a/images/icons/10/edit.png b/images/icons/10/edit.png
new file mode 100644
index 000000000..a6af619e2
--- /dev/null
+++ b/images/icons/10/edit.png
Binary files differ
diff --git a/images/icons/10/feed.png b/images/icons/10/feed.png
new file mode 100644
index 000000000..0e7d02c9b
--- /dev/null
+++ b/images/icons/10/feed.png
Binary files differ
diff --git a/images/icons/10/gear.png b/images/icons/10/gear.png
new file mode 100644
index 000000000..df6f87af5
--- /dev/null
+++ b/images/icons/10/gear.png
Binary files differ
diff --git a/images/icons/10/group.png b/images/icons/10/group.png
new file mode 100644
index 000000000..23172a027
--- /dev/null
+++ b/images/icons/10/group.png
Binary files differ
diff --git a/images/icons/10/info.png b/images/icons/10/info.png
new file mode 100644
index 000000000..8097733f3
--- /dev/null
+++ b/images/icons/10/info.png
Binary files differ
diff --git a/images/icons/10/notice.png b/images/icons/10/notice.png
new file mode 100644
index 000000000..327d5834e
--- /dev/null
+++ b/images/icons/10/notice.png
Binary files differ
diff --git a/images/icons/10/notify_off.png b/images/icons/10/notify_off.png
new file mode 100644
index 000000000..c499de01b
--- /dev/null
+++ b/images/icons/10/notify_off.png
Binary files differ
diff --git a/images/icons/10/notify_on.png b/images/icons/10/notify_on.png
new file mode 100644
index 000000000..5204e097c
--- /dev/null
+++ b/images/icons/10/notify_on.png
Binary files differ
diff --git a/images/icons/10/star.png b/images/icons/10/star.png
new file mode 100644
index 000000000..185761177
--- /dev/null
+++ b/images/icons/10/star.png
Binary files differ
diff --git a/images/icons/10/user.png b/images/icons/10/user.png
new file mode 100644
index 000000000..419661be6
--- /dev/null
+++ b/images/icons/10/user.png
Binary files differ
diff --git a/images/icons/16/add.png b/images/icons/16/add.png
new file mode 100644
index 000000000..7ca375325
--- /dev/null
+++ b/images/icons/16/add.png
Binary files differ
diff --git a/images/icons/16/delete.png b/images/icons/16/delete.png
new file mode 100644
index 000000000..ada2535fc
--- /dev/null
+++ b/images/icons/16/delete.png
Binary files differ
diff --git a/images/icons/16/edit.png b/images/icons/16/edit.png
new file mode 100644
index 000000000..747f5e4e7
--- /dev/null
+++ b/images/icons/16/edit.png
Binary files differ
diff --git a/images/icons/16/feed.png b/images/icons/16/feed.png
new file mode 100644
index 000000000..9ac7c6677
--- /dev/null
+++ b/images/icons/16/feed.png
Binary files differ
diff --git a/images/icons/16/gear.png b/images/icons/16/gear.png
new file mode 100644
index 000000000..5af85390f
--- /dev/null
+++ b/images/icons/16/gear.png
Binary files differ
diff --git a/images/icons/16/group.png b/images/icons/16/group.png
new file mode 100644
index 000000000..bab4bcd18
--- /dev/null
+++ b/images/icons/16/group.png
Binary files differ
diff --git a/images/icons/16/info.png b/images/icons/16/info.png
new file mode 100644
index 000000000..dcd501f93
--- /dev/null
+++ b/images/icons/16/info.png
Binary files differ
diff --git a/images/icons/16/notice.png b/images/icons/16/notice.png
new file mode 100644
index 000000000..8e551ad05
--- /dev/null
+++ b/images/icons/16/notice.png
Binary files differ
diff --git a/images/icons/16/notify_off.png b/images/icons/16/notify_off.png
new file mode 100644
index 000000000..f11aa4bde
--- /dev/null
+++ b/images/icons/16/notify_off.png
Binary files differ
diff --git a/images/icons/16/notify_on.png b/images/icons/16/notify_on.png
new file mode 100644
index 000000000..6e91fd995
--- /dev/null
+++ b/images/icons/16/notify_on.png
Binary files differ
diff --git a/images/icons/16/star.png b/images/icons/16/star.png
new file mode 100644
index 000000000..3130be6f0
--- /dev/null
+++ b/images/icons/16/star.png
Binary files differ
diff --git a/images/icons/16/user.png b/images/icons/16/user.png
new file mode 100644
index 000000000..df83bc27d
--- /dev/null
+++ b/images/icons/16/user.png
Binary files differ
diff --git a/images/icons/22/add.png b/images/icons/22/add.png
new file mode 100644
index 000000000..ee83da024
--- /dev/null
+++ b/images/icons/22/add.png
Binary files differ
diff --git a/images/icons/22/delete.png b/images/icons/22/delete.png
new file mode 100644
index 000000000..15713471b
--- /dev/null
+++ b/images/icons/22/delete.png
Binary files differ
diff --git a/images/icons/22/edit.png b/images/icons/22/edit.png
new file mode 100644
index 000000000..6e6bb4f73
--- /dev/null
+++ b/images/icons/22/edit.png
Binary files differ
diff --git a/images/icons/22/feed.png b/images/icons/22/feed.png
new file mode 100644
index 000000000..15094ce89
--- /dev/null
+++ b/images/icons/22/feed.png
Binary files differ
diff --git a/images/icons/22/gear.png b/images/icons/22/gear.png
new file mode 100644
index 000000000..16bcf77dd
--- /dev/null
+++ b/images/icons/22/gear.png
Binary files differ
diff --git a/images/icons/22/group.png b/images/icons/22/group.png
new file mode 100644
index 000000000..0505432ca
--- /dev/null
+++ b/images/icons/22/group.png
Binary files differ
diff --git a/images/icons/22/info.png b/images/icons/22/info.png
new file mode 100644
index 000000000..c3cc715dc
--- /dev/null
+++ b/images/icons/22/info.png
Binary files differ
diff --git a/images/icons/22/notice.png b/images/icons/22/notice.png
new file mode 100644
index 000000000..e45b18c4c
--- /dev/null
+++ b/images/icons/22/notice.png
Binary files differ
diff --git a/images/icons/22/notify_off.png b/images/icons/22/notify_off.png
new file mode 100644
index 000000000..f2200bb60
--- /dev/null
+++ b/images/icons/22/notify_off.png
Binary files differ
diff --git a/images/icons/22/notify_on.png b/images/icons/22/notify_on.png
new file mode 100644
index 000000000..6b3d7fd08
--- /dev/null
+++ b/images/icons/22/notify_on.png
Binary files differ
diff --git a/images/icons/22/star.png b/images/icons/22/star.png
new file mode 100644
index 000000000..b8829cbfd
--- /dev/null
+++ b/images/icons/22/star.png
Binary files differ
diff --git a/images/icons/22/user.png b/images/icons/22/user.png
new file mode 100644
index 000000000..fad2bee97
--- /dev/null
+++ b/images/icons/22/user.png
Binary files differ
diff --git a/images/icons/48/add.png b/images/icons/48/add.png
new file mode 100644
index 000000000..61a0b0982
--- /dev/null
+++ b/images/icons/48/add.png
Binary files differ
diff --git a/images/icons/48/delete.png b/images/icons/48/delete.png
new file mode 100644
index 000000000..1be4c9a21
--- /dev/null
+++ b/images/icons/48/delete.png
Binary files differ
diff --git a/images/icons/48/edit.png b/images/icons/48/edit.png
new file mode 100644
index 000000000..d09214ec9
--- /dev/null
+++ b/images/icons/48/edit.png
Binary files differ
diff --git a/images/icons/48/feed.png b/images/icons/48/feed.png
new file mode 100644
index 000000000..9730b4738
--- /dev/null
+++ b/images/icons/48/feed.png
Binary files differ
diff --git a/images/icons/48/gear.png b/images/icons/48/gear.png
new file mode 100644
index 000000000..16434390d
--- /dev/null
+++ b/images/icons/48/gear.png
Binary files differ
diff --git a/images/icons/48/group.png b/images/icons/48/group.png
new file mode 100644
index 000000000..e624bbfb2
--- /dev/null
+++ b/images/icons/48/group.png
Binary files differ
diff --git a/images/icons/48/info.png b/images/icons/48/info.png
new file mode 100644
index 000000000..a66ae388b
--- /dev/null
+++ b/images/icons/48/info.png
Binary files differ
diff --git a/images/icons/48/notice.png b/images/icons/48/notice.png
new file mode 100644
index 000000000..a44548527
--- /dev/null
+++ b/images/icons/48/notice.png
Binary files differ
diff --git a/images/icons/48/notify_off.png b/images/icons/48/notify_off.png
new file mode 100644
index 000000000..0a8854cfe
--- /dev/null
+++ b/images/icons/48/notify_off.png
Binary files differ
diff --git a/images/icons/48/notify_on.png b/images/icons/48/notify_on.png
new file mode 100644
index 000000000..8440018a6
--- /dev/null
+++ b/images/icons/48/notify_on.png
Binary files differ
diff --git a/images/icons/48/star.png b/images/icons/48/star.png
new file mode 100644
index 000000000..4b2816d15
--- /dev/null
+++ b/images/icons/48/star.png
Binary files differ
diff --git a/images/icons/48/user.png b/images/icons/48/user.png
new file mode 100644
index 000000000..f73c591e6
--- /dev/null
+++ b/images/icons/48/user.png
Binary files differ
diff --git a/images/icons/add.png b/images/icons/add.png
new file mode 100644
index 000000000..78497fbc9
--- /dev/null
+++ b/images/icons/add.png
Binary files differ
diff --git a/images/icons/delete.png b/images/icons/delete.png
new file mode 100644
index 000000000..f0cae5154
--- /dev/null
+++ b/images/icons/delete.png
Binary files differ
diff --git a/images/icons/edit.png b/images/icons/edit.png
new file mode 100644
index 000000000..aeaf835fe
--- /dev/null
+++ b/images/icons/edit.png
Binary files differ
diff --git a/images/icons/feed.png b/images/icons/feed.png
new file mode 100644
index 000000000..6894257e9
--- /dev/null
+++ b/images/icons/feed.png
Binary files differ
diff --git a/images/icons/gear.png b/images/icons/gear.png
new file mode 100644
index 000000000..02847ef9d
--- /dev/null
+++ b/images/icons/gear.png
Binary files differ
diff --git a/images/icons/gear_22.png b/images/icons/gear_22.png
deleted file mode 100644
index e363de00d..000000000
--- a/images/icons/gear_22.png
+++ /dev/null
Binary files differ
diff --git a/images/icons/group.png b/images/icons/group.png
new file mode 100644
index 000000000..de0dc7901
--- /dev/null
+++ b/images/icons/group.png
Binary files differ
diff --git a/images/icons/info.png b/images/icons/info.png
new file mode 100644
index 000000000..ea2b0ffa4
--- /dev/null
+++ b/images/icons/info.png
Binary files differ
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
new file mode 100644
index 000000000..b6017c8de
--- /dev/null
+++ b/images/icons/notice.png
Binary files differ
diff --git a/images/icons/notify_off.png b/images/icons/notify_off.png
new file mode 100644
index 000000000..e6eac16b8
--- /dev/null
+++ b/images/icons/notify_off.png
Binary files differ
diff --git a/images/icons/notify_off_22.png b/images/icons/notify_off_22.png
deleted file mode 100644
index 0520af327..000000000
--- a/images/icons/notify_off_22.png
+++ /dev/null
Binary files differ
diff --git a/images/icons/notify_on.png b/images/icons/notify_on.png
new file mode 100644
index 000000000..b9e07d24e
--- /dev/null
+++ b/images/icons/notify_on.png
Binary files differ
diff --git a/images/icons/notify_on_22.png b/images/icons/notify_on_22.png
deleted file mode 100644
index a8b305245..000000000
--- a/images/icons/notify_on_22.png
+++ /dev/null
Binary files differ
diff --git a/images/icons/star.png b/images/icons/star.png
new file mode 100644
index 000000000..4a2236c9b
--- /dev/null
+++ b/images/icons/star.png
Binary files differ
diff --git a/images/icons/user.png b/images/icons/user.png
new file mode 100644
index 000000000..f1132b1ae
--- /dev/null
+++ b/images/icons/user.png
Binary files differ
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("<", "&lt;", $Text);
$Text = str_replace(">", "&gt;", $Text);
+ // If we find any event code, turn it into an event.
+ // After we're finished processing the bbcode we'll
+ // replace all of the event code with a reformatted version.
+
+ $ev = bbtoevent($Text);
if($preserve_nl)
$Text = str_replace(array("\n","\r"), array('',''),$Text);
@@ -54,8 +62,9 @@ function bb2diaspora($Text,$preserve_nl = false) {
// [img]pathtoimage[/img]
- $Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/", '[$1]($1)', $Text);
- $Text = preg_replace("(\[url\=([$URLSearchString]*)\](.*?)\[/url\])", '[$2]($1)', $Text);
+ $Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/ism", '[$1]($1)', $Text);
+ $Text = preg_replace("/\#\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '[#$2]($1)', $Text);
+ $Text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '[$2]($1)', $Text);
// $Text = preg_replace("/\[img\](.*?)\[\/img\]/", t('Image/photo: ') . '$1', $Text);
// $Text = preg_replace("/\[img\](.*?)\[\/img\]/", t('image/photo'), $Text);
@@ -156,19 +165,20 @@ function bb2diaspora($Text,$preserve_nl = false) {
// oembed tag
-// $Text = oembed_bbcode2html($Text);
+ // $Text = oembed_bbcode2html($Text);
// If we found an event earlier, strip out all the event code and replace with a reformatted version.
-// if(x($ev,'desc') && x($ev,'start')) {
-// $sub = format_event_html($ev);
+ if(x($ev,'desc') && x($ev,'start')) {
- // $Text = preg_replace("/\[event\-description\](.*?)\[\/event\-description\]/is",$sub,$Text);
- //$Text = preg_replace("/\[event\-start\](.*?)\[\/event\-start\]/is",'',$Text);
-// $Text = preg_replace("/\[event\-finish\](.*?)\[\/event\-finish\]/is",'',$Text);
-// $Text = preg_replace("/\[event\-location\](.*?)\[\/event\-location\]/is",'',$Text);
-// $Text = preg_replace("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",'',$Text);
-// }
+ $sub = format_event_diaspora($ev);
+
+ $Text = preg_replace("/\[event\-description\](.*?)\[\/event\-description\]/is",$sub,$Text);
+ $Text = preg_replace("/\[event\-start\](.*?)\[\/event\-start\]/is",'',$Text);
+ $Text = preg_replace("/\[event\-finish\](.*?)\[\/event\-finish\]/is",'',$Text);
+ $Text = preg_replace("/\[event\-location\](.*?)\[\/event\-location\]/is",'',$Text);
+ $Text = preg_replace("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",'',$Text);
+ }
@@ -176,3 +186,37 @@ function bb2diaspora($Text,$preserve_nl = false) {
return $Text;
}
+
+function format_event_diaspora($ev) {
+
+ if(! ((is_array($ev)) && count($ev)))
+ return '';
+
+ $bd_format = t('l F d, Y \@ g:i A') ; // Friday January 18, 2011 @ 8 AM
+
+ $o = 'Friendika event notification:' . "\n";
+
+ $o .= '**' . bb2diaspora($ev['desc']) . '**' . "\n";
+
+ $o .= t('Starts:') . ' '
+ . (($ev['adjust']) ? day_translate(datetime_convert('UTC', 'UTC',
+ $ev['start'] , $bd_format ))
+ : day_translate(datetime_convert('UTC', 'UTC',
+ $ev['start'] , $bd_format)))
+ . "\n";
+
+ if(! $ev['nofinish'])
+ $o .= t('Finishes:') . ' '
+ . (($ev['adjust']) ? day_translate(datetime_convert('UTC', 'UTC',
+ $ev['finish'] , $bd_format ))
+ : day_translate(datetime_convert('UTC', 'UTC',
+ $ev['finish'] , $bd_format )))
+ . "\n";
+
+ if(strlen($ev['location']))
+ $o .= t('Location:') . bb2diaspora($ev['location'])
+ . "\n";
+
+ $o .= "\n";
+ return $o;
+}
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;
}}
diff --git a/index.php b/index.php
index 51c87cae6..3db8170ef 100644
--- a/index.php
+++ b/index.php
@@ -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:'&times;',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
new file mode 100644
index 000000000..07a5fb097
--- /dev/null
+++ b/library/stanlemon-jgrowl-tip.tar.gz
Binary files differ
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') . '" />&nbsp;'
. 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 "&nbsp;(Optional) Allow this OpenID to login to this account."
-msgstr "&nbsp;(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\">&hearts;</span> Marital Status:"
msgstr "<span class=\"heart\">&hearts;</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\">&hearts;</span> Status:"
msgstr "<span class=\"heart\">&hearts;</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["&nbsp;(Optional) Allow this OpenID to login to this account."] = "&nbsp;(Volitelné) Povolit toto OpenID pro pÅ™ihlášení k tomuto úÄtu.";
-$a->strings["Publish your default profile in site directory?"] = "Zveřejnit Váš výchozí profil v místním adresáři?";
-$a->strings["Publish your default profile in global social directory?"] = "Zveřejnit Váš výchozí profil v globálním sociální adresáři?";
+$a->strings["OpenID:"] = "OpenID:";
+$a->strings["(Optional) Allow this OpenID to login to this account."] = "(Volitelné) Povolit OpenID pro pÅ™ihlášení k tomuto úÄtu.";
+$a->strings["Publish your default profile in your local site directory?"] = "Publikovat Váš výchozí profil v místním adresáři webu?";
+$a->strings["Publish your default profile in the global social directory?"] = "Publikovat Váš výchozí profil v globální sociálním adresáři?";
+$a->strings["Hide your contact/friend list from viewers of your default profile?"] = "Skrýt Vaše kontaktní údaje a seznam přátel před návštěvníky ve Vašem výchozím profilu?";
+$a->strings["Hide profile details and all your messages from unknown viewers?"] = "Skrýt detaily profilu a všechny zprávy před neznámými uživateli?";
$a->strings["Profile is <strong>not published</strong>."] = "Profil <strong>není zveřejněn</strong>.";
$a->strings["or"] = "nebo";
$a->strings["Your Identity Address is"] = "Vaše adresa identity je";
+$a->strings["Account Settings"] = "Nastavení úÄtu";
$a->strings["Export Personal Data"] = "Export osobních údajů";
+$a->strings["Password Settings"] = "Nastavení hesla";
+$a->strings["New Password:"] = "Nové heslo:";
+$a->strings["Confirm:"] = "PotvrÄte:";
+$a->strings["Leave password fields blank unless changing"] = "Pokud nechcete změnit heslo, položku hesla nevyplňujte";
$a->strings["Basic Settings"] = "Základní nastavení";
$a->strings["Full Name:"] = "Celé jméno:";
$a->strings["Email Address:"] = "E-mailová adresa:";
$a->strings["Your Timezone:"] = "VaÅ¡e Äasové pásmo:";
$a->strings["Default Post Location:"] = "Výchozí umístění příspěvků:";
-$a->strings["Use Browser Location:"] = "Použijte prohlížeÄ Místo:";
-$a->strings["Display Theme:"] = "Zobrazit téma:";
+$a->strings["Use Browser Location:"] = "Používat umístÄ›ní dle prohlížeÄe:";
+$a->strings["Display Theme:"] = "Vybrat grafickou Å¡ablonu:";
$a->strings["Security and Privacy Settings"] = "Nastavení zabezpeÄení a soukromí";
$a->strings["Maximum Friend Requests/Day:"] = "Maximální poÄet žádostí o přátelství za den:";
$a->strings["(to prevent spam abuse)"] = "(Aby se zabránilo spamu)";
+$a->strings["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">&hearts;</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
deleted file mode 100644
index 169fac34d..000000000
--- a/view/theme/quattro/LiberationSans-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/view/theme/quattro/LiberationSans-Italic.ttf b/view/theme/quattro/LiberationSans-Italic.ttf
deleted file mode 100644
index 8b9dc760a..000000000
--- a/view/theme/quattro/LiberationSans-Italic.ttf
+++ /dev/null
Binary files differ
diff --git a/view/theme/quattro/LiberationSans-Regular.ttf b/view/theme/quattro/LiberationSans-Regular.ttf
deleted file mode 100644
index ceeaa2740..000000000
--- a/view/theme/quattro/LiberationSans-Regular.ttf
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 0c86f7347..000000000
--- a/view/theme/quattro/liberation-fonts-ttf-1.07.0.tar.gz
+++ /dev/null
Binary files differ
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
+
+