diff options
Diffstat (limited to 'extensions/WikiEditor/modules/jquery.wikiEditor.publish.js')
-rw-r--r-- | extensions/WikiEditor/modules/jquery.wikiEditor.publish.js | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.publish.js b/extensions/WikiEditor/modules/jquery.wikiEditor.publish.js new file mode 100644 index 00000000..5a758e43 --- /dev/null +++ b/extensions/WikiEditor/modules/jquery.wikiEditor.publish.js @@ -0,0 +1,146 @@ +/* Publish module for wikiEditor */ +( function( $ ) { $.wikiEditor.modules.publish = { + +/** + * Compatability map + */ +'browsers': { + // Left-to-right languages + 'ltr': { + 'msie': [['>=', 7]], + 'firefox': [['>=', 3]], + 'opera': [['>=', 9.6]], + 'safari': [['>=', 4]] + }, + // Right-to-left languages + 'rtl': { + 'msie': [['>=', 8]], + 'firefox': [['>=', 3]], + 'opera': [['>=', 9.6]], + 'safari': [['>=', 4]] + } +}, +/** + * Internally used functions + */ +fn: { + /** + * Creates a publish module within a wikiEditor + * @param context Context object of editor to create module in + * @param config Configuration object to create module from + */ + create: function( context, config ) { + // 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() { + $(this).find( '[rel]' ).each( function() { + $(this).text( mediaWiki.msg( $(this).attr( 'rel' ) ) ); + }); + + /* REALLY DIRTY HACK! */ + // Reformat the copyright warning stuff + var copyWarnHTML = $( '#editpage-copywarn p' ).html(); + // TODO: internationalize by splitting on other characters that end statements + var copyWarnStatements = copyWarnHTML.split( '. ' ); + var newCopyWarnHTML = '<ul>'; + for ( var i = 0; i < copyWarnStatements.length; i++ ) { + if ( copyWarnStatements[i] != '' ) { + var 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' ).size() == 0 ) + $( '#wikiEditor-' + context.instance + '-dialog-minor' ).hide(); + else if ( $( '#wpMinoredit' ).is( ':checked' ) ) + $( '#wikiEditor-' + context.instance + '-dialog-minor' ) + .attr( 'checked', 'checked' ); + if ( $( '#wpWatchthis' ).size() == 0 ) + $( '#wikiEditor-' + context.instance + '-dialog-watch' ).hide(); + else if ( $( '#wpWatchthis' ).is( ':checked' ) ) + $( '#wikiEditor-' + context.instance + '-dialog-watch' ) + .attr( 'checked', 'checked' ); + + $(this).find( 'form' ).submit( function( e ) { + $(this).closest( '.ui-dialog' ).find( 'button:first' ).click(); + e.preventDefault(); + }); + }, + dialog: { + buttons: { + 'wikieditor-publish-dialog-publish': function() { + var minorChecked = $( '#wikiEditor-' + context.instance + + '-dialog-minor' ).is( ':checked' ) ? + 'checked' : ''; + var watchChecked = $( '#wikiEditor-' + context.instance + + '-dialog-watch' ).is( ':checked' ) ? + 'checked' : ''; + $( '#wpMinoredit' ).attr( 'checked', minorChecked ); + $( '#wpWatchthis' ).attr( '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() { } + } ); + } +} + +}; } )( jQuery ); |