From 50622d27d1d41c3d53189007a0de5e8e89e71a52 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 27 Apr 2020 09:43:46 -0400 Subject: [PATCH 1/3] [frio] Restore focus styles - Replace .btn-main by .btn-primary - Harmonize focus styles between buttons and form controls based on the theme scheme --- view/theme/frio/css/style.css | 62 +++++++------------------ view/theme/frio/templates/jot.tpl | 2 +- view/theme/frio/templates/searchbox.tpl | 2 +- 3 files changed, 18 insertions(+), 48 deletions(-) diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 3dd4b8eb46..88f290ab2c 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -56,13 +56,13 @@ body a[name]:not([href]) { visibility: hidden; } -body a:hover, .btn-link:hover, .btn:hover, -body a:focus, .btn-link:focus, .btn:focus, -body a:active, .btn-link:active, .btn:active, -body a.active, .btn-link.active, .btn.active { +body a:hover, .btn-link:hover, +body a:focus, .btn-link:focus, +body a:active, .btn-link:active, +body a.active, .btn-link.active { color: $link_hover_color; + outline-color: $link_hover_color;; text-decoration: none; - outline: none; } .wall-item-container a:hover { @@ -197,8 +197,8 @@ blockquote { padding: 8px 16px; color: inherit; } -a.btn:hover { - color: #333; +.btn:focus { + outline-color: $link_hover_color; } .btn-default { @@ -219,17 +219,17 @@ a.btn:hover { padding: 1px 5px; font-size: 12px; } -.btn-primary { - background: $nav_bg !important; - color: $btn_primary_color !important; +.btn.btn-primary { + background: $nav_bg; + color: $btn_primary_color; } -.btn-primary:hover, .btn-primary:focus { +.btn.btn-primary:hover, .btn.btn-primary:focus { + color: $btn_primary_color; background: $btn_primary_hover_color; text-decoration: none; } -.btn-primary:active, .btn-primary.active { - outline: 0; - background: $btn_primary_hover_color !important; +.btn.btn-primary:active, .btn.btn-primary.active { + background: $btn_primary_hover_color; } .btn-primary.active.focus, .btn-primary.active:focus, .btn-primary.active:hover, @@ -262,31 +262,7 @@ a.btn:hover { .btn-separator { border-left: 1px solid #777; } -/*.btn-info { - background: #6fdbe8; - color: #fff!important; -} -.btn-info:hover, .btn-info:focus { - background: #59d6e4!important; - text-decoration: none; -} -.btn-info:active, .btn-info.active { - outline: 0; - background: #59d6e4; -}*/ -.btn-main { - background: $link_color; - color: #fff!important; -} -.btn-main:hover, .btn-main:focus { - background: $link_hover_color !important; - text-decoration: none; -} -.btn-main:active, .btn-main.active { - outline: 0; - background: $link_hover_color; -} .toggle.btn { border: 1px solid transparent; } @@ -2202,19 +2178,13 @@ ul.dropdown-menu li:hover { box-shadow: none; } .form-control:focus { - /*border: 2px solid #6fdbe8;*/ border: 2px solid $link_color; - outline: 0; box-shadow: none; } - .checkbox input[type="checkbox"]:focus + label::before, -.checkbox input[type="radio"]:focus + label::before { - /*border: 2px solid #6fdbe8;*/ - border: 2px solid $link_color; - outline: 0; - box-shadow: none; +.radio input[type="radio"]:focus + label::before { + outline-color: $link_hover_color; } /* Search form */ diff --git a/view/theme/frio/templates/jot.tpl b/view/theme/frio/templates/jot.tpl index 88130c1862..e0c602a289 100644 --- a/view/theme/frio/templates/jot.tpl +++ b/view/theme/frio/templates/jot.tpl @@ -1,5 +1,5 @@ {{* The button to open the jot - in This theme we move the button with js to the second nav bar *}} - +
diff --git a/view/theme/frio/templates/searchbox.tpl b/view/theme/frio/templates/searchbox.tpl index ced6fbbd38..945894252a 100644 --- a/view/theme/frio/templates/searchbox.tpl +++ b/view/theme/frio/templates/searchbox.tpl @@ -46,7 +46,7 @@ Some parts of this template will be moved by js to other places (see theme.js) -
{{if $s}} - + {{if $mode == "tag"}} {{else}} From f521689ced8119ccc0479ff47d890f5a4bee87ba Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 27 Apr 2020 14:35:50 +0000 Subject: [PATCH 2/3] Suppress XML logging of errors --- src/Model/GServer.php | 6 +++--- src/Model/Item.php | 4 ++-- src/Network/Probe.php | 6 +++--- src/Protocol/ActivityPub/Transmitter.php | 4 ++-- src/Protocol/DFRN.php | 12 ++++++------ src/Protocol/Diaspora.php | 4 ++-- src/Util/XML.php | 20 ++++++++++++++------ 7 files changed, 32 insertions(+), 24 deletions(-) diff --git a/src/Model/GServer.php b/src/Model/GServer.php index 0f5f55ab67..bc189af9d6 100644 --- a/src/Model/GServer.php +++ b/src/Model/GServer.php @@ -747,7 +747,7 @@ class GServer return false; } - $xrd = XML::parseString($curlResult->getBody(), false); + $xrd = XML::parseString($curlResult->getBody()); if (!is_object($xrd)) { return false; } @@ -796,13 +796,13 @@ class GServer DBA::close($gcontacts); $apcontacts = DBA::select('apcontact', ['url'], ['baseurl' => [$url, $serverdata['nurl']]]); - while ($gcontact = DBA::fetch($gcontacts)) { + while ($apcontact = DBA::fetch($apcontacts)) { $contacts[Strings::normaliseLink($apcontact['url'])] = $apcontact['url']; } DBA::close($apcontacts); $pcontacts = DBA::select('contact', ['url', 'nurl'], ['uid' => 0, 'baseurl' => [$url, $serverdata['nurl']]]); - while ($gcontact = DBA::fetch($gcontacts)) { + while ($pcontact = DBA::fetch($pcontacts)) { $contacts[$pcontact['nurl']] = $pcontact['url']; } DBA::close($pcontacts); diff --git a/src/Model/Item.php b/src/Model/Item.php index bd8d03359e..97c96f6748 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1249,8 +1249,8 @@ class Item return; } - $xo = XML::parseString($item["object"], false); - $xt = XML::parseString($item["target"], false); + $xo = XML::parseString($item["object"]); + $xt = XML::parseString($item["target"]); if ($xt->type != Activity\ObjectType::NOTE) { return; diff --git a/src/Network/Probe.php b/src/Network/Probe.php index b5991934b4..1e6d8406a1 100644 --- a/src/Network/Probe.php +++ b/src/Network/Probe.php @@ -160,7 +160,7 @@ class Probe $ssl_connection_error = ($curlResult->getErrorNumber() == CURLE_COULDNT_CONNECT) || ($curlResult->getReturnCode() == 0); if ($curlResult->isSuccess()) { $xml = $curlResult->getBody(); - $xrd = XML::parseString($xml, false); + $xrd = XML::parseString($xml, true); if (!empty($url)) { $host_url = 'https://' . $host; } else { @@ -185,7 +185,7 @@ class Probe } $xml = $curlResult->getBody(); - $xrd = XML::parseString($xml, false); + $xrd = XML::parseString($xml, true); $host_url = 'http://'.$host; } if (!is_object($xrd)) { @@ -936,7 +936,7 @@ class Probe } // If it is not JSON, maybe it is XML - $xrd = XML::parseString($data, false); + $xrd = XML::parseString($data, true); if (!is_object($xrd)) { Logger::log("No webfinger data retrievable for ".$url, Logger::DEBUG); return false; diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index e35d833615..0e5056dbe5 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -1406,8 +1406,8 @@ class Transmitter */ private static function createAddTag($item, $data) { - $object = XML::parseString($item['object'], false); - $target = XML::parseString($item["target"], false); + $object = XML::parseString($item['object']); + $target = XML::parseString($item["target"]); $data['diaspora:guid'] = $item['guid']; $data['actor'] = $item['author-link']; diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index f65a202f48..4e5aac37d9 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -805,7 +805,7 @@ class DFRN if ($activity) { $entry = $doc->createElement($element); - $r = XML::parseString($activity, false); + $r = XML::parseString($activity); if (!$r) { return false; } @@ -831,7 +831,7 @@ class DFRN $r->link = preg_replace('/\/', '', $r->link); // XML does need a single element as root element so we add a dummy element here - $data = XML::parseString("" . $r->link . "", false); + $data = XML::parseString("" . $r->link . ""); if (is_object($data)) { foreach ($data->link as $link) { $attributes = []; @@ -2101,7 +2101,7 @@ class DFRN if (!$verb) { return; } - $xo = XML::parseString($item["object"], false); + $xo = XML::parseString($item["object"]); if (($xo->type == Activity\ObjectType::PERSON) && ($xo->id)) { // somebody was poked/prodded. Was it me? @@ -2224,8 +2224,8 @@ class DFRN } if (($item["verb"] == Activity::TAG) && ($item["object-type"] == Activity\ObjectType::TAGTERM)) { - $xo = XML::parseString($item["object"], false); - $xt = XML::parseString($item["target"], false); + $xo = XML::parseString($item["object"]); + $xt = XML::parseString($item["target"]); if ($xt->type == Activity\ObjectType::NOTE) { $item_tag = Item::selectFirst(['id', 'uri-id', 'tag'], ['uri' => $xt->id, 'uid' => $importer["importer_uid"]]); @@ -2413,7 +2413,7 @@ class DFRN $item["object"] = self::transformActivity($xpath, $object, "object"); if (trim($item["object"]) != "") { - $r = XML::parseString($item["object"], false); + $r = XML::parseString($item["object"]); if (isset($r->type)) { $item["object-type"] = $r->type; } diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index fe6c328d9f..7c4e19d923 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -325,7 +325,7 @@ class Diaspora */ private static function verifyMagicEnvelope($envelope) { - $basedom = XML::parseString($envelope); + $basedom = XML::parseString($envelope, true); if (!is_object($basedom)) { Logger::log("Envelope is no XML file"); @@ -451,7 +451,7 @@ class Diaspora $xml = $raw; } - $basedom = XML::parseString($xml); + $basedom = XML::parseString($xml, true); if (!is_object($basedom)) { Logger::log('Received data does not seem to be an XML. Discarding. '.$xml); diff --git a/src/Util/XML.php b/src/Util/XML.php index 9aba38910d..4eed3a85f8 100644 --- a/src/Util/XML.php +++ b/src/Util/XML.php @@ -433,18 +433,26 @@ class XML } } - public static function parseString($s, $strict = true) + /** + * Parse XML string + * + * @param string $s + * @param boolean $suppress_log + * @return Object + */ + public static function parseString(string $s, bool $suppress_log = false) { - // the "strict" parameter is deactivated libxml_use_internal_errors(true); $x = @simplexml_load_string($s); if (!$x) { - Logger::error('Error(s) while parsing XML string.', ['callstack' => System::callstack()]); - foreach (libxml_get_errors() as $err) { - Logger::info('libxml error', ['code' => $err->code, 'position' => $err->line . ":" . $err->column, 'message' => $err->message]); + if (!$suppress_log) { + Logger::error('Error(s) while parsing XML string.', ['callstack' => System::callstack()]); + foreach (libxml_get_errors() as $err) { + Logger::info('libxml error', ['code' => $err->code, 'position' => $err->line . ":" . $err->column, 'message' => $err->message]); + } + Logger::debug('Erroring XML string', ['xml' => $s]); } - Logger::debug('Erroring XML string', ['xml' => $s]); libxml_clear_errors(); } return $x; From 0c4dde8e68f611d380a50b8e2a9585bbcdeb300a Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 28 Apr 2020 05:22:29 +0000 Subject: [PATCH 3/3] Fix issue 8551: Last item is now displayed again --- src/Module/Admin/Users.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Module/Admin/Users.php b/src/Module/Admin/Users.php index 002e6c5feb..dca8c9c2e6 100644 --- a/src/Module/Admin/Users.php +++ b/src/Module/Admin/Users.php @@ -206,7 +206,7 @@ class Users extends BaseAdmin $e['register_date'] = Temporal::getRelativeDate($e['register_date']); $e['login_date'] = Temporal::getRelativeDate($e['login_date']); - $e['last-item'] = Temporal::getRelativeDate($e['last-item']); + $e['lastitem_date'] = Temporal::getRelativeDate($e['last-item']); $e['is_admin'] = in_array($e['email'], $adminlist); $e['is_deletable'] = (intval($e['uid']) != local_user()); $e['deleted'] = ($e['account_removed'] ? Temporal::getRelativeDate($e['account_expires_on']) : False);