Jump to content

Extension talk:MobileFrontend/Flow

About this board

If you have a feature request just request it here you'll get a much quicker reply :-) We are also around in #wikimedia-mobile if you want a quicker answer!

If you are trying to replicate behaviour you see on Wikimedia sites, please be sure to read through the configuration options before asking a question here.

How to Customize Mobile Menu Links

16
Knomanii (talkcontribs)

Like others have mentioned, the Mobile Menu isn't editable, and the solutions listed elsewhere tend to be somewhat outdated (GetDiscoveryTools() is no longer present in MinervaSkin.php).

So I made a simple Mobile.js script that did the trick for me. I thought I'd share it in case it helps others.

Here's what the custom links look like — there's a dropdown and a regular version that you can customize. To customize the icon, use the icon classes listed below.

Here's the code I added to Mobile.js:


  /* Add to MediaWiki:Mobile.js for custom Mobile Menu links 
  for MW-1.34.2 with MobileFrontend and MinervaNeue 
  Just replace span text and href to add links */
   
  var timer = setInterval(function() {
       if ($('.menu ul:first').length) {
           console.log("mobile menu exists");
           clearInterval(timer);
           $('.menu ul:first').after(
                 '<ul class="level1"> \
                      <li> \
                      <a href="#" \
                            class="mw-ui-icon mw-ui-icon-before mw-ui-icon-minerva-watchlist"> \
                      <span>Dropdown Links</span> \
                      </a> \
                      </li> \
                      <ul class ="level2"> \
                           <li> \
                           <a href="/wiki/Link_1" \
                                 class="mw-ui-icon mw-ui-icon-before"> \
                           <span>Link 1</span> \
                           </a> \
                           </li> \
                           <li> \
                           <a href="/wiki/Link_2" \
                                 class="mw-ui-icon mw-ui-icon-before"> \
                           <span>Link 2</span> \
                           </a> \
                           </li> \
                           <li> \
                           <a href="/wiki/Link_3" \
                                 class="mw-ui-icon mw-ui-icon-before"> \
                           <span>Link 3</span> \
                           </a> \
                           </li> \
                      </ul> \
                 </ul> \
                 <ul> \
                      <li> \
                      <a href="/wiki/Second_Link" \
                            class="mw-ui-icon mw-ui-icon-before mw-ui-icon-minerva-watchlist"> \
                      <span>Second Link</span> \
                      </a> \
                      </li> \
                 </ul>'
            );
            $(".menu").find(".level2").hide(); // hide level2 until level1 is clicked
            $(".level1").click(function(event){ 
                 $(this).find(".level2").slideToggle(500);
            }); // if level1 is clicked, dropdown level2
       }
  }, 100); // check every 100ms

Tested on:
MediaWiki 1.34.2 and 1.35.0
MinervaNeue (d0be74a) 06:41, 1 October 2019
MobileFrontend 2.1.0 (383273b) 11:42, 7 January 2020

P.S. Apparently folks are working on an official solution for this using mw.util.addPortletLink (see phab:T65459, phab:T231925 and phab:T240910), but it still has some styling issues and I wasn't able to figure out how to implement it for the Mobile Menu. If you know how implement AddPortletLink for this, please do share!


_________________________________________________________________________

Update 11/19/20:

To customize the MobileMenu Icons, below is a compiled list of Icon classes found by @Lady G2016, @Ianbirtwistle, and myself. If you find more, feel free to share them in this thread.


Here's a list of known icons by version.

To add them, simply add the icon class in place of "mw-ui-icon-minerva-watchlist"


MW-1.34.2 Icon classes

  • Dice: mw-ui-icon-minerva-random
  • Home: mw-ui-icon-minerva-home
  • Settings: mw-ui-icon-minerva-settings
  • Speech Bubbles: mw-ui-icon-minerva-userContributions
  • Watchlist: mw-ui-icon-minerva-watchlist


MW-1.35 Icon classes

  • Bell: mw-ui-icon-wikimedia-bellOutline-base20
  • Dice: mw-ui-icon-minerva-die
  • Download: mw-ui-icon-minerva-download
  • Expand: mw-ui-icon-mf-expand
  • Edit: mw-ui-icon-wikimedia-edit-base20
  • Edit lock: mw-ui-icon-wikimedia-editLock-base20
  • History: mw-ui-icon-wikimedia-history-base20
  • Home: mw-ui-icon-minerva-home
  • Language: mw-ui-icon-wikimedia-language-base20
  • Map pin: mw-ui-icon-minerva-mapPin
  • Search: mw-ui-icon-wikimedia-search-base20
  • Settings: mw-ui-icon-minerva-settings
  • Speech Bubbles: mw-ui-icon-minerva-speechBubbles
  • Star: mw-ui-icon-wikimedia-star-base20
  • Star (solid blue): mw-ui-icon-wikimedia-unStar-progressive
  • Watchlist: mw-ui-icon-minerva-unStar
