jenkins-bot has submitted this change and it was merged.

Change subject: Store side rail state in user preferences
......................................................................


Store side rail state in user preferences

* Store side rail state on expand and collapse.

* Read preferences on load and collapse side rail if needed.

* It only applies for logged in users.

Bug: T97367
Change-Id: I4231383346a4b03ee744ad7d467ab54e71267c85
---
M Flow.php
M Hooks.php
M handlebars/compiled/flow_block_header.handlebars.php
M handlebars/flow_block_header.handlebars
M modules/engine/components/board/features/flow-board-side-rail.js
5 files changed, 35 insertions(+), 7 deletions(-)

Approvals:
  Catrope: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/Flow.php b/Flow.php
index e2344da..0258a38 100644
--- a/Flow.php
+++ b/Flow.php
@@ -266,6 +266,9 @@
 // Default editor to use in Flow
 $wgDefaultUserOptions['flow-editor'] = 'none';
 
+// Default state of the side rail
+$wgDefaultUserOptions['flow-side-rail-state'] = 'expanded';
+
 // Maximum number of users that can be mentioned in one comment
 $wgFlowMaxMentionCount = 100;
 
diff --git a/Hooks.php b/Hooks.php
index c43014d..5fbe29a 100644
--- a/Hooks.php
+++ b/Hooks.php
@@ -1007,6 +1007,10 @@
                        'type' => 'api'
                );
 
+               $preferences['flow-side-rail-state'] = array(
+                       'type' => 'api'
+               );
+
                return true;
        }
 
diff --git a/handlebars/compiled/flow_block_header.handlebars.php 
b/handlebars/compiled/flow_block_header.handlebars.php
index b84c647..3ed362f 100644
--- a/handlebars/compiled/flow_block_header.handlebars.php
+++ b/handlebars/compiled/flow_block_header.handlebars.php
@@ -58,7 +58,7 @@
 
     );
     
-    return '<div class="flow-board-header">
+    return '<div class="flow-board-header flow-load-interactive" 
data-flow-load-handler="loadSideRail">
 '.LCRun3::p($cx, 'flow_header_title', array(array($in),array()), '     
').''.LCRun3::p($cx, 'flow_errors', array(array($in),array()), '        
').''.LCRun3::p($cx, 'flow_header_detail', array(array($in),array()), ' 
').'</div>
 ';
 }
diff --git a/handlebars/flow_block_header.handlebars 
b/handlebars/flow_block_header.handlebars
index 60c5f77..9db751c 100644
--- a/handlebars/flow_block_header.handlebars
+++ b/handlebars/flow_block_header.handlebars
@@ -1,4 +1,4 @@
-<div class="flow-board-header">
+<div class="flow-board-header flow-load-interactive" 
data-flow-load-handler="loadSideRail">
        {{> flow_header_title}}
        {{> flow_errors}}
        {{> flow_header_detail}}
diff --git a/modules/engine/components/board/features/flow-board-side-rail.js 
b/modules/engine/components/board/features/flow-board-side-rail.js
index be4ada3..d80a996 100644
--- a/modules/engine/components/board/features/flow-board-side-rail.js
+++ b/modules/engine/components/board/features/flow-board-side-rail.js
@@ -25,21 +25,42 @@
        };
 
        //
+       // Load handlers
+       //
+
+       /**
+        * Sets side rail state based on user preferences.
+        *
+        * @param {Event} event
+        */
+       function FlowBoardComponentSideRailFeatureMixinLoadCallback( event ) {
+               if ( mw.user.options.get( 'flow-side-rail-state' ) === 
'collapsed' ) {
+                       $( '.flow-component' ).addClass( 'expanded' );
+               }
+       }
+       
FlowBoardComponentSideRailFeatureMixin.UI.events.loadHandlers.loadSideRail = 
FlowBoardComponentSideRailFeatureMixinLoadCallback;
+
+       //
        // On element-click handlers
        //
 
        /**
+        * Toggles side rail state and sets user preferences.
         *
         * @param {Event} event
         */
        function FlowBoardComponentSideRailFeatureMixinToggleCallback( event ) {
-               $( '.flow-component' ).toggleClass( 'expanded' );
+               var boardIsExpanded = $( '.flow-component' ).toggleClass( 
'expanded' ).hasClass( 'expanded' ),
+                       sideRailState = boardIsExpanded ? 'collapsed' : 
'expanded';
+
+               if ( !mw.user.isAnon() ) {
+                       // update the user preferences; no preferences for anons
+                       new mw.Api().saveOption( 'flow-side-rail-state', 
sideRailState );
+                       // ensure we also see that preference in the current 
page
+                       mw.user.options.set( 'flow-side-rail-state', 
sideRailState );
+               }
        }
        
FlowBoardComponentSideRailFeatureMixin.UI.events.interactiveHandlers.toggleSideRail
 = FlowBoardComponentSideRailFeatureMixinToggleCallback;
-
-       //
-       // Private functions
-       //
 
        // Mixin to FlowComponent
        mw.flow.mixinComponent( 'component', 
FlowBoardComponentSideRailFeatureMixin );

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I4231383346a4b03ee744ad7d467ab54e71267c85
Gerrit-PatchSet: 6
Gerrit-Project: mediawiki/extensions/Flow
Gerrit-Branch: master
Gerrit-Owner: Sbisson <sbis...@wikimedia.org>
Gerrit-Reviewer: Catrope <roan.katt...@gmail.com>
Gerrit-Reviewer: Legoktm <legoktm.wikipe...@gmail.com>
Gerrit-Reviewer: Mattflaschen <mflasc...@wikimedia.org>
Gerrit-Reviewer: Matthias Mullie <mmul...@wikimedia.org>
Gerrit-Reviewer: Mooeypoo <mor...@gmail.com>
Gerrit-Reviewer: Sbisson <sbis...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to