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