Merge branch '2019.01-rc' into bug/6334-escape-get-app

This commit is contained in:
Hypolite Petovan 2019-01-06 16:38:48 -05:00 committed by GitHub
commit e447375cdd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 136 additions and 72 deletions

View file

@ -35,7 +35,7 @@ use Friendica\Util\DateTimeFormat;
define('FRIENDICA_PLATFORM', 'Friendica'); define('FRIENDICA_PLATFORM', 'Friendica');
define('FRIENDICA_CODENAME', 'The Tazmans Flax-lily'); define('FRIENDICA_CODENAME', 'The Tazmans Flax-lily');
define('FRIENDICA_VERSION', '2018.12-rc'); define('FRIENDICA_VERSION', '2019.01-rc');
define('DFRN_PROTOCOL_VERSION', '2.23'); define('DFRN_PROTOCOL_VERSION', '2.23');
define('NEW_UPDATE_ROUTINE_VERSION', 1170); define('NEW_UPDATE_ROUTINE_VERSION', 1170);

View file

@ -8,6 +8,7 @@ Nutzer
* **[Warum erhalte ich Warnungen über fehlende Zertifikate?](help/FAQ#ssl)** * **[Warum erhalte ich Warnungen über fehlende Zertifikate?](help/FAQ#ssl)**
* **[Wie kann ich Bilder, Dateien, Links, Video und Audio in Beiträge einfügen?](help/FAQ#upload)** * **[Wie kann ich Bilder, Dateien, Links, Video und Audio in Beiträge einfügen?](help/FAQ#upload)**
* **[Ist es möglich, bei mehreren Profilen verschiedene Avatare (Nutzerbilder) zu haben?](help/FAQ#avatars)** * **[Ist es möglich, bei mehreren Profilen verschiedene Avatare (Nutzerbilder) zu haben?](help/FAQ#avatars)**
* **[Wie kann ich Friendica in einer bestimmten Sprache ansehen?](help/FAQ#language)**
* **[Was ist der Unterschied zwischen blockierten|ignorierten|archivierten|versteckten Kontakten?](help/FAQ#contacts)** * **[Was ist der Unterschied zwischen blockierten|ignorierten|archivierten|versteckten Kontakten?](help/FAQ#contacts)**
* **[Was passiert, wenn ein Account gelöscht ist? Ist dieser richtig gelöscht?](help/FAQ#removed)** * **[Was passiert, wenn ein Account gelöscht ist? Ist dieser richtig gelöscht?](help/FAQ#removed)**
* **[Kann ich einem Hashtag folgen?](help/FAQ#hashtag)** * **[Kann ich einem Hashtag folgen?](help/FAQ#hashtag)**
@ -90,6 +91,31 @@ Anschließend siehst Du eine Seite mit allen Infos zu diesem Profil.
Klicke nun oben auf den Link "Profilbild ändern" und lade im nächsten Fenster ein Bild von Deinem PC hoch. Klicke nun oben auf den Link "Profilbild ändern" und lade im nächsten Fenster ein Bild von Deinem PC hoch.
Um Deine privaten Daten zu schützen, wird in Beiträgen nur das Bild aus Deinem öffentlichen Profil angezeigt. Um Deine privaten Daten zu schützen, wird in Beiträgen nur das Bild aus Deinem öffentlichen Profil angezeigt.
<a name="language"></a>
### Wie kann ich Friendica in einer bestimmten Sprache ansehen?
Die Sprache des Friendica Interfaces kann durch den `lang` Parameter un der URL beeinflusst werden.
Das Argument des Parameters ist ein [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) Code.
Zwischen der URL und dem Parameter muss ein Fragezeichen als Trennzeichen verwendet werden.
Ein Beispiel:
https://social.example.com/profile/example
auf Deutsch:
https://social.example.com/profile/example?lang=de.
Wenn das Fragezeichen bereits in der URL verwendet wird, werden die einzelnen URL Parameter mit einem kaufmännischen Und getrennt werden.
Ein Beispiel:
https://social.example.com/profile/example?tab=profile
auf Deutsch:
https://social.example.com/profile/example?tab=profile&lang=de.
<a name="contacts"></a> <a name="contacts"></a>
### Was ist der Unterschied zwischen blockierten|ignorierten|archivierten|versteckten Kontakten? ### Was ist der Unterschied zwischen blockierten|ignorierten|archivierten|versteckten Kontakten?

View file

@ -20,7 +20,7 @@ Thank you for your interest in improving Friendica's translation!
Please register a free Transifex account and ask over at [the Transifex Friendica page](https://www.transifex.com/Friendica/friendica/dashboard/) to join the translation team for your favorite language. Please register a free Transifex account and ask over at [the Transifex Friendica page](https://www.transifex.com/Friendica/friendica/dashboard/) to join the translation team for your favorite language.
As a rule of thumb, we add support for a language in Friendica when at least 50% of the strings have been translated to avoid a scattered experience. As a rule of thumb, we add support for a language in Friendica when at least 50% of the strings have been translated to avoid a scattered experience.
For addons, we add support for a language when all the strings for this addon have been translated and only if we already support the language in Friendica. For addons, we add support for a language when if we already support the language in Friendica.
## Add new translation strings ## Add new translation strings

View file

@ -1752,7 +1752,7 @@ function admin_page_users_post(App $a)
Thank you and welcome to %4$s.')); Thank you and welcome to %4$s.'));
$preamble = sprintf($preamble, $user['username'], Config::get('config', 'sitename')); $preamble = sprintf($preamble, $user['username'], Config::get('config', 'sitename'));
$body = sprintf($body, System::baseUrl(), $user['email'], $result['password'], Config::get('config', 'sitename')); $body = sprintf($body, System::baseUrl(), $user['nickname'], $result['password'], Config::get('config', 'sitename'));
notification([ notification([
'type' => SYSTEM_EMAIL, 'type' => SYSTEM_EMAIL,

View file

@ -21,7 +21,7 @@ function lostpass_post(App $a)
} }
$condition = ['(`email` = ? OR `nickname` = ?) AND `verified` = 1 AND `blocked` = 0', $loginame, $loginame]; $condition = ['(`email` = ? OR `nickname` = ?) AND `verified` = 1 AND `blocked` = 0', $loginame, $loginame];
$user = DBA::selectFirst('user', ['uid', 'username', 'email', 'language'], $condition); $user = DBA::selectFirst('user', ['uid', 'username', 'nickname', 'email', 'language'], $condition);
if (!DBA::isResult($user)) { if (!DBA::isResult($user)) {
notice(L10n::t('No valid account found.') . EOL); notice(L10n::t('No valid account found.') . EOL);
$a->internalRedirect(); $a->internalRedirect();
@ -63,7 +63,7 @@ function lostpass_post(App $a)
The login details are as follows: The login details are as follows:
Site Location: %2$s Site Location: %2$s
Login Name: %3$s', $resetlink, System::baseUrl(), $user['email'])); Login Name: %3$s', $resetlink, System::baseUrl(), $user['nickname']));
notification([ notification([
'type' => SYSTEM_EMAIL, 'type' => SYSTEM_EMAIL,
@ -85,7 +85,7 @@ function lostpass_content(App $a)
if ($a->argc > 1) { if ($a->argc > 1) {
$pwdreset_token = $a->argv[1]; $pwdreset_token = $a->argv[1];
$user = DBA::selectFirst('user', ['uid', 'username', 'email', 'pwdreset_time', 'language'], ['pwdreset' => $pwdreset_token]); $user = DBA::selectFirst('user', ['uid', 'username', 'nickname', 'email', 'pwdreset_time', 'language'], ['pwdreset' => $pwdreset_token]);
if (!DBA::isResult($user)) { if (!DBA::isResult($user)) {
notice(L10n::t("Request could not be verified. \x28You may have previously submitted it.\x29 Password reset failed.")); notice(L10n::t("Request could not be verified. \x28You may have previously submitted it.\x29 Password reset failed."));
@ -161,7 +161,7 @@ function lostpass_generate_password($user)
Password: %3$s Password: %3$s
You may change that password from your account settings page after logging in. You may change that password from your account settings page after logging in.
', System::baseUrl(), $user['email'], $new_password)); ', System::baseUrl(), $user['nickname'], $new_password));
notification([ notification([
'type' => SYSTEM_EMAIL, 'type' => SYSTEM_EMAIL,

View file

@ -6,6 +6,7 @@
namespace Friendica\Core; namespace Friendica\Core;
use Friendica\BaseObject;
use Friendica\Core\Logger; use Friendica\Core\Logger;
use Friendica\Core\System; use Friendica\Core\System;
@ -191,12 +192,17 @@ class Theme
*/ */
public static function getStylesheetPath($theme) public static function getStylesheetPath($theme)
{ {
$a = \get_app(); $a = BaseObject::getApp();
$opts = (($a->profile_uid) ? '?f=&puid=' . $a->profile_uid : ''); $opts = (($a->profile_uid) ? '?f=&puid=' . $a->profile_uid : '');
if (file_exists('view/theme/' . $theme . '/style.php')) { if (file_exists('view/theme/' . $theme . '/style.php')) {
if ($a->is_mobile) {
// Workaround for iOS Safari not sending the cookie for static files
return 'view/theme/' . $theme . '/style' . $opts;
} else {
return 'view/theme/' . $theme . '/style.pcss' . $opts; return 'view/theme/' . $theme . '/style.pcss' . $opts;
} }
}
return 'view/theme/' . $theme . '/style.css'; return 'view/theme/' . $theme . '/style.css';
} }

View file

@ -61,7 +61,7 @@ class APContact extends BaseObject
* Fetches a profile from a given url * Fetches a profile from a given url
* *
* @param string $url profile url * @param string $url profile url
* @param boolean $update true = always update, false = never update, null = update when not found * @param boolean $update true = always update, false = never update, null = update when not found or outdated
* @return array profile array * @return array profile array
*/ */
public static function getByURL($url, $update = null) public static function getByURL($url, $update = null)
@ -71,18 +71,22 @@ class APContact extends BaseObject
} }
if (empty($update)) { if (empty($update)) {
if (is_null($update)) {
$ref_update = DateTimeFormat::utc('now - 1 month');
} else {
$ref_update = DBA::NULL_DATETIME;
}
$apcontact = DBA::selectFirst('apcontact', [], ['url' => $url]); $apcontact = DBA::selectFirst('apcontact', [], ['url' => $url]);
if (DBA::isResult($apcontact)) { if (!DBA::isResult($apcontact)) {
return $apcontact;
}
$apcontact = DBA::selectFirst('apcontact', [], ['alias' => $url]); $apcontact = DBA::selectFirst('apcontact', [], ['alias' => $url]);
if (DBA::isResult($apcontact)) {
return $apcontact;
} }
if (!DBA::isResult($apcontact)) {
$apcontact = DBA::selectFirst('apcontact', [], ['addr' => $url]); $apcontact = DBA::selectFirst('apcontact', [], ['addr' => $url]);
if (DBA::isResult($apcontact)) { }
if (DBA::isResult($apcontact) && ($apcontact['updated'] > $ref_update)) {
return $apcontact; return $apcontact;
} }
@ -185,6 +189,22 @@ class APContact extends BaseObject
// Update some data in the contact table with various ways to catch them all // Update some data in the contact table with various ways to catch them all
$contact_fields = ['name' => $apcontact['name'], 'about' => $apcontact['about']]; $contact_fields = ['name' => $apcontact['name'], 'about' => $apcontact['about']];
// Fetch the type and match it with the contact type
$contact_types = array_keys(ActivityPub::ACCOUNT_TYPES, $apcontact['type']);
if (!empty($contact_types)) {
$contact_type = array_pop($contact_types);
if (is_int($contact_type)) {
$contact_fields['contact-type'] = $contact_type;
// Resetting the 'forum' and 'prv' field when it isn't a forum
if ($contact_fields['contact-type'] != Contact::ACCOUNT_TYPE_COMMUNITY) {
$contact_fields['forum'] = false;
$contact_fields['prv'] = false;
}
}
}
DBA::update('contact', $contact_fields, ['nurl' => Strings::normaliseLink($url)]); DBA::update('contact', $contact_fields, ['nurl' => Strings::normaliseLink($url)]);
$contacts = DBA::select('contact', ['uid', 'id'], ['nurl' => Strings::normaliseLink($url)]); $contacts = DBA::select('contact', ['uid', 'id'], ['nurl' => Strings::normaliseLink($url)]);
@ -194,6 +214,9 @@ class APContact extends BaseObject
DBA::close($contacts); DBA::close($contacts);
// Update the gcontact table // Update the gcontact table
// These two fields don't exist in the gcontact table
unset($contact_fields['forum']);
unset($contact_fields['prv']);
DBA::update('gcontact', $contact_fields, ['nurl' => Strings::normaliseLink($url)]); DBA::update('gcontact', $contact_fields, ['nurl' => Strings::normaliseLink($url)]);
Logger::log('Updated profile for ' . $url, Logger::DEBUG); Logger::log('Updated profile for ' . $url, Logger::DEBUG);

View file

@ -514,6 +514,10 @@ class Profile
$p['address'] = $p['location']; $p['address'] = $p['location'];
} }
if (isset($p['address'])) {
$p['address'] = BBCode::convert($p['address']);
}
if (isset($p['photo'])) { if (isset($p['photo'])) {
$p['photo'] = ProxyUtils::proxifyUrl($p['photo'], false, ProxyUtils::SIZE_SMALL); $p['photo'] = ProxyUtils::proxifyUrl($p['photo'], false, ProxyUtils::SIZE_SMALL);
} }

View file

@ -771,7 +771,7 @@ class User
If you ever want to delete your account, you can do so at %3$s/removeme If you ever want to delete your account, you can do so at %3$s/removeme
Thank you and welcome to %2$s.', Thank you and welcome to %2$s.',
$user['email'], $sitename, $siteurl, $user['username'], $password $user['nickname'], $sitename, $siteurl, $user['username'], $password
)); ));
return notification([ return notification([

View file

@ -642,7 +642,7 @@ class Contact extends BaseModule
'$profileurllabel'=> L10n::t('Profile URL'), '$profileurllabel'=> L10n::t('Profile URL'),
'$profileurl' => $contact['url'], '$profileurl' => $contact['url'],
'$account_type' => Model\Contact::getAccountType($contact), '$account_type' => Model\Contact::getAccountType($contact),
'$location' => $contact['location'], '$location' => BBCode::convert($contact['location']),
'$location_label' => L10n::t('Location:'), '$location_label' => L10n::t('Location:'),
'$xmpp' => BBCode::convert($contact['xmpp']), '$xmpp' => BBCode::convert($contact['xmpp']),
'$xmpp_label' => L10n::t('XMPP:'), '$xmpp_label' => L10n::t('XMPP:'),

View file

@ -1326,16 +1326,9 @@ class Diaspora
$x = false; $x = false;
} }
// This will work for older Diaspora and Friendica servers
if (!$x) {
$source_url = $server."/p/".urlencode($guid).".xml";
Logger::log("Fetch post from ".$source_url, Logger::DEBUG);
$x = Network::fetchUrl($source_url);
if (!$x) { if (!$x) {
return false; return false;
} }
}
$source_xml = XML::parseString($x); $source_xml = XML::parseString($x);

View file

@ -1228,7 +1228,7 @@ class OStatus
{ {
$siteinfo = BBCode::getAttachedData($body); $siteinfo = BBCode::getAttachedData($body);
if (($siteinfo["type"] == "photo")) { if (($siteinfo["type"] == "photo") && (!empty($siteinfo["preview"]) || !empty($siteinfo["image"]))) {
if (isset($siteinfo["preview"])) { if (isset($siteinfo["preview"])) {
$preview = $siteinfo["preview"]; $preview = $siteinfo["preview"];
} else { } else {

View file

@ -53,7 +53,7 @@
{{* Some information about the contact from the profile *}} {{* Some information about the contact from the profile *}}
<dl><dt>{{$profileurllabel}}</dt><dd><a target="blank" href="{{$url}}">{{$profileurl}}</a></dd></dl> <dl><dt>{{$profileurllabel}}</dt><dd><a target="blank" href="{{$url}}">{{$profileurl}}</a></dd></dl>
{{if $location}}<dl><dt>{{$location_label}}</dt><dd>{{$location}}</dd></dl>{{/if}} {{if $location}}<dl><dt>{{$location_label}}</dt><dd>{{$location nofilter}}</dd></dl>{{/if}}
{{if $xmpp}}<dl><dt>{{$xmpp_label}}</dt><dd>{{$xmpp}}</dd></dl>{{/if}} {{if $xmpp}}<dl><dt>{{$xmpp_label}}</dt><dd>{{$xmpp}}</dd></dl>{{/if}}
{{if $keywords}}<dl><dt>{{$keywords_label}}</dt><dd>{{$keywords}}</dd></dl>{{/if}} {{if $keywords}}<dl><dt>{{$keywords_label}}</dt><dd>{{$keywords}}</dd></dl>{{/if}}
{{if $about}}<dl><dt>{{$about_label}}</dt><dd>{{$about nofilter}}</dd></dl>{{/if}} {{if $about}}<dl><dt>{{$about_label}}</dt><dd>{{$about nofilter}}</dd></dl>{{/if}}

View file

@ -19,7 +19,7 @@
<link rel="manifest" href="{{$baseurl}}/manifest" /> <link rel="manifest" href="{{$baseurl}}/manifest" />
<script> <script>
// Prevents links to switch to Safari in a home screen app - see https://gist.github.com/irae/1042167 // Prevents links to switch to Safari in a home screen app - see https://gist.github.com/irae/1042167
(function(a,b,c){if(c in b&&b[c]){var d,e=a.location,f=/^(a|html)$/i;a.addEventListener("click",function(a){d=a.target;while(!f.test(d.nodeName))d=d.parentNode;"href"in d&&(chref=d.href).replace(e.href,"").indexOf("#")&&(!/^[a-z\+\.\-]+:/i.test(chref)||chref.indexOf(e.protocol+"//"+e.host)===0)&&(a.preventDefault(),e.href=d.href)},!1)}})(document,window.navigator,"standalone"); (function(a,b,c){if(c in b&&b[c]){var d,e=a.location,f=/^(a|html)$/i;a.addEventListener("click",function(a){d=a.target;while(!f.test(d.nodeName))d=d.parentNode;"href"in d&&(chref=d.href).replace("{{$baseurl}}/", "").replace(e.href,"").indexOf("#")&&(!/^[a-z\+\.\-]+:/i.test(chref)||chref.indexOf(e.protocol+"//"+e.host)===0)&&(a.preventDefault(),e.href=d.href)},!1)}})(document,window.navigator,"standalone");
</script> </script>
<link rel="search" <link rel="search"

View file

@ -17,7 +17,7 @@
{{if $location}} {{if $location}}
<dl class="location"><dt class="location-label">{{$location}}</dt> <dl class="location"><dt class="location-label">{{$location}}</dt>
<dd class="adr h-adr"> <dd class="adr h-adr">
{{if $profile.address}}<div class="street-address p-street-address">{{$profile.address}}</div>{{/if}} {{if $profile.address}}<div class="street-address p-street-address">{{$profile.address nofilter}}</div>{{/if}}
<span class="city-state-zip"> <span class="city-state-zip">
<span class="locality p-locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}} <span class="locality p-locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}}
<span class="region p-region">{{$profile.region}}</span> <span class="region p-region">{{$profile.region}}</span>

View file

@ -15,7 +15,7 @@
{{if $location}} {{if $location}}
<dl class="location"><dt class="location-label">{{$location}}</dt> <dl class="location"><dt class="location-label">{{$location}}</dt>
<dd class="adr h-adr"> <dd class="adr h-adr">
{{if $profile.address}}<div class="street-address p-street-address">{{$profile.address}}</div>{{/if}} {{if $profile.address}}<div class="street-address p-street-address">{{$profile.address nofilter}}</div>{{/if}}
<span class="city-state-zip"> <span class="city-state-zip">
<span class="locality p-locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}} <span class="locality p-locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}}
<span class="region p-region">{{$profile.region}}</span> <span class="region p-region">{{$profile.region}}</span>

View file

@ -2087,8 +2087,8 @@ ul.dropdown-menu li:hover {
} }
/* Notificaiotn badges */ /* Notificaiotn badges */
.nav-notify .show { #mail-update-li.show {
display: block; display: inline-block!important;
} }
/* Media Classes */ /* Media Classes */

View file

@ -439,10 +439,10 @@ function justifyPhotos() {
margins: 3, margins: 3,
border: 0, border: 0,
sizeRangeSuffixes: { sizeRangeSuffixes: {
'lt100': '-2', 'lt48': '-6',
'lt240': '-2', 'lt80': '-5',
'lt300': '-4',
'lt320': '-2', 'lt320': '-2',
'lt500': '',
'lt640': '-1', 'lt640': '-1',
'lt1024': '-0' 'lt1024': '-0'
} }

View file

@ -88,7 +88,7 @@
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12"> <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<hr class="profile-separator"> <hr class="profile-separator">
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 text-muted">{{$location_label}}</div> <div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 text-muted">{{$location_label}}</div>
<div class="col-lg-8 col-md-8 col-sm-8 col-xs-12">{{$location}}</div> <div class="col-lg-8 col-md-8 col-sm-8 col-xs-12">{{$location nofilter}}</div>
</div> </div>
{{/if}} {{/if}}

View file

@ -40,7 +40,7 @@
<link rel="manifest" href="{{$baseurl}}/manifest" /> <link rel="manifest" href="{{$baseurl}}/manifest" />
<script type="text/javascript"> <script type="text/javascript">
// Prevents links to switch to Safari in a home screen app - see https://gist.github.com/irae/1042167 // Prevents links to switch to Safari in a home screen app - see https://gist.github.com/irae/1042167
(function(a,b,c){if(c in b&&b[c]){var d,e=a.location,f=/^(a|html)$/i;a.addEventListener("click",function(a){d=a.target;while(!f.test(d.nodeName))d=d.parentNode;"href"in d&&(chref=d.href).replace(e.href,"").indexOf("#")&&(!/^[a-z\+\.\-]+:/i.test(chref)||chref.indexOf(e.protocol+"//"+e.host)===0)&&(a.preventDefault(),e.href=d.href)},!1)}})(document,window.navigator,"standalone"); (function(a,b,c){if(c in b&&b[c]){var d,e=a.location,f=/^(a|html)$/i;a.addEventListener("click",function(a){d=a.target;while(!f.test(d.nodeName))d=d.parentNode;"href"in d&&(chref=d.href).replace("{{$baseurl}}/", "").replace(e.href,"").indexOf("#")&&(!/^[a-z\+\.\-]+:/i.test(chref)||chref.indexOf(e.protocol+"//"+e.host)===0)&&(a.preventDefault(),e.href=d.href)},!1)}})(document,window.navigator,"standalone");
</script> </script>
<link rel="search" <link rel="search"

View file

@ -76,7 +76,7 @@
<div class="location detail"> <div class="location detail">
<span class="location-label icon"><i class="fa fa-map-marker"></i></span> <span class="location-label icon"><i class="fa fa-map-marker"></i></span>
<span class="adr"> <span class="adr">
{{if $profile.address}}<span class="street-address p-street-address">{{$profile.address}}</span>{{/if}} {{if $profile.address}}<span class="street-address p-street-address">{{$profile.address nofilter}}</span>{{/if}}
<span class="city-state-zip"> <span class="city-state-zip">
<span class="locality p-locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}} <span class="locality p-locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}}
<span class="region p-region">{{$profile.region}}</span> <span class="region p-region">{{$profile.region}}</span>

View file

@ -38,7 +38,7 @@
{{if $location}} {{if $location}}
<dl class="location"><dt class="location-label">{{$location}}</dt> <dl class="location"><dt class="location-label">{{$location}}</dt>
<dd class="adr h-adr"> <dd class="adr h-adr">
{{if $profile.address}}<div class="street-address p-street-address">{{$profile.address}}</div>{{/if}} {{if $profile.address}}<div class="street-address p-street-address">{{$profile.address nofilter}}</div>{{/if}}
<span class="city-state-zip"> <span class="city-state-zip">
<span class="locality p-locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}} <span class="locality p-locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}}
<span class="region p-region">{{$profile.region}}</span> <span class="region p-region">{{$profile.region}}</span>

View file

@ -60,8 +60,8 @@ nav ul {
.wall-item-container .wall-item-content .type-link img.attachment-image, .type-link img.attachment-image, .type-video img.attachment-image { .wall-item-container .wall-item-content .type-link img.attachment-image, .type-link img.attachment-image, .type-video img.attachment-image {
max-width: 350px; max-width: 350px;
} }
a.desktop-view { display: none; } .desktop-view { display: none; }
a.mobile-view { display: initial; } .mobile-view { display: initial; }
#nav-apps-link { display: none; } #nav-apps-link { display: none; }
.wall-item-container .wall-item-info { width: auto; } .wall-item-container .wall-item-info { width: auto; }

View file

@ -365,10 +365,12 @@ pre code {
box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
} }
.desktop-view { display: none; }
/* some settings for different form-factors */ /* some settings for different form-factors */
@media (min-width: 601px) { @media (min-width: 601px) {
a.mobile-view { display: none }; .mobile-view { display: none!important; }
a.desktop-view { display: initial }; .desktop-view { display: initial; }
} }
/* tool */ /* tool */
@ -685,8 +687,11 @@ nav .nav-menu img {
margin-right: 4px; margin-right: 4px;
} }
nav .nav-menu-icon .nav-notify { nav .nav-menu > a > .nav-notify,
nav .nav-menu-icon > a > .nav-notify {
position: absolute;
top: 3px; top: 3px;
right: -5px;
} }
nav .nav-menu-label { nav .nav-menu-label {
margin: 3px 5px 0px; margin: 3px 5px 0px;
@ -738,33 +743,27 @@ nav .nav-menu:hover {
nav .nav-notify { nav .nav-notify {
display: none; display: none;
position: absolute;
/* background-color: #36c; */
background-color: #F80; background-color: #F80;
/* background-color: #19aeff; */
-moz-border-radius: 5px 5px 5px 5px; -moz-border-radius: 5px 5px 5px 5px;
-webkit-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px;
border-radius: 5px 5px 5px 5px; border-radius: 5px 5px 5px 5px;
font-size: 10px; font-size: 10px;
padding: 1px 3px; padding: 1px 3px;
top: 0px;
/* right: -10px; */
right: -5px;
min-width: 15px; min-width: 15px;
/* text-align: right; */
text-align: center; text-align: center;
color: white; color: white;
} }
nav .nav-notify.show { nav .nav-notify.show {
display: block; display: inline-block;
} }
nav #nav-help-link, nav #nav-help-link,
nav #nav-search-link, nav #nav-search-link,
nav #nav-directory-link, nav #nav-directory-link,
nav #nav-apps-link, nav #nav-apps-link,
nav #nav-apps-link, nav #nav-apps-link,
nav #nav-login-link, nav #nav-login-link,
nav #nav-messages-linkmenu,
nav #nav-notifications-linkmenu, nav #nav-notifications-linkmenu,
nav #nav-site-linkmenu, nav #nav-site-linkmenu,
nav #nav-contacts-linkmenu, nav #nav-contacts-linkmenu,
@ -845,10 +844,6 @@ nav #nav-user-linkmenu {
padding: 5px 10px; */ padding: 5px 10px; */
} }
#mail-update {
top: 56px;
}
.notify-unseen {background-color: #FFF; } .notify-unseen {background-color: #FFF; }
.notify-seen { .notify-seen {

View file

@ -54,7 +54,7 @@
{{* Some information about the contact from the profile *}} {{* Some information about the contact from the profile *}}
<dl><dt>{{$profileurllabel}}</dt><dd><a target="blank" href="{{$url}}">{{$profileurl}}</a></dd></dl> <dl><dt>{{$profileurllabel}}</dt><dd><a target="blank" href="{{$url}}">{{$profileurl}}</a></dd></dl>
{{if $location}}<dl><dt>{{$location_label}}</dt><dd>{{$location}}</dd></dl>{{/if}} {{if $location}}<dl><dt>{{$location_label}}</dt><dd>{{$location nofilter}}</dd></dl>{{/if}}
{{if $xmpp}}<dl><dt>{{$xmpp_label}}</dt><dd>{{$xmpp}}</dd></dl>{{/if}} {{if $xmpp}}<dl><dt>{{$xmpp_label}}</dt><dd>{{$xmpp}}</dd></dl>{{/if}}
{{if $keywords}}<dl><dt>{{$keywords_label}}</dt><dd>{{$keywords}}</dd></dl>{{/if}} {{if $keywords}}<dl><dt>{{$keywords_label}}</dt><dd>{{$keywords}}</dd></dl>{{/if}}
{{if $about}}<dl><dt>{{$about_label}}</dt><dd>{{$about nofilter}}</dd></dl>{{/if}} {{if $about}}<dl><dt>{{$about_label}}</dt><dd>{{$about nofilter}}</dd></dl>{{/if}}

View file

@ -14,16 +14,20 @@
</li> </li>
{{if $nav.home}} {{if $nav.home}}
<li role="menuitem" id="nav-home-link" class="nav-menu {{$sel.home}}"> <li role="menuitem" id="nav-home-link" class="nav-menu {{$sel.home}}">
<a accesskey="p" class="{{$nav.home.2}} desktop-view" href="{{$nav.home.0}}" title="{{$nav.home.3}}" >{{$nav.home.1}}</a> <a accesskey="p" class="{{$nav.home.2}}" href="{{$nav.home.0}}" title="{{$nav.home.3}}" >
<a class="{{$nav.home.2}} mobile-view" href="{{$nav.home.0}}" title="{{$nav.home.3}}" ><i class="icon s22 icon-home"></i></a> <span class="desktop-view">{{$nav.home.1}}</span>
<i class="icon s22 icon-home mobile-view"><span class="sr-only">{{$nav.home.1}}</span></i>
<span id="home-update" class="nav-notify"></span> <span id="home-update" class="nav-notify"></span>
</a>
</li> </li>
{{/if}} {{/if}}
{{if $nav.network}} {{if $nav.network}}
<li role="menuitem" id="nav-network-link" class="nav-menu {{$sel.network}}"> <li role="menuitem" id="nav-network-link" class="nav-menu {{$sel.network}}">
<a accesskey="n" class="{{$nav.network.2}} desktop-view" href="{{$nav.network.0}}" title="{{$nav.network.3}}" >{{$nav.network.1}}</a> <a accesskey="n" class="{{$nav.network.2}}" href="{{$nav.network.0}}" title="{{$nav.network.3}}" >
<a class="{{$nav.network.2}} mobile-view" href="{{$nav.network.0}}" title="{{$nav.network.3}}" ><i class="icon s22 icon-th"></i></a> <span class="desktop-view">{{$nav.network.1}}</span>
<i class="icon s22 icon-th mobile-view"><span class="sr-only">{{$nav.network.1}}</span></i>
<span id="net-update" class="nav-notify"></span> <span id="net-update" class="nav-notify"></span>
</a>
</li> </li>
{{/if}} {{/if}}
{{if $nav.events}} {{if $nav.events}}
@ -48,9 +52,22 @@
</ul> </ul>
</li> </li>
{{if $nav.messages}}
<li role="menu" aria-haspopup="true" id="nav-messages-linkmenu" class="nav-menu-icon">
<a href="{{$nav.messages.0}}" title="{{$nav.messages.1}}">
<span class="icon s22 icon-envelope"><span class="sr-only">{{$nav.messages.1}}</span></span>
<span id="mail-update" class="nav-notify"></span>
</a>
</li>
{{/if}}
{{if $nav.notifications}} {{if $nav.notifications}}
<li role="menu" aria-haspopup="true" id="nav-notifications-linkmenu" class="nav-menu-icon"><a title="{{$nav.notifications.1}}"><span class="icon s22 icon-bell tilted-icon"><span class="sr-only">{{$nav.notifications.1}}</span></span></a> <li role="menu" aria-haspopup="true" id="nav-notifications-linkmenu" class="nav-menu-icon">
<a title="{{$nav.notifications.1}}">
<span class="icon s22 icon-bell tilted-icon"><span class="sr-only">{{$nav.notifications.1}}</span></span>
<span id="notify-update" class="nav-notify"></span> <span id="notify-update" class="nav-notify"></span>
</a>
<ul id="nav-notifications-menu" class="menu-popup"> <ul id="nav-notifications-menu" class="menu-popup">
<li role="menuitem" id="nav-notifications-mark-all"><a onclick="notifyMarkAll(); return false;">{{$nav.notifications.mark.1}}</a></li> <li role="menuitem" id="nav-notifications-mark-all"><a onclick="notifyMarkAll(); return false;">{{$nav.notifications.mark.1}}</a></li>
<li role="menuitem" id="nav-notifications-see-all"><a href="{{$nav.notifications.all.0}}">{{$nav.notifications.all.1}}</a></li> <li role="menuitem" id="nav-notifications-see-all"><a href="{{$nav.notifications.all.0}}">{{$nav.notifications.all.1}}</a></li>
@ -65,7 +82,7 @@
<ul id="nav-user-menu" class="menu-popup"> <ul id="nav-user-menu" class="menu-popup">
{{if $nav.introductions}}<li role="menuitem"><a class="{{$nav.introductions.2}}" href="{{$nav.introductions.0}}" title="{{$nav.introductions.3}}" >{{$nav.introductions.1}}</a><span id="intro-update-li" class="nav-notify"></span></li>{{/if}} {{if $nav.introductions}}<li role="menuitem"><a class="{{$nav.introductions.2}}" href="{{$nav.introductions.0}}" title="{{$nav.introductions.3}}" >{{$nav.introductions.1}}</a><span id="intro-update-li" class="nav-notify"></span></li>{{/if}}
{{if $nav.contacts}}<li role="menuitem"><a class="{{$nav.contacts.2}}" href="{{$nav.contacts.0}}" title="{{$nav.contacts.3}}" >{{$nav.contacts.1}}</a></li>{{/if}} {{if $nav.contacts}}<li role="menuitem"><a class="{{$nav.contacts.2}}" href="{{$nav.contacts.0}}" title="{{$nav.contacts.3}}" >{{$nav.contacts.1}}</a></li>{{/if}}
{{if $nav.messages}}<li role="menuitem"><a class="{{$nav.messages.2}}" href="{{$nav.messages.0}}" title="{{$nav.messages.3}}" >{{$nav.messages.1}}</a><span id="mail-update" class="nav-notify"></span></a></li>{{/if}} {{if $nav.messages}}<li role="menuitem"><a class="{{$nav.messages.2}}" href="{{$nav.messages.0}}" title="{{$nav.messages.3}}" >{{$nav.messages.1}} <span id="mail-update-li" class="nav-notify"></span></a></li>{{/if}}
{{if $nav.manage}}<li role="menuitem"><a class="{{$nav.manage.2}}" href="{{$nav.manage.0}}" title="{{$nav.manage.3}}">{{$nav.manage.1}}</a></li>{{/if}} {{if $nav.manage}}<li role="menuitem"><a class="{{$nav.manage.2}}" href="{{$nav.manage.0}}" title="{{$nav.manage.3}}">{{$nav.manage.1}}</a></li>{{/if}}
{{if $nav.usermenu.1}}<li role="menuitem"><a class="{{$nav.usermenu.1.2}}" href="{{$nav.usermenu.1.0}}" title="{{$nav.usermenu.1.3}}">{{$nav.usermenu.1.1}}</a></li>{{/if}} {{if $nav.usermenu.1}}<li role="menuitem"><a class="{{$nav.usermenu.1.2}}" href="{{$nav.usermenu.1.0}}" title="{{$nav.usermenu.1.3}}">{{$nav.usermenu.1.1}}</a></li>{{/if}}
{{if $nav.settings}}<li role="menuitem"><a class="{{$nav.settings.2}}" href="{{$nav.settings.0}}" title="{{$nav.settings.3}}">{{$nav.settings.1}}</a></li>{{/if}} {{if $nav.settings}}<li role="menuitem"><a class="{{$nav.settings.2}}" href="{{$nav.settings.0}}" title="{{$nav.settings.3}}">{{$nav.settings.1}}</a></li>{{/if}}

View file

@ -28,7 +28,7 @@
{{if $location}} {{if $location}}
<dl class="location"><dt class="location-label">{{$location}}</dt> <dl class="location"><dt class="location-label">{{$location}}</dt>
<dd class="adr h-adr"> <dd class="adr h-adr">
{{if $profile.address}}<div class="street-address p-street-address">{{$profile.address}}</div>{{/if}} {{if $profile.address}}<div class="street-address p-street-address">{{$profile.address nofilter}}</div>{{/if}}
<span class="city-state-zip"> <span class="city-state-zip">
<span class="locality p-locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}} <span class="locality p-locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}}
<span class="region p-region">{{$profile.region}}</span> <span class="region p-region">{{$profile.region}}</span>