Esanders has uploaded a new change for review.

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

Change subject: WIP Sectioned edit target for page namespace
......................................................................

WIP Sectioned edit target for page namespace

Bug: T48580
Depends-On: If67bab93da355da609b6df274514b5c72a6ed91a
Change-Id: Idc1c6b326b29f7fe21f41f722bc9f241a35da7ca
---
M extension.json
A modules/ve/pageTarget/ve.ce.MWPagesSectionNode.js
A modules/ve/pageTarget/ve.dm.MWPagesSectionNode.js
A modules/ve/pageTarget/ve.init.mw.ProofreadPagePageTarget.css
A modules/ve/pageTarget/ve.init.mw.ProofreadPagePageTarget.js
5 files changed, 210 insertions(+), 1 deletion(-)


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

diff --git a/extension.json b/extension.json
index 70b8f46..a549bc3 100644
--- a/extension.json
+++ b/extension.json
@@ -198,6 +198,23 @@
                                "desktop",
                                "mobile"
                        ]
+               },
+               "ext.proofreadpage.ve.pageTarget": {
+                       "scripts": [
+                               
"ve/pageTarget/ve.init.mw.ProofreadPagePageTarget.js",
+                               "ve/pageTarget/ve.dm.MWPagesSectionNode.js",
+                               "ve/pageTarget/ve.ce.MWPagesSectionNode.js"
+                       ],
+                       "styles": [
+                               
"ve/pageTarget/ve.init.mw.ProofreadPagePageTarget.css"
+                       ],
+                       "dependencies": [
+                               "ext.visualEditor.desktopArticleTarget"
+                       ],
+                       "targets": [
+                               "desktop",
+                               "mobile"
+                       ]
                }
        },
        "ResourceFileModulePaths": {
@@ -284,8 +301,13 @@
                "tests/parser/proofreadpage_pagequality.txt"
        ],
        "VisualEditorPluginModules": [
-               "ext.proofreadpage.ve.node.pages"
+               "ext.proofreadpage.ve.node.pages",
+               "ext.proofreadpage.ve.pageTarget"
        ],
