Florianschmidtwelzow has uploaded a new change for review.
https://gerrit.wikimedia.org/r/298029
Change subject: Change Categories button to a list of categories
......................................................................
Change Categories button to a list of categories
The category button is removed and after the "last edited by" bar
a new list of max. 2 categories is added. The second row of the
list can be a link "+ $1 more categories", which has the same
function as the removed categories button (open a list of all
categories).
Bug: T128145
Change-Id: I97d7de723fe72da26c7dbde0a559a13704c7099a
---
M extension.json
M i18n/en.json
M i18n/qqq.json
M includes/skins/MinervaTemplateBeta.php
M includes/skins/SkinMinervaBeta.php
A resources/skins.minerva.categories.styles/categories.less
6 files changed, 180 insertions(+), 17 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MobileFrontend
refs/changes/29/298029/1
diff --git a/extension.json b/extension.json
index e2348dc..900d9f6 100644
--- a/extension.json
+++ b/extension.json
@@ -1750,6 +1750,15 @@
"resources/skins.minerva.categories/init.js"
]
},
+ "skins.minerva.categories.styles": {
+ "targets": [
+ "mobile",
+ "desktop"
+ ],
+ "styles": [
+
"resources/skins.minerva.categories.styles/categories.less"
+ ]
+ },
"skins.minerva.talk": {
"targets": [
"mobile",
diff --git a/i18n/en.json b/i18n/en.json
index a131751..fcefb7d 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -58,6 +58,7 @@
"mobile-frontend-categories-add-wait": "Saving categories, please
wait.",
"mobile-frontend-categories-normal": "Content based",
"mobile-frontend-categories-hidden": "Organizational",
+ "mobile-frontend-categories-morelink-text": "+ $1 more
{{PLURAL:$1|category|categories}}",
"mobile-frontend-changeslist-ip": "Anonymous user",
"mobile-frontend-changeslist-nocomment": "no edit summary",
"mobile-frontend-cite-error-title": "Error loading citations",
diff --git a/i18n/qqq.json b/i18n/qqq.json
index c1c4098..8cf53d6 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -57,6 +57,7 @@
"mobile-frontend-categories-add-wait": "Text that displays while
categories are saved.\nSee also {{msg-mw|mobile-frontend-editor-wait}}",
"mobile-frontend-categories-normal": "Link message to switch to
non-hidden categories.\nSee also {{msg-mw|mobile-frontend-categories-hidden}}",
"mobile-frontend-categories-hidden": "Link message to switch to hidden
categories.\nSee also
{{msg-mw|mobile-frontend-categories-normal}}\n{{Identical|Organizational}}",
+ "mobile-frontend-categories-morelink-text": "Link text at the end of
the categories list which gives the user the option to see the remaining
categories.\nParameters:\n$1 - Number of remaining categories",
"mobile-frontend-changeslist-ip": "Label used in mobile
watchlist/history/recentchanges overview for IP (non-logged-in)
edits.\n{{Identical|Anonymous user}}",
"mobile-frontend-changeslist-nocomment": "Text to mark an empty edit
summary in mobile watchlist/history/recentchanges overview.",
"mobile-frontend-cite-error-title": "Title for Special:MobileCite error
page.",
diff --git a/includes/skins/MinervaTemplateBeta.php
b/includes/skins/MinervaTemplateBeta.php
index 9710a0e..323139a 100644
--- a/includes/skins/MinervaTemplateBeta.php
+++ b/includes/skins/MinervaTemplateBeta.php
@@ -23,25 +23,140 @@
* @return array A map of the button's friendly name, "categories" to
its
* spec if the button can be displayed.
*/
- protected function getCategoryButton() {
- $skin = $this->getSkin();
- $categories = $skin->getCategoryLinks( false /* don't render
the heading */ );
+ protected function getPostContentHtml( $data ) {
+ $sk = $this->getSkin();
+ $out = $sk->getOutput();
+ $postContent = parent::getPostContentHtml( $data );
- if ( !$categories ) {
- return [];
+ $categories = $out->getCategories();
+ $categoryLinks = $out->getCategoryLinks();
+ if ( !isset( $categoryLinks['normal'] ) ) {
+ return $postContent;
}
- return [
- 'categories' => [
- 'attributes' => [
- 'href' => '#/categories',
- // add hidden class (the overlay works
only, when JS is enabled (class will
- // be removed in categories/init.js)
- 'class' => 'category-button hidden',
+ $categoryLinks = array_flip( $categoryLinks['normal'] );
+
+ $postContent .=
+ $this->getCategoryListHeader() .
+ $this->getCategoryList( $categories, $categoryLinks ) .
+ $this->getCategoryListFooter();
+
+ return $postContent;
+ }
+
+ /**
+ * Creates the header of the category list with an opening ul and the
title.
+ *
+ * @return string
+ */
+ protected function getCategoryListHeader() {
+ $listHeader = Html::openElement(
+ 'div',
+ [
+ 'class' =>
'mw-mobilefrontend-categories post-content'
+ ]
+ ) .
+ Html::element(
+ 'h2',
+ [
+ 'class' =>
'mw-mobilefrontend-categories-header',
],
- 'label' => $this->getMsg( 'categories' )->text()
- ],
- ];
+ $this->getMsg( 'categories' )->text()
+ ) .
+ Html::openElement(
+ 'ul',
+ [
+ 'class' =>
'mw-mobilefrontend-categories-list',
+ ]
+ );
+
+ return $listHeader;
+ }
+
+ /**
+ * Return the closing footer for the category list.
+ *
+ * @return string
+ */
+ protected function getCategoryListFooter() {
+ return Html::closeElement( 'ul' ) .
+ Html::closeElement( 'div' );
+ }
+
+ /**
+ * Returns the list of categories, which should be added to the output.
+ *
+ * @param $categories
+ * @param $categoryLinks
+ *
+ * @return string
+ */
+ protected function getCategoryList( $categories, $categoryLinks ) {
+ global $wgContLang;
+
+ $listHtml = '';
+ $categoryCount = 1;
+ $showMoreLink = false;
+ foreach ( $categories as $category ) {
+ if ( $categoryCount === 3 ) {
+ $showMoreLink = true;
+ break;
+ }
+
+ $title = Title::newFromText( $category, NS_CATEGORY );
+ if ( isset( $categoryLinks[Linker::link( $title,
+ $wgContLang->convertHtml(
$title->getText() ) )] ) ) {
+
+ $listHtml .= Html::openElement(
+ 'a',
+ [
+ 'href' =>
$title->getLocalURL(),
+ 'class' =>
'mw-mobilefrontend-categories-category',
+ ]
+ ) .
+ Html::rawElement(
+ 'li',
+ [],
+ $category
+ ) .
+ Html::closeElement( 'a' );
+
+ $categoryCount++;
+ }
+ }
+
+ if ( $showMoreLink ) {
+ $listHtml .= $this->getCategroyLinkHtml( $categoryLinks
);
+ }
+
+ return $listHtml;
+ }
+
+ /**
+ * Returns the html of the category link to see the remaining
categories.
+ * @param $categoryLinks
+ *
+ * @return string
+ */
+ protected function getCategroyLinkHtml( $categoryLinks ) {
+ return Html::openElement(
+ 'a',
+ [
+ 'href' => '#/categories',
+ // add hidden class (the overlay works only,
when JS is enabled (class will
+ // be removed in categories/init.js)
+ 'class' =>
'mw-mobilefrontend-categories-category category-button hidden',
+ ]
+ ) .
+ Html::element(
+ 'li',
+ [],
+ $this->getMsg(
'mobile-frontend-categories-morelink-text' )
+ ->params( count( $categoryLinks ) - 2 )
+ ->text()
+ ) .
+ Html::closeElement( 'li' );
+
}
/**
@@ -60,8 +175,6 @@
'label' => $this->getMsg(
'mobile-frontend-donate-button-label' )->text()
];
}
-
- $result += $this->getCategoryButton();
return $result;
}
diff --git a/includes/skins/SkinMinervaBeta.php
b/includes/skins/SkinMinervaBeta.php
index d004d98..1517f37 100644
--- a/includes/skins/SkinMinervaBeta.php
+++ b/includes/skins/SkinMinervaBeta.php
@@ -126,6 +126,9 @@
if ( $title->isMainPage() ) {
$styles[] = 'skins.minerva.mainPage.beta.styles';
}
+ if ( $this->getCategoryLinks() ) {
+ $styles[] = 'skins.minerva.categories.styles';
+ }
$styles[] = 'skins.minerva.beta.styles';
$styles[] = 'skins.minerva.content.styles.beta';
$styles[] = 'skins.minerva.icons.beta.images';
diff --git a/resources/skins.minerva.categories.styles/categories.less
b/resources/skins.minerva.categories.styles/categories.less
new file mode 100644
index 0000000..ce11299
--- /dev/null
+++ b/resources/skins.minerva.categories.styles/categories.less
@@ -0,0 +1,36 @@
+@import 'minerva.variables';
+
+.mw-mobilefrontend-categories {
+ .mw-mobilefrontend-categories-header {
+ text-transform: uppercase;
+ margin: 1em 0 0.5em;
+ font-size: .8em;
+ font-weight: normal;
+ color: @colorGray9;
+ letter-spacing: 1px;
+ }
+
+ .mw-mobilefrontend-categories-list {
+ .mw-mobilefrontend-categories-category {
+ color: black;
+ text-decoration: none;
+ padding: 0.5em;
+ display: block;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+
+ &.category-button {
+ color: @colorProgressive;
+ }
+ }
+
+ .mw-mobilefrontend-categories-category +
.mw-mobilefrontend-categories-category {
+ border-top: none;
+ }
+ .mw-mobilefrontend-categories-category:first-child {
+ border-radius: 2px 2px 0 0;
+ }
+ .mw-mobilefrontend-categories-category:last-child {
+ border-radius: 0 0 2px 2px;
+ }
+ }
+}
--
To view, visit https://gerrit.wikimedia.org/r/298029
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I97d7de723fe72da26c7dbde0a559a13704c7099a
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MobileFrontend
Gerrit-Branch: master
Gerrit-Owner: Florianschmidtwelzow <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits