diff --git a/js/jquery.multiDialog.js b/js/jquery.multiDialog.js index 0a4ecd5..24f361e 100644 --- a/js/jquery.multiDialog.js +++ b/js/jquery.multiDialog.js @@ -313,6 +313,7 @@ $.extend( MultiDialog.prototype, { */ openImage: function( data ) { data = this._openLinkHelper( data ); + data = this._openConfigHelper( data, this.options ); var that = this, options = this.options, image = new Image(); @@ -343,12 +344,14 @@ $.extend( MultiDialog.prototype, { openIframe: function( data ) { data = this._openLinkHelper( data ); + data = this._openConfigHelper( data, this.options ); this._parseHtml( data, "iframe", "url" ); this._open( data ); }, openInline: function( data ) { data = this._openLinkHelper( data ); + data = this._openConfigHelper( data, this.options ); var element = $("#" + data.href.split("#")[1]); if ( element.length ) { this._parseHtml( data, "inline", "content", element.html() ); @@ -360,6 +363,7 @@ $.extend( MultiDialog.prototype, { openYoutube: function( data ) { data = this._openLinkHelper( data ); + data = this._openConfigHelper( data, this.options ); var path = "http://www.youtube.com/embed/" + this._getUrlVar( data.href, "v" ) + this.options.types.config.youtube.addParameters; this._parseHtml( data, "youtube", "url", path ); @@ -368,6 +372,7 @@ $.extend( MultiDialog.prototype, { openVimeo: function( data ) { data = this._openLinkHelper( data ); + data = this._openConfigHelper( data, this.options ); var match = data.href.match( /http:\/\/(www\.)?vimeo.com\/(\d+)/ ), path = "http://player.vimeo.com/video/" + match[2] + this.options.types.config.vimeo.addParameters; @@ -377,6 +382,7 @@ $.extend( MultiDialog.prototype, { openAjax: function( data ) { data = this._openLinkHelper( data ); + data = this._openConfigHelper( data, this.options ); var that = this, options = this.options, ajaxOptions; @@ -439,6 +445,30 @@ $.extend( MultiDialog.prototype, { return data; }, + // get title, description and marker if possible + _openConfigHelper: function( data, options ) { + if ( data.element ) { + config = ( data.type ) ? options.types.config[ data.type ] : options.types.defaultConfig; + data.marker = $.extend( {}, config.marker, data.marker ); + + $.each( config.marker, function( key, callback) { + if ( $.isFunction( callback ) ) { + data.marker[ key ] = callback.call( this, data.element ); + } + }); + + if ( !data.title && $.isFunction( config.title ) ) { + alert('callback') + data.title = config.title.call( this, data.element ); + } + + if ( options.descEnabled && !data.desc && $.isFunction( config.desc ) ) { + data.desc = config.desc.call( this, data.element ); + } + } + return data; + }, + /* * Opens a dialog * @param data {Object, Jquery Object, string )} MultiDialog data object (with at least one: html, href or element), can also be an jQuery object containing a tag or any other HTML element (its content will be opened) or plain HTML