Lady G2016 (talkcontribs)

I was also unable to figure out how to implement mw.util.addPortletLink and I think some styling issues remain. Your code works perfectly. Thank you.


Tested on localhost as:

MediaWiki 1.35.0-rc.2

MinervaNeue (22bf7fa) 11:06, 11 July 2020

MobileFrontend 2.3.0 (d99e8b1) 10:54, 29 July 2020

Ianbirtwistle (talkcontribs)

I've used your script to add some links. Many thanks for this. The only issue I came across was the icons not loading, perhaps the link has changed since you last wrote this? I simply replaced mw-ui-icon-minerva-watchlist for an active icon. mw-ui-icon-minerva-mapPin and mw-ui-icon-wikimedia-star-base20 both work well.

Script tested on live site

MediaWiki 1.35

MinervaNeue – (bb52d27) 16:16, 21 September 2020

MobileFrontend 2.3.0 (8d06152) 13:42, 21 September 2020

Lady G2016 (talkcontribs)

Using @Ianbirtwistle's suggestion, I found active icons with my browser's debugging tool (Chrome Inspect). Here is a list of icons I have found (and those found by Ianbirtwistle):

  • Bell: mw-ui-icon-wikimedia-bellOutline-base20
  • Download: mw-ui-icon-minerva-download
  • Expand: mw-ui-icon-mf-expand
  • Edit: mw-ui-icon-wikimedia-edit-base20
  • Edit lock: mw-ui-icon-wikimedia-editLock-base20
  • History: mw-ui-icon-wikimedia-history-base20
  • Language: mw-ui-icon-wikimedia-language-base20
  • Map pin: mw-ui-icon-minerva-mapPin
  • Search: mw-ui-icon-wikimedia-search-base20
  • Star: mw-ui-icon-wikimedia-star-base20
  • Star (solid blue): mw-ui-icon-wikimedia-unStar-progressive

The icon size can be reduced by adding the small icon class (mw-ui-icon-small) to the class attribute.

It is important to have a UI that is consistent with the skin. The list contains icons which may not be appropriate as a sidebar menu, but use your judgment.

Drop-down links should use a small "Expand" icon. The additional classes needed to flip the icon vertically when the link is clicked didn't work.

Here's an updated example with the drop-down link icon.

var timer = setInterval(function() {
     if ($('.menu ul:first').length) {
         console.log("mobile menu exists");
         clearInterval(timer);
         $('.menu ul:first').after(
             '<ul class="level1"> \
                    <li> \
                    <a href="#" \
                    class="mw-ui-icon mw-ui-icon-before mw-ui-icon-mf-expand mw-ui-icon-small"> \
                    <span>Dropdown Links</span> \
                    </a> \
                    </li> \
                    <ul class="level2"> \
                         <li> \
                         <a href="/wiki/Link_1" \
                         class="mw-ui-icon mw-ui-icon-before mw-ui-icon-minerva-download"> \
                         <span>Link 1</span> \
                         </a> \
                         </li> \
                         <li> \
                         <a href="/wiki/Link_2" \
                         class="mw-ui-icon mw-ui-icon-before mw-ui-icon-minerva-mapPin"> \
                         <span>Link 2</span> \
                         </a> \
                         </li> \
                         <li> \
                         <a href="/wiki/Link_3" \
                         class="mw-ui-icon mw-ui-icon-before mw-ui-icon-wikimedia-bellOutline-base20"> \
                         <span>Link 3</span> \
                         </a> \
                         </li> \
                    </ul> \
               </ul>\
               <ul> \
                    <li> \
                    <a href="/wiki/Second_Link" \
                    class="mw-ui-icon mw-ui-icon-before mw-ui-icon-wikimedia-star-base20"> \
                    <span>Second Link</span> \
                    </a> \
                    </li> \
               </ul>'
          );
          $(".menu").find(".level2").hide(); // hide level2 until level1 is clicked
          $(".level1").click(function(event){ 
               $(this).find(".level2").slideToggle(500);
          }); // if level1 is clicked, dropdown level2
     }
}, 100); // check every 100ms