+       "VisualEditorAvailableNamespaces": {
+               "250": true
+       },
+       "VisualEditorAvailableContentModels": [ "proofread-page" ],
        "config": {
                "@ProofreadPageNamespaceIds": "Array that contain the ids of 
namespaces used by ProofreadPage",
                "ProofreadPageNamespaceIds": []
diff --git a/modules/ve/pageTarget/ve.ce.MWPagesSectionNode.js 
b/modules/ve/pageTarget/ve.ce.MWPagesSectionNode.js
new file mode 100644
index 0000000..f0e9971
--- /dev/null
+++ b/modules/ve/pageTarget/ve.ce.MWPagesSectionNode.js
@@ -0,0 +1,29 @@
+/*!
+ * VisualEditor ContentEditable MWPagesSectionNode class.
+ *
+ * @copyright 2011-2016 VisualEditor Team and others; see 
http://ve.mit-license.org
+ */
+
+/**
+ * ContentEditable section node.
+ *
+ * @class
+ * @extends ve.ce.SectionNode
+ * @constructor
+ * @param {ve.dm.MWPagesSectionNode} model Model to observe
+ * @param {Object} [config] Configuration options
+ */
+ve.ce.MWPagesSectionNode = function VeCeSectionNode() {
+       // Parent constructor
+       ve.ce.MWPagesSectionNode.super.apply( this, arguments );
+
+       this.$element.attr( 'data-title', this.model.getAttribute( 'style' ) ); 
//i18n
+};
+
+/* Inheritance */
+
+OO.inheritClass( ve.ce.MWPagesSectionNode, ve.ce.SectionNode );
+
+/* Registration */
+
+ve.ce.nodeFactory.register( ve.ce.MWPagesSectionNode );
diff --git a/modules/ve/pageTarget/ve.dm.MWPagesSectionNode.js 
b/modules/ve/pageTarget/ve.dm.MWPagesSectionNode.js
new file mode 100644
index 0000000..00dcf64
--- /dev/null
+++ b/modules/ve/pageTarget/ve.dm.MWPagesSectionNode.js
@@ -0,0 +1,28 @@
+/*!
+ * VisualEditor DataModel MWPagesSectionNode class.
+ *
+ * @copyright 2011-2016 VisualEditor Team and others; see 
http://ve.mit-license.org
+ */
+
+/**
+ * DataModel section node.
+ *
+ * @class
+ * @extends ve.dm.SectionNode
+ *
+ * @constructor
+ * @param {Object} [element] Reference to element in linear model
+ * @param {ve.dm.Node[]} [children]
+ */
+ve.dm.MWPagesSectionNode = function VeDmSectionNode() {
+       // Parent constructor
+       ve.dm.MWPagesSectionNode.super.apply( this, arguments );
+};
+
+/* Inheritance */
+
+OO.inheritClass( ve.dm.MWPagesSectionNode, ve.dm.SectionNode );
+
+/* Registration */
+
+ve.dm.modelRegistry.register( ve.dm.MWPagesSectionNode );
diff --git a/modules/ve/pageTarget/ve.init.mw.ProofreadPagePageTarget.css 
b/modules/ve/pageTarget/ve.init.mw.ProofreadPagePageTarget.css
new file mode 100644
index 0000000..475a4ed
--- /dev/null
+++ b/modules/ve/pageTarget/ve.init.mw.ProofreadPagePageTarget.css
@@ -0,0 +1,22 @@
+.ve-ce-sectionNode {
+}
+
+.ve-ce-sectionNode:before {
+       content: attr( data-title );
+       font-weight: bold;
+       overflow: visible;
+       height: auto;
+       margin: 0 -1.1429em;
+       padding: 0.5em 1.1429em;
+       border: 1px solid #ccc;
+       border-width: 1px 0;
+       box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+       /*i18n*/text-transform: capitalize;
+}
+
+@media screen and (min-width: 982px) {
+       .ve-ce-sectionNode:before {
+               margin: 0 -1.7143em;
+               padding: 0.5em 1.7143em;
+       }
+}
\ No newline at end of file
diff --git a/modules/ve/pageTarget/ve.init.mw.ProofreadPagePageTarget.js 
b/modules/ve/pageTarget/ve.init.mw.ProofreadPagePageTarget.js
new file mode 100644
index 0000000..84e2261
--- /dev/null
+++ b/modules/ve/pageTarget/ve.init.mw.ProofreadPagePageTarget.js
@@ -0,0 +1,108 @@
+/*!
+ * VisualEditor MediaWiki Initialization ProofreadPagePageTarget class.
+ *
+ * @copyright 2011-2016 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/**
+ * ProofreadPage page target
+ *
+ * @class
+ * @extends ve.init.mw.ve.init.mw.DesktopArticleTarget
+ *
+ * @constructor
+ * @param {Object} config Configuration options
+ */
+ve.init.mw.ProofreadPagePageTarget = function 
VeInitMwProofreadPagePageTarget() {
+       // Parent method
+       ve.init.mw.ProofreadPagePageTarget.super.apply( this, arguments );
+};
+
+/* Inheritance */
+
+OO.inheritClass( ve.init.mw.ProofreadPagePageTarget, 
ve.init.mw.DesktopArticleTarget );
+
+/**
+ * @inheritdoc
+ */
+ve.init.mw.ProofreadPagePageTarget.prototype.documentReady = function () {
+       this.constructor.static.splitSections( this.doc );
+
+       // Parent method
+       ve.init.mw.ProofreadPagePageTarget.super.prototype.documentReady.apply( 
this, arguments );
+};
+
+ve.init.mw.ProofreadPagePageTarget.prototype.surfaceReady = function () {
+       var surface = this.getSurface();
+
+       surface.getView().once( 'focus', function () {
+               var surfaceModel = surface.getModel(),
+                       documentModel = surfaceModel.getDocument(),
+                       sectionOffset = 
documentModel.getDocumentNode().children[ 0 ].children[ 1 ].getRange().start,
+                       contentOffset = 
documentModel.data.getNearestContentOffset( sectionOffset, 1 );
+
+               if ( contentOffset !== -1 ) {
+                       // Found a content offset
+                       surfaceModel.setLinearSelection( new ve.Range( 
contentOffset ) );
+               }
+       } );
+
+       // Parent method
+       ve.init.mw.ProofreadPagePageTarget.super.prototype.surfaceReady.apply( 
this, arguments );
+};
+
+ve.init.mw.ProofreadPagePageTarget.static.splitSections = function ( doc ) {
+       var i, sectionIndex,
+               endHeader = doc.querySelector( 'body 
meta[typeof="mw:Includes/NoInclude/End"]' ),
+               noincludes = doc.querySelectorAll( 'body 
meta[typeof="mw:Includes/NoInclude"]' ),
+               endBody = noincludes[ noincludes.length - 1 ],
+               articleNode = doc.createElement( 'article' ),
+               sectionNodes = [
+                       doc.createElement( 'header' ),
+                       doc.createElement( 'section' ),
+                       doc.createElement( 'footer' )
+               ];
+
+       sectionNodes[ 0 ].setAttribute( 'title', 'Hello' );
+
+       function bubbleUp( node ) {
+               var anchor;
+               while ( node.parentNode !== doc.body ) {
+                       anchor = node.parentNode.nextSibling;
+                       // Reparent the siblings after node up one level
+                       while ( node.nextSibling ) {
+                               node.parentNode.parentNode.insertBefore( 
node.nextSibling, anchor );
+                       }
+                       // Reparent node itself
+                       node.parentNode.parentNode.insertBefore( node, 
node.parentNode.nextSibling );
+               }
+       }
+
+       if ( endHeader ) {
+               bubbleUp( endHeader );
+       }
+       if ( endBody ) {
+               bubbleUp( endBody );
+       }
+
+       for ( i = 0; i < sectionNodes.length; i++ ) {
+               articleNode.appendChild( sectionNodes[ i ] );
+       }
+
+       sectionIndex = 0;
+       while ( doc.body.firstChild ) {
+               sectionNodes[ sectionIndex ].appendChild( doc.body.firstChild );
+               if ( sectionNodes[ sectionIndex ].lastChild === endHeader ) {
+                       sectionIndex = 1;
+               } else if ( sectionNodes[ sectionIndex ].lastChild === endBody 
) {
+                       sectionIndex = 2;
+               }
+       }
+
+       doc.body.appendChild( articleNode );
+};
+
+/* Registration */
+
+ve.init.mw.targetFactory.register( ve.init.mw.ProofreadPagePageTarget );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idc1c6b326b29f7fe21f41f722bc9f241a35da7ca
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/ProofreadPage
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to