@posiwise/resource-module 0.0.96 → 0.0.97

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"posiwise-resource-module.mjs","sources":["../../../../libs/resource-module/src/lib/resource.service.ts","../../../../libs/resource-module/src/lib/public/components/reslease-note-card/release-note-card.component.ts","../../../../libs/resource-module/src/lib/public/components/reslease-note-card/release-note-card.component.html","../../../../libs/resource-module/src/lib/public/components/resource-card-list/resource-card-list.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-card-list/resource-card-list.component.html","../../../../libs/resource-module/src/lib/public/components/resource-blogs/resource-blog.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-blogs/resource-blog.component.html","../../../../libs/resource-module/src/lib/public/components/resource-case-studies/case-studies-cards/case-studies-cards.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-case-studies/case-studies-cards/case-studies-cards.component.html","../../../../libs/resource-module/src/lib/public/components/testimonial-card/testimonial-card.component.ts","../../../../libs/resource-module/src/lib/public/components/testimonial-card/testimonial-card.component.html","../../../../libs/resource-module/src/lib/public/components/resource-case-studies/resource-case-studies.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-case-studies/resource-case-studies.component.html","../../../../libs/resource-module/src/lib/public/components/resource-company-card/resource-company-card.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-company-card/resource-company-card.component.html","../../../../libs/resource-module/src/lib/public/components/resource-integration/resource-integration.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-integration/resource-integration.component.html","../../../../libs/resource-module/src/lib/shared/models/resource.model.ts","../../../../libs/resource-module/src/lib/public/components/resource-post/related-resources/related-resources.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-post/related-resources/related-resources.component.html","../../../../libs/resource-module/src/lib/public/components/resource-post/related-resources/resource-cards/resource-cards.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-post/related-resources/resource-cards/resource-cards.component.html","../../../../libs/resource-module/src/lib/public/components/resource-post/resource-post-details/resource-post-details.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-post/resource-post-details/resource-post-details.component.html","../../../../libs/resource-module/src/lib/public/components/resource-post/resource-post.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-post/resource-post.component.html","../../../../libs/resource-module/src/lib/public/components/resource-release-notes/resource-release-notes.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-release-notes/resource-release-notes.component.html","../../../../libs/resource-module/src/lib/public/components/resource-vault/resource-vault.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-vault/resource-vault.component.html","../../../../libs/resource-module/src/lib/public/components/resource-videos/resource-video-cards/resource-video-cards.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-videos/resource-video-cards/resource-video-cards.component.html","../../../../libs/resource-module/src/lib/public/components/resource-videos/resource-videos.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-videos/resource-videos.component.html","../../../../libs/resource-module/src/lib/public/components/resource-webinars/replay-event-cards/replay-event-cards.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-webinars/replay-event-cards/replay-event-cards.component.html","../../../../libs/resource-module/src/lib/public/components/resource-webinars/upcoming-event-cards/upcoming-event-cards.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-webinars/upcoming-event-cards/upcoming-event-cards.component.html","../../../../libs/resource-module/src/lib/public/components/resource-webinars/resource-webinars.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-webinars/resource-webinars.component.html","../../../../libs/resource-module/src/lib/public/components/resources/resource-tags/resource-tags.component.ts","../../../../libs/resource-module/src/lib/public/components/resources/resource-tags/resource-tags.component.html","../../../../libs/resource-module/src/lib/public/components/resources/vault-section/vault-section.component.ts","../../../../libs/resource-module/src/lib/public/components/resources/vault-section/vault-section.component.html","../../../../libs/resource-module/src/lib/public/components/resources/resources.component.ts","../../../../libs/resource-module/src/lib/public/components/resources/resources.component.html","../../../../libs/resource-module/src/lib/public/components/resources-hub/resources-hub.component.ts","../../../../libs/resource-module/src/lib/public/components/resources-hub/resources-hub.component.html","../../../../libs/resource-module/src/lib/public/components/resources-read/resources-read.component.ts","../../../../libs/resource-module/src/lib/public/components/resources-read/resources-read.component.html","../../../../libs/resource-module/src/lib/public/components/white-papers/white-papers.component.ts","../../../../libs/resource-module/src/lib/public/components/white-papers/white-papers.component.html","../../../../libs/resource-module/src/lib/public/resource-public.routing.module.ts","../../../../libs/resource-module/src/lib/public/resource-public.module.ts","../../../../libs/resource-module/src/lib/resource.module.ts","../../../../libs/resource-module/src/posiwise-resource-module.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { MainApiHttpService } from '@posiwise/common-services';\nimport { Paging } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\n@Injectable()\nexport class ResourceService {\n private readonly resource = '/posts';\n\n private readonly comments = '/comments';\n\n constructor(private readonly api: MainApiHttpService) {}\n\n getPublicPosts(\n master_subscription_id,\n page: number,\n pageSize: number,\n search: string,\n tagCategoryIds?: string\n ) {\n const params = {\n page,\n page_size: pageSize,\n search: search,\n master_subscription_id\n };\n\n if (tagCategoryIds) {\n params['tag_category_ids'] = tagCategoryIds;\n }\n return this.api.getWithParams(`${this.resource}/get_all`, {\n ...params\n });\n }\n\n getAdminPosts(subscriptionId, paging?: Paging) {\n return this.api.getWithParams(`${this.resource}/admin_get_all`, {\n ...HelperService.getPagingParams(paging),\n subscription_id: subscriptionId\n });\n }\n\n addPost(post) {\n const formData = new FormData();\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in post) {\n if (key in post) {\n formData.append(key, post[key]);\n }\n }\n\n return this.api.post(this.resource, formData);\n }\n\n getPostBySlug(slug: string) {\n return this.api.get(`${this.resource}/${slug}`);\n }\n\n deletePost(id) {\n return this.api.delete(`${this.resource}/${id}`);\n }\n\n updatePost(post, id) {\n const formData = new FormData();\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in post) {\n if (key in post) {\n formData.append(key, post[key]);\n }\n }\n\n return this.api.put(`${this.resource}/${id}`, formData);\n }\n\n private getComments() {\n return this.api.get(`${this.comments}/get_all`);\n }\n\n postComments(post) {\n return this.api.post(this.comments, post);\n }\n\n getResourceInsight(subscription_id, starting_at?: string, ending_at?: string) {\n return this.api.getWithParams(\n `/admin/posts_analytics?type=views&subscription_id=${subscription_id}`,\n { starting_at, ending_at }\n );\n }\n\n getResourcePostsInsight(id) {\n return this.api.get(`${this.resource}/${id}/insights`);\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pw-resource-note-card',\n templateUrl: './release-note-card.component.html',\n styleUrls: [\n './release-note-card.component.scss',\n '../resource-post/related-resources/related-resources.component.scss'\n ]\n})\nexport class ResourceNoteCardComponent {\n @Input() posts = [];\n @Input() releaseHeader = false;\n\n q1NotesLink = '/resources/white-papers';\n q3NotesLink = '/resources/white-papers';\n q4NotesLink = '/resources/white-papers';\n releaseNotesLink = '/resources/release-notes';\n}\n","<section class=\"release-notes-section bg-white py-5 section-outer\">\n <div class=\"text-center container\">\n\n <div *ngIf=\"releaseHeader\" class=\"d-flex release-section align-items-center w-100 mb-5 flex-wrap\">\n <h2 class=\"release-heading\">Product Release Notes</h2>\n <a class=\"view-all-link\"\n [routerLink]=\"releaseNotesLink\">VIEW ALL ></a>\n </div>\n\n <div class=\"row justify-content-center card-row\">\n <div class=\"release-card\">\n <div class=\"release-header\">\n <p class=\"quarter\">Q2 - 2024</p>\n <p class=\"title\"><strong>Product Release Notes</strong></p>\n <p class=\"desc\">New features & system<br />improvements</p>\n </div>\n <img src=\"/assets/img/resource/rocket-box.png\"\n alt=\"Release Icon\"\n class=\"release-icon mb-4\" />\n <button class=\"release-btn\"\n [routerLink]=\"q3NotesLink\">Read now <span class=\"arrow\">→</span></button>\n </div>\n\n <div class=\"release-card highlighted\">\n <div class=\"release-header q2-icon\">\n <p class=\"quarter\">Q1 - 2024</p>\n <p class=\"title\"><strong>Major Release:</strong></p>\n <p class=\"desc\">CloudOlive Groupings</p>\n </div>\n <img src=\"/assets/img/resource/rocket-box.png\"\n alt=\"Release Icon\"\n class=\"release-icon mb-4\" />\n <button class=\"release-btn\"\n [routerLink]=\"q4NotesLink\">Read now <span class=\"arrow\">→</span></button>\n </div>\n\n <div class=\"release-card\">\n <div class=\"release-header\">\n <p class=\"quarter\">Q4 - 2023</p>\n <p class=\"title\"><strong>Product Release Notes</strong></p>\n <p class=\"desc\">New features & system<br />improvements</p>\n </div>\n <img src=\"/assets/img/resource/rocket-box.png\"\n alt=\"Release Icon\"\n class=\"release-icon mb-4\" />\n <button class=\"release-btn\"\n [routerLink]=\"q1NotesLink\">Read now <span class=\"arrow\">→</span></button>\n </div>\n </div>\n </div>\n</section>","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pw-resource-card-list',\n templateUrl: './resource-card-list.component.html',\n styleUrls: ['../resource-post/related-resources/related-resources.component.scss']\n})\nexport class ResourceCardListComponent {\n @Input() posts = [];\n @Input() postHeader = '';\n}\n","<section class=\"resource-section bg-white\">\n <div class=\"container\">\n <div *ngIf=\"postHeader\" class=\"d-flex justify-content-between align-items-center flex-wrap mb-3\">\n <h2 class=\"section-heading\">{{postHeader}}</h2>\n </div>\n <div class=\"row mt-4 cards-row\">\n <div class=\"col-lg-4 col-md-6 mb-4\" *ngFor=\"let post of this.posts; let i = index\" [ngClass]=\"{ 'mt-5': i > 2 }\">\n <div class=\"resource-card\">\n <p class=\"resource-title\">{{ post.title }}</p>\n <img [src]=\"post.picture.url\" class=\"resource-image mt-4\" [alt]=\"\" />\n <a *ngIf=\"post?.external_url; else internalLink\"\n class=\"read-now-btn\"\n [href]=\"post.external_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Watch Now' }}</span>\n <span class=\"arrow\">→</span>\n </a>\n\n <ng-template #internalLink>\n <a class=\"read-now-btn\" [routerLink]=\"['/resources/view', post?.slug]\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Watch Now' }}</span>\n <span class=\"arrow\">→</span>\n </a>\n </ng-template>\n\n </div>\n </div>\n </div>\n </div>\n </section>","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { TOKEN_KEY } from '@posiwise/common-utilities';\n\nimport { ResourceService } from '../../../resource.service';\n\n@Component({\n selector: 'pw-resource-blog',\n templateUrl: './resource-blog.component.html',\n styleUrls: [\n './resource-blog.component.scss',\n '../resources/resources-shared.component.scss',\n '../resource-post/related-resources/related-resources.component.scss'\n ]\n})\nexport class ResourceBlogComponent extends AppBaseComponent implements OnInit {\n subscriptionId: number;\n masterSubscriptionId = this.appConfig.master_subscription.subscription_id;\n posts = [];\n userLoggedIn: boolean;\n blogPostTag;\n\n constructor(\n private readonly resourceService: ResourceService,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(response => {\n this.subscriptionId = response;\n });\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.subscriptionId = data?.subscriptionId;\n console.log(this.subscriptionId);\n });\n }\n this.getPostTags();\n });\n }\n\n private getPostTags() {\n this.tagService\n .getTagsByType('post_categories', {}, this.subscriptionId || this.masterSubscriptionId)\n .subscribe(response => {\n this.blogPostTag = response.tags.find(tag => tag.name === 'Blog Posts');\n this.getPosts(1, 100);\n });\n }\n\n getPosts(page: number, pageSize: number) {\n console.log(this.blogPostTag);\n this.resourceService\n .getPublicPosts(\n this.subscriptionId || this.masterSubscriptionId,\n page,\n pageSize,\n '',\n this.blogPostTag.tag_category_id\n )\n .subscribe(response => {\n console.log(response.posts, this.blogPostTag);\n this.posts = response.posts\n .filter(post =>\n post.tags?.some(\n tag => tag.tag_category_id === this.blogPostTag.tag_category_id\n )\n )\n .sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n )\n .slice(0, 12);\n });\n }\n}\n","<pw-resource-header></pw-resource-header>\n\n<section class=\"bg-white pricing-section\">\n <div class=\"nce-banner\">\n <div class=\"container d-flex flex-column flex-lg-row align-items-center justify-content-between\">\n\n <!-- Left Content -->\n <div class=\"text-content\">\n <div class=\"nce-heading\">\n <h1 class=\"nce-header mb-4\">\n Blogs for MSPs\n <span class=\"blue-text\"></span>\n </h1>\n </div>\n </div>\n\n <!-- Add directly below .text-content, still inside .container -->\n <div class=\"text-extension mt-4\">\n <p class=\"intro\">\n Our team have decades of<br>experience in the IT channel,<br>and work with hundreds of<br>MSPs globally.\n </p>\n <div class=\"cta-buttons d-flex gap-3 flex-wrap mt-3\">\n <p class=\"intro\">\n Here, we share our insights,<br>learnings &amp; the occasional<br>meme.\n </p>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"image-content ms-lg-5 mt-5 mt-lg-0\">\n <img class=\"nce-math-img\"\n src=\"/assets/img/resource/math.png\"\n alt=\"NCEasy laptop screen\" />\n <img class=\"nce-laptop-img\"\n src=\"/assets/img/resource/msp-man.png\"\n alt=\"NCEasy laptop screen\" />\n </div>\n\n </div>\n </div>\n <hr class=\"nce-divider\" />\n</section>\n\n<pw-resource-card-list [posts]=\"posts\"></pw-resource-card-list>\n\n<pw-trial-4-contact-us></pw-trial-4-contact-us>\n","import { Component, Injector, Input } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\n\n@Component({\n selector: 'pw-case-studies-card',\n templateUrl: './case-studies-cards.component.html',\n styleUrls: ['./case-studies-cards.component.scss']\n})\nexport class CaseStudyCardComponent extends AppBaseComponent {\n @Input() showCaseStudyHeader = false;\n constructor(\n private readonly sanitizer: DomSanitizer,\n injector: Injector\n ) {\n super(injector);\n }\n}\n","<section class=\"msp-vault-section bg-white text-center py-5 extra-top-padding section-outer\" id=\"msp-case-studies\">\n <div class=\"container\">\n <div *ngIf=\"showCaseStudyHeader\" class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading\" id=\"msp-case-studies\">MSP Case Studies</h2>\n <a class=\"view-all\" routerLink=\"/resources/case-studies\">VIEW ALL ></a>\n </div>\n <div *ngIf=\"!showCaseStudyHeader\" class=\"d-md-flex justify-content-between align-items-start\">\n <div class=\"vault-header\">\n <h2 class=\"vault-heading\">Case Studies</h2>\n </div>\n </div>\n\n <div class=\"row mt-5 video-row justify-content-center\">\n <div class=\"col-md-6 col-lg-4 mb-4\">\n <div class=\"testimonial-box\">\n <!-- TOP LOGO -->\n <img src=\"/assets/img/logos/clients/it-partners.png\"\n alt=\"IT Partners Logo\"\n class=\"company-logo mb-3\" />\n\n <!-- TEXT -->\n <p class=\"mb-3 testimonial-section\">\n <strong>Leveraged CloudOlive to:</strong><br />\n Find $10k MRR growth<br />\n Save 3–4 days monthly<br />\n Avoid a finance re-hire\n </p>\n\n <!-- BOTTOM AVATAR -->\n <div class=\"avatar-container mb-5\">\n <img src=\"/assets/img/resource/user-it-partners.png\"\n alt=\"User Avatar\"\n class=\"testimonial-avatar\" />\n <a class=\"read-more-btn-overlay\"\n routerLink=\"/resources/case-study-blue-arc-it-solutions\">\n <span class=\"text\">Read now</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n </div>\n\n </div>\n <div class=\"col-md-6 col-lg-4 mb-4\">\n <div class=\"testimonial-box\">\n <!-- TOP LOGO -->\n <img src=\"/assets/img/logos/clients/blue-arc.png\"\n alt=\"IT Partners Logo\"\n class=\"company-logo mb-3\" />\n\n <!-- TEXT -->\n <p class=\"mb-3 testimonial-section\">\n <strong>Leveraged CloudOlive to:</strong><br />\n Find $4.6k MRR growth<br />\n Save 1 day per month<br />\n Peace of mind\n </p>\n\n <div class=\"avatar-container mb-5\">\n <img src=\"/assets/img/resource/user-blue-arc.png\"\n alt=\"User Avatar\"\n class=\"testimonial-avatar\" />\n <a class=\"read-more-btn-overlay\"\n routerLink=\"/resources/case-study-blue-arc-it-solutions\">\n <span class=\"text\">Read now</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-6 col-lg-4 mb-4\">\n <div class=\"testimonial-box\">\n <!-- TOP LOGO -->\n <img src=\"/assets/img/logos/clients/huon-it.png\"\n alt=\"IT Partners Logo\"\n class=\"company-logo mb-3\" />\n\n <!-- TEXT -->\n <p class=\"mb-3 testimonial-section\">\n <strong>Leveraged CloudOlive to:</strong><br />\n Cut monthly Microsoft<br />\n reconciliation time from 5+ hours<br />\n down to 15 mins.\n </p>\n <div class=\"avatar-container mb-5\">\n <img src=\"/assets/img/resource/user-huon-it.png\"\n alt=\"User Avatar\"\n class=\"testimonial-avatar\" />\n\n <a class=\"read-more-btn-overlay\"\n routerLink=\"/resources/case-study-huon-it\">\n <span class=\"text\">Read now</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n\n </div>\n\n </div>\n\n </div>\n </div>\n</section>\n","import { Component, Input, OnInit } from '@angular/core';\n\nimport { Navigation, Pagination, Swiper } from 'swiper';\n\n@Component({\n selector: 'pw-testimonial-card',\n templateUrl: './testimonial-card.component.html',\n styleUrls: [\n './testimonial-card.component.scss',\n '../resource-post/related-resources/related-resources.component.scss'\n ]\n})\nexport class TestimonialCardListComponent implements OnInit {\n @Input() posts = [];\n @Input() postHeader = '';\n swiper;\n\n ngOnInit() {\n this.initSwiper();\n }\n\n private initSwiper() {\n this.swiper = new Swiper('.swiper-container', {\n modules: [Navigation, Pagination],\n slidesPerView: 1,\n spaceBetween: 24,\n centeredSlides: true,\n touchRatio: 1,\n touchAngle: 45,\n grabCursor: true,\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev'\n },\n pagination: {\n el: '.swiper-pagination',\n clickable: true\n },\n breakpoints: {\n 425: {\n slidesPerView: 1.05,\n centeredSlides: true\n },\n 470: {\n slidesPerView: 1.25,\n centeredSlides: true\n },\n 564: {\n slidesPerView: 1.5,\n centeredSlides: true\n },\n 640: {\n slidesPerView: 1.5,\n centeredSlides: true\n },\n 768: {\n slidesPerView: 1.5,\n centeredSlides: false\n },\n 1024: {\n slidesPerView: 2, // Allow room between cards\n centeredSlides: false\n },\n 1200: {\n slidesPerView: 3,\n centeredSlides: false\n }\n }\n });\n }\n}\n","<section class=\"resource-section bg-white\">\n <div class=\"container\">\n <div *ngIf=\"postHeader\" class=\"d-flex justify-content-between align-items-center flex-wrap mb-3\">\n <h2 class=\"section-heading\">{{postHeader}}</h2>\n </div>\n <div class=\"swiper-container\">\n <div class=\"swiper-wrapper\">\n <div class=\"swiper-slide\">\n <div class=\"testimonial-box\">\n <div class=\"stars mb-2\">★★★★★</div>\n <span><strong>\"This is a GAME CHANGER.</strong></span><br />\n <span> We went from spending hours trying to track Microsoft NCE subscriptions manually to having everything in one clear view.\"</span>\n <p class=\"mt-4 content-font fst-italic centaris-text\">– Joe, Centaris</p>\n <img src=\"/assets/img/logos/clients/centaris-reward.png\" alt=\"Centaris Logo\" class=\"testimonial-logo mt-2 img-fluid wow fadeInUp\" />\n </div>\n </div>\n <div class=\"swiper-slide\">\n <div class=\"testimonial-box\">\n <div class=\"stars mb-2\">★★★★★</div>\n <span>\n \"NCEasy keeps us ahead of the game. We no longer scramble to check license assignments and work out which subscription is coming up for renewal.\n </span>\n <p class=\"content-font\"><br /><strong>Highly recommend!\"</strong></p>\n <p class=\"mt-3 content-font fst-italic\">– Paul, Focus IT Healthcare</p>\n <img src=\"/assets/img/logos/clients/focus-it.png\" alt=\"FocusIT Logo\" class=\"testimonial-logo focus-logo mt-2\" />\n </div>\n </div>\n <div class=\"swiper-slide\">\n <div class=\"testimonial-box\">\n <div class=\"stars mb-2\">★★★★★</div>\n <span><strong>\"This is a GAME CHANGER.</strong></span><br />\n <span> We went from spending hours trying to track Microsoft NCE subscriptions manually to having everything in one clear view.\"</span>\n <p class=\"mt-4 content-font fst-italic centaris-text\">– Joe, Centaris</p>\n <img src=\"/assets/img/logos/clients/centaris-reward.png\" alt=\"Centaris Logo\" class=\"testimonial-logo mt-2 img-fluid wow fadeInUp\" />\n </div>\n </div>\n <div class=\"swiper-slide\">\n <div class=\"testimonial-box\">\n <div class=\"stars mb-2\">★★★★★</div>\n <span>\n \"NCEasy keeps us ahead of the game. We no longer scramble to check license assignments and work out which subscription is coming up for renewal.\n </span>\n <p class=\"content-font\"><br /><strong>Highly recommend!\"</strong></p>\n <p class=\"mt-3 content-font fst-italic\">– Paul, Focus IT Healthcare</p>\n <img src=\"/assets/img/logos/clients/focus-it.png\" alt=\"FocusIT Logo\" class=\"testimonial-logo focus-logo mt-2\" />\n </div>\n </div>\n </div>\n <div class=\"swiper-pagination\"></div>\n <div class=\"swiper-button-prev\"></div>\n <div class=\"swiper-button-next\"></div>\n </div>\n </div>\n <hr class=\"nce-divider\" />\n</section>","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { TOKEN_KEY } from '@posiwise/common-utilities';\n\nimport { ResourceService } from '../../../resource.service';\n\n@Component({\n selector: 'pw-resource-blog',\n templateUrl: './resource-case-studies.component.html',\n styleUrls: [\n './resource-case-studies.component.scss',\n '../resources/resources-shared.component.scss',\n '../resource-post/related-resources/related-resources.component.scss'\n ]\n})\nexport class ResourceCaseStudiesComponent extends AppBaseComponent implements OnInit {\n subscriptionId: number;\n masterSubscriptionId: number;\n posts = [];\n testimonialsPosts = [];\n userLoggedIn: boolean;\n blogPostTag;\n blogTestimonialsPostTag;\n\n constructor(\n private readonly resourceService: ResourceService,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(response => {\n this.subscriptionId = response;\n });\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.subscriptionId = data?.subscriptionId;\n console.log(this.subscriptionId);\n this.getPostTags();\n });\n }\n });\n }\n\n private getPostTags() {\n this.tagService\n .getTagsByType('post_categories', {}, this.subscriptionId || this.masterSubscriptionId)\n .subscribe(response => {\n console.log(response.tags);\n this.blogPostTag = response.tags.find(tag => tag.name === 'Case Studies');\n this.blogTestimonialsPostTag = response.tags.find(\n tag => tag.name === 'Testimonials'\n );\n console.log(this.blogPostTag);\n this.getPosts(1, 100);\n this.getTestimonialsPosts(1, 100);\n });\n }\n\n getPosts(page: number, pageSize: number) {\n console.log(this.blogPostTag);\n this.resourceService\n .getPublicPosts(\n this.subscriptionId,\n page,\n pageSize,\n '',\n this.blogPostTag?.tag_category_id\n )\n .subscribe(response => {\n console.log(response.posts, this.blogPostTag);\n this.posts = response.posts\n .filter(post =>\n post.tags?.some(\n tag => tag.tag_category_id === this.blogPostTag?.tag_category_id\n )\n )\n .sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n )\n .slice(0, 12);\n });\n }\n\n getTestimonialsPosts(page: number, pageSize: number) {\n console.log(this.blogTestimonialsPostTag?.tag_category_id, 'sop');\n this.resourceService\n .getPublicPosts(\n this.subscriptionId,\n page,\n pageSize,\n '',\n this.blogTestimonialsPostTag?.tag_category_id\n )\n .subscribe(response => {\n console.log(response.posts);\n this.testimonialsPosts = response.posts\n .filter(post =>\n post.tags?.some(\n tag =>\n tag.tag_category_id ===\n this.blogTestimonialsPostTag?.tag_category_id\n )\n )\n .sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n )\n .slice(0, 12);\n console.log(this.testimonialsPosts, 'new');\n });\n }\n}\n","<pw-resource-header></pw-resource-header>\n\n<section class=\"bg-white pricing-section\">\n <div class=\"nce-banner\">\n <div class=\"container d-flex flex-column flex-lg-row align-items-center justify-content-between\">\n\n <!-- Left Content -->\n <div class=\"text-content\">\n <div class=\"nce-heading\">\n <h1 class=\"nce-header mb-4\">\n Case Studies\n <span class=\"blue-text\"></span>\n </h1>\n </div>\n </div>\n\n <!-- Add directly below .text-content, still inside .container -->\n <div class=\"text-extension mt-4\">\n\n <div class=\"cta-buttons d-flex gap-3 flex-wrap mt-3\">\n <p class=\"intro\">\n Real MSPs. Real results.<br />\n </p>\n <p class=\"intro\">\n See how IT businesses around the<br />\n world are using CloudOlive to fix billing<br />\n bottlenecks, reclaim lost revenue, and<br />\n unlock new levels of profitability. No<br />\n fluff - just proven outcomes.\n </p>\n\n <!-- New buttons -->\n <div class=\"d-flex gap-3 mt-3 flex-wrap mb-5 cta-tab justify-content-center\">\n <a href=\"/resources/case-studies#reviews\" class=\"cta-btn filled\">Jump to Reviews</a>\n <a href=\"/resources/case-studies#case-studies\" class=\"cta-btn filled\">Jump to Case Studies</a>\n </div>\n </div>\n\n </div>\n\n <!-- Right Content -->\n <div class=\"image-content ms-lg-5 mt-5 mt-lg-0\">\n <img class=\"nce-math-img\"\n src=\"/assets/img/resource/math.png\"\n alt=\"NCEasy laptop screen\" />\n <img class=\"nce-laptop-img\"\n src=\"/assets/img/resource/case-studies-man.png\"\n alt=\"NCEasy laptop screen\" />\n </div>\n\n </div>\n </div>\n <hr class=\"nce-divider\" />\n</section>\n\n<pw-testimonial-card [posts]=\"testimonialsPosts\" [postHeader]=\"'Testimonials'\" id=\"reviews\"></pw-testimonial-card>\n<pw-case-studies-card id=\"case-studies\"></pw-case-studies-card>\n\n<pw-trial-4-contact-us></pw-trial-4-contact-us>\n","import { Component, Input, OnChanges } from '@angular/core';\n\ninterface PageEvent {\n first: number;\n rows: number;\n page: number;\n pageCount: number;\n}\n@Component({\n selector: 'pw-resource-company-card',\n templateUrl: './resource-company-card.component.html',\n styleUrl: './resource-company-card.component.scss'\n})\nexport class ResourceCompanyCardComponent implements OnChanges {\n @Input() header = '';\n @Input() data = [];\n @Input() vendor = false;\n filteredData = [];\n first = 0;\n rows = 12;\n ngOnChanges(): void {\n this.search();\n }\n search(keywords?) {\n console.log(this.data, keywords);\n if (keywords) {\n this.filteredData = this.data.filter(x =>\n x.name.toLowerCase().includes(keywords.toLowerCase())\n );\n } else {\n this.filteredData = [...this.data];\n }\n }\n onPageChange(event: PageEvent) {\n this.first = event.first;\n this.rows = event.rows;\n }\n}\n","<div [ngClass]=\"{ 'vendors-distributor-wrapper': !vendor }\">\n <div class=\"d-flex justify-content-between align-items-center mb-3 search-container\">\n <div>\n <span class=\"int-span\">{{header}}</span>\n </div>\n <div class=\"search-wrapper position-relative\">\n <i class=\"fa fa-search search-icon\"></i>\n <input type=\"text\"\n (keyup)=\"search($event.target.value)\"\n placeholder=\"Search eg security\"\n class=\"search-input\" />\n </div>\n\n </div>\n\n <div class=\"row justify-content-around\">\n <div class=\"col-md-3 mt-4\"\n *ngFor=\"let img of filteredData | slice:this.first:this.first+this.rows\">\n <div class=\"boxes d-flex align-items-center justify-content-center\">\n <img [src]=\"img.companyImg\"\n alt=\"\"\n class=\"vebdor-icon\" />\n </div>\n </div>\n\n <div class=\"customPaginator d-flex align-items-center mt-5 justify-content-center\"\n [ngClass]=\"vendor ? 'my-5' : 'mt-5'\">\n <p-paginator (onPageChange)=\"onPageChange($event)\"\n [first]=\"first\"\n [rows]=\"rows\"\n [totalRecords]=\"filteredData.length-1\"></p-paginator>\n </div>\n </div>\n</div>\n","import { Component, Injector, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { CompanyData } from '@posiwise/common-utilities';\n\n@Component({\n selector: 'pw-resource-integration',\n templateUrl: './resource-integration.component.html',\n styleUrls: [\n './resource-integration.component.scss',\n '../resources/resources-shared.component.scss'\n ]\n})\nexport class ResourceIntegrationComponent extends AppBaseComponent implements OnInit {\n distributorsData = CompanyData?.distributorsData;\n vendorsData = CompanyData?.vendorsData;\n\n textColor = this.appConfig?.color_codes?.text;\n\n releaseNotesLink = '/resources/product-release-notes';\n q1NotesLink = '/resources/product-release-q1-2025';\n q3NotesLink = '/resources/product-release-q3-2024';\n q4NotesLink = '/resources/product-release-q4-2024';\n\n videoWebinarLoaded = false;\n videoDemoLoaded = false;\n youtubeVideoId = 'R7Vk219zbhA';\n videoTitle = 'CloudOlive Overview';\n sanitizedMicrosoftVideoUrl: SafeResourceUrl;\n sanitizedKesyaVideoUrl: SafeResourceUrl;\n\n constructor(\n private readonly sanitizer: DomSanitizer,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit(): void {\n document.documentElement.style.setProperty('--text-color', this.textColor);\n }\n\n loadMicrosoftVideo() {\n const baseUrl = `https://www.youtube.com/embed/${this.youtubeVideoId}?autoplay=1`;\n // baseUrl is a trusted internal source (e.g. YouTube embed URL)\n this.sanitizedMicrosoftVideoUrl = this.sanitizer.bypassSecurityTrustResourceUrl(baseUrl); // NOSONAR\n this.videoDemoLoaded = true;\n }\n\n loadKeseyaVideo(): void {\n const baseUrl = `https://www.youtube.com/embed/${this.youtubeVideoId}?autoplay=1`;\n // baseUrl is a trusted internal source (e.g. YouTube embed URL)\n this.sanitizedKesyaVideoUrl = this.sanitizer.bypassSecurityTrustResourceUrl(baseUrl); // NOSONAR\n this.videoWebinarLoaded = true;\n }\n}\n","<pw-resource-header></pw-resource-header>\n\n<section class=\"bg-white section-integration\">\n <div class=\"nce-banner\">\n <div class=\"container d-flex flex-column flex-lg-row align-items-center justify-content-between\">\n\n <!-- Left Content -->\n <div class=\"text-content\">\n <div class=\"nce-vendor-heading\">\n <h1 class=\"nce-header mb-4\">\n Map any vendor<br /> or distributor to your PSA.\n <span class=\"blue-text\"></span>\n </h1>\n </div>\n </div>\n\n <div class=\"sub-text-extension mt-4\">\n <p class=\"intro\">\n CloudOlive is <span class=\"fw-bold\">100% vendor agnostic,</span><br />\n meaning there are NO limitations to<br />\n the connectivity it can provide between<br />\n how you buy and how you sell.<br />\n </p>\n <div class=\"cta-buttons d-flex gap-3 flex-wrap mt-3\">\n <a routerLink=\"/book-a-demo\"\n class=\"cta-btn filled\">Speak to sales ></a>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"image-content ms-lg-5 mt-5 mt-lg-0\">\n <img class=\"person-integration-img\"\n src=\"/assets/img/resource/integratebanner.png\"\n alt=\"NCEasy laptop screen\" />\n <img class=\"nce-integration-img\"\n src=\"/assets/img/resource/men.png\"\n alt=\"Smiling guy\" />\n </div>\n\n </div>\n </div>\n <div class=\"section-fadeout\"></div>\n</section>\n<div class=\"mobile-fadeout\"></div>\n<div class=\"bg-white\">\n <section class=\"cloudolive-guide-section bg-white py-5 section-outer\">\n <div class=\"container\">\n <h1 class=\"int-title mb-0\">140+ integrations (& counting)</h1>\n <p class=\"int-text\"> Search the current list of CloudOlive’s vendor and distributor integrations below. <br />\n </p>\n <pw-resource-company-card [header]=\"'integrated vendor'\"\n [data]=\"distributorsData\"></pw-resource-company-card>\n </div>\n <div class=\"integration-fadeout\"></div>\n </section>\n <section class=\"cloudolive-guide-section bg-white py-5 section-outer\">\n <div class=\"container\">\n <pw-resource-company-card [header]=\"'integrated vendor'\"\n [vendor]=\"true\"\n [data]=\"distributorsData\"></pw-resource-company-card>\n <div class=\"text-center pt-3\">\n <p class=\"see-span\"> Don’t see what you’re after? <a href=\"/book-a-demo\"\n class=\"int-span team-span\">Speak with our team to request a connection >\n </a>\n </p>\n </div>\n </div>\n <div class=\"integration-fadeout\"></div>\n </section>\n <section class=\"cloudolive-guide-section bg-white py-5 section-outer\">\n <div class=\"container\">\n <div class=\"how-it-works-wrapper\">\n <h1 class=\"it-works-title mb-0\">How it works</h1>\n <p class=\"pb-20\">View short example videos to understand how these integrations can work for your MSP:</p>\n <div class=\"row section-row\">\n <div class=\"col-md-6\">\n <div class=\"d-flex justify-content-center\">\n <img src=\"/assets/img/resource/how-it-works1.png\"\n *ngIf=\"!videoDemoLoaded\"\n (click)=\"loadMicrosoftVideo()\"\n class=\"how-it-works-img\"\n alt=\"\" />\n <iframe *ngIf=\"videoDemoLoaded\"\n class=\"embed-responsive-item\"\n [title]=\"videoTitle\"\n [src]=\"sanitizedMicrosoftVideoUrl\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen>\n </iframe>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"d-flex justify-content-center\">\n <img src=\"/assets/img/resource/how-it-works2.png\"\n *ngIf=\"!videoWebinarLoaded\"\n (click)=\"loadKeseyaVideo()\"\n class=\"how-it-works-img\"\n alt=\"\" />\n <iframe *ngIf=\"videoWebinarLoaded\"\n class=\"embed-responsive-item\"\n [title]=\"videoTitle\"\n [src]=\"sanitizedKesyaVideoUrl\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen>\n </iframe>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"integration-fadeout\"></div>\n </section>\n <section class=\"cloudolive-guide-section bg-white py-5 section-outer\">\n <div class=\"container\">\n <div class=\"row align-items-start\">\n <!-- Left Content -->\n <div class=\"col-md-6 text-md-start text-center\">\n <h1 class=\"guide-title mb-3\">A guide to implementing CloudOlive in your business</h1>\n <p class=\"guide-subtext\">\n View where CloudOlive sits in your internal technology stack and monthly workflows, and see how easy\n it is to get started.\n </p>\n <p class=\"guide-note mb-4\">View the quick guide now:</p>\n <button class=\"vault-btn\"\n onclick=\"window.open('https://hubspot.com', '_blank')\">View the guide</button>\n </div>\n\n <!-- Right Image -->\n <div class=\"col-md-6 text-center\">\n <img src=\"/assets/img/resource/guide.png\"\n alt=\"Guide\"\n class=\"img-fluid guide-img\" />\n </div>\n </div>\n </div>\n <div class=\"integration-fadeout\"></div>\n </section>\n</div>\n\n<pw-resource-note-card [releaseHeader]=\"true\"></pw-resource-note-card>\n\n<pw-trial-4-contact-us></pw-trial-4-contact-us>\n","import { UntypedFormBuilder, Validators } from '@angular/forms';\n\nexport class ResourceBlog {\n static getResourcePostsForm() {\n return new UntypedFormBuilder().group({\n related_entity_id: [''],\n related_entity_type: [''],\n comment: [null, Validators.required],\n user_id: ['']\n });\n }\n}\n","import { Component, Injector, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { CustomToastService } from '@posiwise/common-services';\nimport { TOKEN_KEY, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { ResourceService } from '../../../../resource.service';\nimport { ResourceBlog } from '../../../../shared/models/resource.model';\n\n@Component({\n selector: 'pw-related-resources',\n templateUrl: './related-resources.component.html',\n styleUrls: ['./related-resources.component.scss']\n})\nexport class RelatedResourcesComponent extends AppBaseComponent implements OnInit {\n resourceCards = [\n {\n title: 'BLOG: Here’s why you should QA your distributor invoices',\n image: '/assets/img/resource/resource-qa.png',\n alt: 'QA distributor invoices',\n url: '/resources/view/here-s-why-you-should-be-seeking-independent-qa-of-all-distributor-inv'\n },\n {\n title: 'BLOG: 4 instant hacks to uplift your MSP’s monthly billing',\n image: '/assets/img/resource/resource-hacks.png',\n alt: 'Monthly billing hacks',\n url: '/resources/view/4-instant-hacks-to-uplift-your-msp-s-monthly-billing'\n },\n {\n title: 'BLOG: The trivial detail that will either future-proof or sabotage your PSA.',\n image: '/assets/img/resource/resource-psa.png',\n alt: 'PSA future-proof',\n url: '/resources/view/the-trivial-detail-that-will-either-future-proof-or-sabotage-your-psa'\n }\n ];\n\n post;\n masterSubscriptionId;\n slug;\n\n postComments = [];\n commentForm;\n\n userLoggedIn: boolean;\n\n user: User;\n\n constructor(\n private readonly resourceService: ResourceService,\n injector: Injector,\n private readonly sanitizer: DomSanitizer,\n private readonly toastr: CustomToastService\n ) {\n super(injector);\n this.commentForm = ResourceBlog.getResourcePostsForm();\n }\n\n ngOnInit(): void {\n this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;\n this.route.params.subscribe(params => {\n this.slug = params['slug'] || '';\n this.getBlogItem(this.slug);\n });\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.userService.getUserInfo().subscribe(data => {\n this.user = data;\n });\n }\n });\n }\n\n private getBlogItem(slug: string) {\n this.resourceService.getPostBySlug(slug).subscribe(response => {\n let blogBody;\n if (response?.body) {\n blogBody = HelperService.sanitizeQuillBody(response.body, this.sanitizer);\n }\n const date = new Date(response?.when);\n const formatted = date.toISOString().split('T')[0];\n console.log(formatted); //\n this.postComments = response.entity_comments;\n this.post = { ...response, body: blogBody, when: formatted };\n });\n }\n\n onComment() {\n const data = { ...this.commentForm.value };\n data.related_entity_id = this.post?.id;\n data.related_entity_type = 'Post';\n data.user_id = this.user?.id;\n this.resourceService\n .postComments(data)\n .subscribe(() => {\n this.getBlogItem(this.slug);\n this.commentForm.reset();\n this.toastr.success(this.translation.translate('Resource.Posts.CommentAdded'));\n })\n .add(() => {\n console.log('In this');\n });\n }\n\n trackByComment(_index: number, item: { id: number }) {\n return item.id;\n }\n}\n","\n\n<section class=\"resource-body-section\">\n <div class=\"container\">\n <div class=\"ql-snow body-quill\"\n >\n <div class=\"ql-editor body post-body-text\"\n [innerHTML]=\"post?.body\">\n </div>\n </div>\n <section class=\"nce-offer-section\">\n\n <div class=\"row mt-5 mb-4 response-row\">\n <div class=\"col-12\">\n <form\n class=\"p-fluid mb-5\"\n [formGroup]=\"commentForm\"\n (ngSubmit)=\"onComment()\"\n *ngIf=\"userLoggedIn; else userLoggedOut\"\n >\n <div class=\"card shadow-sm border-0 p-4\">\n <div class=\"field\">\n <label for=\"comment\" class=\"font-bold text-lg mb-4 comment-label\">💬 Leave a comment</label>\n <textarea\n pInputTextarea\n formControlName=\"comment\"\n rows=\"6\"\n autoResize=\"true\"\n class=\"p-inputtext p-component p-inputtextarea\"\n placeholder=\"What's on your mind?\"\n ></textarea>\n <small\n class=\"text-danger\"\n *ngIf=\"commentForm.get('comment')?.invalid && commentForm.get('comment')?.touched\"\n >Please enter comment</small\n >\n </div>\n <div class=\"text-end mt-3\">\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"sign-btn sign-header-btn\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <ng-template #userLoggedOut>\n <p class=\"text-center pt-3 pb-3 user-not-logged-in text-muted shadow-sm mb-5\">\n <a [routerLink]=\"['/login']\" class=\"text-primary fw-bold\">Log in</a> to leave a comment!\n </p>\n </ng-template>\n </div>\n </div>\n\n <div class=\"row mt-5 comment-row\">\n <div class=\"col-12\" *ngFor=\"let comment of postComments; trackBy: trackByComment\">\n <div class=\"card border-0 shadow-sm p-3 mb-3\">\n <div class=\"d-flex align-items-start\">\n <img\n [src]=\"comment?.author?.avatar?.[0]?.url || 'assets/img/icons/male.png'\"\n alt=\"avatar\"\n class=\"rounded-circle me-3\"\n width=\"50\"\n height=\"50\"\n (error)=\"handleImageError($event, 'assets/img/icons/male.png')\"\n />\n <div class=\"flex-grow-1\">\n <div class=\"fw-bold text-dark\">\n {{ comment.user?.first_name || '' }} {{ comment.user?.last_name || '' }}\n </div>\n <div class=\"text-muted small mb-2\">{{ comment.created_at | date: 'dd MMM yyyy, h:mm a' }}</div>\n <div class=\"text-body\">\n {{ comment.comment }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n </section>\n </div>\n <hr class=\"nce-divider\" />\n</section>\n\n<section class=\"nce-book-section\">\n <div class=\"container\">\n\n <p class=\"nce-contact\">\n Any questions? Get in touch with Adam <a href=\"#\">here</a>,\n <a href=\"https://www.linkedin.com/company/cloudolive\" target=\"_blank\">connect on LinkedIn</a>, or book a meeting below:\n </p>\n </div>\n <pw-book-a-demo [isBlog]=\"true\"></pw-book-a-demo>\n <hr class=\"nce-divider\" />\n</section>\n\n\n\n<section class=\"resource-section bg-white\">\n <div class=\"container\">\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading\">Other resources you may be interested in:</h2>\n <a class=\"view-all\" routerLink=\"/resources\">VIEW ALL ></a>\n </div>\n\n <div class=\"row mt-4 cards-row\">\n <div class=\"col-lg-4 col-md-6 mb-4\" *ngFor=\"let card of resourceCards\">\n <div class=\"resource-card\">\n <p class=\"resource-title\">{{ card.title }}</p>\n <img [src]=\"card.image\" class=\"resource-image mt-4\" [alt]=\"card.alt\" />\n <a class=\"read-now-btn\" [href]=\"card.url\">\n <span>Read now</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n </div>\n </div>\n </div>\n</section>\n","import { Component } from '@angular/core';\n@Component({\n selector: 'pw-resource-cards',\n templateUrl: './resource-cards.component.html',\n styleUrls: ['../related-resources.component.scss']\n})\nexport class ResourceCardComponent {\n resourceCards = [\n {\n title: 'BLOG: Here’s why you should QA your distributor invoices',\n image: '/assets/img/resource/resource-qa.png',\n alt: 'QA distributor invoices',\n url: '/resources/view/here-s-why-you-should-be-seeking-independent-qa-of-all-distributor-inv'\n },\n {\n title: 'BLOG: 4 instant hacks to uplift your MSP’s monthly billing',\n image: '/assets/img/resource/resource-hacks.png',\n alt: 'Monthly billing hacks',\n url: '/resources/view/4-instant-hacks-to-uplift-your-msp-s-monthly-billing'\n },\n {\n title: 'BLOG: The trivial detail that will either future-proof or sabotage your PSA.',\n image: '/assets/img/resource/resource-psa.png',\n alt: 'PSA future-proof',\n url: '/resources/view/the-trivial-detail-that-will-either-future-proof-or-sabotage-your-psa'\n }\n ];\n}\n","<section class=\"resource-section bg-white\">\n <div class=\"container\">\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading\">Our team’s articles</h2>\n <a class=\"view-all\" routerLink=\"/resources\">VIEW ALL ></a>\n </div>\n\n <div class=\"row mt-4 cards-row\">\n <div class=\"col-lg-4 col-md-6 mb-4\" *ngFor=\"let card of resourceCards\">\n <div class=\"resource-card\">\n <p class=\"resource-title\">{{ card.title }}</p>\n <img [src]=\"card.image\" class=\"resource-image mt-4\" [alt]=\"card.alt\" />\n <a class=\"read-now-btn\" [href]=\"card.url\">\n <span>Read now</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n </div>\n </div>\n </div>\n </section>","import { Component, Injector, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { ResourceService } from '../../../../resource.service';\n@Component({\n selector: 'pw-resource-post-details',\n templateUrl: './resource-post-details.component.html',\n styleUrls: ['./resource-post-details.component.scss']\n})\nexport class ResourcePostDetailsComponent extends AppBaseComponent implements OnInit {\n post;\n masterSubscriptionId;\n slug;\n\n constructor(\n private readonly resourceService: ResourceService,\n injector: Injector,\n private readonly sanitizer: DomSanitizer\n ) {\n super(injector);\n }\n\n ngOnInit(): void {\n this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;\n this.route.params.subscribe(params => {\n this.slug = params['slug'] || '';\n this.getBlogItem(this.slug);\n });\n }\n\n private getBlogItem(slug: string) {\n this.resourceService.getPostBySlug(slug).subscribe(response => {\n let blogBody;\n if (response?.body) {\n blogBody = HelperService.sanitizeQuillBody(response.body, this.sanitizer);\n }\n const date = new Date(response?.published_at);\n const formatted = date.toISOString().split('T')[0];\n console.log(formatted); //\n this.post = { ...response, body: blogBody, published_at: formatted };\n });\n }\n}\n","<section class=\"nce-hero-section\">\n <div class=\"container d-flex flex-wrap\">\n <div class=\"hero-left\">\n <p class=\"blog-label\">MSP BLOG</p>\n\n <h1 class=\"hero-title\">\n <strong>{{post?.title}}</strong>\n </h1>\n\n <div class=\"author-info\">\n <img [src]=\"post?.author?.avatar?.[0]?.url || 'assets/img/icons/male.png'\" alt=\"User Profile Logo\" class=\"author-img\" />\n <div class=\"author-meta\">\n <p>Article by {{ post?.author?.first_name }} {{ post?.author?.last_name }}</p>\n <p class=\"date\">{{post?.published_at}}</p>\n </div>\n <img src=\"/assets/img/resource/math.png\" alt=\"User Profile Logo\" class=\"d-md-none d-block mobile-math-image\" />\n </div>\n </div>\n\n <div class=\"hero-right d-none d-md-block\">\n <img src=\"/assets/img/resource/math.png\" alt=\"Math Icon Blob\" class=\"hero-image\" />\n </div>\n </div>\n <hr class=\"nce-divider\" />\n </section>\n","import { Component, OnInit } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n selector: 'app-resource-post',\n templateUrl: './resource-post.component.html'\n})\nexport class ResourcePostComponent implements OnInit {\n slug: string;\n\n constructor(\n private route: ActivatedRoute,\n private titleService: Title\n ) {}\n\n ngOnInit(): void {\n this.route.paramMap.subscribe(params => {\n this.slug = params.get('slug') || 'Default';\n setTimeout(() => {\n this.titleService.setTitle(`Resource - ${this.slug}`);\n }, 1000);\n });\n }\n}\n","<pw-resource-header></pw-resource-header>\n<pw-resource-post-details></pw-resource-post-details>\n<pw-related-resources></pw-related-resources>\n<pw-trial-4-contact-us></pw-trial-4-contact-us>","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { TOKEN_KEY } from '@posiwise/common-utilities';\n\nimport { ResourceService } from '../../../resource.service';\n\n@Component({\n selector: 'pw-resource-release-notes',\n templateUrl: './resource-release-notes.component.html',\n styleUrls: [\n './resource-release-notes.component.scss',\n '../resources/resources-shared.component.scss',\n '../resource-post/related-resources/related-resources.component.scss'\n ]\n})\nexport class ResourceReleaseNoteComponent extends AppBaseComponent implements OnInit {\n subscriptionId: number;\n masterSubscriptionId: number;\n posts = [];\n userLoggedIn: boolean;\n blogPostTag;\n\n constructor(\n private readonly resourceService: ResourceService,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n console.log();\n this.getUserSubscriptionId().subscribe(response => {\n this.subscriptionId = response;\n });\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.subscriptionId = data?.subscriptionId;\n console.log(this.subscriptionId);\n this.getPostTags();\n });\n }\n });\n }\n\n private getPostTags() {\n this.tagService\n .getTagsByType('post_categories', {}, this.subscriptionId || this.masterSubscriptionId)\n .subscribe(response => {\n this.blogPostTag = response.tags.find(tag => tag.name === 'Product Release Notes');\n this.getPosts(1, 100);\n });\n }\n\n getPosts(page: number, pageSize: number) {\n console.log(this.blogPostTag);\n this.resourceService\n .getPublicPosts(\n this.subscriptionId,\n page,\n pageSize,\n '',\n this.blogPostTag.tag_category_id\n )\n .subscribe(response => {\n console.log(response.posts, this.blogPostTag);\n this.posts = response.posts\n .filter(post =>\n post.tags?.some(\n tag => tag.tag_category_id === this.blogPostTag.tag_category_id\n )\n )\n .sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n )\n .slice(0, 12);\n });\n }\n}\n","<pw-resource-header></pw-resource-header>\n\n<section class=\"bg-white pricing-section\">\n <div class=\"nce-banner\">\n <div class=\"container d-flex flex-column flex-lg-row align-items-center justify-content-between\">\n\n <!-- Left Content -->\n <div class=\"text-content\">\n <div class=\"nce-heading\">\n <h1 class=\"nce-header mb-4\">\n Product Release Notes\n <span class=\"blue-text\"></span>\n </h1>\n </div>\n </div>\n\n <!-- Add directly below .text-content, still inside .container -->\n <div class=\"text-extension mt-4\">\n <p class=\"intro\">\n We’re obsessed with solving one of the<br>\n industry's most painful problems:<br> MSP billing.\n </p>\n <div class=\"cta-buttons d-flex gap-3 flex-wrap mt-3\">\n <p class=\"intro\">\n Every quarterly update here is part of<br />\n our mission to remove friction, boost<br />\n profitability, and give you back control.<br />\n It’s how we help you bill better, every<br />\n single day.\n </p>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"image-content ms-lg-5 mt-5 mt-lg-0\">\n <img class=\"nce-math-img\"\n src=\"/assets/img/resource/math.png\"\n alt=\"NCEasy laptop screen\" />\n <img class=\"nce-laptop-img\"\n src=\"/assets/img/resource/release-person.png\"\n alt=\"NCEasy laptop screen\" />\n </div>\n\n </div>\n </div>\n <hr class=\"nce-divider\" />\n</section>\n\n<pw-resource-note-card></pw-resource-note-card>\n\n<pw-trial-4-contact-us></pw-trial-4-contact-us>\n","import { Component, Injector, Input } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\n\n@Component({\n selector: 'pw-resource--vault',\n templateUrl: './resource-vault.component.html',\n styleUrls: ['./resource-vault.component.scss']\n})\nexport class ResourceVaultComponent extends AppBaseComponent {\n @Input() showVaultSection = false;\n videoWebinarLoaded = false;\n videoDemoLoaded = false;\n\n ebookLink = '/resources/white-papers';\n\n youtubeVideoId = 'R7Vk219zbhA';\n videoTitle = 'CloudOlive Overview';\n sanitizedDemoVideoUrl: SafeResourceUrl;\n sanitizedWebinarVideoUrl: SafeResourceUrl;\n\n constructor(\n private readonly sanitizer: DomSanitizer,\n injector: Injector\n ) {\n super(injector);\n }\n\n loadDemoVideo() {\n const baseUrl = `https://www.youtube.com/embed/${this.youtubeVideoId}?autoplay=1`;\n // baseUrl is a trusted internal source (e.g. YouTube embed URL)\n this.sanitizedDemoVideoUrl = this.sanitizer.bypassSecurityTrustResourceUrl(baseUrl); // NOSONAR\n this.videoDemoLoaded = true;\n }\n\n loadWebinarVideo(): void {\n const baseUrl = `https://www.youtube.com/embed/${this.youtubeVideoId}?autoplay=1`;\n // baseUrl is a trusted internal source (e.g. YouTube embed URL)\n this.sanitizedWebinarVideoUrl = this.sanitizer.bypassSecurityTrustResourceUrl(baseUrl); // NOSONAR\n this.videoWebinarLoaded = true;\n }\n}\n","<section class=\"msp-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n <div *ngIf=\"showVaultSection\" class=\"d-flex justify-content-between align-items-center flex-wrap mb-5\">\n <h2 class=\"section-heading\">Whitepapers & Tools</h2>\n <a class=\"view-all\" routerLink=\"/resources/white-papers\">VIEW ALL ></a>\n </div>\n <div class=\"d-flex flex-wrap justify-content-center gap-4 vault-row\">\n <div class=\"vault-card\">\n <h5><strong>eBook: 5 tips</strong></h5>\n <p class=\"mb-4\">for MSPs to manage cloud billings in Autotask</p>\n <img src=\"/assets/img/resource/tips.png\"\n class=\"img-fluid mb-3\"\n alt=\"eBook\" />\n <button class=\"vault-btn\"\n [routerLink]=\"ebookLink\">\n <span class=\"text\">Read now </span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n <div class=\"vault-card\">\n <h5><strong>Factsheet</strong></h5>\n <p class=\"mb-4\">Learn about CloudOlive & our 140+ integrations</p>\n <img src=\"/assets/img/resource/factsheet.png\"\n class=\"img-fluid mb-3\"\n alt=\"eBook\" />\n <button class=\"vault-btn\"\n [routerLink]=\"ebookLink\">\n <span class=\"text\">Read now </span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n <div class=\"vault-card\">\n <h5><strong>Instant Quiz</strong></h5>\n <p class=\"mb-4\">MRR Risk Review - find out if you might be missing revenue</p>\n <img src=\"/assets/img/resource/quiz.png\"\n class=\"img-fluid mb-3\"\n alt=\"eBook\" />\n <button class=\"vault-btn\"\n [routerLink]=\"ebookLink\">\n <span class=\"text\">Read now </span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n </div>\n </div>\n</section>\n","import { Component, Injector, Input } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\n\n@Component({\n selector: 'pw-resource-video-card',\n templateUrl: './resource-video-cards.component.html',\n styleUrls: ['./resource-video-cards.component.scss']\n})\nexport class ResourceVideoCardComponent extends AppBaseComponent {\n @Input() showVideoSection = false;\n videoStates = {\n datto: { loaded: false, id: 'R7Vk219zbhA', url: null as SafeResourceUrl },\n connectwise: { loaded: false, id: 'R7Vk219zbhA', url: null as SafeResourceUrl },\n cloudolive: { loaded: false, id: 'R7Vk219zbhA', url: null as SafeResourceUrl }\n };\n\n constructor(\n private readonly sanitizer: DomSanitizer,\n injector: Injector\n ) {\n super(injector);\n }\n\n loadVideo(key: 'datto' | 'connectwise' | 'cloudolive') {\n const videoId = this.videoStates[key].id;\n const baseUrl = `https://www.youtube.com/embed/${videoId}?autoplay=1`;\n this.videoStates[key].url = this.sanitizer.bypassSecurityTrustResourceUrl(baseUrl); // NOSONAR\n this.videoStates[key].loaded = true;\n }\n}\n","<section class=\"msp-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n <div *ngIf=\"showVideoSection\" class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading\">On-Demand Videos</h2>\n <a class=\"view-all\" routerLink=\"/resources/videos\">VIEW ALL ></a>\n </div>\n <div class=\"row mt-5 d-flex flex-wrap justify-content-center video-row\">\n <div class=\"vault-card\">\n <p>MSP UPSKILL: Free Masterclass on Billing in Datto Autotask</p>\n <img src=\"/assets/img/resource/logos/datto-logo.png\" alt=\"Datto Logo\" class=\"header-logo\" />\n\n <img *ngIf=\"!videoStates.datto.loaded\"\n src=\"/assets/img/resource/datto-video.png\"\n class=\"img-fluid mb-3\"\n alt=\"Webinar\" />\n\n <iframe *ngIf=\"videoStates.datto.loaded\"\n class=\"embed-responsive-item\"\n [title]=\"videoTitle\"\n [src]=\"videoStates.datto.url\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen>\n </iframe>\n\n <button class=\"vault-btn\" (click)=\"loadVideo('datto')\">\n <span class=\"text\">Watch now</span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n <div class=\"vault-card\">\n <p>MSP UPSKILL: Free Masterclass on Billing in ConnectWise</p>\n <img src=\"/assets/img/resource/logos/connectwise.png\" alt=\"ConnectWise Logo\" class=\"header-logo\" />\n\n <img *ngIf=\"!videoStates.connectwise.loaded\"\n src=\"/assets/img/resource/datto-video.png\"\n class=\"img-fluid mb-3\"\n alt=\"Webinar\" />\n\n <iframe *ngIf=\"videoStates.connectwise.loaded\"\n class=\"embed-responsive-item\"\n [title]=\"videoTitle\"\n [src]=\"videoStates.connectwise.url\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen>\n </iframe>\n\n <button class=\"vault-btn\" (click)=\"loadVideo('connectwise')\">\n <span class=\"text\">Watch now</span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n <div class=\"vault-card\">\n <p class=\"demo\">DEMONSTRATION: <br /> 5 minute overview of<br />CloudOlive</p>\n\n <img *ngIf=\"!videoStates.cloudolive.loaded\"\n src=\"/assets/img/resource/demo-video.png\"\n class=\"img-fluid mb-3\"\n alt=\"Webinar\" />\n\n <iframe *ngIf=\"videoStates.cloudolive.loaded\"\n class=\"embed-responsive-item\"\n [title]=\"videoTitle\"\n [src]=\"videoStates.cloudolive.url\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen>\n </iframe>\n\n <button class=\"vault-btn\" (click)=\"loadVideo('cloudolive')\">\n <span class=\"text\">Watch now</span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n </div>\n </div>\n\n</section>\n","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { TOKEN_KEY } from '@posiwise/common-utilities';\n\nimport { ResourceService } from '../../../resource.service';\n\n@Component({\n selector: 'pw-resource-videos',\n templateUrl: './resource-videos.component.html',\n styleUrls: [\n './resource-videos.component.scss',\n '../resources/resources-shared.component.scss',\n '../resource-post/related-resources/related-resources.component.scss'\n ]\n})\nexport class ResourceVideoComponent extends AppBaseComponent implements OnInit {\n subscriptionId: number;\n masterSubscriptionId: number;\n posts = [];\n userLoggedIn: boolean;\n blogPostTag;\n\n constructor(\n private readonly resourceService: ResourceService,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(response => {\n this.subscriptionId = response;\n });\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.subscriptionId = data?.subscriptionId;\n console.log(this.subscriptionId);\n this.getPostTags();\n });\n }\n });\n }\n\n private getPostTags() {\n this.tagService\n .getTagsByType('post_categories', {}, this.subscriptionId || this.masterSubscriptionId)\n .subscribe(response => {\n this.blogPostTag = response.tags.find(tag => tag.name === 'Videos');\n this.getPosts(1, 100);\n });\n }\n\n getPosts(page: number, pageSize: number) {\n console.log(this.blogPostTag);\n this.resourceService\n .getPublicPosts(\n this.subscriptionId,\n page,\n pageSize,\n '',\n this.blogPostTag.tag_category_id\n )\n .subscribe(response => {\n console.log(response.posts, this.blogPostTag);\n this.posts = response.posts\n .filter(post =>\n post.tags?.some(\n tag => tag.tag_category_id === this.blogPostTag.tag_category_id\n )\n )\n .sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n )\n .slice(0, 12);\n });\n }\n}\n","<pw-resource-header></pw-resource-header>\n\n<section class=\"bg-white pricing-section\">\n <div class=\"nce-banner\">\n <div class=\"container d-flex flex-column flex-lg-row align-items-center justify-content-between\">\n\n <!-- Left Content -->\n <div class=\"text-content\">\n <div class=\"nce-heading\">\n <h1 class=\"nce-header mb-4\">\n Videos on demand\n <span class=\"blue-text\"></span>\n </h1>\n </div>\n </div>\n\n <!-- Add directly below .text-content, still inside .container -->\n <div class=\"text-extension mt-4\">\n <p class=\"intro\">\n Prefer to watch and learn? We’ve got<br>you.\n </p>\n <div class=\"cta-buttons d-flex gap-3 flex-wrap mt-3\">\n <p class=\"intro\">\n These on-demand sessions cover<br />\n everything from platform demos to<br />\n bite-sized billing masterclasses - all<br />\n designed to help MSPs streamline,<br />\n scale, and stay sharp. Watch anytime,<br />\n when it suits you.\n </p>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"image-content ms-lg-5 mt-5 mt-lg-0\">\n <img class=\"nce-math-img\"\n src=\"/assets/img/resource/math.png\"\n alt=\"NCEasy laptop screen\" />\n <img class=\"nce-laptop-img\"\n src=\"/assets/img/resource/video-template.png\"\n alt=\"NCEasy laptop screen\" />\n </div>\n\n </div>\n </div>\n <hr class=\"nce-divider\" />\n</section>\n\n\n<pw-resource-video-card></pw-resource-video-card>\n\n<pw-trial-4-contact-us></pw-trial-4-contact-us>\n","import { Component, Injector } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\n\n@Component({\n selector: 'pw-replay-event-card',\n templateUrl: './replay-event-cards.component.html',\n styleUrls: ['./replay-event-cards.component.scss']\n})\nexport class ReplayEventCardComponent extends AppBaseComponent {\n videoStates = {\n inforcer: { loaded: false, id: 'R7Vk219zbhA', url: null as SafeResourceUrl },\n inforcer2: { loaded: false, id: 'R7Vk219zbhA', url: null as SafeResourceUrl },\n huntress: { loaded: false, id: 'R7Vk219zbhA', url: null as SafeResourceUrl }\n };\n\n constructor(\n private readonly sanitizer: DomSanitizer,\n injector: Injector\n ) {\n super(injector);\n }\n\n loadVideo(key: 'inforcer' | 'inforcer2' | 'huntress') {\n const videoId = this.videoStates[key].id;\n const baseUrl = `https://www.youtube.com/embed/${videoId}?autoplay=1`;\n this.videoStates[key].url = this.sanitizer.bypassSecurityTrustResourceUrl(baseUrl); // NOSONAR\n this.videoStates[key].loaded = true;\n }\n}\n","<section class=\"msp-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n <div class=\"d-md-flex justify-content-between align-items-start\">\n <div class=\"vault-header\">\n <h2 class=\"vault-heading\">Webinar Replays</h2>\n </div>\n </div>\n\n <div class=\"row mt-5 video-row\">\n\n <div class=\"col-md-4 mb-4\">\n <div class=\"vault-card text-center p-4\">\n <h5 class=\"badge-title\">REPLAY:</h5>\n <p class=\"event-title mb-1\">Webinar with Inforcer & CloudOlive:</p>\n <p class=\"event-date\">Make more on Microsoft</p>\n\n <img *ngIf=\"!videoStates.inforcer.loaded\"\n src=\"/assets/img/resource/webinar-inforcer.png\"\n class=\"img-fluid my-3\"\n alt=\"Webinar\" />\n\n <iframe *ngIf=\"videoStates.inforcer.loaded\"\n class=\"embed-responsive-item my-3\"\n [title]=\"videoTitle\"\n [src]=\"videoStates.inforcer.url\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen>\n </iframe>\n\n <button class=\"vault-btn mt-3\" (click)=\"loadVideo('inforcer')\">\n <span class=\"text\">Watch now</span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n </div>\n\n <div class=\"col-md-4 mb-4\">\n <div class=\"vault-card text-center p-4\">\n <h5 class=\"badge-title\">REPLAY:</h5>\n <p class=\"event-title mb-1\">Webinar with Inforcer & CloudOlive:</p>\n <p class=\"event-date\">Make more on Microsoft</p>\n\n <img *ngIf=\"!videoStates.inforcer2.loaded\"\n src=\"/assets/img/resource/webinar-inforcer.png\"\n class=\"img-fluid my-3\"\n alt=\"Webinar\" />\n\n <iframe *ngIf=\"videoStates.inforcer2.loaded\"\n class=\"embed-responsive-item my-3\"\n [title]=\"videoTitle\"\n [src]=\"videoStates.inforcer2.url\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen>\n </iframe>\n\n <button class=\"vault-btn mt-3\" (click)=\"loadVideo('inforcer2')\">\n <span class=\"text\">Watch now</span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n </div>\n\n <div class=\"col-md-4 mb-4\">\n <div class=\"vault-card text-center p-4\">\n <h5 class=\"badge-title\">REPLAY:</h5>\n <p class=\"event-title mb-1\">Webinar with Huntress & CloudOlive:</p>\n <p class=\"event-date\">MSP Thrive – Security</p>\n\n <img *ngIf=\"!videoStates.huntress.loaded\"\n src=\"/assets/img/resource/webinar-huntress.png\"\n class=\"img-fluid my-3\"\n alt=\"Webinar\" />\n\n <iframe *ngIf=\"videoStates.huntress.loaded\"\n class=\"embed-responsive-item my-3\"\n [title]=\"videoTitle\"\n [src]=\"videoStates.huntress.url\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen>\n </iframe>\n\n <button class=\"vault-btn mt-3\" (click)=\"loadVideo('huntress')\">\n <span class=\"text\">Watch now</span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n </div>\n\n </div>\n </div>\n</section>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pw-upcoming-event-card',\n templateUrl: './upcoming-event-cards.component.html',\n styleUrls: ['./upcoming-event-cards.component.scss']\n})\nexport class UpcomingEventCardComponent {\n @Input() showEventContent = false;\n}\n","<section class=\"msp-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n <div *ngIf=\"showEventContent\" class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading\">Events & Webinars:</h2>\n <a class=\"view-all\" routerLink=\"/resources/events\">VIEW ALL ></a>\n </div>\n <div *ngIf=\"!showEventContent\" class=\"d-md-flex justify-content-between align-items-start\">\n <div class=\"vault-header\">\n <h2 class=\"vault-heading\">Upcoming Events</h2>\n </div>\n </div>\n\n <div class=\"row mt-5 d-flex flex-wrap justify-content-center gap-4 video-row\">\n <div class=\"vault-card text-center p-4\">\n <h5 class=\"badge-title\">UPCOMING:</h5>\n\n <p class=\"event-title mb-1\">Unlock Cyber Success</p>\n <p class=\"event-date\">20<sup>th</sup> June 2025</p>\n\n <img\n src=\"/assets/img/resource/upcoming-event.png\"\n class=\"img-fluid my-3\"\n alt=\"Webinar\" />\n <a class=\"vault-btn mt-3\" href=\"#\">\n <span class=\"text\">Register Now</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n <div class=\"vault-card text-center p-4\">\n <h5 class=\"badge-title\">UPCOMING:</h5>\n\n <p class=\"event-title mb-1\">Unlock Cyber Success</p>\n <p class=\"event-date\">20<sup>th</sup> June 2025</p>\n\n <img\n src=\"/assets/img/resource/upcoming-event.png\"\n class=\"img-fluid my-3\"\n alt=\"Webinar\" />\n <a class=\"vault-btn mt-3\" href=\"#\">\n <span class=\"text\">Register Now</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n <div class=\"vault-card text-center p-4\">\n <h5 class=\"badge-title\">UPCOMING:</h5>\n\n <p class=\"event-title mb-1\">Unlock Cyber Success</p>\n <p class=\"event-date\">20<sup>th</sup> June 2025</p>\n\n <img\n src=\"/assets/img/resource/upcoming-event.png\"\n class=\"img-fluid my-3\"\n alt=\"Webinar\" />\n <a class=\"vault-btn mt-3\" href=\"#\">\n <span class=\"text\">Register Now</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n </div>\n </div>\n</section>\n","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { TOKEN_KEY } from '@posiwise/common-utilities';\n\nimport { ResourceService } from '../../../resource.service';\n\n@Component({\n selector: 'pw-resource-blog',\n templateUrl: './resource-webinars.component.html',\n styleUrls: [\n './resource-webinars.component.scss',\n '../resources/resources-shared.component.scss'\n ]\n})\nexport class ResourceWebinarComponent extends AppBaseComponent implements OnInit {\n subscriptionId: number;\n masterSubscriptionId: number;\n posts = [];\n upcomingPosts = [];\n userLoggedIn: boolean;\n blogPostTag;\n\n constructor(\n private readonly resourceService: ResourceService,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(response => {\n this.subscriptionId = response;\n });\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.subscriptionId = data?.subscriptionId;\n console.log(this.subscriptionId);\n this.getPostTags();\n });\n }\n });\n }\n\n private getPostTags() {\n this.tagService\n .getTagsByType('post_categories', {}, this.subscriptionId || this.masterSubscriptionId)\n .subscribe(response => {\n this.blogPostTag = response.tags.find(tag => tag.name === 'Events');\n this.getPosts(1, 100);\n this.getUpcomingPosts(1, 100);\n });\n }\n\n getPosts(page: number, pageSize: number) {\n console.log(this.blogPostTag);\n this.resourceService\n .getPublicPosts(\n this.subscriptionId,\n page,\n pageSize,\n '',\n this.blogPostTag?.tag_category_id\n )\n .subscribe(response => {\n console.log(response.posts, this.blogPostTag);\n this.posts = response.posts\n .filter(post =>\n post.tags?.some(\n tag =>\n tag.tag_category_id === this.blogPostTag?.tag_category_id &&\n new Date(post.when) < new Date()\n )\n )\n .sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n )\n .slice(0, 12);\n });\n }\n getUpcomingPosts(page: number, pageSize: number) {\n this.resourceService\n .getPublicPosts(\n this.subscriptionId,\n page,\n pageSize,\n '',\n this.blogPostTag?.tag_category_id\n )\n .subscribe(response => {\n console.log(response.posts, this.blogPostTag);\n this.upcomingPosts = response.posts\n .filter(post =>\n post.tags?.some(\n tag =>\n tag.tag_category_id === this.blogPostTag?.tag_category_id &&\n new Date(post.when) > new Date()\n )\n )\n .sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n )\n .slice(0, 12);\n });\n }\n}\n","<pw-resource-header></pw-resource-header>\n\n\n<section class=\"bg-white pricing-section\">\n <div class=\"nce-banner\">\n <div class=\"container d-flex flex-column flex-lg-row align-items-center justify-content-between\">\n\n <!-- Left Content -->\n <div class=\"text-content\">\n <div class=\"nce-heading\">\n <h1 class=\"nce-header mb-4\">\n Events & Webinars\n <span class=\"blue-text\"></span>\n </h1>\n </div>\n </div>\n\n <!-- Add directly below .text-content, still inside .container -->\n <div class=\"text-extension mt-4\">\n <p class=\"intro\">\n We're big on community and even<br>bigger on sharing what works.\n </p>\n <div class=\"cta-buttons d-flex gap-3 flex-wrap mt-3\">\n <p class=\"intro\">\n Whether it's a deep-dive webinar,<br>\n product masterclass or a virtual<br>\n roundtable with industry pros - these<br>\n sessions are built to help MSPs like<br>\n you grow smarter, bill better, and<br>\n stay ahead.\n </p>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"image-content ms-lg-5 mt-5 mt-lg-0\">\n <img class=\"nce-math-img\"\n src=\"/assets/img/resource/math.png\"\n alt=\"NCEasy laptop screen\" />\n <img class=\"nce-laptop-img\"\n src=\"/assets/img/resource/events-women.png\"\n alt=\"NCEasy laptop screen\" />\n </div>\n\n </div>\n </div>\n <hr class=\"nce-divider\" />\n</section>\n\n<section class=\"bg-white\">\n <pw-upcoming-event-card></pw-upcoming-event-card>\n <hr class=\"nce-divider card-divider\" />\n</section>\n\n<section class=\"bg-white\">\n <pw-replay-event-card></pw-replay-event-card>\n</section>\n\n\n\n\n<pw-trial-4-contact-us></pw-trial-4-contact-us>\n","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { Tag } from '@posiwise/common-utilities';\n\n@Component({\n selector: 'pw-resource-tags',\n templateUrl: './resource-tags.component.html',\n styleUrls: [\n './resource-tags.component.scss',\n '../../resources-hub/resources-hub.component.scss'\n ]\n})\nexport class ResourceTagComponent extends AppBaseComponent implements OnInit {\n tags = [];\n subscriptionId: number;\n userLoggedIn: boolean;\n loading = true;\n loaded = false;\n\n selectedTag: Tag | null = null;\n\n constructor(\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.localStorage.getItem$('product').subscribe(product => {\n const data = product ? JSON.parse(product) : null;\n this.subscriptionId =\n data?.subscriptionId || this.appConfig.master_subscription.subscription_id;\n this.getTags();\n });\n }\n\n selectTag(tag: Tag): void {\n this.selectedTag = tag;\n }\n\n getTags() {\n this.loading = true;\n this.tagService\n .getTagsByType('post_categories', {}, this.subscriptionId)\n .subscribe(res => {\n this.tags = (res?.tags || [])\n .filter(tag => tag.visible_in_resources)\n .map(tag => ({\n ...tag,\n iconClass: `fa ${tag.icon_name}` // e.g. fa fa-check\n }));\n })\n .add(() => {\n this.loading = false;\n this.loaded = true;\n });\n }\n}\n","<section class=\"tag-section py-5 bg-white\" *ngIf=\"tags?.length\">\n <div class=\"container\">\n <div class=\"row g-4\">\n <div class=\"col-md-3 col-sm-6 mb-4\" *ngFor=\"let tag of tags\">\n <div (click)=\"selectTag(tag)\" class=\"resource-card d-flex align-items-center p-3\" [ngClass]=\"{ 'selected': selectedTag?.name === tag.name }\">\n <i [class]=\"tag.iconClass + ' resource-icon me-3'\"></i>\n <span class=\"resource-text\">{{ tag.name }}</span>\n </div>\n </div>\n </div>\n </div>\n</section>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'pw-vault-section',\n templateUrl: './vault-section.component.html',\n styleUrls: ['./vault-section.component.scss']\n})\nexport class VaultSectionComponent {}\n","<section class=\"vault-section\">\n <div class=\"skewed-bg\"></div>\n <div class=\"container\">\n <div class=\"row align-items-center vault-row\">\n <!-- Left Content -->\n <div class=\"col-lg-6 col-12 text-content\">\n <h2 class=\"headline\">Expand, upskill,<br />bill smarter.</h2>\n <div class=\"description-content\">\n <p class=\"description\">\n Welcome to <strong>The MSP Vault by CloudOlive</strong>. Explore our value-packed collection resources, designed to help you upskill, soak up all the benefits of CloudOlive, and stay ahead in the evolving reseller landscape.\n </p>\n <a class=\"cta-btn\" href=\"/resources#msp-case-studies\">Jump to CloudOlive Solutions</a>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"col-lg-6 col-12 img-wrapper\">\n <img src=\"/assets/img/resource/vault-women.png\" alt=\"Vault Mockup\" class=\"img-fluid\" />\n </div>\n </div>\n </div>\n </section>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'pw-resources',\n templateUrl: './resources.component.html',\n styleUrls: ['./resources.component.scss']\n})\nexport class ResourceComponent {}\n","\n<pw-resource-header></pw-resource-header>\n<pw-vault-section></pw-vault-section>\n<pw-resource-tags></pw-resource-tags>\n<pw-resource-video-card [showVideoSection]=\"true\"></pw-resource-video-card>\n<pw-upcoming-event-card [showEventContent]=\"true\"></pw-upcoming-event-card>\n<pw-resource-cards></pw-resource-cards>\n<pw-case-studies-card [showCaseStudyHeader]=\"true\"></pw-case-studies-card>\n<pw-resource--vault [showVaultSection]=\"true\"></pw-resource--vault>\n<pw-resource-note-card [releaseHeader]=\"true\"></pw-resource-note-card>\n<pw-trial-4-contact-us></pw-trial-4-contact-us>","import {\n Component,\n HostListener,\n Injector,\n OnDestroy,\n OnInit,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { Resource, Tag, TOKEN_KEY } from '@posiwise/common-utilities';\n\nimport { forkJoin } from 'rxjs';\n\nimport { ResourceService } from '../../../resource.service';\n\n@Component({\n selector: 'pw-posts-list',\n templateUrl: './resources-hub.component.html',\n styleUrls: [\n './resources-hub.component.scss',\n '../resource-company-card/resource-company-card.component.scss'\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class ResourceHubComponent extends AppBaseComponent implements OnInit, OnDestroy {\n private delayTimeout: ReturnType<typeof setTimeout> | null = null;\n\n data = [];\n\n posts: Resource[] = [];\n tags: Tag[] = [];\n\n selectedTags = [];\n\n currentPage = 1;\n pageSize = 20;\n objectCount = 0;\n\n searchTextItems = '';\n searchInput = false;\n\n readingTime: number;\n\n totalRecords: number;\n\n loading = true;\n loaded = false;\n\n masterSubscriptionId: number;\n subscriptionId;\n userLoggedIn: boolean;\n\n scrollLocked = false;\n\n iconClasses: string[] = [\n 'fa-lightbulb',\n 'fa-rocket',\n 'fa-file-alt',\n 'fa-users',\n 'fa-video',\n 'fa-pencil-alt',\n 'fa-book-open',\n 'fa-cogs'\n ];\n\n constructor(\n private readonly resourceService: ResourceService,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.subscriptionId = data?.subscriptionId;\n });\n }\n });\n this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;\n this.getPostsAndTags();\n this.readingTime = 0;\n }\n\n getPostsAndTags() {\n this.loading = true;\n this.loaded = false;\n forkJoin({\n resPosts: this.resourceService.getPublicPosts(\n this.masterSubscriptionId,\n this.currentPage,\n this.pageSize,\n this.searchTextItems\n ),\n resTags: this.tagService.getTagsByType(\n 'post_categories',\n {},\n this.subscriptionId || this.masterSubscriptionId\n )\n })\n .subscribe(res => {\n this.posts = res?.resPosts?.posts;\n this.objectCount = res?.resPosts.object_count;\n this.data = res?.resPosts?.posts;\n this.totalRecords = this.posts?.length;\n\n this.tags = res?.resTags?.tags?.filter(tag => tag.visible_in_resources);\n this.tags = this.tags.map(tag => ({\n ...tag,\n iconClass: this.getRandomIcon()\n }));\n })\n .add(() => {\n this.loading = false;\n this.loaded = true;\n });\n }\n\n getRandomIcon(): string {\n const randomIndex = Math.floor(Math.random() * this.iconClasses.length);\n return 'fa ' + this.iconClasses[randomIndex];\n }\n\n getPosts(page: number, pageSize: number, fetchAll = false, append = false) {\n if (fetchAll) this.selectedTags = [];\n\n if (!append) {\n this.loading = true;\n this.loaded = false;\n }\n\n const tagCategoryParam = this.selectedTags.map(tag => tag.tag_category_id).join(',');\n\n this.resourceService\n .getPublicPosts(\n this.masterSubscriptionId,\n page,\n append ? 10 : pageSize,\n this.searchTextItems,\n tagCategoryParam\n )\n .subscribe(response => {\n this.objectCount = response.object_count;\n this.posts = append ? [...this.posts, ...response.posts] : response.posts;\n this.data = [...this.posts];\n this.totalRecords = this.posts?.length;\n })\n .add(() => {\n this.loading = false;\n this.loaded = true;\n });\n }\n\n onSearch(seconds: number) {\n let delay = 0;\n delay = seconds * 1000;\n clearTimeout(this.delayTimeout);\n const delayTimeout = setTimeout(() => {\n this.currentPage = 1;\n this.getPosts(1, this.pageSize);\n }, delay);\n\n this.delayTimeout = delayTimeout;\n }\n\n @HostListener('window:scroll', [])\n onWindowScroll(): void {\n const scrollPosition = window.scrollY + window.innerHeight;\n const pageHeight = document.documentElement.scrollHeight;\n\n const nearBottom = scrollPosition >= pageHeight - 100;\n\n if (\n nearBottom &&\n this.posts.length < this.objectCount &&\n !this.loading &&\n !this.scrollLocked\n ) {\n this.scrollLocked = true;\n this.currentPage += 1;\n\n this.getPosts(this.currentPage, this.pageSize, false, true);\n\n setTimeout(() => {\n this.scrollLocked = false;\n }, 500);\n }\n }\n\n isSelected(tagId: number): boolean {\n return this.selectedTags.map(tag => tag.id).includes(tagId);\n }\n\n tagPost(selectedTag) {\n const index = this.selectedTags.findIndex(\n tag => tag.tag_category_id === selectedTag.tag_category_id && tag.id === selectedTag.id\n );\n\n if (index === -1) {\n this.selectedTags.push({\n tag_category_id: selectedTag.tag_category_id,\n id: selectedTag.id\n });\n } else {\n this.selectedTags.splice(index, 1);\n }\n\n this.currentPage = 1;\n this.getPosts(1, this.pageSize);\n }\n\n thisPostReadingTime(text: string): string {\n if (text) {\n const wordsPerMinute = 200;\n const noOfWords = text.split(/\\s/g).length;\n const minutes = noOfWords / wordsPerMinute;\n const readTime = Math.ceil(minutes);\n\n return `${readTime} minute read`;\n }\n\n return '';\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<pw-resource-header></pw-resource-header>\n<div class=\"all-posts py-5\">\n <div class=\"row mt-1 mb-4 px-2\">\n <div class=\"col-md-9\">\n </div>\n <div class=\"col-md-3\">\n <div class=\"text-end mt-0 mt-sm-3 d-flex\">\n <div class=\"search-wrapper position-relative\">\n <i class=\"fa fa-search search-icon\"></i>\n <input type=\"text\" [(ngModel)]=\"searchTextItems\" pInputText size=\"50\" placeholder=\"Search resources...\"\n (input)=\"onSearch(1)\"\n class=\"search-input\" />\n </div>\n </div>\n </div>\n </div>\n <div class=\"row resource-row\">\n <!-- All Resources Card -->\n <div class=\"col-md-3 col-sm-6 mb-4\">\n <div class=\"resource-card d-flex align-items-center p-3\"\n (keydown.enter)=\"getPosts(1, 20, true)\"\n [ngClass]=\"{ 'selected': selectedTags.length === 0 }\"\n (click)=\"getPosts(1, 20, true)\">\n <i class=\"fa fa-layer-group resource-icon me-3\"></i>\n <span class=\"resource-text\">All Resources</span>\n </div>\n </div>\n\n <!-- Dynamic Tags -->\n <div class=\"col-md-3 col-sm-6 mb-4\"\n *ngFor=\"let tag of tags\">\n <div\n class=\"resource-card d-flex align-items-center p-3\"\n (keydown.enter)=\"tagPost(tag)\"\n [ngClass]=\"{ 'selected': isSelected(tag.id) }\"\n (click)=\"tagPost(tag)\">\n <i class=\"fa\" [ngClass]=\"tag.iconClass + ' resource-icon me-3'\"></i>\n <span class=\"resource-text\">{{ tag.name }}</span>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"loading && !loaded\">\n <div class=\"w-100 text-center mt-3\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n </ng-container>\n <ng-container *ngIf=\"posts?.length && !loading\">\n <div>\n <div class=\"blog-list\">\n <div class=\"row mt-4 ms-1 me-1 blog-listing\"\n *ngFor=\"let post of data\">\n <div class=\"col-md-6 col-sm-12 col-xs-12 my-auto\"\n [routerLink]=\"['/resources/view', post.slug]\">\n <div class=\"list-blog-image\">\n <img [src]=\"post.picture?.url\"\n alt=\"Post List\"\n class=\"img-fluid\" />\n </div>\n </div>\n <div class=\"col-md-6 col-sm-12 col-xs-12 px-4 position-relative\">\n <div class=\"mt-4\">\n <div class=\"author mb-3 d-flex\">\n <div class=\"avatar-image\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\">\n <img *ngIf=\"post.author?.avatar\"\n [src]=\"post.author?.avatar[0]?.url\"\n alt=\"Author\" />\n <img *ngIf=\"!post.author?.avatar\"\n src=\"/assets/img/icons/male.png\"\n alt=\"Author\"\n class=\"default-user-image\" />\n </a>\n </div>\n\n <div class=\"author-name ps-2\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\"\n class=\"name\">\n {{ post.author.first_name }}\n <i class=\"fas fa-crown\" aria-hidden=\"true\"></i></a>\n <ul>\n <li>\n <a href=\"javascript:void(0);\">\n {{ post.published_at | date: 'dd/MM/yyyy' }}\n </a>\n </li>\n <li>.</li>\n <li>\n <a href=\"javascript:void(0);\">{{ thisPostReadingTime(post.body) }}\n </a>\n </li>\n </ul>\n </div>\n <div class=\"share-post\">\n <div class=\"dropdown\">\n <a href=\"#\"\n aria-label=\"Post Menu\"\n id=\"dropdownMenuLink\"\n data-bs-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n (keydown.enter)=\"$event.preventDefault(); $event.target.click()\"\n (keydown.space)=\"$event.preventDefault(); $event.target.click()\"\n aria-expanded=\"false\">\n <i class=\"fas fa-ellipsis-v\" aria-hidden=\"true\"></i>\n </a>\n <div class=\"dropdown-menu\"\n aria-labelledby=\"dropdownMenuLink\">\n <a class=\"dropdown-item\"\n href=\"http://www.facebook.com/\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <i class=\"fas fa-share\" aria-hidden=\"true\"></i> Share Post\n </a>\n </div>\n </div>\n </div>\n </div>\n <h4 [routerLink]=\"['/resources/view', post.slug]\"\n class=\"title my-3\">{{ post.title }}</h4>\n <p [routerLink]=\"['/resources/view', post.slug]\"\n class=\"body mb-5 pb-3 post-body-text\">\n {{ post.body | removeHtml: 'quill' | textTruncate: 200 }}\n </p>\n <div class=\"blog-view py-3 blog-list-write-view\">\n <ul class=\"d-flex\">\n <li>{{ post.view !== null ? post.view : '0' }} View</li>\n <li><a [routerLink]=\"['/resources/view', post.slug]\">Write Comment</a></li>\n <li>\n <a [routerLink]=\"['/resources/view', post.slug]\" aria-label=\"Blog\"><i class=\"far fa-heart\" aria-hidden=\"true\"></i></a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!posts?.length && loaded\">\n <pw-no-data [withImage]=\"true\" message=\"We couldn't find any resources.\" > </pw-no-data>\n </ng-container>\n</div>\n","import { Component, Injector, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { CustomToastService } from '@posiwise/common-services';\nimport { RecentPost, Resource, ResourceComment, TOKEN_KEY, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { ResourceService } from '../../../resource.service';\nimport { ResourceBlog } from '../../../shared/models/resource.model';\n\n@Component({\n selector: 'pw-post-read',\n templateUrl: './resources-read.component.html',\n styleUrls: ['./resources-read.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ResourceReadComponent extends AppBaseComponent implements OnInit, OnDestroy {\n post: Resource;\n user: User;\n recentPosts: RecentPost[] = [];\n postComments: ResourceComment[] = [];\n\n slug: string;\n masterSubscriptionId: number;\n\n commentForm: UntypedFormGroup;\n\n userLoggedIn = false;\n buttonBusy = false;\n\n constructor(\n private readonly resourceService: ResourceService,\n private readonly toastr: CustomToastService,\n injector: Injector,\n private readonly sanitizer: DomSanitizer\n ) {\n super(injector);\n this.commentForm = ResourceBlog.getResourcePostsForm();\n }\n\n ngOnInit() {\n this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;\n this.route.params.subscribe(params => {\n this.slug = params['slug'] || '';\n this.getBlogItem(this.slug);\n });\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.userService.getUserInfo().subscribe(data => {\n this.user = data;\n });\n }\n });\n }\n\n readingTime(text: string) {\n if (text) {\n const textContent = text.toString();\n const wordsPerMinute = 200;\n const noOfWords = textContent.split(/\\s/g).length;\n const minutes = noOfWords / wordsPerMinute;\n const readTime = Math.ceil(minutes);\n\n return `${readTime} minute read`;\n }\n\n return '';\n }\n\n handleImageError(event: Event, fallbackPath): void {\n HelperService.handleImageFallbackPath(event, fallbackPath);\n }\n\n private getBlogItem(slug: string) {\n this.resourceService.getPostBySlug(slug).subscribe(response => {\n let blogBody;\n if (response?.body) {\n blogBody = HelperService.sanitizeQuillBody(response.body, this.sanitizer);\n }\n this.post = { ...response, body: blogBody };\n this.postComments = response.entity_comments;\n this.getPosts(1, 4);\n });\n }\n\n private getPosts(page: number, pageSize: number) {\n this.resourceService\n .getPublicPosts(this.masterSubscriptionId, page, pageSize, '')\n .subscribe(response => {\n this.recentPosts = response.posts.filter(post => post.slug !== this.post.slug);\n });\n }\n\n onComment() {\n this.buttonBusy = true;\n const data = { ...this.commentForm.value };\n data.related_entity_id = this.post?.id;\n data.related_entity_type = 'Post';\n data.user_id = this.user?.id;\n this.resourceService\n .postComments(data)\n .subscribe(() => {\n this.getBlogItem(this.slug);\n this.commentForm.reset();\n this.toastr.success(this.translation.translate('Resource.Posts.CommentAdded'));\n })\n .add(() => {\n this.buttonBusy = false;\n });\n }\n\n tagPost(selectedTag) {\n this.recentPosts = this.recentPosts.filter(element => {\n let filtered;\n if (element.tags?.length) {\n filtered = element.tags.filter(\n tag => tag.tag_category_id === selectedTag.tag_category_id\n );\n\n return { element, filtered };\n }\n\n return {};\n });\n }\n\n trackByTagId(_index: number, item: { id: number }) {\n return item.id;\n }\n\n trackByRecentPost(_index: number, item: { id: number }) {\n return item.id;\n }\n\n trackByComment(_index: number, item: { id: number }) {\n return item.id;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<pw-header/>\n<div class=\"read-post mt-5 pt-5\">\n <div class=\"show-blog\">\n <div class=\"row\">\n <!-- content -->\n <div class=\"col-12\">\n <ul class=\"d-flex align-items-center mb-4 position-relative\">\n <li>\n <a href=\"javascript:void(0);\">\n <div class=\"avatar-image\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\">\n <img *ngIf=\"post?.author?.avatar\"\n [src]=\"post?.author?.avatar[0].url\"\n alt=\"author\" />\n <img *ngIf=\"!post?.author?.avatar\"\n height=\"45\"\n width=\"45\"\n src=\"/assets/img/icons/male.png\"\n alt=\"author\" /></a>\n </div>\n </a>\n </li>\n <li>\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\"\n class=\"name\">\n {{ post?.author?.first_name }}\n <i class=\"fas fa-crown\" aria-hidden=\"true\"></i></a>\n </li>\n <li>\n <a class=\"text-dark\"\n href=\"javascript:void(0);\">{{\n post?.author.published_at\n }}</a>\n </li>\n <li>.</li>\n <li>\n <a class=\"text-dark\"\n href=\"javascript:void(0);\">\n {{ readingTime(post?.body) }}\n </a>\n </li>\n <li class=\"social-media\">\n <div class=\"share-post\">\n <div class=\"dropdown\">\n <a href=\"#\"\n id=\"dropdownMenuLink2\"\n data-bs-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-label=\"Menu\"\n (keydown.enter)=\"$event.preventDefault(); $event.target.click()\"\n (keydown.space)=\"$event.preventDefault(); $event.target.click()\"\n aria-expanded=\"false\">\n <i class=\"fas fa-ellipsis-v\" aria-hidden=\"true\"></i>\n </a>\n\n <div class=\"dropdown-menu\"\n aria-labelledby=\"dropdownMenuLink2\">\n <a data-bs-toggle=\"modal\"\n data-bs-target=\"#exampleModal\"\n class=\"dropdown-item\"\n href=\"javascript:void(0);\">\n <i class=\"fas fa-share\" aria-hidden=\"true\"></i> Share Post\n </a>\n </div>\n </div>\n </div>\n </li>\n </ul>\n <h2 class=\"mb-3\">{{ post?.title }}</h2>\n <div class=\"ql-snow body-quill\"\n >\n <div class=\"ql-editor body post-body-text\"\n [innerHTML]=\"post?.body\">\n </div>\n </div>\n\n <ul class=\"bottom-social-icons d-flex justify-content-between mt-5 border-top border-bottom py-3\">\n <li class=\"social-media-blog-page\">\n <div class=\"share-post\">\n <div class=\"dropdown\">\n <a href=\"#\"\n aria-label=\"Menu\"\n (keydown.enter)=\"$event.preventDefault(); $event.target.click()\"\n (keydown.space)=\"$event.preventDefault(); $event.target.click()\"\n id=\"dropdownMenuLink\"\n data-bs-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\">\n <i class=\"fas fa-ellipsis-v\" aria-hidden=\"true\"></i>\n </a>\n\n <div class=\"dropdown-menu\"\n aria-labelledby=\"dropdownMenuLink\">\n <a data-bs-toggle=\"modal\"\n data-bs-target=\"#exampleModal\"\n class=\"dropdown-item\"\n href=\"javascript:void(0);\">\n <i class=\"fas fa-share\" aria-hidden=\"true\"></i> Share Post\n </a>\n </div>\n </div>\n </div>\n </li>\n <li>\n <ul>\n <li *ngFor=\"let tag of post?.tags; trackBy: trackByTagId\"\n (keydown.enter)=\"tagPost(tag)\"\n (click)=\"tagPost(tag)\">\n {{ tag.name }}\n </li>\n </ul>\n </li>\n </ul>\n <ul class=\"d-flex justify-content-between mt-3 views\">\n <li>\n <span>{{ post?.view || 0 }} views</span>\n </li>\n <li><i class=\"far fa-heart\" aria-hidden=\"true\"></i></li>\n </ul>\n </div>\n <!--content end -->\n </div>\n <!-- modal for share buttons -->\n <div class=\"modal fade\"\n id=\"exampleModal\"\n tabindex=\"-1\"\n aria-labelledby=\"exampleModalLabel\">\n <div class=\"modal-dialog modal-dialog-centered\" >\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\"\n id=\"exampleModalLabel\">Share the post</h5>\n <button type=\"button\"\n class=\"btn-close float-end\"\n data-dismiss=\"modal\"\n aria-label=\"Close\">\n <span>&times;</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <share-buttons theme=\"material-dark\"\n show=\"7\"></share-buttons>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-primary\"\n data-dismiss=\"modal\">\n Close\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- recent posts -->\n <div class=\"related-posts mt-5\">\n <ul class=\"d-flex justify-content-between\">\n <li>\n <h5>Recent Resources</h5>\n </li>\n <li><a [routerLink]=\"['/resources/view']\">See All</a></li>\n </ul>\n <div class=\"row mt-4\">\n <div class=\"col-sm-6 col-md-6 col-lg-4 col-xs-12 mb-2\"\n *ngFor=\"let recentPost of recentPosts; trackBy: trackByRecentPost\">\n <div class=\"recent-post\"\n [routerLink]=\"['/resources/view', recentPost.slug]\">\n <div class=\"blog-image\">\n <img [src]=\"recentPost.picture.url\"\n alt=\"Resource\" />\n </div>\n <h5 class=\"pt-4 blog-title ps-3 pe-3\">{{ recentPost?.title }}</h5>\n <div class=\"blog-view pt-3 ps-3 pe-3\">\n <p>{{ recentPost.view !== null ? recentPost.view : '0' }} View</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row mt-5 mb-4\">\n <div class=\"col-12\">\n <form class=\"comments-sec\"\n [formGroup]=\"commentForm\"\n (ngSubmit)=\"onComment()\"\n *ngIf=\"userLoggedIn; else userLoggedOut\">\n <div class=\"col-12 pt-4\">\n <!-- Comment Massage -->\n <pw-input-container label=\"Write a response\"\n name=\"comment\"\n errorMsg=\"Please enter comment\">\n <textarea type=\"text\"\n class=\"form-control\"\n formControlName=\"comment\"></textarea>\n </pw-input-container>\n\n <div class=\"text-end mt-4\">\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <ng-template #userLoggedOut>\n <p class=\"text-center pt-3 pb-3 user-not-logged-in\">\n <a [routerLink]=\"['/login']\">Log in</a>\n to leave a comment!\n </p>\n </ng-template>\n </div>\n </div>\n <div class=\"row mt-5 mb-5\">\n <div class=\"col-12\"\n *ngFor=\"let comment of postComments; trackBy: trackByComment\">\n <div class=\"comment-post mt-2\">\n <img *ngIf=\"comment?.user?.avatar\"\n [src]=\"comment.user?.avatar[0]?.url\"\n alt=\"avatar\"\n width=\"45\"\n height=\"45\"\n class=\"rounded-circle me-3 mb-2\"\n (error)=\"handleImageError($event, 'assets/img/icons/male.png')\" />\n <img *ngIf=\"!comment?.user?.avatar\"\n alt=\"avatar\"\n width=\"45\"\n height=\"45\"\n class=\"rounded-circle me-3 mb-2\"\n src=\"assets/img/icons/male.png\" />\n <small>{{ comment.user?.first_name ? comment.user?.first_name : '' }}\n {{ comment.user?.last_name ? comment.user?.last_name : '' }}\n </small>\n <p>{{ comment.comment }}</p>\n <p class=\"text-end comment-date\">{{ comment.created_at | date: 'dd/MM/yyyy' }}</p>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { TOKEN_KEY } from '@posiwise/common-utilities';\n\nimport { ResourceService } from '../../../resource.service';\n\n@Component({\n selector: 'pw-resource-blog',\n templateUrl: './white-papers.component.html',\n styleUrls: [\n './white-papers.component.scss',\n '../resources/resources-shared.component.scss',\n '../resource-post/related-resources/related-resources.component.scss'\n ]\n})\nexport class WhitePaperComponent extends AppBaseComponent implements OnInit {\n subscriptionId: number;\n masterSubscriptionId: number;\n posts = [];\n userLoggedIn: boolean;\n blogPostTag;\n\n constructor(\n private readonly resourceService: ResourceService,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(response => {\n this.subscriptionId = response;\n });\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.subscriptionId = data?.subscriptionId;\n console.log(this.subscriptionId);\n this.getPostTags();\n });\n }\n });\n }\n\n private getPostTags() {\n this.tagService\n .getTagsByType('post_categories', {}, this.subscriptionId || this.masterSubscriptionId)\n .subscribe(response => {\n this.blogPostTag = response.tags.find(tag => tag.name === 'White Papers');\n this.getPosts(1, 100);\n });\n }\n\n getPosts(page: number, pageSize: number) {\n console.log(this.blogPostTag);\n this.resourceService\n .getPublicPosts(\n this.subscriptionId,\n page,\n pageSize,\n '',\n this.blogPostTag.tag_category_id\n )\n .subscribe(response => {\n console.log(response.posts, this.blogPostTag);\n this.posts = response.posts\n .filter(post =>\n post.tags?.some(\n tag => tag.tag_category_id === this.blogPostTag.tag_category_id\n )\n )\n .sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n )\n .slice(0, 12);\n });\n }\n}\n","<pw-resource-header></pw-resource-header>\n\n<section class=\"bg-white pricing-section\">\n <div class=\"nce-banner\">\n <div class=\"container d-flex flex-column flex-lg-row align-items-center justify-content-between\">\n\n <!-- Left Content -->\n <div class=\"text-content\">\n <div class=\"nce-heading\">\n <h1 class=\"nce-header mb-4\">\n Whitepapers & Tools\n <span class=\"blue-text\"></span>\n </h1>\n </div>\n </div>\n\n <!-- Add directly below .text-content, still inside .container -->\n <div class=\"text-extension mt-4\">\n <p class=\"intro\">\n If you like your insights practical and<br>your downloads actually useful - you’re<br>in the right place.\n </p>\n <div class=\"cta-buttons d-flex gap-3 flex-wrap mt-3\">\n <p class=\"intro\">\n From strategy-packed whitepapers to<br>\n ready-to-use guides and quizzes,<br>\n everything here is designed to help<br>\n MSPs sharpen their processes, plug<br>\n profit leaks, and scale with confidence.\n </p>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"image-content ms-lg-5 mt-5 mt-lg-0\">\n <img class=\"nce-math-img\"\n src=\"/assets/img/resource/math.png\"\n alt=\"NCEasy laptop screen\" />\n <img class=\"nce-laptop-img\"\n src=\"/assets/img/resource/white-paper-women.png\"\n alt=\"NCEasy laptop screen\" />\n </div>\n\n </div>\n </div>\n <hr class=\"nce-divider\" />\n</section>\n\n<pw-resource--vault></pw-resource--vault>\n\n<pw-trial-4-contact-us></pw-trial-4-contact-us>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { ResourceBlogComponent } from './components/resource-blogs/resource-blog.component';\nimport { ResourceCaseStudiesComponent } from './components/resource-case-studies/resource-case-studies.component';\nimport { ResourceIntegrationComponent } from './components/resource-integration/resource-integration.component';\nimport { ResourcePostComponent } from './components/resource-post/resource-post.component';\nimport { ResourceReleaseNoteComponent } from './components/resource-release-notes/resource-release-notes.component';\nimport { ResourceVideoComponent } from './components/resource-videos/resource-videos.component';\nimport { ResourceWebinarComponent } from './components/resource-webinars/resource-webinars.component';\nimport { ResourceComponent } from './components/resources/resources.component';\nimport { ResourceHubComponent } from './components/resources-hub/resources-hub.component';\nimport { WhitePaperComponent } from './components/white-papers/white-papers.component';\n\n// These are the private routes. The public routes and modules needs to be defined in public.routes.ts\nconst routes: Routes = [\n {\n path: '',\n component: ResourceComponent,\n data: {\n title: 'Resources Library',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'hub',\n component: ResourceHubComponent,\n data: {\n title: 'Resources - Hub',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'blogs',\n component: ResourceBlogComponent,\n data: {\n title: 'Resources - Blogs',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'videos',\n component: ResourceVideoComponent,\n data: {\n title: 'Resources - Videos',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'integrations',\n component: ResourceIntegrationComponent,\n data: {\n title: 'Resources - Integrations',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'release-notes',\n component: ResourceReleaseNoteComponent,\n data: {\n title: 'Resources - Release Notes',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'events',\n component: ResourceWebinarComponent,\n data: {\n title: 'Resources - Events',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'white-papers',\n component: WhitePaperComponent,\n data: {\n title: 'Resources - White Papers',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'case-studies',\n component: ResourceCaseStudiesComponent,\n data: {\n title: 'Resources - Case Studies',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'view/:slug',\n component: ResourcePostComponent,\n data: {\n title: 'Resources - Post',\n permission: 'Pages.Blog'\n }\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class BlogPublicRoutingModule {}\n","import { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { AlphaPublicModule } from '@posiwise/alpha-module';\nimport { GoogleAnalyticsService } from '@posiwise/common-services';\nimport { CoreTranslocoModule } from '@posiwise/core-transloco';\nimport { DirectivesModule } from '@posiwise/directives';\nimport { PipesModule } from '@posiwise/pipes';\nimport { PublicModule } from '@posiwise/public-modules';\nimport { SharedComponentsModule } from '@posiwise/shared-components';\n\nimport { QuillModule } from 'ngx-quill';\nimport { ShareButtonsModule } from 'ngx-sharebuttons/buttons';\nimport { ShareIconsModule } from 'ngx-sharebuttons/icons';\nimport { NgxUploaderModule } from 'ngx-uploader';\nimport { DropdownModule } from 'primeng/dropdown';\n\nimport { TranslocoModule } from '@jsverse/transloco';\n\nimport { ResourceService } from '../resource.service';\n\nimport { ResourceNoteCardComponent } from './components/reslease-note-card/release-note-card.component';\nimport { ResourceBlogComponent } from './components/resource-blogs/resource-blog.component';\nimport { ResourceCardListComponent } from './components/resource-card-list/resource-card-list.component';\nimport { CaseStudyCardComponent } from './components/resource-case-studies/case-studies-cards/case-studies-cards.component';\nimport { ResourceCaseStudiesComponent } from './components/resource-case-studies/resource-case-studies.component';\nimport { ResourceCompanyCardComponent } from './components/resource-company-card/resource-company-card.component';\nimport { ResourceIntegrationComponent } from './components/resource-integration/resource-integration.component';\nimport { RelatedResourcesComponent } from './components/resource-post/related-resources/related-resources.component';\nimport { ResourceCardComponent } from './components/resource-post/related-resources/resource-cards/resource-cards.component';\nimport { ResourcePostComponent } from './components/resource-post/resource-post.component';\nimport { ResourcePostDetailsComponent } from './components/resource-post/resource-post-details/resource-post-details.component';\nimport { ResourceReleaseNoteComponent } from './components/resource-release-notes/resource-release-notes.component';\nimport { ResourceVaultComponent } from './components/resource-vault/resource-vault.component';\nimport { ResourceVideoCardComponent } from './components/resource-videos/resource-video-cards/resource-video-cards.component';\nimport { ResourceVideoComponent } from './components/resource-videos/resource-videos.component';\nimport { ReplayEventCardComponent } from './components/resource-webinars/replay-event-cards/replay-event-cards.component';\nimport { ResourceWebinarComponent } from './components/resource-webinars/resource-webinars.component';\nimport { UpcomingEventCardComponent } from './components/resource-webinars/upcoming-event-cards/upcoming-event-cards.component';\nimport { ResourceTagComponent } from './components/resources/resource-tags/resource-tags.component';\nimport { ResourceComponent } from './components/resources/resources.component';\nimport { VaultSectionComponent } from './components/resources/vault-section/vault-section.component';\nimport { ResourceHubComponent } from './components/resources-hub/resources-hub.component';\nimport { ResourceReadComponent } from './components/resources-read/resources-read.component';\nimport { TestimonialCardListComponent } from './components/testimonial-card/testimonial-card.component';\nimport { WhitePaperComponent } from './components/white-papers/white-papers.component';\nimport { BlogPublicRoutingModule } from './resource-public.routing.module';\n\n@NgModule({\n declarations: [\n ResourceHubComponent,\n ResourceTagComponent,\n ResourceReadComponent,\n VaultSectionComponent,\n ResourceComponent,\n ResourcePostComponent,\n RelatedResourcesComponent,\n ResourceCardComponent,\n ResourcePostDetailsComponent,\n ResourceBlogComponent,\n ResourceVideoComponent,\n ResourceIntegrationComponent,\n ResourceReleaseNoteComponent,\n ResourceWebinarComponent,\n WhitePaperComponent,\n ResourceCaseStudiesComponent,\n ResourceCardListComponent,\n TestimonialCardListComponent,\n ResourceNoteCardComponent,\n ResourceCompanyCardComponent,\n ResourceVaultComponent,\n ResourceVideoCardComponent,\n UpcomingEventCardComponent,\n ReplayEventCardComponent,\n CaseStudyCardComponent\n ],\n imports: [\n CommonModule,\n PipesModule,\n AlphaPublicModule,\n DropdownModule,\n SharedComponentsModule,\n NgxUploaderModule,\n BlogPublicRoutingModule,\n ShareButtonsModule,\n PublicModule,\n ShareIconsModule,\n QuillModule.forRoot(),\n FormsModule,\n CoreTranslocoModule,\n TranslocoModule,\n ReactiveFormsModule,\n DirectivesModule\n ],\n providers: [ResourceService, GoogleAnalyticsService],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class ResourcePublicModule {}\n","import { NgModule } from '@angular/core';\n\nimport { ResourcePublicModule } from './public/resource-public.module';\n\n@NgModule({\n imports: [ResourcePublicModule]\n})\nexport class ResourceModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i1.ResourceService","i3","i5","i6.ResourceCardListComponent","i4","i6.TestimonialCardListComponent","i7.CaseStudyCardComponent","i6","i7.ResourceNoteCardComponent","i8.ResourceCompanyCardComponent","i8","i5.RelatedResourcesComponent","i6.ResourcePostDetailsComponent","i6.ResourceNoteCardComponent","i6.ResourceVideoCardComponent","i6.UpcomingEventCardComponent","i7.ReplayEventCardComponent","i3.ResourceTagComponent","i4.VaultSectionComponent","i5.ResourceCardComponent","i7.ResourceVaultComponent","i8.ResourceVideoCardComponent","i9.UpcomingEventCardComponent","i10.CaseStudyCardComponent","i9","i7","i10","i6.ResourceVaultComponent"],"mappings":"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"}
1
+ {"version":3,"file":"posiwise-resource-module.mjs","sources":["../../../../libs/resource-module/src/lib/resource.service.ts","../../../../libs/resource-module/src/lib/public/components/reslease-note-card/release-note-card.component.ts","../../../../libs/resource-module/src/lib/public/components/reslease-note-card/release-note-card.component.html","../../../../libs/resource-module/src/lib/public/components/resource-card-list/resource-card-list.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-card-list/resource-card-list.component.html","../../../../libs/resource-module/src/lib/public/components/resource-blogs/resource-blog.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-blogs/resource-blog.component.html","../../../../libs/resource-module/src/lib/public/components/resource-case-studies/case-studies-cards/case-studies-cards.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-case-studies/case-studies-cards/case-studies-cards.component.html","../../../../libs/resource-module/src/lib/public/components/testimonial-card/testimonial-card.component.ts","../../../../libs/resource-module/src/lib/public/components/testimonial-card/testimonial-card.component.html","../../../../libs/resource-module/src/lib/public/components/resource-case-studies/resource-case-studies.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-case-studies/resource-case-studies.component.html","../../../../libs/resource-module/src/lib/public/components/resource-company-card/resource-company-card.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-company-card/resource-company-card.component.html","../../../../libs/resource-module/src/lib/public/components/resource-integration/resource-integration.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-integration/resource-integration.component.html","../../../../libs/resource-module/src/lib/shared/models/resource.model.ts","../../../../libs/resource-module/src/lib/public/components/resource-post/related-resources/related-resources.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-post/related-resources/related-resources.component.html","../../../../libs/resource-module/src/lib/public/components/resource-post/related-resources/resource-cards/resource-cards.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-post/related-resources/resource-cards/resource-cards.component.html","../../../../libs/resource-module/src/lib/public/components/resource-post/resource-post-details/resource-post-details.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-post/resource-post-details/resource-post-details.component.html","../../../../libs/resource-module/src/lib/public/components/resource-post/resource-post.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-post/resource-post.component.html","../../../../libs/resource-module/src/lib/public/components/resource-release-notes/resource-release-notes.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-release-notes/resource-release-notes.component.html","../../../../libs/resource-module/src/lib/public/components/resource-vault/resource-vault.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-vault/resource-vault.component.html","../../../../libs/resource-module/src/lib/public/components/resource-videos/resource-video-cards/resource-video-cards.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-videos/resource-video-cards/resource-video-cards.component.html","../../../../libs/resource-module/src/lib/public/components/resource-videos/resource-videos.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-videos/resource-videos.component.html","../../../../libs/resource-module/src/lib/public/components/resource-webinars/replay-event-cards/replay-event-cards.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-webinars/replay-event-cards/replay-event-cards.component.html","../../../../libs/resource-module/src/lib/public/components/resource-webinars/upcoming-event-cards/upcoming-event-cards.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-webinars/upcoming-event-cards/upcoming-event-cards.component.html","../../../../libs/resource-module/src/lib/public/components/resource-webinars/resource-webinars.component.ts","../../../../libs/resource-module/src/lib/public/components/resource-webinars/resource-webinars.component.html","../../../../libs/resource-module/src/lib/public/components/resources/resource-tags/resource-tags.component.ts","../../../../libs/resource-module/src/lib/public/components/resources/resource-tags/resource-tags.component.html","../../../../libs/resource-module/src/lib/public/components/resources/vault-section/vault-section.component.ts","../../../../libs/resource-module/src/lib/public/components/resources/vault-section/vault-section.component.html","../../../../libs/resource-module/src/lib/public/components/resources/resources.component.ts","../../../../libs/resource-module/src/lib/public/components/resources/resources.component.html","../../../../libs/resource-module/src/lib/public/components/resources-hub/resources-hub.component.ts","../../../../libs/resource-module/src/lib/public/components/resources-hub/resources-hub.component.html","../../../../libs/resource-module/src/lib/public/components/resources-read/resources-read.component.ts","../../../../libs/resource-module/src/lib/public/components/resources-read/resources-read.component.html","../../../../libs/resource-module/src/lib/public/components/white-papers/white-papers.component.ts","../../../../libs/resource-module/src/lib/public/components/white-papers/white-papers.component.html","../../../../libs/resource-module/src/lib/public/resource-public.routing.module.ts","../../../../libs/resource-module/src/lib/public/resource-public.module.ts","../../../../libs/resource-module/src/lib/resource.module.ts","../../../../libs/resource-module/src/posiwise-resource-module.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { MainApiHttpService } from '@posiwise/common-services';\nimport { Paging } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\n@Injectable()\nexport class ResourceService {\n private readonly resource = '/posts';\n\n private readonly comments = '/comments';\n\n constructor(private readonly api: MainApiHttpService) {}\n\n getPublicPosts(\n master_subscription_id,\n page: number,\n pageSize: number,\n search: string,\n tagCategoryIds?: string\n ) {\n const params = {\n page,\n page_size: pageSize,\n search: search,\n master_subscription_id\n };\n\n if (tagCategoryIds) {\n params['tag_category_ids'] = tagCategoryIds;\n }\n return this.api.getWithParams(`${this.resource}/get_all`, {\n ...params\n });\n }\n\n getAdminPosts(subscriptionId, paging?: Paging) {\n return this.api.getWithParams(`${this.resource}/admin_get_all`, {\n ...HelperService.getPagingParams(paging),\n subscription_id: subscriptionId\n });\n }\n\n addPost(post) {\n const formData = new FormData();\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in post) {\n if (key in post) {\n formData.append(key, post[key]);\n }\n }\n\n return this.api.post(this.resource, formData);\n }\n\n getPostBySlug(slug: string) {\n return this.api.get(`${this.resource}/${slug}`);\n }\n\n deletePost(id) {\n return this.api.delete(`${this.resource}/${id}`);\n }\n\n updatePost(post, id) {\n const formData = new FormData();\n\n // eslint-disable-next-line no-restricted-syntax\n for (const key in post) {\n if (key in post) {\n formData.append(key, post[key]);\n }\n }\n\n return this.api.put(`${this.resource}/${id}`, formData);\n }\n\n private getComments() {\n return this.api.get(`${this.comments}/get_all`);\n }\n\n postComments(post) {\n return this.api.post(this.comments, post);\n }\n\n getResourceInsight(subscription_id, starting_at?: string, ending_at?: string) {\n return this.api.getWithParams(\n `/admin/posts_analytics?type=views&subscription_id=${subscription_id}`,\n { starting_at, ending_at }\n );\n }\n\n getResourcePostsInsight(id) {\n return this.api.get(`${this.resource}/${id}/insights`);\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pw-resource-note-card',\n templateUrl: './release-note-card.component.html',\n styleUrls: [\n './release-note-card.component.scss',\n '../resource-post/related-resources/related-resources.component.scss'\n ]\n})\nexport class ResourceNoteCardComponent {\n @Input() posts = [];\n @Input() releaseHeader = false;\n\n q1NotesLink = '/resources/release-notes';\n q3NotesLink = '/resources/release-notes';\n q4NotesLink = '/resources/release-notes';\n releaseNotesLink = '/resources/release-notes';\n}\n","<section class=\"release-notes-section bg-white py-5 section-outer\">\n <div class=\"text-center container\">\n\n <div *ngIf=\"releaseHeader\" class=\"d-flex release-section align-items-center w-100 mb-5 flex-wrap\">\n <h2 class=\"release-heading\">Product Release Notes</h2>\n <a class=\"view-all-link\"\n [routerLink]=\"releaseNotesLink\">VIEW ALL ></a>\n </div>\n\n <div class=\"row justify-content-center card-row\">\n <div class=\"release-card\">\n <div class=\"release-header\">\n <p class=\"quarter\">Q2 - 2024</p>\n <p class=\"title\"><strong>Product Release Notes</strong></p>\n <p class=\"desc\">New features & system<br />improvements</p>\n </div>\n <img src=\"/assets/img/resource/rocket-box.png\"\n alt=\"Release Icon\"\n class=\"release-icon mb-4\" />\n <button class=\"release-btn\"\n [routerLink]=\"q3NotesLink\">Read now <span class=\"arrow\">→</span></button>\n </div>\n\n <div class=\"release-card highlighted\">\n <div class=\"release-header q2-icon\">\n <p class=\"quarter\">Q1 - 2024</p>\n <p class=\"title\"><strong>Major Release:</strong></p>\n <p class=\"desc\">CloudOlive Groupings</p>\n </div>\n <img src=\"/assets/img/resource/rocket-box.png\"\n alt=\"Release Icon\"\n class=\"release-icon mb-4\" />\n <button class=\"release-btn\"\n [routerLink]=\"q4NotesLink\">Read now <span class=\"arrow\">→</span></button>\n </div>\n\n <div class=\"release-card\">\n <div class=\"release-header\">\n <p class=\"quarter\">Q4 - 2023</p>\n <p class=\"title\"><strong>Product Release Notes</strong></p>\n <p class=\"desc\">New features & system<br />improvements</p>\n </div>\n <img src=\"/assets/img/resource/rocket-box.png\"\n alt=\"Release Icon\"\n class=\"release-icon mb-4\" />\n <button class=\"release-btn\"\n [routerLink]=\"q1NotesLink\">Read now <span class=\"arrow\">→</span></button>\n </div>\n </div>\n </div>\n</section>","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pw-resource-card-list',\n templateUrl: './resource-card-list.component.html',\n styleUrls: ['../resource-post/related-resources/related-resources.component.scss']\n})\nexport class ResourceCardListComponent {\n @Input() posts = [];\n @Input() postHeader = '';\n}\n","<section class=\"resource-section bg-white\">\n <div class=\"container\">\n <div *ngIf=\"postHeader\" class=\"d-flex justify-content-between align-items-center flex-wrap mb-3\">\n <h2 class=\"section-heading\">{{postHeader}}</h2>\n </div>\n <div class=\"row mt-4 cards-row\">\n <div class=\"col-lg-4 col-md-6 mb-4\" *ngFor=\"let post of this.posts; let i = index\" [ngClass]=\"{ 'mt-5': i > 2 }\">\n <div class=\"resource-card\">\n <p class=\"resource-title\">{{ post.title }}</p>\n <img [src]=\"post.picture.url\" class=\"resource-image mt-4\" [alt]=\"\" />\n <a *ngIf=\"post?.external_url; else internalLink\"\n class=\"read-now-btn\"\n [href]=\"post.external_url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"arrow\">→</span>\n </a>\n\n <ng-template #internalLink>\n <a class=\"read-now-btn\" [routerLink]=\"['/resources/view', post?.slug]\">\n <span>{{ post?.cta_text && post.cta_text !== 'null' ? post.cta_text : 'Read Now' }}</span>\n <span class=\"arrow\">→</span>\n </a>\n </ng-template>\n\n </div>\n </div>\n </div>\n </div>\n </section>","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { TOKEN_KEY } from '@posiwise/common-utilities';\n\nimport { ResourceService } from '../../../resource.service';\n\n@Component({\n selector: 'pw-resource-blog',\n templateUrl: './resource-blog.component.html',\n styleUrls: [\n './resource-blog.component.scss',\n '../resources/resources-shared.component.scss',\n '../resource-post/related-resources/related-resources.component.scss'\n ]\n})\nexport class ResourceBlogComponent extends AppBaseComponent implements OnInit {\n subscriptionId: number;\n masterSubscriptionId = this.appConfig.master_subscription.subscription_id;\n posts = [];\n userLoggedIn: boolean;\n blogPostTag;\n\n constructor(\n private readonly resourceService: ResourceService,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(response => {\n this.subscriptionId = response;\n });\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.subscriptionId = data?.subscriptionId;\n console.log(this.subscriptionId);\n });\n }\n this.getPostTags();\n });\n }\n\n private getPostTags() {\n this.tagService\n .getTagsByType('post_categories', {}, this.subscriptionId || this.masterSubscriptionId)\n .subscribe(response => {\n this.blogPostTag = response.tags.find(tag => tag.name === 'Blog Posts');\n this.getPosts(1, 100);\n });\n }\n\n getPosts(page: number, pageSize: number) {\n console.log(this.blogPostTag);\n this.resourceService\n .getPublicPosts(\n this.subscriptionId || this.masterSubscriptionId,\n page,\n pageSize,\n '',\n this.blogPostTag.tag_category_id\n )\n .subscribe(response => {\n console.log(response.posts, this.blogPostTag);\n this.posts = response.posts\n .filter(post =>\n post.tags?.some(\n tag => tag.tag_category_id === this.blogPostTag.tag_category_id\n )\n )\n .sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n )\n .slice(0, 12);\n });\n }\n}\n","<pw-resource-header></pw-resource-header>\n\n<section class=\"bg-white pricing-section\">\n <div class=\"nce-banner\">\n <div class=\"container d-flex flex-column flex-lg-row align-items-center justify-content-between\">\n\n <!-- Left Content -->\n <div class=\"text-content\">\n <div class=\"nce-heading\">\n <h1 class=\"nce-header mb-4\">\n Blogs for MSPs\n <span class=\"blue-text\"></span>\n </h1>\n </div>\n </div>\n\n <!-- Add directly below .text-content, still inside .container -->\n <div class=\"text-extension mt-4\">\n <p class=\"intro\">\n Our team have decades of<br>experience in the IT channel,<br>and work with hundreds of<br>MSPs globally.\n </p>\n <div class=\"cta-buttons d-flex gap-3 flex-wrap mt-3\">\n <p class=\"intro\">\n Here, we share our insights,<br>learnings &amp; the occasional<br>meme.\n </p>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"image-content ms-lg-5 mt-5 mt-lg-0\">\n <img class=\"nce-math-img\"\n src=\"/assets/img/resource/math.png\"\n alt=\"NCEasy laptop screen\" />\n <img class=\"nce-laptop-img\"\n src=\"/assets/img/resource/msp-man.png\"\n alt=\"NCEasy laptop screen\" />\n </div>\n\n </div>\n </div>\n <hr class=\"nce-divider\" />\n</section>\n\n<pw-resource-card-list [posts]=\"posts\"></pw-resource-card-list>\n\n<pw-trial-4-contact-us></pw-trial-4-contact-us>\n","import { Component, Injector, Input } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\n\n@Component({\n selector: 'pw-case-studies-card',\n templateUrl: './case-studies-cards.component.html',\n styleUrls: ['./case-studies-cards.component.scss']\n})\nexport class CaseStudyCardComponent extends AppBaseComponent {\n @Input() showCaseStudyHeader = false;\n constructor(\n private readonly sanitizer: DomSanitizer,\n injector: Injector\n ) {\n super(injector);\n }\n}\n","<section class=\"msp-vault-section bg-white text-center py-5 extra-top-padding section-outer\" id=\"msp-case-studies\">\n <div class=\"container\">\n <div *ngIf=\"showCaseStudyHeader\" class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading\" id=\"msp-case-studies\">MSP Case Studies</h2>\n <a class=\"view-all\" routerLink=\"/resources/case-studies\">VIEW ALL ></a>\n </div>\n <div *ngIf=\"!showCaseStudyHeader\" class=\"d-md-flex justify-content-between align-items-start\">\n <div class=\"vault-header\">\n <h2 class=\"vault-heading\">Case Studies</h2>\n </div>\n </div>\n\n <div class=\"row mt-5 video-row justify-content-center\">\n <div class=\"col-md-6 col-lg-4 mb-4\">\n <div class=\"testimonial-box\">\n <!-- TOP LOGO -->\n <img src=\"/assets/img/logos/clients/it-partners.png\"\n alt=\"IT Partners Logo\"\n class=\"company-logo mb-3\" />\n\n <!-- TEXT -->\n <p class=\"mb-3 testimonial-section\">\n <strong>Leveraged CloudOlive to:</strong><br />\n Find $10k MRR growth<br />\n Save 3–4 days monthly<br />\n Avoid a finance re-hire\n </p>\n\n <!-- BOTTOM AVATAR -->\n <div class=\"avatar-container mb-5\">\n <img src=\"/assets/img/resource/user-it-partners.png\"\n alt=\"User Avatar\"\n class=\"testimonial-avatar\" />\n <a class=\"read-more-btn-overlay\"\n routerLink=\"/resources/view/case-study-it-partners\">\n <span class=\"text\">Read now</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n </div>\n\n </div>\n <div class=\"col-md-6 col-lg-4 mb-4\">\n <div class=\"testimonial-box\">\n <!-- TOP LOGO -->\n <img src=\"/assets/img/logos/clients/blue-arc.png\"\n alt=\"IT Partners Logo\"\n class=\"company-logo mb-3\" />\n\n <!-- TEXT -->\n <p class=\"mb-3 testimonial-section\">\n <strong>Leveraged CloudOlive to:</strong><br />\n Find $4.6k MRR growth<br />\n Save 1 day per month<br />\n Peace of mind\n </p>\n\n <div class=\"avatar-container mb-5\">\n <img src=\"/assets/img/resource/user-blue-arc.png\"\n alt=\"User Avatar\"\n class=\"testimonial-avatar\" />\n <a class=\"read-more-btn-overlay\"\n routerLink=\"/resources/view/case-study-blue-arc-it-solutions\">\n <span class=\"text\">Read now</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-6 col-lg-4 mb-4\">\n <div class=\"testimonial-box\">\n <!-- TOP LOGO -->\n <img src=\"/assets/img/logos/clients/huon-it.png\"\n alt=\"IT Partners Logo\"\n class=\"company-logo mb-3\" />\n\n <!-- TEXT -->\n <p class=\"mb-3 testimonial-section\">\n <strong>Leveraged CloudOlive to:</strong><br />\n Cut monthly Microsoft<br />\n reconciliation time from 5+ hours<br />\n down to 15 mins.\n </p>\n <div class=\"avatar-container mb-5\">\n <img src=\"/assets/img/resource/user-huon-it.png\"\n alt=\"User Avatar\"\n class=\"testimonial-avatar\" />\n\n <a class=\"read-more-btn-overlay\"\n routerLink=\"/resources/view/case-study-huon-it\">\n <span class=\"text\">Read now</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n\n </div>\n\n </div>\n\n </div>\n </div>\n</section>\n","import { Component, Input, OnInit } from '@angular/core';\n\nimport { Navigation, Pagination, Swiper } from 'swiper';\n\n@Component({\n selector: 'pw-testimonial-card',\n templateUrl: './testimonial-card.component.html',\n styleUrls: [\n './testimonial-card.component.scss',\n '../resource-post/related-resources/related-resources.component.scss'\n ]\n})\nexport class TestimonialCardListComponent implements OnInit {\n @Input() posts = [];\n @Input() postHeader = '';\n swiper;\n\n ngOnInit() {\n this.initSwiper();\n }\n\n private initSwiper() {\n this.swiper = new Swiper('.swiper-container', {\n modules: [Navigation, Pagination],\n slidesPerView: 1,\n spaceBetween: 24,\n centeredSlides: true,\n touchRatio: 1,\n touchAngle: 45,\n grabCursor: true,\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev'\n },\n pagination: {\n el: '.swiper-pagination',\n clickable: true\n },\n breakpoints: {\n 425: {\n slidesPerView: 1.05,\n centeredSlides: true\n },\n 470: {\n slidesPerView: 1.25,\n centeredSlides: true\n },\n 564: {\n slidesPerView: 1.5,\n centeredSlides: true\n },\n 640: {\n slidesPerView: 1.5,\n centeredSlides: true\n },\n 768: {\n slidesPerView: 1.5,\n centeredSlides: false\n },\n 1024: {\n slidesPerView: 2, // Allow room between cards\n centeredSlides: false\n },\n 1200: {\n slidesPerView: 3,\n centeredSlides: false\n }\n }\n });\n }\n}\n","<section class=\"resource-section bg-white\">\n <div class=\"container\">\n <div *ngIf=\"postHeader\" class=\"d-flex justify-content-between align-items-center flex-wrap mb-3\">\n <h2 class=\"section-heading\">{{postHeader}}</h2>\n </div>\n <div class=\"swiper-container\">\n <div class=\"swiper-wrapper\">\n <div class=\"swiper-slide\">\n <div class=\"testimonial-box\">\n <div class=\"stars mb-2\">★★★★★</div>\n <span><strong>\"This is a GAME CHANGER.</strong></span><br />\n <span> We went from spending hours trying to track Microsoft NCE subscriptions manually to having everything in one clear view.\"</span>\n <p class=\"mt-4 content-font fst-italic centaris-text\">– Joe, Centaris</p>\n <img src=\"/assets/img/logos/clients/centaris-reward.png\" alt=\"Centaris Logo\" class=\"testimonial-logo mt-2 img-fluid wow fadeInUp\" />\n </div>\n </div>\n <div class=\"swiper-slide\">\n <div class=\"testimonial-box\">\n <div class=\"stars mb-2\">★★★★★</div>\n <span>\n \"NCEasy keeps us ahead of the game. We no longer scramble to check license assignments and work out which subscription is coming up for renewal.\n </span>\n <p class=\"content-font\"><br /><strong>Highly recommend!\"</strong></p>\n <p class=\"mt-3 content-font fst-italic\">– Paul, Focus IT Healthcare</p>\n <img src=\"/assets/img/logos/clients/focus-it.png\" alt=\"FocusIT Logo\" class=\"testimonial-logo focus-logo mt-2\" />\n </div>\n </div>\n <div class=\"swiper-slide\">\n <div class=\"testimonial-box\">\n <div class=\"stars mb-2\">★★★★★</div>\n <span><strong>\"This is a GAME CHANGER.</strong></span><br />\n <span> We went from spending hours trying to track Microsoft NCE subscriptions manually to having everything in one clear view.\"</span>\n <p class=\"mt-4 content-font fst-italic centaris-text\">– Joe, Centaris</p>\n <img src=\"/assets/img/logos/clients/centaris-reward.png\" alt=\"Centaris Logo\" class=\"testimonial-logo mt-2 img-fluid wow fadeInUp\" />\n </div>\n </div>\n <div class=\"swiper-slide\">\n <div class=\"testimonial-box\">\n <div class=\"stars mb-2\">★★★★★</div>\n <span>\n \"NCEasy keeps us ahead of the game. We no longer scramble to check license assignments and work out which subscription is coming up for renewal.\n </span>\n <p class=\"content-font\"><br /><strong>Highly recommend!\"</strong></p>\n <p class=\"mt-3 content-font fst-italic\">– Paul, Focus IT Healthcare</p>\n <img src=\"/assets/img/logos/clients/focus-it.png\" alt=\"FocusIT Logo\" class=\"testimonial-logo focus-logo mt-2\" />\n </div>\n </div>\n </div>\n <div class=\"swiper-pagination\"></div>\n <div class=\"swiper-button-prev\"></div>\n <div class=\"swiper-button-next\"></div>\n </div>\n </div>\n <hr class=\"nce-divider\" />\n</section>","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { TOKEN_KEY } from '@posiwise/common-utilities';\n\nimport { ResourceService } from '../../../resource.service';\n\n@Component({\n selector: 'pw-resource-blog',\n templateUrl: './resource-case-studies.component.html',\n styleUrls: [\n './resource-case-studies.component.scss',\n '../resources/resources-shared.component.scss',\n '../resource-post/related-resources/related-resources.component.scss'\n ]\n})\nexport class ResourceCaseStudiesComponent extends AppBaseComponent implements OnInit {\n subscriptionId: number;\n masterSubscriptionId: number;\n posts = [];\n testimonialsPosts = [];\n userLoggedIn: boolean;\n blogPostTag;\n blogTestimonialsPostTag;\n\n constructor(\n private readonly resourceService: ResourceService,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(response => {\n this.subscriptionId = response;\n });\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.subscriptionId = data?.subscriptionId;\n console.log(this.subscriptionId);\n this.getPostTags();\n });\n }\n });\n }\n\n private getPostTags() {\n this.tagService\n .getTagsByType('post_categories', {}, this.subscriptionId || this.masterSubscriptionId)\n .subscribe(response => {\n console.log(response.tags);\n this.blogPostTag = response.tags.find(tag => tag.name === 'Case Studies');\n this.blogTestimonialsPostTag = response.tags.find(\n tag => tag.name === 'Testimonials'\n );\n console.log(this.blogPostTag);\n this.getPosts(1, 100);\n this.getTestimonialsPosts(1, 100);\n });\n }\n\n getPosts(page: number, pageSize: number) {\n console.log(this.blogPostTag);\n this.resourceService\n .getPublicPosts(\n this.subscriptionId,\n page,\n pageSize,\n '',\n this.blogPostTag?.tag_category_id\n )\n .subscribe(response => {\n console.log(response.posts, this.blogPostTag);\n this.posts = response.posts\n .filter(post =>\n post.tags?.some(\n tag => tag.tag_category_id === this.blogPostTag?.tag_category_id\n )\n )\n .sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n )\n .slice(0, 12);\n });\n }\n\n getTestimonialsPosts(page: number, pageSize: number) {\n console.log(this.blogTestimonialsPostTag?.tag_category_id, 'sop');\n this.resourceService\n .getPublicPosts(\n this.subscriptionId,\n page,\n pageSize,\n '',\n this.blogTestimonialsPostTag?.tag_category_id\n )\n .subscribe(response => {\n console.log(response.posts);\n this.testimonialsPosts = response.posts\n .filter(post =>\n post.tags?.some(\n tag =>\n tag.tag_category_id ===\n this.blogTestimonialsPostTag?.tag_category_id\n )\n )\n .sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n )\n .slice(0, 12);\n console.log(this.testimonialsPosts, 'new');\n });\n }\n}\n","<pw-resource-header></pw-resource-header>\n\n<section class=\"bg-white pricing-section\">\n <div class=\"nce-banner\">\n <div class=\"container d-flex flex-column flex-lg-row align-items-center justify-content-between\">\n\n <!-- Left Content -->\n <div class=\"text-content\">\n <div class=\"nce-heading\">\n <h1 class=\"nce-header mb-4\">\n Case Studies\n <span class=\"blue-text\"></span>\n </h1>\n </div>\n </div>\n\n <!-- Add directly below .text-content, still inside .container -->\n <div class=\"text-extension mt-4\">\n\n <div class=\"cta-buttons d-flex gap-3 flex-wrap mt-3\">\n <p class=\"intro\">\n Real MSPs. Real results.<br />\n </p>\n <p class=\"intro\">\n See how IT businesses around the<br />\n world are using CloudOlive to fix billing<br />\n bottlenecks, reclaim lost revenue, and<br />\n unlock new levels of profitability. No<br />\n fluff - just proven outcomes.\n </p>\n\n <!-- New buttons -->\n <div class=\"d-flex gap-3 mt-3 flex-wrap mb-5 cta-tab justify-content-center\">\n <a href=\"/resources/case-studies#reviews\" class=\"cta-btn filled\">Jump to Reviews</a>\n <a href=\"/resources/case-studies#case-studies\" class=\"cta-btn filled\">Jump to Case Studies</a>\n </div>\n </div>\n\n </div>\n\n <!-- Right Content -->\n <div class=\"image-content ms-lg-5 mt-5 mt-lg-0\">\n <img class=\"nce-math-img\"\n src=\"/assets/img/resource/math.png\"\n alt=\"NCEasy laptop screen\" />\n <img class=\"nce-laptop-img\"\n src=\"/assets/img/resource/case-studies-man.png\"\n alt=\"NCEasy laptop screen\" />\n </div>\n\n </div>\n </div>\n <hr class=\"nce-divider\" />\n</section>\n\n<pw-testimonial-card [posts]=\"testimonialsPosts\" [postHeader]=\"'Testimonials'\" id=\"reviews\"></pw-testimonial-card>\n<pw-case-studies-card id=\"case-studies\"></pw-case-studies-card>\n\n<pw-trial-4-contact-us></pw-trial-4-contact-us>\n","import { Component, Input, OnChanges } from '@angular/core';\n\ninterface PageEvent {\n first: number;\n rows: number;\n page: number;\n pageCount: number;\n}\n@Component({\n selector: 'pw-resource-company-card',\n templateUrl: './resource-company-card.component.html',\n styleUrl: './resource-company-card.component.scss'\n})\nexport class ResourceCompanyCardComponent implements OnChanges {\n @Input() header = '';\n @Input() data = [];\n @Input() vendor = false;\n filteredData = [];\n first = 0;\n rows = 12;\n ngOnChanges(): void {\n this.search();\n }\n search(keywords?) {\n console.log(this.data, keywords);\n if (keywords) {\n this.filteredData = this.data.filter(x =>\n x.name.toLowerCase().includes(keywords.toLowerCase())\n );\n } else {\n this.filteredData = [...this.data];\n }\n }\n onPageChange(event: PageEvent) {\n this.first = event.first;\n this.rows = event.rows;\n }\n}\n","<div [ngClass]=\"{ 'vendors-distributor-wrapper': !vendor }\">\n <div class=\"d-flex justify-content-between align-items-center mb-3 search-container\">\n <div>\n <span class=\"int-span\">{{header}}</span>\n </div>\n <div class=\"search-wrapper position-relative\">\n <i class=\"fa fa-search search-icon\"></i>\n <input type=\"text\"\n (keyup)=\"search($event.target.value)\"\n placeholder=\"Search eg security\"\n class=\"search-input\" />\n </div>\n\n </div>\n\n <div class=\"row justify-content-around\">\n <div class=\"col-md-3 mt-4\"\n *ngFor=\"let img of filteredData | slice:this.first:this.first+this.rows\">\n <div class=\"boxes d-flex align-items-center justify-content-center\">\n <img [src]=\"img.companyImg\"\n alt=\"\"\n class=\"vebdor-icon\" />\n </div>\n </div>\n\n <div class=\"customPaginator d-flex align-items-center mt-5 justify-content-center\"\n [ngClass]=\"vendor ? 'my-5' : 'mt-5'\">\n <p-paginator (onPageChange)=\"onPageChange($event)\"\n [first]=\"first\"\n [rows]=\"rows\"\n [totalRecords]=\"filteredData.length-1\"></p-paginator>\n </div>\n </div>\n</div>\n","import { Component, Injector, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { CompanyData } from '@posiwise/common-utilities';\n\n@Component({\n selector: 'pw-resource-integration',\n templateUrl: './resource-integration.component.html',\n styleUrls: [\n './resource-integration.component.scss',\n '../resources/resources-shared.component.scss'\n ]\n})\nexport class ResourceIntegrationComponent extends AppBaseComponent implements OnInit {\n distributorsData = CompanyData?.distributorsData;\n vendorsData = CompanyData?.vendorsData;\n\n textColor = this.appConfig?.color_codes?.text;\n\n releaseNotesLink = '/resources/product-release-notes';\n q1NotesLink = '/resources/product-release-q1-2025';\n q3NotesLink = '/resources/product-release-q3-2024';\n q4NotesLink = '/resources/product-release-q4-2024';\n\n videoWebinarLoaded = false;\n videoDemoLoaded = false;\n youtubeVideoId = 'R7Vk219zbhA';\n videoTitle = 'CloudOlive Overview';\n sanitizedMicrosoftVideoUrl: SafeResourceUrl;\n sanitizedKesyaVideoUrl: SafeResourceUrl;\n\n constructor(\n private readonly sanitizer: DomSanitizer,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit(): void {\n document.documentElement.style.setProperty('--text-color', this.textColor);\n }\n\n loadMicrosoftVideo() {\n const baseUrl = `https://www.youtube.com/embed/${this.youtubeVideoId}?autoplay=1`;\n // baseUrl is a trusted internal source (e.g. YouTube embed URL)\n this.sanitizedMicrosoftVideoUrl = this.sanitizer.bypassSecurityTrustResourceUrl(baseUrl); // NOSONAR\n this.videoDemoLoaded = true;\n }\n\n loadKeseyaVideo(): void {\n const baseUrl = `https://www.youtube.com/embed/${this.youtubeVideoId}?autoplay=1`;\n // baseUrl is a trusted internal source (e.g. YouTube embed URL)\n this.sanitizedKesyaVideoUrl = this.sanitizer.bypassSecurityTrustResourceUrl(baseUrl); // NOSONAR\n this.videoWebinarLoaded = true;\n }\n}\n","<pw-resource-header></pw-resource-header>\n\n<section class=\"bg-white section-integration\">\n <div class=\"nce-banner\">\n <div class=\"container d-flex flex-column flex-lg-row align-items-center justify-content-between\">\n\n <!-- Left Content -->\n <div class=\"text-content\">\n <div class=\"nce-vendor-heading\">\n <h1 class=\"nce-header mb-4\">\n Map any vendor<br /> or distributor to your PSA.\n <span class=\"blue-text\"></span>\n </h1>\n </div>\n </div>\n\n <div class=\"sub-text-extension mt-4\">\n <p class=\"intro\">\n CloudOlive is <span class=\"fw-bold\">100% vendor agnostic,</span><br />\n meaning there are NO limitations to<br />\n the connectivity it can provide between<br />\n how you buy and how you sell.<br />\n </p>\n <div class=\"cta-buttons d-flex gap-3 flex-wrap mt-3\">\n <a routerLink=\"/book-a-demo\"\n class=\"cta-btn filled\">Speak to sales ></a>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"image-content ms-lg-5 mt-5 mt-lg-0\">\n <img class=\"person-integration-img\"\n src=\"/assets/img/resource/integratebanner.png\"\n alt=\"NCEasy laptop screen\" />\n <img class=\"nce-integration-img\"\n src=\"/assets/img/resource/men.png\"\n alt=\"Smiling guy\" />\n </div>\n\n </div>\n </div>\n <div class=\"section-fadeout\"></div>\n</section>\n<div class=\"mobile-fadeout\"></div>\n<div class=\"bg-white\">\n <section class=\"cloudolive-guide-section bg-white py-5 section-outer\">\n <div class=\"container\">\n <h1 class=\"int-title mb-0\">140+ integrations (& counting)</h1>\n <p class=\"int-text\"> Search the current list of CloudOlive’s vendor and distributor integrations below. <br />\n </p>\n <pw-resource-company-card [header]=\"'integrated vendor'\"\n [data]=\"distributorsData\"></pw-resource-company-card>\n </div>\n <div class=\"integration-fadeout\"></div>\n </section>\n <section class=\"cloudolive-guide-section bg-white py-5 section-outer\">\n <div class=\"container\">\n <pw-resource-company-card [header]=\"'integrated vendor'\"\n [vendor]=\"true\"\n [data]=\"distributorsData\"></pw-resource-company-card>\n <div class=\"text-center pt-3\">\n <p class=\"see-span\"> Don’t see what you’re after? <a href=\"/book-a-demo\"\n class=\"int-span team-span\">Speak with our team to request a connection >\n </a>\n </p>\n </div>\n </div>\n <div class=\"integration-fadeout\"></div>\n </section>\n <section class=\"cloudolive-guide-section bg-white py-5 section-outer\">\n <div class=\"container\">\n <div class=\"how-it-works-wrapper\">\n <h1 class=\"it-works-title mb-0\">How it works</h1>\n <p class=\"pb-20\">View short example videos to understand how these integrations can work for your MSP:</p>\n <div class=\"row section-row\">\n <div class=\"col-md-6\">\n <div class=\"d-flex justify-content-center\">\n <img src=\"/assets/img/resource/how-it-works1.png\"\n *ngIf=\"!videoDemoLoaded\"\n (click)=\"loadMicrosoftVideo()\"\n class=\"how-it-works-img\"\n alt=\"\" />\n <iframe *ngIf=\"videoDemoLoaded\"\n class=\"embed-responsive-item\"\n [title]=\"videoTitle\"\n [src]=\"sanitizedMicrosoftVideoUrl\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen>\n </iframe>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"d-flex justify-content-center\">\n <img src=\"/assets/img/resource/how-it-works2.png\"\n *ngIf=\"!videoWebinarLoaded\"\n (click)=\"loadKeseyaVideo()\"\n class=\"how-it-works-img\"\n alt=\"\" />\n <iframe *ngIf=\"videoWebinarLoaded\"\n class=\"embed-responsive-item\"\n [title]=\"videoTitle\"\n [src]=\"sanitizedKesyaVideoUrl\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen>\n </iframe>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"integration-fadeout\"></div>\n </section>\n <section class=\"cloudolive-guide-section bg-white py-5 section-outer\">\n <div class=\"container\">\n <div class=\"row align-items-start\">\n <!-- Left Content -->\n <div class=\"col-md-6 text-md-start text-center\">\n <h1 class=\"guide-title mb-3\">A guide to implementing CloudOlive in your business</h1>\n <p class=\"guide-subtext\">\n View where CloudOlive sits in your internal technology stack and monthly workflows, and see how easy\n it is to get started.\n </p>\n <p class=\"guide-note mb-4\">View the quick guide now:</p>\n <button class=\"vault-btn\"\n onclick=\"window.open('https://hubspot.com', '_blank')\">View the guide</button>\n </div>\n\n <!-- Right Image -->\n <div class=\"col-md-6 text-center\">\n <img src=\"/assets/img/resource/guide.png\"\n alt=\"Guide\"\n class=\"img-fluid guide-img\" />\n </div>\n </div>\n </div>\n <div class=\"integration-fadeout\"></div>\n </section>\n</div>\n\n<pw-resource-note-card [releaseHeader]=\"true\"></pw-resource-note-card>\n\n<pw-trial-4-contact-us></pw-trial-4-contact-us>\n","import { UntypedFormBuilder, Validators } from '@angular/forms';\n\nexport class ResourceBlog {\n static getResourcePostsForm() {\n return new UntypedFormBuilder().group({\n related_entity_id: [''],\n related_entity_type: [''],\n comment: [null, Validators.required],\n user_id: ['']\n });\n }\n}\n","import { Component, Injector, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { CustomToastService } from '@posiwise/common-services';\nimport { TOKEN_KEY, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { ResourceService } from '../../../../resource.service';\nimport { ResourceBlog } from '../../../../shared/models/resource.model';\n\n@Component({\n selector: 'pw-related-resources',\n templateUrl: './related-resources.component.html',\n styleUrls: ['./related-resources.component.scss']\n})\nexport class RelatedResourcesComponent extends AppBaseComponent implements OnInit {\n resourceCards = [\n {\n title: 'BLOG: Here’s why you should QA your distributor invoices',\n image: '/assets/img/resource/resource-qa.png',\n alt: 'QA distributor invoices',\n url: '/resources/view/here-s-why-you-should-be-seeking-independent-qa-of-all-distributor-inv'\n },\n {\n title: 'BLOG: 4 instant hacks to uplift your MSP’s monthly billing',\n image: '/assets/img/resource/resource-hacks.png',\n alt: 'Monthly billing hacks',\n url: '/resources/view/4-instant-hacks-to-uplift-your-msp-s-monthly-billing'\n },\n {\n title: 'BLOG: The trivial detail that will either future-proof or sabotage your PSA.',\n image: '/assets/img/resource/resource-psa.png',\n alt: 'PSA future-proof',\n url: '/resources/view/the-trivial-detail-that-will-either-future-proof-or-sabotage-your-psa'\n }\n ];\n\n post;\n masterSubscriptionId;\n slug;\n\n postComments = [];\n commentForm;\n\n userLoggedIn: boolean;\n\n user: User;\n\n constructor(\n private readonly resourceService: ResourceService,\n injector: Injector,\n private readonly sanitizer: DomSanitizer,\n private readonly toastr: CustomToastService\n ) {\n super(injector);\n this.commentForm = ResourceBlog.getResourcePostsForm();\n }\n\n ngOnInit(): void {\n this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;\n this.route.params.subscribe(params => {\n this.slug = params['slug'] || '';\n this.getBlogItem(this.slug);\n });\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.userService.getUserInfo().subscribe(data => {\n this.user = data;\n });\n }\n });\n }\n\n private getBlogItem(slug: string) {\n this.resourceService.getPostBySlug(slug).subscribe(response => {\n let blogBody;\n if (response?.body) {\n blogBody = HelperService.sanitizeQuillBody(response.body, this.sanitizer);\n }\n const date = new Date(response?.when);\n const formatted = date.toISOString().split('T')[0];\n console.log(formatted); //\n this.postComments = response.entity_comments;\n this.post = { ...response, body: blogBody, when: formatted };\n });\n }\n\n onComment() {\n const data = { ...this.commentForm.value };\n data.related_entity_id = this.post?.id;\n data.related_entity_type = 'Post';\n data.user_id = this.user?.id;\n this.resourceService\n .postComments(data)\n .subscribe(() => {\n this.getBlogItem(this.slug);\n this.commentForm.reset();\n this.toastr.success(this.translation.translate('Resource.Posts.CommentAdded'));\n })\n .add(() => {\n console.log('In this');\n });\n }\n\n trackByComment(_index: number, item: { id: number }) {\n return item.id;\n }\n}\n","\n\n<section class=\"resource-body-section\">\n <div class=\"container\">\n <div class=\"ql-snow body-quill\"\n >\n <div class=\"ql-editor body post-body-text\"\n [innerHTML]=\"post?.body\">\n </div>\n </div>\n <section class=\"nce-offer-section\">\n\n <div class=\"row mt-5 mb-4 response-row\">\n <div class=\"col-12\">\n <form\n class=\"p-fluid mb-5\"\n [formGroup]=\"commentForm\"\n (ngSubmit)=\"onComment()\"\n *ngIf=\"userLoggedIn; else userLoggedOut\"\n >\n <div class=\"card shadow-sm border-0 p-4\">\n <div class=\"field\">\n <label for=\"comment\" class=\"font-bold text-lg mb-4 comment-label\">💬 Leave a comment</label>\n <textarea\n pInputTextarea\n formControlName=\"comment\"\n rows=\"6\"\n autoResize=\"true\"\n class=\"p-inputtext p-component p-inputtextarea\"\n placeholder=\"What's on your mind?\"\n ></textarea>\n <small\n class=\"text-danger\"\n *ngIf=\"commentForm.get('comment')?.invalid && commentForm.get('comment')?.touched\"\n >Please enter comment</small\n >\n </div>\n <div class=\"text-end mt-3\">\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"sign-btn sign-header-btn\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <ng-template #userLoggedOut>\n <p class=\"text-center pt-3 pb-3 user-not-logged-in text-muted shadow-sm mb-5\">\n <a [routerLink]=\"['/login']\" class=\"text-primary fw-bold\">Log in</a> to leave a comment!\n </p>\n </ng-template>\n </div>\n </div>\n\n <div class=\"row mt-5 comment-row\">\n <div class=\"col-12\" *ngFor=\"let comment of postComments; trackBy: trackByComment\">\n <div class=\"card border-0 shadow-sm p-3 mb-3\">\n <div class=\"d-flex align-items-start\">\n <img\n [src]=\"comment?.author?.avatar?.[0]?.url || 'assets/img/icons/male.png'\"\n alt=\"avatar\"\n class=\"rounded-circle me-3\"\n width=\"50\"\n height=\"50\"\n (error)=\"handleImageError($event, 'assets/img/icons/male.png')\"\n />\n <div class=\"flex-grow-1\">\n <div class=\"fw-bold text-dark\">\n {{ comment.user?.first_name || '' }} {{ comment.user?.last_name || '' }}\n </div>\n <div class=\"text-muted small mb-2\">{{ comment.created_at | date: 'dd MMM yyyy, h:mm a' }}</div>\n <div class=\"text-body\">\n {{ comment.comment }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n </section>\n </div>\n <hr class=\"nce-divider\" />\n</section>\n\n<section class=\"nce-book-section\">\n <div class=\"container\">\n\n <p class=\"nce-contact\">\n Any questions? Get in touch with Adam <a href=\"#\">here</a>,\n <a href=\"https://www.linkedin.com/company/cloudolive\" target=\"_blank\">connect on LinkedIn</a>, or book a meeting below:\n </p>\n </div>\n <pw-book-a-demo [isBlog]=\"true\"></pw-book-a-demo>\n <hr class=\"nce-divider\" />\n</section>\n\n\n\n<section class=\"resource-section bg-white\">\n <div class=\"container\">\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading\">Other resources you may be interested in:</h2>\n <a class=\"view-all\" routerLink=\"/resources\">VIEW ALL ></a>\n </div>\n\n <div class=\"row mt-4 cards-row\">\n <div class=\"col-lg-4 col-md-6 mb-4\" *ngFor=\"let card of resourceCards\">\n <div class=\"resource-card\">\n <p class=\"resource-title\">{{ card.title }}</p>\n <img [src]=\"card.image\" class=\"resource-image mt-4\" [alt]=\"card.alt\" />\n <a class=\"read-now-btn\" [href]=\"card.url\">\n <span>Read now</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n </div>\n </div>\n </div>\n</section>\n","import { Component } from '@angular/core';\n@Component({\n selector: 'pw-resource-cards',\n templateUrl: './resource-cards.component.html',\n styleUrls: ['../related-resources.component.scss']\n})\nexport class ResourceCardComponent {\n resourceCards = [\n {\n title: 'BLOG: Here’s why you should QA your distributor invoices',\n image: '/assets/img/resource/resource-qa.png',\n alt: 'QA distributor invoices',\n url: '/resources/view/here-s-why-you-should-be-seeking-independent-qa-of-all-distributor-inv'\n },\n {\n title: 'BLOG: 4 instant hacks to uplift your MSP’s monthly billing',\n image: '/assets/img/resource/resource-hacks.png',\n alt: 'Monthly billing hacks',\n url: '/resources/view/4-instant-hacks-to-uplift-your-msp-s-monthly-billing'\n },\n {\n title: 'BLOG: The trivial detail that will either future-proof or sabotage your PSA.',\n image: '/assets/img/resource/resource-psa.png',\n alt: 'PSA future-proof',\n url: '/resources/view/the-trivial-detail-that-will-either-future-proof-or-sabotage-your-psa'\n }\n ];\n}\n","<section class=\"resource-section bg-white\">\n <div class=\"container\">\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading\">Our team’s articles</h2>\n <a class=\"view-all\" routerLink=\"/resources/blogs\">VIEW ALL ></a>\n </div>\n\n <div class=\"row mt-4 cards-row\">\n <div class=\"col-lg-4 col-md-6 mb-4\" *ngFor=\"let card of resourceCards\">\n <div class=\"resource-card\">\n <p class=\"resource-title\">{{ card.title }}</p>\n <img [src]=\"card.image\" class=\"resource-image mt-4\" [alt]=\"card.alt\" />\n <a class=\"read-now-btn\" [href]=\"card.url\">\n <span>Read now</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n </div>\n </div>\n </div>\n </section>","import { Component, Injector, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { ResourceService } from '../../../../resource.service';\n@Component({\n selector: 'pw-resource-post-details',\n templateUrl: './resource-post-details.component.html',\n styleUrls: ['./resource-post-details.component.scss']\n})\nexport class ResourcePostDetailsComponent extends AppBaseComponent implements OnInit {\n post;\n masterSubscriptionId;\n slug;\n\n constructor(\n private readonly resourceService: ResourceService,\n injector: Injector,\n private readonly sanitizer: DomSanitizer\n ) {\n super(injector);\n }\n\n ngOnInit(): void {\n this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;\n this.route.params.subscribe(params => {\n this.slug = params['slug'] || '';\n this.getBlogItem(this.slug);\n });\n }\n\n private getBlogItem(slug: string) {\n this.resourceService.getPostBySlug(slug).subscribe(response => {\n let blogBody;\n if (response?.body) {\n blogBody = HelperService.sanitizeQuillBody(response.body, this.sanitizer);\n }\n const date = new Date(response?.published_at);\n const formatted = date.toISOString().split('T')[0];\n console.log(formatted); //\n this.post = { ...response, body: blogBody, published_at: formatted };\n });\n }\n}\n","<section class=\"nce-hero-section\">\n <div class=\"container d-flex flex-wrap\">\n <div class=\"hero-left\">\n <p class=\"blog-label\">MSP BLOG</p>\n\n <h1 class=\"hero-title\">\n <strong>{{post?.title}}</strong>\n </h1>\n\n <div class=\"author-info\">\n <img [src]=\"post?.author?.avatar?.[0]?.url || 'assets/img/icons/male.png'\" alt=\"User Profile Logo\" class=\"author-img\" />\n <div class=\"author-meta\">\n <p>Article by {{ post?.author?.first_name }} {{ post?.author?.last_name }}</p>\n <p class=\"date\">{{post?.published_at}}</p>\n </div>\n <img src=\"/assets/img/resource/math.png\" alt=\"User Profile Logo\" class=\"d-md-none d-block mobile-math-image\" />\n </div>\n </div>\n\n <div class=\"hero-right d-none d-md-block\">\n <img src=\"/assets/img/resource/math.png\" alt=\"Math Icon Blob\" class=\"hero-image\" />\n </div>\n </div>\n <hr class=\"nce-divider\" />\n </section>\n","import { Component, OnInit } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n selector: 'app-resource-post',\n templateUrl: './resource-post.component.html'\n})\nexport class ResourcePostComponent implements OnInit {\n slug: string;\n\n constructor(\n private route: ActivatedRoute,\n private titleService: Title\n ) {}\n\n ngOnInit(): void {\n this.route.paramMap.subscribe(params => {\n this.slug = params.get('slug') || 'Default';\n setTimeout(() => {\n this.titleService.setTitle(`Resource - ${this.slug}`);\n }, 1000);\n });\n }\n}\n","<pw-resource-header></pw-resource-header>\n<pw-resource-post-details></pw-resource-post-details>\n<pw-related-resources></pw-related-resources>\n<pw-trial-4-contact-us></pw-trial-4-contact-us>","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { TOKEN_KEY } from '@posiwise/common-utilities';\n\nimport { ResourceService } from '../../../resource.service';\n\n@Component({\n selector: 'pw-resource-release-notes',\n templateUrl: './resource-release-notes.component.html',\n styleUrls: [\n './resource-release-notes.component.scss',\n '../resources/resources-shared.component.scss',\n '../resource-post/related-resources/related-resources.component.scss'\n ]\n})\nexport class ResourceReleaseNoteComponent extends AppBaseComponent implements OnInit {\n subscriptionId: number;\n masterSubscriptionId: number;\n posts = [];\n userLoggedIn: boolean;\n blogPostTag;\n\n constructor(\n private readonly resourceService: ResourceService,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n console.log();\n this.getUserSubscriptionId().subscribe(response => {\n this.subscriptionId = response;\n });\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.subscriptionId = data?.subscriptionId;\n console.log(this.subscriptionId);\n this.getPostTags();\n });\n }\n });\n }\n\n private getPostTags() {\n this.tagService\n .getTagsByType('post_categories', {}, this.subscriptionId || this.masterSubscriptionId)\n .subscribe(response => {\n this.blogPostTag = response.tags.find(tag => tag.name === 'Product Release Notes');\n this.getPosts(1, 100);\n });\n }\n\n getPosts(page: number, pageSize: number) {\n console.log(this.blogPostTag);\n this.resourceService\n .getPublicPosts(\n this.subscriptionId,\n page,\n pageSize,\n '',\n this.blogPostTag.tag_category_id\n )\n .subscribe(response => {\n console.log(response.posts, this.blogPostTag);\n this.posts = response.posts\n .filter(post =>\n post.tags?.some(\n tag => tag.tag_category_id === this.blogPostTag.tag_category_id\n )\n )\n .sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n )\n .slice(0, 12);\n });\n }\n}\n","<pw-resource-header></pw-resource-header>\n\n<section class=\"bg-white pricing-section\">\n <div class=\"nce-banner\">\n <div class=\"container d-flex flex-column flex-lg-row align-items-center justify-content-between\">\n\n <!-- Left Content -->\n <div class=\"text-content\">\n <div class=\"nce-heading\">\n <h1 class=\"nce-header mb-4\">\n Product Release Notes\n <span class=\"blue-text\"></span>\n </h1>\n </div>\n </div>\n\n <!-- Add directly below .text-content, still inside .container -->\n <div class=\"text-extension mt-4\">\n <p class=\"intro\">\n We’re obsessed with solving one of the<br>\n industry's most painful problems:<br> MSP billing.\n </p>\n <div class=\"cta-buttons d-flex gap-3 flex-wrap mt-3\">\n <p class=\"intro\">\n Every quarterly update here is part of<br />\n our mission to remove friction, boost<br />\n profitability, and give you back control.<br />\n It’s how we help you bill better, every<br />\n single day.\n </p>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"image-content ms-lg-5 mt-5 mt-lg-0\">\n <img class=\"nce-math-img\"\n src=\"/assets/img/resource/math.png\"\n alt=\"NCEasy laptop screen\" />\n <img class=\"nce-laptop-img\"\n src=\"/assets/img/resource/release-person.png\"\n alt=\"NCEasy laptop screen\" />\n </div>\n\n </div>\n </div>\n <hr class=\"nce-divider\" />\n</section>\n\n<pw-resource-note-card></pw-resource-note-card>\n\n<pw-trial-4-contact-us></pw-trial-4-contact-us>\n","import { Component, Injector, Input } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\n\n@Component({\n selector: 'pw-resource--vault',\n templateUrl: './resource-vault.component.html',\n styleUrls: ['./resource-vault.component.scss']\n})\nexport class ResourceVaultComponent extends AppBaseComponent {\n @Input() showVaultSection = false;\n videoWebinarLoaded = false;\n videoDemoLoaded = false;\n\n ebookLink = '/resources/white-papers';\n\n youtubeVideoId = 'R7Vk219zbhA';\n videoTitle = 'CloudOlive Overview';\n sanitizedDemoVideoUrl: SafeResourceUrl;\n sanitizedWebinarVideoUrl: SafeResourceUrl;\n\n constructor(\n private readonly sanitizer: DomSanitizer,\n injector: Injector\n ) {\n super(injector);\n }\n\n loadDemoVideo() {\n const baseUrl = `https://www.youtube.com/embed/${this.youtubeVideoId}?autoplay=1`;\n // baseUrl is a trusted internal source (e.g. YouTube embed URL)\n this.sanitizedDemoVideoUrl = this.sanitizer.bypassSecurityTrustResourceUrl(baseUrl); // NOSONAR\n this.videoDemoLoaded = true;\n }\n\n loadWebinarVideo(): void {\n const baseUrl = `https://www.youtube.com/embed/${this.youtubeVideoId}?autoplay=1`;\n // baseUrl is a trusted internal source (e.g. YouTube embed URL)\n this.sanitizedWebinarVideoUrl = this.sanitizer.bypassSecurityTrustResourceUrl(baseUrl); // NOSONAR\n this.videoWebinarLoaded = true;\n }\n}\n","<section class=\"msp-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n <div *ngIf=\"showVaultSection\" class=\"d-flex justify-content-between align-items-center flex-wrap mb-5\">\n <h2 class=\"section-heading\">Whitepapers & Tools</h2>\n <a class=\"view-all\" routerLink=\"/resources/white-papers\">VIEW ALL ></a>\n </div>\n <div class=\"d-flex flex-wrap justify-content-center gap-4 vault-row\">\n <div class=\"vault-card\">\n <h5><strong>eBook: 5 tips</strong></h5>\n <p class=\"mb-4\">for MSPs to manage cloud billings in Autotask</p>\n <img src=\"/assets/img/resource/tips.png\"\n class=\"img-fluid mb-3\"\n alt=\"eBook\" />\n <button class=\"vault-btn\"\n [routerLink]=\"ebookLink\">\n <span class=\"text\">Read now </span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n <div class=\"vault-card\">\n <h5><strong>Factsheet</strong></h5>\n <p class=\"mb-4\">Learn about CloudOlive & our 140+ integrations</p>\n <img src=\"/assets/img/resource/factsheet.png\"\n class=\"img-fluid mb-3\"\n alt=\"eBook\" />\n <button class=\"vault-btn\"\n [routerLink]=\"ebookLink\">\n <span class=\"text\">Read now </span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n <div class=\"vault-card\">\n <h5><strong>Instant Quiz</strong></h5>\n <p class=\"mb-4\">MRR Risk Review - find out if you might be missing revenue</p>\n <img src=\"/assets/img/resource/quiz.png\"\n class=\"img-fluid mb-3\"\n alt=\"eBook\" />\n <button class=\"vault-btn\"\n [routerLink]=\"ebookLink\">\n <span class=\"text\">Read now </span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n </div>\n </div>\n</section>\n","import { Component, Injector, Input } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\n\n@Component({\n selector: 'pw-resource-video-card',\n templateUrl: './resource-video-cards.component.html',\n styleUrls: ['./resource-video-cards.component.scss']\n})\nexport class ResourceVideoCardComponent extends AppBaseComponent {\n @Input() showVideoSection = false;\n videoStates = {\n datto: { loaded: false, id: 'R7Vk219zbhA', url: null as SafeResourceUrl },\n connectwise: { loaded: false, id: 'R7Vk219zbhA', url: null as SafeResourceUrl },\n cloudolive: { loaded: false, id: 'R7Vk219zbhA', url: null as SafeResourceUrl }\n };\n\n constructor(\n private readonly sanitizer: DomSanitizer,\n injector: Injector\n ) {\n super(injector);\n }\n\n loadVideo(key: 'datto' | 'connectwise' | 'cloudolive') {\n const videoId = this.videoStates[key].id;\n const baseUrl = `https://www.youtube.com/embed/${videoId}?autoplay=1`;\n this.videoStates[key].url = this.sanitizer.bypassSecurityTrustResourceUrl(baseUrl); // NOSONAR\n this.videoStates[key].loaded = true;\n }\n}\n","<section class=\"msp-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n <div *ngIf=\"showVideoSection\" class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading\">On-Demand Videos</h2>\n <a class=\"view-all\" routerLink=\"/resources/videos\">VIEW ALL ></a>\n </div>\n <div class=\"row mt-5 d-flex flex-wrap justify-content-center video-row\">\n <div class=\"vault-card\">\n <p>MSP UPSKILL: Free Masterclass on Billing in Datto Autotask</p>\n <img src=\"/assets/img/resource/logos/datto-logo.png\" alt=\"Datto Logo\" class=\"header-logo\" />\n\n <img *ngIf=\"!videoStates.datto.loaded\"\n src=\"/assets/img/resource/datto-video.png\"\n class=\"img-fluid mb-3\"\n alt=\"Webinar\" />\n\n <iframe *ngIf=\"videoStates.datto.loaded\"\n class=\"embed-responsive-item\"\n [title]=\"videoTitle\"\n [src]=\"videoStates.datto.url\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen>\n </iframe>\n\n <button class=\"vault-btn\" (click)=\"loadVideo('datto')\">\n <span class=\"text\">Watch now</span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n <div class=\"vault-card\">\n <p>MSP UPSKILL: Free Masterclass on Billing in ConnectWise</p>\n <img src=\"/assets/img/resource/logos/connectwise.png\" alt=\"ConnectWise Logo\" class=\"header-logo\" />\n\n <img *ngIf=\"!videoStates.connectwise.loaded\"\n src=\"/assets/img/resource/datto-video.png\"\n class=\"img-fluid mb-3\"\n alt=\"Webinar\" />\n\n <iframe *ngIf=\"videoStates.connectwise.loaded\"\n class=\"embed-responsive-item\"\n [title]=\"videoTitle\"\n [src]=\"videoStates.connectwise.url\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen>\n </iframe>\n\n <button class=\"vault-btn\" (click)=\"loadVideo('connectwise')\">\n <span class=\"text\">Watch now</span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n <div class=\"vault-card\">\n <p class=\"demo\">DEMONSTRATION: <br /> 5 minute overview of<br />CloudOlive</p>\n\n <img *ngIf=\"!videoStates.cloudolive.loaded\"\n src=\"/assets/img/resource/demo-video.png\"\n class=\"img-fluid mb-3\"\n alt=\"Webinar\" />\n\n <iframe *ngIf=\"videoStates.cloudolive.loaded\"\n class=\"embed-responsive-item\"\n [title]=\"videoTitle\"\n [src]=\"videoStates.cloudolive.url\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen>\n </iframe>\n\n <button class=\"vault-btn\" (click)=\"loadVideo('cloudolive')\">\n <span class=\"text\">Watch now</span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n </div>\n </div>\n\n</section>\n","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { TOKEN_KEY } from '@posiwise/common-utilities';\n\nimport { ResourceService } from '../../../resource.service';\n\n@Component({\n selector: 'pw-resource-videos',\n templateUrl: './resource-videos.component.html',\n styleUrls: [\n './resource-videos.component.scss',\n '../resources/resources-shared.component.scss',\n '../resource-post/related-resources/related-resources.component.scss'\n ]\n})\nexport class ResourceVideoComponent extends AppBaseComponent implements OnInit {\n subscriptionId: number;\n masterSubscriptionId: number;\n posts = [];\n userLoggedIn: boolean;\n blogPostTag;\n\n constructor(\n private readonly resourceService: ResourceService,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(response => {\n this.subscriptionId = response;\n });\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.subscriptionId = data?.subscriptionId;\n console.log(this.subscriptionId);\n this.getPostTags();\n });\n }\n });\n }\n\n private getPostTags() {\n this.tagService\n .getTagsByType('post_categories', {}, this.subscriptionId || this.masterSubscriptionId)\n .subscribe(response => {\n this.blogPostTag = response.tags.find(tag => tag.name === 'Videos');\n this.getPosts(1, 100);\n });\n }\n\n getPosts(page: number, pageSize: number) {\n console.log(this.blogPostTag);\n this.resourceService\n .getPublicPosts(\n this.subscriptionId,\n page,\n pageSize,\n '',\n this.blogPostTag.tag_category_id\n )\n .subscribe(response => {\n console.log(response.posts, this.blogPostTag);\n this.posts = response.posts\n .filter(post =>\n post.tags?.some(\n tag => tag.tag_category_id === this.blogPostTag.tag_category_id\n )\n )\n .sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n )\n .slice(0, 12);\n });\n }\n}\n","<pw-resource-header></pw-resource-header>\n\n<section class=\"bg-white pricing-section\">\n <div class=\"nce-banner\">\n <div class=\"container d-flex flex-column flex-lg-row align-items-center justify-content-between\">\n\n <!-- Left Content -->\n <div class=\"text-content\">\n <div class=\"nce-heading\">\n <h1 class=\"nce-header mb-4\">\n Videos on demand\n <span class=\"blue-text\"></span>\n </h1>\n </div>\n </div>\n\n <!-- Add directly below .text-content, still inside .container -->\n <div class=\"text-extension mt-4\">\n <p class=\"intro\">\n Prefer to watch and learn? We’ve got<br>you.\n </p>\n <div class=\"cta-buttons d-flex gap-3 flex-wrap mt-3\">\n <p class=\"intro\">\n These on-demand sessions cover<br />\n everything from platform demos to<br />\n bite-sized billing masterclasses - all<br />\n designed to help MSPs streamline,<br />\n scale, and stay sharp. Watch anytime,<br />\n when it suits you.\n </p>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"image-content ms-lg-5 mt-5 mt-lg-0\">\n <img class=\"nce-math-img\"\n src=\"/assets/img/resource/math.png\"\n alt=\"NCEasy laptop screen\" />\n <img class=\"nce-laptop-img\"\n src=\"/assets/img/resource/video-template.png\"\n alt=\"NCEasy laptop screen\" />\n </div>\n\n </div>\n </div>\n <hr class=\"nce-divider\" />\n</section>\n\n\n<pw-resource-video-card></pw-resource-video-card>\n\n<pw-trial-4-contact-us></pw-trial-4-contact-us>\n","import { Component, Injector } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\n\n@Component({\n selector: 'pw-replay-event-card',\n templateUrl: './replay-event-cards.component.html',\n styleUrls: ['./replay-event-cards.component.scss']\n})\nexport class ReplayEventCardComponent extends AppBaseComponent {\n videoStates = {\n inforcer: { loaded: false, id: 'R7Vk219zbhA', url: null as SafeResourceUrl },\n inforcer2: { loaded: false, id: 'R7Vk219zbhA', url: null as SafeResourceUrl },\n huntress: { loaded: false, id: 'R7Vk219zbhA', url: null as SafeResourceUrl }\n };\n\n constructor(\n private readonly sanitizer: DomSanitizer,\n injector: Injector\n ) {\n super(injector);\n }\n\n loadVideo(key: 'inforcer' | 'inforcer2' | 'huntress') {\n const videoId = this.videoStates[key].id;\n const baseUrl = `https://www.youtube.com/embed/${videoId}?autoplay=1`;\n this.videoStates[key].url = this.sanitizer.bypassSecurityTrustResourceUrl(baseUrl); // NOSONAR\n this.videoStates[key].loaded = true;\n }\n}\n","<section class=\"msp-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n <div class=\"d-md-flex justify-content-between align-items-start\">\n <div class=\"vault-header\">\n <h2 class=\"vault-heading\">Webinar Replays</h2>\n </div>\n </div>\n\n <div class=\"row mt-5 video-row\">\n\n <div class=\"col-md-4 mb-4\">\n <div class=\"vault-card text-center p-4\">\n <h5 class=\"badge-title\">REPLAY:</h5>\n <p class=\"event-title mb-1\">Webinar with Inforcer & CloudOlive:</p>\n <p class=\"event-date\">Make more on Microsoft</p>\n\n <img *ngIf=\"!videoStates.inforcer.loaded\"\n src=\"/assets/img/resource/webinar-inforcer.png\"\n class=\"img-fluid my-3\"\n alt=\"Webinar\" />\n\n <iframe *ngIf=\"videoStates.inforcer.loaded\"\n class=\"embed-responsive-item my-3\"\n [title]=\"videoTitle\"\n [src]=\"videoStates.inforcer.url\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen>\n </iframe>\n\n <button class=\"vault-btn mt-3\" (click)=\"loadVideo('inforcer')\">\n <span class=\"text\">Watch now</span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n </div>\n\n <div class=\"col-md-4 mb-4\">\n <div class=\"vault-card text-center p-4\">\n <h5 class=\"badge-title\">REPLAY:</h5>\n <p class=\"event-title mb-1\">Webinar with Inforcer & CloudOlive:</p>\n <p class=\"event-date\">Make more on Microsoft</p>\n\n <img *ngIf=\"!videoStates.inforcer2.loaded\"\n src=\"/assets/img/resource/webinar-inforcer.png\"\n class=\"img-fluid my-3\"\n alt=\"Webinar\" />\n\n <iframe *ngIf=\"videoStates.inforcer2.loaded\"\n class=\"embed-responsive-item my-3\"\n [title]=\"videoTitle\"\n [src]=\"videoStates.inforcer2.url\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen>\n </iframe>\n\n <button class=\"vault-btn mt-3\" (click)=\"loadVideo('inforcer2')\">\n <span class=\"text\">Watch now</span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n </div>\n\n <div class=\"col-md-4 mb-4\">\n <div class=\"vault-card text-center p-4\">\n <h5 class=\"badge-title\">REPLAY:</h5>\n <p class=\"event-title mb-1\">Webinar with Huntress & CloudOlive:</p>\n <p class=\"event-date\">MSP Thrive – Security</p>\n\n <img *ngIf=\"!videoStates.huntress.loaded\"\n src=\"/assets/img/resource/webinar-huntress.png\"\n class=\"img-fluid my-3\"\n alt=\"Webinar\" />\n\n <iframe *ngIf=\"videoStates.huntress.loaded\"\n class=\"embed-responsive-item my-3\"\n [title]=\"videoTitle\"\n [src]=\"videoStates.huntress.url\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen>\n </iframe>\n\n <button class=\"vault-btn mt-3\" (click)=\"loadVideo('huntress')\">\n <span class=\"text\">Watch now</span>\n <span class=\"arrow\">→</span>\n </button>\n </div>\n </div>\n\n </div>\n </div>\n</section>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pw-upcoming-event-card',\n templateUrl: './upcoming-event-cards.component.html',\n styleUrls: ['./upcoming-event-cards.component.scss']\n})\nexport class UpcomingEventCardComponent {\n @Input() showEventContent = false;\n}\n","<section class=\"msp-vault-section bg-white text-center py-5 extra-top-padding section-outer\">\n <div class=\"container\">\n <div *ngIf=\"showEventContent\" class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h2 class=\"section-heading\">Events & Webinars:</h2>\n <a class=\"view-all\" routerLink=\"/resources/events\">VIEW ALL ></a>\n </div>\n <div *ngIf=\"!showEventContent\" class=\"d-md-flex justify-content-between align-items-start\">\n <div class=\"vault-header\">\n <h2 class=\"vault-heading\">Upcoming Events</h2>\n </div>\n </div>\n\n <div class=\"row mt-5 d-flex flex-wrap justify-content-center gap-4 video-row\">\n <div class=\"vault-card text-center p-4\">\n <h5 class=\"badge-title\">UPCOMING:</h5>\n\n <p class=\"event-title mb-1\">Unlock Cyber Success</p>\n <p class=\"event-date\">20<sup>th</sup> June 2025</p>\n\n <img\n src=\"/assets/img/resource/upcoming-event.png\"\n class=\"img-fluid my-3\"\n alt=\"Webinar\" />\n <a class=\"vault-btn mt-3\" href=\"#\">\n <span class=\"text\">Register Now</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n <div class=\"vault-card text-center p-4\">\n <h5 class=\"badge-title\">UPCOMING:</h5>\n\n <p class=\"event-title mb-1\">Unlock Cyber Success</p>\n <p class=\"event-date\">20<sup>th</sup> June 2025</p>\n\n <img\n src=\"/assets/img/resource/upcoming-event.png\"\n class=\"img-fluid my-3\"\n alt=\"Webinar\" />\n <a class=\"vault-btn mt-3\" href=\"#\">\n <span class=\"text\">Register Now</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n <div class=\"vault-card text-center p-4\">\n <h5 class=\"badge-title\">UPCOMING:</h5>\n\n <p class=\"event-title mb-1\">Unlock Cyber Success</p>\n <p class=\"event-date\">20<sup>th</sup> June 2025</p>\n\n <img\n src=\"/assets/img/resource/upcoming-event.png\"\n class=\"img-fluid my-3\"\n alt=\"Webinar\" />\n <a class=\"vault-btn mt-3\" href=\"#\">\n <span class=\"text\">Register Now</span>\n <span class=\"arrow\">→</span>\n </a>\n </div>\n </div>\n </div>\n</section>\n","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { TOKEN_KEY } from '@posiwise/common-utilities';\n\nimport { ResourceService } from '../../../resource.service';\n\n@Component({\n selector: 'pw-resource-blog',\n templateUrl: './resource-webinars.component.html',\n styleUrls: [\n './resource-webinars.component.scss',\n '../resources/resources-shared.component.scss'\n ]\n})\nexport class ResourceWebinarComponent extends AppBaseComponent implements OnInit {\n subscriptionId: number;\n masterSubscriptionId: number;\n posts = [];\n upcomingPosts = [];\n userLoggedIn: boolean;\n blogPostTag;\n\n constructor(\n private readonly resourceService: ResourceService,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(response => {\n this.subscriptionId = response;\n });\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.subscriptionId = data?.subscriptionId;\n console.log(this.subscriptionId);\n this.getPostTags();\n });\n }\n });\n }\n\n private getPostTags() {\n this.tagService\n .getTagsByType('post_categories', {}, this.subscriptionId || this.masterSubscriptionId)\n .subscribe(response => {\n this.blogPostTag = response.tags.find(tag => tag.name === 'Events');\n this.getPosts(1, 100);\n this.getUpcomingPosts(1, 100);\n });\n }\n\n getPosts(page: number, pageSize: number) {\n console.log(this.blogPostTag);\n this.resourceService\n .getPublicPosts(\n this.subscriptionId,\n page,\n pageSize,\n '',\n this.blogPostTag?.tag_category_id\n )\n .subscribe(response => {\n console.log(response.posts, this.blogPostTag);\n this.posts = response.posts\n .filter(post =>\n post.tags?.some(\n tag =>\n tag.tag_category_id === this.blogPostTag?.tag_category_id &&\n new Date(post.when) < new Date()\n )\n )\n .sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n )\n .slice(0, 12);\n });\n }\n getUpcomingPosts(page: number, pageSize: number) {\n this.resourceService\n .getPublicPosts(\n this.subscriptionId,\n page,\n pageSize,\n '',\n this.blogPostTag?.tag_category_id\n )\n .subscribe(response => {\n console.log(response.posts, this.blogPostTag);\n this.upcomingPosts = response.posts\n .filter(post =>\n post.tags?.some(\n tag =>\n tag.tag_category_id === this.blogPostTag?.tag_category_id &&\n new Date(post.when) > new Date()\n )\n )\n .sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n )\n .slice(0, 12);\n });\n }\n}\n","<pw-resource-header></pw-resource-header>\n\n\n<section class=\"bg-white pricing-section\">\n <div class=\"nce-banner\">\n <div class=\"container d-flex flex-column flex-lg-row align-items-center justify-content-between\">\n\n <!-- Left Content -->\n <div class=\"text-content\">\n <div class=\"nce-heading\">\n <h1 class=\"nce-header mb-4\">\n Events & Webinars\n <span class=\"blue-text\"></span>\n </h1>\n </div>\n </div>\n\n <!-- Add directly below .text-content, still inside .container -->\n <div class=\"text-extension mt-4\">\n <p class=\"intro\">\n We're big on community and even<br>bigger on sharing what works.\n </p>\n <div class=\"cta-buttons d-flex gap-3 flex-wrap mt-3\">\n <p class=\"intro\">\n Whether it's a deep-dive webinar,<br>\n product masterclass or a virtual<br>\n roundtable with industry pros - these<br>\n sessions are built to help MSPs like<br>\n you grow smarter, bill better, and<br>\n stay ahead.\n </p>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"image-content ms-lg-5 mt-5 mt-lg-0\">\n <img class=\"nce-math-img\"\n src=\"/assets/img/resource/math.png\"\n alt=\"NCEasy laptop screen\" />\n <img class=\"nce-laptop-img\"\n src=\"/assets/img/resource/events-women.png\"\n alt=\"NCEasy laptop screen\" />\n </div>\n\n </div>\n </div>\n <hr class=\"nce-divider\" />\n</section>\n\n<section class=\"bg-white\">\n <pw-upcoming-event-card></pw-upcoming-event-card>\n <hr class=\"nce-divider card-divider\" />\n</section>\n\n<section class=\"bg-white\">\n <pw-replay-event-card></pw-replay-event-card>\n</section>\n\n\n\n\n<pw-trial-4-contact-us></pw-trial-4-contact-us>\n","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { Tag } from '@posiwise/common-utilities';\n\n@Component({\n selector: 'pw-resource-tags',\n templateUrl: './resource-tags.component.html',\n styleUrls: [\n './resource-tags.component.scss',\n '../../resources-hub/resources-hub.component.scss'\n ]\n})\nexport class ResourceTagComponent extends AppBaseComponent implements OnInit {\n tags = [];\n subscriptionId: number;\n userLoggedIn: boolean;\n loading = true;\n loaded = false;\n\n selectedTag: Tag | null = null;\n\n constructor(\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.localStorage.getItem$('product').subscribe(product => {\n const data = product ? JSON.parse(product) : null;\n this.subscriptionId =\n data?.subscriptionId || this.appConfig.master_subscription.subscription_id;\n this.getTags();\n });\n }\n\n selectTag(tag: Tag): void {\n this.selectedTag = tag;\n }\n\n getTags() {\n this.loading = true;\n this.tagService\n .getTagsByType('post_categories', {}, this.subscriptionId)\n .subscribe(res => {\n this.tags = (res?.tags || [])\n .filter(tag => tag.visible_in_resources)\n .map(tag => ({\n ...tag,\n iconClass: `fa ${tag.icon_name}` // e.g. fa fa-check\n }));\n })\n .add(() => {\n this.loading = false;\n this.loaded = true;\n });\n }\n}\n","<section class=\"tag-section py-5 bg-white\" *ngIf=\"tags?.length\">\n <div class=\"container\">\n <div class=\"row g-4\">\n <div class=\"col-md-3 col-sm-6 mb-4\" *ngFor=\"let tag of tags\">\n <div (click)=\"selectTag(tag)\" class=\"resource-card d-flex align-items-center p-3\" [ngClass]=\"{ 'selected': selectedTag?.name === tag.name }\">\n <i [class]=\"tag.iconClass + ' resource-icon me-3'\"></i>\n <span class=\"resource-text\">{{ tag.name }}</span>\n </div>\n </div>\n </div>\n </div>\n</section>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'pw-vault-section',\n templateUrl: './vault-section.component.html',\n styleUrls: ['./vault-section.component.scss']\n})\nexport class VaultSectionComponent {}\n","<section class=\"vault-section\">\n <div class=\"skewed-bg\"></div>\n <div class=\"container\">\n <div class=\"row align-items-center vault-row\">\n <!-- Left Content -->\n <div class=\"col-lg-6 col-12 text-content\">\n <h2 class=\"headline\">Expand, upskill,<br />bill smarter.</h2>\n <div class=\"description-content\">\n <p class=\"description\">\n Welcome to <strong>The MSP Vault by CloudOlive</strong>. Explore our value-packed collection resources, designed to help you upskill, soak up all the benefits of CloudOlive, and stay ahead in the evolving reseller landscape.\n </p>\n <a class=\"cta-btn\" href=\"/resources#msp-case-studies\">Jump to CloudOlive Solutions</a>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"col-lg-6 col-12 img-wrapper\">\n <img src=\"/assets/img/resource/vault-women.png\" alt=\"Vault Mockup\" class=\"img-fluid\" />\n </div>\n </div>\n </div>\n </section>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'pw-resources',\n templateUrl: './resources.component.html',\n styleUrls: ['./resources.component.scss']\n})\nexport class ResourceComponent {}\n","\n<pw-resource-header></pw-resource-header>\n<pw-vault-section></pw-vault-section>\n<pw-resource-tags></pw-resource-tags>\n<pw-resource-video-card [showVideoSection]=\"true\"></pw-resource-video-card>\n<pw-upcoming-event-card [showEventContent]=\"true\"></pw-upcoming-event-card>\n<pw-resource-cards></pw-resource-cards>\n<pw-case-studies-card [showCaseStudyHeader]=\"true\"></pw-case-studies-card>\n<pw-resource--vault [showVaultSection]=\"true\"></pw-resource--vault>\n<pw-resource-note-card [releaseHeader]=\"true\"></pw-resource-note-card>\n<pw-trial-4-contact-us></pw-trial-4-contact-us>","import {\n Component,\n HostListener,\n Injector,\n OnDestroy,\n OnInit,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { Resource, Tag, TOKEN_KEY } from '@posiwise/common-utilities';\n\nimport { forkJoin } from 'rxjs';\n\nimport { ResourceService } from '../../../resource.service';\n\n@Component({\n selector: 'pw-posts-list',\n templateUrl: './resources-hub.component.html',\n styleUrls: [\n './resources-hub.component.scss',\n '../resource-company-card/resource-company-card.component.scss'\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class ResourceHubComponent extends AppBaseComponent implements OnInit, OnDestroy {\n private delayTimeout: ReturnType<typeof setTimeout> | null = null;\n\n data = [];\n\n posts: Resource[] = [];\n tags: Tag[] = [];\n\n selectedTags = [];\n\n currentPage = 1;\n pageSize = 20;\n objectCount = 0;\n\n searchTextItems = '';\n searchInput = false;\n\n readingTime: number;\n\n totalRecords: number;\n\n loading = true;\n loaded = false;\n\n masterSubscriptionId: number;\n subscriptionId;\n userLoggedIn: boolean;\n\n scrollLocked = false;\n\n iconClasses: string[] = [\n 'fa-lightbulb',\n 'fa-rocket',\n 'fa-file-alt',\n 'fa-users',\n 'fa-video',\n 'fa-pencil-alt',\n 'fa-book-open',\n 'fa-cogs'\n ];\n\n constructor(\n private readonly resourceService: ResourceService,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.subscriptionId = data?.subscriptionId;\n });\n }\n });\n this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;\n this.getPostsAndTags();\n this.readingTime = 0;\n }\n\n getPostsAndTags() {\n this.loading = true;\n this.loaded = false;\n forkJoin({\n resPosts: this.resourceService.getPublicPosts(\n this.masterSubscriptionId,\n this.currentPage,\n this.pageSize,\n this.searchTextItems\n ),\n resTags: this.tagService.getTagsByType(\n 'post_categories',\n {},\n this.subscriptionId || this.masterSubscriptionId\n )\n })\n .subscribe(res => {\n this.posts = res?.resPosts?.posts;\n this.objectCount = res?.resPosts.object_count;\n this.data = res?.resPosts?.posts;\n this.totalRecords = this.posts?.length;\n\n this.tags = res?.resTags?.tags?.filter(tag => tag.visible_in_resources);\n this.tags = this.tags.map(tag => ({\n ...tag,\n iconClass: this.getRandomIcon()\n }));\n })\n .add(() => {\n this.loading = false;\n this.loaded = true;\n });\n }\n\n getRandomIcon(): string {\n const randomIndex = Math.floor(Math.random() * this.iconClasses.length);\n return 'fa ' + this.iconClasses[randomIndex];\n }\n\n getPosts(page: number, pageSize: number, fetchAll = false, append = false) {\n if (fetchAll) this.selectedTags = [];\n\n if (!append) {\n this.loading = true;\n this.loaded = false;\n }\n\n const tagCategoryParam = this.selectedTags.map(tag => tag.tag_category_id).join(',');\n\n this.resourceService\n .getPublicPosts(\n this.masterSubscriptionId,\n page,\n append ? 10 : pageSize,\n this.searchTextItems,\n tagCategoryParam\n )\n .subscribe(response => {\n this.objectCount = response.object_count;\n this.posts = append ? [...this.posts, ...response.posts] : response.posts;\n this.data = [...this.posts];\n this.totalRecords = this.posts?.length;\n })\n .add(() => {\n this.loading = false;\n this.loaded = true;\n });\n }\n\n onSearch(seconds: number) {\n let delay = 0;\n delay = seconds * 1000;\n clearTimeout(this.delayTimeout);\n const delayTimeout = setTimeout(() => {\n this.currentPage = 1;\n this.getPosts(1, this.pageSize);\n }, delay);\n\n this.delayTimeout = delayTimeout;\n }\n\n @HostListener('window:scroll', [])\n onWindowScroll(): void {\n const scrollPosition = window.scrollY + window.innerHeight;\n const pageHeight = document.documentElement.scrollHeight;\n\n const nearBottom = scrollPosition >= pageHeight - 100;\n\n if (\n nearBottom &&\n this.posts.length < this.objectCount &&\n !this.loading &&\n !this.scrollLocked\n ) {\n this.scrollLocked = true;\n this.currentPage += 1;\n\n this.getPosts(this.currentPage, this.pageSize, false, true);\n\n setTimeout(() => {\n this.scrollLocked = false;\n }, 500);\n }\n }\n\n isSelected(tagId: number): boolean {\n return this.selectedTags.map(tag => tag.id).includes(tagId);\n }\n\n tagPost(selectedTag) {\n const index = this.selectedTags.findIndex(\n tag => tag.tag_category_id === selectedTag.tag_category_id && tag.id === selectedTag.id\n );\n\n if (index === -1) {\n this.selectedTags.push({\n tag_category_id: selectedTag.tag_category_id,\n id: selectedTag.id\n });\n } else {\n this.selectedTags.splice(index, 1);\n }\n\n this.currentPage = 1;\n this.getPosts(1, this.pageSize);\n }\n\n thisPostReadingTime(text: string): string {\n if (text) {\n const wordsPerMinute = 200;\n const noOfWords = text.split(/\\s/g).length;\n const minutes = noOfWords / wordsPerMinute;\n const readTime = Math.ceil(minutes);\n\n return `${readTime} minute read`;\n }\n\n return '';\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<pw-resource-header></pw-resource-header>\n<div class=\"all-posts py-5\">\n <div class=\"row mt-1 mb-4 px-2\">\n <div class=\"col-md-9\">\n </div>\n <div class=\"col-md-3\">\n <div class=\"text-end mt-0 mt-sm-3 d-flex\">\n <div class=\"search-wrapper position-relative\">\n <i class=\"fa fa-search search-icon\"></i>\n <input type=\"text\" [(ngModel)]=\"searchTextItems\" pInputText size=\"50\" placeholder=\"Search resources...\"\n (input)=\"onSearch(1)\"\n class=\"search-input\" />\n </div>\n </div>\n </div>\n </div>\n <div class=\"row resource-row\">\n <!-- All Resources Card -->\n <div class=\"col-md-3 col-sm-6 mb-4\">\n <div class=\"resource-card d-flex align-items-center p-3\"\n (keydown.enter)=\"getPosts(1, 20, true)\"\n [ngClass]=\"{ 'selected': selectedTags.length === 0 }\"\n (click)=\"getPosts(1, 20, true)\">\n <i class=\"fa fa-layer-group resource-icon me-3\"></i>\n <span class=\"resource-text\">All Resources</span>\n </div>\n </div>\n\n <!-- Dynamic Tags -->\n <div class=\"col-md-3 col-sm-6 mb-4\"\n *ngFor=\"let tag of tags\">\n <div\n class=\"resource-card d-flex align-items-center p-3\"\n (keydown.enter)=\"tagPost(tag)\"\n [ngClass]=\"{ 'selected': isSelected(tag.id) }\"\n (click)=\"tagPost(tag)\">\n <i class=\"fa\" [ngClass]=\"tag.iconClass + ' resource-icon me-3'\"></i>\n <span class=\"resource-text\">{{ tag.name }}</span>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"loading && !loaded\">\n <div class=\"w-100 text-center mt-3\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n </ng-container>\n <ng-container *ngIf=\"posts?.length && !loading\">\n <div>\n <div class=\"blog-list\">\n <div class=\"row mt-4 ms-1 me-1 blog-listing\"\n *ngFor=\"let post of data\">\n <div class=\"col-md-6 col-sm-12 col-xs-12 my-auto\"\n [routerLink]=\"['/resources/view', post.slug]\">\n <div class=\"list-blog-image\">\n <img [src]=\"post.picture?.url\"\n alt=\"Post List\"\n class=\"img-fluid\" />\n </div>\n </div>\n <div class=\"col-md-6 col-sm-12 col-xs-12 px-4 position-relative\">\n <div class=\"mt-4\">\n <div class=\"author mb-3 d-flex\">\n <div class=\"avatar-image\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\">\n <img *ngIf=\"post.author?.avatar\"\n [src]=\"post.author?.avatar[0]?.url\"\n alt=\"Author\" />\n <img *ngIf=\"!post.author?.avatar\"\n src=\"/assets/img/icons/male.png\"\n alt=\"Author\"\n class=\"default-user-image\" />\n </a>\n </div>\n\n <div class=\"author-name ps-2\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\"\n class=\"name\">\n {{ post.author.first_name }}\n <i class=\"fas fa-crown\" aria-hidden=\"true\"></i></a>\n <ul>\n <li>\n <a href=\"javascript:void(0);\">\n {{ post.published_at | date: 'dd/MM/yyyy' }}\n </a>\n </li>\n <li>.</li>\n <li>\n <a href=\"javascript:void(0);\">{{ thisPostReadingTime(post.body) }}\n </a>\n </li>\n </ul>\n </div>\n <div class=\"share-post\">\n <div class=\"dropdown\">\n <a href=\"#\"\n aria-label=\"Post Menu\"\n id=\"dropdownMenuLink\"\n data-bs-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n (keydown.enter)=\"$event.preventDefault(); $event.target.click()\"\n (keydown.space)=\"$event.preventDefault(); $event.target.click()\"\n aria-expanded=\"false\">\n <i class=\"fas fa-ellipsis-v\" aria-hidden=\"true\"></i>\n </a>\n <div class=\"dropdown-menu\"\n aria-labelledby=\"dropdownMenuLink\">\n <a class=\"dropdown-item\"\n href=\"http://www.facebook.com/\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <i class=\"fas fa-share\" aria-hidden=\"true\"></i> Share Post\n </a>\n </div>\n </div>\n </div>\n </div>\n <h4 [routerLink]=\"['/resources/view', post.slug]\"\n class=\"title my-3\">{{ post.title }}</h4>\n <p [routerLink]=\"['/resources/view', post.slug]\"\n class=\"body mb-5 pb-3 post-body-text\">\n {{ post.body | removeHtml: 'quill' | textTruncate: 200 }}\n </p>\n <div class=\"blog-view py-3 blog-list-write-view\">\n <ul class=\"d-flex\">\n <li>{{ post.view !== null ? post.view : '0' }} View</li>\n <li><a [routerLink]=\"['/resources/view', post.slug]\">Write Comment</a></li>\n <li>\n <a [routerLink]=\"['/resources/view', post.slug]\" aria-label=\"Blog\"><i class=\"far fa-heart\" aria-hidden=\"true\"></i></a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!posts?.length && loaded\">\n <pw-no-data [withImage]=\"true\" message=\"We couldn't find any resources.\" > </pw-no-data>\n </ng-container>\n</div>\n","import { Component, Injector, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { CustomToastService } from '@posiwise/common-services';\nimport { RecentPost, Resource, ResourceComment, TOKEN_KEY, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { ResourceService } from '../../../resource.service';\nimport { ResourceBlog } from '../../../shared/models/resource.model';\n\n@Component({\n selector: 'pw-post-read',\n templateUrl: './resources-read.component.html',\n styleUrls: ['./resources-read.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ResourceReadComponent extends AppBaseComponent implements OnInit, OnDestroy {\n post: Resource;\n user: User;\n recentPosts: RecentPost[] = [];\n postComments: ResourceComment[] = [];\n\n slug: string;\n masterSubscriptionId: number;\n\n commentForm: UntypedFormGroup;\n\n userLoggedIn = false;\n buttonBusy = false;\n\n constructor(\n private readonly resourceService: ResourceService,\n private readonly toastr: CustomToastService,\n injector: Injector,\n private readonly sanitizer: DomSanitizer\n ) {\n super(injector);\n this.commentForm = ResourceBlog.getResourcePostsForm();\n }\n\n ngOnInit() {\n this.masterSubscriptionId = this.appConfig.master_subscription.subscription_id;\n this.route.params.subscribe(params => {\n this.slug = params['slug'] || '';\n this.getBlogItem(this.slug);\n });\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.userService.getUserInfo().subscribe(data => {\n this.user = data;\n });\n }\n });\n }\n\n readingTime(text: string) {\n if (text) {\n const textContent = text.toString();\n const wordsPerMinute = 200;\n const noOfWords = textContent.split(/\\s/g).length;\n const minutes = noOfWords / wordsPerMinute;\n const readTime = Math.ceil(minutes);\n\n return `${readTime} minute read`;\n }\n\n return '';\n }\n\n handleImageError(event: Event, fallbackPath): void {\n HelperService.handleImageFallbackPath(event, fallbackPath);\n }\n\n private getBlogItem(slug: string) {\n this.resourceService.getPostBySlug(slug).subscribe(response => {\n let blogBody;\n if (response?.body) {\n blogBody = HelperService.sanitizeQuillBody(response.body, this.sanitizer);\n }\n this.post = { ...response, body: blogBody };\n this.postComments = response.entity_comments;\n this.getPosts(1, 4);\n });\n }\n\n private getPosts(page: number, pageSize: number) {\n this.resourceService\n .getPublicPosts(this.masterSubscriptionId, page, pageSize, '')\n .subscribe(response => {\n this.recentPosts = response.posts.filter(post => post.slug !== this.post.slug);\n });\n }\n\n onComment() {\n this.buttonBusy = true;\n const data = { ...this.commentForm.value };\n data.related_entity_id = this.post?.id;\n data.related_entity_type = 'Post';\n data.user_id = this.user?.id;\n this.resourceService\n .postComments(data)\n .subscribe(() => {\n this.getBlogItem(this.slug);\n this.commentForm.reset();\n this.toastr.success(this.translation.translate('Resource.Posts.CommentAdded'));\n })\n .add(() => {\n this.buttonBusy = false;\n });\n }\n\n tagPost(selectedTag) {\n this.recentPosts = this.recentPosts.filter(element => {\n let filtered;\n if (element.tags?.length) {\n filtered = element.tags.filter(\n tag => tag.tag_category_id === selectedTag.tag_category_id\n );\n\n return { element, filtered };\n }\n\n return {};\n });\n }\n\n trackByTagId(_index: number, item: { id: number }) {\n return item.id;\n }\n\n trackByRecentPost(_index: number, item: { id: number }) {\n return item.id;\n }\n\n trackByComment(_index: number, item: { id: number }) {\n return item.id;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<pw-header/>\n<div class=\"read-post mt-5 pt-5\">\n <div class=\"show-blog\">\n <div class=\"row\">\n <!-- content -->\n <div class=\"col-12\">\n <ul class=\"d-flex align-items-center mb-4 position-relative\">\n <li>\n <a href=\"javascript:void(0);\">\n <div class=\"avatar-image\">\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\">\n <img *ngIf=\"post?.author?.avatar\"\n [src]=\"post?.author?.avatar[0].url\"\n alt=\"author\" />\n <img *ngIf=\"!post?.author?.avatar\"\n height=\"45\"\n width=\"45\"\n src=\"/assets/img/icons/male.png\"\n alt=\"author\" /></a>\n </div>\n </a>\n </li>\n <li>\n <a [attr.disabled]=\"!userLoggedIn\"\n [routerLink]=\"['/members', post?.author?.slug]\"\n class=\"name\">\n {{ post?.author?.first_name }}\n <i class=\"fas fa-crown\" aria-hidden=\"true\"></i></a>\n </li>\n <li>\n <a class=\"text-dark\"\n href=\"javascript:void(0);\">{{\n post?.author.published_at\n }}</a>\n </li>\n <li>.</li>\n <li>\n <a class=\"text-dark\"\n href=\"javascript:void(0);\">\n {{ readingTime(post?.body) }}\n </a>\n </li>\n <li class=\"social-media\">\n <div class=\"share-post\">\n <div class=\"dropdown\">\n <a href=\"#\"\n id=\"dropdownMenuLink2\"\n data-bs-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-label=\"Menu\"\n (keydown.enter)=\"$event.preventDefault(); $event.target.click()\"\n (keydown.space)=\"$event.preventDefault(); $event.target.click()\"\n aria-expanded=\"false\">\n <i class=\"fas fa-ellipsis-v\" aria-hidden=\"true\"></i>\n </a>\n\n <div class=\"dropdown-menu\"\n aria-labelledby=\"dropdownMenuLink2\">\n <a data-bs-toggle=\"modal\"\n data-bs-target=\"#exampleModal\"\n class=\"dropdown-item\"\n href=\"javascript:void(0);\">\n <i class=\"fas fa-share\" aria-hidden=\"true\"></i> Share Post\n </a>\n </div>\n </div>\n </div>\n </li>\n </ul>\n <h2 class=\"mb-3\">{{ post?.title }}</h2>\n <div class=\"ql-snow body-quill\"\n >\n <div class=\"ql-editor body post-body-text\"\n [innerHTML]=\"post?.body\">\n </div>\n </div>\n\n <ul class=\"bottom-social-icons d-flex justify-content-between mt-5 border-top border-bottom py-3\">\n <li class=\"social-media-blog-page\">\n <div class=\"share-post\">\n <div class=\"dropdown\">\n <a href=\"#\"\n aria-label=\"Menu\"\n (keydown.enter)=\"$event.preventDefault(); $event.target.click()\"\n (keydown.space)=\"$event.preventDefault(); $event.target.click()\"\n id=\"dropdownMenuLink\"\n data-bs-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\">\n <i class=\"fas fa-ellipsis-v\" aria-hidden=\"true\"></i>\n </a>\n\n <div class=\"dropdown-menu\"\n aria-labelledby=\"dropdownMenuLink\">\n <a data-bs-toggle=\"modal\"\n data-bs-target=\"#exampleModal\"\n class=\"dropdown-item\"\n href=\"javascript:void(0);\">\n <i class=\"fas fa-share\" aria-hidden=\"true\"></i> Share Post\n </a>\n </div>\n </div>\n </div>\n </li>\n <li>\n <ul>\n <li *ngFor=\"let tag of post?.tags; trackBy: trackByTagId\"\n (keydown.enter)=\"tagPost(tag)\"\n (click)=\"tagPost(tag)\">\n {{ tag.name }}\n </li>\n </ul>\n </li>\n </ul>\n <ul class=\"d-flex justify-content-between mt-3 views\">\n <li>\n <span>{{ post?.view || 0 }} views</span>\n </li>\n <li><i class=\"far fa-heart\" aria-hidden=\"true\"></i></li>\n </ul>\n </div>\n <!--content end -->\n </div>\n <!-- modal for share buttons -->\n <div class=\"modal fade\"\n id=\"exampleModal\"\n tabindex=\"-1\"\n aria-labelledby=\"exampleModalLabel\">\n <div class=\"modal-dialog modal-dialog-centered\" >\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\"\n id=\"exampleModalLabel\">Share the post</h5>\n <button type=\"button\"\n class=\"btn-close float-end\"\n data-dismiss=\"modal\"\n aria-label=\"Close\">\n <span>&times;</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <share-buttons theme=\"material-dark\"\n show=\"7\"></share-buttons>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-primary\"\n data-dismiss=\"modal\">\n Close\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- recent posts -->\n <div class=\"related-posts mt-5\">\n <ul class=\"d-flex justify-content-between\">\n <li>\n <h5>Recent Resources</h5>\n </li>\n <li><a [routerLink]=\"['/resources/view']\">See All</a></li>\n </ul>\n <div class=\"row mt-4\">\n <div class=\"col-sm-6 col-md-6 col-lg-4 col-xs-12 mb-2\"\n *ngFor=\"let recentPost of recentPosts; trackBy: trackByRecentPost\">\n <div class=\"recent-post\"\n [routerLink]=\"['/resources/view', recentPost.slug]\">\n <div class=\"blog-image\">\n <img [src]=\"recentPost.picture.url\"\n alt=\"Resource\" />\n </div>\n <h5 class=\"pt-4 blog-title ps-3 pe-3\">{{ recentPost?.title }}</h5>\n <div class=\"blog-view pt-3 ps-3 pe-3\">\n <p>{{ recentPost.view !== null ? recentPost.view : '0' }} View</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row mt-5 mb-4\">\n <div class=\"col-12\">\n <form class=\"comments-sec\"\n [formGroup]=\"commentForm\"\n (ngSubmit)=\"onComment()\"\n *ngIf=\"userLoggedIn; else userLoggedOut\">\n <div class=\"col-12 pt-4\">\n <!-- Comment Massage -->\n <pw-input-container label=\"Write a response\"\n name=\"comment\"\n errorMsg=\"Please enter comment\">\n <textarea type=\"text\"\n class=\"form-control\"\n formControlName=\"comment\"></textarea>\n </pw-input-container>\n\n <div class=\"text-end mt-4\">\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n <ng-template #userLoggedOut>\n <p class=\"text-center pt-3 pb-3 user-not-logged-in\">\n <a [routerLink]=\"['/login']\">Log in</a>\n to leave a comment!\n </p>\n </ng-template>\n </div>\n </div>\n <div class=\"row mt-5 mb-5\">\n <div class=\"col-12\"\n *ngFor=\"let comment of postComments; trackBy: trackByComment\">\n <div class=\"comment-post mt-2\">\n <img *ngIf=\"comment?.user?.avatar\"\n [src]=\"comment.user?.avatar[0]?.url\"\n alt=\"avatar\"\n width=\"45\"\n height=\"45\"\n class=\"rounded-circle me-3 mb-2\"\n (error)=\"handleImageError($event, 'assets/img/icons/male.png')\" />\n <img *ngIf=\"!comment?.user?.avatar\"\n alt=\"avatar\"\n width=\"45\"\n height=\"45\"\n class=\"rounded-circle me-3 mb-2\"\n src=\"assets/img/icons/male.png\" />\n <small>{{ comment.user?.first_name ? comment.user?.first_name : '' }}\n {{ comment.user?.last_name ? comment.user?.last_name : '' }}\n </small>\n <p>{{ comment.comment }}</p>\n <p class=\"text-end comment-date\">{{ comment.created_at | date: 'dd/MM/yyyy' }}</p>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { TOKEN_KEY } from '@posiwise/common-utilities';\n\nimport { ResourceService } from '../../../resource.service';\n\n@Component({\n selector: 'pw-resource-blog',\n templateUrl: './white-papers.component.html',\n styleUrls: [\n './white-papers.component.scss',\n '../resources/resources-shared.component.scss',\n '../resource-post/related-resources/related-resources.component.scss'\n ]\n})\nexport class WhitePaperComponent extends AppBaseComponent implements OnInit {\n subscriptionId: number;\n masterSubscriptionId: number;\n posts = [];\n userLoggedIn: boolean;\n blogPostTag;\n\n constructor(\n private readonly resourceService: ResourceService,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(response => {\n this.subscriptionId = response;\n });\n this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {\n this.userLoggedIn = !!res;\n if (this.userLoggedIn) {\n this.localStorage.getItem$('product').subscribe(res => {\n const data = res ? JSON.parse(res) : null;\n this.subscriptionId = data?.subscriptionId;\n console.log(this.subscriptionId);\n this.getPostTags();\n });\n }\n });\n }\n\n private getPostTags() {\n this.tagService\n .getTagsByType('post_categories', {}, this.subscriptionId || this.masterSubscriptionId)\n .subscribe(response => {\n this.blogPostTag = response.tags.find(tag => tag.name === 'White Papers');\n this.getPosts(1, 100);\n });\n }\n\n getPosts(page: number, pageSize: number) {\n console.log(this.blogPostTag);\n this.resourceService\n .getPublicPosts(\n this.subscriptionId,\n page,\n pageSize,\n '',\n this.blogPostTag.tag_category_id\n )\n .subscribe(response => {\n console.log(response.posts, this.blogPostTag);\n this.posts = response.posts\n .filter(post =>\n post.tags?.some(\n tag => tag.tag_category_id === this.blogPostTag.tag_category_id\n )\n )\n .sort(\n (a, b) =>\n new Date(b.published_at).getTime() - new Date(a.published_at).getTime()\n )\n .slice(0, 12);\n });\n }\n}\n","<pw-resource-header></pw-resource-header>\n\n<section class=\"bg-white pricing-section\">\n <div class=\"nce-banner\">\n <div class=\"container d-flex flex-column flex-lg-row align-items-center justify-content-between\">\n\n <!-- Left Content -->\n <div class=\"text-content\">\n <div class=\"nce-heading\">\n <h1 class=\"nce-header mb-4\">\n Whitepapers & Tools\n <span class=\"blue-text\"></span>\n </h1>\n </div>\n </div>\n\n <!-- Add directly below .text-content, still inside .container -->\n <div class=\"text-extension mt-4\">\n <p class=\"intro\">\n If you like your insights practical and<br>your downloads actually useful - you’re<br>in the right place.\n </p>\n <div class=\"cta-buttons d-flex gap-3 flex-wrap mt-3\">\n <p class=\"intro\">\n From strategy-packed whitepapers to<br>\n ready-to-use guides and quizzes,<br>\n everything here is designed to help<br>\n MSPs sharpen their processes, plug<br>\n profit leaks, and scale with confidence.\n </p>\n </div>\n </div>\n\n <!-- Right Content -->\n <div class=\"image-content ms-lg-5 mt-5 mt-lg-0\">\n <img class=\"nce-math-img\"\n src=\"/assets/img/resource/math.png\"\n alt=\"NCEasy laptop screen\" />\n <img class=\"nce-laptop-img\"\n src=\"/assets/img/resource/white-paper-women.png\"\n alt=\"NCEasy laptop screen\" />\n </div>\n\n </div>\n </div>\n <hr class=\"nce-divider\" />\n</section>\n\n<pw-resource--vault></pw-resource--vault>\n\n<pw-trial-4-contact-us></pw-trial-4-contact-us>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { ResourceBlogComponent } from './components/resource-blogs/resource-blog.component';\nimport { ResourceCaseStudiesComponent } from './components/resource-case-studies/resource-case-studies.component';\nimport { ResourceIntegrationComponent } from './components/resource-integration/resource-integration.component';\nimport { ResourcePostComponent } from './components/resource-post/resource-post.component';\nimport { ResourceReleaseNoteComponent } from './components/resource-release-notes/resource-release-notes.component';\nimport { ResourceVideoComponent } from './components/resource-videos/resource-videos.component';\nimport { ResourceWebinarComponent } from './components/resource-webinars/resource-webinars.component';\nimport { ResourceComponent } from './components/resources/resources.component';\nimport { ResourceHubComponent } from './components/resources-hub/resources-hub.component';\nimport { WhitePaperComponent } from './components/white-papers/white-papers.component';\n\n// These are the private routes. The public routes and modules needs to be defined in public.routes.ts\nconst routes: Routes = [\n {\n path: '',\n component: ResourceComponent,\n data: {\n title: 'Resources Library',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'hub',\n component: ResourceHubComponent,\n data: {\n title: 'Resources - Hub',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'blogs',\n component: ResourceBlogComponent,\n data: {\n title: 'Resources - Blogs',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'videos',\n component: ResourceVideoComponent,\n data: {\n title: 'Resources - Videos',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'integrations',\n component: ResourceIntegrationComponent,\n data: {\n title: 'Resources - Integrations',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'release-notes',\n component: ResourceReleaseNoteComponent,\n data: {\n title: 'Resources - Release Notes',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'events',\n component: ResourceWebinarComponent,\n data: {\n title: 'Resources - Events',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'white-papers',\n component: WhitePaperComponent,\n data: {\n title: 'Resources - White Papers',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'case-studies',\n component: ResourceCaseStudiesComponent,\n data: {\n title: 'Resources - Case Studies',\n permission: 'Pages.Blog'\n }\n },\n {\n path: 'view/:slug',\n component: ResourcePostComponent,\n data: {\n title: 'Resources - Post',\n permission: 'Pages.Blog'\n }\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class BlogPublicRoutingModule {}\n","import { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { AlphaPublicModule } from '@posiwise/alpha-module';\nimport { GoogleAnalyticsService } from '@posiwise/common-services';\nimport { CoreTranslocoModule } from '@posiwise/core-transloco';\nimport { DirectivesModule } from '@posiwise/directives';\nimport { PipesModule } from '@posiwise/pipes';\nimport { PublicModule } from '@posiwise/public-modules';\nimport { SharedComponentsModule } from '@posiwise/shared-components';\n\nimport { QuillModule } from 'ngx-quill';\nimport { ShareButtonsModule } from 'ngx-sharebuttons/buttons';\nimport { ShareIconsModule } from 'ngx-sharebuttons/icons';\nimport { NgxUploaderModule } from 'ngx-uploader';\nimport { DropdownModule } from 'primeng/dropdown';\n\nimport { TranslocoModule } from '@jsverse/transloco';\n\nimport { ResourceService } from '../resource.service';\n\nimport { ResourceNoteCardComponent } from './components/reslease-note-card/release-note-card.component';\nimport { ResourceBlogComponent } from './components/resource-blogs/resource-blog.component';\nimport { ResourceCardListComponent } from './components/resource-card-list/resource-card-list.component';\nimport { CaseStudyCardComponent } from './components/resource-case-studies/case-studies-cards/case-studies-cards.component';\nimport { ResourceCaseStudiesComponent } from './components/resource-case-studies/resource-case-studies.component';\nimport { ResourceCompanyCardComponent } from './components/resource-company-card/resource-company-card.component';\nimport { ResourceIntegrationComponent } from './components/resource-integration/resource-integration.component';\nimport { RelatedResourcesComponent } from './components/resource-post/related-resources/related-resources.component';\nimport { ResourceCardComponent } from './components/resource-post/related-resources/resource-cards/resource-cards.component';\nimport { ResourcePostComponent } from './components/resource-post/resource-post.component';\nimport { ResourcePostDetailsComponent } from './components/resource-post/resource-post-details/resource-post-details.component';\nimport { ResourceReleaseNoteComponent } from './components/resource-release-notes/resource-release-notes.component';\nimport { ResourceVaultComponent } from './components/resource-vault/resource-vault.component';\nimport { ResourceVideoCardComponent } from './components/resource-videos/resource-video-cards/resource-video-cards.component';\nimport { ResourceVideoComponent } from './components/resource-videos/resource-videos.component';\nimport { ReplayEventCardComponent } from './components/resource-webinars/replay-event-cards/replay-event-cards.component';\nimport { ResourceWebinarComponent } from './components/resource-webinars/resource-webinars.component';\nimport { UpcomingEventCardComponent } from './components/resource-webinars/upcoming-event-cards/upcoming-event-cards.component';\nimport { ResourceTagComponent } from './components/resources/resource-tags/resource-tags.component';\nimport { ResourceComponent } from './components/resources/resources.component';\nimport { VaultSectionComponent } from './components/resources/vault-section/vault-section.component';\nimport { ResourceHubComponent } from './components/resources-hub/resources-hub.component';\nimport { ResourceReadComponent } from './components/resources-read/resources-read.component';\nimport { TestimonialCardListComponent } from './components/testimonial-card/testimonial-card.component';\nimport { WhitePaperComponent } from './components/white-papers/white-papers.component';\nimport { BlogPublicRoutingModule } from './resource-public.routing.module';\n\n@NgModule({\n declarations: [\n ResourceHubComponent,\n ResourceTagComponent,\n ResourceReadComponent,\n VaultSectionComponent,\n ResourceComponent,\n ResourcePostComponent,\n RelatedResourcesComponent,\n ResourceCardComponent,\n ResourcePostDetailsComponent,\n ResourceBlogComponent,\n ResourceVideoComponent,\n ResourceIntegrationComponent,\n ResourceReleaseNoteComponent,\n ResourceWebinarComponent,\n WhitePaperComponent,\n ResourceCaseStudiesComponent,\n ResourceCardListComponent,\n TestimonialCardListComponent,\n ResourceNoteCardComponent,\n ResourceCompanyCardComponent,\n ResourceVaultComponent,\n ResourceVideoCardComponent,\n UpcomingEventCardComponent,\n ReplayEventCardComponent,\n CaseStudyCardComponent\n ],\n imports: [\n CommonModule,\n PipesModule,\n AlphaPublicModule,\n DropdownModule,\n SharedComponentsModule,\n NgxUploaderModule,\n BlogPublicRoutingModule,\n ShareButtonsModule,\n PublicModule,\n ShareIconsModule,\n QuillModule.forRoot(),\n FormsModule,\n CoreTranslocoModule,\n TranslocoModule,\n ReactiveFormsModule,\n DirectivesModule\n ],\n providers: [ResourceService, GoogleAnalyticsService],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class ResourcePublicModule {}\n","import { NgModule } from '@angular/core';\n\nimport { ResourcePublicModule } from './public/resource-public.module';\n\n@NgModule({\n imports: [ResourcePublicModule]\n})\nexport class ResourceModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i1.ResourceService","i3","i5","i6.ResourceCardListComponent","i4","i6.TestimonialCardListComponent","i7.CaseStudyCardComponent","i6","i7.ResourceNoteCardComponent","i8.ResourceCompanyCardComponent","i8","i5.RelatedResourcesComponent","i6.ResourcePostDetailsComponent","i6.ResourceNoteCardComponent","i6.ResourceVideoCardComponent","i6.UpcomingEventCardComponent","i7.ReplayEventCardComponent","i3.ResourceTagComponent","i4.VaultSectionComponent","i5.ResourceCardComponent","i7.ResourceVaultComponent","i8.ResourceVideoCardComponent","i9.UpcomingEventCardComponent","i10.CaseStudyCardComponent","i9","i7","i10","i6.ResourceVaultComponent"],"mappings":"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"}