Startups
Edit

Rolling.fm Error</h1> <a rel="nofollow" href="http://www.rolling.fm/" class="text-success font-size-18 mb-bottom-10 display-block font-sbold" target="_blank">http://www.rolling.fm/</a> <div class="mb-bottom-10" id="lastActFond2">Last activity: 30.12.2011</div> <div><span class="font-sbold cd-status">Active</span> </div> </div> </div> <div class="row mb-bottom-20 cd-tags"><div class="col-md-12 tags-info">Categories: <span class="badge bg-success mr-1 my-1">Goods</span><span class="badge bg-success mr-1 my-1">Messanger</span><span class="badge bg-success mr-1 my-1">Music</span><span class="badge bg-success mr-1 my-1">Platform</span><span class="badge bg-success mr-1 my-1">Social</span><span class="badge bg-success mr-1 my-1">Time</span><span class="badge bg-success mr-1 my-1">Video</span><span class="badge bg-success mr-1 my-1">Virtual</span><span class="badge bg-success mr-1 my-1">Web</span></div></div> <div class="row mb-bottom-20 cd-about"><div class="col-md-12">Don't Just Listen</div></div> </div><div class="row mb-bottom-20 img-icons-fund cd-stats" id="topIconsBlk"> <div class="col-md-2">Mentions<i class="align-middle mr-2 fas fa-fw fa-basketball-ball"></i><div>10</div></div> </div><div class="cd-panel cd-overview"><h2 class="cd-h">Overview</h2><div class="cd-facts"><div class="cd-fact"><div class="cd-fact-label"><i class="align-middle mr-2 fas fa-fw fa-map-marker-alt"></i> Location</div><div class="cd-fact-value">United States</div></div><div class="cd-fact"><div class="cd-fact-label"><i class="align-middle mr-2 fas fa-fw fa-users"></i> Employees</div><div class="cd-fact-value">1-10</div></div></div></div><div class="mb-bottom-25"></div> <div class="cd-cols"><div class="row" id="infoLists"> <section class="cd-panel cd-section cd-data"><h2>Mentions in press and media <span id="maxCount-References">10</span></h2><div style="overflow: auto; margin-bottom: 25px"> <table class="showTable_Team table mb-0 no-bottom-line mb-20" style="width: 1000px" id="Table_References"> <tr><td class="Date">Date</td><td class="Title">Title</td><td class="Description">Description</td></tr><tr class="cardMuted" data-card-row="References"><td class="Date">Sign up to see</td><td class="Title"><span class="text-success">Sign up to see</span></td><td class="Description">Sign up to see</td></tr><tr ><td class="Date" title="26.12.2011">Dec 26, 2011</td><td class="Title"><a href="https://observer.com/2011/12/did-rolling-fm-shut-down-after-six-months/" class="text-success" target="_blank" title="Did Rolling.fm Shut Down After Six Months?">Did Rolling.fm Shut Down After Six Months?</a></td><td class="Description" title="Back in September, Turntable.fm fast follower Rolling.fm was trumpeting achievements and rolling out new features. “We are excited to announce there has been over 1,000,000 friendships made on Rolling.FM since our launch a little over a month ago! Our platform has definitely become the music AND ......">Back in September, Turntable.fm fast follower Rolling.fm was trumpeting achievements and rolling out new features. “We are excited to announce there has been over 1,000,000 friendships made on Rolling.FM since our launch a little over a mon...</td></tr><tr ><td class="Date" title="14.09.2011">Sep 14, 2011</td><td class="Title"><a href="https://observer.com/2011/09/startup-news-tinyproj-rolling-fm-foursquare-new-work-city-and-an-automattic-party/" class="text-success" target="_blank" title="Startup News: Tinyproj, Rolling.fm, Foursquare, New Work City and an Automattic Party">Startup News: Tinyproj, Rolling.fm, Foursquare, New Work City and an Automattic Party</a></td><td class="Description" title="(http://www.flickr.com/photos/briansolis/) ROLLING ALONG. “We are excited to announce there has been over 1,000,000 friendships made on Rolling.FM since our launch a little over a month ago! Our platform has definitely become the music AND social discovery platform,” writes cofounder Nhon Ma in ......">(http://www.flickr.com/photos/briansolis/) ROLLING ALONG. “We are excited to announce there has been over 1,000,000 friendships made on Rolling.FM since our launch a little over a month ago! Our platform has definitely become the music AND ...</td></tr><tr ><td class="Date" title="12.09.2011">Sep 12, 2011</td><td class="Title"><a href="https://venturebeat.com/2011/09/12/rolling-fm-million-friend-connections/" class="text-success" target="_blank" title="Rolling.fm has 1M friend connections; now serving virtual drinks">Rolling.fm has 1M friend connections; now serving virtual drinks</a></td><td class="Description" title="A little over a month after launching, music curation social network Rolling.fm has more than 85,000 registered members who have collectively made over a million friend connections through the service, the company announced today. The “friend connections” metric the company cites is what disting ......">A little over a month after launching, music curation social network Rolling.fm has more than 85,000 registered members who have collectively made over a million friend connections through the service, the company announced today. The “frie...</td></tr><tr ><td class="Date" title="12.09.2011">Sep 12, 2011</td><td class="Title"><a href="https://venturebeat.com/2011/09/12/rolling-fm-million-friend-connections/" class="text-success" target="_blank" title="Rolling.fm has 1M friend connections; now serving virtual drinks">Rolling.fm has 1M friend connections; now serving virtual drinks</a></td><td class="Description" title="We are excited to bring Transform 2022 back in-person July 19 and virtually July 20 - 28. Join AI and data leaders for insightful talks and exciting networking opportunities. Register today! A little over a month after launching, music curation social network Rolling.fm has more than 85,000 regi ...">We are excited to bring Transform 2022 back in-person July 19 and virtually July 20 - 28. Join AI and data leaders for insightful talks and exciting networking opportunities. Register today! A little over a month after launching, music cura...</td></tr><tr ><td class="Date" title="15.08.2011">Aug 15, 2011</td><td class="Title"><a rel="nofollow" href="https://readwrite.com/2011/08/15/turntablefm_popularity_gives_rise_to_similar_services/" class="text-success" target="_blank" title="Turntable.fm Popularity Gives Rise to Similar Services">Turntable.fm Popularity Gives Rise to Similar Services</a></td><td class="Description" title="The sudden and somewhat explosive popularity of the virtual DJing site Turntable.fm has paved the way for a number of services with similar, or sometimes identical, functionality. The startup garnered a significant amount of buzz online since launching its service, which lets users take turns se ...">The sudden and somewhat explosive popularity of the virtual DJing site Turntable.fm has paved the way for a number of services with similar, or sometimes identical, functionality. The startup garnered a significant amount of buzz online sin...</td></tr><tr ><td class="Date" title="08.08.2011">Aug 8, 2011</td><td class="Title"><a href="https://observer.com/2011/08/rolling-fm-yeah-we-copied-turntable-fm-but-were-taking-it-to-the-next-level/" class="text-success" target="_blank" title="Rolling.fm: Yeah, We Copied Turntable.fm, But We’re Taking It to the Next Level">Rolling.fm: Yeah, We Copied Turntable.fm, But We’re Taking It to the Next Level</a></td><td class="Description" title="Users felt a sense of deja-vu when Rolling.fm, an interactive music streaming start-up, launched just over a week ago. Rolling.fm’s interface–a virtual club with DJs lined up at a laptop and a floating chat room–looks so much like viral hit Turntable.fm that users, along with Betabeat’s own nume ......">Users felt a sense of deja-vu when Rolling.fm, an interactive music streaming start-up, launched just over a week ago. Rolling.fm’s interface–a virtual club with DJs lined up at a laptop and a floating chat room–looks so much like viral hit...</td></tr><tr ><td class="Date" title="07.08.2011">Aug 7, 2011</td><td class="Title"><a href="https://venturebeat.com/2011/08/07/turntablefm-clone-rollingfm/" class="text-success" target="_blank" title="Rolling.fm founder says it’s no Turntable.fm clone">Rolling.fm founder says it’s no Turntable.fm clone</a></td><td class="Description" title="Whenever a popular web startup appears on the scene, it doesn’t take long for an onslaught of clones to show up. And ever since music sharing site Turntable.fm launched in late May, we’ve been expecting duplicate startups to follow. The first such copycat, Rolling.fm, launched a test version of ......">Whenever a popular web startup appears on the scene, it doesn’t take long for an onslaught of clones to show up. And ever since music sharing site Turntable.fm launched in late May, we’ve been expecting duplicate startups to follow. The fir...</td></tr><tr ><td class="Date" title="05.08.2011">Aug 5, 2011</td><td class="Title"><a href="https://observer.com/2011/08/rumors-acquisitions-aol-and-the-labs-turntable-and-the-labels-and-aviarys-ceo-needs-your-asl/" class="text-success" target="_blank" title="Rumors & Acquisitions: Aol and the Labs, Turntable and the Labels, and Which Aviary Co-Founder Needs Your A/S/L?">Rumors & Acquisitions: Aol and the Labs, Turntable and the Labels, and Which Aviary Co-Founder Needs Your A/S/L?</a></td><td class="Description" title="LAME. The evil music labels are considering a lawsuit against Turntable.fm, according to a high-level source on the West Coast, but haven’t decided how to proceed. Meanwhile, Turntable lookalike Rolling.fm is knee deep in lawyers trying to figure out how to keep the service up outside the U.S. M ......">LAME. The evil music labels are considering a lawsuit against Turntable.fm, according to a high-level source on the West Coast, but haven’t decided how to proceed. Meanwhile, Turntable lookalike Rolling.fm is knee deep in lawyers trying to ...</td></tr><tr ><td class="Date" title="02.08.2011">Aug 2, 2011</td><td class="Title"><a href="https://observer.com/2011/08/rumors-acquisitions-obliteration/" class="text-success" target="_blank" title="Rumors & Acquisitions: We Can’t Stop Turntabling">Rumors & Acquisitions: We Can’t Stop Turntabling</a></td><td class="Description" title="TURNTABLE.FM PARTY CRASHED! On Thursday, New Work City had the rockin’est Turntable.fm DJ-off and techie dance party north of the Mississippi, we’re told, despite a miscommunication in the Pepsi delivery. Turntable’s cutesy avatars were cut out and pasted on the wall behind the DJs, which includ ......">TURNTABLE.FM PARTY CRASHED! On Thursday, New Work City had the rockin’est Turntable.fm DJ-off and techie dance party north of the Mississippi, we’re told, despite a miscommunication in the Pepsi delivery. Turntable’s cutesy avatars were cut...</td></tr></table></div> </section><section class="cd-panel cd-section cd-reviews"><h2>Reviews <span id="maxCount-Reviews">0</span></h2> <div class="row mb-bottom-20"></div> <div style="padding: 0px 0px 35px 15px" id="review_sign"> <p>Sign up to leave a review</p> <a href="/singup/" class="btn btn-pill btn-success">Sign up</a> <a href="/login/" class="btn btn-pill btn-success">Log In</a> </div></section> </div><aside class="cd-panel cd-timeline"><h2 class="cd-h">Timeline</h2><ol class="cd-tl"><li class="cd-tl-year">2011</li><li class="cd-tl-item cd-tl-press"><time class="cd-tl-day" datetime="2011-12-26">Dec 26</time><div class="cd-tl-title">In the press</div><div class="cd-tl-text"><a href="https://observer.com/2011/12/did-rolling-fm-shut-down-after-six-months/" target="_blank">Did Rolling.fm Shut Down After Six Months?</a></div></li><li class="cd-tl-item cd-tl-press"><time class="cd-tl-day" datetime="2011-09-14">Sep 14</time><div class="cd-tl-title">In the press</div><div class="cd-tl-text"><a href="https://observer.com/2011/09/startup-news-tinyproj-rolling-fm-foursquare-new-work-city-and-an-automattic-party/" target="_blank">Startup News: Tinyproj, Rolling.fm, Foursquare, New Work City and an Automattic Party</a></div></li><li class="cd-tl-item cd-tl-press"><time class="cd-tl-day" datetime="2011-09-12">Sep 12</time><div class="cd-tl-title">In the press</div><div class="cd-tl-text"><a href="https://venturebeat.com/2011/09/12/rolling-fm-million-friend-connections/" target="_blank">Rolling.fm has 1M friend connections; now serving virtual drinks</a></div></li><li class="cd-tl-item cd-tl-press"><time class="cd-tl-day" datetime="2011-08-15">Aug 15</time><div class="cd-tl-title">In the press</div><div class="cd-tl-text"><a rel="nofollow" href="https://readwrite.com/2011/08/15/turntablefm_popularity_gives_rise_to_similar_services/" target="_blank">Turntable.fm Popularity Gives Rise to Similar Services</a></div></li><li class="cd-tl-item cd-tl-press"><time class="cd-tl-day" datetime="2011-08-08">Aug 8</time><div class="cd-tl-title">In the press</div><div class="cd-tl-text"><a href="https://observer.com/2011/08/rolling-fm-yeah-we-copied-turntable-fm-but-were-taking-it-to-the-next-level/" target="_blank">Rolling.fm: Yeah, We Copied Turntable.fm, But We’re Taking It to the Next Level</a></div></li><li class="cd-tl-item cd-tl-press"><time class="cd-tl-day" datetime="2011-08-07">Aug 7</time><div class="cd-tl-title">In the press</div><div class="cd-tl-text"><a href="https://venturebeat.com/2011/08/07/turntablefm-clone-rollingfm/" target="_blank">Rolling.fm founder says it’s no Turntable.fm clone</a></div></li><li class="cd-tl-item cd-tl-press"><time class="cd-tl-day" datetime="2011-08-05">Aug 5</time><div class="cd-tl-title">In the press</div><div class="cd-tl-text"><a href="https://observer.com/2011/08/rumors-acquisitions-aol-and-the-labs-turntable-and-the-labels-and-aviarys-ceo-needs-your-asl/" target="_blank">Rumors & Acquisitions: Aol and the Labs, Turntable and the Labels, and Which Aviary Co-Founder Needs Your A/S/L?</a></div></li><li class="cd-tl-item cd-tl-press"><time class="cd-tl-day" datetime="2011-08-02">Aug 2</time><div class="cd-tl-title">In the press</div><div class="cd-tl-text"><a href="https://observer.com/2011/08/rumors-acquisitions-obliteration/" target="_blank">Rumors & Acquisitions: We Can’t Stop Turntabling</a></div></li></ol><a class="cd-tl-lock" href="/singup/" rel="nofollow">Sign up to see every event</a></aside></div><section class="cd-panel cd-faq"><h2 class="cd-h">FAQ about Rolling.fm Error</h2><div class="cd-faq-list"><div class="cd-faq-item"><h3 class="cd-faq-q">What has the press written about Rolling.fm Error?</h3><p class="cd-faq-a">Parsers VC has collected 10 articles mentioning Rolling.fm Error, among them “<a href="https://observer.com/2011/12/did-rolling-fm-shut-down-after-six-months/" target="_blank">Did Rolling.fm Shut Down After Six Months?</a>” (Dec 26, 2011) and “<a href="https://observer.com/2011/09/startup-news-tinyproj-rolling-fm-foursquare-new-work-city-and-an-automattic-party/" target="_blank">Startup News: Tinyproj, Rolling.fm, Foursquare, New Work City and an Automattic Party</a>” (Sep 14, 2011).</p></div><div class="cd-faq-item"><h3 class="cd-faq-q">Is Rolling.fm Error still active?</h3><p class="cd-faq-a">Yes, Rolling.fm Error is active; its latest activity on Parsers VC dates from Dec 30, 2011.</p></div></div></section> </div> </div> </div> </div> </div> </div> </main> </div> </div> <script src="/static/static/js/script_compr.js?v=1710400474"></script> <script src="/static/static/js/app_new.js?v=1691487226"></script> <script async src="/static/static/js/core.js?v=21791480398"></script> <div style="display: none" id="searchZeroMass"></div> <link href="/static/static/css/app_second.css?v=1703265010" rel="stylesheet"> <link href="/static/static/css/app_third.css?v=1714635748" rel="stylesheet"> <!-- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600&display=swap" rel="stylesheet"> --> <!-- <script async src="https://www.googletagmanager.com/gtag/js?id=G-322JRRW34Z"></script> --> <script>window.dataLayer=window.dataLayer||[];dataLayer.push({"page_type":"startup_card","logged_in":false,"content_id":"rolling.fm","card_thin":false});</script><script defer src="/static/static/js/track.js?v=1794412978"></script> <!-- Google Tag Manager --> <script> (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-NCFR7JX'); </script> <!-- End Google Tag Manager --> <script> if(window.location.href !='https://parsers.vc/'){ window.onclick = function(e) { var blur = 0; for (let i = 0; i < e; i++) { if(e.path[i].id=='topIinpustSearch'){ blur = 1; } } if(blur==0){ $('#linkHelpsLoc').hide(); $('#linkHelpsLoc2').hide() } } $('#searchAllBtnHovTop').blur(function(){$('#linkHelpsTop').hide();}); $('#topIinpustSearch').blur(function(){$('#linkHelpsTop').hide();}); $('#navBarSearch').blur(function(){$('#linkHelpsTop').hide();}); $('#navBarSearch').focus(function(){$('#linkHelpsTop').show();}); $('#topIinpustSearch').focus(function(){$('#linkHelpsTop').show();}); $('#searchAllBtnHovTop').focus(function(){$('#linkHelpsTop').show();}); $('#linkHelpsTop').hover(function(){$('#linkHelpsTop').show();}); $('#startupLocation').focus(function(){$('#linkHelpsLoc').show();}); $('#startupLocation2').focus(function(){$('#linkHelpsLoc2').show();}); $('#navBarSearch').keyup(delay(function (e) { if(e.keyCode == 13){ var re = /[-a-zA-Z0-9@:%_\+.~#?&\/=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&\/=]*)?/gi; if(re.test($('#navBarSearch').val())){ sendFosrmSearchMini() }else{ $('#navBarSearch').val($('#searchZeroMass').html()) info = $('#navBarSearch').val($('#searchZeroMass').html()) if(info) { sendFosrmSearchMini() } } }else{ sendFosrmSearchMiniHelp() } }, 10)); $("#startupLocation").keyup(function(event){ sendFosrmStartupMiniHelp() }); $("#startupLocation2").keyup(function(event){ sendFosrmStartup2MiniHelp() }); } function sendFosrmSearchMini(){ text = $('#navBarSearch').val(); if(text!='') { url = 'https://parsers.vc/startup/' + alearLink(text) + '/?search=' + text window.location.href = url; } } function delay(callback, ms) { var timer = 0; return function() { var context = this, args = arguments; clearTimeout(timer); timer = setTimeout(function () { callback.apply(context, args); }, ms || 0); }; } function alearLink(link){ var re = /www./gi; var re2 = /https:\/\//gi; var re3 = /http:\/\//gi; var str = link; var newstr = str.replace(re, ''); var newstr = newstr.replace(re2, ''); var newstr = newstr.replace(re3, ''); return newstr; } async function sendFosrmSearchMiniHelp(){ search = $("#navBarSearch").val() if(search!='') { //url = '/api/vc/startups?$top=5&$filter=Keywords%20eq%20%27' + search + '%27'; url = '/api/vc/companies/search?q=' + search + '&fields=name,website&top=5'; console.log(url) let response = await fetch(url, { method: 'GET' }); if (response.ok) { let json = await response.json(); var el = document.getElementById('linkHelpsTop'); if (json) { html = ''; for (i = 0; i < 5; i++) { if (json[i]) { if(i==0){ $('#searchZeroMass').text(json[i].Domain); } if (json[i].Type == 'Startup') { html += '<div><a href="/startup/' + alearLink(json[i].Domain) + '/">' + json[i].Website + '</a> <span>' + json[i].Name + '</span></div>' } else { html += '<div><a href="/fund/' + alearLink(json[i].Domain) + '/">' + json[i].Website + '</a> <span>' + json[i].Name + '</span></div>' } } } el.innerHTML = html } } } } async function sendFosrmStartupMiniHelp(){ search = $("#startupLocation").val() if(search!='') { url = '/api/vc/startups/locations/search?q=' + search + '&top=5'; let response = await fetch(url, { method: 'GET' }); if (response.ok) { let json = await response.json(); var el = document.getElementById('linkHelpsLoc'); if (json) { html = ''; for (i = 0; i < 5; i++) { if (json[i]) { html += '<div onclick="$(\'#startupLocation\').val(\''+json[i]+'\'); $(\'#linkHelpsLoc\').hide();">' + json[i] + '</div>' } } el.innerHTML = html widthStartups = $('#startupLocation').width() $('#linkHelpsLoc').width(widthStartups+20) $('#linkHelpsLoc').show(); } } } } async function sendFosrmStartup2MiniHelp(){ search = $("#startupLocation2").val() if(search!='') { url = '/api/vc/startups/locations/search?q=' + search + '&top=5'; let response = await fetch(url, { method: 'GET' }); if (response.ok) { let json = await response.json(); var el = document.getElementById('linkHelpsLoc2'); if (json) { html = ''; for (i = 0; i < 5; i++) { if (json[i]) { html += '<div onclick="$(\'#startupLocation2\').val(\''+json[i]+'\'); $(\'#linkHelpsLoc2\').hide();">' + json[i] + '</div>' } } el.innerHTML = html widthStartups = $('#startupLocation2').width() $('#linkHelpsLoc2').width(widthStartups+20) $('#linkHelpsLoc2').show(); } } } } /* window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-322JRRW34Z'); */ </script> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NCFR7JX" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <style> #cookieNotice{ position: fixed; left: 0; right: 0; bottom: 0; z-index: 1040; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; padding: 12px 16px; background: #ffffff; border-top: 1px solid #dee2e6; box-shadow: 0 -2px 10px rgba(0, 0, 0, .08); color: #495057; font-size: 13px; line-height: 20px; } /* Has to out-specify the display rule above, or the hidden attribute stops working */ #cookieNotice[hidden]{display: none;} #cookieNotice .cookie-notice-text{ margin: 0 16px 0 0; max-width: 820px; } #cookieNotice .cookie-notice-text a{ color: #00b25f; text-decoration: underline; } #cookieNotice .cookie-notice-accept{ flex: none; padding: 6px 20px; border: 0; border-radius: 50rem; background: #00b25f; color: #ffffff; font-size: 13px; line-height: 20px; cursor: pointer; } #cookieNotice .cookie-notice-accept:hover{background: #009b53;} /* On a phone the button goes to its own line - sharing one with the text squeezes it to a sliver */ @media (max-width: 575px){ #cookieNotice{justify-content: flex-start;} #cookieNotice .cookie-notice-text{flex: 1 1 100%; margin: 0 0 8px 0;} } </style> <div id="cookieNotice" role="region" aria-label="Cookie notice" hidden> <p class="cookie-notice-text">We use cookies to keep you signed in, remember your preferences and measure how the site is used. By continuing to browse Parsers VC you agree to that. <a href="/about/terms_of_service/">Privacy & Terms</a></p> <button type="button" id="cookieNoticeAccept" class="cookie-notice-accept">Got it</button> </div> <script> (function(){ var box = document.getElementById('cookieNotice'); if(!box){ return; } // Anchored match: a plain indexOf would also hit a future cookie whose name ends this way if(/(?:^|;\s*)cookieConsent=/.test(document.cookie)){ return; } box.hidden = false; document.getElementById('cookieNoticeAccept').addEventListener('click', function(){ // A session cookie would bring the banner back on every visit, which is the one thing // a first-visit notice must not do var expires = new Date(new Date().getTime() + 365 * 24 * 60 * 60 * 1000).toUTCString(); document.cookie = 'cookieConsent=1; expires=' + expires + '; path=/; SameSite=Lax; Secure'; box.hidden = true; }); })(); </script> <style> #ratingPrompt{ position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1060; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(0, 0, 0, .45); } /* Has to out-specify the display rule above, or the hidden attribute stops working */ #ratingPrompt[hidden], #ratingPrompt [hidden]{display: none;} #ratingPrompt .rp-box{ position: relative; width: 100%; max-width: 520px; padding: 24px; border-radius: 8px; background: #ffffff; box-shadow: 0 10px 30px rgba(0, 0, 0, .2); color: #495057; font-size: 14px; line-height: 21px; } #ratingPrompt .rp-close{ position: absolute; top: 6px; right: 10px; padding: 0 4px; border: 0; background: none; color: #6c757d; font-size: 24px; line-height: 32px; cursor: pointer; } #ratingPrompt .rp-title{ margin: 0 24px 8px 0; color: #212529; font-size: 18px; font-weight: 600; line-height: 26px; } #ratingPrompt .rp-text{margin: 0 0 16px 0;} #ratingPrompt .rp-scores{ display: grid; grid-template-columns: repeat(10, 1fr); gap: 6px; } #ratingPrompt .rp-score{ height: 40px; padding: 0; border: 1px solid #00b25f; border-radius: 6px; background: #ffffff; color: #00b25f; font-size: 15px; font-weight: 600; cursor: pointer; } #ratingPrompt .rp-score:hover, #ratingPrompt .rp-score:focus{background: #00b25f; color: #ffffff;} #ratingPrompt .rp-score:disabled{opacity: .5; cursor: default;} #ratingPrompt .rp-legend{ display: flex; justify-content: space-between; margin-top: 6px; color: #6c757d; font-size: 12px; } #ratingPrompt .rp-actions{ display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 12px; margin-top: 18px; } #ratingPrompt .rp-primary{ display: inline-block; padding: 8px 20px; border: 0; border-radius: 50rem; background: #00b25f; color: #ffffff; font-size: 14px; line-height: 20px; text-decoration: none; cursor: pointer; } #ratingPrompt .rp-primary:hover{background: #009b53; color: #ffffff;} #ratingPrompt .rp-later{ padding: 0; border: 0; background: none; color: #6c757d; font-size: 13px; text-decoration: underline; cursor: pointer; } /* Ten buttons in a row are too narrow to hit on a phone: two rows of five */ @media (max-width: 480px){ #ratingPrompt .rp-scores{grid-template-columns: repeat(5, 1fr);} } </style> <div id="ratingPrompt" hidden> <div class="rp-box" role="dialog" aria-modal="true" aria-labelledby="ratingPromptTitle-rate"> <button type="button" class="rp-close" data-rp-close aria-label="Close">×</button> <div data-rp-panel="rate" hidden> <p class="rp-title" id="ratingPromptTitle-rate">How would you rate Parsers VC?</p> <p class="rp-text">On a scale from 1 to 10, how would you rate Parsers VC overall? It takes one click and helps us decide what to improve.</p> <div class="rp-scores" role="group" aria-label="Your rating from 1 to 10"> <button type="button" class="rp-score" data-rp-score="1">1</button> <button type="button" class="rp-score" data-rp-score="2">2</button> <button type="button" class="rp-score" data-rp-score="3">3</button> <button type="button" class="rp-score" data-rp-score="4">4</button> <button type="button" class="rp-score" data-rp-score="5">5</button> <button type="button" class="rp-score" data-rp-score="6">6</button> <button type="button" class="rp-score" data-rp-score="7">7</button> <button type="button" class="rp-score" data-rp-score="8">8</button> <button type="button" class="rp-score" data-rp-score="9">9</button> <button type="button" class="rp-score" data-rp-score="10">10</button> </div> <div class="rp-legend"><span>1 – poor</span><span>10 – excellent</span></div> <div class="rp-actions"> <button type="button" class="rp-later" data-rp-close>Not now</button> </div> </div> <div data-rp-panel="thanks" hidden> <p class="rp-title" id="ratingPromptTitle-thanks">Thank you!</p> <p class="rp-text">Your rating helps us make Parsers VC better.</p> <div class="rp-actions"> <button type="button" class="rp-primary" data-rp-close>Close</button> </div> </div> <div data-rp-panel="failed" hidden> <p class="rp-title" id="ratingPromptTitle-failed">Your rating was not saved</p> <p class="rp-text">Something went wrong on our side. We will ask you again on one of your next visits.</p> <div class="rp-actions"> <button type="button" class="rp-primary" data-rp-close>Close</button> </div> </div> <div data-rp-panel="g2" hidden> <p class="rp-title" id="ratingPromptTitle-g2">Enjoying Parsers VC?</p> <p class="rp-text">Thank you for rating Parsers VC so highly. Would you share your experience on G2? A short review helps other investors and founders find us.</p> <div class="rp-actions"> <button type="button" class="rp-later" data-rp-close>Maybe later</button> <a class="rp-primary" data-rp-g2 target="_blank" rel="nofollow noopener noreferrer" referrerpolicy="no-referrer">Write a review on G2</a> </div> </div> </div> </div> <script> (function(){ var box = document.getElementById('ratingPrompt'); if(!box || typeof fetch !== 'function'){ return; } // A staff tool, the sign-in forms and the checkout: an overlay there is in the way of what the // visitor came to do. The visit is not lost - the next page asks. if(/^\/(admin|login|singup|logout|pricing|billing)\//.test(window.location.pathname)){ return; } // Either signal is enough, as in guestBlur.inc.php: localStorage.basseUser2 is written by the // sign-in forms, the CacheKey cookie is "0" for guests and a session-specific value otherwise var signedIn = false; try { signedIn = localStorage.getItem('basseUser2') !== null; } catch (e) { // Storage disabled by the browser: fall back to the cookie alone } var key = document.cookie.match(/(?:^|;\s*)CacheKey=([^;]*)/); if(key && key[1] !== '' && key[1] !== '0'){ signedIn = true; } if(!signedIn){ return; } // The server has said when it may have something new (the next day on its clock): until then // every page of this member would ask for nothing. Cleared with the rest of localStorage when // the member logs out (navbar.inc.php), so the next account to sign in here is asked at once. var QUIET = 'ratingPromptQuiet'; function quietFor(seconds){ try { localStorage.setItem(QUIET, String(new Date().getTime() + seconds * 1000)); } catch (e) { // Storage disabled: every page asks, the server answers null } } try { if(new Date().getTime() < parseInt(localStorage.getItem(QUIET), 10)){ return; } } catch (e) { } var token = ''; var opener = null; function post(fields){ var body = []; for(var name in fields){ body.push(encodeURIComponent(name) + '=' + encodeURIComponent(fields[name])); } return fetch('/api/rating.php', { method: 'POST', credentials: 'same-origin', cache: 'no-store', headers: {'Content-Type': 'application/x-www-form-urlencoded'}, body: body.join('&') }); } function panel(name){ var panels = box.querySelectorAll('[data-rp-panel]'); for(var i = 0; i < panels.length; i++){ panels[i].hidden = panels[i].getAttribute('data-rp-panel') !== name; } // A screen reader names the dialog by the heading that is on screen, not by the first one box.querySelector('[role="dialog"]').setAttribute('aria-labelledby', 'ratingPromptTitle-' + name); } // After a vote the focused score button is hidden with its panel, and the focus would fall // back to the page under the overlay function swap(name){ panel(name); var button = box.querySelector('[data-rp-panel="' + name + '"] .rp-primary'); if(button){ button.focus(); } } function close(){ box.hidden = true; document.removeEventListener('keydown', onKey); if(opener && opener.focus){ opener.focus(); } } function onKey(event){ if(event.key === 'Escape' || event.key === 'Esc'){ close(); } } function open(name){ opener = document.activeElement; panel(name); box.hidden = false; document.addEventListener('keydown', onKey); // The close button and not the first score: a focused "1" is drawn filled, like a choice made box.querySelector('.rp-close').focus(); } var closers = box.querySelectorAll('[data-rp-close]'); for(var i = 0; i < closers.length; i++){ closers[i].addEventListener('click', close); } // A click on the dimmed backdrop closes, as "Not now" does; one inside the box does not box.addEventListener('click', function(event){ if(event.target === box){ close(); } }); var scores = box.querySelectorAll('[data-rp-score]'); for(var j = 0; j < scores.length; j++){ scores[j].addEventListener('click', function(){ for(var k = 0; k < scores.length; k++){ scores[k].disabled = true; } post({action: 'vote', score: this.getAttribute('data-rp-score'), csrf_token: token}).then(function(response){ if(!response.ok){ throw new Error('HTTP ' + response.status); } // saved false - voted already in another tab: thanks all the same swap('thanks'); }).catch(function(){ // Nothing was saved, so the server asks again in three visits, as after "Not now" swap('failed'); }); }); } var g2 = box.querySelector('[data-rp-g2]'); g2.href = "https://www.g2.com/products/parsers-vc/reviews"; g2.addEventListener('click', function(){ // The link opens G2 in a new tab by itself; this only tells /admin/ that it was pressed post({action: 'g2', csrf_token: token}).catch(function(){}); close(); }); function ask(){ post({action: 'state'}).then(function(response){ if(response.status === 401){ // The browser remembers a sign-in the server has let go of: not every page for an hour quietFor(3600); return null; } return response.ok ? response.json() : null; }).then(function(state){ if(!state){ return; } quietFor(state.quiet > 0 ? state.quiet : 3600); token = state.token || ''; if(state.show === 'rate' || state.show === 'g2'){ open(state.show); } }).catch(function(){ // Network trouble or a page that is not JSON: the next page asks again }); } // Not over the page the moment it opens: the visitor first sees what they came for. Leaving // within these seconds costs nothing - nothing is recorded until the endpoint is asked. setTimeout(ask, 3000); })(); </script> <script> window.addEventListener('DOMContentLoaded', (event) => { window.onload = function() { if (basseUser3 !== null) { const reviewform = document.getElementById('review_sign'); console.log(reviewform.innerHTML); reviewform.innerHTML = '<form method="post"><div class="row mb-bottom-20"><label style="width: 55px; padding: 5px 0px 0px 12px" class="col-md-1">Rating</label><div class="col-md-1"><select class="form-select" name="revews[raiting]"><option value="0"></option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option></select></div><div class="col-md-5" style="padding: 5px 0px 0px 10px"><input class="form-check-input" type="checkbox" style="color: #6b757e" name="revews[anonim]" value="1"> Anonymous review</div></div><div class="col-md-12"><textarea class="form-control" style="height: 80px" name="revews[text]"></textarea></div><div style="padding: 20px 0px 35px 0px"><input type="submit" class="btn btn-pill btn-outline-success" value="Submit Review"><span style="padding: 0px 0px 35px 15px">Your review will be moderated within 24 hours.</span></div></form>'; }; }; }); </script> <script> </script> </body> </html>