Sumit has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/267281

Change subject: [WIP] Enable no-js editing in mobile
......................................................................

[WIP] Enable no-js editing in mobile

Bug: T125174
Change-Id: I4b14c390aefd38b63edbc8e4d671da82e39b0fd9
---
M includes/MobileFrontend.hooks.php
M includes/Resources.php
M includes/skins/SkinMinerva.php
M resources/skins.minerva.base.styles/pageactions.less
M resources/skins.minerva.base.styles/ui.less
M resources/skins.minerva.editor/init.js
R resources/skins.minerva.icons.images/edit.svg
R resources/skins.minerva.icons.images/editLocked.svg
8 files changed, 62 insertions(+), 42 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MobileFrontend 
refs/changes/81/267281/1

diff --git a/includes/MobileFrontend.hooks.php 
b/includes/MobileFrontend.hooks.php
index 65c0256..4f24fce 100644
--- a/includes/MobileFrontend.hooks.php
+++ b/includes/MobileFrontend.hooks.php
@@ -103,16 +103,31 @@
                // log whether user is using beta/stable
                $mobileContext->logMobileMode();
 
-               $skinName = $mobileContext->getMFConfig()->get( 
'MFDefaultSkinClass' );
-               $betaSkinName = $skinName . 'Beta';
-               // Force beta for test mode to sure all modules can run
-               $name = $context->getTitle()->getDBkey();
-               $inTestMode =
-                       $name === SpecialPage::getTitleFor( 'JavaScriptTest', 
'qunit' )->getDBkey();
-               if ( $mobileContext->isBetaGroupMember() && class_exists( 
$betaSkinName ) ) {
-                       $skinName = $betaSkinName;
+               // Allow overriding of skin by useskin e.g. 
useskin=vector&useformat=mobile
+               if ( $context->getRequest()->getVal( 'useskin' ) ) {
+                       $userSkin = $mobileContext->getUser()->getOption( 
'mobileskin' );
+                       $userSkin = $mobileContext->getRequest()->getVal( 
'useskin', $userSkin );
+
+                       // Normalize the key in case the user is passing 
gibberish
+                       // or has old preferences (bug 69566).
+                       $normalized = Skin::normalizeKey( $userSkin );
+
+                       // Skin::normalizeKey will also validate it, so
+                       // this won't throw an exception
+                       $factory = SkinFactory::getDefaultInstance();
+                       $skin = $factory->makeSkin( $normalized );
+               } else {
+                       $skinName = $mobileContext->getMFConfig()->get( 
'MFDefaultSkinClass' );
+                       $betaSkinName = $skinName . 'Beta';
+                       // Force beta for test mode to sure all modules can run
+                       $name = $context->getTitle()->getDBkey();
+                       $inTestMode =
+                               $name === SpecialPage::getTitleFor( 
'JavaScriptTest', 'qunit' )->getDBkey();
+                       if ( $mobileContext->isBetaGroupMember() && 
class_exists( $betaSkinName ) ) {
+                               $skinName = $betaSkinName;
+                       }
+                       $skin = new $skinName( $context );
                }
-               $skin = new $skinName( $context );
 
                return false;
        }
@@ -805,22 +820,6 @@
         * @return bool
         */
        public static function onCustomEditor( $article, $user ) {
-               $context = MobileContext::singleton();
-
-               // redirect to mobile editor instead of showing desktop editor
-               if ( $context->shouldDisplayMobileView() && 
!$context->getRequest()->wasPosted() ) {
-                       $output = $context->getOutput();
-                       $data = $output->getRequest()->getValues();
-                       // Unset these to avoid a redirect loop but make sure 
we pass other
-                       // parameters to edit e.g. undo actions
-                       unset( $data['action'] );
-                       unset( $data['title'] );
-
-                       $output->redirect( SpecialPage::getTitleFor( 
'MobileEditor', $article->getTitle() )
-                               ->getFullURL( $data ) );
-                       return false;
-               }
-
                return true;
        }
 
diff --git a/includes/Resources.php b/includes/Resources.php
index e5619b1..71ed316 100644
--- a/includes/Resources.php
+++ b/includes/Resources.php
@@ -82,6 +82,8 @@
                        // T97410 is resolved.
                        'notifications' => 
'resources/skins.minerva.icons.images/bell.svg',
                        'mainmenu' => 
'resources/skins.minerva.icons.images/hamburger.svg',
+                       'edit' => 
'resources/skins.minerva.icons.images/editLocked.svg',
+                       'edit-enabled' => 
'resources/skins.minerva.icons.images/edit.svg'
                )
        ),
 
@@ -1425,8 +1427,6 @@
                        'talk' => 
'resources/skins.minerva.icons.images.scripts/talk.svg',
                        'watch' => 
'resources/skins.minerva.icons.images.scripts/watch.svg',
                        'watched' => 
'resources/skins.minerva.icons.images.scripts/watched.svg',
-                       'edit' => 
'resources/skins.minerva.icons.images.scripts/editLocked.svg',
-                       'edit-enabled' => 
'resources/skins.minerva.icons.images.scripts/edit.svg',
 
                        // User
                        'user' => 