Tested on localhost
MediaWiki: 1.35.0
MobileFrontEnd: (8d06152) 20:42, 21 September 2020 (info from gitinfo.json)
MinervaNeue: (bb52d27) 23:16, 21 September 2020 (info from gitinfo.json)

Knomanii (talkcontribs)

Thanks @Lady G2016 for compiling the icon list! I'll have to try those out.

@Ianbirtwistle Thanks for sharing that. One thing I've noticed is that icon usability can vary based on MobileFrontend configuration. For example, if I enable MobileFrontend's Beta mode, then some of my icons may stop working while others become available.

I'm not sure if that's why the watchlist icon didn't work for you, but it might be related.

On my wiki, I actually used this info so I could gain access to other icons.

I used $wgMinervaAdvancedMainMenu from the MinevaNeue configuration settings to add the "Recent Changes" section to the mobile menu. Then I was able to use the Recent Changes icon class mw-ui-icon-minerva-recentchanges.

Here are my full MobileFrontend and Minerva settings:

wfLoadExtension( 'MobileFrontend' );
$wgMFAutodetectMobileView = true;
$wgMFDefaultSkinClass = "SkinMinerva";
wfLoadSkin( 'MinervaNeue' );
$wgMinervaAdvancedMainMenu = [
   'beta' => false,
   'base' => true,
   'amc' => true,
 ];
$wgMinervaPersonalMenu = [
   'beta' => false,
   'base' => true,
   'amc' => true,
 ];

Using these $wgMinervaAdvancedMainMenu settings, the following Icons became available:

  • mw-ui-icon-minerva-recentchanges
  • mw-ui-icon-minerva-specialpages
  • mw-ui-icon-minerva-communityportal

Here's a screenshot showing how I customized the icons for my mobile menu.

(Tested on MW-1.34.2)

Knomanii (talkcontribs)

@Ianbirtwistle I just upgraded to MW-1.35.0 and encountered the same issue! All the icon class names have changed slightly with the latest update.

The class name of the following icons changed between 1.34.2 and 1.35.0.

  • Watchlist
    • 1.34.2: mw-ui-icon-minerva-watchlist
    • 1.35.0: mw-ui-icon-minerva-unStar
  • Speech Bubbles (with $wgMinervaAdvancedMainMenu settings only)
    • 1.34.2: mw-ui-icon-minerva-communityportal
    • 1.35.0: mw-ui-icon-minerva-speechBubbles
  • Dice
    • 1.34.2: mw-ui-icon-minerva-random
    • 1.35.0: mw-ui-icon-minerva-die
  • RecentChanges (with $wgMinervaAdvancedMainMenu settings only)
    • 1.34.2: mw-ui-icon-minerva-recentchanges
    • 1.35.0: mw-ui-icon-minerva-recentChanges
  • User Contributions
    • 1.34.2: mw-ui-icon-minerva-contributions
    • 1.35.0: mw-ui-icon-minerva-userContributions
  • Special Pages: (with $wgMinervaAdvancedMainMenu settings only)
    • 1.34.2: mw-ui-icon-minerva-specialpages
    • 1.35.0: mw-ui-icon-minerva-specialPages

I'll update my original instructions with the new watchlist icon class.

Lady G2016 (talkcontribs)

@Knomanii The first three of your icons do not appear in the menu unless $wgMinervaAdvancedMainMenu is configured with your settings.

  • mw-ui-icon-minerva-recentChanges (not visible)
  • mw-ui-icon-minerva-specialPages (not visible)
  • mw-ui-icon-minerva-speechBubble (not visible)
  • mw-ui-icon-minerva-userContributions (visible in menu)

When I use your configuration, the icons appear, but the Log in link is no longer visible. I must have a visible Log in link.

I recommend updating the original instructions to indicate which icons require the $wgMinervaAdvancedMainMenu settings.

171.246.102.136 (talkcontribs)

@Knomanii thanks so much

ive been looking for the solution for a while

your code been a big help

Knomanii (talkcontribs)
Xsteeplol (talkcontribs)

Hi, thank you all for this post, I found it very useful.

I would like to know if it was possible to change the color of the mobile menu icons or replace them with custom icons

Knomanii (talkcontribs)

@Xsteeplol There might be a way to do that with some custom javascript. You can already use any icon that already has an associated icon class (see discussion above), but I'm not sure how you'd adjust the color or use a custom icon instead. You might try inspecting the element where the icon is inserted and see what you can alter with javascript.

116.90.77.52 (talkcontribs)

Thank you very much. Script still works in Dec 2022, using latest stable mobile:frontend 2.4.1. For newbies such as myself, i accessed mobile.js by replacing Main_Page in address bar with MediaWiki:Mobile.js

Lady G2016 (talkcontribs)

The MediaWiki:Mobile.js script is still working with MediaWiki 1.39.1 and MobileFrontend 2.4.0.

58.26.207.18 (talkcontribs)

How to make the DropdownLinks auto show/expand the sub links instead of click it ?

Kyebert (talkcontribs)

Hello, I tried to implement this on https://www.veikkos-archiv.com/index.php?title=MediaWiki:Mobile.js - but still without any effect. I thought it could also be due to extensions like SemanticMediaWiki or ParserFunctions. But it seems not. Are there any other ideas as to why this javascript is being suppressed? I look forward to help.

Darkaragon (talkcontribs)

Hey, for me the same issue. I cannot understand why such a professional extension does not have the possibility to change the menu entrys?

I would be really happy to find a solution for this problem but im not able to code it by myself.

greetings

Reply to "How to Customize Mobile Menu Links"
77.227.173.60 (talkcontribs)
Reply to "git repo not found:"

Declaration of MobileFormatter::parseItemsToRemove() must be compatible with HtmlFormatter

1
Spiros71 (talkcontribs)

MW 1.39.8. I am getting this error and blank page when I try to use the extension (tried php 7.4 and 8.1).

Fatal error: Declaration of MobileFormatter::parseItemsToRemove() must be compatible with HtmlFormatter\HtmlFormatter::parseItemsToRemove(): array in MobileFrontend/includes/MobileFormatter.php on line 67

Using

wfLoadExtension( 'MobileFrontend' );
wfLoadSkin( 'MinervaNeue' );
$wgDefaultMobileSkin = 'minerva';

Edit: Looks like it is an issue with HTML formatter versions. If I use in vendor/wikimedia/html-formatter

HTML formatter 3.0.1, MobileFrontend works BUT TextExtracts/Popups DO NOT work

Conversely with HTML formatter 4.0.3, TextExtracts/Popups work but not MobileFrontend.

See https://phabricator.wikimedia.org/T376029

Reply to "Declaration of MobileFormatter::parseItemsToRemove() must be compatible with HtmlFormatter"
Lwangaman (talkcontribs)

I have installed the MobileFrontend extension on an external wiki, and set the Minerva skin as default for mobile. The Minerva skin is loading correctly when viewing from mobile. However, I'm noticing that Mobile.js never gets loaded. I put a simple console.log('Hello World from Mobile.js') in Mobile.js, but I never see that message in the console even viewing as mobile from the Chrome developer tools. Are there any settings that need to be set so that Mobile.js gets loaded? Here is my Mobile.js: https://en.seminaverbi.bibleget.io/wiki/MediaWiki:Mobile.js .

Lwangaman (talkcontribs)

I'm also seeing that Common.js is loading always, instead of being replaced by Mobile.js. I added a console.log('Hello World from Common.js!'); to my Common.js, and I'm seeing this message in the console even when viewing as mobile from Chrome developer tools...

Jdlrobson (talkcontribs)

Yes this is the correct behaviour. MobileFrontend loads Common.js and Minerva.js now. Mobile.js is in the process of being removed.

Use Minerva.js for anything specific to the Minerva skin.

Reply to "Mobile.js not loading"

Excluding access to code on mobile devices

1
Virum Mundi (talkcontribs)

Hi all, I'm not sure this is the right place to ask it, but I'll go ahead anyway.

I'm trying to find a way to exclude a header (introduced between double curly brackets as a template) in the mobile version. This specific header creates an undesired design failure in the mobile version, but not on the desktop, so I wouldn't like to supress it altogether.

