Harej has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/338317 )
Change subject: [WIP] Hub theme widget re-design
......................................................................
[WIP] Hub theme widget re-design
Bug: T157630
Change-Id: I670fce13f2a39d350460f27ac57b0d1ca0521104
---
M extension.json
M i18n/en.json
M i18n/qqq.json
M includes/CollaborationHubContentEditor.php
M includes/SpecialCreateCollaborationHub.php
D modules/ext.CollaborationKit.colour.js
M modules/ext.CollaborationKit.edit.styles.less
D modules/ext.CollaborationKit.hubimage.js
A modules/ext.CollaborationKit.hubtheme.js
R modules/ext.CollaborationKit.hubtheme.styles.less
R modules/ext.CollaborationKit.icon.styles.less
11 files changed, 402 insertions(+), 337 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/CollaborationKit
refs/changes/17/338317/1
diff --git a/extension.json b/extension.json
index d2bc720..8dddecd 100644
--- a/extension.json
+++ b/extension.json
@@ -95,7 +95,7 @@
"ext.CollaborationKit.edit.styles": {
"styles": "ext.CollaborationKit.edit.styles.less"
},
- "ext.CollaborationKit.iconbrowser": {
+ "ext.CollaborationKit.icon": {
"scripts": "ext.CollaborationKit.icon.js",
"dependencies": [
"oojs-ui",
@@ -110,38 +110,26 @@
"collaborationkit-icon-launchbutton",
"cancel"
],
- "styles": "ext.CollaborationKit.iconbrowser.styles.less"
+ "styles": "ext.CollaborationKit.icon.styles.less"
},
- "ext.CollaborationKit.hubimagebrowser": {
- "scripts": "ext.CollaborationKit.hubimage.js",
+ "ext.CollaborationKit.hubtheme": {
+ "scripts": "ext.CollaborationKit.hubtheme.js",
"dependencies": [
"oojs-ui",
"oojs-ui.styles.icons-movement",
+ "oojs-ui.styles.icons-editing-core",
"mediawiki.widgets",
"mediawiki.widgets.UserInputWidget",
"mediawiki.widgets.MediaSearch",
- "mediawiki.api"
+ "mediawiki.api",
+ "ext.CollaborationKit.icons"
],
"messages": [
"collaborationkit-hubimage-browser",
"collaborationkit-hubimage-select",
- "collaborationkit-hubimage-launchbutton",
- "cancel"
- ]
- },
- "ext.CollaborationKit.colourbrowser": {
- "scripts": "ext.CollaborationKit.colour.js",
- "dependencies": [
- "oojs-ui",
- "oojs-ui.styles.icons-movement",
- "mediawiki.widgets",
- "mediawiki.widgets.UserInputWidget"
- ],
- "messages": [
+ "cancel",
"collaborationkit-colour-browser",
"collaborationkit-colour-select",
- "collaborationkit-colour-launchbutton",
- "cancel",
"collaborationkit-darkred",
"collaborationkit-red",
"collaborationkit-darkgrey",
@@ -166,7 +154,9 @@
"collaborationkit-khaki",
"collaborationkit-black"
],
- "styles":
"ext.CollaborationKit.colourbrowser.styles.less"
+ "styles": [
+ "ext.CollaborationKit.hubtheme.styles.less"
+ ]
},
"ext.CollaborationKit.list.edit": {
"scripts": "ext.CollaborationKit.list.edit.js",
diff --git a/i18n/en.json b/i18n/en.json
index f52fe47..3bfbec4 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -87,10 +87,8 @@
"collaborationkit-icon-launchbutton": "Browse icons",
"collaborationkit-icon-browser": "Icon browser",
"collaborationkit-icon-select": "Select",
- "collaborationkit-colour-launchbutton": "Browse colors",
"collaborationkit-colour-browser": "Color browser",
"collaborationkit-colour-select": "Select",
- "collaborationkit-hubimage-launchbutton": "Browse images",
"collaborationkit-hubimage-browser": "Media browser",
"collaborationkit-hubimage-select": "Select",
"collaborationkit-subpage-toc-label": "Part of a project:",
diff --git a/i18n/qqq.json b/i18n/qqq.json
index adcc79e..8481e22 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -90,10 +90,8 @@
"collaborationkit-icon-launchbutton": "Button label for button that
launches the feature icon browser",
"collaborationkit-icon-browser": "Header label for the icon browser",
"collaborationkit-icon-select": "Button for selecting an icon in the
icon browser\n{{Identical|Select}}",
- "collaborationkit-colour-launchbutton": "Button label for button that
launches the hub colour browser",
"collaborationkit-colour-browser": "Header label for the hub colour
browser",
"collaborationkit-colour-select": "Button for selecting a colour in the
hub colour browser\n{{Identical|Select}}",
- "collaborationkit-hubimage-launchbutton": "Button label for button that
launches the hub image browser",
"collaborationkit-hubimage-browser": "Header label for the hub image
browser",
"collaborationkit-hubimage-select": "Button for selecting an image in
the hub image browser\n{{Identical|Select}}",
"collaborationkit-subpage-toc-label": "Label for the toc on a
Collaboration Hub subpage",
diff --git a/includes/CollaborationHubContentEditor.php
b/includes/CollaborationHubContentEditor.php
index c27957e..fb7c4a2 100644
--- a/includes/CollaborationHubContentEditor.php
+++ b/includes/CollaborationHubContentEditor.php
@@ -22,8 +22,7 @@
$out = $this->getContext()->getOutput();
$out->addModules( [
'mediawiki.htmlform',
- 'ext.CollaborationKit.colourbrowser',
- 'ext.CollaborationKit.hubimagebrowser'
+ 'ext.CollaborationKit.hubtheme'
] );
$out->addModuleStyles( [
'ext.CollaborationKit.edit.styles',
diff --git a/includes/SpecialCreateCollaborationHub.php
b/includes/SpecialCreateCollaborationHub.php
index f6ed6b6..437b355 100644
--- a/includes/SpecialCreateCollaborationHub.php
+++ b/includes/SpecialCreateCollaborationHub.php
@@ -21,8 +21,7 @@
public function execute( $par ) {
$out = $this->getContext()->getOutput();
$out->addModules( [
- 'ext.CollaborationKit.colourbrowser',
- 'ext.CollaborationKit.hubimagebrowser'
+ 'ext.CollaborationKit.hubtheme'
] );
$out->addModuleStyles( 'ext.CollaborationKit.edit.styles' );
$out->addJsConfigVars( 'wgCollaborationKitColourList',
CollaborationHubContent::getThemeColours() );
diff --git a/modules/ext.CollaborationKit.colour.js
b/modules/ext.CollaborationKit.colour.js
deleted file mode 100644
index 18df988..0000000
--- a/modules/ext.CollaborationKit.colour.js
+++ /dev/null
@@ -1,155 +0,0 @@
-( function ( $, mw, OO ) {
- var setupPage, getColourBlock, ProcessDialog, openItUp;
-
- /**
- * Get a colour block for inserting into page
- *
- * @param {string} colorName Name of colour
- * @return {jQuery} A div showing the colour
- */
- getColourBlock = function ( colorName ) {
- return $( '<div></div>' )
- .addClass( 'mw-ck-colourblock' )
- .addClass( 'mw-ck-colour-' + colorName )
- .attr( 'title', mw.msg( 'collaborationkit-' + colorName
) );
- };
-
- /**
- * Subclass ProcessDialog.
- *
- * @param {Object} config
- */
- ProcessDialog = function ( config ) {
- ProcessDialog.super.call( this, config );
- };
- OO.inheritClass( ProcessDialog, OO.ui.ProcessDialog );
-
- // Specify a static title and actions.
- ProcessDialog.static.title = mw.msg( 'collaborationkit-colour-browser'
);
- ProcessDialog.static.name = 'collabkit-colourselect';
- ProcessDialog.static.actions = [
- { action: 'save', label: mw.msg(
'collaborationkit-colour-select' ), flags: 'primary' },
- { label: mw.msg( 'cancel' ), flags: 'safe' }
- ];
-
- /**
- * Use the initialize() method to add content to the dialog's $body,
- * to initialize widgets, and to set up event handlers.
- */
- ProcessDialog.prototype.initialize = function () {
- var colourList, radioChoices, className;
-
- ProcessDialog.super.prototype.initialize.apply( this, arguments
);
-
- this.content = new OO.ui.PanelLayout( { padded: true, expanded:
false } );
-
- colourList = mw.config.get( 'wgCollaborationKitColourList' );
-
- radioChoices = [];
- for ( i = 0; i < colourList.length; i++ ) {
- radioChoices.push( new OO.ui.RadioOptionWidget( {
- label: getColourBlock( colourList[ i ] ),
- data: colourList[ i ]
- } ) );
- }
-
- this.radioSelect = new OO.ui.RadioSelectWidget( {
- name: 'colourChoice',
- items: radioChoices,
- classes: [ 'mw-ck-colourchoice-container' ]
- } );
-
- this.radioSelect.selectItemByData( $( '.mw-ck-colour-input
select' ).val() );
-
- this.content.$element.append( this.radioSelect.$element );
-
- this.$body.append( this.content.$element );
- };
-
- /**
- * In the event "Select" is pressed
- *
- */
- ProcessDialog.prototype.getActionProcess = function ( action ) {
- var dialog, toAppend, openItUp, windowManager, processDialog,
colourBrowserButton;
-
- dialog = this;
- if ( action ) {
- return new OO.ui.Process( function () {
- var toAppend, $newColour;
- toAppend =
dialog.radioSelect.getSelectedItem().getData();
- $newColour = getColourBlock( toAppend );
-
- // Generate preview
- $( '.colourPreview .mw-ck-colourblock' )
- .replaceWith( $newColour );
- $( '.colourPreview .mw-ck-colourname' ).text(
- mw.msg( 'collaborationkit-' + toAppend )
- );
-
- // Set form value
- $( 'div.mw-ck-colour-input select
option[value=' + toAppend + ']' )
- .attr( 'selected', 'selected' );
-
- dialog.close( { action: action } );
- } );
- }
- // Fallback to parent handler.
- return ProcessDialog.super.prototype.getActionProcess.call(
this, action );
- };
-
- /**
- * Get dialog height.
- *
- * @return {int} Dialog height
- */
- ProcessDialog.prototype.getBodyHeight = function () {
- return this.content.$element.outerHeight( true );
- };
-
- /**
- * Create and append the window manager.
- */
- openItUp = function () {
- windowManager = new OO.ui.WindowManager();
- $( 'body' ).append( windowManager.$element );
-
- // Create a new dialog window.
- processDialog = new ProcessDialog( {
- size: 'medium'
- } );
-
- // Add windows to window manager using the addWindows() method.
- windowManager.addWindows( [ processDialog ] );
-
- // Open the window.
- windowManager.openWindow( processDialog );
- };
-
- /**
- * Initial setup function run when DOM loaded.
- */
- setupPage = function () {
- var curColour;
- colourBrowserButton = new OO.ui.ButtonWidget();
- colourBrowserButton.setLabel( mw.msg(
'collaborationkit-colour-launchbutton' ) );
- colourBrowserButton.on( 'click', openItUp );
-
- curColour = $( 'div.mw-ck-colour-input select option:selected'
).val();
-
- $( '.mw-ck-colour-input .oo-ui-dropdownWidget' ).css(
'display', 'none' );
- $( '.mw-ck-colour-input .mw-ck-colour-input' ).append(
- $( '<div class="colourPreview
mw-ck-colourblock-container"></div>' )
- .append( getColourBlock( curColour ) )
- .append(
- $( '<div
class="mw-ck-colourname"></div>' )
- .text( mw.msg(
'collaborationkit-' + curColour ) )
- )
- .append( $( '<div
class="colourBrowserButton"></div>' )
- .append( colourBrowserButton.$element )
- )
- );
- };
-
- $( setupPage );
-} )( jQuery, mediaWiki, OO );
diff --git a/modules/ext.CollaborationKit.edit.styles.less
b/modules/ext.CollaborationKit.edit.styles.less
index d4660e9..f1a92e6 100644
--- a/modules/ext.CollaborationKit.edit.styles.less
+++ b/modules/ext.CollaborationKit.edit.styles.less
@@ -19,9 +19,13 @@
.mw-ck-hub-image-input {
&.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-top >
.oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header,
&.oo-ui-textInputWidget {
- max-width: 40em;
+ max-width: 50em;
}
}
+}
+
+.oo-ui-fieldsetLayout-group {
+ max-width: 50em;
}
.ck-customeditor-toolbars( @color ) {
@@ -40,17 +44,30 @@
}
.mw-ck-namespace-input {
- width: 15em;
+ width: 35.5%;
display: inline-table !important;
}
+.mw-ck-namespace-input-js {
+ width: 100%;
+ display: flex !important;
+
+ .oo-ui-fieldLayout-body {
+ width: 35.5%;
+ }
+}
+
.mw-ck-title-input {
- width: 24.75em;
+ width: 64%;
display: inline-table !important;
padding-left: 0.25em;
margin-top: 0 !important;
}
+.mw-ck-title-input .oo-ui-fieldLayout-body {
+ width: 100%;
+}
+
.mw-ck-theme-darkred {
.ck-customeditor-toolbars( @darkred );
}
diff --git a/modules/ext.CollaborationKit.hubimage.js
b/modules/ext.CollaborationKit.hubimage.js
deleted file mode 100644
index a5718a4..0000000
--- a/modules/ext.CollaborationKit.hubimage.js
+++ /dev/null
@@ -1,146 +0,0 @@
-( function ( $, mw, OO ) {
-
- /**
- * Subclass ProcessDialog.
- *
- * @param {Object} config
- */
- function ProcessDialog( config ) {
- ProcessDialog.super.call( this, config );
- }
- OO.inheritClass( ProcessDialog, OO.ui.ProcessDialog );
-
- // Specify a static title and actions.
- ProcessDialog.static.title = mw.msg(
'collaborationkit-hubimage-browser' );
- ProcessDialog.static.name = 'collabkit-hubimage';
- ProcessDialog.static.actions = [
- { action: 'save', label: mw.msg(
'collaborationkit-hubimage-select' ), flags: 'primary' },
- { label: mw.msg( 'cancel' ), flags: 'safe' }
- ];
-
- /**
- * Use the initialize() method to add content to the dialog's $body,
- * to initialize widgets, and to set up event handlers.
- */
- ProcessDialog.prototype.initialize = function () {
- var defaultSearchTerm, nsPrefix;
-
- nsPrefix = mw.config.get( 'wgFormattedNamespaces' )[ 6 ] + ':';
-
- ProcessDialog.super.prototype.initialize.apply( this, arguments
);
-
- // Default image order of preference:
- // Display name > Page title > Nothing
-
- defaultSearchTerm = '';
-
- if ( mw.config.get( 'wgTitle' ) !== undefined ) {
- defaultSearchTerm = mw.config.get( 'wgTitle' );
- }
- if ( $( 'input[name=wptitle]' ).val() !== '' && $(
'input[name=wptitle]' ).val() !== undefined ) {
- defaultSearchTerm = $( 'input[name=wptitle]' ).val();
- }
- if ( $( 'input[name=wpdisplay_name]' ).val() !== '' && $(
'input[name=wpdisplay_name]' ).val() !== undefined ) {
- defaultSearchTerm = $( 'input[name=wpdisplay_name]'
).val();
- }
- if ( $( 'input[name=wpCollabHubDisplayName]' ).val() !== '' &&
$( 'input[name=wpCollabHubDisplayName]' ).val() !== undefined ) {
- defaultSearchTerm = $(
'input[name=wpCollabHubDisplayName]' ).val();
- }
-
- this.content = new mw.widgets.MediaSearchWidget();
- this.content.getQuery().setValue( defaultSearchTerm );
- this.$body.append( this.content.$element );
- };
-
- /**
- * In the event "Select" is pressed
- *
- */
- ProcessDialog.prototype.getActionProcess = function ( action ) {
- var dialog, openItUp, windowManager, processDialog,
- currentImageFilename, currentImage,
hubimageBrowserButton;
-
- dialog = this;
- if ( action ) {
- return new OO.ui.Process( function () {
- fileObj =
dialog.content.getResults().getSelectedItem();
- if ( fileObj === null ) {
- return dialog.close();
- }
- fileObj = fileObj.getData();
- fileUrl = fileObj.thumburl;
- fileTitle = new mw.Title( fileObj.title );
- fileTitle = fileTitle.title + '.' +
fileTitle.ext;
-
- // Generate preview
- $( 'img.hubimagePreview' )
- .attr( 'style', 'display:block' )
- .attr( 'src', fileUrl )
- .attr( 'width', '200px' )
- .css( 'margin-bottom', '10px' );
-
- // Set form value
- $( '.mw-ck-hub-image-input input' ).val(
fileTitle );
-
- dialog.close( { action: action } );
- } );
- }
- // Fallback to parent handler.
- return ProcessDialog.super.prototype.getActionProcess.call(
this, action );
- };
-
- /**
- * Get dialog height.
- */
- ProcessDialog.prototype.getBodyHeight = function () {
- return 600;
- };
-
- /**
- * Create and append the window manager.
- */
- openItUp = function () {
- windowManager = new OO.ui.WindowManager();
- $( 'body' ).append( windowManager.$element );
-
- // Create a new dialog window.
- processDialog = new ProcessDialog( {
- size: 'large'
- } );
-
- // Add windows to window manager using the addWindows() method.
- windowManager.addWindows( [ processDialog ] );
-
- // Open the window.
- windowManager.openWindow( processDialog );
- };
-
- hubimageBrowserButton = new OO.ui.ButtonWidget();
- hubimageBrowserButton.setLabel( mw.msg(
'collaborationkit-hubimage-launchbutton' ) );
- hubimageBrowserButton.on( 'click', openItUp );
-
- $( 'div.mw-ck-hub-image-input input' ).css( 'display', 'none' );
- $( 'div.mw-ck-hub-image-input div.oo-ui-textInputWidget' )
- .append( '<img class="hubimagePreview" style="width:200px;
background:#eee; height:200px; margin-bottom:10px; display:block;" /><div
class="hubimageBrowserButton">' )
- .append( hubimageBrowserButton.$element )
- .append( '</div>' );
- // Load current hub image
- if ( $( 'div.mw-ck-hub-image-input input' ).val() !== '' ) {
- currentImageFilename = 'File:' + $( 'div.mw-ck-hub-image-input
input' ).val();
- currentImage = new mw.Api()
- .get( {
- action: 'query',
- titles: currentImageFilename,
- prop: 'imageinfo',
- iiprop: 'url',
- formatversion: 2,
- iiurlwidth: 200
- } )
- .done( function ( data ) {
- $( 'img.hubimagePreview' )
- .attr( 'src', data.query.pages[ 0
].imageinfo[ 0 ].thumburl )
- .css( 'height', 'auto' );
- }
- );
- }
-} )( jQuery, mediaWiki, OO );
diff --git a/modules/ext.CollaborationKit.hubtheme.js
b/modules/ext.CollaborationKit.hubtheme.js
new file mode 100644
index 0000000..2c4cbf3
--- /dev/null
+++ b/modules/ext.CollaborationKit.hubtheme.js
@@ -0,0 +1,330 @@
+( function ( $, mw, OO ) {
+
+ var getColourBlock, getThumbnail, ImageProcessDialog,
ColourProcessDialog, openColourBrowser;
+
+ /**
+ * Get a colour block for inserting into page
+ *
+ * @param {string} colorName Name of colour
+ * @return {jQuery.Promise}
+ */
+ getColourBlock = function ( colorName ) {
+ return $( '<div></div>' )
+ .addClass( 'mw-ck-colourblock' )
+ .addClass( 'mw-ck-colour-' + colorName )
+ .attr( 'title', mw.msg( 'collaborationkit-' + colorName
) );
+ };
+
+ /**
+ * Get an image thumbnail with 150px width
+ *
+ * @param {string} filename
+ * @return {jQuery} promise
+ */
+ getThumbnail = function ( filename ) {
+ return new mw.Api()
+ .get( {
+ action: 'query',
+ titles: filename,
+ prop: 'imageinfo',
+ iiprop: 'url',
+ formatversion: 2,
+ iiurlwidth: 150
+ }
+ );
+ }
+
+ /**
+ * Subclass ProcessDialog for selecting a colour.
+ *
+ * @param {Object} config
+ */
+ ColourProcessDialog = function ( config ) {
+ ColourProcessDialog.super.call( this, config );
+ };
+ OO.inheritClass( ColourProcessDialog, OO.ui.ProcessDialog );
+
+ // Specify a static title and actions.
+ ColourProcessDialog.static.title = mw.msg(
'collaborationkit-colour-browser' );
+ ColourProcessDialog.static.name = 'collabkit-colourselect';
+ ColourProcessDialog.static.actions = [
+ { action: 'save', label: mw.msg(
'collaborationkit-colour-select' ), flags: 'primary' },
+ { label: mw.msg( 'cancel' ), flags: 'safe' }
+ ];
+
+ /**
+ * Use the initialize() method to add content to the dialog's $body,
+ * to initialize widgets, and to set up event handlers.
+ */
+ ColourProcessDialog.prototype.initialize = function () {
+ var colourList, radioChoices, className;
+
+ ColourProcessDialog.super.prototype.initialize.apply( this,
arguments );
+
+ this.content = new OO.ui.PanelLayout( { padded: true, expanded:
false } );
+
+ colourList = mw.config.get( 'wgCollaborationKitColourList' );
+
+ radioChoices = [];
+ for ( i = 0; i < colourList.length; i++ ) {
+ radioChoices.push( new OO.ui.RadioOptionWidget( {
+ label: getColourBlock( colourList[ i ] ),
+ data: colourList[ i ]
+ } ) );
+ }
+
+ this.radioSelect = new OO.ui.RadioSelectWidget( {
+ name: 'colourChoice',
+ items: radioChoices,
+ classes: [ 'mw-ck-colourchoice-container' ]
+ } );
+
+ this.radioSelect.selectItemByData( $( '.mw-ck-colour-input
select' ).val() );
+
+ this.content.$element.append( this.radioSelect.$element );
+
+ this.$body.append( this.content.$element );
+ };
+
+ /**
+ * In the event "Select" is pressed
+ *
+ */
+ ColourProcessDialog.prototype.getActionProcess = function ( action ) {
+ var dialog, toAppend, openColourBrowser, windowManager,
colourBrowserButton;
+
+ dialog = this;
+ if ( action ) {
+ return new OO.ui.Process( function () {
+ var toAppend, $newColour;
+ toAppend =
dialog.radioSelect.getSelectedItem().getData();
+
+ // Generate preview
+ $( '.colourPreview .mw-ck-colourblock' )
+ .attr( 'class', 'colourPreview
mw-ck-colourblock mw-ck-colour-' + toAppend );
+
+ $( '.hubimagePreview' )
+ .attr( 'class', 'hubimagePreview
mw-ck-icon mw-ck-icon-puzzlepiece mw-ck-icon-puzzlepiece-' + toAppend );
+
+ // Set form value
+ $( 'div.mw-ck-colour-input select
option[value=' + toAppend + ']' )
+ .attr( 'selected', 'selected' );
+
+ dialog.close( { action: action } );
+ } );
+ }
+ // Fallback to parent handler.
+ return
ColourProcessDialog.super.prototype.getActionProcess.call( this, action );
+ };
+
+ /**
+ * Get dialog height.
+ *
+ * @return {int} Dialog height
+ */
+ ColourProcessDialog.prototype.getBodyHeight = function () {
+ return this.content.$element.outerHeight( true );
+ };
+
+ /**
+ * Create and append the window manager.
+ */
+ openColourBrowser = function () {
+ windowManager = new OO.ui.WindowManager();
+ $( 'body' ).append( windowManager.$element );
+
+ // Create a new dialog window.
+ processDialog = new ColourProcessDialog( {
+ size: 'medium'
+ } );
+
+ // Add windows to window manager using the addWindows() method.
+ windowManager.addWindows( [ processDialog ] );
+
+ // Open the window.
+ windowManager.openWindow( processDialog );
+ };
+
+ /**
+ * Subclass ProcessDialog.
+ *
+ * @param {Object} config
+ */
+ function ImageProcessDialog( config ) {
+ ImageProcessDialog.super.call( this, config );
+ }
+ OO.inheritClass( ImageProcessDialog, OO.ui.ProcessDialog );
+
+ // Specify a static title and actions.
+ ImageProcessDialog.static.title = mw.msg(
'collaborationkit-hubimage-browser' );
+ ImageProcessDialog.static.name = 'collabkit-hubimage';
+ ImageProcessDialog.static.actions = [
+ { action: 'save', label: mw.msg(
'collaborationkit-hubimage-select' ), flags: 'primary' },
+ { label: mw.msg( 'cancel' ), flags: 'safe' }
+ ];
+
+ /**
+ * Use the initialize() method to add content to the dialog's $body,
+ * to initialize widgets, and to set up event handlers.
+ */
+ ImageProcessDialog.prototype.initialize = function () {
+ var defaultSearchTerm, nsPrefix;
+
+ nsPrefix = mw.config.get( 'wgFormattedNamespaces' )[ 6 ] + ':';
+
+ ImageProcessDialog.super.prototype.initialize.apply( this,
arguments );
+
+ // Default image order of preference:
+ // Display name > Page title > Nothing
+
+ defaultSearchTerm = '';
+
+ if ( mw.config.get( 'wgTitle' ) !== undefined ) {
+ defaultSearchTerm = mw.config.get( 'wgTitle' );
+ }
+ if ( $( 'input[name=wptitle]' ).val() !== '' && $(
'input[name=wptitle]' ).val() !== undefined ) {
+ defaultSearchTerm = $( 'input[name=wptitle]' ).val();
+ }
+ if ( $( 'input[name=wpdisplay_name]' ).val() !== '' && $(
'input[name=wpdisplay_name]' ).val() !== undefined ) {
+ defaultSearchTerm = $( 'input[name=wpdisplay_name]'
).val();
+ }
+ if ( $( 'input[name=wpCollabHubDisplayName]' ).val() !== '' &&
$( 'input[name=wpCollabHubDisplayName]' ).val() !== undefined ) {
+ defaultSearchTerm = $(
'input[name=wpCollabHubDisplayName]' ).val();
+ }
+
+ this.content = new mw.widgets.MediaSearchWidget();
+ this.content.getQuery().setValue( defaultSearchTerm );
+ this.$body.append( this.content.$element );
+ };
+
+ /**
+ * In the event "Select" is pressed
+ *
+ */
+ ImageProcessDialog.prototype.getActionProcess = function ( action ) {
+ var dialog, openImageBrowser, windowManager, processDialog,
fileTitle,
+ currentImageFilename, currentImage,
hubimageBrowserButton;
+
+ dialog = this;
+ if ( action ) {
+ return new OO.ui.Process( function () {
+ fileObj =
dialog.content.getResults().getSelectedItem();
+ if ( fileObj === null ) {
+ return dialog.close();
+ }
+ getThumbnail( fileObj.getData().title )
+ .done( function( data ) {
+ fileUrl = data.query.pages[ 0
].imageinfo[ 0 ].thumburl;
+ fileHeight = data.query.pages[
0 ].imageinfo[ 0 ].thumbheight;
+ fileTitleObj = new mw.Title(
fileObj.getData().title );
+ fileTitle = fileTitleObj.title
+ '.' + fileTitleObj.ext;
+
+ // Generate preview
+ $( 'div.hubimagePreview' )
+ .css( 'background',
'url("' + fileUrl + '")' )
+ .css( 'height',
fileHeight + 'px' );
+
+ // Set form value
+ $( '.mw-ck-hub-image-input
input' ).val( fileTitle );
+ dialog.close( { action: action
} );
+ } );
+ } );
+ }
+ // Fallback to parent handler.
+ return
ImageProcessDialog.super.prototype.getActionProcess.call( this, action );
+ };
+
+ /**
+ * Get dialog height.
+ */
+ ImageProcessDialog.prototype.getBodyHeight = function () {
+ return 600;
+ };
+
+ /**
+ * Create and append the window manager.
+ */
+ openImageBrowser = function () {
+ windowManager = new OO.ui.WindowManager();
+ $( 'body' ).append( windowManager.$element );
+
+ // Create a new dialog window.
+ processDialog = new ImageProcessDialog( {
+ size: 'large'
+ } );
+
+ // Add windows to window manager using the addWindows() method.
+ windowManager.addWindows( [ processDialog ] );
+
+ // Open the window.
+ windowManager.openWindow( processDialog );
+ };
+
+ /**
+ * Initial setup function run when DOM loaded.
+ */
+ setupPage = function () {
+ var curColour, colourBrowserButton, currentImage,
currentImageFilename;
+
+ // Defining buttons
+ colourBrowserButton = new OO.ui.ButtonWidget({
+ icon: 'search',
+ framed: false,
+ classes: [ 'mw-ck-hubtheme-widget-inlinebutton' ]
+ });
+ colourBrowserButton.on( 'click', openColourBrowser );
+
+ hubimageBrowserButton = new OO.ui.ButtonWidget({
+ icon: 'search',
+ framed: false,
+ classes: [ 'mw-ck-hubtheme-widget-inlinebutton' ]
+ });
+ hubimageBrowserButton.on( 'click', openImageBrowser );
+
+ // Ascertaining default/pre-selected values
+ curColour = $( 'div.mw-ck-colour-input select option:selected'
).val();
+
+ if ( $( 'div.mw-ck-hub-image-input input' ).val() !== '' ) {
+ currentImageFilename = 'File:' + $(
'div.mw-ck-hub-image-input input' ).val();
+ getThumbnail( currentImageFilename )
+ .done( function( data ) {
+ $( 'div.hubimagePreview' )
+ .css( 'background', 'url("' +
data.query.pages[ 0 ].imageinfo[ 0 ].thumburl + '")' )
+ .css( 'height',
data.query.pages[ 0 ].imageinfo[ 0 ].thumbheight + 'px' );
+ } );
+ }
+
+ // Hiding HTML form elements
+ $( '.mw-ck-colour-input' ).css( 'display', 'none' );
+ $( '.mw-ck-hub-image-input' ).css( 'display', 'none' );
+
+ // Setting up
+ $( '.mw-htmlform-ooui-header' ).append( '<div
class="mw-ck-hub-topform"></div>' );
+ $( '.mw-collabkit-modifiededitform').prepend( '<div
class="mw-ck-hub-topform"></div>' );
+ $( '.mw-ck-hub-topform' ).append( '<div
class="mw-ck-hubtheme-widget"></div>' );
+ $( '.mw-ck-hub-topform' ).append( '<div
class="mw-ck-hub-name"></div>' );
+
+ $( '.mw-ck-hubtheme-widget' )
+ .append( '<div class="hubimagePreview mw-ck-icon
mw-ck-icon-puzzlepiece" style="width:150px; height:150px; margin-bottom:10px;
display:block;" />' );
+
+ $( 'div.hubimagePreview' ).addClass( 'mw-ck-icon-puzzlepiece-'
+ curColour );
+
+ $( '.mw-ck-hubtheme-widget .hubimagePreview' ).append(
hubimageBrowserButton.$element );
+
+ $( '.mw-ck-hubtheme-widget' ).append(
+ $( '<div class="colourPreview
mw-ck-colourblock-container"></div>' )
+ .append( getColourBlock( curColour )
+ .append( colourBrowserButton.$element )
+ )
+ );
+ $( '.mw-htmlform-field-HTMLSelectField.mw-ck-namespace-input' )
+ .attr( 'class', 'mw-htmlform-field-HTMLSelectField
mw-ck-namespace-input-js' )
+ .append( $(
'.mw-htmlform-field-HTMLTextField.mw-ck-title-input' ) );
+ $( '.mw-ck-hub-name' )
+ .append( $(
'.mw-htmlform-field-HTMLSelectField.mw-ck-namespace-input-js' ) )
+ .append( $(
'.mw-htmlform-field-HTMLTextField.mw-ck-display-input' ) );
+ };
+
+ $( setupPage );
+
+} )( jQuery, mediaWiki, OO );
diff --git a/modules/ext.CollaborationKit.colourbrowser.styles.less
b/modules/ext.CollaborationKit.hubtheme.styles.less
similarity index 76%
rename from modules/ext.CollaborationKit.colourbrowser.styles.less
rename to modules/ext.CollaborationKit.hubtheme.styles.less
index 9cd774d..c67f4f0 100644
--- a/modules/ext.CollaborationKit.colourbrowser.styles.less
+++ b/modules/ext.CollaborationKit.hubtheme.styles.less
@@ -1,5 +1,40 @@
@import "ext.CollaborationKit.mixins.less";
+.mw-ck-hub-topform {
+ display: flex;
+ width: 100%;
+ max-width: 50em;
+}
+
+.mw-ck-hubtheme-widget {
+ float: left;
+ display: inline-table;
+ padding-right: 2em;
+}
+
+.mw-ck-hubtheme-widget-inlinebutton {
+ width: 35px;
+ height: 35px;
+ position: relative;
+ left: 115px;
+ background: #fff;
+ opacity: 0.75;
+}
+
+.mw-ck-hubtheme-widget-inlinebutton a span {
+ width: 35px !important;
+ height: 35px !important;
+}
+
+.mw-ck-hubtheme-widget-inlinebutton:hover,
+.mw-ck-hubtheme-widget-inlinebutton:active {
+ opacity: 0.9;
+}
+
+.mw-ck-hub-name {
+ flex-grow: 1;
+}
+
.mw-ck-colourblock-container {
margin-top:10px;
margin-bottom:10px;
@@ -7,8 +42,8 @@
.oo-ui-optionWidget-selected .mw-ck-colourblock {
border: 2px solid #2a4b8d;
- width: 46px;
- height: 46px;
+ width: 146px;
+ height: 26px;
-webkit-box-shadow: 0 0 5px 0px rgba(42,75,141,1);
-moz-box-shadow: 0 0 5px 0px rgba(42,75,141,1);
box-shadow: 0 0 5px 0px rgba(42,75,141,1);
@@ -19,8 +54,8 @@
}
.mw-ck-colourblock {
- width: 50px;
- height: 50px;
+ width: 150px;
+ height: 35px;
}
.mw-ck-colourchoice-container {
diff --git a/modules/ext.CollaborationKit.iconbrowser.styles.less
b/modules/ext.CollaborationKit.icon.styles.less
similarity index 100%
rename from modules/ext.CollaborationKit.iconbrowser.styles.less
rename to modules/ext.CollaborationKit.icon.styles.less
--
To view, visit https://gerrit.wikimedia.org/r/338317
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I670fce13f2a39d350460f27ac57b0d1ca0521104
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/CollaborationKit
Gerrit-Branch: master
Gerrit-Owner: Harej <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits