summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/WikiEditor/modules/jquery.wikiEditor.publish.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/WikiEditor/modules/jquery.wikiEditor.publish.js')
-rw-r--r--www/wiki/extensions/WikiEditor/modules/jquery.wikiEditor.publish.js164
1 files changed, 164 insertions, 0 deletions
diff --git a/www/wiki/extensions/WikiEditor/modules/jquery.wikiEditor.publish.js b/www/wiki/extensions/WikiEditor/modules/jquery.wikiEditor.publish.js
new file mode 100644
index 00000000..2b6bd599
--- /dev/null
+++ b/www/wiki/extensions/WikiEditor/modules/jquery.wikiEditor.publish.js
@@ -0,0 +1,164 @@
+/* Publish module for wikiEditor */
+( function ( $, mw ) {
+
+ $.wikiEditor.modules.publish = {
+
+ /**
+ * Compatibility map
+ */
+ browsers: {
+ // Left-to-right languages
+ ltr: {
+ msie: [ [ '>=', 9 ] ],
+ firefox: [ [ '>=', 4 ] ],
+ opera: [ [ '>=', '10.5' ] ],
+ safari: [ [ '>=', 5 ] ],
+ chrome: [ [ '>=', 5 ] ]
+ },
+ // Right-to-left languages
+ rtl: {
+ msie: [ [ '>=', 9 ] ],
+ firefox: [ [ '>=', 4 ] ],
+ opera: [ [ '>=', '10.5' ] ],
+ safari: [ [ '>=', 5 ] ],
+ chrome: [ [ '>=', 5 ] ]
+ }
+ },
+
+ /**
+ * Internally used functions
+ */
+ fn: {
+ /**
+ * Creates a publish module within a wikiEditor
+ *
+ * @param {Object} context Context object of editor to create module in
+ */
+ create: function ( context ) {
+ // Build the dialog behind the Publish button
+ var dialogID = 'wikiEditor-' + context.instance + '-dialog';
+ $.wikiEditor.modules.dialogs.fn.create(
+ context,
+ {
+ previewsave: {
+ id: dialogID,
+ titleMsg: 'wikieditor-publish-dialog-title',
+ html:
+ '<div class="wikiEditor-publish-dialog-copywarn"></div>' +
+ '<div class="wikiEditor-publish-dialog-editoptions">' +
+ '<form id="wikieditor-' + context.instance + '-publish-dialog-form">' +
+ '<div class="wikiEditor-publish-dialog-summary">' +
+ '<label for="wikiEditor-' + context.instance + '-dialog-summary"' +
+ 'rel="wikieditor-publish-dialog-summary"></label>' +
+ '<br />' +
+ '<input type="text" id="wikiEditor-' + context.instance + '-dialog-summary"' +
+ 'style="width: 100%;" />' +
+ '</div>' +
+ '<div class="wikiEditor-publish-dialog-options">' +
+ '<input type="checkbox"' +
+ 'id="wikiEditor-' + context.instance + '-dialog-minor" />' +
+ '<label for="wikiEditor-' + context.instance + '-dialog-minor"' +
+ 'rel="wikieditor-publish-dialog-minor"></label>' +
+ '<input type="checkbox"' +
+ 'id="wikiEditor-' + context.instance + '-dialog-watch" />' +
+ '<label for="wikiEditor-' + context.instance + '-dialog-watch"' +
+ 'rel="wikieditor-publish-dialog-watch"></label>' +
+ '</div>' +
+ '</form>' +
+ '</div>',
+ init: function () {
+ var i, copyWarnHTML, copyWarnStatements, copyWarnStatement,
+ newCopyWarnHTML;
+
+ $( this ).find( '[rel]' ).each( function () {
+ $( this ).text( mw.msg( $( this ).attr( 'rel' ) ) );
+ } );
+
+ /* REALLY DIRTY HACK! */
+ // Reformat the copyright warning stuff, if available
+ if ( $( '#editpage-copywarn p' ).length ) {
+ copyWarnHTML = $( '#editpage-copywarn p' ).html();
+ // TODO: internationalize by splitting on other characters that end statements
+ copyWarnStatements = copyWarnHTML.split( '. ' );
+ newCopyWarnHTML = '<ul>';
+ for ( i = 0; i < copyWarnStatements.length; i++ ) {
+ if ( copyWarnStatements[ i ] !== '' ) {
+ copyWarnStatement = $.trim( copyWarnStatements[ i ] ).replace( /\.*$/, '' );
+ newCopyWarnHTML += '<li>' + copyWarnStatement + '.</li>';
+ }
+ }
+ newCopyWarnHTML += '</ul>';
+ // No list if there's only one element
+ $( this ).find( '.wikiEditor-publish-dialog-copywarn' ).html(
+ copyWarnStatements.length > 1 ? newCopyWarnHTML : copyWarnHTML
+ );
+ }
+ /* END OF REALLY DIRTY HACK */
+
+ if ( $( '#wpMinoredit' ).length === 0 ) {
+ $( '#wikiEditor-' + context.instance + '-dialog-minor' ).hide();
+ } else if ( $( '#wpMinoredit' ).prop( 'checked' ) ) {
+ $( '#wikiEditor-' + context.instance + '-dialog-minor' )
+ .prop( 'checked', true );
+ }
+ if ( $( '#wpWatchthis' ).length === 0 ) {
+ $( '#wikiEditor-' + context.instance + '-dialog-watch' ).hide();
+ } else if ( $( '#wpWatchthis' ).prop( 'checked' ) ) {
+ $( '#wikiEditor-' + context.instance + '-dialog-watch' )
+ .prop( 'checked', true );
+ }
+
+ $( this ).find( 'form' ).submit( function ( e ) {
+ $( this ).closest( '.ui-dialog' ).find( 'button:first' ).click();
+ e.preventDefault();
+ } );
+ },
+ immediateCreate: true,
+ dialog: {
+ buttons: {
+ 'wikieditor-publish-dialog-publish': function () {
+ var minorChecked = $( '#wikiEditor-' + context.instance +
+ '-dialog-minor' ).is( ':checked' ),
+ watchChecked = $( '#wikiEditor-' + context.instance +
+ '-dialog-watch' ).is( ':checked' );
+ $( '#wpMinoredit' ).prop( 'checked', minorChecked );
+ $( '#wpWatchthis' ).prop( 'checked', watchChecked );
+ $( '#wpSummary' ).val( $( '#wikiEditor-' + context.instance +
+ '-dialog-summary' ).val() );
+ $( '#editform' ).submit();
+ },
+ 'wikieditor-publish-dialog-goback': function () {
+ $( this ).dialog( 'close' );
+ }
+ },
+ open: function () {
+ $( '#wikiEditor-' + context.instance + '-dialog-summary' ).focus();
+ },
+ width: 500
+ },
+ resizeme: false
+ }
+ }
+ );
+
+ context.fn.addButton( {
+ captionMsg: 'wikieditor-publish-button-publish',
+ action: function () {
+ $( '#' + dialogID ).dialog( 'open' );
+ return false;
+ }
+ } );
+
+ context.fn.addButton( {
+ captionMsg: 'wikieditor-publish-button-cancel',
+ action: function () {
+ window.location.href = $( '#mw-editform-cancel' ).attr( 'href' );
+ return false;
+ }
+ } );
+ }
+ }
+
+ };
+
+}( jQuery, mediaWiki ) );