The span class="nomobile" doesn't help, since it first compiles the header, and afterwards it just doesn't parse it on mobiles (it's a css solution after all, so the error is still there, and it affects the data outside the span tags).

I need a way for the code to actually not access the header page at all in the mobile version (not to even reach the compilation phase).

I though about using an #if, but I can't find a magic word which informs of the used platform.

Is there such a magic word o something of the sort? Is there any way to exclude access to code on mobile devices (not only prevent it from showing)?

Thanks.

Reply to "Excluding access to code on mobile devices"

hCaptcha not appearing in MinervaNeue

1
鈴音雨 (talkcontribs)

Hi, I am trying to get ConfirmEdit to work for the action "edit" as in WMF Wiki, I have MobileFrontend and MinervaNeue installed and ConfirmEdit uses hCaptcha. Now, when I edit a page on mobile and try to save it, I just get a placeholder text box that says "確認コードを入力" ("Enter confirm code", I am using a Japanese client, so it is in Japanese), The hCaptcha module does not appear. This is not a problem when creating an account on mobile or editing on PC. hCaptcha module appears without any problem. MobileFrontend 2.4.1 (8e9aead), ConfirmEdit 1.6.0. How can I resolve this?

Reply to "hCaptcha not appearing in MinervaNeue"

MobileFrontend loads Minerva.css and not Mobile.css

1
Faragona (talkcontribs)
Reply to "MobileFrontend loads Minerva.css and not Mobile.css"

Mobile web html (m.wikipedia) - mobileformat parse prop

2
TomerLerner (talkcontribs)

Hello,

I have a question regarding "mobileformat" param for parse API, we've seen that it is expected to be deprecated in favor of PCS here.

but, no notice at all under parse API docs here: https://www.mediawiki.org/wiki/API:Parsing_wikitext#API_documentation

I guess what I am asking is if the endpoint https://en.wikipedia.org/w/api.php?action=parse&page={title}&mobileformat is stable or will be deprecated anytime soon?


Thank you 🙏

Jdlrobson (talkcontribs)
Reply to "Mobile web html (m.wikipedia) - mobileformat parse prop"

Extension Widgets don't working in MobileFrontend

2
82.200.42.2 (talkcontribs)

also gallery mode="slideshow" not showing on the toggle_view_mobile page. Problem started when i updated mediawiki to 1.40.1

School4schools (talkcontribs)

Any progress of behavior of Gallery display on MobileFrontend? On my site, it does not showing captions and instead read "License information" along w/ the "Details" button.

Reply to "Extension Widgets don't working in MobileFrontend"

How can I hide certain parts of the page only from mobile view of Mediawiki?

12
Happily8 (talkcontribs)

I am using MobileFrontEnd to generate the mobile view.

How can I hide certain elements from mobile view of Mediawiki?

Things like

<noinclude>content</noinclude>

will completely hide the content both from mobile view and desktop view,

but is there any code that will hide the content only from mobile view?

Nemo bis (talkcontribs)

You can use nomobile class, e.g. <span class="nomobile">hide this</span>. We also used to use noprint, but it was removed.

Happily8 (talkcontribs)

Thank you! Your answer helps me a lot. However it seems that there are two things. <span class="nomobile"> and <span class='nomobile'> Is there any difference between the two? Thank you again!

Nemo bis (talkcontribs)

Two things? I only see one, nomobile.

Happily8 (talkcontribs)

Oh I am sorry, I forgot to put nowiki tag when I put codes in the question. I fixed the question. Thank you!

Nemo bis (talkcontribs)

It's the same thing.

Happily8 (talkcontribs)

Thank you! I could check that the tag can hide texts from mobile view. However, it couldn't hide the whole table. I tried

<span class="nomobile"> {| class="wikitable mw-collapsible mw-collapsed" style="width: 50%;" |- ! title |- |dfsdf |- |}</span>

but it didn't hide the table from mobile. So instead I tried this

{| class="wikitable mw-collapsible mw-collapsed" |- !<span class="nomobile">blahblah</span> |- |<span class="nomobile">kk</span> |}

It worked. But isn't there any way to hide the whole table more simply?

Actually I decided to hide it because the table wasn't collapsed in the mobile. So if the question at https://www.mediawiki.org/wiki/Extension_talk:MobileFrontend#mw-collapsible_not_compatible_with_Mobilefrontend.3F_32385 is resolved, then I might not need <span class="nomobile"> in the first place :)

Edokter (talkcontribs)

You can't put a table inside a span; use <div class="nomobile">...</div> instead.

Blinkingline (talkcontribs)

Weird question, but is there a way to make parts of the main page only show up to Mobile view with a similar div class statement?

94.221.183.87 (talkcontribs)

class="mobileonly"

2001:1388:19:BB15:8995:D67F:7754:C714 (talkcontribs)

for show up on mobile only: mobileonly.

just on desktop view: nomobile

M.J.W.B. (talkcontribs)

Hi guys, I am trying to show an image on my page only on desktop, but hide it on mobile. I can't get it to work. I tried:

<span class="nomobile">[[File:MB.jpg|alt=Michael Beijer|thumb|Michael Beijer]]</span>  and  <div class="nomobile">[[File:MB.jpg|alt=Michael Beijer|thumb|Michael Beijer]]</div>

M.J.W.B. (talk) 21:50, 6 February 2024 (UTC)

Reply to "How can I hide certain parts of the page only from mobile view of Mediawiki?"