From 506853adcdc0229c5b1b9c96e319f99c589c967f Mon Sep 17 00:00:00 2001 From: Friendika Date: Fri, 26 Aug 2011 07:29:22 -0700 Subject: break up delivery into per-person processes --- include/delivery.php | 420 +++++++++++++++++++++++++++++++++++++++++++++++++++ include/diaspora.php | 54 ++++--- include/notifier.php | 140 ++++++----------- 3 files changed, 501 insertions(+), 113 deletions(-) create mode 100644 include/delivery.php diff --git a/include/delivery.php b/include/delivery.php new file mode 100644 index 000000000..be4f3978c --- /dev/null +++ b/include/delivery.php @@ -0,0 +1,420 @@ +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]); + + 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 * FROM `item` 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']) + $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]; + + $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 = '' . xmlify($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 .= '' . "\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 . ''; + 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) { + 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..bb4bd98c7 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -1035,14 +1035,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; @@ -1056,12 +1048,37 @@ function diaspora_send_relay($item,$owner,$contact) { $text = bb2diaspora($item['body']); - // sign it + // fetch the original signature if somebody sent the post to us to relay + // if we are relaying for a reply originating here, 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 - 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']; + } + 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) + ); + + } + + // sign it $parentauthorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha')); @@ -1071,18 +1088,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($myaddr) )); - // 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/notifier.php b/include/notifier.php index e92a4f6a8..1a3b321cf 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -1,4 +1,5 @@ $birthday )); - if($cmd === 'mail') { + if($mail) { $public_message = false; // mail is not public $body = fix_private_photos($item['body'],$owner['uid']); @@ -286,7 +290,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'); @@ -383,8 +387,23 @@ function notifier_run($argv, $argc){ 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)) { + $interval = intval(get_config('system','delivery_interval')); + if(! $interval) + $interval = 2; + + proc_run('php','include/delivery.php',$cmd,$item_id,$contact['id']); + sleep($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']); @@ -589,52 +608,19 @@ 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)); foreach($r as $rr) { @@ -646,63 +632,35 @@ 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']); + if((! $mail) && (! $fsuggest) && (! $followup)) { + $interval = intval(get_config('system','delivery_interval')); + if(! $interval) + $interval = 2; - 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'); + proc_run('php','include/delivery.php',$cmd,$item_id,$rr['id']); + sleep($interval); + continue; + } + } + } - 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; -- cgit v1.2.3 From fcf45db075e13d7889715b715406abbccf012fc8 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Fri, 26 Aug 2011 16:35:51 +0200 Subject: API: fix friends profile, statuses etc --- include/api.php | 115 ++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 75 insertions(+), 40 deletions(-) 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 @@ $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 ''."\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); -- cgit v1.2.3 From 8438da7d70561c2c07356a0f1b1be6e6880b8de1 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Fri, 26 Aug 2011 16:36:02 +0200 Subject: Small fix to IT strings --- view/it/messages.po | 6 +++--- view/it/strings.php | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/view/it/messages.po b/view/it/messages.po index 6b28ba782..290e22f7b 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-08-26 14:28+0000\n" "Last-Translator: fabrixxm \n" "Language-Team: Italian (http://www.transifex.net/projects/p/friendika/team/it/)\n" "MIME-Version: 1.0\n" @@ -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..1d6ba3dc0 100644 --- a/view/it/strings.php +++ b/view/it/strings.php @@ -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 'nickname@\$sitename'."] = "Scegli un soprannome. Deve cominciare con un carattere. L'indirizzo del tuo profilo sarà 'soprannome@\$sitename'."; $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"; -- cgit v1.2.3 From 144f241c5daa56428113dd53138002f40fd7cb44 Mon Sep 17 00:00:00 2001 From: Friendika Date: Fri, 26 Aug 2011 15:21:21 -0700 Subject: fix bad embeds --- boot.php | 2 +- include/conversation.php | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/boot.php b/boot.php index e897f19aa..41951b06b 100644 --- a/boot.php +++ b/boot.php @@ -7,7 +7,7 @@ require_once('include/text.php'); require_once("include/pgettext.php"); -define ( 'FRIENDIKA_VERSION', '2.2.1083' ); +define ( 'FRIENDIKA_VERSION', '2.2.1084' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); define ( 'DB_UPDATE_VERSION', 1082 ); diff --git a/include/conversation.php b/include/conversation.php index 0d901a3c0..3353cb2b7 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -80,6 +80,9 @@ function localize_item(&$item){ } + // fix bad embeds + $item['body'] = str_replace('http://www.youtube.com/embed/http:','http:',$item['body']); + } /** -- cgit v1.2.3 From 721db93e8450eb051f98a9a0b12db476d3cc3dfc Mon Sep 17 00:00:00 2001 From: Friendika Date: Fri, 26 Aug 2011 17:52:24 -0700 Subject: check for existing diaspora comment before accepting, add 'Diaspora' app to item, use html_entity_decode so quotes don't get messed up --- include/diaspora.php | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index bb4bd98c7..e3ab9458d 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -453,6 +453,7 @@ function diaspora_post($importer,$xml) { $datarray['author-link'] = $contact['url']; $datarray['author-avatar'] = $contact['thumb']; $datarray['body'] = $body; + $datarray['app'] = 'Diaspora'; item_store($datarray); @@ -483,6 +484,15 @@ function diaspora_comment($importer,$xml,$msg) { // NOTREACHED } + $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", + intval($importer['uid']), + dbesc($guid) + ); + if(count($r)) { + logger('daspora_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) @@ -558,6 +568,7 @@ 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); @@ -776,6 +787,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; @@ -897,7 +910,8 @@ 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'); @@ -990,7 +1004,7 @@ function diaspora_send_followup($item,$owner,$contact) { $like = false; } - $text = bb2diaspora($item['body']); + $text = html_entity_decode(bb2diaspora($item['body'])); // sign it @@ -1046,7 +1060,7 @@ function diaspora_send_relay($item,$owner,$contact) { $like = false; } - $text = bb2diaspora($item['body']); + $text = html_entity_decode(bb2diaspora($item['body'])); // fetch the original signature if somebody sent the post to us to relay // if we are relaying for a reply originating here, there wasn't a 'send to relay' -- cgit v1.2.3 From f48a758a1e8bce122957fb2fc4c65966290cfead Mon Sep 17 00:00:00 2001 From: Friendika Date: Fri, 26 Aug 2011 21:37:00 -0700 Subject: typo in update script --- update.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/update.php b/update.php index ef036008f..d92b1dd91 100644 --- a/update.php +++ b/update.php @@ -676,7 +676,7 @@ function update_1080() { } function update_1081() { - q("ALTER TABLE `photo` ADD `guid` CHAR( 64 ) NOT NULL AFTER `contact`id`, + q("ALTER TABLE `photo` ADD `guid` CHAR( 64 ) NOT NULL AFTER `contact-id`, ADD INDEX ( `guid` ) "); $r = q("SELECT distinct(`resource-id`) FROM `photo` WHERE 1 group by `id`"); if(count($r)) { -- cgit v1.2.3 From e3dbb6339386fce5cef2d22be6edd63b93a9b41d Mon Sep 17 00:00:00 2001 From: Friendika Date: Fri, 26 Aug 2011 21:51:12 -0700 Subject: fix any update issues that may arise from update 1081 --- boot.php | 2 +- update.php | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/boot.php b/boot.php index 41951b06b..cb18b0560 100644 --- a/boot.php +++ b/boot.php @@ -9,7 +9,7 @@ require_once("include/pgettext.php"); define ( 'FRIENDIKA_VERSION', '2.2.1084' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); -define ( 'DB_UPDATE_VERSION', 1082 ); +define ( 'DB_UPDATE_VERSION', 1083 ); define ( 'EOL', "
\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/update.php b/update.php index d92b1dd91..c23ce95c6 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ Date: Sat, 27 Aug 2011 18:09:43 -0700 Subject: remove public disclosure risk --- boot.php | 2 +- include/crypto.php | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ mod/network.php | 2 +- 3 files changed, 67 insertions(+), 2 deletions(-) diff --git a/boot.php b/boot.php index cb18b0560..58d6cc839 100644 --- a/boot.php +++ b/boot.php @@ -7,7 +7,7 @@ require_once('include/text.php'); require_once("include/pgettext.php"); -define ( 'FRIENDIKA_VERSION', '2.2.1084' ); +define ( 'FRIENDIKA_VERSION', '2.2.1085' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); define ( 'DB_UPDATE_VERSION', 1083 ); diff --git a/include/crypto.php b/include/crypto.php index a20606db5..88e05b9eb 100644 --- a/include/crypto.php +++ b/include/crypto.php @@ -225,3 +225,68 @@ 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); +} + + +function zot_encapsulate($data,$sender,$pubkey) { +$res = aes_encapsulate($data,$pubkey); +openssl_public_encrypt($sender,$s,$pubkey); +$s1 = base64url_encode($s,true); + +return <<< EOT + + + {$res['key']} + {$res['iv']} + $s1 + AES-256-CBC + {$res['data']} + +EOT; + +} + +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/mod/network.php b/mod/network.php index 05b74b50a..54fb2a0a4 100644 --- a/mod/network.php +++ b/mod/network.php @@ -188,7 +188,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 = '

' . t('Contact: ') . $r[0]['name'] . '

' . $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); } -- cgit v1.2.3 From 41b00a6f3b6e46b4886e91069109b538f7596b12 Mon Sep 17 00:00:00 2001 From: Friendika Date: Sun, 28 Aug 2011 05:00:30 -0700 Subject: allow comment relaying for comments which were never Diaspora signed --- include/diaspora.php | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/include/diaspora.php b/include/diaspora.php index e3ab9458d..9a43c7b07 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) { @@ -1060,10 +1061,22 @@ function diaspora_send_relay($item,$owner,$contact) { $like = false; } + $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. + } + } + $text = html_entity_decode(bb2diaspora($item['body'])); // fetch the original signature if somebody sent the post to us to relay - // if we are relaying for a reply originating here, there wasn't a 'send to relay' + // If we are relaying for a reply originating here, 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 @@ -1076,6 +1089,10 @@ function diaspora_send_relay($item,$owner,$contact) { $authorsig = $orig_sign['signature']; } else { + + + + if($like) $signed_text = $item['guid'] . ';' . $target_type . ';' . $parent_guid . ';' . $positive . ';' . $myaddr; else -- cgit v1.2.3 From 4572f32603905de369b82e02a6776d25877bec33 Mon Sep 17 00:00:00 2001 From: Friendika Date: Sun, 28 Aug 2011 05:04:49 -0700 Subject: cleanup --- include/diaspora.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 9a43c7b07..10b342289 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -1061,6 +1061,8 @@ function diaspora_send_relay($item,$owner,$contact) { $like = false; } + $body = $item['body']; + $itemcontact = q("select * from contact where `id` = %d limit 1", intval($item['contact-id']) ); @@ -1069,11 +1071,11 @@ function diaspora_send_relay($item,$owner,$contact) { $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. + $body = $prefix . $body; } } - $text = html_entity_decode(bb2diaspora($item['body'])); + $text = html_entity_decode(bb2diaspora($body)); // fetch the original signature if somebody sent the post to us to relay // If we are relaying for a reply originating here, there wasn't a 'send to relay' -- cgit v1.2.3 From f29f228463d35f574d6d285be0cf337b7d39c541 Mon Sep 17 00:00:00 2001 From: Friendika Date: Sun, 28 Aug 2011 19:22:27 -0700 Subject: bring Diaspora message signing back to the source author - whether they like it or not. --- boot.php | 2 +- include/delivery.php | 5 ++++- include/diaspora.php | 49 ++++++++++++++++++++++++------------------------- include/items.php | 48 +++++++++++++++++++++++++++++++++++++++++++++--- include/notifier.php | 3 ++- mod/item.php | 29 +++++++++++++++++++++++++++++ 6 files changed, 105 insertions(+), 31 deletions(-) diff --git a/boot.php b/boot.php index 58d6cc839..060bd7117 100644 --- a/boot.php +++ b/boot.php @@ -7,7 +7,7 @@ require_once('include/text.php'); require_once("include/pgettext.php"); -define ( 'FRIENDIKA_VERSION', '2.2.1085' ); +define ( 'FRIENDIKA_VERSION', '2.2.1086' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); define ( 'DB_UPDATE_VERSION', 1083 ); diff --git a/include/delivery.php b/include/delivery.php index be4f3978c..0df8ea7e4 100644 --- a/include/delivery.php +++ b/include/delivery.php @@ -77,7 +77,10 @@ function delivery_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) ); diff --git a/include/diaspora.php b/include/diaspora.php index 10b342289..6cba0ecec 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -1063,18 +1063,6 @@ function diaspora_send_relay($item,$owner,$contact) { $body = $item['body']; - $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; - } - } - $text = html_entity_decode(bb2diaspora($body)); // fetch the original signature if somebody sent the post to us to relay @@ -1092,23 +1080,34 @@ function diaspora_send_relay($item,$owner,$contact) { } 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')); - 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) - ); + 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) + ); + } } // sign it diff --git a/include/items.php b/include/items.php index 150be2707..e9594cff2 100644 --- a/include/items.php +++ b/include/items.php @@ -112,8 +112,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 +365,18 @@ 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']); + + /** * If there's a copy of the body content which is guaranteed to have survived mangling in transit, use it. */ @@ -659,6 +673,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']) @@ -835,6 +858,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 */ @@ -1670,10 +1703,19 @@ function atom_entry($item,$type,$author,$owner,$comment = false) { $o .= '1' . "\r\n"; if($item['extid']) - $o .= '' . $item['extid'] . '' . "\r\n"; + $o .= '' . xmlify($item['extid']) . '' . "\r\n"; if($item['app']) - $o .= ''; + $o .= '' . "\r\n"; + + if($item['guid']) + $o .= '' . $item['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 .= '' . xmlify($sign) . '' . "\r\n"; + } + $verb = construct_verb($item); $o .= '' . xmlify($verb) . '' . "\r\n"; $actobj = construct_activity_object($item); diff --git a/include/notifier.php b/include/notifier.php index 1a3b321cf..b87aa95b1 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -109,7 +109,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) ); diff --git a/mod/item.php b/mod/item.php index ef0b232d5..dd42014eb 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())) @@ -674,6 +676,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 +822,12 @@ function item_post(&$a) { } } + + + + + + logger('post_complete'); // figure out how to return, depending on from whence we came -- cgit v1.2.3 From 846c4cea7c0e3868a63a187ee9a504a031b2a7e4 Mon Sep 17 00:00:00 2001 From: Friendika Date: Sun, 28 Aug 2011 21:41:42 -0700 Subject: implement delivery queue in case notifier gets killed --- boot.php | 2 +- database.sql | 6 ++++++ include/delivery.php | 6 ++++++ include/diaspora.php | 5 ++--- include/items.php | 4 ++-- include/notifier.php | 45 ++++++++++++++++++++++++++++++++------------- include/queue.php | 14 ++++++++++++++ update.php | 12 +++++++++++- 8 files changed, 74 insertions(+), 20 deletions(-) diff --git a/boot.php b/boot.php index 060bd7117..595dc1fef 100644 --- a/boot.php +++ b/boot.php @@ -9,7 +9,7 @@ require_once("include/pgettext.php"); define ( 'FRIENDIKA_VERSION', '2.2.1086' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); -define ( 'DB_UPDATE_VERSION', 1083 ); +define ( 'DB_UPDATE_VERSION', 1084 ); define ( 'EOL', "
\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/database.sql b/database.sql index f6ae4c7c6..9819914f7 100644 --- a/database.sql +++ b/database.sql @@ -606,3 +606,9 @@ 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; diff --git a/include/delivery.php b/include/delivery.php index 0df8ea7e4..1f5883c26 100644 --- a/include/delivery.php +++ b/include/delivery.php @@ -37,6 +37,12 @@ function delivery_run($argv, $argc){ $item_id = intval($argv[2]); $contact_id = intval($argv[3]); + 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; diff --git a/include/diaspora.php b/include/diaspora.php index 6cba0ecec..99bc21c0b 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -140,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))); @@ -223,7 +222,7 @@ function diaspora_decode($importer,$xml) { * */ - logger('decrypted: ' . $decrypted); + logger('decrypted: ' . $decrypted, LOGGER_DEBUG); $idom = parse_xml_string($decrypted,false); $inner_iv = base64_decode($idom->iv); diff --git a/include/items.php b/include/items.php index e9594cff2..1603dec60 100644 --- a/include/items.php +++ b/include/items.php @@ -927,7 +927,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; @@ -991,7 +991,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) { diff --git a/include/notifier.php b/include/notifier.php index b87aa95b1..cde156cbd 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -379,11 +379,27 @@ function notifier_run($argv, $argc){ dbesc($recip_str) ); - // delivery loop require_once('include/salmon.php'); + $interval = intval(get_config('system','delivery_interval')); + if(! $interval) + $interval = 2; + + // 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; @@ -392,13 +408,8 @@ function notifier_run($argv, $argc){ // we will deliver single recipient types of message and email receipients here. if((! $mail) && (! $fsuggest) && (! $followup)) { - $interval = intval(get_config('system','delivery_interval')); - if(! $interval) - $interval = 2; - proc_run('php','include/delivery.php',$cmd,$item_id,$contact['id']); - sleep($interval); - continue; + @time_sleep_until(microtime(true) + (float) $interval); } $deliver_status = 0; @@ -624,6 +635,18 @@ function notifier_run($argv, $argc){ 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 */ @@ -634,13 +657,9 @@ function notifier_run($argv, $argc){ } if((! $mail) && (! $fsuggest) && (! $followup)) { - $interval = intval(get_config('system','delivery_interval')); - if(! $interval) - $interval = 2; - + logger('notifier: delivery agent: ' . $rr['name'] . ' ' . $rr['id']); proc_run('php','include/delivery.php',$cmd,$item_id,$rr['id']); - sleep($interval); - continue; + @time_sleep_until(microtime(true) + (float) $interval); } } } diff --git a/include/queue.php b/include/queue.php index f1bcf2e9f..0cb6fcec2 100644 --- a/include/queue.php +++ b/include/queue.php @@ -38,6 +38,20 @@ function queue_run($argv, $argc){ logger('queue: start'); + $interval = intval(get_config('system','delivery_interval')); + if(! $interval) + $interval = 2; + + + $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']); + @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/update.php b/update.php index c23ce95c6..14bc48ab7 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ Date: Sun, 28 Aug 2011 22:59:49 -0700 Subject: remove item from queue --- include/delivery.php | 13 +++++++++++++ include/queue.php | 21 ++++++++++----------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/include/delivery.php b/include/delivery.php index 1f5883c26..e32a9346c 100644 --- a/include/delivery.php +++ b/include/delivery.php @@ -37,6 +37,19 @@ function delivery_run($argv, $argc){ $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), diff --git a/include/queue.php b/include/queue.php index 0cb6fcec2..1ac1e7d48 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"); @@ -42,7 +42,6 @@ function queue_run($argv, $argc){ if(! $interval) $interval = 2; - $r = q("select * from deliverq where 1"); if(count($r)) { foreach($r as $rr) { -- cgit v1.2.3 From 51615f57acbdf5ff282037ba3c8e6a454127ea2c Mon Sep 17 00:00:00 2001 From: Friendika Date: Sun, 28 Aug 2011 23:00:45 -0700 Subject: flag top level post --- include/delivery.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/delivery.php b/include/delivery.php index 1f5883c26..4b85a9ad1 100644 --- a/include/delivery.php +++ b/include/delivery.php @@ -108,8 +108,10 @@ function delivery_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('delivery: top level post'); $top_level = true; + } } $r = q("SELECT `contact`.*, `user`.`pubkey` AS `upubkey`, `user`.`prvkey` AS `uprvkey`, -- cgit v1.2.3 From bfc708e07bde21b772f160aa9873d660f7995c2e Mon Sep 17 00:00:00 2001 From: Friendika Date: Sun, 28 Aug 2011 23:05:06 -0700 Subject: logging on notifier --- include/notifier.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/notifier.php b/include/notifier.php index cde156cbd..aa186317f 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -125,8 +125,10 @@ 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`, -- cgit v1.2.3 From 391330d95f4b59aaca60ee7e954eaa9e7d2a20c0 Mon Sep 17 00:00:00 2001 From: Friendika Date: Mon, 29 Aug 2011 00:51:08 -0700 Subject: better handling of relayed Diaspora comments --- include/diaspora.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 99bc21c0b..5e751f4ba 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -1065,9 +1065,11 @@ function diaspora_send_relay($item,$owner,$contact) { $text = html_entity_decode(bb2diaspora($body)); // fetch the original signature if somebody sent the post to us to relay - // If we are relaying for a reply originating here, there wasn't a 'send 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 $r = q("select * from sign where iid = %d limit 1", intval($item['id']) @@ -1076,6 +1078,7 @@ function diaspora_send_relay($item,$owner,$contact) { $orig_sign = $r[0]; $signed_text = $orig_sign['signed_text']; $authorsig = $orig_sign['signature']; + $handle = $orig_sign['signer']; } else { @@ -1105,7 +1108,7 @@ function diaspora_send_relay($item,$owner,$contact) { dbesc(base64_encode($authorsig)), dbesc($myaddr) ); - + $handle = $myaddr; } } @@ -1121,7 +1124,7 @@ function diaspora_send_relay($item,$owner,$contact) { '$parentsig' => xmlify($parentauthorsig), '$body' => xmlify($text), '$positive' => xmlify($positive), - '$handle' => xmlify($myaddr) + '$handle' => xmlify($handle) )); logger('diaspora_relay_comment: base message: ' . $msg, LOGGER_DATA); -- cgit v1.2.3 From 177e0e15d73fedd3c58a9d5f9cb7f509bd1da07b Mon Sep 17 00:00:00 2001 From: Friendika Date: Mon, 29 Aug 2011 00:59:44 -0700 Subject: allow zero delivery interval on dedicated servers --- include/notifier.php | 10 +++++----- include/queue.php | 7 +++---- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/include/notifier.php b/include/notifier.php index aa186317f..1c71538d7 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -384,9 +384,7 @@ function notifier_run($argv, $argc){ require_once('include/salmon.php'); - $interval = intval(get_config('system','delivery_interval')); - if(! $interval) - $interval = 2; + $interval = ((get_config('system','delivery_interval') === false) ? 2 : intval(get_config('system','delivery_interval'))); // delivery loop @@ -411,7 +409,8 @@ function notifier_run($argv, $argc){ if((! $mail) && (! $fsuggest) && (! $followup)) { proc_run('php','include/delivery.php',$cmd,$item_id,$contact['id']); - @time_sleep_until(microtime(true) + (float) $interval); + if($interval) + @time_sleep_until(microtime(true) + (float) $interval); } $deliver_status = 0; @@ -661,7 +660,8 @@ function notifier_run($argv, $argc){ if((! $mail) && (! $fsuggest) && (! $followup)) { logger('notifier: delivery agent: ' . $rr['name'] . ' ' . $rr['id']); proc_run('php','include/delivery.php',$cmd,$item_id,$rr['id']); - @time_sleep_until(microtime(true) + (float) $interval); + if($interval) + @time_sleep_until(microtime(true) + (float) $interval); } } } diff --git a/include/queue.php b/include/queue.php index 1ac1e7d48..5119a65d8 100644 --- a/include/queue.php +++ b/include/queue.php @@ -38,16 +38,15 @@ function queue_run($argv, $argc){ logger('queue: start'); - $interval = intval(get_config('system','delivery_interval')); - if(! $interval) - $interval = 2; + $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']); - @time_sleep_until(microtime(true) + (float) $interval); + if($interval) + @time_sleep_until(microtime(true) + (float) $interval); } } -- cgit v1.2.3 From 7e79b140f038732b340fed70a1d88bdf2b950189 Mon Sep 17 00:00:00 2001 From: Friendika Date: Mon, 29 Aug 2011 17:52:31 -0700 Subject: don't deliver on first pass if already queued --- boot.php | 2 +- include/notifier.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 595dc1fef..46f1e318c 100644 --- a/boot.php +++ b/boot.php @@ -7,7 +7,7 @@ require_once('include/text.php'); require_once("include/pgettext.php"); -define ( 'FRIENDIKA_VERSION', '2.2.1086' ); +define ( 'FRIENDIKA_VERSION', '2.2.1087' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); define ( 'DB_UPDATE_VERSION', 1084 ); diff --git a/include/notifier.php b/include/notifier.php index 1c71538d7..8d2aa961c 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -411,6 +411,7 @@ function notifier_run($argv, $argc){ proc_run('php','include/delivery.php',$cmd,$item_id,$contact['id']); if($interval) @time_sleep_until(microtime(true) + (float) $interval); + continue; } $deliver_status = 0; -- cgit v1.2.3 From 454882812e8c4a56962aef1d69abc36ca8993286 Mon Sep 17 00:00:00 2001 From: Friendika Date: Mon, 29 Aug 2011 18:01:59 -0700 Subject: wrong time format string, 24hr clock --- include/diaspora.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 5e751f4ba..f14abc053 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -915,7 +915,7 @@ function diaspora_send_status($item,$owner,$contact) { $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( @@ -967,7 +967,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')) )); -- cgit v1.2.3 From 22d9d97d71a94fcfc057c350c4dfad5e36fb6dd0 Mon Sep 17 00:00:00 2001 From: Friendika Date: Mon, 29 Aug 2011 19:18:59 -0700 Subject: remove "online reputation" section on contact editing - nobody ever uses it, and there is no interface to query it. --- mod/contacts.php | 18 +----------------- view/contact_edit.tpl | 21 --------------------- 2 files changed, 1 insertion(+), 38 deletions(-) diff --git a/mod/contacts.php b/mod/contacts.php index 5d72cff88..307e9b15b 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 = '

' . t('Privacy Unavailable') . ' ' . t('Private communications are not available for this contact.') . '

'; @@ -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']) ? '
' . t('Currently blocked') . '
' : ''), '$ignored' => (($r[0]['readonly']) ? '
' . t('Currently ignored') . '
' : ''), - '$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/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 - $lblsuggest @@ -68,24 +66,5 @@ $profile_select - -
-