'resources/skins.minerva.icons.images.scripts/userNormal.svg',
diff --git a/includes/skins/SkinMinerva.php b/includes/skins/SkinMinerva.php
index 955113f..bb0f10b 100644
--- a/includes/skins/SkinMinerva.php
+++ b/includes/skins/SkinMinerva.php
@@ -138,7 +138,7 @@
                        $message = wfMessage( 'mobile-frontend-editor-edit' 
)->inLanguage( $lang )->text();
                        $html = Html::openElement( 'span' );
                        $html .= Html::element( 'a', array(
-                               'href' => '#/editor/' . $section,
+                               'href' => '?action=edit&section=' . $section,
                                'title' => wfMessage( 'editsectionhint', 
$tooltip )->inLanguage( $lang )->text(),
                                'data-section' => $section,
                                // Note visibility of the edit section link 
button is controlled by .edit-page in ui.less so
@@ -812,7 +812,13 @@
                if ( $this->isAllowedPageAction( 'edit' ) ) {
                        $menu['edit'] = array( 'id' => 'ca-edit', 'text' => '',
                                'itemtitle' => $this->msg( 
'mobile-frontend-pageaction-edit-tooltip' ),
-                               'class' => MobileUI::iconClass( 'edit', 
'element', 'hidden' ),
+                               'class' => MobileUI::iconClass( 'edit-enabled', 
'element' ),
+                               'links' => array( 
+                                               'edit' => array(
+                                                       'href' => 
'?action=edit&section=0',
+                                                       'class' => 'nojs-edit'
+                                       ) 
+                               )
                        );
                }
 
diff --git a/resources/skins.minerva.base.styles/pageactions.less 
b/resources/skins.minerva.base.styles/pageactions.less
index 5404c3b..da8411f 100644
--- a/resources/skins.minerva.base.styles/pageactions.less
+++ b/resources/skins.minerva.base.styles/pageactions.less
@@ -8,7 +8,6 @@
 
 // hide menu items when not possible to use
 .client-nojs #ca-watch,
-.client-nojs #ca-edit,
 #ca-talk.selected {
        display: none;
 }
diff --git a/resources/skins.minerva.base.styles/ui.less 
b/resources/skins.minerva.base.styles/ui.less
index ae21792..3bb298e 100644
--- a/resources/skins.minerva.base.styles/ui.less
+++ b/resources/skins.minerva.base.styles/ui.less
@@ -124,6 +124,11 @@
                        padding: .5em .1em;
                }
        }
+
+       .edit-page {
+               display: inline-block;
+               float: right;
+       }
 }
 
 input.search {
@@ -139,9 +144,26 @@
        }
 }
 
+textarea.mw-ui-input {
+       max-height: 14em;
+}
+
 // FIXME: remove when micro.tap in stable and rule from common-js.less too
 .search-box {
        -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
+}
+
+.client-js {
+       .edit-page {
+               display: none;
+       }
+
+       .open-block {
+               // Restrict to child so that child section edit links do not 
get revealed.
+               .edit-page {
+                       display: inline-block;
+               }
+       }
 }
 
 .content {
@@ -165,18 +187,7 @@
                .edit-page {
                        font-size: 1 / @fontSizeH3;
                }
-       }
-
-       .edit-page {
-               display: none;
-       }
-
-       .open-block {
-               // Restrict to child so that child section edit links do not 
get revealed.
-               .edit-page {
-                       display: inline-block;
-               }
-       }
+       }       
 
        .section-heading,
        .in-block {
diff --git a/resources/skins.minerva.editor/init.js 
b/resources/skins.minerva.editor/init.js
index e0f2399..bcd5e18 100644
--- a/resources/skins.minerva.editor/init.js
+++ b/resources/skins.minerva.editor/init.js
@@ -124,6 +124,10 @@
                        window.alert( mw.msg( 
'mobile-frontend-editor-undo-unsupported' ) );
                }
 
+               page.$( '.edit-page' ).on( 'click', function () {
+                       router.navigate( '#/editor/' + $( this ).data( 
'section' ) );
+                       return false;
+               } );
                overlayManager.add( /^\/editor\/(\d+)$/, function ( sectionId ) 
{
                        var
                                $content = $( '#mw-content-text' ),
@@ -247,6 +251,7 @@
                // FIXME: split the selector and cache it
                if ( $caEdit.find( '.edit-page' ).length === 0 ) {
                        // FIXME: unfortunately the main page is special cased.
+                       $( '.nojs-edit'  ).remove();
                        if ( mw.config.get( 'wgIsMainPage' ) || isNewPage || 
page.getLeadSectionElement().text() ) {
                                // if lead section is not empty, open editor 
with lead section
                                addEditButton( 0, '#ca-edit' );
diff --git a/resources/skins.minerva.icons.images.scripts/edit.svg 
b/resources/skins.minerva.icons.images/edit.svg
similarity index 100%
rename from resources/skins.minerva.icons.images.scripts/edit.svg
rename to resources/skins.minerva.icons.images/edit.svg
diff --git a/resources/skins.minerva.icons.images.scripts/editLocked.svg 
b/resources/skins.minerva.icons.images/editLocked.svg
similarity index 100%
rename from resources/skins.minerva.icons.images.scripts/editLocked.svg
rename to resources/skins.minerva.icons.images/editLocked.svg

-- 
To view, visit https://gerrit.wikimedia.org/r/267281
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4b14c390aefd38b63edbc8e4d671da82e39b0fd9
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MobileFrontend
Gerrit-Branch: master
Gerrit-Owner: Sumit <asthana.sumi...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to