From d0775042006334da83741dd0c59521700e044b37 Mon Sep 17 00:00:00 2001 From: Mr Snow Date: Mon, 19 Aug 2013 15:05:33 +1000 Subject: [PATCH 1/2] Implement callbacks for non-link types. --- js/jquery.multiDialog.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/js/jquery.multiDialog.js b/js/jquery.multiDialog.js index 0a4ecd5..4cde56e 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 ); 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._parseHtml( data, "iframe", "url" ); this._open( data ); }, openInline: function( data ) { data = this._openLinkHelper( data ); + data = this._openConfigHelper( data ); 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 ); 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 ); 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 ); var that = this, options = this.options, ajaxOptions; @@ -439,6 +445,29 @@ $.extend( MultiDialog.prototype, { return data; }, + // get title, description and marker if possible + _openConfigHelper: function( data ) { + 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 ); + } + } + }, + /* * 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 From b952e8b26791cd3a778d1ace89472e030fbb5b9e Mon Sep 17 00:00:00 2001 From: Mr Snow Date: Mon, 19 Aug 2013 15:18:42 +1000 Subject: [PATCH 2/2] Pass in options. --- js/jquery.multiDialog.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/js/jquery.multiDialog.js b/js/jquery.multiDialog.js index 4cde56e..24f361e 100644 --- a/js/jquery.multiDialog.js +++ b/js/jquery.multiDialog.js @@ -313,7 +313,7 @@ $.extend( MultiDialog.prototype, { */ openImage: function( data ) { data = this._openLinkHelper( data ); - data = this._openConfigHelper( data ); + data = this._openConfigHelper( data, this.options ); var that = this, options = this.options, image = new Image(); @@ -344,14 +344,14 @@ $.extend( MultiDialog.prototype, { openIframe: function( data ) { data = this._openLinkHelper( data ); - data = this._openConfigHelper( 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 ); + data = this._openConfigHelper( data, this.options ); var element = $("#" + data.href.split("#")[1]); if ( element.length ) { this._parseHtml( data, "inline", "content", element.html() ); @@ -363,7 +363,7 @@ $.extend( MultiDialog.prototype, { openYoutube: function( data ) { data = this._openLinkHelper( data ); - data = this._openConfigHelper( 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 ); @@ -372,7 +372,7 @@ $.extend( MultiDialog.prototype, { openVimeo: function( data ) { data = this._openLinkHelper( data ); - data = this._openConfigHelper( 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; @@ -382,7 +382,7 @@ $.extend( MultiDialog.prototype, { openAjax: function( data ) { data = this._openLinkHelper( data ); - data = this._openConfigHelper( data ); + data = this._openConfigHelper( data, this.options ); var that = this, options = this.options, ajaxOptions; @@ -446,7 +446,7 @@ $.extend( MultiDialog.prototype, { }, // get title, description and marker if possible - _openConfigHelper: function( data ) { + _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 ); @@ -466,6 +466,7 @@ $.extend( MultiDialog.prototype, { data.desc = config.desc.call( this, data.element ); } } + return data; }, /*