$lbl_rep1

-

-$lbl_rep2 $lbl_rep3 -

-
-$rating -
-
-

-$lbl_rep4 -

- -
-
-$groups - - -- cgit v1.2.3 From 0f1bc6e9571e367b37246e43ce08921bf317fa7c Mon Sep 17 00:00:00 2001 From: Friendika Date: Mon, 29 Aug 2011 22:50:41 -0700 Subject: log every possible diaspora return for posts and comments --- include/diaspora.php | 14 ++++++++++---- include/network.php | 28 ++++++++++++++-------------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index f14abc053..fc9289039 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -417,8 +417,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 @@ -475,8 +477,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.'); @@ -489,7 +493,7 @@ function diaspora_comment($importer,$xml,$msg) { dbesc($guid) ); if(count($r)) { - logger('daspora_comment: our comment just got relayed back to us (or there was a guid collision) : ' . $guid); + logger('diaspora_comment: our comment just got relayed back to us (or there was a guid collision) : ' . $guid); return; } @@ -658,8 +662,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.'); 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); }} -- cgit v1.2.3 From f8da48a880f8b01e2284610e74fe3b2b6ec2dc39 Mon Sep 17 00:00:00 2001 From: Friendika Date: Tue, 30 Aug 2011 18:46:34 -0700 Subject: unsafe chars in admin, add img to diaspora markdown processor --- boot.php | 2 +- include/bb2diaspora.php | 1 + mod/admin.php | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/boot.php b/boot.php index 46f1e318c..5c5dc1861 100644 --- a/boot.php +++ b/boot.php @@ -7,7 +7,7 @@ require_once('include/text.php'); require_once("include/pgettext.php"); -define ( 'FRIENDIKA_VERSION', '2.2.1087' ); +define ( 'FRIENDIKA_VERSION', '2.2.1088' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); define ( 'DB_UPDATE_VERSION', 1084 ); diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index 7f7b8748d..066d7bfff 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -17,6 +17,7 @@ function diaspora2bb($s) { $s = preg_replace("/\_(.+?)\_/", '[i]$1[/i]', $s); $s = str_replace(array('-^doublestar^-','-^doublescore-^','-^star^-','-^score^-'), array('**','__','*','_'), $s); $s = preg_replace('/\[(.+?)\]\((.+?)\)/','[url=$2]$1[/url]',$s); + $s = preg_replace('/\!\[(.+?)\]\((.+?)\)/','[img]$2[/img]',$s); $s = escape_tags($s); return $s; diff --git a/mod/admin.php b/mod/admin.php index 7799e64ab..72544ee70 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')){ -- cgit v1.2.3 From f0a4a6af619b2d9b2fca217c24667f8eea429b62 Mon Sep 17 00:00:00 2001 From: Friendika Date: Tue, 30 Aug 2011 19:20:56 -0700 Subject: relayed likes did not verify --- include/diaspora.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index fc9289039..0ab467829 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -732,8 +732,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); -- cgit v1.2.3 From b11a0efff120508a2059afe372f50144dcc8b977 Mon Sep 17 00:00:00 2001 From: Friendika Date: Tue, 30 Aug 2011 20:20:17 -0700 Subject: This *might* fix Diaspora @ tags - or it might not. --- include/bb2diaspora.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index 066d7bfff..ec41ce139 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -18,6 +18,8 @@ function diaspora2bb($s) { $s = str_replace(array('-^doublestar^-','-^doublescore-^','-^star^-','-^score^-'), array('**','__','*','_'), $s); $s = preg_replace('/\[(.+?)\]\((.+?)\)/','[url=$2]$1[/url]',$s); $s = preg_replace('/\!\[(.+?)\]\((.+?)\)/','[img]$2[/img]',$s); + $s = preg_replace('/\@\{(.+?)\; (.+?)\@(.+?)\}/','@[url=https://$3/u/$2]$1[/url]',$s); + $s = escape_tags($s); return $s; -- cgit v1.2.3 From f0c3a75ff38dcd208710fa24596c34290faf110e Mon Sep 17 00:00:00 2001 From: Friendika Date: Tue, 30 Aug 2011 23:09:39 -0700 Subject: youtube redirect fixes --- include/bbcode.php | 6 ++++-- include/conversation.php | 2 -- mod/item.php | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/bbcode.php b/include/bbcode.php index a3f2971e5..9ee8b7b36 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -133,12 +133,14 @@ function bbcode($Text,$preserve_nl = false) { } else { // Youtube extensions $Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/youtube\]/",'[youtube]$1[/youtube]',$Text); + $Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/embed\/(.*?)\[\/youtube\]/",'[youtube]$1[/youtube]',$Text); $Text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.*?)\[\/youtube\]/",'[youtube]$1[/youtube]',$Text); - $Text = preg_replace("/\[youtube\](.*?)\[\/youtube\]/", '', $Text); + $Text = preg_replace("/\[youtube\]([A-Za-z0-9\-_=]+)(.*?)\[\/youtube\]/", '', $Text); } -// $Text = preg_replace("/\[youtube\](.*?)\[\/youtube\]/", '', $Text); +// $Text = preg_replace("/\[youtube\](.*?)\[\/youtube\]/", '', $Text); + // oembed tag $Text = oembed_bbcode2html($Text); diff --git a/include/conversation.php b/include/conversation.php index 3353cb2b7..6b5bf8d7c 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -80,8 +80,6 @@ function localize_item(&$item){ } - // fix bad embeds - $item['body'] = str_replace('http://www.youtube.com/embed/http:','http:',$item['body']); } diff --git a/mod/item.php b/mod/item.php index dd42014eb..b6ea8ff08 100644 --- a/mod/item.php +++ b/mod/item.php @@ -353,7 +353,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']; -- cgit v1.2.3 From c60d45752db65a10b491f3a69ab63dc202f61533 Mon Sep 17 00:00:00 2001 From: Friendika Date: Tue, 30 Aug 2011 23:24:45 -0700 Subject: translate D* images (markdown) before links, they overlap and conflict --- include/bb2diaspora.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index ec41ce139..92f492116 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -16,8 +16,8 @@ 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('/\[(.+?)\]\((.+?)\)/','[url=$2]$1[/url]',$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); -- cgit v1.2.3 From 71d44d78ec5b16a53b82f4e631b86cd8247a9b0f Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Wed, 31 Aug 2011 16:17:32 +0200 Subject: Installed apps as array instead of string --- addon/calc/calc.php | 2 +- addon/convert/convert.php | 2 +- addon/sniper/sniper.php | 2 +- addon/tictac/tictac.php | 2 +- boot.php | 2 +- mod/apps.php | 19 +++++++++++-------- view/apps.tpl | 7 +++++++ 7 files changed, 23 insertions(+), 13 deletions(-) create mode 100644 view/apps.tpl 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'] .= ''; + $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'] .= ''; + $b['app_menu'][] = Array('url'=>'convert', 'name'=>'Units Conversion'); } 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'] .= ''; + $b['app_menu'][] = Array('url'=>'sniper', 'name'=>'Hot Shot Sniper'); } 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'] .= ''; + $b['app_menu'][] = Array('url'=>'tictac', 'name'=>'Three Dimensional Tic-Tac-Toe'); } diff --git a/boot.php b/boot.php index 4baa37309..42a0f7207 100644 --- a/boot.php +++ b/boot.php @@ -246,7 +246,7 @@ class App { public $timezone; public $interactive = true; public $plugins; - public $apps; + public $apps = Array(); public $identities; private $scheme; 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 @@ ' . t('Applications') . ''; - - 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/view/apps.tpl b/view/apps.tpl new file mode 100644 index 000000000..61ea9ee5f --- /dev/null +++ b/view/apps.tpl @@ -0,0 +1,7 @@ +

$title

+ +
    + {{ for $apps as $ap }} +
  • $ap.name
  • + {{ endfor }} +
-- cgit v1.2.3 From 5ce6f893a64984eae9685db305b8d29ae3ced509 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Wed, 31 Aug 2011 16:18:03 +0200 Subject: Apps popup menu in navbar --- include/nav.php | 3 ++- view/nav.tpl | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) 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/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 }} {{ endif }} -- cgit v1.2.3 From b38d6d97c3746203241c5ef50a8dd9f0bb0a0de0 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Wed, 31 Aug 2011 16:18:37 +0200 Subject: Avoid a small error in admin --- mod/admin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/admin.php b/mod/admin.php index 7799e64ab..bbf786acb 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -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); -- cgit v1.2.3 From 62295af1f2c3434fbf40aff6d29fd08859259ddf Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Wed, 31 Aug 2011 16:19:17 +0200 Subject: quattro: cleanup and split of less files --- view/theme/quattro/LIBERATION-FONTS-COPYING | 339 --------------------- view/theme/quattro/LiberationSans-Bold.ttf | Bin 136664 -> 0 bytes view/theme/quattro/LiberationSans-Italic.ttf | Bin 161532 -> 0 bytes view/theme/quattro/LiberationSans-Regular.ttf | Bin 139036 -> 0 bytes view/theme/quattro/colors.less | 50 +++ view/theme/quattro/experimental | 0 .../quattro/liberation-fonts-ttf-1.07.0.tar.gz | Bin 1326750 -> 0 bytes view/theme/quattro/quattro.less | 212 +++++++++++++ view/theme/quattro/style.css | 17 +- view/theme/quattro/style.less | 260 +--------------- 10 files changed, 273 insertions(+), 605 deletions(-) delete mode 100644 view/theme/quattro/LIBERATION-FONTS-COPYING delete mode 100644 view/theme/quattro/LiberationSans-Bold.ttf delete mode 100644 view/theme/quattro/LiberationSans-Italic.ttf delete mode 100644 view/theme/quattro/LiberationSans-Regular.ttf create mode 100644 view/theme/quattro/colors.less create mode 100644 view/theme/quattro/experimental delete mode 100644 view/theme/quattro/liberation-fonts-ttf-1.07.0.tar.gz create mode 100644 view/theme/quattro/quattro.less 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. - - - Copyright (C) - - 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. - - , 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 Binary files a/view/theme/quattro/LiberationSans-Bold.ttf and /dev/null differ diff --git a/view/theme/quattro/LiberationSans-Italic.ttf b/view/theme/quattro/LiberationSans-Italic.ttf deleted file mode 100644 index 8b9dc760a..000000000 Binary files a/view/theme/quattro/LiberationSans-Italic.ttf and /dev/null differ diff --git a/view/theme/quattro/LiberationSans-Regular.ttf b/view/theme/quattro/LiberationSans-Regular.ttf deleted file mode 100644 index ceeaa2740..000000000 Binary files a/view/theme/quattro/LiberationSans-Regular.ttf and /dev/null differ diff --git a/view/theme/quattro/colors.less b/view/theme/quattro/colors.less new file mode 100644 index 000000000..75a53a68a --- /dev/null +++ b/view/theme/quattro/colors.less @@ -0,0 +1,50 @@ +// 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; + diff --git a/view/theme/quattro/experimental b/view/theme/quattro/experimental new file mode 100644 index 000000000..e69de29bb 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 Binary files a/view/theme/quattro/liberation-fonts-ttf-1.07.0.tar.gz and /dev/null differ diff --git a/view/theme/quattro/quattro.less b/view/theme/quattro/quattro.less new file mode 100644 index 000000000..4c4a002f3 --- /dev/null +++ b/view/theme/quattro/quattro.less @@ -0,0 +1,212 @@ +// Quattro Theme LESS file + +/* global */ +body { + font-family: Liberation Sans,helvetica,arial,clean,sans-serif; + font-size: 12px; + background-color: @BodyBackground; + color: @BodyColor; + 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: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; } + +/* 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 { + 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/notify_on_22.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: @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/view/theme/quattro/style.css b/view/theme/quattro/style.css index ea0ed8eac..e2c06125b 100644 --- a/view/theme/quattro/style.css +++ b/view/theme/quattro/style.css @@ -10,11 +10,16 @@ body { margin: 0px; display: table-row; } -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 { @@ -57,13 +62,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 { @@ -190,6 +188,9 @@ nav #nav-site-linkmenu .menu-popup { nav #nav-notifications-linkmenu.selected .icon.s22.notify { background-image: url("../../../images/icons/notify_on_22.png"); } +nav #nav-apps-link.selected { + background-color: #364e59; +} ul.menu-popup { position: absolute; display: none; diff --git a/view/theme/quattro/style.less b/view/theme/quattro/style.less index 5f3958f9d..d1c677b22 100644 --- a/view/theme/quattro/style.less +++ b/view/theme/quattro/style.less @@ -5,265 +5,9 @@ // 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 "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; -} -- cgit v1.2.3 From 54f0685a038d87706ec4ecc15edc55ee171b6079 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Wed, 31 Aug 2011 17:30:48 +0200 Subject: quattro: more colors --- view/theme/quattro/colors.less | 10 ++++++++++ view/theme/quattro/quattro.less | 19 ++++++++++--------- view/theme/quattro/style.css | 9 +++++---- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/view/theme/quattro/colors.less b/view/theme/quattro/colors.less index 75a53a68a..d79dbca68 100644 --- a/view/theme/quattro/colors.less +++ b/view/theme/quattro/colors.less @@ -44,7 +44,17 @@ @NavbarSelectedBg:@Metalic3; @NavbarSelectedBorder: @Metalic2; @NavbarNotifBg: @Blue1; + @Menu: @Grey5; @MenuBg: @Grey1; @MenuBorder: @Metalic3; +@MenuItem: @Grey5; +@MenuItemHoverBg: @Metalic1; +@MenuItemSeparator: @Metalic2; +@MenuEmpty: @Metalic2; +@MenuItemDetail: @Metalic2; + +@AsideBorder: @Metalic1; + + diff --git a/view/theme/quattro/quattro.less b/view/theme/quattro/quattro.less index 4c4a002f3..f83cce3ce 100644 --- a/view/theme/quattro/quattro.less +++ b/view/theme/quattro/quattro.less @@ -6,8 +6,8 @@ body { font-size: 12px; background-color: @BodyBackground; color: @BodyColor; - margin: 0px; - display:table-row; + margin: 50px 0px 0px 0px; + display:table; } .shadow(@x: 0px, @y: 5px){ @@ -175,15 +175,15 @@ ul.menu-popup { .shadow(); - a { display: block; color: @Grey5; padding: 5px 10px;} - a:hover { background-color: @Metalic1; } - .menu-sep { border-top: 1px solid @Metalic2; } + a { display: block; color: @MenuItem; padding: 5px 10px;} + a:hover { background-color: @MenuItemHoverBg; } + .menu-sep { border-top: 1px solid @MenuItemSeparator; } li { float: none; overflow: auto; height: auto; display: block; } .empty { padding: 5px; text-align: center; - color: @Metalic2; + color: @MenuEmpty; } } @@ -191,7 +191,7 @@ ul.menu-popup { width: 400px; img { float: left; margin-right: 5px; } .contactname { font-weight: bold; } - .notif-when { font-size: 10px; color: @Metalic2; display: block; } + .notif-when { font-size: 10px; color: @MenuItemDetail; display: block; } } @@ -201,12 +201,13 @@ ul.menu-popup { aside { display: table-cell; width: 200px; - padding:50px 10px 0px 20px; + padding:0px 10px 0px 20px; + border-right: 1px solid @AsideBorder; } /* section */ section { display: table-cell; width: 800px; - padding:50px 20px 0px 10px; + padding:0px 20px 0px 10px; } diff --git a/view/theme/quattro/style.css b/view/theme/quattro/style.css index e2c06125b..e0d22a007 100644 --- a/view/theme/quattro/style.css +++ b/view/theme/quattro/style.css @@ -7,8 +7,8 @@ body { font-size: 12px; background-color: #ffffff; color: #2d2d2d; - margin: 0px; - display: table-row; + margin: 50px 0px 0px 0px; + display: table; } a, a:link { color: #005c94; @@ -247,11 +247,12 @@ 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; } /* section */ section { display: table-cell; width: 800px; - padding: 50px 20px 0px 10px; + padding: 0px 20px 0px 10px; } -- cgit v1.2.3 From 8b615133d528eb074a23746afef6201f474a4e3f Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Wed, 31 Aug 2011 17:31:44 +0200 Subject: remove html from profile vcard code --- boot.php | 122 ++++++++++++------------------------------------ include/text.php | 36 ++++++++------ view/contact_block.tpl | 9 ++++ view/diaspora_vcard.tpl | 44 +++++++++++++++++ view/profile_vcard.tpl | 40 ++++++++++------ 5 files changed, 131 insertions(+), 120 deletions(-) create mode 100644 view/contact_block.tpl create mode 100644 view/diaspora_vcard.tpl diff --git a/boot.php b/boot.php index 42a0f7207..edad6e70f 100644 --- a/boot.php +++ b/boot.php @@ -808,8 +808,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 +837,68 @@ 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 = '
' . $profile['name'] . '
'; - - $pdesc = '
' . $profile['pdesc'] . '
'; - - $tabs = ''; - - $photo = '
' . $profile['name'] . '
'; - + // don't show connect link to yourself - $connect = (($profile['uid'] != local_user()) ? '
  • ' . t('Connect') . '
  • ' : ''); + $connect = (($profile['uid'] != local_user()) ? t('Connect') : False); // don't show connect link to authenticated visitors either if((remote_user()) && ($_SESSION['visitor_visiting'] == $profile['uid'])) - $connect = ''; + $connect = False; + 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 .= '
    ' . t('Location:') . '
    '; - $location .= ((x($profile,'address') == 1) ? '
    ' . $profile['address'] . '
    ' : ''); - $location .= (((x($profile,'locality') == 1) || (x($profile,'region') == 1) || (x($profile,'postal-code') == 1)) - ? '' . $profile['locality'] . '' - . ((x($profile['locality']) == 1) ? t(', ') : '') - . '' . $profile['region'] . '' - . ' ' . $profile['postal-code'] . '' : ''); - $location .= ((x($profile,'country-name') == 1) ? ' ' . $profile['country-name'] . '' : ''); - $location .= '
    '; + $location = t('Location:'); - } - - - $gender = ((x($profile,'gender') == 1) ? '
    ' . t('Gender:') . ' ' . $profile['gender'] . '
    ' : ''); + $gender = ((x($profile,'gender') == 1) ? t('Gender:') : False); - $pubkey = ((x($profile,'pubkey') == 1) ? '' : ''); - $marital = ((x($profile,'marital') == 1) ? '
    ' . t('Status:') . ' ' . $profile['marital'] . '
    ' : ''); + $marital = ((x($profile,'marital') == 1) ? t('Status:') : False); - $homepage = ((x($profile,'homepage') == 1) ? '
    ' . t('Homepage:') . ' ' . linkify($profile['homepage']) . '
    ' : ''); + $homepage = ((x($profile,'homepage') == 1) ? t('Homepage:') : False); if(($profile['hidewall'] || $block) && (! local_user()) && (! remote_user())) { - $location = $pdesc = $connect = $gender = $marital = $homepage = ''; + $location = $pdesc = $connect = $gender = $marital = $homepage = False; } - $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 - -
    -
    -
    Nickname
    -
    -$nickname -
    -
    -
    -
    Full name
    -
    -$fullname -
    -
    -
    -
    URL
    -
    -$podloc/ -
    -
    -
    -
    Photo
    -
    - -
    -
    -
    -
    Photo
    -
    - -
    -
    -
    -
    Photo
    -
    - -
    -
    -
    -
    Searchable
    -
    -$searchable -
    -
    -
    -EOT; + $diaspora = array( + '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', + ); + + if (!$block){ + $contact_block = contact_block(); + } $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/include/text.php b/include/text.php index 66447069e..075caee00 100644 --- a/include/text.php +++ b/include/text.php @@ -539,22 +539,30 @@ function contact_block() { $total = intval($r[0]['total']); } if(! $total) { - $o .= '

    ' . t('No contacts') . '

    '; - 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 .= '

    ' . sprintf( tt('%d Contact','%d Contacts', $total),$total) . '

    '; - foreach($r as $rr) { - $o .= micropro($rr,true,'mpfriend'); - } - $o .= '
    '; - $o .= ''; + $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); diff --git a/view/contact_block.tpl b/view/contact_block.tpl new file mode 100644 index 000000000..00b97a6d8 --- /dev/null +++ b/view/contact_block.tpl @@ -0,0 +1,9 @@ +

    $contacts

    +{{ if $micropro }} +
    + {{ for $micropro as $m }} + $m + {{ endfor }} +
    + +{{ endif }} 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 @@ +
    +
    +
    Nickname
    +
    + $diaspora.nickname +
    +
    +
    +
    Full name
    +
    + $diaspora.fullname +
    +
    +
    +
    URL
    +
    + $diaspora.podloc/ +
    +
    +
    +
    Photo
    +
    + +
    +
    +
    +
    Photo
    +
    + +
    +
    +
    +
    Photo
    +
    + +
    +
    +
    +
    Searchable
    +
    + $diaspora.searchable +
    +
    +
    diff --git a/view/profile_vcard.tpl b/view/profile_vcard.tpl index 34f265ee6..01238ed5a 100644 --- a/view/profile_vcard.tpl +++ b/view/profile_vcard.tpl @@ -1,29 +1,43 @@
    - $fullname - $pdesc - $tabs - - $photo +
    $profile.name
    + {{ if $pdesc }}
    $profile.pdesc
    {{ endif }} +
    $profile.name
    - $location + {{ if $location }} +
    $location +
    + {{ if $profile.address }}
    $profile.address
    {{ endif }} + + $profile.locality{{ if $profile.locality }}, {{ endif }} + $profile.region + $profile.postal-code + + {{ if $profile.country-name }}$profile.country-name{{ endif }} +
    + + {{ endif }} - $gender + {{ if $gender }}
    $gender $profile.gender
    {{ endif }} + + {{ if $profile.pubkey }}{{ endif }} - $pubkey + {{ if $marital }}
    $marital$profile.marital
    {{ endif }} -$diaspora + {{ if $homepage }}{{ endif }} -
    + {{ inc diaspora_vcard.tpl }}{{ endinc }} -$marital +
    -$homepage +$contact_block -- cgit v1.2.3 From 8bb9226471260ad0e2265248d07d2400a5ff9a24 Mon Sep 17 00:00:00 2001 From: Friendika Date: Wed, 31 Aug 2011 19:43:59 -0700 Subject: add new cut of zot/zid protocol --- boot.php | 2 +- zot.txt | 236 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 237 insertions(+), 1 deletion(-) create mode 100644 zot.txt diff --git a/boot.php b/boot.php index 5c5dc1861..574ac86c0 100644 --- a/boot.php +++ b/boot.php @@ -7,7 +7,7 @@ require_once('include/text.php'); require_once("include/pgettext.php"); -define ( 'FRIENDIKA_VERSION', '2.2.1088' ); +define ( 'FRIENDIKA_VERSION', '2.2.1089' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); define ( 'DB_UPDATE_VERSION', 1084 ); diff --git a/zot.txt b/zot.txt new file mode 100644 index 000000000..66698d543 --- /dev/null +++ b/zot.txt @@ -0,0 +1,236 @@ + +This is the Zot! social communications protocol. + +Specification revision: 1 +01 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. + +**************** +* 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 both salmon and zot endpoints. + + + + + ((key)) + ((iv)) + ((envelope)) + AES-256-CBC + ((salmon)) + + + +zot:key +******* + +A suitable randomly generated encyption key of length 32 octets for encrypting +the envelope and 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 envelope and salmon packet. This is then encrypted with the +sender's private key and base64url encoded. + +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 respnsible 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 MUST validate the From identity as the signer of the salmon +magic envelope, and MAY reject it. They MAY also 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. + + +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" , "Alice Jones" + +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 encrypted with alg using key and iv. Only AES-256-CBC +is defined as an algorithm in this specification. The encrypted envelope is +then 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 +ednpoint is defined elsewhere in this document. The bulk delivery agent +will deliver to all local addresses found in the address lists. + +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 MUST be 'application/xml+atom' representing an Atom formatted +ActivityStream. This format MUST be supported. Future revisions MAY allow +other alternate data formats. + + + +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: + + + + +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: + + + + + +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. + + +********************** +* 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. + +Only authentication via OpenID is defined in this version of the specification. + +This can be used to provide access control to any web resource to any +webfinger identity on the internet. + + + -- cgit v1.2.3 From 8193ff426fe22814274d3850922bd893154e89b6 Mon Sep 17 00:00:00 2001 From: Friendika Date: Wed, 31 Aug 2011 19:49:51 -0700 Subject: change MUST to SHOULD w/r/t data formats --- zot.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/zot.txt b/zot.txt index 66698d543..5338d748e 100644 --- a/zot.txt +++ b/zot.txt @@ -128,10 +128,10 @@ 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 MUST be 'application/xml+atom' representing an Atom formatted -ActivityStream. This format MUST be supported. Future revisions MAY allow -other alternate data formats. - +salmon SHOULD be 'application/xml+atom' 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 -- cgit v1.2.3 From 2bcd43cb1fd2a50622ac26c3ece77db2f055bff7 Mon Sep 17 00:00:00 2001 From: Friendika Date: Wed, 31 Aug 2011 20:17:21 -0700 Subject: xml+atom was backwards --- zot.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zot.txt b/zot.txt index 5338d748e..c10a3bbbb 100644 --- a/zot.txt +++ b/zot.txt @@ -63,7 +63,7 @@ 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 respnsible for transmitting this message. From +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 @@ -128,7 +128,7 @@ 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/xml+atom' representing an Atom formatted +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). -- cgit v1.2.3 From d64f9ad97ac1ebf73d4443c8322fd7efbd1a745a Mon Sep 17 00:00:00 2001 From: Friendika Date: Wed, 31 Aug 2011 20:23:13 -0700 Subject: allow browser cookies to avoid multiple redirects --- zot.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/zot.txt b/zot.txt index c10a3bbbb..2a0b5f31d 100644 --- a/zot.txt +++ b/zot.txt @@ -227,6 +227,9 @@ 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 to any web resource to any -- cgit v1.2.3 From 344f12c8c41e48c864eb0ae4c291bb9c87ac46d0 Mon Sep 17 00:00:00 2001 From: Friendika Date: Wed, 31 Aug 2011 21:18:23 -0700 Subject: sender verification --- zot.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/zot.txt b/zot.txt index 2a0b5f31d..3ad7295cc 100644 --- a/zot.txt +++ b/zot.txt @@ -30,6 +30,7 @@ resolvable addresses containing both salmon and zot endpoints. ((key)) ((iv)) ((envelope)) + ((envelope signature)) AES-256-CBC ((salmon)) @@ -115,6 +116,15 @@ the "owner" of the endpoint. ednpoint 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 ******* -- cgit v1.2.3 From 3cd8ee716123e1fc0c6092a9af3b7d825fffe116 Mon Sep 17 00:00:00 2001 From: Friendika Date: Wed, 31 Aug 2011 21:23:40 -0700 Subject: more clarification w/r/t sender|from --- zot.txt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/zot.txt b/zot.txt index 3ad7295cc..7568d1c30 100644 --- a/zot.txt +++ b/zot.txt @@ -30,7 +30,7 @@ resolvable addresses containing both salmon and zot endpoints. ((key)) ((iv)) ((envelope)) - ((envelope signature)) + ((sender signature)) AES-256-CBC ((salmon)) @@ -78,10 +78,12 @@ 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 MUST validate the From identity as the signer of the salmon -magic envelope, and MAY reject it. They MAY also 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. +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: * -- cgit v1.2.3 From 0cfc8570d20ef4935e846f0f143aef181b9c951f Mon Sep 17 00:00:00 2001 From: Friendika Date: Wed, 31 Aug 2011 21:46:37 -0700 Subject: save plink for diaspora items so likes will point to right post --- include/diaspora.php | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/include/diaspora.php b/include/diaspora.php index 0ab467829..89afc46f9 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -457,7 +457,14 @@ function diaspora_post($importer,$xml) { $datarray['body'] = $body; $datarray['app'] = 'Diaspora'; - item_store($datarray); + $message_id = item_store($datarray); + + if($message_id) { + q("update item set plink = '%s' where id = %d limit 1", + dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id), + intval($message_id) + ); + } return; @@ -576,6 +583,13 @@ function diaspora_comment($importer,$xml,$msg) { $message_id = item_store($datarray); + if($message_id) { + q("update item set plink = '%s' where id = %d limit 1", + dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id), + intval($message_id) + ); + } + if(! $parent_author_signature) { q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", intval($message_id), @@ -805,6 +819,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), -- cgit v1.2.3 From f006b8385ad22f96c20c293f014ea73b04e2420d Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Thu, 1 Sep 2011 12:07:17 +0300 Subject: Add some links to external resources --- zot.txt | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/zot.txt b/zot.txt index 7568d1c30..93fdf3b9d 100644 --- a/zot.txt +++ b/zot.txt @@ -1,4 +1,3 @@ - This is the Zot! social communications protocol. Specification revision: 1 @@ -247,5 +246,23 @@ Only authentication via OpenID is defined in this version of the specification. This can be used to provide access control to 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 -- cgit v1.2.3 From 18f6d4e639a18e94a099c054725dbcc15a06a687 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Thu, 1 Sep 2011 12:39:42 +0200 Subject: small fix to IT strings --- view/it/messages.po | 4 ++-- view/it/strings.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/view/it/messages.po b/view/it/messages.po index 290e22f7b..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-26 14:28+0000\n" +"PO-Revision-Date: 2011-09-01 10:32+0000\n" "Last-Translator: fabrixxm \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" diff --git a/view/it/strings.php b/view/it/strings.php index 1d6ba3dc0..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."; -- cgit v1.2.3 From 058e329dfbc2678fa7e3cb2ce130fb9ffd69b84d Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Thu, 1 Sep 2011 12:37:30 +0200 Subject: Fix profile vcard and style --- boot.php | 1 + images/connect-bg.png | Bin 0 -> 689 bytes view/profile_vcard.tpl | 31 ++++++++++++++------------- view/theme/quattro/colors.less | 3 +++ view/theme/quattro/quattro.less | 30 ++++++++++++++++++++++++++ view/theme/quattro/style.css | 46 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 96 insertions(+), 15 deletions(-) create mode 100644 images/connect-bg.png diff --git a/boot.php b/boot.php index edad6e70f..73cfe6e06 100644 --- a/boot.php +++ b/boot.php @@ -878,6 +878,7 @@ function profile_sidebar($profile, $block = 0) { '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', diff --git a/images/connect-bg.png b/images/connect-bg.png new file mode 100644 index 000000000..0611c73e5 Binary files /dev/null and b/images/connect-bg.png differ diff --git a/view/profile_vcard.tpl b/view/profile_vcard.tpl index 01238ed5a..88111b0f1 100644 --- a/view/profile_vcard.tpl +++ b/view/profile_vcard.tpl @@ -4,17 +4,11 @@ {{ if $pdesc }}
    $profile.pdesc
    {{ endif }}
    $profile.name
    - + {{ if $location }} -
    $location -
    +
    $location
    +
    {{ if $profile.address }}
    $profile.address
    {{ endif }} $profile.locality{{ if $profile.locality }}, {{ endif }} @@ -22,20 +16,27 @@ $profile.postal-code {{ if $profile.country-name }}$profile.country-name{{ endif }} -
    - + + {{ endif }} - {{ if $gender }}
    $gender $profile.gender
    {{ endif }} + {{ if $gender }}
    $gender
    $profile.gender
    {{ endif }} {{ if $profile.pubkey }}{{ endif }} - {{ if $marital }}
    $marital$profile.marital
    {{ endif }} + {{ if $marital }}
    $marital
    $profile.marital
    {{ endif }} - {{ if $homepage }}{{ endif }} + {{ if $homepage }}
    $homepage
    $profile.homepage
    {{ endif }} {{ inc diaspora_vcard.tpl }}{{ endinc }} - + +
    $contact_block diff --git a/view/theme/quattro/colors.less b/view/theme/quattro/colors.less index d79dbca68..6015c61ee 100644 --- a/view/theme/quattro/colors.less +++ b/view/theme/quattro/colors.less @@ -55,6 +55,9 @@ @MenuItemDetail: @Metalic2; @AsideBorder: @Metalic1; +@AsideConnect: @Grey1; +@AsideConnectBg: @Blue3; +@AsideConnectHoverBg: @Blue1; diff --git a/view/theme/quattro/quattro.less b/view/theme/quattro/quattro.less index f83cce3ce..d21c3c182 100644 --- a/view/theme/quattro/quattro.less +++ b/view/theme/quattro/quattro.less @@ -203,8 +203,38 @@ aside { 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; } + } + } + + + /* section */ section { display: table-cell; diff --git a/view/theme/quattro/style.css b/view/theme/quattro/style.css index e0d22a007..28e6f5fa1 100644 --- a/view/theme/quattro/style.css +++ b/view/theme/quattro/style.css @@ -250,6 +250,52 @@ aside { 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; +} /* section */ section { display: table-cell; -- cgit v1.2.3 From 1621630b064474eb385bfa05d248fec712645814 Mon Sep 17 00:00:00 2001 From: Friendika Date: Thu, 1 Sep 2011 06:29:29 -0700 Subject: login_hook --- boot.php | 2 ++ include/crypto.php | 15 +++++++++------ include/items.php | 2 ++ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/boot.php b/boot.php index 574ac86c0..3578f3f33 100644 --- a/boot.php +++ b/boot.php @@ -674,6 +674,8 @@ function login($register = false) { '$lostlink' => $lostlink )); + call_hooks('login_hook',$o); + return $o; }} diff --git a/include/crypto.php b/include/crypto.php index 88e05b9eb..0feb45c24 100644 --- a/include/crypto.php +++ b/include/crypto.php @@ -262,24 +262,27 @@ function aes_unencapsulate($data,$prvkey) { } -function zot_encapsulate($data,$sender,$pubkey) { +// This has been superceded. + +function zot_encapsulate($data,$envelope,$pubkey) { $res = aes_encapsulate($data,$pubkey); -openssl_public_encrypt($sender,$s,$pubkey); -$s1 = base64url_encode($s,true); return <<< EOT - + {$res['key']} {$res['iv']} - $s1 + $s1 + $sig AES-256-CBC {$res['data']} - + EOT; } +// so has this + function zot_unencapsulate($data,$prvkey) { $ret = array(); $c = array(); diff --git a/include/items.php b/include/items.php index 1603dec60..6ded6f87c 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; } } -- cgit v1.2.3 From a33edb00424882258a90b138c634a466c92faf61 Mon Sep 17 00:00:00 2001 From: Friendika Date: Thu, 1 Sep 2011 18:02:08 -0700 Subject: infrastructure for personalised @ tags (no UI/settings form yet), allow own comments through statusnet connector --- addon/statusnet/statusnet.php | 5 ++++- boot.php | 4 ++-- database.sql | 1 + mod/item.php | 3 ++- mod/photos.php | 3 ++- update.php | 8 ++++++-- zot.txt | 4 ++-- 7 files changed, 19 insertions(+), 9 deletions(-) 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/boot.php b/boot.php index 3578f3f33..e8b3d7ac1 100644 --- a/boot.php +++ b/boot.php @@ -7,9 +7,9 @@ require_once('include/text.php'); require_once("include/pgettext.php"); -define ( 'FRIENDIKA_VERSION', '2.2.1089' ); +define ( 'FRIENDIKA_VERSION', '2.2.1090' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); -define ( 'DB_UPDATE_VERSION', 1084 ); +define ( 'DB_UPDATE_VERSION', 1085 ); define ( 'EOL', "
    \r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/database.sql b/database.sql index 9819914f7..432ce7693 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, diff --git a/mod/item.php b/mod/item.php index b6ea8ff08..6ecca8f4a 100644 --- a/mod/item.php +++ b/mod/item.php @@ -404,7 +404,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) ); 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/update.php b/update.php index 14bc48ab7..80761cce4 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ Date: Thu, 1 Sep 2011 21:54:04 -0700 Subject: error viewing logfiles over 2Gb --- mod/admin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/admin.php b/mod/admin.php index 72544ee70..e42fe93f6 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -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 = ''; -- cgit v1.2.3 From 5a7934012c4ff00c9d09ab12a0fd8973a62f31ad Mon Sep 17 00:00:00 2001 From: Erkan Yilmaz Date: Fri, 2 Sep 2011 07:07:03 +0200 Subject: fix README for twitter plugin: typos + change to new menu structure --- addon/twitter/README | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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. -- cgit v1.2.3 From 55e138a7c02b3eaf7ae7dce38bd1ad99ab3b0674 Mon Sep 17 00:00:00 2001 From: Erkan Yilmaz Date: Fri, 2 Sep 2011 07:37:09 +0200 Subject: typo in widget plugin text --- addon/widgets/widget_like.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 KEY and print like/dislike count"; + return "Search first item which contains KEY and print like/dislike count"; } function like_widget_args(){ -- cgit v1.2.3 From ecd2fe4592d30e85af5fe2800e5511396e8256b5 Mon Sep 17 00:00:00 2001 From: Erkan Yilmaz Date: Fri, 2 Sep 2011 07:48:07 +0200 Subject: typos in README files of plugins: impressum + statusnet --- addon/impressum/README | 2 +- addon/statusnet/README | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) 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/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. -- cgit v1.2.3 From 04011302467502cc0896a4f9b25951c39641018a Mon Sep 17 00:00:00 2001 From: Erkan Yilmaz Date: Fri, 2 Sep 2011 08:15:36 +0200 Subject: typos + adapt --- doc/Installing-Connectors.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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. -- cgit v1.2.3 From 463a136c15fe41218b9ebe3f7d18d12054de0798 Mon Sep 17 00:00:00 2001 From: Erkan Yilmaz Date: Fri, 2 Sep 2011 10:17:17 +0200 Subject: typo in German admin log page --- view/de/strings.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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"; -- cgit v1.2.3 From 7bee0bff0d9949e2e001934ab22cb8bd6a71be76 Mon Sep 17 00:00:00 2001 From: Friendika Date: Fri, 2 Sep 2011 01:56:02 -0700 Subject: protocol update, require a recipient encrypted envelope or it cannot be decrypted. --- zot.txt | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/zot.txt b/zot.txt index dd9f70982..4d3a6f6d0 100644 --- a/zot.txt +++ b/zot.txt @@ -1,7 +1,7 @@ This is the Zot! social communications protocol. Specification revision: 1 -01 September 2011 +02 September 2011 Mike Macgirvin This specification is public domain. @@ -14,6 +14,10 @@ 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 * **************** @@ -28,6 +32,8 @@ resolvable addresses containing both salmon and zot endpoints. ((key)) ((iv)) + ((env_key)) + ((env_iv)) ((envelope)) ((sender signature)) AES-256-CBC @@ -39,15 +45,33 @@ zot:key ******* A suitable randomly generated encyption key of length 32 octets for encrypting -the envelope and salmon packet. This is then encrypted with the sender's -private key and base64url encoded. +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 envelope and salmon packet. This is then encrypted with the -sender's private key and base64url encoded. +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 ******* @@ -99,9 +123,8 @@ 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 encrypted with alg using key and iv. Only AES-256-CBC -is defined as an algorithm in this specification. The encrypted envelope is -then base64url encoded for transmission. +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 @@ -246,6 +269,7 @@ 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 * ********* -- cgit v1.2.3 From 93b9d713776bd18e9a3126f025a0c63c8589c201 Mon Sep 17 00:00:00 2001 From: Friendika Date: Fri, 2 Sep 2011 05:13:38 -0700 Subject: completely enclose ~f hashtags so they don't get hijacked by D* --- include/bb2diaspora.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index 92f492116..2eeea32cd 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -58,7 +58,8 @@ function bb2diaspora($Text,$preserve_nl = false) { $Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/", '[$1]($1)', $Text); - $Text = preg_replace("(\[url\=([$URLSearchString]*)\](.*?)\[/url\])", '[$2]($1)', $Text); + $Text = preg_replace("/\#\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/", '[#$2]($1)', $Text); + $Text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/", '[$2]($1)', $Text); // $Text = preg_replace("/\[img\](.*?)\[\/img\]/", t('Image/photo: ') . '$1', $Text); // $Text = preg_replace("/\[img\](.*?)\[\/img\]/", t('image/photo'), $Text); -- cgit v1.2.3 From 9e9b6a3dd1dd6f364ee0448a37bc0d3df71b2977 Mon Sep 17 00:00:00 2001 From: Friendika Date: Fri, 2 Sep 2011 05:46:00 -0700 Subject: zot: dealing with foreign messages --- zot.txt | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/zot.txt b/zot.txt index 4d3a6f6d0..0704875af 100644 --- a/zot.txt +++ b/zot.txt @@ -11,7 +11,7 @@ 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 +(email). Zot encompasses the zot delivery framework and the zid remote access protocol. The current specification revision (1) is frozen until a reference @@ -25,7 +25,8 @@ change to the revision number. 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 both salmon and zot endpoints. +resolvable addresses containing zot endpoints and salmon public keys (zot +is a superset of salmon). @@ -220,6 +221,17 @@ 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 * -- cgit v1.2.3 From 508a13da00e639ca871fa099affe5e73d0b0d6b6 Mon Sep 17 00:00:00 2001 From: Erkan Yilmaz Date: Sat, 3 Sep 2011 04:01:24 +0200 Subject: inital info for Facebook + CC by licence further info here: http://groups.google.com/group/friendika/browse_thread/thread/7562e0b22f815a79 --- addon/facebook/README | 4 ++++ 1 file changed, 4 insertions(+) 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/ ) -- cgit v1.2.3 From f186863523bc8f9c6e28d593231247936ba7f931 Mon Sep 17 00:00:00 2001 From: Friendika Date: Fri, 2 Sep 2011 19:27:32 -0700 Subject: revup --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index e8b3d7ac1..ef191dedc 100644 --- a/boot.php +++ b/boot.php @@ -7,7 +7,7 @@ require_once('include/text.php'); require_once("include/pgettext.php"); -define ( 'FRIENDIKA_VERSION', '2.2.1090' ); +define ( 'FRIENDIKA_VERSION', '2.2.1091' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); define ( 'DB_UPDATE_VERSION', 1085 ); -- cgit v1.2.3 From 7813f1798fb41e4f101172aa8493924856c937ab Mon Sep 17 00:00:00 2001 From: Michal Supler Date: Sat, 3 Sep 2011 02:01:15 -0300 Subject: minor changes of czech translations --- view/cs/htconfig.tpl | 4 + view/cs/lostpass_eml.tpl | 2 +- view/cs/mail_received_html_body_eml.tpl | 2 +- view/cs/messages.po | 2925 ++++++++++++++++++++----------- view/cs/passchanged_eml.tpl | 4 +- view/cs/register_open_eml.tpl | 4 +- view/cs/register_verify_eml.tpl | 6 +- view/cs/strings.php | 453 +++-- 8 files changed, 2245 insertions(+), 1155 deletions(-) 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 @@ $from $title $htmlversion - Přihlaste se na $siteurl$ pro čtení a zaslání odpovědí na Vaše soukromé zprávy. + Přihlaste se na $siteurl pro čtení a zaslání odpovědí na Vaše soukromé zprávy. Díky, $siteName administrátor 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 , 2011, 2011.0 +# Michal Šupler , 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 \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 now if you are " "uncertain what to do on this page." -msgstr "Aktualizace kontaktu selhala" +msgstr "" +"Prosím použijte ihned 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 licencí Creative " -"Commons Attribution 3.0" - -#: ../../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 Creative Commons " +"Attribution 3.0 license." +msgstr "" +"Sdílený obsah je v souladu s Commons Creative " +"3.0 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 reputation to guide them." @@ -1057,7 +1230,7 @@ msgstr "" "Poskytnutím pověsti 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 Settings page after " "successful login." @@ -1204,11 +1378,11 @@ msgstr "" "Vaše heslo může být změněno na stránce nastavení po úspěšném " "přihlášení." -#: ../../mod/lostpass.php:114 +#: ../../mod/lostpass.php:118 msgid "Forgot your Password?" msgstr "Zapomněli jste heslo?" -#: ../../mod/lostpass.php:115 +#: ../../mod/lostpass.php:119 msgid "" "Enter your email address and submit to have your password reset. Then check " "your email for further instructions." @@ -1216,246 +1390,267 @@ msgstr "" "Zadejte svůj e-mailovou adresu a odešlete žádost o zaslání Vašeho nového " "hesla. Poté zkontrolujte svůj e-mail pro další instrukce." -#: ../../mod/lostpass.php:116 +#: ../../mod/lostpass.php:120 msgid "Nickname or Email: " msgstr "Přezdívka nebo e-mail:" -#: ../../mod/lostpass.php:117 +#: ../../mod/lostpass.php:121 msgid "Reset" msgstr "Reset" -#: ../../mod/settings.php:38 +#: ../../mod/settings.php:64 msgid "Passwords do not match. Password unchanged." msgstr "Hesla se neshodují. Heslo nebylo změněno." -#: ../../mod/settings.php:43 +#: ../../mod/settings.php:69 msgid "Empty passwords are not allowed. Password unchanged." msgstr "Prázdné hesla nejsou povolena. Heslo nebylo změněno." -#: ../../mod/settings.php:54 +#: ../../mod/settings.php:80 msgid "Password changed." msgstr "Heslo bylo změněno." -#: ../../mod/settings.php:56 +#: ../../mod/settings.php:82 msgid "Password update failed. Please try again." msgstr "Aktualizace hesla se nezdařila. Zkuste to prosím znovu." -#: ../../mod/settings.php:138 +#: ../../mod/settings.php:161 +msgid "Failed to connect with email account using the settings provided." +msgstr "Nepodařilo se připojit k e-mailovému účtu pomocí dodaného nastavení." + +#: ../../mod/settings.php:188 msgid " Please use a shorter name." msgstr "Prosím použijte kratší jméno." -#: ../../mod/settings.php:140 +#: ../../mod/settings.php:190 msgid " Name too short." msgstr "Jméno je příliš krátké." -#: ../../mod/settings.php:146 +#: ../../mod/settings.php:196 msgid " Not valid email." msgstr "Neplatný e-mail." -#: ../../mod/settings.php:148 +#: ../../mod/settings.php:198 msgid " Cannot change to that email." msgstr "Nelze provést změnu na tento e-mail." -#: ../../mod/settings.php:206 +#: ../../mod/settings.php:257 ../../addon/facebook/facebook.php:297 +#: ../../addon/impressum/impressum.php:64 ../../addon/piwik/piwik.php:89 +#: ../../addon/twitter/twitter.php:275 msgid "Settings updated." msgstr "Nastavení aktualizováno." -#: ../../mod/settings.php:256 ../../mod/settings.php:418 -#: ../../addon/widgets/widgets.php:123 -msgid "Plugin Settings" -msgstr "Nastavení doplňku" - -#: ../../mod/settings.php:257 ../../mod/settings.php:417 -msgid "Account Settings" +#: ../../mod/settings.php:311 ../../include/nav.php:108 +msgid "Account settings" msgstr "Nastavení účtu" -#: ../../mod/settings.php:263 +#: ../../mod/settings.php:312 +msgid "Plugin settings" +msgstr "Nastavení pluginu" + +#: ../../mod/settings.php:322 msgid "No Plugin settings configured" msgstr "Žádný doplněk není nastaven" -#: ../../mod/settings.php:323 +#: ../../mod/settings.php:329 ../../addon/widgets/widgets.php:122 +msgid "Plugin Settings" +msgstr "Nastavení doplňku" + +#: ../../mod/settings.php:382 ../../mod/admin.php:133 ../../mod/admin.php:443 msgid "Normal Account" msgstr "Normální účet" -#: ../../mod/settings.php:324 +#: ../../mod/settings.php:383 msgid "This account is a normal personal profile" msgstr "Tento účet je běžný osobní profil" -#: ../../mod/settings.php:325 +#: ../../mod/settings.php:386 ../../mod/admin.php:134 ../../mod/admin.php:444 msgid "Soapbox Account" msgstr "Soapbox účet" -#: ../../mod/settings.php:326 +#: ../../mod/settings.php:387 msgid "Automatically approve all connection/friend requests as read-only fans" msgstr "" "Automaticky schválit všechna spojení / přátelství jako fanoušky s právem " "pouze ke čtení" -#: ../../mod/settings.php:327 +#: ../../mod/settings.php:390 ../../mod/admin.php:135 ../../mod/admin.php:445 msgid "Community/Celebrity Account" msgstr "Komunitní účet / Účet celebrity" -#: ../../mod/settings.php:328 +#: ../../mod/settings.php:391 msgid "" "Automatically approve all connection/friend requests as read-write fans" msgstr "" "Automaticky schvalovat všechny žádosti o spojení / přátelství, jako fanoušky" " s právem ke čtení." -#: ../../mod/settings.php:329 +#: ../../mod/settings.php:394 ../../mod/admin.php:136 ../../mod/admin.php:446 msgid "Automatic Friend Account" -msgstr "Automatický účet přítele" +msgstr "Účet s automatickým schvalováním přátel" -#: ../../mod/settings.php:330 +#: ../../mod/settings.php:395 msgid "Automatically approve all connection/friend requests as friends" msgstr "" "Automaticky schvalovat všechny žádosti o spojení / přátelství jako přátele" -#: ../../mod/settings.php:339 -msgid "OpenID: " -msgstr "OpenID: " +#: ../../mod/settings.php:405 +msgid "OpenID:" +msgstr "OpenID:" + +#: ../../mod/settings.php:405 +msgid "(Optional) Allow this OpenID to login to this account." +msgstr "(Volitelné) Povolit OpenID pro přihlášení k tomuto účtu." + +#: ../../mod/settings.php:415 +msgid "Publish your default profile in your local site directory?" +msgstr "Publikovat Váš výchozí profil v místním adresáři webu?" -#: ../../mod/settings.php:339 -msgid " (Optional) Allow this OpenID to login to this account." -msgstr " (Volitelné) Povolit toto OpenID pro přihlášení k tomuto účtu." +#: ../../mod/settings.php:421 +msgid "Publish your default profile in the global social directory?" +msgstr "Publikovat Váš výchozí profil v globální sociálním adresáři?" -#: ../../mod/settings.php:349 -msgid "Publish your default profile in site directory?" -msgstr "Zveřejnit Váš výchozí profil v místním adresáři?" +#: ../../mod/settings.php:429 +msgid "Hide your contact/friend list from viewers of your default profile?" +msgstr "" +"Skrýt Vaše kontaktní údaje a seznam přátel před návštěvníky ve Vašem " +"výchozím profilu?" -#: ../../mod/settings.php:361 -msgid "Publish your default profile in global social directory?" -msgstr "Zveřejnit Váš výchozí profil v globálním sociální adresáři?" +#: ../../mod/settings.php:433 +msgid "Hide profile details and all your messages from unknown viewers?" +msgstr "Skrýt detaily profilu a všechny zprávy před neznámými uživateli?" -#: ../../mod/settings.php:377 +#: ../../mod/settings.php:442 msgid "Profile is not published." msgstr "Profil není zveřejněn." -#: ../../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:" - -#: ../../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í)" +msgstr "obdržíte soukromou zprávu" -#: ../../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:481 +#: ../../mod/settings.php:540 +msgid "None" +msgstr "Žádný" + +#: ../../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,135 +1748,239 @@ 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 -msgid "" -"Shared content is covered by the Creative Commons " -"Attribution 3.0 license." -msgstr "" -"Sdílený obsah je v souladu s Commons Creative " -"3.0 licencí." - -#: ../../mod/notes.php:41 ../../mod/apps.php:8 -msgid "Private Notes" -msgstr "Soukromé poznámky" - -#: ../../mod/notes.php:60 +#: ../../mod/notes.php:74 msgid "Save" msgstr "Uložit" -#: ../../mod/attach.php:6 -msgid "Item not available." -msgstr "Položka není k dispozici." - -#: ../../mod/attach.php:16 -msgid "Item was not found." -msgstr "Položka nebyla nalezena." +#: ../../mod/newmember.php:6 +msgid "Welcome to Friendika" +msgstr "Vítejte na Friendika" -#: ../../mod/group.php:27 -msgid "Group created." -msgstr "Skupina vytvořena." +#: ../../mod/newmember.php:8 +msgid "New Member Checklist" +msgstr "Seznam doporučení pro nového člena" -#: ../../mod/group.php:33 -msgid "Could not create group." -msgstr "Nelze vytvořit skupinu." +#: ../../mod/newmember.php:12 +msgid "" +"We would like to offer some tips and links to help make your experience " +"enjoyable. Click any item to visit the relevant page." +msgstr "" +"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/group.php:43 ../../mod/group.php:115 -msgid "Group not found." -msgstr "Skupina nenalezena." +#: ../../mod/newmember.php:16 +msgid "" +"On your Settings page - change your initial password. Also make a " +"note of your Identity Address. This will be useful in making friends." +msgstr "" +"Na stránce Nastavení - 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/group.php:56 -msgid "Group name changed." -msgstr "Název skupiny byl změněn." +#: ../../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/group.php:67 ../../mod/profperm.php:19 ../../index.php:255 +#: ../../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 default profile to your liking. Review the " +"settings for hiding your list of friends and hiding the profile from unknown" +" visitors." +msgstr "" +"Upravit výchozí 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 Connect 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 Připojit." + +#: ../../mod/newmember.php:36 +msgid "" +"The Directory page lets you find other people in this network or other " +"federated sites. Look for a Connect or Follow 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ů Připojení nebo " +"Následovat 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 help pages may be consulted for detail on other program" +" features and resources." +msgstr "" +"Na stránkách Nápověda naleznete nejen další podrobnosti o " +"všech funkcích Friendika ale také další zdroje informací." + +#: ../../mod/attach.php:8 +msgid "Item not available." +msgstr "Položka není k dispozici." + +#: ../../mod/attach.php:20 +msgid "Item was not found." +msgstr "Položka nebyla nalezena." + +#: ../../mod/group.php:27 +msgid "Group created." +msgstr "Skupina vytvořena." + +#: ../../mod/group.php:33 +msgid "Could not create group." +msgstr "Nelze vytvořit skupinu." + +#: ../../mod/group.php:43 ../../mod/group.php:123 +msgid "Group not found." +msgstr "Skupina nenalezena." + +#: ../../mod/group.php:56 +msgid "Group name changed." +msgstr "Název skupiny byl změněn." + +#: ../../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 \"přezdívka@$sitename\"." -#: ../../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 Creative Commons " @@ -1844,7 +2181,7 @@ msgstr "" "href=\"http://creativecommons.org/licenses/by/3.0/cz/\">licencí Creative " "Commons Attribution 3.0" -#: ../../mod/friendika.php:48 +#: ../../mod/friendika.php:47 msgid "" "Please visit Project.Friendika.com to learn " @@ -1853,11 +2190,11 @@ msgstr "" "Pokud se chcete dozvědět více o projektu Friendika, navštivte, prosím, Project.Friendika.com" -#: ../../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/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/profile.php:59 +#: ../../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 " Marital Status:" msgstr " 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 public profile.
    It may " "be visible to anybody using the internet." @@ -2400,31 +3081,31 @@ msgstr "" "Toto je váš veřejný profil.
    Ten může " "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 may be publicly visible, depending on" +" your privacy settings for this website/account." +msgstr "" +"Propojené položky z Facebook mohou 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 -msgid "Uploaded file is empty" -msgstr "Nahraný soubor je prázdný" +#: ../../addon/js_upload/js_upload.php:298 +msgid "Uploaded file is empty" +msgstr "Nahraný soubor je prázdný" + +#: ../../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:332 +msgid "Upload was cancelled, or server error encountered" +msgstr "Nahrávání bylo zrušeno nebo došlo k chybě na serveru" + +#: ../../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/js_upload/js_upload.php:299 -msgid "Uploaded file is too large" -msgstr "Nahraný soubor je příliš velký" +#: ../../addon/impressum/impressum.php:49 +msgid "" +"The impressum addon needs to be configured!
    Please add at least the " +"owner 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!
    Prosím, přidejte alespoň " +"proměnnou owner 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/js_upload/js_upload.php:317 -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/impressum/impressum.php:71 +msgid "Site Owners Profile" +msgstr "Profil majitele webu" -#: ../../addon/js_upload/js_upload.php:328 -msgid "Upload was cancelled, or server error encountered" -msgstr "Nahrávání bylo zrušeno nebo došlo k chybě na serveru" +#: ../../addon/impressum/impressum.php:73 +msgid "Notes" +msgstr "Poznámky" -#: ../../addon/oembed/oembed.php:29 +#: ../../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.
    The provided API URL is not " "valid." -msgstr "Obraťte se na správce webu.
    Poskytnutý odkaz na API není platný." +msgstr "" +"Obraťte se na administratora webu.
    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.
    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 veřejné " "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 public postings will be posted to the " -"associated StatusNet account." +"If enabled all your public 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 veřejné příspěvky budou " -"zveřejněny na příslušném účtu StatusNetu." +"Je-li povoleno, všechny Vaše veřejné 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 veřejné 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 public postings will be posted to the " -"associated Twitter account as well." +"If enabled all your public 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 veřejné příspěvky budou zároveň " -"zveřejněny na příslušný Twitter účet." +"Je-li povoleno, všechny Vaše veřejné 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:168 -msgid "Send public postings to Twitter" -msgstr "Poslat veřejné příspěvky na Twitter" +#: ../../addon/twitter/twitter.php:282 +msgid "Consumer key" +msgstr "Consumer key" -#: ../../include/profile_advanced.php:23 ../../boot.php:2356 +#: ../../addon/twitter/twitter.php:283 +msgid "Consumer secret" +msgstr "Consumer secret" + +#: ../../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 " Status:" msgstr " 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 "%2$d people like this." msgstr "%2$d lidem se to líbí." -#: ../../include/conversation.php:654 +#: ../../include/conversation.php:669 #, php-format msgid "%2$d people don't like this." msgstr "%2$d lidem 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 everybody" msgstr "Viditelné pro všechny" -#: ../../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["WARNING: This is highly advanced and if you enter incorrect information your communications with this contact will stop working."] = "VAROVÁNÍ: Toto je velmi pokročilé nastavení, pokud zadáte nesprávné informace, komunikace s tímto kontaktem přestane fungovat."; -$a->strings["Please use your browser 'Back' button now if you are uncertain what to do on this page."] = "Aktualizace kontaktu selhala"; +$a->strings["Please use your browser 'Back' button now if you are uncertain what to do on this page."] = "Prosím použijte ihned 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 licencí Creative Commons Attribution 3.0"; +$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 Creative Commons Attribution 3.0 license."] = "Sdílený obsah je v souladu s Commons Creative 3.0 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 reputation to guide them."] = "Poskytnutím pověsti jim můžete pomoci se rozhodnout, zda-li s touto osobou komunikovat či nikoliv."; $a->strings["Please take a moment to elaborate on this selection if you feel it could be helpful to others."] = "Věnujte prosím chvilku vyplnění této volby, pokud máte pocit, že by mohlo být užitečné pro ostatní."; -$a->strings["Visit \$name's profile"] = "Navštívit profil \$name"; +$a->strings["Visit %s's profile [%s]"] = "Navštivte profil uživatele %s [%s]"; $a->strings["Block/Unblock contact"] = "Blokovat / Odblokovat kontakt"; $a->strings["Ignore contact"] = "Ignorovat kontakt"; $a->strings["Repair contact URL settings"] = "Opravit nastavení URL kontaktu"; @@ -248,13 +286,13 @@ $a->strings["Show Blocked Connections"] = "Zobrazit blokované spojení"; $a->strings["Hide Blocked Connections"] = "Skrýt blokované spojení"; $a->strings["Finding: "] = "Zjištění: "; $a->strings["Find"] = "Najít"; -$a->strings["Visit \$username's profile"] = "Navštívit profil uživatele \$username"; $a->strings["Edit contact"] = "Editovat kontakt"; +$a->strings["No valid account found."] = "Nenalezen žádný platný účet."; $a->strings["Password reset request issued. Check your email."] = "Žádost o obnovení hesla vyřízena. Zkontrolujte Vaši e-mailovou schránku."; -$a->strings["Password reset requested at %s"] = "Resetování hesla vyžádáno v %s"; +$a->strings["Password reset requested at %s"] = "Na %s bylo zažádáno o resetování hesla"; $a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Žádost nemohla být ověřena. (Možná jste ji odeslali již dříve.) Obnovení hesla se nezdařilo."; -$a->strings["Password Reset"] = "Obnovit heslo"; -$a->strings["Your password has been reset as requested."] = "Vaše heslo bylo resetováno jak bylo požadováno."; +$a->strings["Password Reset"] = "Obnovení hesla"; +$a->strings["Your password has been reset as requested."] = "Vaše heslo bylo na Vaše přání resetováno."; $a->strings["Your new password is"] = "Vaše nové heslo je"; $a->strings["Save or copy your new password - and then"] = "Uložte si nebo zkopírujte nové heslo - a pak"; $a->strings["click here to login"] = "klikněte zde pro přihlášení"; @@ -267,73 +305,82 @@ $a->strings["Passwords do not match. Password unchanged."] = "Hesla se neshoduj $a->strings["Empty passwords are not allowed. Password unchanged."] = "Prázdné hesla nejsou povolena. Heslo nebylo změněno."; $a->strings["Password changed."] = "Heslo bylo změněno."; $a->strings["Password update failed. Please try again."] = "Aktualizace hesla se nezdařila. Zkuste to prosím znovu."; +$a->strings["Failed to connect with email account using the settings provided."] = "Nepodařilo se připojit k e-mailovému účtu pomocí dodaného nastavení."; $a->strings[" Please use a shorter name."] = "Prosím použijte kratší jméno."; $a->strings[" Name too short."] = "Jméno je příliš krátké."; $a->strings[" Not valid email."] = "Neplatný e-mail."; $a->strings[" Cannot change to that email."] = "Nelze provést změnu na tento e-mail."; $a->strings["Settings updated."] = "Nastavení aktualizováno."; -$a->strings["Plugin Settings"] = "Nastavení doplňku"; -$a->strings["Account Settings"] = "Nastavení účtu"; +$a->strings["Account settings"] = "Nastavení účtu"; +$a->strings["Plugin settings"] = "Nastavení pluginu"; $a->strings["No Plugin settings configured"] = "Žádný doplněk není nastaven"; +$a->strings["Plugin Settings"] = "Nastavení doplňku"; $a->strings["Normal Account"] = "Normální účet"; $a->strings["This account is a normal personal profile"] = "Tento účet je běžný osobní profil"; $a->strings["Soapbox Account"] = "Soapbox účet"; $a->strings["Automatically approve all connection/friend requests as read-only fans"] = "Automaticky schválit všechna spojení / přátelství jako fanoušky s právem pouze ke čtení"; $a->strings["Community/Celebrity Account"] = "Komunitní účet / Účet celebrity"; $a->strings["Automatically approve all connection/friend requests as read-write fans"] = "Automaticky schvalovat všechny žádosti o spojení / přátelství, jako fanoušky s právem ke čtení."; -$a->strings["Automatic Friend Account"] = "Automatický účet přítele"; +$a->strings["Automatic Friend Account"] = "Účet s automatickým schvalováním přátel"; $a->strings["Automatically approve all connection/friend requests as friends"] = "Automaticky schvalovat všechny žádosti o spojení / přátelství jako přátele"; -$a->strings["OpenID: "] = "OpenID: "; -$a->strings[" (Optional) Allow this OpenID to login to this account."] = " (Volitelné) Povolit toto OpenID pro přihlášení k tomuto účtu."; -$a->strings["Publish your default profile in site directory?"] = "Zveřejnit Váš výchozí profil v místním adresáři?"; -$a->strings["Publish your default profile in global social directory?"] = "Zveřejnit Váš výchozí profil v globálním sociální adresáři?"; +$a->strings["OpenID:"] = "OpenID:"; +$a->strings["(Optional) Allow this OpenID to login to this account."] = "(Volitelné) Povolit OpenID pro přihlášení k tomuto účtu."; +$a->strings["Publish your default profile in your local site directory?"] = "Publikovat Váš výchozí profil v místním adresáři webu?"; +$a->strings["Publish your default profile in the global social directory?"] = "Publikovat Váš výchozí profil v globální sociálním adresáři?"; +$a->strings["Hide your contact/friend list from viewers of your default profile?"] = "Skrýt Vaše kontaktní údaje a seznam přátel před návštěvníky ve Vašem výchozím profilu?"; +$a->strings["Hide profile details and all your messages from unknown viewers?"] = "Skrýt detaily profilu a všechny zprávy před neznámými uživateli?"; $a->strings["Profile is not published."] = "Profil není zveřejněn."; $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 Creative Commons Attribution 3.0 license."] = "Sdílený obsah je v souladu s Commons Creative 3.0 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 Settings page - change your initial password. Also make a note of your Identity Address. This will be useful in making friends."] = "Na stránce Nastavení - 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 default profile to your liking. Review the settings for hiding your list of friends and hiding the profile from unknown visitors."] = "Upravit výchozí 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 Connect 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 Připojit."; +$a->strings["The Directory page lets you find other people in this network or other federated sites. Look for a Connect or Follow 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ů Připojení nebo Následovat 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 help pages may be consulted for detail on other program features and resources."] = "Na stránkách Nápověda 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 may be publicly visible, depending on your privacy settings for this website/account."] = "Propojené položky z Facebook mohou 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!
    Please add at least the owner 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!
    Prosím, přidejte alespoň proměnnou owner 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.
    The provided API URL is not valid."] = "Obraťte se na správce webu.
    Poskytnutý odkaz na API není platný."; +$a->strings["Please contact your site administrator.
    The provided API URL is not valid."] = "Obraťte se na administratora webu.
    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.
    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.
    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.
    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.
    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 public postings will be posted to the associated StatusNet account."] = "Je-li povoleno, všechny Vaše veřejné příspěvky budou zveřejněny na příslušném účtu StatusNetu."; +$a->strings["If enabled all your public 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 veřejné 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 public 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 veřejné 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 public postings will be posted to the associated Twitter account as well."] = "Je-li povoleno, všechny veřejné 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 public 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 veřejné 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["%2\$d people like this."] = "%2\$d lidem 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"; -- cgit v1.2.3 From c8dbf25f51534858c532bc1ff1adda8d5229f68d Mon Sep 17 00:00:00 2001 From: Friendika Date: Sat, 3 Sep 2011 00:52:26 -0700 Subject: provide option to block Facebook wall but still allow social stream --- addon/facebook/facebook.php | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) 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 .= '' . ' ' . 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 may 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 .= '' . ' ' . 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 .= ''; } @@ -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) { -- cgit v1.2.3 From b026dcb860388a3c120cca367ead8def64977bac Mon Sep 17 00:00:00 2001 From: Friendika Date: Sat, 3 Sep 2011 04:36:45 -0700 Subject: match bbcode multiline --- include/bbcode.php | 82 +++++++++++++++++++++++++++--------------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/include/bbcode.php b/include/bbcode.php index 9ee8b7b36..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$2', $Text); - $Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/", '$1', $Text); - $Text = preg_replace("(\[url\=([$URLSearchString]*)\](.*?)\[/url\])", '$2', $Text); - //$Text = preg_replace("(\[url\=([$URLSearchString]*)\]([$URLSearchString]*)\[/url\])", '$2', $Text); + $Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/m", '$1', $Text); + $Text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/m", '$2', $Text); + //$Text = preg_replace("/\[url\=([$URLSearchString]*)\]([$URLSearchString]*)\[\/url\]/m", '$2', $Text); // Perform MAIL Search - $Text = preg_replace("(\[mail\]([$MAILSearchString]*)\[/mail\])", '$1', $Text); + $Text = preg_replace("/\[mail\]([$MAILSearchString]*)\[\/mail\]/", '$1', $Text); $Text = preg_replace("/\[mail\=([$MAILSearchString]*)\](.*?)\[\/mail\]/", '$2', $Text); // Check for bold text - $Text = preg_replace("(\[b\](.*?)\[\/b\])is",'$1',$Text); + $Text = preg_replace("(\[b\](.*?)\[\/b\])ism",'$1',$Text); // Check for Italics text - $Text = preg_replace("(\[i\](.*?)\[\/i\])is",'$1',$Text); + $Text = preg_replace("(\[i\](.*?)\[\/i\])ism",'$1',$Text); // Check for Underline text - $Text = preg_replace("(\[u\](.*?)\[\/u\])is",'$1',$Text); + $Text = preg_replace("(\[u\](.*?)\[\/u\])ism",'$1',$Text); // Check for strike-through text - $Text = preg_replace("(\[s\](.*?)\[\/s\])is",'$1',$Text); + $Text = preg_replace("(\[s\](.*?)\[\/s\])ism",'$1',$Text); // Check for over-line text - $Text = preg_replace("(\[o\](.*?)\[\/o\])is",'$1',$Text); + $Text = preg_replace("(\[o\](.*?)\[\/o\])ism",'$1',$Text); // Check for colored text - $Text = preg_replace("(\[color=(.*?)\](.*?)\[\/color\])is","$2",$Text); + $Text = preg_replace("(\[color=(.*?)\](.*?)\[\/color\])ism","$2",$Text); // Check for sized text - $Text = preg_replace("(\[size=(.*?)\](.*?)\[\/size\])is","$2",$Text); + $Text = preg_replace("(\[size=(.*?)\](.*?)\[\/size\])ism","$2",$Text); // Check for list text - $Text = preg_replace("/\[list\](.*?)\[\/list\]/is", '
      $1
    ' ,$Text); - $Text = preg_replace("/\[list=1\](.*?)\[\/list\]/is", '
      $1
    ' ,$Text); - $Text = preg_replace("/\[list=i\](.*?)\[\/list\]/s",'
      $1
    ' ,$Text); - $Text = preg_replace("/\[list=I\](.*?)\[\/list\]/s", '
      $1
    ' ,$Text); - $Text = preg_replace("/\[list=a\](.*?)\[\/list\]/s", '
      $1
    ' ,$Text); - $Text = preg_replace("/\[list=A\](.*?)\[\/list\]/s", '
      $1
    ' ,$Text); - $Text = preg_replace("/\[li\](.*?)\[\/li\]/s", '
  • $1
  • ' ,$Text); + $Text = preg_replace("/\[list\](.*?)\[\/list\]/ism", '
      $1
    ' ,$Text); + $Text = preg_replace("/\[list=1\](.*?)\[\/list\]/ism", '
      $1
    ' ,$Text); + $Text = preg_replace("/\[list=i\](.*?)\[\/list\]/sm",'
      $1
    ' ,$Text); + $Text = preg_replace("/\[list=I\](.*?)\[\/list\]/sm", '
      $1
    ' ,$Text); + $Text = preg_replace("/\[list=a\](.*?)\[\/list\]/sm", '
      $1
    ' ,$Text); + $Text = preg_replace("/\[list=A\](.*?)\[\/list\]/sm", '
      $1
    ' ,$Text); + $Text = preg_replace("/\[li\](.*?)\[\/li\]/sm", '
  • $1
  • ' ,$Text); - $Text = preg_replace("/\[td\](.*?)\[\/td\]/s", '$1' ,$Text); - $Text = preg_replace("/\[tr\](.*?)\[\/tr\]/s", '$1' ,$Text); - $Text = preg_replace("/\[table\](.*?)\[\/table\]/s", '$1
    ' ,$Text); + $Text = preg_replace("/\[td\](.*?)\[\/td\]/sm", '$1' ,$Text); + $Text = preg_replace("/\[tr\](.*?)\[\/tr\]/sm", '$1' ,$Text); + $Text = preg_replace("/\[table\](.*?)\[\/table\]/sm", '$1
    ' ,$Text); - $Text = preg_replace("/\[table border=1\](.*?)\[\/table\]/s", '$1
    ' ,$Text); - $Text = preg_replace("/\[table border=0\](.*?)\[\/table\]/s", '$1
    ' ,$Text); + $Text = preg_replace("/\[table border=1\](.*?)\[\/table\]/sm", '$1
    ' ,$Text); + $Text = preg_replace("/\[table border=0\](.*?)\[\/table\]/sm", '$1
    ' ,$Text); // $Text = str_replace("[*]", "
  • ", $Text); // Check for font change text - $Text = preg_replace("(\[font=(.*?)\](.*?)\[\/font\])","$2",$Text); + $Text = preg_replace("/\[font=(.*?)\](.*?)\[\/font\]/m","$2",$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 = '$1'; // 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 = '
    $1
    '; // 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\]/", '' . t('Image/photo') . '', $Text); + $Text = preg_replace("/\[img\](.*?)\[\/img\]/ism", '' . t('Image/photo') . '', $Text); // html5 video and audio - $Text = preg_replace("/\[video\](.*?)\[\/video\]/", '', $Text); + $Text = preg_replace("/\[video\](.*?)\[\/video\]/ism", '', $Text); - $Text = preg_replace("/\[audio\](.*?)\[\/audio\]/", '', $Text); + $Text = preg_replace("/\[audio\](.*?)\[\/audio\]/ism", '', $Text); - $Text = preg_replace("/\[iframe\](.*?)\[\/iframe\]/", '', $Text); + $Text = preg_replace("/\[iframe\](.*?)\[\/iframe\]/ism", '', $Text); // [img=widthxheight]image source[/img] - $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/", '', $Text); + $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '', $Text); if (get_pconfig(local_user(), 'oembed', 'use_for_youtube' )==1){ // use oembed for youtube links @@ -132,10 +132,10 @@ 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?:\/\/www.youtube.com\/embed\/(.*?)\[\/youtube\]/",'[youtube]$1[/youtube]',$Text); - $Text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.*?)\[\/youtube\]/",'[youtube]$1[/youtube]',$Text); - $Text = preg_replace("/\[youtube\]([A-Za-z0-9\-_=]+)(.*?)\[\/youtube\]/", '', $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", '', $Text); } @@ -150,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); } -- cgit v1.2.3 From c8f61ef890e39d703a4f4aff612793177034415a Mon Sep 17 00:00:00 2001 From: Friendika Date: Sat, 3 Sep 2011 05:23:36 -0700 Subject: no plink on imported D* posts --- include/diaspora.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/diaspora.php b/include/diaspora.php index 89afc46f9..6d070ecba 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -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)); @@ -472,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)); @@ -609,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)); -- cgit v1.2.3 From 59a6a04e26bf6baec4b7ad62419e9d335db249df Mon Sep 17 00:00:00 2001 From: Friendika Date: Sat, 3 Sep 2011 07:13:12 -0700 Subject: format events for diaspora --- include/bb2diaspora.php | 58 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 8 deletions(-) diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index 2eeea32cd..c779b6aaf 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -43,6 +43,11 @@ function bb2diaspora($Text,$preserve_nl = false) { $Text = str_replace("<", "<", $Text); $Text = str_replace(">", ">", $Text); + // If we find any event code, turn it into an event. + // After we're finished processing the bbcode we'll + // replace all of the event code with a reformatted version. + + $ev = bbtoevent($Text); if($preserve_nl) $Text = str_replace(array("\n","\r"), array('',''),$Text); @@ -164,15 +169,16 @@ function bb2diaspora($Text,$preserve_nl = false) { // 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); + } @@ -180,3 +186,39 @@ function bb2diaspora($Text,$preserve_nl = false) { return $Text; } + +function format_event_diaspora($ev) { + +// require_once('include/bbcode.php'); + + 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', date_default_timezone_get(), + $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', date_default_timezone_get(), + $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; +} -- cgit v1.2.3 From c0a2cc3e98868b3b10472dee00a4590bb11f45c1 Mon Sep 17 00:00:00 2001 From: Friendika Date: Sat, 3 Sep 2011 07:40:05 -0700 Subject: diaspora has no timezone - use UTC for events --- include/bb2diaspora.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index c779b6aaf..65ccc750f 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -201,7 +201,7 @@ function format_event_diaspora($ev) { $o .= '**' . bb2diaspora($ev['desc']) . '**' . "\n"; $o .= t('Starts:') . ' ' - . (($ev['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(), + . (($ev['adjust']) ? day_translate(datetime_convert('UTC', 'UTC', $ev['start'] , $bd_format )) : day_translate(datetime_convert('UTC', 'UTC', $ev['start'] , $bd_format))) @@ -209,7 +209,7 @@ function format_event_diaspora($ev) { if(! $ev['nofinish']) $o .= t('Finishes:') . ' ' - . (($ev['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(), + . (($ev['adjust']) ? day_translate(datetime_convert('UTC', 'UTC', $ev['finish'] , $bd_format )) : day_translate(datetime_convert('UTC', 'UTC', $ev['finish'] , $bd_format ))) -- cgit v1.2.3 From 9ff1a3444e9029c94541a7c84f0ed5ba764adef3 Mon Sep 17 00:00:00 2001 From: Friendika Date: Sun, 4 Sep 2011 00:48:45 -0700 Subject: add timezone convert module, several other minor or in progress fixes --- boot.php | 2 +- include/bb2diaspora.php | 10 ++++------ include/delivery.php | 2 ++ include/notifier.php | 3 +++ mod/localtime.php | 44 ++++++++++++++++++++++++++++++++++++++++++++ mod/parse_url.php | 2 ++ 6 files changed, 56 insertions(+), 7 deletions(-) create mode 100644 mod/localtime.php diff --git a/boot.php b/boot.php index ef191dedc..f3b6af34e 100644 --- a/boot.php +++ b/boot.php @@ -7,7 +7,7 @@ require_once('include/text.php'); require_once("include/pgettext.php"); -define ( 'FRIENDIKA_VERSION', '2.2.1091' ); +define ( 'FRIENDIKA_VERSION', '2.2.1092' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); define ( 'DB_UPDATE_VERSION', 1085 ); diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index c779b6aaf..f9e3b3f28 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -62,9 +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\]/", '[$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); @@ -165,7 +165,7 @@ 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. @@ -189,8 +189,6 @@ function bb2diaspora($Text,$preserve_nl = false) { function format_event_diaspora($ev) { -// require_once('include/bbcode.php'); - if(! ((is_array($ev)) && count($ev))) return ''; diff --git a/include/delivery.php b/include/delivery.php index 5d81228ee..7f45fb2fa 100644 --- a/include/delivery.php +++ b/include/delivery.php @@ -140,6 +140,8 @@ function delivery_run($argv, $argc){ $owner = $r[0]; + $walltowall = ((($top_level) && ($owner['id'] != $items[0]['contact-id'])) ? true : false); + $public_message = true; // fill this in with a single salmon slap if applicable diff --git a/include/notifier.php b/include/notifier.php index 8d2aa961c..0bb82b7bf 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -129,6 +129,7 @@ function notifier_run($argv, $argc){ logger('notifier: top level post'); $top_level = true; } + } $r = q("SELECT `contact`.*, `user`.`pubkey` AS `upubkey`, `user`.`prvkey` AS `uprvkey`, @@ -144,6 +145,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 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 @@ +data['mod-localtime'] = datetime_convert('UTC',$_POST['timezone'],$t,$bd_format); + +} + +function localtime_content(&$a) { + $t = $_REQUEST['time']; + if(! $t) + $t = 'now'; + + $o .= '

    ' . t('Time Conversion') . '

    '; + + $o .= '

    ' . t('Friendika provides this service for sharing events with other networks and friends in unknown timezones.') . '

    '; + + + if(x($a->data,'mod-localtime')) + $o .= '

    ' . sprintf( t('Converted localtime: %s'),$a->data['mod-localtime']) . '

    '; + + $o .= '

    ' . sprintf( t('UTC time: %s'), $t) . '

    '; + + $o .= '
    '; + + $o .= '

    ' . t('Please select your timezone:') . '

    '; + + $o .= select_timezone(); + + $o .= '
    '; + + return $o; + +} \ No newline at end of file diff --git a/mod/parse_url.php b/mod/parse_url.php index 9bb0bc464..b10d11c4b 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -119,6 +119,8 @@ function parse_url_content(&$a) { $text = '

    ' . $text . '

    '; } + $title = str_replace("\n",'',$title); + echo sprintf($template,$url,($title) ? $title : $url,$text); killme(); } -- cgit v1.2.3 From 260d652168bae3716f843f445ae696b59edf4db3 Mon Sep 17 00:00:00 2001 From: Friendika Date: Sun, 4 Sep 2011 05:07:25 -0700 Subject: scrape_url - use feed url if no name can be found --- include/Scrape.php | 16 ++++++++++++---- include/delivery.php | 3 ++- include/notifier.php | 17 ++++++++++++++++- 3 files changed, 30 insertions(+), 6 deletions(-) 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/delivery.php b/include/delivery.php index 7f45fb2fa..18ef09a31 100644 --- a/include/delivery.php +++ b/include/delivery.php @@ -419,7 +419,8 @@ function delivery_run($argv, $argc){ diaspora_send_relay($target_item,$owner,$contact); break; } - elseif($top_level) { + elseif(($top_level) && (! $walltowall)) { + // currently no workable solution for sending walltowall logger('delivery: diaspora status: ' . $contact['name']); diaspora_send_status($target_item,$owner,$contact); break; diff --git a/include/notifier.php b/include/notifier.php index 0bb82b7bf..6ac882c19 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -2,6 +2,20 @@ require_once("boot.php"); +/* + * This file was at one time responsible for doing all deliveries, but this caused + * big problems on shared hosting systems, where the process might get killed by the + * hosting provider and nothing would get delivered. + * It now only delivers one message under certain cases, and invokes a queued + * delivery mechanism (include/deliver.php) to deliver individual contacts at + * controlled intervals. + * This has a much better chance of surviving random processes getting killed + * by the hosting provider. + * A lot of this code is duplicated in include/deliver.php until we have time to go back + * and re-structure the delivery procedure based on the obstacles that have been thrown at + * us by hosting providers. + */ + function notifier_run($argv, $argc){ global $a, $db; @@ -594,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; } -- cgit v1.2.3 From e440353013aa1ca26a472b375bb1102348c7ead7 Mon Sep 17 00:00:00 2001 From: Friendika Date: Sun, 4 Sep 2011 05:41:11 -0700 Subject: truncate overflow text on acl selector items (3 themes) --- include/group.php | 4 ++-- view/theme/dispy/style.css | 2 +- view/theme/duepuntozero/style.css | 2 +- view/theme/loozah/style.css | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/group.php b/include/group.php index f21ce42e0..cd89739e1 100644 --- a/include/group.php +++ b/include/group.php @@ -154,7 +154,7 @@ $o .= <<< EOT "; diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index 78efb57ff..1e49b28ba 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 { 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..b467814ce 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 { 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/loozah/style.css b/view/theme/loozah/style.css index 781526eae..88baeb8fb 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 { font-size: 10px; margin: 0px; padding: 2px 0px 1px; overflow: hidden;} .acl-list-item a { font-size: 8px; display: block; -- cgit v1.2.3 From f6a43afb8da061ac13d778eb7fba6e2ea6dda6d7 Mon Sep 17 00:00:00 2001 From: Friendika Date: Sun, 4 Sep 2011 06:18:26 -0700 Subject: set max height of acl names to avoid wrap --- view/theme/dispy/style.css | 2 +- view/theme/duepuntozero/style.css | 2 +- view/theme/loozah/style.css | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index 1e49b28ba..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; overflow: hidden;} +.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 b467814ce..fb7380e02 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; overflow: hidden;} +.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/loozah/style.css b/view/theme/loozah/style.css index 88baeb8fb..50b780e97 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; overflow: hidden;} +.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; -- cgit v1.2.3 From 481853d2cc44a4bf6c540e72c741ff453305a925 Mon Sep 17 00:00:00 2001 From: Friendika Date: Sun, 4 Sep 2011 17:35:06 -0700 Subject: saved searches on network page --- boot.php | 4 ++-- database.sql | 8 +++++++ include/group.php | 2 +- include/text.php | 4 +++- mod/network.php | 46 ++++++++++++++++++++++++++++++++++++++- update.php | 14 ++++++++++-- view/theme/duepuntozero/style.css | 18 +++++++++++++++ view/theme/loozah/style.css | 19 ++++++++++++++++ 8 files changed, 108 insertions(+), 7 deletions(-) diff --git a/boot.php b/boot.php index f3b6af34e..7534046f2 100644 --- a/boot.php +++ b/boot.php @@ -7,9 +7,9 @@ require_once('include/text.php'); require_once("include/pgettext.php"); -define ( 'FRIENDIKA_VERSION', '2.2.1092' ); +define ( 'FRIENDIKA_VERSION', '2.2.1093' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); -define ( 'DB_UPDATE_VERSION', 1085 ); +define ( 'DB_UPDATE_VERSION', 1086 ); define ( 'EOL', "
    \r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/database.sql b/database.sql index 432ce7693..343d4c497 100644 --- a/database.sql +++ b/database.sql @@ -613,3 +613,11 @@ CREATE TABLE IF NOT EXISTS `deliverq` ( `item` INT NOT NULL , `contact` INT NOT NULL ) ENGINE = MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `search` ( +`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , +`uid` INT NOT NULL , +`term` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, +INDEX ( `uid` ), +INDEX ( `term` ) +) ENGINE = MyISAM DEFAULT CHARSET=utf8; diff --git a/include/group.php b/include/group.php index cd89739e1..8798adf5a 100644 --- a/include/group.php +++ b/include/group.php @@ -170,7 +170,7 @@ EOT; $selected = (($group_id == $rr['id']) ? ' class="group-selected" ' : ''); $o .= '
  • \r\n"; diff --git a/include/text.php b/include/text.php index 66447069e..e3d984a1f 100644 --- a/include/text.php +++ b/include/text.php @@ -602,12 +602,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 = '
    '; $o .= '
    '; $o .= ''; $o .= ''; + if($save) + $o .= ''; $o .= '
    '; return $o; }} diff --git a/mod/network.php b/mod/network.php index 54fb2a0a4..663814ab7 100644 --- a/mod/network.php +++ b/mod/network.php @@ -16,8 +16,26 @@ function network_init(&$a) { $search = ((x($_GET,'search')) ? escape_tags($_GET['search']) : ''); $srchurl = '/network' . ((x($_GET,'cid')) ? '?cid=' . $_GET['cid'] : '') . ((x($_GET,'star')) ? '?star=' . $_GET['star'] : ''); + 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'] .= ''; $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 .= '

    ' . t('Saved Searches') . '

    ' . "\r\n"; + $o .= '
    ' . "\r\n"; + } + + return $o; + } + + function network_content(&$a, $update = 0) { require_once('include/conversation.php'); diff --git a/update.php b/update.php index 80761cce4..3d7b31813 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ Date: Sun, 4 Sep 2011 19:58:03 -0700 Subject: bookmarks + bug #140 --- boot.php | 2 +- database.sql | 1 + include/items.php | 7 +++++++ .../tiny_mce/plugins/bbcode/editor_plugin_src.js | 2 ++ mod/item.php | 17 ++++++++++++++--- mod/network.php | 10 +++++++++- mod/parse_url.php | 8 ++++++-- update.php | 7 ++++++- view/theme/loozah/style.css | 3 ++- 9 files changed, 48 insertions(+), 9 deletions(-) diff --git a/boot.php b/boot.php index 7534046f2..a196ccadc 100644 --- a/boot.php +++ b/boot.php @@ -9,7 +9,7 @@ require_once("include/pgettext.php"); define ( 'FRIENDIKA_VERSION', '2.2.1093' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); -define ( 'DB_UPDATE_VERSION', 1086 ); +define ( 'DB_UPDATE_VERSION', 1087 ); define ( 'EOL', "
    \r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/database.sql b/database.sql index 343d4c497..ff339929e 100644 --- a/database.sql +++ b/database.sql @@ -206,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', diff --git a/include/items.php b/include/items.php index 6ded6f87c..facd8b2d4 100644 --- a/include/items.php +++ b/include/items.php @@ -378,6 +378,10 @@ function get_atom_elements($feed,$item) { if($dguid) $res['guid'] = unxmlify($dguid[0]['data']); + $bm = $item->get_item_tags(NAMESPACE_DFRN,'bookmark'); + if($bm) + $res['bookmark'] = ((unxmlify($bm[0]['data']) === 'true') ? 1 : 0); + /** * If there's a copy of the body content which is guaranteed to have survived mangling in transit, use it. @@ -733,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'])) : ''); @@ -1706,6 +1711,8 @@ function atom_entry($item,$type,$author,$owner,$comment = false) { if($item['extid']) $o .= '' . xmlify($item['extid']) . '' . "\r\n"; + if($item['bookmark']) + $o .= 'true' . "\r\n"; if($item['app']) $o .= '' . "\r\n"; 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: to [b] + rep(/(.*?)<\/a>/gi,"[bookmark=$1]$2[/bookmark]"); rep(/(.*?)<\/a>/gi,"[url=$1]$2[/url]"); rep(/(.*?)<\/span>/gi,"[size=$1]$2[/size]"); rep(/(.*?)<\/span>/gi,"[color=$1]$2[/color]"); @@ -119,6 +120,7 @@ rep(/\[\/i\]/gi,""); rep(/\[u\]/gi,""); rep(/\[\/u\]/gi,""); + rep(/\[bookmark=([^\]]+)\](.*?)\[\/bookmark\]/gi,"$2"); rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"$2"); rep(/\[url\](.*?)\[\/url\]/gi,"$1"); rep(/\[img=(.*?)x(.*?)\](.*?)\[\/img\]/gi,""); diff --git a/mod/item.php b/mod/item.php index 6ecca8f4a..b4ec7666f 100644 --- a/mod/item.php +++ b/mod/item.php @@ -332,6 +332,15 @@ function item_post(&$a) { } } + // embedded bookmark in post? convert to regular url and set bookmark flag + + $bookmark = 0; + if(preg_match_all("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/m",$body,$match)) { + $bookmark = 1; + $body = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/m",'[url=$1]$2[/url]',$body); + } + + /** * Fold multi-line [code] sequences */ @@ -509,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; /** @@ -551,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']), @@ -585,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", diff --git a/mod/network.php b/mod/network.php index 663814ab7..1434f5d31 100644 --- a/mod/network.php +++ b/mod/network.php @@ -14,7 +14,10 @@ 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", @@ -114,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; @@ -174,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'] . "; \r\n"; } @@ -195,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) { diff --git a/mod/parse_url.php b/mod/parse_url.php index b10d11c4b..79c336ddc 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -13,7 +13,7 @@ function parse_url_content(&$a) { $text = null; - $template = "
    %s%s
    "; + $template = "
    %s%s
    "; $arr = array('url' => $url, 'text' => ''); @@ -121,6 +121,10 @@ function parse_url_content(&$a) { $title = str_replace("\n",'',$title); - echo sprintf($template,$url,($title) ? $title : $url,$text); + $result = sprintf($template,$url,($title) ? $title : $url,$text); + + logger('parse_url: returns: ' . $result); + + echo $result; killme(); } diff --git a/update.php b/update.php index 3d7b31813..f94e78d72 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ Date: Sun, 4 Sep 2011 22:40:36 -0700 Subject: custom attags --- mod/crepair.php | 18 +++++++++++------- view/crepair.tpl | 4 ++++ view/theme/duepuntozero/style.css | 2 ++ view/theme/loozah/style.css | 2 ++ 4 files changed, 19 insertions(+), 7 deletions(-) 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/view/crepair.tpl b/view/crepair.tpl index 5870bac60..c73fd0fdf 100644 --- a/view/crepair.tpl +++ b/view/crepair.tpl @@ -7,6 +7,10 @@
    + + +
    +
    diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index d1b85bf7a..8a681a0e0 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -2435,6 +2435,7 @@ a.mail-list-link { } #crepair-nick-label, +#crepair-attag-label, #crepair-url-label, #crepair-request-label, #crepair-confirm-label, @@ -2446,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 41de9b3e4..d552d59c6 100644 --- a/view/theme/loozah/style.css +++ b/view/theme/loozah/style.css @@ -2403,6 +2403,7 @@ a.mail-list-link { } #crepair-nick-label, +#crepair-attag-label, #crepair-url-label, #crepair-request-label, #crepair-confirm-label, @@ -2414,6 +2415,7 @@ a.mail-list-link { } #crepair-nick, +#crepair-attag, #crepair-url, #crepair-request, #crepair-confirm, -- cgit v1.2.3 From c308ac49afa43131cb09558c9c1ebdb581167a46 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 5 Sep 2011 11:13:42 +0200 Subject: More icons --- images/icons/10/add.png | Bin 0 -> 2946 bytes images/icons/10/delete.png | Bin 0 -> 3018 bytes images/icons/10/edit.png | Bin 0 -> 3011 bytes images/icons/10/feed.png | Bin 0 -> 535 bytes images/icons/10/gear.png | Bin 0 -> 3043 bytes images/icons/10/group.png | Bin 0 -> 543 bytes images/icons/10/notify_off.png | Bin 0 -> 478 bytes images/icons/10/notify_on.png | Bin 0 -> 369 bytes images/icons/10/star.png | Bin 0 -> 3229 bytes images/icons/10/user.png | Bin 0 -> 534 bytes images/icons/16/add.png | Bin 0 -> 3068 bytes images/icons/16/delete.png | Bin 0 -> 3142 bytes images/icons/16/edit.png | Bin 0 -> 3129 bytes images/icons/16/feed.png | Bin 0 -> 828 bytes images/icons/16/gear.png | Bin 0 -> 3199 bytes images/icons/16/group.png | Bin 0 -> 852 bytes images/icons/16/notify_off.png | Bin 0 -> 835 bytes images/icons/16/notify_on.png | Bin 0 -> 542 bytes images/icons/16/star.png | Bin 0 -> 3498 bytes images/icons/16/user.png | Bin 0 -> 794 bytes images/icons/22/add.png | Bin 0 -> 3210 bytes images/icons/22/delete.png | Bin 0 -> 3294 bytes images/icons/22/edit.png | Bin 0 -> 3247 bytes images/icons/22/feed.png | Bin 0 -> 1136 bytes images/icons/22/gear.png | Bin 0 -> 3384 bytes images/icons/22/group.png | Bin 0 -> 1146 bytes images/icons/22/notify_off.png | Bin 0 -> 1093 bytes images/icons/22/notify_on.png | Bin 0 -> 721 bytes images/icons/22/star.png | Bin 0 -> 3780 bytes images/icons/22/user.png | Bin 0 -> 1084 bytes images/icons/48/add.png | Bin 0 -> 3944 bytes images/icons/48/delete.png | Bin 0 -> 3997 bytes images/icons/48/edit.png | Bin 0 -> 3948 bytes images/icons/48/feed.png | Bin 0 -> 2692 bytes images/icons/48/gear.png | Bin 0 -> 4225 bytes images/icons/48/group.png | Bin 0 -> 2392 bytes images/icons/48/notify_off.png | Bin 0 -> 2147 bytes images/icons/48/notify_on.png | Bin 0 -> 1506 bytes images/icons/48/star.png | Bin 0 -> 4776 bytes images/icons/48/user.png | Bin 0 -> 2269 bytes images/icons/add.png | Bin 0 -> 8685 bytes images/icons/delete.png | Bin 0 -> 7905 bytes images/icons/edit.png | Bin 0 -> 8297 bytes images/icons/feed.png | Bin 0 -> 9007 bytes images/icons/gear.png | Bin 0 -> 10744 bytes images/icons/gear_22.png | Bin 886 -> 0 bytes images/icons/group.png | Bin 0 -> 7268 bytes images/icons/make.sh | 14 ++++++++++++++ images/icons/notify_off.png | Bin 0 -> 4340 bytes images/icons/notify_off_22.png | Bin 884 -> 0 bytes images/icons/notify_on.png | Bin 0 -> 3671 bytes images/icons/notify_on_22.png | Bin 561 -> 0 bytes images/icons/star.png | Bin 0 -> 9307 bytes images/icons/user.png | Bin 0 -> 6921 bytes 54 files changed, 14 insertions(+) create mode 100644 images/icons/10/add.png create mode 100644 images/icons/10/delete.png create mode 100644 images/icons/10/edit.png create mode 100644 images/icons/10/feed.png create mode 100644 images/icons/10/gear.png create mode 100644 images/icons/10/group.png create mode 100644 images/icons/10/notify_off.png create mode 100644 images/icons/10/notify_on.png create mode 100644 images/icons/10/star.png create mode 100644 images/icons/10/user.png create mode 100644 images/icons/16/add.png create mode 100644 images/icons/16/delete.png create mode 100644 images/icons/16/edit.png create mode 100644 images/icons/16/feed.png create mode 100644 images/icons/16/gear.png create mode 100644 images/icons/16/group.png create mode 100644 images/icons/16/notify_off.png create mode 100644 images/icons/16/notify_on.png create mode 100644 images/icons/16/star.png create mode 100644 images/icons/16/user.png create mode 100644 images/icons/22/add.png create mode 100644 images/icons/22/delete.png create mode 100644 images/icons/22/edit.png create mode 100644 images/icons/22/feed.png create mode 100644 images/icons/22/gear.png create mode 100644 images/icons/22/group.png create mode 100644 images/icons/22/notify_off.png create mode 100644 images/icons/22/notify_on.png create mode 100644 images/icons/22/star.png create mode 100644 images/icons/22/user.png create mode 100644 images/icons/48/add.png create mode 100644 images/icons/48/delete.png create mode 100644 images/icons/48/edit.png create mode 100644 images/icons/48/feed.png create mode 100644 images/icons/48/gear.png create mode 100644 images/icons/48/group.png create mode 100644 images/icons/48/notify_off.png create mode 100644 images/icons/48/notify_on.png create mode 100644 images/icons/48/star.png create mode 100644 images/icons/48/user.png create mode 100644 images/icons/add.png create mode 100644 images/icons/delete.png create mode 100644 images/icons/edit.png create mode 100644 images/icons/feed.png create mode 100644 images/icons/gear.png delete mode 100644 images/icons/gear_22.png create mode 100644 images/icons/group.png create mode 100644 images/icons/make.sh create mode 100644 images/icons/notify_off.png delete mode 100644 images/icons/notify_off_22.png create mode 100644 images/icons/notify_on.png delete mode 100644 images/icons/notify_on_22.png create mode 100644 images/icons/star.png create mode 100644 images/icons/user.png diff --git a/images/icons/10/add.png b/images/icons/10/add.png new file mode 100644 index 000000000..f036ac73e Binary files /dev/null and b/images/icons/10/add.png differ diff --git a/images/icons/10/delete.png b/images/icons/10/delete.png new file mode 100644 index 000000000..f6bf31da4 Binary files /dev/null and b/images/icons/10/delete.png differ diff --git a/images/icons/10/edit.png b/images/icons/10/edit.png new file mode 100644 index 000000000..a6af619e2 Binary files /dev/null and b/images/icons/10/edit.png differ diff --git a/images/icons/10/feed.png b/images/icons/10/feed.png new file mode 100644 index 000000000..0e7d02c9b Binary files /dev/null and b/images/icons/10/feed.png differ diff --git a/images/icons/10/gear.png b/images/icons/10/gear.png new file mode 100644 index 000000000..df6f87af5 Binary files /dev/null and b/images/icons/10/gear.png differ diff --git a/images/icons/10/group.png b/images/icons/10/group.png new file mode 100644 index 000000000..23172a027 Binary files /dev/null and b/images/icons/10/group.png differ diff --git a/images/icons/10/notify_off.png b/images/icons/10/notify_off.png new file mode 100644 index 000000000..c499de01b Binary files /dev/null and b/images/icons/10/notify_off.png differ diff --git a/images/icons/10/notify_on.png b/images/icons/10/notify_on.png new file mode 100644 index 000000000..5204e097c Binary files /dev/null and b/images/icons/10/notify_on.png differ diff --git a/images/icons/10/star.png b/images/icons/10/star.png new file mode 100644 index 000000000..185761177 Binary files /dev/null and b/images/icons/10/star.png differ diff --git a/images/icons/10/user.png b/images/icons/10/user.png new file mode 100644 index 000000000..419661be6 Binary files /dev/null and b/images/icons/10/user.png differ diff --git a/images/icons/16/add.png b/images/icons/16/add.png new file mode 100644 index 000000000..7ca375325 Binary files /dev/null and b/images/icons/16/add.png differ diff --git a/images/icons/16/delete.png b/images/icons/16/delete.png new file mode 100644 index 000000000..ada2535fc Binary files /dev/null and b/images/icons/16/delete.png differ diff --git a/images/icons/16/edit.png b/images/icons/16/edit.png new file mode 100644 index 000000000..747f5e4e7 Binary files /dev/null and b/images/icons/16/edit.png differ diff --git a/images/icons/16/feed.png b/images/icons/16/feed.png new file mode 100644 index 000000000..9ac7c6677 Binary files /dev/null and b/images/icons/16/feed.png differ diff --git a/images/icons/16/gear.png b/images/icons/16/gear.png new file mode 100644 index 000000000..5af85390f Binary files /dev/null and b/images/icons/16/gear.png differ diff --git a/images/icons/16/group.png b/images/icons/16/group.png new file mode 100644 index 000000000..bab4bcd18 Binary files /dev/null and b/images/icons/16/group.png differ diff --git a/images/icons/16/notify_off.png b/images/icons/16/notify_off.png new file mode 100644 index 000000000..f11aa4bde Binary files /dev/null and b/images/icons/16/notify_off.png differ diff --git a/images/icons/16/notify_on.png b/images/icons/16/notify_on.png new file mode 100644 index 000000000..6e91fd995 Binary files /dev/null and b/images/icons/16/notify_on.png differ diff --git a/images/icons/16/star.png b/images/icons/16/star.png new file mode 100644 index 000000000..3130be6f0 Binary files /dev/null and b/images/icons/16/star.png differ diff --git a/images/icons/16/user.png b/images/icons/16/user.png new file mode 100644 index 000000000..df83bc27d Binary files /dev/null and b/images/icons/16/user.png differ diff --git a/images/icons/22/add.png b/images/icons/22/add.png new file mode 100644 index 000000000..ee83da024 Binary files /dev/null and b/images/icons/22/add.png differ diff --git a/images/icons/22/delete.png b/images/icons/22/delete.png new file mode 100644 index 000000000..15713471b Binary files /dev/null and b/images/icons/22/delete.png differ diff --git a/images/icons/22/edit.png b/images/icons/22/edit.png new file mode 100644 index 000000000..6e6bb4f73 Binary files /dev/null and b/images/icons/22/edit.png differ diff --git a/images/icons/22/feed.png b/images/icons/22/feed.png new file mode 100644 index 000000000..15094ce89 Binary files /dev/null and b/images/icons/22/feed.png differ diff --git a/images/icons/22/gear.png b/images/icons/22/gear.png new file mode 100644 index 000000000..16bcf77dd Binary files /dev/null and b/images/icons/22/gear.png differ diff --git a/images/icons/22/group.png b/images/icons/22/group.png new file mode 100644 index 000000000..0505432ca Binary files /dev/null and b/images/icons/22/group.png differ diff --git a/images/icons/22/notify_off.png b/images/icons/22/notify_off.png new file mode 100644 index 000000000..f2200bb60 Binary files /dev/null and b/images/icons/22/notify_off.png differ diff --git a/images/icons/22/notify_on.png b/images/icons/22/notify_on.png new file mode 100644 index 000000000..6b3d7fd08 Binary files /dev/null and b/images/icons/22/notify_on.png differ diff --git a/images/icons/22/star.png b/images/icons/22/star.png new file mode 100644 index 000000000..b8829cbfd Binary files /dev/null and b/images/icons/22/star.png differ diff --git a/images/icons/22/user.png b/images/icons/22/user.png new file mode 100644 index 000000000..fad2bee97 Binary files /dev/null and b/images/icons/22/user.png differ diff --git a/images/icons/48/add.png b/images/icons/48/add.png new file mode 100644 index 000000000..61a0b0982 Binary files /dev/null and b/images/icons/48/add.png differ diff --git a/images/icons/48/delete.png b/images/icons/48/delete.png new file mode 100644 index 000000000..1be4c9a21 Binary files /dev/null and b/images/icons/48/delete.png differ diff --git a/images/icons/48/edit.png b/images/icons/48/edit.png new file mode 100644 index 000000000..d09214ec9 Binary files /dev/null and b/images/icons/48/edit.png differ diff --git a/images/icons/48/feed.png b/images/icons/48/feed.png new file mode 100644 index 000000000..9730b4738 Binary files /dev/null and b/images/icons/48/feed.png differ diff --git a/images/icons/48/gear.png b/images/icons/48/gear.png new file mode 100644 index 000000000..16434390d Binary files /dev/null and b/images/icons/48/gear.png differ diff --git a/images/icons/48/group.png b/images/icons/48/group.png new file mode 100644 index 000000000..e624bbfb2 Binary files /dev/null and b/images/icons/48/group.png differ diff --git a/images/icons/48/notify_off.png b/images/icons/48/notify_off.png new file mode 100644 index 000000000..0a8854cfe Binary files /dev/null and b/images/icons/48/notify_off.png differ diff --git a/images/icons/48/notify_on.png b/images/icons/48/notify_on.png new file mode 100644 index 000000000..8440018a6 Binary files /dev/null and b/images/icons/48/notify_on.png differ diff --git a/images/icons/48/star.png b/images/icons/48/star.png new file mode 100644 index 000000000..4b2816d15 Binary files /dev/null and b/images/icons/48/star.png differ diff --git a/images/icons/48/user.png b/images/icons/48/user.png new file mode 100644 index 000000000..f73c591e6 Binary files /dev/null and b/images/icons/48/user.png differ diff --git a/images/icons/add.png b/images/icons/add.png new file mode 100644 index 000000000..78497fbc9 Binary files /dev/null and b/images/icons/add.png differ diff --git a/images/icons/delete.png b/images/icons/delete.png new file mode 100644 index 000000000..f0cae5154 Binary files /dev/null and b/images/icons/delete.png differ diff --git a/images/icons/edit.png b/images/icons/edit.png new file mode 100644 index 000000000..aeaf835fe Binary files /dev/null and b/images/icons/edit.png differ diff --git a/images/icons/feed.png b/images/icons/feed.png new file mode 100644 index 000000000..6894257e9 Binary files /dev/null and b/images/icons/feed.png differ diff --git a/images/icons/gear.png b/images/icons/gear.png new file mode 100644 index 000000000..02847ef9d Binary files /dev/null and b/images/icons/gear.png differ diff --git a/images/icons/gear_22.png b/images/icons/gear_22.png deleted file mode 100644 index e363de00d..000000000 Binary files a/images/icons/gear_22.png and /dev/null differ diff --git a/images/icons/group.png b/images/icons/group.png new file mode 100644 index 000000000..de0dc7901 Binary files /dev/null and b/images/icons/group.png 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/notify_off.png b/images/icons/notify_off.png new file mode 100644 index 000000000..e6eac16b8 Binary files /dev/null and b/images/icons/notify_off.png differ diff --git a/images/icons/notify_off_22.png b/images/icons/notify_off_22.png deleted file mode 100644 index 0520af327..000000000 Binary files a/images/icons/notify_off_22.png and /dev/null differ diff --git a/images/icons/notify_on.png b/images/icons/notify_on.png new file mode 100644 index 000000000..b9e07d24e Binary files /dev/null and b/images/icons/notify_on.png differ diff --git a/images/icons/notify_on_22.png b/images/icons/notify_on_22.png deleted file mode 100644 index a8b305245..000000000 Binary files a/images/icons/notify_on_22.png and /dev/null differ diff --git a/images/icons/star.png b/images/icons/star.png new file mode 100644 index 000000000..4a2236c9b Binary files /dev/null and b/images/icons/star.png differ diff --git a/images/icons/user.png b/images/icons/user.png new file mode 100644 index 000000000..f1132b1ae Binary files /dev/null and b/images/icons/user.png differ -- cgit v1.2.3 From ab5bda526e9fffcfeecd384332372531c18c49dc Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 5 Sep 2011 11:14:43 +0200 Subject: move icons style in new file --- view/theme/quattro/icons.less | 37 ++++++++++++++ view/theme/quattro/quattro.less | 47 +++++++++--------- view/theme/quattro/style.css | 104 +++++++++++++++++++++++++++++++++------- view/theme/quattro/style.less | 1 + 4 files changed, 146 insertions(+), 43 deletions(-) create mode 100644 view/theme/quattro/icons.less 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/quattro.less b/view/theme/quattro/quattro.less index d21c3c182..c7cbe7ebb 100644 --- a/view/theme/quattro/quattro.less +++ b/view/theme/quattro/quattro.less @@ -32,33 +32,13 @@ a:hover {color: @LinkHover; 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); - } - +.tool { + height: auto; overflow: auto; + .label { float: left;} + .icon { float: right; } } - /* header */ header { position: fixed; left: 43%; right: 43%; top: 0px; @@ -156,7 +136,7 @@ nav { .menu-popup{ right: 0px; left: auto; } } - #nav-notifications-linkmenu.selected .icon.s22.notify { background-image: url("../../../images/icons/notify_on_22.png") } + #nav-notifications-linkmenu.selected .icon.s22.notify { background-image: url("../../../images/icons/22/notify_on.png") } #nav-apps-link.selected { background-color: @NavbarSelectedBg; } } @@ -232,6 +212,20 @@ aside { } +#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; + } +} + @@ -241,3 +235,6 @@ section { width: 800px; padding:0px 20px 0px 10px; } + + + diff --git a/view/theme/quattro/style.css b/view/theme/quattro/style.css index 28e6f5fa1..2b950c3ef 100644 --- a/view/theme/quattro/style.css +++ b/view/theme/quattro/style.css @@ -1,6 +1,63 @@ /** * Fabio Comuni **/ +/* 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; @@ -28,25 +85,15 @@ 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; -} -.icon.s22 { - width: 22px; - height: 22px; - padding: 1px; +.tool { + height: auto; + overflow: auto; } -.icon.s22.notify { - background-image: url("../../../images/icons/notify_off_22.png"); +.tool .label { + float: left; } -.icon.s22.gear { - background-image: url("../../../images/icons/gear_22.png"); +.tool .icon { + float: right; } /* header */ header { @@ -186,7 +233,7 @@ 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; @@ -296,6 +343,27 @@ 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; diff --git a/view/theme/quattro/style.less b/view/theme/quattro/style.less index d1c677b22..c3dbae777 100644 --- a/view/theme/quattro/style.less +++ b/view/theme/quattro/style.less @@ -6,6 +6,7 @@ // $ lessc style.less > style.css @import "colors"; +@import "icons"; @import "quattro"; -- cgit v1.2.3 From 20ca4512000e80386fe6f9b3fd85864bc0e91627 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 5 Sep 2011 11:15:30 +0200 Subject: move js to js folder --- include/acl.js | 240 -------------- include/ajaxupload.js | 695 ---------------------------------------- include/country.js | 438 ------------------------- include/jquery.htmlstream.js | 157 --------- include/jquery.js | 154 --------- include/main.js | 426 ------------------------ js/acl.js | 240 ++++++++++++++ js/ajaxupload.js | 695 ++++++++++++++++++++++++++++++++++++++++ js/country.js | 438 +++++++++++++++++++++++++ js/jquery.htmlstream.js | 157 +++++++++ js/jquery.js | 154 +++++++++ js/main.js | 426 ++++++++++++++++++++++++ view/admin_remoteupdate.tpl | 2 +- view/head.tpl | 8 +- view/jot-header.tpl | 2 +- view/msg-header.tpl | 2 +- view/theme/dispy/jot-header.tpl | 2 +- 17 files changed, 2119 insertions(+), 2117 deletions(-) delete mode 100644 include/acl.js delete mode 100644 include/ajaxupload.js delete mode 100644 include/country.js delete mode 100644 include/jquery.htmlstream.js delete mode 100644 include/jquery.js delete mode 100644 include/main.js create mode 100644 js/acl.js create mode 100644 js/ajaxupload.js create mode 100644 js/country.js create mode 100644 js/jquery.htmlstream.js create mode 100644 js/jquery.js create mode 100644 js/main.js diff --git a/include/acl.js b/include/acl.js deleted file mode 100644 index 82b631ee9..000000000 --- a/include/acl.js +++ /dev/null @@ -1,240 +0,0 @@ -function ACL(backend_url, preset){ - that = this; - - that.url = backend_url; - - that.kp_timer = null; - - if (preset==undefined) preset = []; - that.allow_cid = (preset[0] || []); - that.allow_gid = (preset[1] || []); - that.deny_cid = (preset[2] || []); - that.deny_gid = (preset[3] || []); - that.group_uids = []; - that.nw = 4; //items per row. should be calulated from #acl-list.width - - that.list_content = $("#acl-list-content"); - that.item_tpl = unescape($(".acl-list-item[rel=acl-template]").html()); - that.showall = $("#acl-showall"); - - if (preset.length==0) that.showall.addClass("selected"); - - /*events*/ - that.showall.click(that.on_showall); - $(".acl-button-show").live('click', that.on_button_show); - $(".acl-button-hide").live('click', that.on_button_hide); - $("#acl-search").keypress(that.on_search); - $("#acl-wrapper").parents("form").submit(that.on_submit); - - /* startup! */ - that.get(0,100); -} - -ACL.prototype.on_submit = function(){ - aclfileds = $("#acl-fields").html(""); - $(that.allow_gid).each(function(i,v){ - aclfileds.append(""); - }); - $(that.allow_cid).each(function(i,v){ - aclfileds.append(""); - }); - $(that.deny_gid).each(function(i,v){ - aclfileds.append(""); - }); - $(that.deny_cid).each(function(i,v){ - aclfileds.append(""); - }); -} - -ACL.prototype.search = function(){ - var srcstr = $("#acl-search").val(); - that.list_content.html(""); - that.get(0,100, srcstr); -} - -ACL.prototype.on_search = function(event){ - if (that.kp_timer) clearTimeout(that.kp_timer); - that.kp_timer = setTimeout( that.search, 1000); -} - -ACL.prototype.on_showall = function(event){ - event.stopPropagation(); - if (that.showall.hasClass("selected")){ - return false; - } - that.showall.addClass("selected"); - - that.allow_cid = []; - that.allow_gid = []; - that.deny_cid = []; - that.deny_gid = []; - - that.updateview(); - - return false; -} - -ACL.prototype.on_button_show = function(event){ - event.stopPropagation(); - - /*that.showall.removeClass("selected"); - $(this).siblings(".acl-button-hide").removeClass("selected"); - $(this).toggleClass("selected");*/ - - that.set_allow($(this).parent().attr('id')); - - return false; -} -ACL.prototype.on_button_hide = function(event){ - event.stopPropagation(); - - /*that.showall.removeClass("selected"); - $(this).siblings(".acl-button-show").removeClass("selected"); - $(this).toggleClass("selected");*/ - - that.set_deny($(this).parent().attr('id')); - - return false; -} - -ACL.prototype.set_allow = function(itemid){ - type = itemid[0]; - id = parseInt(itemid.substr(1)); - switch(type){ - case "g": - if (that.allow_gid.indexOf(id)<0){ - that.allow_gid.push(id) - }else { - that.allow_gid.remove(id); - } - if (that.deny_gid.indexOf(id)>=0) that.deny_gid.remove(id); - break; - case "c": - if (that.allow_cid.indexOf(id)<0){ - that.allow_cid.push(id) - } else { - that.allow_cid.remove(id); - } - if (that.deny_cid.indexOf(id)>=0) that.deny_cid.remove(id); - break; - } - that.updateview(); -} - -ACL.prototype.set_deny = function(itemid){ - type = itemid[0]; - id = parseInt(itemid.substr(1)); - switch(type){ - case "g": - if (that.deny_gid.indexOf(id)<0){ - that.deny_gid.push(id) - } else { - that.deny_gid.remove(id); - } - if (that.allow_gid.indexOf(id)>=0) that.allow_gid.remove(id); - break; - case "c": - if (that.deny_cid.indexOf(id)<0){ - that.deny_cid.push(id) - } else { - that.deny_cid.remove(id); - } - if (that.allow_cid.indexOf(id)>=0) that.allow_cid.remove(id); - break; - } - that.updateview(); -} - -ACL.prototype.updateview = function(){ - if (that.allow_gid.length==0 && that.allow_cid.length==0 && - that.deny_gid.length==0 && that.deny_cid.length==0){ - that.showall.addClass("selected"); - /* jot acl */ - $('#jot-perms-icon').removeClass('lock').addClass('unlock'); - $('#jot-public').show(); - $('.profile-jot-net input').attr('disabled', false); - if(editor != false) { - $('#profile-jot-desc').html(ispublic); - } - - } else { - that.showall.removeClass("selected"); - /* jot acl */ - $('#jot-perms-icon').removeClass('unlock').addClass('lock'); - $('#jot-public').hide(); - $('.profile-jot-net input').attr('disabled', 'disabled'); - $('#profile-jot-desc').html(' '); - } - - $("#acl-list-content .acl-list-item").each(function(){ - itemid = $(this).attr('id'); - type = itemid[0]; - id = parseInt(itemid.substr(1)); - - btshow = $(this).children(".acl-button-show").removeClass("selected"); - bthide = $(this).children(".acl-button-hide").removeClass("selected"); - - switch(type){ - case "g": - var uclass = ""; - if (that.allow_gid.indexOf(id)>=0){ - btshow.addClass("selected"); - bthide.removeClass("selected"); - uclass="groupshow"; - } - if (that.deny_gid.indexOf(id)>=0){ - btshow.removeClass("selected"); - bthide.addClass("selected"); - uclass="grouphide"; - } - - $(that.group_uids[id]).each(function(i,v){ - $("#c"+v).removeClass("groupshow grouphide").addClass(uclass); - }); - - break; - case "c": - if (that.allow_cid.indexOf(id)>=0){ - btshow.addClass("selected"); - bthide.removeClass("selected"); - } - if (that.deny_cid.indexOf(id)>=0){ - btshow.removeClass("selected"); - bthide.addClass("selected"); - } - } - - }); - -} - - -ACL.prototype.get = function(start,count, search){ - var postdata = { - start:start, - count:count, - search:search, - } - - $.ajax({ - type:'POST', - url: that.url, - data: postdata, - dataType: 'json', - success:that.populate - }); -} - -ACL.prototype.populate = function(data){ - var height = Math.ceil(data.tot / that.nw) * 42; - that.list_content.height(height); - $(data.items).each(function(){ - html = "
    "+that.item_tpl+"
    "; - html = html.format( this.photo, this.name, this.type, this.id, '', this.network ); - if (this.uids!=undefined) that.group_uids[this.id] = this.uids; - //console.log(html); - that.list_content.append(html); - }); - that.updateview(); -} - diff --git a/include/ajaxupload.js b/include/ajaxupload.js deleted file mode 100644 index 67c4a56fb..000000000 --- a/include/ajaxupload.js +++ /dev/null @@ -1,695 +0,0 @@ -/** - * AJAX Upload ( http://valums.com/ajax-upload/ ) - * Copyright (c) Andris Valums - * Licensed under the MIT license ( http://valums.com/mit-license/ ) - * Thanks to Gary Haran, David Mark, Corey Burns and others for contributions. - */ - -(function () { - /* global window */ - /* jslint browser: true, devel: true, undef: true, nomen: true, bitwise: true, regexp: true, newcap: true, immed: true */ - - /** - * Wrapper for FireBug's console.log - */ - function log(){ - if (typeof(console) != 'undefined' && typeof(console.log) == 'function'){ - Array.prototype.unshift.call(arguments, '[Ajax Upload]'); - console.log( Array.prototype.join.call(arguments, ' ')); - } - } - - /** - * Attaches event to a dom element. - * @param {Element} el - * @param type event name - * @param fn callback This refers to the passed element - */ - function addEvent(el, type, fn){ - if (el.addEventListener) { - el.addEventListener(type, fn, false); - } else if (el.attachEvent) { - el.attachEvent('on' + type, function(){ - fn.call(el); - }); - } else { - throw new Error('not supported or DOM not loaded'); - } - } - - /** - * Attaches resize event to a window, limiting - * number of event fired. Fires only when encounteres - * delay of 100 after series of events. - * - * Some browsers fire event multiple times when resizing - * http://www.quirksmode.org/dom/events/resize.html - * - * @param fn callback This refers to the passed element - */ - function addResizeEvent(fn){ - var timeout; - - addEvent(window, 'resize', function(){ - if (timeout){ - clearTimeout(timeout); - } - timeout = setTimeout(fn, 100); - }); - } - - // Needs more testing, will be rewriten for next version - // getOffset function copied from jQuery lib (http://jquery.com/) - if (document.documentElement.getBoundingClientRect){ - // Get Offset using getBoundingClientRect - // http://ejohn.org/blog/getboundingclientrect-is-awesome/ - var getOffset = function(el){ - var box = el.getBoundingClientRect(); - var doc = el.ownerDocument; - var body = doc.body; - var docElem = doc.documentElement; // for ie - var clientTop = docElem.clientTop || body.clientTop || 0; - var clientLeft = docElem.clientLeft || body.clientLeft || 0; - - // In Internet Explorer 7 getBoundingClientRect property is treated as physical, - // while others are logical. Make all logical, like in IE8. - var zoom = 1; - if (body.getBoundingClientRect) { - var bound = body.getBoundingClientRect(); - zoom = (bound.right - bound.left) / body.clientWidth; - } - - if (zoom > 1) { - clientTop = 0; - clientLeft = 0; - } - - var top = box.top / zoom + (window.pageYOffset || docElem && docElem.scrollTop / zoom || body.scrollTop / zoom) - clientTop, left = box.left / zoom + (window.pageXOffset || docElem && docElem.scrollLeft / zoom || body.scrollLeft / zoom) - clientLeft; - - return { - top: top, - left: left - }; - }; - } else { - // Get offset adding all offsets - var getOffset = function(el){ - var top = 0, left = 0; - do { - top += el.offsetTop || 0; - left += el.offsetLeft || 0; - el = el.offsetParent; - } while (el); - - return { - left: left, - top: top - }; - }; - } - - /** - * Returns left, top, right and bottom properties describing the border-box, - * in pixels, with the top-left relative to the body - * @param {Element} el - * @return {Object} Contains left, top, right,bottom - */ - function getBox(el){ - var left, right, top, bottom; - var offset = getOffset(el); - left = offset.left; - top = offset.top; - - right = left + el.offsetWidth; - bottom = top + el.offsetHeight; - - return { - left: left, - right: right, - top: top, - bottom: bottom - }; - } - - /** - * Helper that takes object literal - * and add all properties to element.style - * @param {Element} el - * @param {Object} styles - */ - function addStyles(el, styles){ - for (var name in styles) { - if (styles.hasOwnProperty(name)) { - el.style[name] = styles[name]; - } - } - } - - /** - * Function places an absolutely positioned - * element on top of the specified element - * copying position and dimentions. - * @param {Element} from - * @param {Element} to - */ - function copyLayout(from, to){ - var box = getBox(from); - - addStyles(to, { - position: 'absolute', - left : box.left + 'px', - top : box.top + 'px', - width : from.offsetWidth + 'px', - height : from.offsetHeight + 'px' - }); - to.title = from.title; - - } - - /** - * Creates and returns element from html chunk - * Uses innerHTML to create an element - */ - var toElement = (function(){ - var div = document.createElement('div'); - return function(html){ - div.innerHTML = html; - var el = div.firstChild; - return div.removeChild(el); - }; - })(); - - /** - * Function generates unique id - * @return unique id - */ - var getUID = (function(){ - var id = 0; - return function(){ - return 'ValumsAjaxUpload' + id++; - }; - })(); - - /** - * Get file name from path - * @param {String} file path to file - * @return filename - */ - function fileFromPath(file){ - return file.replace(/.*(\/|\\)/, ""); - } - - /** - * Get file extension lowercase - * @param {String} file name - * @return file extenstion - */ - function getExt(file){ - return (-1 !== file.indexOf('.')) ? file.replace(/.*[.]/, '') : ''; - } - - function hasClass(el, name){ - var re = new RegExp('\\b' + name + '\\b'); - return re.test(el.className); - } - function addClass(el, name){ - if ( ! hasClass(el, name)){ - el.className += ' ' + name; - } - } - function removeClass(el, name){ - var re = new RegExp('\\b' + name + '\\b'); - el.className = el.className.replace(re, ''); - } - - function removeNode(el){ - el.parentNode.removeChild(el); - } - - /** - * Easy styling and uploading - * @constructor - * @param button An element you want convert to - * upload button. Tested dimentions up to 500x500px - * @param {Object} options See defaults below. - */ - window.AjaxUpload = function(button, options){ - this._settings = { - // Location of the server-side upload script - action: 'upload.php', - // File upload name - name: 'userfile', - // Additional data to send - data: {}, - // Submit file as soon as it's selected - autoSubmit: true, - // The type of data that you're expecting back from the server. - // html and xml are detected automatically. - // Only useful when you are using json data as a response. - // Set to "json" in that case. - responseType: false, - // Class applied to button when mouse is hovered - hoverClass: 'hover', - // Class applied to button when button is focused - focusClass: 'focus', - // Class applied to button when AU is disabled - disabledClass: 'disabled', - // When user selects a file, useful with autoSubmit disabled - // You can return false to cancel upload - onChange: function(file, extension){ - }, - // Callback to fire before file is uploaded - // You can return false to cancel upload - onSubmit: function(file, extension){ - }, - // Fired when file upload is completed - // WARNING! DO NOT USE "FALSE" STRING AS A RESPONSE! - onComplete: function(file, response){ - } - }; - - // Merge the users options with our defaults - for (var i in options) { - if (options.hasOwnProperty(i)){ - this._settings[i] = options[i]; - } - } - - // button isn't necessary a dom element - if (button.jquery){ - // jQuery object was passed - button = button[0]; - } else if (typeof button == "string") { - if (/^#.*/.test(button)){ - // If jQuery user passes #elementId don't break it - button = button.slice(1); - } - - button = document.getElementById(button); - } - - if ( ! button || button.nodeType !== 1){ - throw new Error("Please make sure that you're passing a valid element"); - } - - if ( button.nodeName.toUpperCase() == 'A'){ - // disable link - addEvent(button, 'click', function(e){ - if (e && e.preventDefault){ - e.preventDefault(); - } else if (window.event){ - window.event.returnValue = false; - } - }); - } - - // DOM element - this._button = button; - // DOM element - this._input = null; - // If disabled clicking on button won't do anything - this._disabled = false; - - // if the button was disabled before refresh if will remain - // disabled in FireFox, let's fix it - this.enable(); - - this._rerouteClicks(); - }; - - // assigning methods to our class - AjaxUpload.prototype = { - setData: function(data){ - this._settings.data = data; - }, - disable: function(){ - addClass(this._button, this._settings.disabledClass); - this._disabled = true; - - var nodeName = this._button.nodeName.toUpperCase(); - if (nodeName == 'INPUT' || nodeName == 'BUTTON'){ - this._button.setAttribute('disabled', 'disabled'); - } - - // hide input - if (this._input){ - // We use visibility instead of display to fix problem with Safari 4 - // The problem is that the value of input doesn't change if it - // has display none when user selects a file - this._input.parentNode.style.visibility = 'hidden'; - } - }, - enable: function(){ - removeClass(this._button, this._settings.disabledClass); - this._button.removeAttribute('disabled'); - this._disabled = false; - - }, - /** - * Creates invisible file input - * that will hover above the button - *
    - */ - _createInput: function(){ - var self = this; - - var input = document.createElement("input"); - input.setAttribute('type', 'file'); - input.setAttribute('name', this._settings.name); - - addStyles(input, { - 'position' : 'absolute', - // in Opera only 'browse' button - // is clickable and it is located at - // the right side of the input - 'right' : 0, - 'margin' : 0, - 'padding' : 0, - 'fontSize' : '480px', - // in Firefox if font-family is set to - // 'inherit' the input doesn't work - 'fontFamily' : 'sans-serif', - 'cursor' : 'pointer' - }); - - var div = document.createElement("div"); - addStyles(div, { - 'display' : 'block', - 'position' : 'absolute', - 'overflow' : 'hidden', - 'margin' : 0, - 'padding' : 0, - 'opacity' : 0, - // Make sure browse button is in the right side - // in Internet Explorer - 'direction' : 'ltr', - //Max zIndex supported by Opera 9.0-9.2 - 'zIndex': 2147483583, - 'cursor' : 'pointer' - - }); - - // Make sure that element opacity exists. - // Otherwise use IE filter - if ( div.style.opacity !== "0") { - if (typeof(div.filters) == 'undefined'){ - throw new Error('Opacity not supported by the browser'); - } - div.style.filter = "alpha(opacity=0)"; - } - - addEvent(input, 'change', function(){ - - if ( ! input || input.value === ''){ - return; - } - - // Get filename from input, required - // as some browsers have path instead of it - var file = fileFromPath(input.value); - - if (false === self._settings.onChange.call(self, file, getExt(file))){ - self._clearInput(); - return; - } - - // Submit form when value is changed - if (self._settings.autoSubmit) { - self.submit(); - } - }); - - addEvent(input, 'mouseover', function(){ - addClass(self._button, self._settings.hoverClass); - }); - - addEvent(input, 'mouseout', function(){ - removeClass(self._button, self._settings.hoverClass); - removeClass(self._button, self._settings.focusClass); - - // We use visibility instead of display to fix problem with Safari 4 - // The problem is that the value of input doesn't change if it - // has display none when user selects a file - input.parentNode.style.visibility = 'hidden'; - - }); - - addEvent(input, 'focus', function(){ - addClass(self._button, self._settings.focusClass); - }); - - addEvent(input, 'blur', function(){ - removeClass(self._button, self._settings.focusClass); - }); - - div.appendChild(input); - document.body.appendChild(div); - - this._input = input; - }, - _clearInput : function(){ - if (!this._input){ - return; - } - - // this._input.value = ''; Doesn't work in IE6 - removeNode(this._input.parentNode); - this._input = null; - this._createInput(); - - removeClass(this._button, this._settings.hoverClass); - removeClass(this._button, this._settings.focusClass); - }, - /** - * Function makes sure that when user clicks upload button, - * the this._input is clicked instead - */ - _rerouteClicks: function(){ - var self = this; - - // IE will later display 'access denied' error - // if you use using self._input.click() - // other browsers just ignore click() - - addEvent(self._button, 'mouseover', function(){ - if (self._disabled){ - return; - } - - if ( ! self._input){ - self._createInput(); - } - - var div = self._input.parentNode; - copyLayout(self._button, div); - div.style.visibility = 'visible'; - - }); - - - // commented because we now hide input on mouseleave - /** - * When the window is resized the elements - * can be misaligned if button position depends - * on window size - */ - //addResizeEvent(function(){ - // if (self._input){ - // copyLayout(self._button, self._input.parentNode); - // } - //}); - - }, - /** - * Creates iframe with unique name - * @return {Element} iframe - */ - _createIframe: function(){ - // We can't use getTime, because it sometimes return - // same value in safari :( - var id = getUID(); - - // We can't use following code as the name attribute - // won't be properly registered in IE6, and new window - // on form submit will open - // var iframe = document.createElement('iframe'); - // iframe.setAttribute('name', id); - - var iframe = toElement('