Help
Hi! Log In or Join Free
  Help

{{educator}}

`, // @mouseleave="item.subShow = false" data(){ return { nav: false, educator: phpajax.global.nav.educator, social: false, dashboardMenu: false, profileMenu: false, currentMenu: -1, avatar: false } }, methods: { dashboardLink(input){ input = 'https://' + location.host + input input = input.replace('-artists.', '.') input = input.replace('/artists.', '/') return input }, searchLink(search, label) { return `/directory?filter=${encodeURIComponent(JSON.stringify(search))}`; }, isOnOrderPage(){ if(location.href.includes('/order')) return true return false; }, async doLogout() { if (!this.educator) { window.location.href = dashboardLink('/logout.php'); return; } const data = await fetch('/api/site/logout') if (data) { $.removeCookie('auth_token') $.removeCookie('server_auth_token') $.removeCookie('tfs_auth_token') $.removeCookie('refresh_token') $.removeCookie('tf_member') location.reload(); } } }, created(){ let el = document.createElement('style'); el.type = 'text/css'; el.innerText = '.breadcrumb {display:none !important;}'; document.head.appendChild(el); this.nav = [] for(let i = 0; i < phpajax.global.nav.menu.length; i++){ phpajax.global.nav.menu[i].subShow = false if(phpajax.global.nav.menu[i].label == 'itj') phpajax.global.nav.menu[i].label = 'Jams' else if(phpajax.global.nav.menu[i].label == 'song') phpajax.global.nav.menu[i].label = 'Songs' else if(phpajax.global.nav.menu[i].label == 'course') phpajax.global.nav.menu[i].label = 'Courses' else if(phpajax.global.nav.menu[i].label == 'channel') phpajax.global.nav.menu[i].label = 'Channels' if(phpajax.global.nav.menu[i].label != 'Jams') this.nav.push(phpajax.global.nav.menu[i]) } for(let i = 0; i < phpajax.global.nav.menu.length; i++){ if(phpajax.global.nav.menu[i].label == 'Jams') this.nav.push(phpajax.global.nav.menu[i]) } this.social = [] for(let i = 0; i < phpajax.global.nav.social.length; i++){ this.social.push({ icon: phpajax.global.nav.social[i].type, url: phpajax.global.nav.social[i].value }) } if(tf.member && (tf.member.avatar)) this.avatar = tf.member.avatar } }) } if(phpajax.emarsys_view && (phpajax.emarsys_view.includes('h')) && location.href.includes('/h')) { $('#tfSearchContainer').remove() } tf.notificationsBadgeCount = 0; var headerNotifications = function(){ var headerNotificationsTemplate = new Vue({ el: '#headerNotificationsTemplate', data: { display: tf.member ? 'block' : 'none', foo: 'bar', menuShowing: false, started: false, notifications: false, currentTime: phpajax.global.server_time, start: 0, canGet: true, limit: 5, noNotifications: false, badgeCount: 0, markingAsRead: false, readCount: false, tab_title: document.title }, created: function(){ // this.showMenu() this.getCount(); }, methods: { getCount: function(){ var postObj = { alerts: { badge: 0 } }, thisObj = this; $.post(tf.nexusUrl(), postObj, function(data) { if(data.alerts.badge.result){ tf.notificationsBadgeCount = data.alerts.badge.result; if(vueTemplates.inbox) vueTemplates.inbox.badges.notifications = data.alerts.badge.result; thisObj.badgeCount = data.alerts.badge.result; thisObj.updateFavicon() } }); }, showMenu: function(){ if(!this.menuShowing){ this.menuShowing = true; if(!this.started){ this.started = true; this.getNotifications(); } } }, getNotifications: function(){ if(this.canGet){ this.canGet = false; var postObj = { alerts: { show_all: { start: this.start, limit: this.limit } } }, thisObj = this; $.post(tf.nexusUrl(), postObj, function(data) { // console.log("Getting notifications",data) if(data.alerts.show_all.result.length){ if(!thisObj.notifications) thisObj.notifications = []; data.alerts.show_all.result.forEach(function(notification){ if(!notification.read) thisObj.readCount = true; thisObj.notifications.push(notification); }); thisObj.updateFavicon() } else if(!thisObj.notifications) thisObj.noNotifications = true; thisObj.canGet = true; }); this.start += this.limit; } }, updateTabTitle(){ let thisObj = this, newTitle = `(${thisObj.badgeCount}) ${thisObj.tab_title}` document.title = thisObj.tab_title if(thisObj.badgeCount > 0) { document.title = newTitle } }, updateFavicon(link){ let original = $("link[rel*='icon']").attr('href'), notif = false if(this.badgeCount > 0) { notif = original.toString().replace('/favicons/','/favicons/notifications/') $("link[rel*='icon']").attr('href', notif) $("link[rel*='apple-touch-icon']").attr('href', notif) } }, getLink: function(reference){ return reference; }, lazyScroll: function(e, position){ var scrollerEl = document.getElementById('notificationScroller'); if(position.scrollTop + scrollerEl.clientHeight >= scrollerEl.scrollHeight - 20) this.getNotifications(); }, markAsRead: function(notification){ var notificationLink = '/' + notification.reference, thisObj = this; // if(notificationLink.indexOf('//') > -1) notificationLink = notificationLink.replace('//', '/'); // console.log(notificationLink) var doReload = false; if((location.href.indexOf('/discussions#') > -1 && notificationLink.indexOf('/discussions#') > -1) || (location.href.indexOf('/my-inbox#') > -1 && notificationLink.indexOf('/my-inbox#') > -1)) doReload = true; if(!notification.read){ notification.read = 1; this.badgeCount--; var postObj = { alerts: { mark_as_read_by_member_by_ids: { ids: [notification.id] } } } $.post(tf.nexusUrl(), postObj, function(data) { location.href = notificationLink; if(doReload) location.reload() }); } else { location.href = notificationLink; if(doReload) location.reload() } thisObj.updateFavicon() }, markAllAsRead: function(){ this.markingAsRead = true; var postObj = { "alerts":{ "mark_all_as_read_by_member":0 } }, thisObj = this; this.notifications.forEach(function(notification){ notification.read = 1; }); $.post(tf.nexusUrl(), postObj).done(function(){ thisObj.markingAsRead = false; thisObj.readCount = false; thisObj.badgeCount = 0; }); thisObj.updateFavicon() } } }); }; $(function(){ if(!tf.member) $('#notLoggedInHeaderSection').show() // if(tf.localip) if(tf.member && typeof phpajax != 'undefined') headerNotifications(); if(location.href.indexOf('/free-trial') > -1) $('#headerFreeTrialButtons').show() if(isEducator) setupEducator() });
Please click the button below to refresh this page to see the new sales!
  Refresh Page
  Back to Tim Pierce's Courses
  Buy Now or Watch

Free Samples

{{video.title}} {{video.subtitle}}

{{course.title}}


Standard & Premium Version Comparison


About


You Might Also Like


On Sale! Save {{course.promo.discount}}% with code "{{course.promo.code}}" - Hurry, this expires in {{promoTimeLeft}}!
  Play   Play
  Pre-Order Now   Buy the Download
  Gift
  Add
  Share

Indie Courses

Indie Courses are video course downloads produced independently from TrueFire. Often recorded in educators’ home studios, these products present fresh educational concepts and effective teaching methodologies. Indie Courses are exclusively available for purchase in the educator’s channel store and can be downloaded via the TrueFire apps for Windows, Mac, iOS, or Android. Indie Courses are NOT included in the All Access streaming plan as they are self-produced outside of TrueFire's studios.

Features
  • Multi-Angle Videos
  • 1080p Full HD
  • Video Tab Sync
  • Slo-Motion
  • Looping
  • Progress Tracking
Includes
  • Video Lessons
  • {{course.what_you_get.charts}} Charts (.pdf)
  • {{course.what_you_get.jams}} Jam Tracks (.mp3)
  • {{course.what_you_get.tabs}} Tabs (.gp5 or .ptb)
  • {{course.what_you_get.video}} of Video (.mp4)
  • Runtime: {{course.what_you_get.run_time}}
  • Download Size: {{course.size}}
Early & Instant Access Date
  • {{earlyAccessDate}}
All Access Date
  • {{releaseDate}}
Release Date
  • {{releaseDate}}
{{label}}

Download the App

Access via the TrueFire app for Windows, Mac, Linux, iOS, Android, Apple TV, and Roku. Download Now  

More Information
Satisfaction Guarantee
On Sale! Save {{course.promo.discount}}% with code "{{course.promo.code}}" - Hurry, this expires in {{promoTimeLeft}}!

As an All Access Student, you can stream the standard version of this song lesson. However, if you'd like to download the standard version for offline access or access the premium multi-track version (which also includes the standard version), you must purchase the download.

As an All Access Student, you can stream this course on any device. However, if you'd like to download this course for offline access and own it forever, you can purchase this course now.


  1. Add the download item to your cart.
  2. Go to your cart and select "Send as Gift."
  3. Enter the recipient's email address and click confirm.
  4. Apply payment and complete your order.
  5. Accept endless appreciation!
  Share via Email
  Share via Facebook
  Share via Twitter

In the video version, Robben presents almost 2 hours of multi-angle video lessons featuring performances and detailed breakdowns. Viewing angles include wide angle, right-hand, left-hand and composite views. Close-ups of the fretting and picking hands mean that you’ll quickly nail the essential techniques and be on your way to discovering Robben’s unique style.

Robben also takes full advantage of TrueFire’s interactive learning tools to put everything you need at your fingertips: multi-angle interactive video lesson player features looping, zooming, video-tab sync, Guitar Pro files and other handy learning tools and controls.

Use Code: {{cookieData.code}} for a limited time offer to save on picking up Robben’s interactive video course. Hurry, this offer expires in 24 hours.

In the video version, Andy presents over 3 hours of multi-angle video lessons featuring performances and detailed breakdowns. Viewing angles include wide angle, right-hand, left-hand and composite views. Close-ups of the fretting and picking hands mean that you’ll quickly nail the essential techniques and be on your way to mastering Andy’s style.

Andy also takes full advantage of TrueFire’s interactive learning tools to put everything you need at your fingertips: multi-angle interactive video lesson player features looping, zooming, video-tab sync, Guitar Pro files and other handy learning tools and controls.

Use Code: {{cookieData.code}} for a limited time offer to save on picking up Andy’s interactive video course. Hurry, this offer expires in 24 hours.

In the video version, Tommy presents over 2 hours of multi-angle video lessons featuring performances and detailed breakdowns. Viewing angles include wide angle, right-hand, left-hand and composite views. Close-ups of the fretting and picking hands mean that you’ll quickly nail the essential techniques and be on your way to discovering the wonders of polyphonic guitar playing – Tommy-style.

Tommy also takes full advantage of TrueFire’s interactive learning tools to put everything you need at your fingertips: multi-angle interactive video lesson player features looping, zooming, video-tab sync, Guitar Pro files and other handy learning tools and controls.

Use Code: {{cookieData.code}} for a limited time offer to save on picking up Tommy’s interactive video course. Hurry, this offer expires in 24 hours.

`, data(){ return { adding: false, cookieData: JSON.parse($.cookie('fundamental_course')) } }, methods: { addToCart(){ this.adding = true $.post(tf.siteApi + 'cart/update', {item: this.cookieData.itemid}).done(this.cartSuccess) }, cartSuccess(data){ data.result && (data.result == 'added') ? location.href = '/cart?promocode=' + this.cookieData.code : this.addToCart() // data.result && (data.result == 'added') ? location.href = '/order?promocode=' + this.cookieData.code : this.addToCart() } } }) // All Access Upgrade Vue.component('all-access-upgrade', { template: `

Upgrade to All Access

All Access Students can stream TrueFire's entire course library online or via our mobile apps, plus get exclusive discounts, freebies, and more! Learn More  

All Access Annual Plan
$249/yrPrice
On Sale! ({{item.discounts.percent}}% Off)
Price
`, data(){ return { id: 8004, item: false } }, created(){ const postObj = { items: { details: { ids: [this.id] } } } $.post(tf.nexusUrl(), postObj).done(this.setupItem) }, methods: { setupItem(data){ this.item = data.items.details.result[this.id] } } }) // Educator Info Row Vue.component('educator-info-row', { props: ['educator', 'multi'], template: `

  Learn More About

`, created(){ } }) // Cart Button Vue.component('cart-button', { props: ['id', 'block'], template: '  Add to Cart' }) // Item Disc Option Vue.component('item-disc-option', { props: ['course'], template: `
Instant Download
Standard Version (Download + Streaming)
Lifetime Access (Download + Streaming)
Lifetime Access (Disc + Download + Streaming)

Premium Version (Download + Streaming + Multi-Track)
`, data(){ return { is_disc: false, in_cart: false } }, methods: { cart_check(){ this.in_cart = !this.in_cart }, }, }) // Modal Purchase Panel Vue.component('modal-purchase-panel', { props: ['course'], template: `
` + // course `
` + // disc & download options `
Log In or Join Free to see Your Price, which includes All Access Discount, if applicable.
`, data(){ return { quantity: 1, } }, // todo: on created, look to see if item is on sale and use that for 'danger' label precedence }) // Item prices Vue.component('item-prices', { props: ['item'], template: `
Price
On Sale {{discount.type}} (% Off)
({{item.discount_percentage}}% Off)  
Price
` }) // Sidebar Purchase Panel Vue.component('sidebar-purchase-panel', { props: ['course'], template: `

Log In or Join Free to see Your Price, which includes All Access Discount, if applicable.

Private Lesson With {{$root.course.educator}}

{{$root.course.educator}} will assess your playing, answer your questions, and give you a private 1-on-1 lesson.

Learn More  

+ 1 ? quantity-- : quantity = 1">- {{quantity}} Quantity
Don't Show Again Close Continue to Cart  
`, data(){ return { quantity: 1, giftModal: false, addedModal: false, recommendations: false, hasPrivateLessons: false } }, created(){ if(this.course){ const thisObj = this this.$root.course.items.forEach(item => { if(item.store == 'private_lessons') thisObj.hasPrivateLessons = item }) } this.$nextTick(() => { if(window._GUARANTEE && _GUARANTEE.Loaded){ _GUARANTEE.Hash = "7baBv7VPrP%2Fxgf6JosSan2Lqsk9tcbEQlUazTjgxQmYnAKTBZkOg8PWUw0hLoKZaF2e1Lk8P1U97ePPRs08Lfw%3D%3D"; _GUARANTEE.WriteSeal() } }) }, methods: { showAddedModal(){ if(!this.addedCourse && !$.cookie('no_upsell_modal')){ this.addedModal = true const postObj = { recommendations: { by_course: { cid: this.$root.course.id, limit: 3 } } } $.post(tf.nexusUrl(), postObj).done(this.setupRecommendations) } }, setupRecommendations(data){ this.recommendations = data.recommendations.by_course.result.recommendations }, cancelModal(){ $.cookie('no_upsell_modal', true, {path: '/', domain: '.truefire.com', expires: 365}); this.addedModal = false }, cart_check(){ this.in_cart = !this.in_cart }, } }) // sidebar soundslice videos Vue.component('course-details-sidebar-videos', { template: `


`, data(){ return { videos: [ { video: tf.cf + 'inc/img/all-access/2020/feature_videos/Renders/AllAccess_WebVid_r2_hi.mp4', title: 'Multi-Angle HD Video Lessons', copy: 'Clearly see what the educator is demonstrating!' }, { video: tf.cf + 'inc/img/all-access/2020/feature_videos/Renders/03_AllAccess_TabSync_hi.mp4', title: 'Video Tab Sync & Fretboard View', copy: 'Easily follow along for quickest progress! Clearly see finger placement on the fretboard!' }, { video: tf.cf + 'inc/img/all-access/2020/feature_videos/Renders/02_AllAccess_SlowMotion_hd.mp4', title: 'Slow Motion & Looping', copy: 'Learn and Practice at your ideal speed! Choose any section of the lesson to focus on!' }, { img: 'https://d2xkd1fof6iiv9.cloudfront.net/images/song-lessons/premium.jpg', song: true, title: 'Premium Only: Multi-Track', copy: 'Mix, mute, or solo any of the video or audio tracks. Control the mix and immerse yourself!' } ] } } }) // bottom table of contents accordion Vue.component('toc-accordion', { template: `

Table of Contents

`, data(){ return { showToc: [true] } }, created(){ this.$root.course.videos.forEach((video) => { this.showToc.push(false) }) }, methods: { toggleToc(x){ this.showToc[x] ? this.$set(this.showToc, x, false) : this.showToc = this.showToc.map((v, i) => i === x) }, } }) const courseTemplate = new Vue({ name: 'courseAdPage', el: '#courseTemplate', data: { opacity: 1, course: false, introVideo: false, owns: false, releaseDate: false, earlyAccessDate: false, downloadNowModal: false, giftModal: false, shareModal: false, tags: false, soundslice: false, showingOverview: false, isEducatorPreview: location.href.includes('educator_preview'), moreInfo: [ {label: 'About Downloads', showing: false, text: 'Download and work with all your purchased courses offline in the new TrueFire app for Windows, Mac, iOS, or Android.'}, {label: 'About Streaming', showing: false, text: 'Whenever you purchase a course, you can stream it online and via mobile devices, including all video lessons, tabs, charts, jam tracks, and additional materials.'}, {label: 'About TrueFire Cash', showing: false, text: 'You earn TrueFire Cash back with every purchase and can use it for up to 25% off future purchases. Combine with All Access Discounts for max savings.'}, {label: 'About All Access Discounts', showing: false, text: `All Access Students get an extra 20% off all full-priced courses (not on sale). Learn more  `}, {label: 'About Owner Discount', showing: false, text: `You don't have to pay for lessons from other courses you already own. Simple as that!`}, {label: 'About Satisfaction Guarantee', showing: false, text: `Your 100% satisfaction with TrueFire’s educational offerings is our #1 concern and we'll jump through hoops of fire to keep you happy, smiling and extremely well educated. Learn more  `} ], educator: false, educators: false, recommendations: false, courseAddCollectionModal: false, showingToc: false, promoTimeLeft: false, promoHuntModal: false, promoHuntData: false, promoHuntPosition: Math.floor(Math.random() * 3), didPromotionHunt: false, free_videos: false, // try to only declare here playing_sample: false, startedSamples: false, wyg: false, indie: false, indieCourses: [0], fundamentalModal: false, songData: false, noPremium: false, comparison: [ { name: 'Multi-Angle Video', standard: true, premium: true }, { name: 'Backing Tracks with Vocal', standard: true, premium: true }, { name: 'Accurate Rhythm & Lead Parts', standard: true, premium: true }, { name: 'Easy Guitar Strum-Along Part', standard: true, premium: true }, { name: 'Video-Tab & Notation Sync', standard: true, premium: true }, { name: 'Looping & Slow Motion', standard: true, premium: true }, { name: 'Multi-Track Mixer Console', standard: false, premium: true }, { name: 'Individual Video & Audio Tracks', standard: false, premium: true }, { name: 'Mix, Mute, or Solo Controls', standard: false, premium: true }, { name: 'Mixes for ALL Instruments', standard: false, premium: true } ] // indieCourses: [1629, 1630, 1631] }, created(){ if(this.isEducatorPreview) this.setupEducatorPreview() let id = location.href.toLowerCase().substring(location.href.toLowerCase().lastIndexOf('/c') + 2), filters = ['intro_video', 'authorids', 'ignited_available', 'promo', 'yotpo', 'items', 'videos_count', 'id', 'is_compilation', 'youtube_intro_link', 'title', 'is_hd', 'release_date', 'educator', 'authorid', 'runtime', 'song', 'early_access_date', 'overview', 'size', 'size_hd', 'what_you_get', 'videos', 'perma_link', 'short_description', 'preorder', 'emarsys_tags'] if(id.indexOf('?') > -1) id = id.substring(0, id.indexOf('?')) if(!isNaN(id) && (this.indieCourses.indexOf(parseInt(id)) > -1)){ this.indie = true this.moreInfo.splice(1, 1) this.moreInfo.splice(1, 1) this.moreInfo.splice(2, 1) } const postObj = { courses: { detail: { id: id, filters: {filter: filters} } }, tagging: { tags: { reference_id: id, category_label: 'courses' } } } $.post(tf.nexusUrl(), postObj).done(this.setupCourse) }, methods: { setupEducatorPreview(){ const css = `.tfNavigation, .searchContainer, .oldHeaderNotificationsContainer, .newFooterContainerIn .footerColumn:nth-child(1) *, .newFooterContainerIn .footerColumn:nth-child(2) *, .newFooterContainerIn .footerColumn:nth-child(3) *, .newFooterContainerIn .footerColumn:nth-child(4) *, .tfUserBar, #educatorInfoContainer a, #educatorInfoContainer button, #recommendationsContainer, .promoted-products-box, #aboutCoursesPanel, .footerSocialLink {display:none !important;}`, head = document.head || document.getElementsByTagName('head')[0], style = document.createElement('style') head.appendChild(style) style.appendChild(document.createTextNode(css)) }, multipleEducators() { const postObj = { educators: { detail: { id: this.course.authorids } } } $.post(tf.nexusUrl(), postObj).done(this.setupMultipleEducators) }, setupMultipleEducators(data){ if(data.educators.detail.result){ this.educators = [] for(let i in data.educators.detail.result) if(!isNaN(parseInt(i))) this.educators.push(data.educators.detail.result[i]) } }, freeSamples(){ // todo -- clean up const free = [] for(let i = 0; i < this.course.videos.length; i++){ if(this.course.videos[i].free && !this.course.videos[i].subtitle.toLowerCase().includes('intro')) free.push(this.course.videos[i]) } this.free_videos = free.sort(() => { return 0.5 - Math.random() }) }, playSample(video) { this.startedSamples = true this.introVideo = false this.playing_sample = false setTimeout(() => { this.playing_sample = video }, 1) }, setupCourse(data){ if (typeof data != 'undefined' && data.gtm && typeof window != 'undefined' && window.dataLayer) { if(Array.isArray(data.gtm)) { for(var i = 0; i < data.gtm.length; i++) { dataLayer.push(data.gtm[i]); } } else { dataLayer.push(data.gtm); } } if(!(data.courses.detail.result[0].song instanceof Array) && (data.courses.detail.result[0].song.id)){ this.songData = data.courses.detail.result[0].song // check to see if we dont have premium if(data.courses.detail.result[0].items && (data.courses.detail.result[0].items.length && (data.courses.detail.result[0].items.length == 1))) this.noPremium = true this.moreInfo = [ {label: 'About Downloads', showing: false, text: 'Download and work with all your purchased song lessons offline in the new TrueFire app for Windows, Mac, iOS, or Android.'}, {label: 'About Streaming', showing: false, text: 'Whenever you purchase a song lesson, you can stream the standard version online and via mobile devices, including all video lessons, tabs, charts, jam tracks, and additional materials.'}, {label: 'About TrueFire Cash', showing: false, text: 'You earn TrueFire Cash back with every purchase and can use it for up to 25% off future purchases. Combine with All Access Discounts for max savings.'}, {label: 'About All Access Discounts', showing: false, text: `All Access Students get an extra 20% off all full-priced song lessons (not on sale). Learn more  `}, {label: 'About Owner Discount', showing: false, text: `You don't have to pay for lessons from other song lessons you already own. Simple as that!`}, {label: 'About Satisfaction Guarantee', showing: false, text: `Your 100% satisfaction with TrueFire’s educational offerings is our #1 concern and we'll jump through hoops of fire to keep you happy, smiling and extremely well educated. Learn more  `} ] } // data.courses.detail.result[0].preorder = data.courses.detail.result[0].title.indexOf('Pre-Order') > -1 if(data.courses.detail.result[0].youtube_intro_link){ const youtubeId = data.courses.detail.result[0].youtube_intro_link; data.courses.detail.result[0].youtubeId = youtubeId.substring(youtubeId.lastIndexOf('=') + 1) data.courses.detail.result[0].youtubeId = data.courses.detail.result[0].youtubeId.substring(data.courses.detail.result[0].youtubeId.lastIndexOf('/') + 1) } this.course = data.courses.detail.result[0] this.course.overview = this.course.overview.replace(/(?:\r\n|\r|\n)/g, '
') if(tf.member && (tf.member.ownedCourses && (tf.member.ownedCourses.length && (tf.member.ownedCourses.indexOf(this.course.id) > -1)))) this.owns = true if(this.course.intro_video) $.get(this.course.intro_video + '?url_only=1').done(this.setupIntroVideo) if(this.course.release_date) this.releaseDate = new Date(this.course.release_date * 1000).toLocaleDateString('en-US', { timeZone: 'America/New_York'}); if(this.course.early_access_date){ this.course.early_access_date = new Date(this.course.early_access_date).getTime() this.earlyAccessDate = new Date(this.course.early_access_date).toLocaleDateString('en-US', { timeZone: 'America/New_York'}) } if(this.course.videos && (this.course.videos.length)){ let hasSoundslice = false this.course.videos.forEach(video => { if(video.soundslice) hasSoundslice = true }) this.soundslice = hasSoundslice } this.tags = data.tagging.tags.result this.getEducatorAndRecommendations() this.$nextTick(this.setupSocial) if(this.course.promo) this.setupPromo() if($.cookie('fundamental_course') && this.course.items && (this.course.items.length)){ const fundamentalJson = JSON.parse($.cookie('fundamental_course')) for(let i = 0; i < this.course.items.length; i++){ if (this.course.items[i].id == fundamentalJson.itemid) this.fundamentalModal = true } } // todo: look below over, the redundant check is a red flag //Conditional rendering of What you Get: for (const val of Object.values(this.course.what_you_get) ) { if (val !== '' && val !== 0) this.wyg = true } // now our course object is ready so can now safely run everything else if(this.course.videos && (this.course.videos.length)) this.freeSamples() if(this.course.authorids && (typeof this.course.authorids == 'object')) this.multipleEducators() }, setupIntroVideo(data){ this.introVideo = data.result }, toggleInfoItem(index){ this.moreInfo.forEach((item, i) => { item.showing = index == i ? !item.showing : false }) }, getEducatorAndRecommendations(){ const postObj = { recommendations: { by_course: { cid: this.course.id, limit: 4 } } } if(!this.course.authorids || (this.course.authorids && typeof this.course.authorids != 'object')){ // only do if no multi postObj.educators = { detail: { id: this.course.authorid } } } $.post(tf.nexusUrl(), postObj).done(this.setupEducatorAndRecommendations) }, setupEducatorAndRecommendations(data){ if(data.educators) this.educator = data.educators.detail.result if(!this.course.preorder){ this.recommendations = data.recommendations.by_course.result.recommendations this.$nextTick(this.setupComments) } }, setupComments(){ const yotpoApi = new Yotpo.API(yotpo), yotpoObj = { target: 'yotpoComments', id: 'c' + this.course.id, name: this.course.title, url: location.href, image: 'https://d2xkd1fof6iiv9.cloudfront.net/images/courses/' + this.course.id + '/vthumb_150.jpg' } if(this.course.items && (this.course.items.length)) yotpoObj.price = this.course.items[0].price, tf.yotpoReviews(yotpoObj) yotpoApi.refreshWidgets() $(document).on('click', '.yotpo-default-button', () => { if(tf.member) { $('#yotpo_input_review_email').val(tf.member.email) } }) }, setupSocial(){ if(typeof FB != 'undefined') FB.XFBML.parse(document.getElementById('courseDetailsFacebookLikeBox')) if(typeof twttr != 'undefined') twttr.widgets.load() }, setupPromo(){ let eDate if(this.course.promo.formated_end_date || this.course.promo.formatted_end_date) eDate = this.course.promo.formated_end_date ? this.course.promo.formated_end_date : this.course.promo.formatted_end_date; else if(this.course.promo.EndDate) eDate = this.course.promo.EndDate const endDate = new Date(eDate).getTime(), currentDate = new Date().getTime() let secondsLeft = (endDate - currentDate) / 1000 let daysLeft = parseInt(secondsLeft / 86400) secondsLeft = secondsLeft % 86400 let hoursLeft = parseInt(secondsLeft / 3600) secondsLeft = secondsLeft % 3600 let minutesLeft = parseInt(secondsLeft / 60) secondsLeft = parseInt(secondsLeft % 60) hoursLeft = (daysLeft * 24) + hoursLeft hoursLeft = String(hoursLeft) minutesLeft = String(minutesLeft) secondsLeft = String(secondsLeft) if(secondsLeft != '' && secondsLeft.length == 1) secondsLeft = '0' + secondsLeft if(minutesLeft != '' && minutesLeft.length == 1) minutesLeft = '0' + minutesLeft if(hoursLeft != '' && hoursLeft.length == 1) hoursLeft = '0' + hoursLeft if(daysLeft){ hoursLeft = hoursLeft - (daysLeft * 24) const daysText = (daysLeft==1) ? 'day' : 'days' this.promoTimeLeft = daysLeft + ' ' + daysText + ', ' + hoursLeft + ':' + minutesLeft + ':' + secondsLeft } else this.promoTimeLeft = hoursLeft + ':' + minutesLeft + ':' + secondsLeft setTimeout(this.setupPromo, 1000) }, doPromoHunt(){ this.promoHuntModal = true this.didPromotionHunt = true if(!this.promoHuntData) $.post(tf.nexusUrl(), phpajax.promotion.play).done(this.setupPromoHunt) }, setupPromoHunt(data){ this.promoHuntData = data.giveaway.play.result if(tf.member.meta && (tf.member.meta.september2022 && (tf.member.meta.september2022.rewards && tf.member.meta.september2022.rewards.indexOf(this.promoHuntData.reward) == -1))){ tf.member.meta.september2022.rewards.push(this.promoHuntData.reward) } } }, watch: {} }) })
Download on theApp Store Get it onGoogle Play

© 1998-2025 TrueFire, Inc.