From 89d02726d8caa6b83cb326ff520216501bd5ab70 Mon Sep 17 00:00:00 2001 From: Anant Shrivastava Date: Tue, 9 May 2023 01:24:04 +0530 Subject: [PATCH 1/7] removing jquery oembed --- app/views/event_sessions/show.html.erb | 6 - public/static/javascripts/jquery.oembed.js | 1003 -------------------- 2 files changed, 1009 deletions(-) delete mode 100644 public/static/javascripts/jquery.oembed.js diff --git a/app/views/event_sessions/show.html.erb b/app/views/event_sessions/show.html.erb index 8509291..6ee19e9 100644 --- a/app/views/event_sessions/show.html.erb +++ b/app/views/event_sessions/show.html.erb @@ -87,9 +87,3 @@ - - diff --git a/public/static/javascripts/jquery.oembed.js b/public/static/javascripts/jquery.oembed.js deleted file mode 100644 index 79e8e36..0000000 --- a/public/static/javascripts/jquery.oembed.js +++ /dev/null @@ -1,1003 +0,0 @@ -/*! - * jquery oembed plugin - * - * Copyright (c) 2009 Richard Chamorro - * Licensed under the MIT license - * - * Orignal Author: Richard Chamorro - * Forked by Andrew Mee to Provide a slightly diffent kind of embedding experience - */ -(function ($) { - $.fn.oembed = function (url, options, embedAction) { - - settings = $.extend(true, $.fn.oembed.defaults, options); - var shortURLList = ["0rz.tw", "1link.in", "1url.com", "2.gp", "2big.at", "2tu.us", "3.ly", "307.to", "4ms.me", "4sq.com", "4url.cc", "6url.com", "7.ly", "a.gg", "a.nf", "aa.cx", "abcurl.net", - "ad.vu", "adf.ly", "adjix.com", "afx.cc", "all.fuseurl.com", "alturl.com", "amzn.to", "ar.gy", "arst.ch", "atu.ca", "azc.cc", "b23.ru", "b2l.me", "bacn.me", "bcool.bz", "binged.it", - "bit.ly", "bizj.us", "bloat.me", "bravo.ly", "bsa.ly", "budurl.com", "canurl.com", "chilp.it", "chzb.gr", "cl.lk", "cl.ly", "clck.ru", "cli.gs", "cliccami.info", - "clickthru.ca", "clop.in", "conta.cc", "cort.as", "cot.ag", "crks.me", "ctvr.us", "cutt.us", "dai.ly", "decenturl.com", "dfl8.me", "digbig.com", - "http:\/\/digg\.com\/[^\/]+$", "disq.us", "dld.bz", "dlvr.it", "do.my", "doiop.com", "dopen.us", "easyuri.com", "easyurl.net", "eepurl.com", "eweri.com", - "fa.by", "fav.me", "fb.me", "fbshare.me", "ff.im", "fff.to", "fire.to", "firsturl.de", "firsturl.net", "flic.kr", "flq.us", "fly2.ws", "fon.gs", "freak.to", - "fuseurl.com", "fuzzy.to", "fwd4.me", "fwib.net", "g.ro.lt", "gizmo.do", "gl.am", "go.9nl.com", "go.ign.com", "go.usa.gov", "goo.gl", "goshrink.com", "gurl.es", - "hex.io", "hiderefer.com", "hmm.ph", "href.in", "hsblinks.com", "htxt.it", "huff.to", "hulu.com", "hurl.me", "hurl.ws", "icanhaz.com", "idek.net", "ilix.in", "is.gd", - "its.my", "ix.lt", "j.mp", "jijr.com", "kl.am", "klck.me", "korta.nu", "krunchd.com", "l9k.net", "lat.ms", "liip.to", "liltext.com", "linkbee.com", "linkbun.ch", - "liurl.cn", "ln-s.net", "ln-s.ru", "lnk.gd", "lnk.ms", "lnkd.in", "lnkurl.com", "lru.jp", "lt.tl", "lurl.no", "macte.ch", "mash.to", "merky.de", "migre.me", "miniurl.com", - "minurl.fr", "mke.me", "moby.to", "moourl.com", "mrte.ch", "myloc.me", "myurl.in", "n.pr", "nbc.co", "nblo.gs", "nn.nf", "not.my", "notlong.com", "nsfw.in", - "nutshellurl.com", "nxy.in", "nyti.ms", "o-x.fr", "oc1.us", "om.ly", "omf.gd", "omoikane.net", "on.cnn.com", "on.mktw.net", "onforb.es", "orz.se", "ow.ly", "ping.fm", - "pli.gs", "pnt.me", "politi.co", "post.ly", "pp.gg", "profile.to", "ptiturl.com", "pub.vitrue.com", "qlnk.net", "qte.me", "qu.tc", "qy.fi", "r.ebay.com", "r.im", "rb6.me", "read.bi", - "readthis.ca", "reallytinyurl.com", "redir.ec", "redirects.ca", "redirx.com", "retwt.me", "ri.ms", "rickroll.it", "riz.gd", "rt.nu", "ru.ly", "rubyurl.com", "rurl.org", - "rww.tw", "s4c.in", "s7y.us", "safe.mn", "sameurl.com", "sdut.us", "shar.es", "shink.de", "shorl.com", "short.ie", "short.to", "shortlinks.co.uk", "shorturl.com", - "shout.to", "show.my", "shrinkify.com", "shrinkr.com", "shrt.fr", "shrt.st", "shrten.com", "shrunkin.com", "simurl.com", "slate.me", "smallr.com", "smsh.me", "smurl.name", - "sn.im", "snipr.com", "snipurl.com", "snurl.com", "sp2.ro", "spedr.com", "srnk.net", "srs.li", "starturl.com", "stks.co", "su.pr", "surl.co.uk", "surl.hu", "t.cn", "t.co", "t.lh.com", - "ta.gd", "tbd.ly", "tcrn.ch", "tgr.me", "tgr.ph", "tighturl.com", "tiniuri.com", "tiny.cc", "tiny.ly", "tiny.pl", "tinylink.in", "tinyuri.ca", "tinyurl.com", "tk.", "tl.gd", - "tmi.me", "tnij.org", "tnw.to", "tny.com", "to.ly", "togoto.us", "totc.us", "toysr.us", "tpm.ly", "tr.im", "tra.kz", "trunc.it", "twhub.com", "twirl.at", - "twitclicks.com", "twitterurl.net", "twitterurl.org", "twiturl.de", "twurl.cc", "twurl.nl", "u.mavrev.com", "u.nu", "u76.org", "ub0.cc", "ulu.lu", "updating.me", "ur1.ca", - "url.az", "url.co.uk", "url.ie", "url360.me", "url4.eu", "urlborg.com", "urlbrief.com", "urlcover.com", "urlcut.com", "urlenco.de", "urli.nl", "urls.im", - "urlshorteningservicefortwitter.com", "urlx.ie", "urlzen.com", "usat.ly", "use.my", "vb.ly", "vevo.ly", "vgn.am", "vl.am", "vm.lc", "w55.de", "wapo.st", "wapurl.co.uk", "wipi.es", - "wp.me", "x.vu", "xr.com", "xrl.in", "xrl.us", "xurl.es", "xurl.jp", "y.ahoo.it", "yatuc.com", "ye.pe", "yep.it", "yfrog.com", "yhoo.it", "yiyd.com", "youtu.be", "yuarel.com", - "z0p.de", "zi.ma", "zi.mu", "zipmyurl.com", "zud.me", "zurl.ws", "zz.gd", "zzang.kr", "›.ws", "✩.ws", "✿.ws", "❥.ws", "➔.ws", "➞.ws", "➡.ws", "➨.ws", "➯.ws", "➹.ws", "➽.ws"]; - - if ($('#jqoembeddata').length === 0) $('').appendTo('body'); - - return this.each(function () { - var container = $(this), - resourceURL = (url && (!url.indexOf('http://') || !url.indexOf('https://'))) ? url : container.attr("href"), - provider; - - if (embedAction) { - settings.onEmbed = embedAction; - } - else if (!settings.onEmbed) { - settings.onEmbed = function (oembedData) { - $.fn.oembed.insertCode(this, settings.embedMethod, oembedData); - }; - } - - if (resourceURL !== null && resourceURL !== undefined) { - //Check if shorten URL - for (var j = 0, l = shortURLList.length; j < l; j++) { - var regExp = new RegExp('://' + shortURLList[j] + '/', "i"); - - if (resourceURL.match(regExp) !== null) { - //AJAX to http://api.longurl.org/v2/expand?url=http://bit.ly/JATvIs&format=json&callback=hhh - var ajaxopts = $.extend({ - url: "http://api.longurl.org/v2/expand", - dataType: 'jsonp', - data: { - url: resourceURL, - format: "json" - //callback: "?" - }, - success: function (data) { - //this = $.fn.oembed; - resourceURL = data['long-url']; - provider = $.fn.oembed.getOEmbedProvider(data['long-url']); - - //remove fallback - if (!!settings.fallback === false) { - provider = provider.name.toLowerCase() === 'opengraph' ? null : provider; - } - - if (provider !== null) { - provider.params = getNormalizedParams(settings[provider.name]) || {}; - provider.maxWidth = settings.maxWidth; - provider.maxHeight = settings.maxHeight; - embedCode(container, resourceURL, provider); - } else { - settings.onProviderNotFound.call(container, resourceURL); - } - }, - error: function () { - settings.onError.call(container, resourceURL) - } - }, settings.longUrlAjaxOptions || settings.ajaxOptions || {}); - - $.ajax(ajaxopts); - - return container; - } - } - provider = $.fn.oembed.getOEmbedProvider(resourceURL); - - //remove fallback - if (!!settings.fallback === false) { - provider = provider.name.toLowerCase() === 'opengraph' ? null : provider; - } - if (provider !== null) { - provider.params = getNormalizedParams(settings[provider.name]) || {}; - provider.maxWidth = settings.maxWidth; - provider.maxHeight = settings.maxHeight; - embedCode(container, resourceURL, provider); - } else { - settings.onProviderNotFound.call(container, resourceURL); - } - } - return container; - }); - }; - - var settings; - - // Plugin defaults - $.fn.oembed.defaults = { - fallback: true, - maxWidth: null, - maxHeight: null, - includeHandle: true, - embedMethod: 'auto', - // "auto", "append", "fill" - onProviderNotFound: function () { - }, - beforeEmbed: function () { - }, - afterEmbed: function () { - }, - onEmbed: false, - onError: function (a, b, c, d) { - console.log('err:', a, b, c, d) - }, - ajaxOptions: {}, - longUrlAjaxOptions: {} - }; - - /* Private functions */ - function rand(length, current) { //Found on http://stackoverflow.com/questions/1349404/generate-a-string-of-5-random-characters-in-javascript - current = current ? current : ''; - return length ? rand(--length, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz".charAt(Math.floor(Math.random() * 60)) + current) : current; - } - - function getRequestUrl(provider, externalUrl) { - var url = provider.apiendpoint, - qs = "", - i; - url += (url.indexOf("?") <= 0) ? "?" : "&"; - url = url.replace('#', '%23'); - - if (provider.maxWidth !== null && (typeof provider.params.maxwidth === 'undefined' || provider.params.maxwidth === null)) { - provider.params.maxwidth = provider.maxWidth; - } - - if (provider.maxHeight !== null && (typeof provider.params.maxheight === 'undefined' || provider.params.maxheight === null)) { - provider.params.maxheight = provider.maxHeight; - } - - for (i in provider.params) { - // We don't want them to jack everything up by changing the callback parameter - if (i == provider.callbackparameter) - continue; - - // allows the options to be set to null, don't send null values to the server as parameters - if (provider.params[i] !== null) - qs += "&" + escape(i) + "=" + provider.params[i]; - } - - url += "format=" + provider.format + "&url=" + escape(externalUrl) + qs; - if (provider.dataType != 'json') - url += "&" + provider.callbackparameter + "=?"; - - return url; - } - - function success(oembedData, externalUrl, container) { - $('#jqoembeddata').data(externalUrl, oembedData.code); - settings.beforeEmbed.call(container, oembedData); - settings.onEmbed.call(container, oembedData); - settings.afterEmbed.call(container, oembedData); - } - - function embedCode(container, externalUrl, embedProvider) { - if ($('#jqoembeddata').data(externalUrl) != undefined && embedProvider.embedtag.tag != 'iframe') { - var oembedData = {code: $('#jqoembeddata').data(externalUrl)}; - success(oembedData, externalUrl, container); - } else if (embedProvider.yql) { - var from = embedProvider.yql.from || 'htmlstring'; - var url = embedProvider.yql.url ? embedProvider.yql.url(externalUrl) : externalUrl; - var query = 'SELECT * FROM ' + from - + ' WHERE url="' + (url) + '"' - + " and " + (/html/.test(from) ? 'xpath' : 'itemPath') + "='" + (embedProvider.yql.xpath || '/') + "'"; - if (from == 'html') - query += " and compat='html5'"; - var ajaxopts = $.extend({ - url: "//query.yahooapis.com/v1/public/yql", - dataType: 'jsonp', - data: { - q: query, - format: "json", - env: 'store://datatables.org/alltableswithkeys', - callback: "?" - }, - success: function (data) { - var result; - - if (embedProvider.yql.xpath && embedProvider.yql.xpath == '//meta|//title|//link') { - var meta = {}; - - if (data.query == null) { - data.query = {}; - } - if (data.query.results == null) { - data.query.results = {"meta": []}; - } - for (var i = 0, l = data.query.results.meta.length; i < l; i++) { - var name = data.query.results.meta[i].name || data.query.results.meta[i].property || null; - if (name == null)continue; - meta[name.toLowerCase()] = data.query.results.meta[i].content; - } - if (!meta.hasOwnProperty("title") || !meta.hasOwnProperty("og:title")) { - if (data.query.results.title != null) { - meta.title = data.query.results.title; - } - } - if (!meta.hasOwnProperty("og:image") && data.query.results.hasOwnProperty("link")) { - for (var i = 0, l = data.query.results.link.length; i < l; i++) { - if (data.query.results.link[i].hasOwnProperty("rel")) { - if (data.query.results.link[i].rel == "apple-touch-icon") { - if (data.query.results.link[i].href.charAt(0) == "/") { - meta["og:image"] = url.match(/^(([a-z]+:)?(\/\/)?[^\/]+\/).*$/)[1] + data.query.results.link[i].href; - } else { - meta["og:image"] = data.query.results.link[i].href; - } - } - } - } - } - result = embedProvider.yql.datareturn(meta); - } else { - result = embedProvider.yql.datareturn ? embedProvider.yql.datareturn(data.query.results) : data.query.results.result; - } - if (result === false)return; - var oembedData = $.extend({}, result); - oembedData.code = result; - success(oembedData, externalUrl, container); - }, - error: settings.onError.call(container, externalUrl, embedProvider) - }, settings.ajaxOptions || {}); - $.ajax(ajaxopts); - } else if (embedProvider.templateRegex) { - if (embedProvider.embedtag.tag !== '') { - var flashvars = embedProvider.embedtag.flashvars || ''; - var tag = embedProvider.embedtag.tag || 'embed'; - var width = embedProvider.embedtag.width || 'auto'; - var height = embedProvider.embedtag.height || 'auto'; - var src = externalUrl.replace(embedProvider.templateRegex, embedProvider.apiendpoint); - - if (!embedProvider.nocache) { - src += '&jqoemcache=' + rand(5); - } - - if (embedProvider.apikey) { - src = src.replace('_APIKEY_', settings.apikeys[embedProvider.name]); - } - - var code = $('<' + tag + '/>').attr('src', src).attr('width', width) - .attr('height', height) - .attr('allowfullscreen', embedProvider.embedtag.allowfullscreen || 'true') - .attr('allowscriptaccess', embedProvider.embedtag.allowfullscreen || 'always') - .css('max-height', settings.maxHeight || 'auto') - .css('max-width', settings.maxWidth || 'auto'); - - if (tag == 'embed') { - code.attr('type', embedProvider.embedtag.type || "application/x-shockwave-flash") - .attr('flashvars', externalUrl.replace(embedProvider.templateRegex, flashvars)); - } - - if (tag == 'iframe') { - code.attr('scrolling', embedProvider.embedtag.scrolling || "no") - .attr('frameborder', embedProvider.embedtag.frameborder || "0"); - - } - - success({code: code}, externalUrl, container); - } else if (embedProvider.apiendpoint) { - //Add APIkey if true - if (embedProvider.apikey) - embedProvider.apiendpoint = embedProvider.apiendpoint.replace('_APIKEY_', settings.apikeys[embedProvider.name]); - - ajaxopts = $.extend({ - url: externalUrl.replace(embedProvider.templateRegex, embedProvider.apiendpoint), - dataType: 'jsonp', - success: function (data) { - var oembedData = $.extend({}, data); - oembedData.code = embedProvider.templateData(data); - success(oembedData, externalUrl, container); - }, - error: settings.onError.call(container, externalUrl, embedProvider) - }, settings.ajaxOptions || {}); - $.ajax(ajaxopts); - } else { - success({code: externalUrl.replace(embedProvider.templateRegex, embedProvider.template)}, externalUrl, container); - } - } else { - - var requestUrl = getRequestUrl(embedProvider, externalUrl); - ajaxopts = $.extend({ - url: requestUrl, - dataType: embedProvider.dataType || 'jsonp', - success: function (data) { - var oembedData = $.extend({}, data); - switch (oembedData.type) { - case "file": //Deviant Art has this - case "photo": - oembedData.code = $.fn.oembed.getPhotoCode(externalUrl, oembedData); - break; - case "video": - case "rich": - oembedData.code = $.fn.oembed.getRichCode(externalUrl, oembedData); - break; - default: - oembedData.code = $.fn.oembed.getGenericCode(externalUrl, oembedData); - break; - } - success(oembedData, externalUrl, container); - }, - error: settings.onError.call(container, externalUrl, embedProvider) - }, settings.ajaxOptions || {}); - $.ajax(ajaxopts); - } - } - - function getNormalizedParams(params) { - if (params === null) return null; - var key, normalizedParams = {}; - for (key in params) { - if (key !== null) normalizedParams[key.toLowerCase()] = params[key]; - } - return normalizedParams; - } - - /* Public functions */ - $.fn.oembed.insertCode = function (container, embedMethod, oembedData) { - if (oembedData === null) - return; - - if (embedMethod === 'auto' && container.attr('href') !== null) { - embedMethod = 'append'; - } else if (embedMethod == 'auto') { - embedMethod = 'replace'; - } - - switch (embedMethod) { - case "replace": - container.replaceWith(oembedData.code); - break; - case "fill": - container.html(oembedData.code); - break; - case "append": - container.wrap('
'); - var oembedContainer = container.parent(); - if (settings.includeHandle) { - $('').insertBefore(container).click(function () { - var encodedString = encodeURIComponent($(this).text()); - $(this).html((encodedString == '%E2%86%91') ? '↓' : '↑'); - $(this).parent().children().last().toggle(); - }); - } - oembedContainer.append('
'); - try { - oembedData.code.clone().appendTo(oembedContainer); - } catch (e) { - oembedContainer.append(oembedData.code); - } - /* Make videos semi-responsive - * If parent div width less than embeded iframe video then iframe gets shrunk to fit smaller width - * If parent div width greater thans embed iframe use the max widht - * - works on youtubes and vimeo - */ - if (settings.maxWidth) { - var post_width = oembedContainer.parent().width(); - if (post_width < settings.maxWidth) { - var iframe_width_orig = $('iframe', oembedContainer).width(); - var iframe_height_orig = $('iframe', oembedContainer).height(); - var ratio = iframe_width_orig / post_width; - $('iframe', oembedContainer).width(iframe_width_orig / ratio); - $('iframe', oembedContainer).height(iframe_height_orig / ratio); - } else { - if (settings.maxWidth) { - $('iframe', oembedContainer).width(settings.maxWidth); - } - if (settings.maxHeight) { - $('iframe', oembedContainer).height(settings.maxHeight); - } - } - } - break; - } - }; - - $.fn.oembed.getPhotoCode = function (url, oembedData) { - var code; - var alt = oembedData.title ? oembedData.title : ''; - alt += oembedData.author_name ? ' - ' + oembedData.author_name : ''; - alt += oembedData.provider_name ? ' - ' + oembedData.provider_name : ''; - - if (oembedData.url) { - code = '
' + alt + '
'; - } else if (oembedData.thumbnail_url) { - var newURL = oembedData.thumbnail_url.replace('_s', '_b'); - code = '
' + alt + '
'; - } else { - code = '
Error loading this picture
'; - } - - if (oembedData.html) { - code += "
" + oembedData.html + "
"; - } - - return code; - }; - - $.fn.oembed.getRichCode = function (url, oembedData) { - return oembedData.html; - }; - - $.fn.oembed.getGenericCode = function (url, oembedData) { - var title = ((oembedData.title) && (oembedData.title !== null)) ? oembedData.title : url; - var code = '' + title + ''; - - if (oembedData.html) { - code += "
" + oembedData.html + "
"; - } - - return code; - }; - - $.fn.oembed.getOEmbedProvider = function (url) { - for (var i = 0; i < $.fn.oembed.providers.length; i++) { - for (var j = 0, l = $.fn.oembed.providers[i].urlschemes.length; j < l; j++) { - var regExp = new RegExp($.fn.oembed.providers[i].urlschemes[j], "i"); - - if (url.match(regExp) !== null) - return $.fn.oembed.providers[i]; - } - } - return null; - }; - - // Constructor Function for OEmbedProvider Class. - $.fn.oembed.OEmbedProvider = function (name, type, urlschemesarray, apiendpoint, extraSettings) { - this.name = name; - this.type = type; // "photo", "video", "link", "rich", null - this.urlschemes = urlschemesarray; - this.apiendpoint = apiendpoint; - this.maxWidth = 500; - this.maxHeight = 400; - extraSettings = extraSettings || {}; - - if (extraSettings.useYQL) { - - if (extraSettings.useYQL == 'xml') { - extraSettings.yql = { - xpath: "//oembed/html", - from: 'xml', - apiendpoint: this.apiendpoint, - url: function (externalurl) { - return this.apiendpoint + '?format=xml&url=' + externalurl - }, - datareturn: function (results) { - return results.html.replace(/.*\[CDATA\[(.*)\]\]>$/, '$1') || '' - } - }; - } else { - extraSettings.yql = { - from: 'json', - apiendpoint: this.apiendpoint, - url: function (externalurl) { - return this.apiendpoint + '?format=json&url=' + externalurl - }, - datareturn: function (results) { - if (results.json.type != 'video' && (results.json.url || results.json.thumbnail_url)) { - return ''; - } - return results.json.html || '' - } - }; - } - this.apiendpoint = null; - } - - - for (var property in extraSettings) { - this[property] = extraSettings[property]; - } - - this.format = this.format || 'json'; - this.callbackparameter = this.callbackparameter || "callback"; - this.embedtag = this.embedtag || {tag: ""}; - - - }; - - /* - * Function to update existing providers - * - * @param {String} name The name of the provider - * @param {String} type The type of the provider can be "file", "photo", "video", "rich" - * @param {String} urlshemesarray Array of url of the provider - * @param {String} apiendpoint The endpoint of the provider - * @param {String} extraSettings Extra settings of the provider - */ - $.fn.updateOEmbedProvider = function (name, type, urlschemesarray, apiendpoint, extraSettings) { - for (var i = 0; i < $.fn.oembed.providers.length; i++) { - if ($.fn.oembed.providers[i].name === name) { - if (type !== null) { - $.fn.oembed.providers[i].type = type; - } - if (urlschemesarray !== null) { - $.fn.oembed.providers[i].urlschemes = urlschemesarray; - } - if (apiendpoint !== null) { - $.fn.oembed.providers[i].apiendpoint = apiendpoint; - } - if (extraSettings !== null) { - $.fn.oembed.providers[i].extraSettings = extraSettings; - for (var property in extraSettings) { - if (property !== null && extraSettings[property] !== null) { - $.fn.oembed.providers[i][property] = extraSettings[property]; - } - } - } - } - } - }; - - /* Native & common providers */ - $.fn.oembed.providers = [ - - //Video - new $.fn.oembed.OEmbedProvider("youtube", "video", ["youtube\\.com/watch.+v=[\\w-]+&?", "youtu\\.be/[\\w-]+", "youtube.com/embed"], '//www.youtube.com/embed/$1?wmode=transparent', { - templateRegex: /.*(?:v\=|be\/|embed\/)([\w\-]+)&?.*/, embedtag: {tag: 'iframe', width: '425', height: '349'} - }), - - //new $.fn.oembed.OEmbedProvider("youtube", "video", ["youtube\\.com/watch.+v=[\\w-]+&?", "youtu\\.be/[\\w-]+"], 'http://www.youtube.com/oembed', {useYQL:'json'}), - //new $.fn.oembed.OEmbedProvider("youtubeiframe", "video", ["youtube.com/embed"], "$1?wmode=transparent", - // {templateRegex:/(.*)/,embedtag : {tag: 'iframe', width:'425',height: '349'}}), - new $.fn.oembed.OEmbedProvider("wistia", "video", ["wistia.com/medias/.+", "wistia.com/m/.+", "wistia.com/embed/.+", "wi.st/m/.+", "wi.st/embed/.+"], 'http://fast.wistia.com/oembed', {useYQL: 'json'}), - new $.fn.oembed.OEmbedProvider("xtranormal", "video", ["xtranormal\\.com/watch/.+"], "http://www.xtranormal.com/xtraplayr/$1/$2", { - templateRegex: /.*com\/watch\/([\w\-]+)\/([\w\-]+).*/, embedtag: {tag: 'iframe', width: '320', height: '269'}}), - new $.fn.oembed.OEmbedProvider("scivee", "video", ["scivee.tv/node/.+"], "http://www.scivee.tv/flash/embedCast.swf?", { - templateRegex: /.*tv\/node\/(.+)/, embedtag: {width: '480', height: '400', flashvars: "id=$1&type=3"}}), - new $.fn.oembed.OEmbedProvider("veoh", "video", ["veoh.com/watch/.+"], "http://www.veoh.com/swf/webplayer/WebPlayer.swf?version=AFrontend.5.7.0.1337&permalinkId=$1&player=videodetailsembedded&videoAutoPlay=0&id=anonymous", { - templateRegex: /.*watch\/([^\?]+).*/, embedtag: {width: '410', height: '341'}}), - new $.fn.oembed.OEmbedProvider("gametrailers", "video", ["gametrailers\\.com/video/.+"], "http://media.mtvnservices.com/mgid:moses:video:gametrailers.com:$2", { - templateRegex: /.*com\/video\/([\w\-]+)\/([\w\-]+).*/, embedtag: {width: '512', height: '288' }}), - new $.fn.oembed.OEmbedProvider("funnyordie", "video", ["funnyordie\\.com/videos/.+"], "http://player.ordienetworks.com/flash/fodplayer.swf?", { - templateRegex: /.*videos\/([^\/]+)\/([^\/]+)?/, embedtag: {width: 512, height: 328, flashvars: "key=$1"}}), - new $.fn.oembed.OEmbedProvider("colledgehumour", "video", ["collegehumor\\.com/video/.+"], "http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=$1&use_node_id=true&fullscreen=1", - {templateRegex: /.*video\/([^\/]+).*/, embedtag: {width: 600, height: 338}}), - new $.fn.oembed.OEmbedProvider("metacafe", "video", ["metacafe\\.com/watch/.+"], "http://www.metacafe.com/fplayer/$1/$2.swf", - {templateRegex: /.*watch\/(\d+)\/(\w+)\/.*/, embedtag: {width: 400, height: 345}}), - new $.fn.oembed.OEmbedProvider("bambuser", "video", ["bambuser\\.com\/channel\/.*\/broadcast\/.*"], "http://static.bambuser.com/r/player.swf?vid=$1", - {templateRegex: /.*bambuser\.com\/channel\/.*\/broadcast\/(\w+).*/, embedtag: {width: 512, height: 339 }}), - new $.fn.oembed.OEmbedProvider("twitvid", "video", ["twitvid\\.com/.+"], "http://www.twitvid.com/embed.php?guid=$1&autoplay=0", - {templateRegex: /.*twitvid\.com\/(\w+).*/, embedtag: {tag: 'iframe', width: 480, height: 360 }}), - new $.fn.oembed.OEmbedProvider("aniboom", "video", ["aniboom\\.com/animation-video/.+"], "http://api.aniboom.com/e/$1", - {templateRegex: /.*animation-video\/(\d+).*/, embedtag: {width: 594, height: 334}}), - new $.fn.oembed.OEmbedProvider("vzaar", "video", ["vzaar\\.com/videos/.+", "vzaar.tv/.+"], "http://view.vzaar.com/$1/player?", - {templateRegex: /.*\/(\d+).*/, embedtag: {tag: 'iframe', width: 576, height: 324 }}), - new $.fn.oembed.OEmbedProvider("snotr", "video", ["snotr\\.com/video/.+"], "http://www.snotr.com/embed/$1", - {templateRegex: /.*\/(\d+).*/, embedtag: {tag: 'iframe', width: 400, height: 330}, nocache: 1 }), - new $.fn.oembed.OEmbedProvider("youku", "video", ["v.youku.com/v_show/id_.+"], "http://player.youku.com/player.php/sid/$1/v.swf", - {templateRegex: /.*id_(.+)\.html.*/, embedtag: {width: 480, height: 400}, nocache: 1 }), - new $.fn.oembed.OEmbedProvider("tudou", "video", ["tudou.com/programs/view/.+\/"], "http://www.tudou.com/v/$1/v.swf", - {templateRegex: /.*view\/(.+)\//, embedtag: {width: 480, height: 400}, nocache: 1 }), - new $.fn.oembed.OEmbedProvider("embedr", "video", ["embedr\\.com/playlist/.+"], "http://embedr.com/swf/slider/$1/425/520/default/false/std?", - {templateRegex: /.*playlist\/([^\/]+).*/, embedtag: {width: 425, height: 520}}), - new $.fn.oembed.OEmbedProvider("blip", "video", ["blip\\.tv/.+"], "//blip.tv/oembed/"), - new $.fn.oembed.OEmbedProvider("minoto-video", "video", ["http://api.minoto-video.com/publishers/.+/videos/.+", "http://dashboard.minoto-video.com/main/video/details/.+", "http://embed.minoto-video.com/.+"], "http://api.minoto-video.com/services/oembed.json", {useYQL: 'json'}), - new $.fn.oembed.OEmbedProvider("animoto", "video", ["animoto.com/play/.+"], "http://animoto.com/services/oembed"), - new $.fn.oembed.OEmbedProvider("hulu", "video", ["hulu\\.com/watch/.*"], "//www.hulu.com/api/oembed.json"), - new $.fn.oembed.OEmbedProvider("ustream", "video", ["ustream\\.tv/recorded/.*"], "http://www.ustream.tv/oembed", {useYQL: 'json'}), - new $.fn.oembed.OEmbedProvider("videojug", "video", ["videojug\\.com/(film|payer|interview).*"], "http://www.videojug.com/oembed.json", {useYQL: 'json'}), - new $.fn.oembed.OEmbedProvider("sapo", "video", ["videos\\.sapo\\.pt/.*"], "http://videos.sapo.pt/oembed", {useYQL: 'json'}), - new $.fn.oembed.OEmbedProvider("vodpod", "video", ["vodpod.com/watch/.*"], "http://vodpod.com/oembed.js", {useYQL: 'json'}), - new $.fn.oembed.OEmbedProvider("vimeo", "video", ["www\.vimeo\.com\/groups\/.*\/videos\/.*", "www\.vimeo\.com\/.*", "vimeo\.com\/groups\/.*\/videos\/.*", "vimeo\.com\/.*"], "//vimeo.com/api/oembed.json"), - new $.fn.oembed.OEmbedProvider("dailymotion", "video", ["dailymotion\\.com/.+"], '//www.dailymotion.com/services/oembed'), - new $.fn.oembed.OEmbedProvider("5min", "video", ["www\\.5min\\.com/.+"], 'http://api.5min.com/oembed.xml', {useYQL: 'xml'}), - new $.fn.oembed.OEmbedProvider("National Film Board of Canada", "video", ["nfb\\.ca/film/.+"], 'http://www.nfb.ca/remote/services/oembed/', {useYQL: 'json'}), - new $.fn.oembed.OEmbedProvider("qik", "video", ["qik\\.com/\\w+"], 'http://qik.com/api/oembed.json', {useYQL: 'json'}), - new $.fn.oembed.OEmbedProvider("revision3", "video", ["revision3\\.com"], "http://revision3.com/api/oembed/"), - new $.fn.oembed.OEmbedProvider("dotsub", "video", ["dotsub\\.com/view/.+"], "http://dotsub.com/services/oembed", {useYQL: 'json'}), - new $.fn.oembed.OEmbedProvider("clikthrough", "video", ["clikthrough\\.com/theater/video/\\d+"], "http://clikthrough.com/services/oembed"), - new $.fn.oembed.OEmbedProvider("Kinomap", "video", ["kinomap\\.com/.+"], "http://www.kinomap.com/oembed"), - new $.fn.oembed.OEmbedProvider("VHX", "video", ["vhx.tv/.+"], "http://vhx.tv/services/oembed.json"), - new $.fn.oembed.OEmbedProvider("bambuser", "video", ["bambuser.com/.+"], "http://api.bambuser.com/oembed/iframe.json"), - new $.fn.oembed.OEmbedProvider("justin.tv", "video", ["justin.tv/.+"], 'http://api.justin.tv/api/embed/from_url.json', {useYQL: 'json'}), - new $.fn.oembed.OEmbedProvider("vine", "video", ["vine.co/v/.*"], null, - { - templateRegex: /https?:\/\/w?w?w?.?vine\.co\/v\/([a-zA-Z0-9]*).*/, - template: '' + - '', - nocache: 1 - }), - new $.fn.oembed.OEmbedProvider("boxofficebuz", "video", ["boxofficebuz\\.com\\/embed/.+"], "http://boxofficebuz.com/embed/$1/$2", {templateRegex: [/.*boxofficebuz\.com\/embed\/(\w+)\/([\w*\-*]+)/], embedtag: {tag: 'iframe', width: 480, height: 360 }}), - new $.fn.oembed.OEmbedProvider("clipsyndicate", "video", ["clipsyndicate\\.com/video/play/.+", "clipsyndicate\\.com/embed/iframe\?.+"], "http://eplayer.clipsyndicate.com/embed/iframe?pf_id=1&show_title=0&va_id=$1&windows=1", {templateRegex: [/.*www\.clipsyndicate\.com\/video\/play\/(\w+)\/.*/, /.*eplayer\.clipsyndicate\.com\/embed\/iframe\?.*va_id=(\w+).*.*/], embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}), - new $.fn.oembed.OEmbedProvider("coub", "video", ["coub\\.com/.+"], "http://www.coub.com/embed/$1?muted=false&autostart=false&originalSize=false&hideTopBar=false&noSiteButtons=false&startWithHD=false", {templateRegex: [/.*coub\.com\/embed\/(\w+)\?*.*/, /.*coub\.com\/view\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}), - new $.fn.oembed.OEmbedProvider("discoverychannel", "video", ["snagplayer\\.video\\.dp\\.discovery\\.com/.+"], "http://snagplayer.video.dp.discovery.com/$1/snag-it-player.htm?auto=no", {templateRegex: [/.*snagplayer\.video\.dp\.discovery\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }}), - new $.fn.oembed.OEmbedProvider("telly", "video", ["telly\\.com/.+"], "http://www.telly.com/embed.php?guid=$1&autoplay=0", {templateRegex: [/.*telly\.com\/embed\.php\?guid=(\w+).*/, /.*telly\.com\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }}), - new $.fn.oembed.OEmbedProvider("minilogs", "video", ["minilogs\\.com/.+"], "http://www.minilogs.com/e/$1", {templateRegex: [/.*minilogs\.com\/e\/(\w+).*/, /.*minilogs\.com\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}), - new $.fn.oembed.OEmbedProvider("viddy", "video", ["viddy\\.com/.+"], "http://www.viddy.com/embed/video/$1", {templateRegex: [/.*viddy\.com\/embed\/video\/(\.*)/, /.*viddy\.com\/video\/(\.*)/], embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}), - new $.fn.oembed.OEmbedProvider("worldstarhiphop", "video", ["worldstarhiphop\\.com\/embed/.+"], "http://www.worldstarhiphop.com/embed/$1", {templateRegex: /.*worldstarhiphop\.com\/embed\/(\w+).*/, embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}), - new $.fn.oembed.OEmbedProvider("zapiks", "video", ["zapiks\\.fr\/.+"], "http://www.zapiks.fr/index.php?action=playerIframe&media_id=$1&autoStart=fals", {templateRegex: /.*zapiks\.fr\/index.php\?[\w\=\&]*media_id=(\w+).*/, embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}), - - //Audio - new $.fn.oembed.OEmbedProvider("official.fm", "rich", ["official.fm/.+"], 'http://official.fm/services/oembed', {useYQL: 'json'}), - new $.fn.oembed.OEmbedProvider("chirbit", "rich", ["chirb.it/.+"], 'http://chirb.it/oembed.json', {useYQL: 'json'}), - new $.fn.oembed.OEmbedProvider("chirbit", "audio", ["chirb\\.it/.+"], "http://chirb.it/wp/$1", {templateRegex: [/.*chirb\.it\/wp\/(\w+).*/, /.*chirb\.it\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}), - new $.fn.oembed.OEmbedProvider("Huffduffer", "rich", ["huffduffer.com/[-.\\w@]+/\\d+"], "http://huffduffer.com/oembed"), - new $.fn.oembed.OEmbedProvider("Spotify", "rich", ["open.spotify.com/(track|album|user)/"], "https://embed.spotify.com/oembed/"), - new $.fn.oembed.OEmbedProvider("shoudio", "rich", ["shoudio.com/.+", "shoud.io/.+"], "http://shoudio.com/api/oembed"), - new $.fn.oembed.OEmbedProvider("mixcloud", "rich", ["mixcloud.com/.+"], 'http://www.mixcloud.com/oembed/', {useYQL: 'json'}), - new $.fn.oembed.OEmbedProvider("rdio.com", "rich", ["rd.io/.+", "rdio.com"], "http://www.rdio.com/api/oembed/"), - new $.fn.oembed.OEmbedProvider("Soundcloud", "rich", ["soundcloud.com/.+", "snd.sc/.+"], "//soundcloud.com/oembed", {format: 'js'}), - new $.fn.oembed.OEmbedProvider("bandcamp", "rich", ["bandcamp\\.com/album/.+"], null, - { - yql: { - xpath: "//meta[contains(@content, \\'EmbeddedPlayer\\')]", - from: 'html', - datareturn: function (results) { - return results.meta ? '' : false; - } - } - }), - - //Photo - new $.fn.oembed.OEmbedProvider("deviantart", "photo", ["deviantart.com/.+", "fav.me/.+", "deviantart.com/.+"], "//backend.deviantart.com/oembed", {format: 'jsonp'}), - new $.fn.oembed.OEmbedProvider("skitch", "photo", ["skitch.com/.+"], null, - { - yql: { - xpath: "json", - from: 'json', - url: function (externalurl) { - return 'http://skitch.com/oembed/?format=json&url=' + externalurl - }, - datareturn: function (data) { - return $.fn.oembed.getPhotoCode(data.json.url, data.json); - } - } - }), - new $.fn.oembed.OEmbedProvider("mobypicture", "photo", ["mobypicture.com/user/.+/view/.+", "moby.to/.+"], "http://api.mobypicture.com/oEmbed"), - new $.fn.oembed.OEmbedProvider("flickr", "photo", ["flickr\\.com/photos/.+"], "//flickr.com/services/oembed", {callbackparameter: 'jsoncallback'}), - new $.fn.oembed.OEmbedProvider("photobucket", "photo", ["photobucket\\.com/(albums|groups)/.+"], "http://photobucket.com/oembed/"), - new $.fn.oembed.OEmbedProvider("instagram", "photo", ["instagr\\.?am(\\.com)?/.+"], "//api.instagram.com/oembed"), - //new $.fn.oembed.OEmbedProvider("yfrog", "photo", ["yfrog\\.(com|ru|com\\.tr|it|fr|co\\.il|co\\.uk|com\\.pl|pl|eu|us)/.+"], "http://www.yfrog.com/api/oembed",{useYQL:"json"}), - new $.fn.oembed.OEmbedProvider("SmugMug", "photo", ["smugmug.com/[-.\\w@]+/.+"], "http://api.smugmug.com/services/oembed/"), - new $.fn.oembed.OEmbedProvider("dribbble", "photo", ["dribbble.com/shots/.+"], "http://api.dribbble.com/shots/$1?callback=?", - { - templateRegex: /.*shots\/([\d]+).*/, - templateData: function (data) { - if (!data.image_teaser_url) { - return false; - } - return ''; - } - }), - new $.fn.oembed.OEmbedProvider("chart.ly", "photo", ["chart\\.ly/[a-z0-9]{6,8}"], "http://chart.ly/uploads/large_$1.png", - {templateRegex: /.*ly\/([^\/]+).*/, embedtag: {tag: 'img'}, nocache: 1}), - //new $.fn.oembed.OEmbedProvider("stocktwits.com", "photo", ["stocktwits\\.com/message/.+"], "http://charts.stocktwits.com/production/original_$1.png?", - // { templateRegex: /.*message\/([^\/]+).*/, embedtag: { tag: 'img'},nocache:1 }), - new $.fn.oembed.OEmbedProvider("circuitlab", "photo", ["circuitlab.com/circuit/.+"], "https://www.circuitlab.com/circuit/$1/screenshot/540x405/", - {templateRegex: /.*circuit\/([^\/]+).*/, embedtag: {tag: 'img'}, nocache: 1}), - new $.fn.oembed.OEmbedProvider("23hq", "photo", ["23hq.com/[-.\\w@]+/photo/.+"], "http://www.23hq.com/23/oembed", {useYQL: "json"}), - new $.fn.oembed.OEmbedProvider("img.ly", "photo", ["img\\.ly/.+"], "//img.ly/show/thumb/$1", - {templateRegex: /.*ly\/([^\/]+).*/, embedtag: {tag: 'img'}, nocache: 1}), - new $.fn.oembed.OEmbedProvider("twitgoo.com", "photo", ["twitgoo\\.com/.+"], "http://twitgoo.com/show/thumb/$1", - {templateRegex: /.*com\/([^\/]+).*/, embedtag: {tag: 'img'}, nocache: 1}), - new $.fn.oembed.OEmbedProvider("imgur.com", "photo", ["imgur\\.com/gallery/.+"], "http://imgur.com/$1l.jpg", - {templateRegex: /.*gallery\/([^\/]+).*/, embedtag: {tag: 'img'}, nocache: 1}), - new $.fn.oembed.OEmbedProvider("visual.ly", "rich", ["visual\\.ly/.+"], null, - { - yql: { - xpath: "//a[@id=\\'gc_article_graphic_image\\']/img", - from: 'htmlstring' - } - }), - new $.fn.oembed.OEmbedProvider("achewood", "photo", ["achewood\\.com\\/index.php\\?date=.+"], "http://www.achewood.com/comic.php?date=$1", {templateRegex: /.*achewood\.com\/index.php\?date=(\w+).*/, embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}), - new $.fn.oembed.OEmbedProvider("fotokritik", "photo", ["fotokritik\\.com/.+"], "http://www.fotokritik.com/embed/$1", {templateRegex: [/.*fotokritik\.com\/embed\/(\w+).*/, /.*fotokritik\.com\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}), - new $.fn.oembed.OEmbedProvider("giflike", "photo", ["giflike\\.com/.+"], "http://www.giflike.com/embed/$1", {templateRegex: [/.*giflike\.com\/embed\/(\w+).*/, /.*giflike\.com\/a\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}), - - //Rich - new $.fn.oembed.OEmbedProvider("twitter", "rich", ["twitter.com/.+"], "https://api.twitter.com/1/statuses/oembed.json"), - new $.fn.oembed.OEmbedProvider("gmep", "rich", ["gmep.imeducate.com/.*", "gmep.org/.*"], "http://gmep.org/oembed.json"), - new $.fn.oembed.OEmbedProvider("urtak", "rich", ["urtak.com/(u|clr)/.+"], "http://oembed.urtak.com/1/oembed"), - new $.fn.oembed.OEmbedProvider("cacoo", "rich", ["cacoo.com/.+"], "http://cacoo.com/oembed.json"), - new $.fn.oembed.OEmbedProvider("dailymile", "rich", ["dailymile.com/people/.*/entries/.*"], "http://api.dailymile.com/oembed"), - new $.fn.oembed.OEmbedProvider("documentcloud", "rich", ["documentcloud.org/documents/.+"], "https://www.documentcloud.org/api/oembed.json"), - new $.fn.oembed.OEmbedProvider("dipity", "rich", ["dipity.com/timeline/.+"], 'http://www.dipity.com/oembed/timeline/', {useYQL: 'json'}), - new $.fn.oembed.OEmbedProvider("sketchfab", "rich", ["sketchfab.com/show/.+"], 'http://sketchfab.com/oembed', {useYQL: 'json'}), - new $.fn.oembed.OEmbedProvider("speakerdeck", "rich", ["speakerdeck.com/.+"], 'http://speakerdeck.com/oembed.json', {useYQL: 'json'}), - new $.fn.oembed.OEmbedProvider("popplet", "rich", ["popplet.com/app/.*"], "http://popplet.com/app/Popplet_Alpha.swf?page_id=$1&em=1", - { - templateRegex: /.*#\/([^\/]+).*/, - embedtag: { - width: 460, - height: 460 - } - }), - - new $.fn.oembed.OEmbedProvider("pearltrees", "rich", ["pearltrees.com/.*"], "http://cdn.pearltrees.com/s/embed/getApp?", - { - templateRegex: /.*N-f=1_(\d+).*N-p=(\d+).*/, - embedtag: { - width: 460, - height: 460, - flashvars: "lang=en_US&embedId=pt-embed-$1-693&treeId=$1&pearlId=$2&treeTitle=Diagrams%2FVisualization&site=www.pearltrees.com%2FF" - } - }), - - new $.fn.oembed.OEmbedProvider("prezi", "rich", ["prezi.com/.*"], "//prezi.com/bin/preziloader.swf?", - { - templateRegex: /.*com\/([^\/]+)\/.*/, - embedtag: { - width: 550, - height: 400, - flashvars: "prezi_id=$1&lock_to_path=0&color=ffffff&autoplay=no&autohide_ctrls=0" - } - }), - - new $.fn.oembed.OEmbedProvider("tourwrist", "rich", ["tourwrist.com/tours/.+"], null, - { - templateRegex: /.*tours.([\d]+).*/, - template: function (wm, tourid) { - setTimeout(function () { - if (loadEmbeds)loadEmbeds(); - }, 2000); - return "
"; - } - }), - - new $.fn.oembed.OEmbedProvider("meetup", "rich", ["meetup\\.(com|ps)/.+"], "http://api.meetup.com/oembed"), - new $.fn.oembed.OEmbedProvider("ebay", "rich", ["ebay\\.*"], "http://togo.ebay.com/togo/togo.swf?2008013100", - { - templateRegex: /.*\/([^\/]+)\/(\d{10,13}).*/, - embedtag: { - width: 355, - height: 300, - flashvars: "base=http://togo.ebay.com/togo/&lang=en-us&mode=normal&itemid=$2&query=$1" - } - }), - new $.fn.oembed.OEmbedProvider("wikipedia", "rich", ["wikipedia.org/wiki/.+"], "http://$1.wikipedia.org/w/api.php?action=parse&page=$2&format=json§ion=0&callback=?", { - templateRegex: /.*\/\/([\w]+).*\/wiki\/([^\/]+).*/, - templateData: function (data) { - if (!data.parse) - return false; - var text = data.parse['text']['*'].replace(/href="\/wiki/g, 'href="http://en.wikipedia.org/wiki'); - return '

' + data.parse['displaytitle'] + '

' + text + '
'; - } - }), - new $.fn.oembed.OEmbedProvider("imdb", "rich", ["imdb.com/title/.+"], "http://www.imdbapi.com/?i=$1&callback=?", - { - templateRegex: /.*\/title\/([^\/]+).*/, - templateData: function (data) { - if (!data.Title) - return false; - return '

' + data.Title + ' (' + data.Year + ')

Rating: ' + data.imdbRating + '
Genre: ' + data.Genre + '
Starring: ' + data.Actors + '

' + data.Plot + '
'; - } - }), - new $.fn.oembed.OEmbedProvider("livejournal", "rich", ["livejournal.com/"], "http://ljpic.seacrow.com/json/$2$4?jsonp=?" - , { - templateRegex: /(http:\/\/(((?!users).)+)\.livejournal\.com|.*users\.livejournal\.com\/([^\/]+)).*/, - templateData: function (data) { - if (!data.username) - return false; - return '
[info]' + data.username + '
' + data.name + '
'; - } - }), - new $.fn.oembed.OEmbedProvider("circuitbee", "rich", ["circuitbee\\.com/circuit/view/.+"], "http://c.circuitbee.com/build/r/schematic-embed.html?id=$1", - { - templateRegex: /.*circuit\/view\/(\d+).*/, - embedtag: { - tag: 'iframe', - width: '500', - height: '350' - } - }), - - new $.fn.oembed.OEmbedProvider("googlecalendar", "rich", ["www.google.com/calendar/embed?.+"], "$1", - {templateRegex: /(.*)/, embedtag: {tag: 'iframe', width: '800', height: '600' }}), - new $.fn.oembed.OEmbedProvider("jsfiddle", "rich", ["jsfiddle.net/[^/]+/?"], "http://jsfiddle.net/$1/embedded/result,js,resources,html,css/?", - {templateRegex: /.*net\/([^\/]+).*/, embedtag: {tag: 'iframe', width: '100%', height: '300' }}), - new $.fn.oembed.OEmbedProvider("jsbin", "rich", ["jsbin.com/.+"], "http://jsbin.com/$1/?", - {templateRegex: /.*com\/([^\/]+).*/, embedtag: {tag: 'iframe', width: '100%', height: '300' }}), - new $.fn.oembed.OEmbedProvider("jotform", "rich", ["form.jotform.co/form/.+"], "$1?", - {templateRegex: /(.*)/, embedtag: {tag: 'iframe', width: '100%', height: '507' }}), - new $.fn.oembed.OEmbedProvider("reelapp", "rich", ["reelapp\\.com/.+"], "http://www.reelapp.com/$1/embed", - {templateRegex: /.*com\/(\S{6}).*/, embedtag: {tag: 'iframe', width: '400', height: '338'}}), - new $.fn.oembed.OEmbedProvider("linkedin", "rich", ["linkedin.com/pub/.+"], "https://www.linkedin.com/cws/member/public_profile?public_profile_url=$1&format=inline&isFramed=true", - {templateRegex: /(.*)/, embedtag: {tag: 'iframe', width: '368px', height: 'auto'}}), - new $.fn.oembed.OEmbedProvider("timetoast", "rich", ["timetoast.com/timelines/[0-9]+"], "http://www.timetoast.com/flash/TimelineViewer.swf?passedTimelines=$1", - {templateRegex: /.*timelines\/([0-9]*)/, embedtag: { width: 550, height: 400}, nocache: 1}), - new $.fn.oembed.OEmbedProvider("pastebin", "rich", ["pastebin\\.com/[\\S]{8}"], "http://pastebin.com/embed_iframe.php?i=$1", - {templateRegex: /.*\/(\S{8}).*/, embedtag: {tag: 'iframe', width: '100%', height: 'auto'}}), - new $.fn.oembed.OEmbedProvider("mixlr", "rich", ["mixlr.com/.+"], "http://mixlr.com/embed/$1?autoplay=ae", - {templateRegex: /.*com\/([^\/]+).*/, embedtag: {tag: 'iframe', width: '100%', height: 'auto' }}), - new $.fn.oembed.OEmbedProvider("pastie", "rich", ["pastie\\.org/pastes/.+"], null, {yql: {xpath: '//pre[@class="textmate-source"]'}}), - new $.fn.oembed.OEmbedProvider("github", "rich", ["gist.github.com/.+"], "https://github.com/api/oembed"), - new $.fn.oembed.OEmbedProvider("github", "rich", ["github.com/[-.\\w@]+/[-.\\w@]+"], "https://api.github.com/repos/$1/$2?callback=?" - , {templateRegex: /.*\/([^\/]+)\/([^\/]+).*/, - templateData: function (data) { - if (!data.data.html_url)return false; - return '

' + data.data.name + '

' + data.data.description + '

' - + '

Last updated: ' + data.data.pushed_at + '

'; - } - }), - new $.fn.oembed.OEmbedProvider("facebook", "rich", ["facebook.com"], null - , {templateRegex: /.*\/([^\/]+)\/([^\/]+).*/, - template: function (url) { - // adding script directly to DOM to make sure that it is loaded correctly. - if (!$.fn.oembed.facebokScriptHasBeenAdded) { - $('
').appendTo('body'); - var script = document.createElement('script'); - script.type = 'text/javascript'; - script.text = '(function(d, s, id) {var js, fjs = d.getElementsByTagName(s)[0];if (d.getElementById(id)) return;js = d.createElement(s); js.id = id;js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.0";fjs.parentNode.insertBefore(js, fjs);}(document, "script", "facebook-jssdk"));'; - document.body.appendChild(script); - $.fn.oembed.facebokScriptHasBeenAdded = true; - } - - // returning template with url of facebook post. - return '
'; - - } - }), - /* - // Saving old implementation of Facebook in case we will need it as example in the future. - new $.fn.oembed.OEmbedProvider("facebook", "rich", ["facebook.com/(people/[^\\/]+/\\d+|[^\\/]+$)"], "https://graph.facebook.com/$2$3/?callback=?" - ,{templateRegex:/.*facebook.com\/(people\/[^\/]+\/(\d+).*|([^\/]+$))/, - templateData : function(data){ if(!data.id)return false; - var out = '
facebook '; - if(data.from) out += ''+data.from.name+''; - else if(data.link) out += ''+data.name+''; - else if(data.username) out += ''+data.name+''; - else out += ''+data.name+''; - out += '
'; - if(data.picture) out += ''; - else out += ''; - if(data.from) out += ''+data.name+''; - if(data.founded) out += 'Founded: '+data.founded+'
'; - if(data.category) out += 'Category: '+data.category+'
'; - if(data.website) out += 'Website: '+data.website+'
'; - if(data.gender) out += 'Gender: '+data.gender+'
'; - if(data.description) out += data.description + '
'; - out += '
'; - return out; - } - }), - */ - new $.fn.oembed.OEmbedProvider("stackoverflow", "rich", ["stackoverflow.com/questions/[\\d]+"], "http://api.stackoverflow.com/1.1/questions/$1?body=true&jsonp=?" - , {templateRegex: /.*questions\/([\d]+).*/, - templateData: function (data) { - if (!data.questions) - return false; - var q = data.questions[0]; - var body = $(q.body).text(); - var out = '
' - + '' + (q.up_vote_count - q.down_vote_count) + '
vote(s)
' - + '
' + q.answer_count + 'answer
' + q.view_count + ' view(s)
' - + '

' + q.title + '

' - + '
' + body.substring(0, 100) + '...
'; - for (i in q.tags) { - out += ''; - } - - out += '
'; - return out; - } - }), - new $.fn.oembed.OEmbedProvider("wordpress", "rich", ["wordpress\\.com/.+", "blogs\\.cnn\\.com/.+", "techcrunch\\.com/.+", "wp\\.me/.+"], "http://public-api.wordpress.com/oembed/1.0/?for=jquery-oembed-all"), - new $.fn.oembed.OEmbedProvider("screenr", "rich", ["screenr\.com"], "http://www.screenr.com/embed/$1", - {templateRegex: /.*\/([^\/]+).*/, embedtag: {tag: 'iframe', width: '650', height: 396}}) , - new $.fn.oembed.OEmbedProvider("gigpans", "rich", ["gigapan\\.org/[-.\\w@]+/\\d+"], "http://gigapan.org/gigapans/$1/options/nosnapshots/iframe/flash.html", - {templateRegex: /.*\/(\d+)\/?.*/, embedtag: {tag: 'iframe', width: '100%', height: 400 }}), - new $.fn.oembed.OEmbedProvider("scribd", "rich", ["scribd\\.com/.+"], "http://www.scribd.com/embeds/$1/content?start_page=1&view_mode=list", - {templateRegex: /.*doc\/([^\/]+).*/, embedtag: {tag: 'iframe', width: '100%', height: 600}}), - new $.fn.oembed.OEmbedProvider("kickstarter", "rich", ["kickstarter\\.com/projects/.+"], "$1/widget/card.html", - {templateRegex: /([^\?]+).*/, embedtag: {tag: 'iframe', width: '220', height: 380}}), - new $.fn.oembed.OEmbedProvider("amazon", "rich", ["amzn.com/B+", "amazon.com.*/(B\\S+)($|\\/.*)"], "http://rcm.amazon.com/e/cm?t=_APIKEY_&o=1&p=8&l=as1&asins=$1&ref=qf_br_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr", - { - apikey: true, - templateRegex: /.*\/(B[0-9A-Z]+)($|\/.*)/, - embedtag: { - tag: 'iframe', - width: '120px', - height: '240px'} - }), - new $.fn.oembed.OEmbedProvider("slideshare", "rich", ["slideshare\.net"], "//www.slideshare.net/api/oembed/2", {format: 'jsonp'}), - new $.fn.oembed.OEmbedProvider("roomsharejp", "rich", ["roomshare\\.jp/(en/)?post/.*"], "http://roomshare.jp/oembed.json"), - new $.fn.oembed.OEmbedProvider("lanyard", "rich", ["lanyrd.com/\\d+/.+"], null, - { - yql: { - xpath: '(//div[@class="primary"])[1]', - from: 'htmlstring', - datareturn: function (results) { - if (!results.result) - return false; - return '
' + results.result + '
'; - } - } - }), - new $.fn.oembed.OEmbedProvider("asciiartfarts", "rich", ["asciiartfarts.com/\\d+.html"], null, - { - yql: { - xpath: '//pre/font', - from: 'htmlstring', - datareturn: function (results) { - if (!results.result) - return false; - return '
' + results.result + '
'; - } - } - }), - new $.fn.oembed.OEmbedProvider("coveritlive", "rich", ["coveritlive.com/"], null, { - templateRegex: /(.*)/, - template: ''}), - new $.fn.oembed.OEmbedProvider("polldaddy", "rich", ["polldaddy.com/"], null, { - templateRegex: /(?:https?:\/\/w?w?w?.?polldaddy.com\/poll\/)([0-9]*)\//, - template: '', - nocache: 1 - }), - new $.fn.oembed.OEmbedProvider("360io", "rich", ["360\\.io/.+"], "http://360.io/$1", {templateRegex: /.*360\.io\/(\w+).*/, embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}), - new $.fn.oembed.OEmbedProvider("bubbli", "rich", ["on\\.bubb\\.li/.+"], "http://on.bubb.li/$1", {templateRegex: /.*on\.bubb\.li\/(\w+).*/, embedtag: {tag: 'iframe', width: 480, height: 360}, nocache: 1 }), - new $.fn.oembed.OEmbedProvider("cloudup", "rich", ["cloudup\\.com/.+"], "http://cloudup.com/$1?chromeless", {templateRegex: [/.*cloudup\.com\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }}), - new $.fn.oembed.OEmbedProvider("codepen", "rich", ["codepen.io/.+"], "http://codepen.io/$1/embed/$2", {templateRegex: [/.*io\/(\w+)\/pen\/(\w+).*/, /.*io\/(\w+)\/full\/(\w+).*/], embedtag: {tag: 'iframe', width: '100%', height: '300'}, nocache: 1 }), - new $.fn.oembed.OEmbedProvider("googleviews", "rich", ["(.*maps\\.google\\.com\\/maps\\?).+(output=svembed).+(cbp=(.*)).*"], "https://maps.google.com/maps?layer=c&panoid=$3&ie=UTF8&source=embed&output=svembed&cbp=$5", {templateRegex: /(.*maps\.google\.com\/maps\?).+(panoid=(\w+)&).*(cbp=(.*)).*/, embedtag: {tag: 'iframe', width: 480, height: 360}, nocache: 1 }), - new $.fn.oembed.OEmbedProvider("googlemaps", "rich", ["google\\.com\/maps\/place/.+"], "http://maps.google.com/maps?t=m&q=$1&output=embed", {templateRegex: /.*google\.com\/maps\/place\/([\w\+]*)\/.*/, embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}), - new $.fn.oembed.OEmbedProvider("imajize", "rich", ["embed\\.imajize\\.com/.+"], "http://embed.imajize.com/$1", {templateRegex: /.*embed\.imajize\.com\/(.*)/, embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}), - new $.fn.oembed.OEmbedProvider("mapjam", "rich", ["mapjam\\.com/.+"], "http://www.mapjam.com/$1", {templateRegex: /.*mapjam\.com\/(.*)/, embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}), - new $.fn.oembed.OEmbedProvider("polar", "rich", ["polarb\\.com/.+"], "http://assets-polarb-com.a.ssl.fastly.net/api/v4/publishers/unknown/embedded_polls/iframe?poll_id=$1", {templateRegex: /.*polarb\.com\/polls\/(\w+).*/, embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}), - new $.fn.oembed.OEmbedProvider("ponga", "rich", ["ponga\\.com/.+"], "https://www.ponga.com/embedded?id=$1", {templateRegex: [/.*ponga\.com\/embedded\?id=(\w+).*/, /.*ponga\.com\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}), - - //Use Open Graph Where applicable - new $.fn.oembed.OEmbedProvider("opengraph", "rich", [".*"], null, - { - yql: { - xpath: "//meta|//title|//link", - from: 'html', - datareturn: function (results) { - if (!results['og:title'] && results['title'] && results['description']) - results['og:title'] = results['title']; - - if (!results['og:title'] && !results['title']) - return false; - - var code = $('

'); - if (results['og:video']) { - var embed = $(''); - embed.attr('type', results['og:video:type'] || "application/x-shockwave-flash") - .css('max-height', settings.maxHeight || 'auto') - .css('max-width', settings.maxWidth || 'auto'); - if (results['og:video:width']) - embed.attr('width', results['og:video:width']); - if (results['og:video:height']) - embed.attr('height', results['og:video:height']); - code.append(embed); - } else if (results['og:image']) { - var img = $(''); - img.css('max-height', settings.maxHeight || 'auto').css('max-width', settings.maxWidth || 'auto'); - if (results['og:image:width']) - img.attr('width', results['og:image:width']); - if (results['og:image:height']) - img.attr('height', results['og:image:height']); - code.append(img); - } - - if (results['og:title']) - code.append('' + results['og:title'] + '
'); - - if (results['og:description']) - code.append(results['og:description'] + '
'); - else if (results['description']) - code.append(results['description'] + '
'); - - return code; - } - } - } - ) - - ]; -})(jQuery); -//This is needed for gravatar :( -String.prototype.md5=function(){var a=function(a,b){var c=(a&65535)+(b&65535);var d=(a>>16)+(b>>16)+(c>>16);return d<<16|c&65535};var b=function(a,b){return a<>>32-b};var c=function(c,d,e,f,g,h){return a(b(a(a(d,c),a(f,h)),g),e)};var d=function(a,b,d,e,f,g,h){return c(b&d|~b&e,a,b,f,g,h)};var e=function(a,b,d,e,f,g,h){return c(b&e|d&~e,a,b,f,g,h)};var f=function(a,b,d,e,f,g,h){return c(b^d^e,a,b,f,g,h)};var g=function(a,b,d,e,f,g,h){return c(d^(b|~e),a,b,f,g,h)};var h=function(b){var c,h,i,j,k,l=b.length;var m=1732584193;var n=-271733879;var o=-1732584194;var p=271733878;for(k=0;k>2]>>d%4*8+4&15)+b.charAt(a[d>>2]>>d%4*8&15)}return c};var j=function(a){var b=(a.length+8>>6)+1;var c=[],d,e=b*16,f,g=a.length;for(d=0;d>2]|=(a.charCodeAt(f)&255)<>2]|=128< Date: Mon, 2 Sep 2024 14:47:36 +0530 Subject: [PATCH 2/7] Dockerfile build issue upon docker compose up (#133) * resolved docker build issue * removed apt insecurities arguments * Bump debian strech to bullseye --- Dockerfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7f69bd6..e5b1af1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,7 @@ -FROM ruby:2.6.2-slim -RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs libsqlite3-dev default-libmysqlclient-dev libxml2-dev +FROM ruby:2.6.8-slim-bullseye + +RUN apt-get update -y && \ + apt-get install -y build-essential libpq-dev nodejs libsqlite3-dev default-libmysqlclient-dev libxml2-dev WORKDIR /app From 6bd9eb79860b0174b8d22eef943734cc836e9dd2 Mon Sep 17 00:00:00 2001 From: Sai Sanjay <97831658+sanjay7178@users.noreply.github.com> Date: Mon, 2 Sep 2024 17:14:13 +0530 Subject: [PATCH 3/7] revamped uiux for chapters listing page (#131) * new revamped uiux for null chapter listing with search chapters * google map css addition * optimized search chapters ability using search index and debouncing over array of chapters --------- Co-authored-by: Abhisek Datta --- .gitpod.yml | 10 ++ app/assets/stylesheets/application.css.erb | 176 +++++++++++++++++++-- app/views/chapters/index.html.erb | 97 ++++++++---- 3 files changed, 237 insertions(+), 46 deletions(-) create mode 100644 .gitpod.yml diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 0000000..05737a3 --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,10 @@ +# This configuration file was automatically generated by Gitpod. +# Please adjust to your needs (see https://www.gitpod.io/docs/introduction/learn-gitpod/gitpod-yaml) +# and commit this file to your remote git repository to share the goodness with others. + +# Learn more from ready-to-use templates: https://www.gitpod.io/docs/introduction/getting-started/quickstart + +tasks: + - init: bundle install + + diff --git a/app/assets/stylesheets/application.css.erb b/app/assets/stylesheets/application.css.erb index 1953999..7e80878 100644 --- a/app/assets/stylesheets/application.css.erb +++ b/app/assets/stylesheets/application.css.erb @@ -69,9 +69,119 @@ body { margin-bottom:4rem!important; } + +@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600&display=swap'); + +<%# search chapters Input css %> +.search-container { + display: flex; + justify-content: flex-end; + padding: 20px; +} +.search-wrapper { + position: relative; + width: 250px; +} +#searchInput { + width: 100%; + padding: 10px 15px 10px 40px; + font-size: 16px; + border: none; + border-bottom: 2px solid #3498db; + background-color: transparent; + outline: none; + transition: border-color 0.3s ease; +} +#searchInput:focus { + border-color: #2980b9; +} + +.search-icon { + position: absolute; + left: 10px; + top: 50%; + transform: translateY(-50%); + color: #7f8c8d; +} + +<%# chapters css %> +.chapters-row { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + gap: 30px; + padding: 30px; +} + .chapter-card { - border: 1px solid #dee2e6 !important; - margin-bottom:3rem!important; + background-color: #ffffff; + border-radius: 12px; + overflow: hidden; + box-shadow: 0 10px 20px rgba(0,0,0,0.05); + transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); + height: 100%; + display: flex; + flex-direction: column; + font-family: 'Poppins', sans-serif; + position: relative; +} + +.chapter-card:hover { + transform: translateY(-5px); + box-shadow: 0 15px 30px rgba(0,0,0,0.1); +} +.chapter-img-container { + position: relative; + overflow: hidden; + height: 200px; +} +.chapter-img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 0.5s ease; +} +.chapter-card:hover .chapter-img { + transform: scale(1.1); +} + +.card-body { + padding: 20px; + flex-grow: 1; + display: flex; + flex-direction: column; +} +.card-title { + font-family: 'Montserrat', sans-serif; + font-size: 20px; + font-weight: 600; + margin: 0 0 10px; + color: #2c3e50; + letter-spacing: 0.5px; +} + +.card-text { + font-size: 14px; + font-family: 'Poppins', sans-serif; + font-weight: 400; + line-height: 1.5; + color: #34495e; + margin-bottom: 15px; +} + +.text-muted { + font-size: 13px; + color: #7f8c8d; +} + +.chapter-status { + position: absolute; + top: 15px; + right: 15px; + padding: 5px 10px; + border-radius: 20px; + font-size: 12px; + font-weight: 600; + text-transform: uppercase; } .chapter-active { @@ -81,29 +191,63 @@ body { .chapter-inactive { background-image: radial-gradient(circle, rgba(255,102,102,0.1), rgba(255,102,102,0.6)); } - -.chapter-zoom { - transform: scale(1.1); +.chapter-active .chapter-status { + background-color: #2ecc71; + color: white; } - -.chapter-fixed-content { - position: fixed; +.chapter-inactive .chapter-status { + background-color: #e74c3c; + color: white; } -.chapter-img { - opacity: 0.9; +.chapter-details { + margin-top: auto; + display: flex; + justify-content: space-between; + align-items: center; + padding-top: 15px; + border-top: 1px solid #ecf0f1; +} +<%# events css %> +.event-count { + display: flex; + align-items: center; +} +.event-icon { + margin-right: 5px; + font-size: 16px; +} +<%# learn more css %> +.learn-more { + background-color: #3498db; + color: white; + padding: 8px 15px; + border-radius: 20px; + text-decoration: none; + font-size: 13px; + font-weight: 600; + transition: background-color 0.3s ease; +} +.learn-more:hover { + background-color: #2980b9; } -.chapter-hover figure { - opacity: 1; - -webkit-transition: .3s ease-in-out; - transition: .3s ease-in-out; +<%# upcoming events css %> +.upcoming-events { + display: flex; + margin-top: 10px; + margin-bottom: 10px; +} +.upcoming-events .event-icon { + margin-right: 8px; } -.chapter-hover figure:hover { - opacity: .6; +.upcoming-events .text-muted { + color: #6c757d; } + + /* Autocomplete JS */ .autocomplete-suggestions { border: 1px solid #999; background: #FFF; cursor: default; overflow: auto; -webkit-box-shadow: 1px 4px 3px rgba(50, 50, 50, 0.64); -moz-box-shadow: 1px 4px 3px rgba(50, 50, 50, 0.64); box-shadow: 1px 4px 3px rgba(50, 50, 50, 0.64); } .autocomplete-suggestion { padding: 2px 5px; white-space: nowrap; overflow: hidden; } diff --git a/app/views/chapters/index.html.erb b/app/views/chapters/index.html.erb index f983107..f36b1b5 100644 --- a/app/views/chapters/index.html.erb +++ b/app/views/chapters/index.html.erb @@ -1,43 +1,80 @@

Chapters

-
+ +
+
+ 🔍 + +
+
+ +
<% @chapters.each do |chapter| %> - <% if chapter.active? %> - <% cName = 'chapter-active' %> - <% else %> - <% cName = 'chapter-inactive' %> - <% end %> -
- <%= link_to chapter_path(chapter) do %> -
-
-
<%= image_tag chapter.image_url, :size => '260x150', :class => 'chapter-img' %>
-
-
-

<%= chapter.name %> Chapter

-

<%= chapter.city %>,<% if chapter.state.present? && chapter.state!=chapter.city %> <%= chapter.state %>,<% end %> <%= chapter.country %>

-

<%= pluralize(chapter.past_events.count, "Past event") %>

-

<%= pluralize(chapter.upcoming_events.count, "Upcoming event") %>

- <%= link_to '', chapter_path(chapter), class:'stretched-link' %> -
+
+
+ <%= chapter.name %> +
+
+ <%= chapter.active? ? 'Active' : 'Inactive' %> +
+
+

<%= chapter.name %>

+

<%= chapter.city %>,<% if chapter.state.present? && chapter.state!=chapter.city %> <%= chapter.state %>,<% end %> <%= chapter.country %>

+
+ 🔜 + <%= chapter.upcoming_events.count %> upcoming events +
+
+
+ 📅 + <%= chapter.past_events.count %> past events
- <% end %> + Learn More +
+
<% end %>
+ + (function () { + const existingCards = Array.from(document.querySelectorAll(".chapter-card")); + const searchInput = document.getElementById("searchInput"); + + // Create a search index + const searchIndex = existingCards.map(card => ({ + element: card, + title: card.querySelector(".card-title").textContent.toLowerCase(), + location: card.querySelector(".card-text").textContent.toLowerCase() + })); + // Debounce function + const debounce = (func, delay) => { + let timeoutId; + return (...args) => { + clearTimeout(timeoutId); + timeoutId = setTimeout(() => func.apply(null, args), delay); + }; + }; + + // Optimized search function + const performSearch = debounce((query) => { + const searchQuery = query.toLowerCase(); + + requestAnimationFrame(() => { + searchIndex.forEach(item => { + const isVisible = item.title.includes(searchQuery) || item.location.includes(searchQuery); + item.element.style.display = isVisible ? "" : "none"; + }); + }); + }, 250); + + searchInput.addEventListener("input", function() { + performSearch(this.value); + }); + })(); + <%= render partial: 'chapters/chapter_map_loader', locals: { chapter_address: @chapter_address, map_area_id: 'chapter-map' } %> From ae23a47fafc53a62513e285984ff08f46b3fd6cf Mon Sep 17 00:00:00 2001 From: Sai Sanjay <97831658+sanjay7178@users.noreply.github.com> Date: Tue, 3 Sep 2024 08:10:41 +0530 Subject: [PATCH 4/7] PR - fix : razorpay form in mobile view of header and addition of go to top button (#135) * new revamped uiux for null chapter listing with search chapters * google map css addition * temporary placement of razorpay form under mobile view * razorpay pay form to right align near to toggle * commit according to the pr * git pod config removal * final fix to misconfigured go to top button * manual chapters/index.html.erb rebase --- .gitpod.yml | 10 ------ app/assets/stylesheets/application.css.erb | 37 ++++++++++++++++++++++ app/views/chapters/index.html.erb | 2 +- app/views/layouts/_header.html.erb | 17 ++++++---- app/views/layouts/application.html.erb | 24 +++++++++++++- 5 files changed, 72 insertions(+), 18 deletions(-) delete mode 100644 .gitpod.yml diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index 05737a3..0000000 --- a/.gitpod.yml +++ /dev/null @@ -1,10 +0,0 @@ -# This configuration file was automatically generated by Gitpod. -# Please adjust to your needs (see https://www.gitpod.io/docs/introduction/learn-gitpod/gitpod-yaml) -# and commit this file to your remote git repository to share the goodness with others. - -# Learn more from ready-to-use templates: https://www.gitpod.io/docs/introduction/getting-started/quickstart - -tasks: - - init: bundle install - - diff --git a/app/assets/stylesheets/application.css.erb b/app/assets/stylesheets/application.css.erb index 7e80878..a5a9f90 100644 --- a/app/assets/stylesheets/application.css.erb +++ b/app/assets/stylesheets/application.css.erb @@ -68,7 +68,36 @@ body { width: 100%; margin-bottom:4rem!important; } +/*go to top button css */ +#back-to-top { + position: fixed; + bottom: 20px; + right: 20px; + background-color: #333; + color: #fff; + border-radius: 50%; + width: 40px; + height: 40px; + text-decoration : none; + text-align: center; + line-height: 40px; + cursor: pointer; + opacity: 0; + transition: opacity 0.5s; +} + +#back-to-top.show { + opacity: 1; +} +#back-to-top:hover { + background-color: #555; +} + +#back-to-top:before { + content: "\f077"; + font-family: "FontAwesome"; +} @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600&display=swap'); @@ -191,10 +220,16 @@ body { .chapter-inactive { background-image: radial-gradient(circle, rgba(255,102,102,0.1), rgba(255,102,102,0.6)); } +.chapter-active .chapter-status { + background-color: #2ecc71; + color: white; .chapter-active .chapter-status { background-color: #2ecc71; color: white; } +.chapter-inactive .chapter-status { + background-color: #e74c3c; + color: white; .chapter-inactive .chapter-status { background-color: #e74c3c; color: white; @@ -248,6 +283,8 @@ body { + + /* Autocomplete JS */ .autocomplete-suggestions { border: 1px solid #999; background: #FFF; cursor: default; overflow: auto; -webkit-box-shadow: 1px 4px 3px rgba(50, 50, 50, 0.64); -moz-box-shadow: 1px 4px 3px rgba(50, 50, 50, 0.64); box-shadow: 1px 4px 3px rgba(50, 50, 50, 0.64); } .autocomplete-suggestion { padding: 2px 5px; white-space: nowrap; overflow: hidden; } diff --git a/app/views/chapters/index.html.erb b/app/views/chapters/index.html.erb index f36b1b5..eb5a949 100644 --- a/app/views/chapters/index.html.erb +++ b/app/views/chapters/index.html.erb @@ -77,4 +77,4 @@ })(); <%= render partial: 'chapters/chapter_map_loader', - locals: { chapter_address: @chapter_address, map_area_id: 'chapter-map' } %> + locals: { chapter_address: @chapter_address, map_area_id: 'chapter-map' } %> \ No newline at end of file diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index 08be835..bcc4b59 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -1,14 +1,20 @@