lib/gollum/frontend/public/javascript/gollum.dialog.js in gollum-1.3.1 vs lib/gollum/frontend/public/javascript/gollum.dialog.js in gollum-1.4.2

- old
+ new

@@ -2,205 +2,262 @@ * gollum.dialog.js * * Used for dialogs. Duh. * */ - + (function($) { - - var Dialog = { - - debugOn: false, - markupCreated: false, - - attachEvents: function( evtOK ) { - $('#gollum-dialog-action-ok').click(function( e ) { + + var Dialog = { + + debugOn: false, + markupCreated: false, + markup: '', + + attachEvents: function( evtOK ) { + $('#gollum-dialog-action-ok').click(function( e ) { Dialog.eventOK( e, evtOK ); - }); - $('#gollum-dialog-action-cancel').click( Dialog.eventCancel ); - }, - - createFieldMarkup: function( fieldArray ) { - var fieldMarkup = '<fieldset>'; - for ( var i=0; i < fieldArray.length; i++ ) { - if ( typeof fieldArray[i] == 'object' ) { - fieldMarkup += '<div class="field">'; - switch ( fieldArray[i].type ) { - - // only text is supported for now - case 'text': - fieldMarkup += Dialog.createFieldText( fieldArray[i] ); - break; - - default: - break; - - } - fieldMarkup += '</div>'; - } - - } - fieldMarkup += '</fieldset>'; - return fieldMarkup; - }, - - createFieldText: function( fieldAttributes ) { - var html = ''; - - if ( fieldAttributes.name ) { - html += '<label'; - if ( fieldAttributes.id ) { - html += ' for="' + fieldAttributes.name + '"'; - } - html += '>' + fieldAttributes.name + '</label>'; - } - - html += '<input type="text"'; - - if ( fieldAttributes.id ) { - html += ' name="' + fieldAttributes.id + '"' - if ( fieldAttributes.type == 'code' ) { - html+= ' class="code"'; - } - html += ' id="gollum-dialog-dialog-generated-field-' + - fieldAttributes.id + '">'; - } - - return html; - }, - - createMarkup: function( title, body ) { - Dialog.markupCreated = true; - return '<div id="gollum-dialog-dialog">' + + }); + $('#gollum-dialog-action-cancel').click( Dialog.eventCancel ); + $('#gollum-dialog-dialog input[type="text"]').keydown(function( e ) { + if ( e.keyCode == 13 ) { + Dialog.eventOK( e, evtOK ); + } + }); + }, + + detachEvents: function() { + $('#gollum-dialog-action-ok').unbind('click'); + $('#gollum-dialog-action-cancel').unbind('click'); + }, + + createFieldMarkup: function( fieldArray ) { + var fieldMarkup = '<fieldset>'; + for ( var i=0; i < fieldArray.length; i++ ) { + if ( typeof fieldArray[i] == 'object' ) { + fieldMarkup += '<div class="field">'; + switch ( fieldArray[i].type ) { + + // only text is supported for now + case 'text': + fieldMarkup += Dialog.createFieldText( fieldArray[i] ); + break; + + default: + break; + + } + fieldMarkup += '</div>'; + } + + } + fieldMarkup += '</fieldset>'; + return fieldMarkup; + }, + + createFieldText: function( fieldAttributes ) { + var html = ''; + + if ( fieldAttributes.name ) { + html += '<label'; + if ( fieldAttributes.id ) { + html += ' for="' + fieldAttributes.name + '"'; + } + html += '>' + fieldAttributes.name + '</label>'; + } + + html += '<input type="text"'; + + if ( fieldAttributes.id ) { + html += ' name="' + fieldAttributes.id + '"' + if ( fieldAttributes.type == 'code' ) { + html+= ' class="code"'; + } + html += ' id="gollum-dialog-dialog-generated-field-' + + fieldAttributes.id + '">'; + } + + return html; + }, + + createMarkup: function( title, body ) { + Dialog.markupCreated = true; + if ($.facebox) { + return '<div id="gollum-dialog-dialog">' + + '<div id="gollum-dialog-dialog-title"><h4>' + + title +'</h4></div>' + + '<div id="gollum-dialog-dialog-body">' + body + '</div>' + + '<div id="gollum-dialog-dialog-buttons">' + + '<a href="#" title="Cancel" id="gollum-dialog-action-cancel" ' + + 'class="gollum-minibutton">Cancel</a>' + + '<a href="#" title="OK" id="gollum-dialog-action-ok" '+ + 'class="gollum-minibutton">OK</a>' + + '</div>' + + '</div>'; + } else { + return '<div id="gollum-dialog-dialog">' + '<div id="gollum-dialog-dialog-inner">' + '<div id="gollum-dialog-dialog-bg">' + - '<div id="gollum-dialog-dialog-title"><h4>' + - title +'</h4></div>' + - '<div id="gollum-dialog-dialog-body">' + body + '</div>' + - '<div id="gollum-dialog-dialog-buttons">' + - '<a href="#" title="Cancel" id="gollum-dialog-action-cancel" ' + + '<div id="gollum-dialog-dialog-title"><h4>' + + title +'</h4></div>' + + '<div id="gollum-dialog-dialog-body">' + body + '</div>' + + '<div id="gollum-dialog-dialog-buttons">' + + '<a href="#" title="Cancel" id="gollum-dialog-action-cancel" ' + 'class="minibutton">Cancel</a>' + - '<a href="#" title="OK" id="gollum-dialog-action-ok" '+ + '<a href="#" title="OK" id="gollum-dialog-action-ok" '+ 'class="minibutton">OK</a>' + '</div>' + - '</div>' + - '</div>' + + '</div>' + + '</div>' + '</div>'; - }, - - eventCancel: function( e ) { - e.preventDefault(); - debug('Cancelled dialog.'); - Dialog.hide(); - }, - - eventOK: function( e, evtOK ) { - e.preventDefault(); - - var results = []; - // get the results from each field and build them into the object - $('#gollum-dialog-dialog-body input').each(function() { - results[$(this).attr('name')] = $(this).val(); - }); - - // pass them to evtOK if it exists (which it should) - if ( evtOK && - typeof evtOK == 'function' ) { - evtOK( results ); - } - Dialog.hide(); - }, + } + }, - hide: function() { - if ( $.browser.msie ) { - $('#gollum-dialog-dialog').hide().removeClass('active'); - $('select').css('visibility', 'visible'); - } else { - $('#gollum-dialog-dialog').animate({ opacity: 0 }, { + eventCancel: function( e ) { + e.preventDefault(); + debug('Cancelled dialog.'); + Dialog.hide(); + }, + + eventOK: function( e, evtOK ) { + e.preventDefault(); + + var results = []; + // get the results from each field and build them into the object + $('#gollum-dialog-dialog-body input').each(function() { + results[$(this).attr('name')] = $(this).val(); + }); + + // pass them to evtOK if it exists (which it should) + if ( evtOK && + typeof evtOK == 'function' ) { + evtOK( results ); + } + Dialog.hide(); + }, + + hide: function() { + if ( $.facebox ) { + Dialog.markupCreated = false; + $(document).trigger('close.facebox'); + Dialog.detachEvents(); + } else { + if ( $.browser.msie ) { + $('#gollum-dialog-dialog').hide().removeClass('active'); + $('select').css('visibility', 'visible'); + } else { + $('#gollum-dialog-dialog').animate({ opacity: 0 }, { duration: 200, complete: function() { $('#gollum-dialog-dialog').removeClass('active'); } }); } - }, - - init: function( argObject ) { - var title = ''; - var body = ''; - - // bail out if necessary - if ( !argObject || - typeof argObject != 'object' ) { - debug('Editor Dialog: Cannot init; invalid init object'); - return; - } - - if ( argObject.body && typeof argObject.body == 'string' ) { - body = '<p>' + argObject.body + '</p>'; - } - - // alright, build out fields - if ( argObject.fields && typeof argObject.fields == 'object' ) { - body += Dialog.createFieldMarkup( argObject.fields ); - } - - if ( argObject.title && typeof argObject.title == 'string' ) { - title = argObject.title; - } - - if ( Dialog.markupCreated ) { - $('#gollum-dialog-dialog').remove(); - } - var $dialog = $( Dialog.createMarkup( title, body ) ); - $('body').append( $dialog ); - if ( argObject.OK && - typeof argObject.OK == 'function' ) { - Dialog.attachEvents( argObject.OK ); - } - Dialog.show(); - }, - - show: function() { - if ( !Dialog.markupCreated ) { - debug('Dialog: No markup to show. Please use init first.'); - } else { - debug('Showing dialog'); + } + }, + + init: function( argObject ) { + var title = ''; + var body = ''; + + // bail out if necessary + if ( !argObject || + typeof argObject != 'object' ) { + debug('Editor Dialog: Cannot init; invalid init object'); + return; + } + + if ( argObject.body && typeof argObject.body == 'string' ) { + body = '<p>' + argObject.body + '</p>'; + } + + // alright, build out fields + if ( argObject.fields && typeof argObject.fields == 'object' ) { + body += Dialog.createFieldMarkup( argObject.fields ); + } + + if ( argObject.title && typeof argObject.title == 'string' ) { + title = argObject.title; + } + + if ( Dialog.markupCreated ) { + if ($.facebox) { + $(document).trigger('close.facebox'); + } else { + $('#gollum-dialog-dialog').remove(); + } + } + + Dialog.markup = Dialog.createMarkup( title, body ); + + if ($.facebox) { + $(document).bind('reveal.facebox', function() { + if ( argObject.OK && + typeof argObject.OK == 'function' ) { + Dialog.attachEvents( argObject.OK ); + $($('#facebox input[type="text"]').get(0)).focus(); + } + }); + } else { + $('body').append( Dialog.markup ); + if ( argObject.OK && + typeof argObject.OK == 'function' ) { + Dialog.attachEvents( argObject.OK ); + } + } + + Dialog.show(); + }, + + show: function() { + if ( !Dialog.markupCreated ) { + debug('Dialog: No markup to show. Please use init first.'); + } else { + debug('Showing dialog'); + if ($.facebox) { + $.facebox( Dialog.markup ); + } else { if ( $.browser.msie ) { $('#gollum-dialog.dialog').addClass('active'); Dialog.position(); - $('select').css('visibility', 'hidden'); + $('select').css('visibility', 'hidden'); } else { $('#gollum-dialog.dialog').css('display', 'none'); $('#gollum-dialog-dialog').animate({ opacity: 0 }, { duration: 0, complete: function() { $('#gollum-dialog-dialog').css('display', 'block'); Dialog.position(); // position this thing $('#gollum-dialog-dialog').animate({ opacity: 1 }, { - duration: 500 + duration: 500 }); } }); } - } - }, - - position: function() { - var dialogHeight = $('#gollum-dialog-dialog-inner').height(); - $('#gollum-dialog-dialog-inner') - .css('height', dialogHeight + 'px') - .css('margin-top', -1 * parseInt( dialogHeight / 2 )); - } - - }; - + } + } + }, + + position: function() { + var dialogHeight = $('#gollum-dialog-dialog-inner').height(); + $('#gollum-dialog-dialog-inner') + .css('height', dialogHeight + 'px') + .css('margin-top', -1 * parseInt( dialogHeight / 2 )); + } + }; + + if ($.facebox) { + $(document).bind('reveal.facebox', function() { + $('#facebox img.close_image').remove(); + }); + } + var debug = function(m) { if ( Dialog.debugOn && typeof console != 'undefined' ) { console.log( m ); } }; - + $.GollumDialog = Dialog; - -})(jQuery); \ No newline at end of file + +})(jQuery);