{"version":3,"sources":["webpack:///src/app/shared/globals.ts","webpack:///src/services/PreviousRouteService.ts","webpack:///src/app/_alert/alert.module.ts","webpack:///src/app/_alert/alert.model.ts","webpack:///src/app/_alert/alert.service.ts","webpack:///src/services/CoursewareService.ts","webpack:///src/app/account/login.component.html","webpack:///src/app/account/login.component.ts","webpack:///src/app/shared/header-ad.component.html","webpack:///src/app/shared/header-ad.component.ts","webpack:///src/app/navmenu/navmenu.component.html","webpack:///src/app/navmenu/navmenu.component.ts","webpack:///src/app/_alert/alert.component.html","webpack:///src/app/_alert/alert.component.ts","webpack:///src/app/app.component.html","webpack:///src/app/app.component.ts","webpack:///src/app/base.component.ts","webpack:///src/services/MetaService.ts","webpack:///src/app/home/home.component.html","webpack:///src/app/home/home.component.ts","webpack:///src/model/ContentEntry/ContentEntryPublishRenderData.ts","webpack:///src/model/ContentAreaEnum.ts","webpack:///src/model/TopicLeaf.ts","webpack:///src/model/ModelBase.ts","webpack:///src/model/ContentEntry/ContentEntryDisplayData.ts","webpack:///src/app/courseware/courseware-topic.component.html","webpack:///src/app/courseware/courseware-topic.component.ts","webpack:///src/app/courseware/courseware.component.html","webpack:///src/app/courseware/courseware.component.ts","webpack:///src/app/shared/textutil.ts","webpack:///src/app/shared/breadcrumbs.component.html","webpack:///src/app/shared/breadcrumbs.component.ts","webpack:///src/app/videocourses/see-also.component.html","webpack:///src/app/videocourses/see-also.component.ts","webpack:///src/app/shared/safe-html-pipe.component.ts","webpack:///src/app/courseware/courseware-topic-entries.component.html","webpack:///src/app/courseware/courseware-topic-entries.component.ts","webpack:///src/app/shared/lazy-images-component.ts","webpack:///src/app/display-topic/display-topic.component.html","webpack:///src/app/display-topic/display-topic.component.ts","webpack:///src/app/display-topic/display-content-entry.component.html","webpack:///src/app/display-topic/display-content-entry.component.ts","webpack:///src/app/short-videos/short-videos.component.html","webpack:///src/app/short-videos/short-videos.component.ts","webpack:///src/app/blogs/blogs.component.html","webpack:///src/app/blogs/blogs.component.ts","webpack:///src/app/videocourses/videocourses.component.html","webpack:///src/app/videocourses/videocourses.component.ts","webpack:///src/app/shared/social-media.component.ts","webpack:///src/app/shared/social-media.component.html","webpack:///src/app/videocourses/videocoursecontent.component.html","webpack:///src/app/videocourses/videocoursecontent.component.ts","webpack:///src/app/videocourses/videocoursemodule.component.html","webpack:///src/app/videocourses/videocoursemodule.component.ts","webpack:///src/model/Concept/ConceptTypeLink.ts","webpack:///src/app/researchindex/research-index-entry.component.html","webpack:///src/app/researchindex/research-index-entry.component.ts","webpack:///src/app/researchindex/research-index.component.html","webpack:///src/app/researchindex/research-index.component.ts","webpack:///src/app/home/terms-of-service.component.ts","webpack:///src/app/home/terms-of-service.component.html","webpack:///src/app/account/register.component.ts","webpack:///src/app/account/register.component.html","webpack:///src/app/account/complete-registration.component.html","webpack:///src/app/account/complete-registration.component.ts","webpack:///src/app/display-topic/display-content-video.component.html","webpack:///src/app/display-topic/display-content-video.component.ts","webpack:///src/app/short-videos/display-short-videos-content-entry.component.html","webpack:///src/app/short-videos/display-short-videos-content-entry.component.ts","webpack:///src/app/blogs/display-blog-content-entry.component.html","webpack:///src/app/blogs/display-blog-content-entry.component.ts","webpack:///src/app/home/contact-us.component.html","webpack:///src/app/home/contact-us.component.ts","webpack:///src/app/home/site-map-entry.component.html","webpack:///src/app/home/site-map-entry.component.ts","webpack:///src/app/home/site-map.component.html","webpack:///src/app/home/site-map.component.ts","webpack:///src/app/home/terms-of-service-page.component.ts","webpack:///src/app/home/terms-of-service-page.component.html","webpack:///src/app/home/about-us.component.ts","webpack:///src/app/home/about-us.component.html","webpack:///src/model/ExamStatus.ts","webpack:///src/app/exam/exam.component.html","webpack:///src/app/exam/exam.component.ts","webpack:///src/app/account/account.component.html","webpack:///src/app/account/account.component.ts","webpack:///src/app/account/forgot-password.component.html","webpack:///src/app/account/forgot-password.component.ts","webpack:///src/app/account/reset-password.component.html","webpack:///src/app/account/reset-password.component.ts","webpack:///src/app/videocourses/explainer.component.ts","webpack:///src/app/videocourses/explainer.component.html","webpack:///src/app/shared/backoffice.component.ts","webpack:///src/app/shared/backoffice.component.html","webpack:///src/app/quiz/quiz-answer.component.html","webpack:///src/app/quiz/quiz-answer.component.ts","webpack:///src/app/quiz/quiz-question.component.html","webpack:///src/app/quiz/quiz-question.component.ts","webpack:///src/app/courseware/courseware-quiz.component.html","webpack:///src/app/app.module.ts","webpack:///src/app/courseware/courseware-quiz.component.ts","webpack:///src/main.ts","webpack:///$_lazy_route_resource lazy namespace object"],"names":["globals","userName","token","LOCALHOST","REMOTEHOST","PreviousRouteService","router","this","currentUrl","url","events","subscribe","event","indexOf","previousUrl","referrerPath","getReferrerPath","length","document","referrer","baseURI","replace","AlertModule","CommonModule","Alert","init","Object","assign","AlertType","Success","Error","Info","Warning","AlertService","subject","Subject","keepAfterRouteChange","clear","alertId","asObservable","pipe","filter","x","message","alert","type","next","CoursewareService","_http","baseHref","alertService","myAppUrl","tempUrl","get","catchError","handleError","error","errorMessage","ErrorEvent","console","log","window","throwError","e","firstName","lastName","email","password","Id","Token","examId","questionId","answerId","Alias","ParentId","newPassword","post","headers","HttpHeaders","Email","Message","Comment","Password","FirstName","LastName","AcceptTerms","acceptTerms","memberID","searchString","lastConceptDisplayed","theURL","APP_BASE_HREF","LoginComponent","previousRouteService","titleService","_router","coursewareService","setTitle","form","Login","value","data","user","FullName","localStorage","setItem","getPreviousUrl","navigate","HeaderAdComponent","position","NavMenuComponent","expandedNavBar","getElementById","classList","remove","Logout","removeItem","AlertComponent","alerts","subscription","onAlert","id","push","unsubscribe","AppComponent","title","timeZone","subtractHours","isServer","theUrl","location","hostname","port","protocol","getHours","getItem","origin","Date","getFullYear","offset","getTimezoneOffset","DOCUMENT","BaseComponent","totalLazyAds","theNumberOfAds","MetaService","dom","meta","route","endsWith","localeCompare","canURL","undefined","URL","removeCanonicalURL","link","createElement","setAttribute","head","appendChild","description","logoUrl","facebookId","shortDescription","endIndex","substring","forEach","theId","removeTag","addTag","property","content","name","index","theLinks","getElementsByTagName","href","search","rel","HomeComponent","canonicalService","sanitizer","super","addMetaTags","pushAllAds","width","innerWidth","GetFeaturedContent","featuredContent","createCanonicalURL","ThumbnailFileName","bypassSecurityTrustResourceUrl","i","contentArea","alias","bypassSecurityTrustUrl","provide","useValue","interval","noPause","showIndicators","ContentEntryPublishRenderData","ContentAreaEnum","Courseware","Blog","Article","DigitalBadge","ID","TopicInformation","ThumbnailImageAssetId","Parent","Children","ContentArea","contentEntries","ThumbnailFilename","theTopic","Title","Description","Lineage","topic","parentTopic","theContent","topic1","topicLeaf2ContentInfo","topic2","contentEntry","Array","contentEntryData","ContentEntryDescriptor","RenderData","CoursewareTopicComponent","myElement","showContentEntry","EventEmitter","shortTopicChildrenListVisibility","longTopicChildrenListVisibility","visibleContentEntries","Map","expandedElements","theElement","levelTwoAlias","set","levelOneAlias","showAllChildTopics","InstantiateContentEntryDisplayData","emit","has","elementToShow","delete","currentElement","currentHtmlElement","showContentEntries","CoursewareComponent","navigationSubscription","clearAnswers","snapshot","paramMap","getCourses","courses","setCanonLink","currentParentTopic","childTopic","lastLevelOneAlias","lastLevelTwoAlias","cacheCourses","findTopicDetails","theContentEntryClickedOn","navigateByUrl","Information","TextUtils","html","convertedHtml","toLowerCase","targetAdPlacementArea","Math","floor","theWidth","adPlacementArea","tableLocation","firstHalf","secondHalf","endOftable","lastIndexOf","endingTagLocation","lastTag","BreadcrumbsComponent","breadcrumbs","SeeAlsoComponent","SafeHtmlPipe","bypassSecurityTrustHtml","CoursewareTopicEntriesComponent","platformId","getCourseEntries","textUtils","Html","textPart1","textPart2","PLATFORM_ID","LazyImagesComponent","totalImages","loadedImages","loadLazyImages","lazyloadImages","querySelectorAll","imageObserver","IntersectionObserver","entries","observer","entry","isIntersecting","image","target","unobserve","observe","DisplayTopicComponent","changes","stringVersion","JSON","stringify","currentValue","parsed","parse","justTheUrl","imgUrl","bypassSecurityTrustStyle","DisplayContentEntryComponent","theID","ThumbnailImageAssetID","ShortVideosComponent","currentTopic","showTopics","topicArea","getShortVideos","cacheShortVideos","shortVideos","initialize","shortVideo","BlogsComponent","area","getBlogs","VideocoursesComponent","showVideo","showTopic","showLatest","showBadges","playingVideo","loading","currentLatestCount","getVideoCourses","videoCourses","indexModel","AllDigitalBadges","aEntry","setNumberOfImages","cachevideoCourses","userCachedFor","getVideocourses","video","TopicLeaves","ex","EarnedBadgess","getTopicLeaf","displayTopicTab","displayLatestTab","displayEarnedTab","SocialMediaComponent","VideocoursecontentComponent","embedService","displayOverview","displayFaqs","showMore","overviewHTML","faqsHtml","faqsTitle","theVideoUrl","embed_vimeo","digitalBadgePublishedDisplayModel","DigitalBadgeCourse","VideoID","getVideocoursesData","Summary","digitalBadgeOverviewData","faqs","EntryTitle","getTheUrl","getTheVideoUrl","LogoUrl","FacebookAppId","LicensedByUser","HasAccess","parentId","showSubscribe","showNothing","PassedExam","VideocoursemoduleComponent","parent","timeindex","queryParams","TimeIndex","getVideocoursesModule","modulecontent","Entry","shortenedTitle","whereToEndTitle","timeindexstring","totalseconds","Number","VendorVideoID","ConceptTypeLink","VideoCourse","FoundationsOfLaw","ShortVideos","ResearchIndexEntryComponent","opened","conceptLink","conceptLinkType","currentInstance","ResearchIndexComponent","alphabet","retrievedData","lastSearchTerm","searching","searchFailed","text$","debounceTime","distinctUntilChanged","tap","switchMap","term","getResearchIndexAutocomplete","currentSearchTerm","getResearchIndex","searchTerm","concepts","lastConcepts","last","Name","startingLetter","TermsOfServiceComponent","RegisterComponent","Registered","getFormErrorMessage","Register","ConfirmPassword","valid","onSubmit","CompleteRegistrationComponent","ErrorMessage","queryParamMap","CompleteRegistration","DisplayContentVideoComponent","DisplayShortVideosContentEntryComponent","getShortVideoEntry","currentContentEntry","DisplayBlogContentEntryComponent","getBlogEntry","ContactUsComponent","elementRef","sent","s","src","__this","onload","afterScriptAdded","nativeElement","height","myComment","theDate","getMonth","ContactUs","SiteMapEntryComponent","openedLink","showUrls","SiteMapComponent","retrieved","getTableOfContents","siteMap","ArticleTopics","TermsOfServicePageComponent","AboutUsComponent","ExamStatus","NotStarted","HasUnansweredQuestions","AllQuestionsAnswered","Passed","Failed","Cancelled","ExamComponent","examQuestion","answer","startTime","timeRemaining","getExam","digitalBadgeCourseData","examStatus","srcElement","currentTarget","attributes","nodeValue","startExam","holdExamQuestion","DigitalBadgeExamID","getTime","timer","val","calcTimeRemaining","skipQuestion","Question","timeDiff","seconds","round","minutes","submitQuestion","AccountComponent","accountSettings","isLoaded","getSettings","EmailAddress","theFirstName","theLastName","theEmail","updateMemberUser","changePassword","updatePassword","closeAccount","info","cancelAccount","ForgotPasswordComponent","hasSentPassword","ForgotPassword","ResetPasswordComponent","canResetPassword","hasSentResetPasswordRequest","badToken","tokenID","ResetPassword","confirmPassword","ResetAndChangePassword","ExplainerComponent","BackOfficeComponent","QuizAnswer","isCorrect","isIncorrect","myEvent","callParent","radioBtns","element","checked","QuizQuestion","theAnswers","answerInstance","clearAnswer","routes","path","component","CoursewareQuizComponent","questions","getCourseQuiz","quizData","redirectTo","AppModule","BrowserModule","withServerTransition","appId","HttpClientModule","BrowserTransferStateModule","forRoot","EmbedVideo","onSameUrlNavigation","scrollPositionRestoration","initialNavigation","enableProdMode","addEventListener","platformBrowser","bootstrapModule","catch","err","webpackEmptyAsyncContext","req","Promise","resolve","then","code","keys","module","exports"],"mappings":"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","file":"x","sourcesContent":["export const globals = {\r\n userName: null,\r\n token: null,\r\n // LOCALHOST: window.location.origin,\r\n //REMOTEHOST: \"https://\" + window.location.hostname + \":8443\"\r\n\r\n LOCALHOST: \"https://lawshelf.com\",\r\n REMOTEHOST: \"https://www.lawshelf.com:8443\",\r\n // LOCALHOST: \"http://localhost:4200\",\r\n //REMOTEHOST: \"http://localhost:64320\"\r\n // LOCALHOST: \"http://10.0.0.87\",\r\n // REMOTEHOST: \"http://10.0.0.87:8080\"\r\n}","import { Injectable } from '@angular/core';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\n\r\n@Injectable()\r\nexport class PreviousRouteService {\r\n\r\n private previousUrl: string;\r\n private currentUrl: string;\r\n\r\n constructor(private router: Router) {\r\n this.currentUrl = this.router.url;\r\n router.events.subscribe(event => {\r\n if (event instanceof NavigationEnd) {\r\n if (event.url.indexOf('loginview') < 0) {\r\n this.previousUrl = this.currentUrl;\r\n this.currentUrl = event.url;\r\n } else {\r\n const referrerPath = this.getReferrerPath();\r\n if (referrerPath != null && referrerPath.length > 3) {\r\n this.previousUrl = this.currentUrl;\r\n this.currentUrl = referrerPath;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n public getReferrerPath() {\r\n if (document != null && document.referrer && document.baseURI) {\r\n const thePath = document.referrer.replace(document.baseURI, \"/\");\r\n return thePath;\r\n }\r\n return null;\r\n }\r\n\r\n public getPreviousUrl() {\r\n return this.previousUrl;\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AlertComponent } from './alert.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [AlertComponent],\r\n exports: [AlertComponent]\r\n})\r\nexport class AlertModule { }","export class Alert {\r\n type: AlertType;\r\n message: string;\r\n alertId: string;\r\n keepAfterRouteChange: boolean;\r\n\r\n constructor(init?:Partial) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n\r\nexport enum AlertType {\r\n Success,\r\n Error,\r\n Info,\r\n Warning\r\n}","import { Injectable } from '@angular/core';\r\nimport { Router, NavigationStart } from '@angular/router';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport { Alert, AlertType } from './alert.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AlertService {\r\n private subject = new Subject();\r\n private keepAfterRouteChange = false;\r\n\r\n constructor(private router: Router) {\r\n // clear alert messages on route change unless 'keepAfterRouteChange' flag is true\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationStart) {\r\n if (this.keepAfterRouteChange) {\r\n // only keep for a single route change\r\n this.keepAfterRouteChange = false;\r\n } else {\r\n // clear alert messages\r\n this.clear();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // enable subscribing to alerts observable\r\n onAlert(alertId?: string): Observable {\r\n return this.subject.asObservable().pipe(filter(x => x && x.alertId === alertId));\r\n }\r\n\r\n // convenience methods\r\n success(message: string, alertId?: string) {\r\n this.alert(new Alert({ message, type: AlertType.Success, alertId }));\r\n }\r\n\r\n error(message: string, alertId?: string) {\r\n this.alert(new Alert({ message, type: AlertType.Error, alertId }));\r\n }\r\n\r\n info(message: string, alertId?: string) {\r\n this.alert(new Alert({ message, type: AlertType.Info, alertId, keepAfterRouteChange: true}));\r\n }\r\n\r\n warn(message: string, alertId?: string) {\r\n this.alert(new Alert({ message, type: AlertType.Warning, alertId }));\r\n }\r\n\r\n // main alert method \r\n alert(alert: Alert) {\r\n this.keepAfterRouteChange = alert.keepAfterRouteChange;\r\n this.subject.next(alert);\r\n }\r\n\r\n // clear alerts\r\n clear(alertId?: string) {\r\n this.subject.next(new Alert({ alertId }));\r\n }\r\n}","import { Injectable, Inject } from '@angular/core';\r\nimport { APP_BASE_HREF } from \"@angular/common\";\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { throwError, Observable } from \"rxjs\";\r\nimport { globals } from 'src/app/shared/globals';\r\nimport { AlertService } from 'src/app/_alert';\r\n\r\n\r\n@Injectable()\r\nexport class CoursewareService {\r\n myAppUrl: string = \"\";\r\n tempUrl: string = globals.REMOTEHOST + \"/\";\r\n\r\n constructor(private _http: HttpClient, @Inject(APP_BASE_HREF) private baseHref: string, private alertService: AlertService) {\r\n this.myAppUrl = baseHref;\r\n }\r\n\r\n getCourses(): Observable {\r\n return this._http.get(this.tempUrl + 'courseware/indexa').pipe(catchError(this.handleError));\r\n }\r\n\r\n handleError(error: HttpErrorResponse) {\r\n let errorMessage = 'Unknown error!';\r\n try {\r\n if (error.error instanceof ErrorEvent) {\r\n // Client-side errors\r\n errorMessage = `Error: ${error.message}`;\r\n } else {\r\n // Server-side errors\r\n errorMessage = `Error communicating with the server. Please refresh your page or try again later.`;\r\n }\r\n console.log(\"Error communicating with server. Details \" + errorMessage);\r\n if (this.alertService)\r\n this.alertService.error(errorMessage);\r\n else\r\n window.alert(errorMessage);\r\n return throwError(errorMessage);\r\n } catch (e) {\r\n console.log(\"Communications error \" + error.message);\r\n }\r\n }\r\n\r\n getSettings(token: string): Observable {\r\n return this._http.get(this.tempUrl + 'account/settingsa?Token=' + token).pipe(catchError(this.handleError));;\r\n }\r\n\r\n updateMemberUser(token: string, firstName: string, lastName: string, email: string): Observable {\r\n return this._http.get(this.tempUrl + 'account/UpdateMemberUserA?Token=' + token + \"&FirstName=\" + firstName + \"&LastName=\" + lastName + \"&Email=\" + email).pipe(catchError(this.handleError));;\r\n }\r\n\r\n updatePassword(token: string, password: string): Observable {\r\n return this._http.get(this.tempUrl + 'account/UpdatePasswordA?Token=' + token + \"&Password=\" + password).pipe(catchError(this.handleError));;\r\n }\r\n\r\n closeAccount(token: string): Observable {\r\n return this._http.get(this.tempUrl + 'account/CloseAccountA?Token=' + token).pipe(catchError(this.handleError));\r\n }\r\n\r\n getCourseEntries(Id: string): Observable {\r\n return this._http.get(this.tempUrl + 'courseware/entrya/' + Id).pipe(catchError(this.handleError));\r\n }\r\n\r\n getCourseQuiz(Id: string): Observable {\r\n return this._http.get(this.tempUrl + 'courseware/getquiza/' + Id).pipe(catchError(this.handleError));;\r\n }\r\n\r\n getVideoCourseQuiz(Id: string): Observable {\r\n return this._http.get(this.tempUrl + 'videocourses/getquiza/' + Id).pipe(catchError(this.handleError));;\r\n }\r\n\r\n getShortVideos(): Observable {\r\n return this._http.get(this.tempUrl + 'videos/indexa').pipe(catchError(this.handleError));;\r\n }\r\n\r\n getVideocourses(Token: string): Observable {\r\n return this._http.get(this.tempUrl + 'videocourses/indexa?Token=' + Token).pipe(catchError(this.handleError));;\r\n }\r\n\r\n getVideocoursesData(Token: string, Id: string): Observable {\r\n if (!Token)\r\n return this._http.get(this.tempUrl + 'videocourses/VideoCoursea/' + Id).pipe(catchError(this.handleError));;\r\n return this._http.get(this.tempUrl + 'videocourses/VideoCoursea?ID=' + Id + \"&Token=\" + Token).pipe(catchError(this.handleError));;\r\n }\r\n\r\n getExam(Id: string, token: string): Observable {\r\n // TODO - CHANGE TO POST\r\n return this._http.get(this.tempUrl + 'videocourses/exama?Token=' + token + '&ID=' + Id).pipe(catchError(this.handleError));;\r\n }\r\n\r\n startExam(Id: string, token: string): Observable {\r\n return this._http.get(this.tempUrl + 'videocourses/startexama?ID=' + Id + \"&Token=\" + token).pipe(catchError(this.handleError));;\r\n }\r\n\r\n submitQuestion(examId: string, questionId: string, answerId: string, token: string): Observable {\r\n return this._http.get(this.tempUrl + 'videocourses/submitquestiona?argDigitalBadgeExamID=' + examId + \"&argQuestionID=\" + questionId + \"&argAnswerID=\" + answerId + \"&Token=\" + token).pipe(catchError(this.handleError));\r\n }\r\n\r\n skipQuestion(examId: string, questionId: string, token: string): Observable {\r\n return this._http.get(this.tempUrl + 'videocourses/skipquestiona?argDigitalBadgeExamID=' + examId + \"&argQuestionID=\" + questionId + \"&Token=\" + token).pipe(catchError(this.handleError));\r\n }\r\n\r\n getVideocoursesModule(Alias: string, ParentId: string): Observable {\r\n return this._http.get(this.tempUrl + 'videocourses/EntryA?ID=' + Alias + \"&destination=videos&parentId=\" + ParentId).pipe(catchError(this.handleError));\r\n }\r\n\r\n ForgotPassword(email: string): Observable {\r\n return this._http.get(this.tempUrl + 'account/ForgotPasswordA?Email=' + email).pipe(catchError(this.handleError));\r\n }\r\n\r\n ResetPassword(token: string): Observable {\r\n return this._http.get(this.tempUrl + 'account/ResetPasswordA?id=' + token).pipe(catchError(this.handleError));\r\n }\r\n\r\n GetFeaturedContent(): Observable {\r\n return this._http.get(this.tempUrl + 'home/IndexA').pipe(catchError(this.handleError));\r\n }\r\n\r\n ResetAndChangePassword(token: string, newPassword: string): Observable {\r\n const resetPasswordPayload = {\r\n token: token,\r\n newPassword: newPassword\r\n }\r\n\r\n return this._http.post(this.tempUrl + 'account/ResetPasswordA', resetPasswordPayload, {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n })\r\n })\r\n }\r\n\r\n Login(email: string, password: string): Observable {\r\n const loginPayload = {\r\n email: email,\r\n password: password\r\n }\r\n\r\n return this._http.post(this.tempUrl + 'account/logina', loginPayload, {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n });\r\n }\r\n\r\n ContactUs(Email: string, Message: string, Comment: string): Observable {\r\n return this._http.get(this.tempUrl + 'home/contacta?Email=' + Email + \"&Message=\" + Message + \"&Comment=\" + Comment).pipe(catchError(this.handleError));\r\n }\r\n\r\n Logout(Token: string): Observable {\r\n return this._http.get(this.tempUrl + 'account/logouta').pipe(catchError(this.handleError));\r\n }\r\n\r\n getTableOfContents(): Observable {\r\n return this._http.get(this.tempUrl + 'home/toca').pipe(catchError(this.handleError));\r\n }\r\n\r\n Register(Email: string, Password: string, FirstName: string, LastName: string, AcceptTerms: string): Observable {\r\n const registerPayload = {\r\n email: Email,\r\n password: Password,\r\n firstName: FirstName,\r\n lastName: LastName,\r\n acceptTerms: AcceptTerms\r\n }\r\n\r\n return this._http.post(this.tempUrl + 'account/completeregistera', registerPayload, {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n })\r\n })\r\n }\r\n\r\n CompleteRegistration(memberID: string): Observable {\r\n return this._http.get(this.tempUrl + 'account/CompleteRegistrationA?memberID=' + memberID).pipe(catchError(this.handleError));\r\n }\r\n\r\n getBlogs(): Observable {\r\n return this._http.get(this.tempUrl + 'blog/indexa').pipe(catchError(this.handleError));\r\n }\r\n\r\n getBlogEntry(Id: string): Observable {\r\n return this._http.get(this.tempUrl + 'blog/posta/' + Id).pipe(catchError(this.handleError));\r\n }\r\n\r\n getShortVideoEntry(Id: string): Observable {\r\n return this._http.get(this.tempUrl + 'videos/entrya/' + Id).pipe(catchError(this.handleError));\r\n }\r\n\r\n getResearchIndex(searchString: string, lastConceptDisplayed: string): Observable {\r\n let theURL = this.tempUrl + 'concept/Indexa?startingLetter=' + searchString;\r\n if (!searchString)\r\n theURL = this.tempUrl + 'concept/Indexa/';\r\n if (lastConceptDisplayed && searchString)\r\n theURL = this.tempUrl + 'concept/Indexa?startingLetter=' + searchString + \"&lastConceptDisplayed=\" + lastConceptDisplayed;\r\n if (lastConceptDisplayed && !searchString)\r\n theURL = this.tempUrl + 'concept/Indexa?lastConceptDisplayed=' + lastConceptDisplayed;\r\n return this._http.get(theURL).pipe(catchError(this.handleError));\r\n }\r\n\r\n getResearchIndexAutocomplete(searchString: string): Observable {\r\n let theURL = this.tempUrl + 'concept/AutocompleteLinks?term=' + searchString;\r\n if (!searchString)\r\n this.tempUrl + 'concept/AutocompleteLinks/';\r\n return this._http.get(theURL).pipe(catchError(this.handleError));\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n
    \r\n
  • \r\n
    \r\n

    Log in with Email

    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Don't have an account? Register now

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Welcome {{getUserName()}}. You are now logged in.

\r\n
\r\n
\r\n
\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { MemberUserData } from 'src/model/User/MemberUserData';\r\nimport { Error } from 'src/model/Error';\r\nimport { AlertService } from '../_alert';\r\nimport { NgForm } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { globals } from '../shared/globals';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { PreviousRouteService } from '../../services/PreviousRouteService';\r\n\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.css']\r\n})\r\nexport class LoginComponent implements OnInit {\r\n public static user: MemberUserData;\r\n headers;\r\n\r\n constructor(private previousRouteService: PreviousRouteService, private titleService: Title, private _router: Router, private coursewareService: CoursewareService, private alertService: AlertService) {\r\n this.titleService.setTitle(\"Log In - LawShelf Educational Media\");\r\n }\r\n\r\n public getUserName() {\r\n if (globals.userName)\r\n return globals.userName;\r\n return null;\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public doLogin(form: NgForm) {\r\n this.alertService.clear();\r\n this.coursewareService.Login(form.value.email, form.value.password).subscribe(data => {\r\n LoginComponent.user = data as MemberUserData;\r\n if (LoginComponent.user && LoginComponent.user.FullName) {\r\n globals.userName = LoginComponent.user.FullName;\r\n globals.token = LoginComponent.user.Token;\r\n if (typeof window !== 'undefined') {\r\n localStorage.setItem(\"token\", globals.token);\r\n localStorage.setItem(\"username\", globals.userName);\r\n }\r\n if (this.previousRouteService.getPreviousUrl() == null || this.previousRouteService.getPreviousUrl() === '/loginview') {\r\n console.log(\"navigating to videosview \");\r\n this._router.navigate(['/videocoursesview']);\r\n } else {\r\n console.log(\"navigating to previous url \" + this.previousRouteService.getPreviousUrl());\r\n this._router.navigate([this.previousRouteService.getPreviousUrl()]);\r\n }\r\n } else {\r\n let error = data as Error\r\n this.alertService.error(error.Message);\r\n }\r\n },\r\n error => this.alertService.error(\"Caught unexpected error when logging in \" + error.Message));\r\n }\r\n}\r\n","
\r\n \r\n \"National\r\n \"National\r\n \r\n
\r\n
","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-header-ad',\r\n templateUrl: './header-ad.component.html',\r\n styleUrls: ['./header-ad.component.css']\r\n})\r\n\r\nexport class HeaderAdComponent {\r\n @Input() position: string = null;\r\n\r\n constructor() {}\r\n}\r\n","
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { globals } from 'src/app/shared/globals';\r\nimport { Router, NavigationStart } from '@angular/router';\r\nimport { LoginComponent } from '../account/login.component';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\n\r\n@Component({\r\n selector: 'nav-menu',\r\n templateUrl: './navmenu.component.html',\r\n styleUrls: ['./navmenu.component.css'],\r\n})\r\nexport class NavMenuComponent implements OnInit {\r\n ngOnInit(): void {\r\n this._router.events.subscribe(event => {\r\n if (event instanceof NavigationStart) {\r\n console.log(\"NavigationStart\");\r\n if (typeof window !== 'undefined') {\r\n let expandedNavBar = document.getElementById(\"navbarTogglerDemo02\");\r\n if (expandedNavBar)\r\n expandedNavBar.classList.remove(\"show\");\r\n else\r\n console.log(\"could not find navbarTogglerDemo02\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n public constructor(private coursewareService: CoursewareService, private _router: Router) {\r\n }\r\n\r\n public getUserName() {\r\n if (globals.userName)\r\n return globals.userName;\r\n return null;\r\n }\r\n\r\n public isFoundationsOfLawActive() {\r\n if (this._router.url.indexOf('coursewareview') >= 0 || this._router.url.indexOf('coursewarecontentview') >= 0) {\r\n return 700;\r\n }\r\n return 400;\r\n }\r\n\r\n public isShortVideosActive() {\r\n if (this._router.url.indexOf('shortvideosview') >= 0 || this._router.url.indexOf('shortvideoscontentview') >= 0 || this._router.url.indexOf('blogview') >= 0 || this._router.url.indexOf('blogentryview') >= 0) {\r\n return 700;\r\n }\r\n return 400;\r\n }\r\n\r\n public isResearchIndexActive() {\r\n if (this._router.url.indexOf('researchindexview') >= 0) {\r\n return 700;\r\n }\r\n return 400;\r\n }\r\n\r\n\r\n public isVideoCoursesActive() {\r\n if (this._router.url.indexOf('videocoursesview') >= 0 || this._router.url.indexOf('videocoursescontentview') >= 0 || this._router.url.indexOf('videocoursesmoduleview') >= 0 || this._router.url.indexOf('videocoursesbannerview') >= 0 || this._router.url.indexOf('explainerview') >= 0) {\r\n return 700;\r\n }\r\n return 400;\r\n }\r\n\r\n public getFoundationsOfLawWidth() {\r\n if (this._router.url.indexOf('coursewareview') >= 0 || this._router.url.indexOf('coursewarecontentview') >= 0) {\r\n return 257;\r\n }\r\n return 256;\r\n }\r\n\r\n public getShortVideosWidth() {\r\n if (this._router.url.indexOf('shortvideosview') >= 0 || this._router.url.indexOf('shortvideoscontentview') >= 0 || this._router.url.indexOf('blogview') >= 0 || this._router.url.indexOf('blogentryview') >= 0) {\r\n return 178;\r\n }\r\n return 177;\r\n }\r\n\r\n public getVideoCoursesWidth() {\r\n if (this._router.url.indexOf('videocoursesview') >= 0 || this._router.url.indexOf('videocoursescontentview') >= 0 || this._router.url.indexOf('videocoursesmoduleview') >= 0 || this._router.url.indexOf('videocoursesbannerview') >= 0 || this._router.url.indexOf('explainerview') >= 0) {\r\n return 700;\r\n }\r\n return 400;\r\n }\r\n\r\n public doLogout() {\r\n LoginComponent.user = null;\r\n this.coursewareService.Logout(globals.token).subscribe(data => {\r\n globals.userName = null;\r\n if (typeof window !== 'undefined') {\r\n localStorage.removeItem('token');\r\n localStorage.removeItem('username');\r\n }\r\n });\r\n }\r\n}\r\n","
\r\n {{alert.message}}\r\n ×\r\n
","import { Component, OnInit, OnDestroy, Input } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { Alert, AlertType } from './alert.model';\r\nimport { AlertService } from './alert.service';\r\n\r\n@Component({ selector: 'alert', templateUrl: 'alert.component.html' })\r\nexport class AlertComponent implements OnInit, OnDestroy {\r\n @Input() id: string;\r\n\r\n alerts: Alert[] = [];\r\n subscription: Subscription;\r\n\r\n constructor(private alertService: AlertService) { }\r\n\r\n ngOnInit() {\r\n this.subscription = this.alertService.onAlert(this.id)\r\n .subscribe(alert => {\r\n if (!alert.message) {\r\n // clear alerts when an empty alert is received\r\n this.alerts = [];\r\n return;\r\n }\r\n\r\n // add alert to array\r\n this.alerts.push(alert);\r\n });\r\n }\r\n\r\n getCount()\r\n {\r\n return this.alerts.length;\r\n }\r\n\r\n ngOnDestroy() {\r\n // unsubscribe to avoid memory leaks\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n removeAlert(alert: Alert) {\r\n // remove specified alert from array\r\n this.alerts = this.alerts.filter(x => x !== alert);\r\n }\r\n\r\n cssClass(alert: Alert) {\r\n if (!alert) {\r\n return;\r\n }\r\n\r\n // return css class based on alert type\r\n switch (alert.type) {\r\n case AlertType.Success:\r\n return 'alert alert-success';\r\n case AlertType.Error:\r\n return 'alert alert-danger';\r\n case AlertType.Info:\r\n return 'alert alert-info';\r\n case AlertType.Warning:\r\n return 'alert alert-warning';\r\n }\r\n }\r\n}","\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \"Law\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Welcome, {{getUserName()}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
A Project of National Paralegal College
\r\n
\r\n
\r\n
\r\n Log in \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \"Phone\"\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
Phone:800-500-3136
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Follow Us

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \"Youtube\"\r\n\r\n \r\n \"Facebook\"\r\n\r\n \r\n \"Instagram\"\r\n\r\n
\r\n \"Twitter\"\r\n\r\n \r\n \"Pinterest\"\r\n\r\n \r\n \"LinkedIn\"\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \"Email\"\r\n
\r\n
\r\n Email Us\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n \"LawShelf\r\n \r\n
\r\n
\r\n
\r\n
\r\n About\r\n Us\r\n
\r\n
\r\n Site\r\n Map\r\n
\r\n \r\n
\r\n
\r\n
\r\n ©{{getYear()}} National Paralegal\r\n College\r\n
\r\n
\r\n\r\n
\r\n
","import { Component, Inject, ViewEncapsulation } from '@angular/core';\r\nimport { LoginComponent } from './account/login.component';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { AlertService } from './_alert';\r\nimport { globals } from './shared/globals';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css'],\r\n})\r\n\r\nexport class AppComponent {\r\n title = 'Lawshelf';\r\n timeZone = \"\";\r\n subtractHours = 0;\r\n public isServer: boolean = true;\r\n\r\n constructor(@Inject(DOCUMENT) private document, private _router: Router, private coursewareService: CoursewareService, private alertService: AlertService) {\r\n\r\n let theUrl = \"https://lawshelf.com\";\r\n if (this.document && this.document.location && this.document.location.hostname && this.document.location.hostname.length > 3) {\r\n this.document.location.protocol + \"//\" + this.document.location.hostname + \":\" + this.document.location.port;\r\n if (!this.document.location.port)\r\n theUrl = this.document.location.protocol + \"//\" + this.document.location.hostname;\r\n }\r\n globals.LOCALHOST = theUrl;\r\n this.getHours();\r\n if (typeof window !== 'undefined') {\r\n this.isServer = false;\r\n globals.token = localStorage.getItem(\"token\");\r\n globals.userName = localStorage.getItem(\"username\");\r\n globals.LOCALHOST = window.location.origin;\r\n\r\n // if(window.navigator && navigator.serviceWorker) {\r\n // navigator.serviceWorker.getRegistrations().then(function (registrations) {\r\n // for (const registration of registrations) {\r\n // console.log('serviceWorker unregistered');\r\n // registration.unregister();\r\n // }\r\n // });\r\n // }\r\n //this._router.events.subscribe(event => {\r\n // if (event instanceof NavigationEnd) {\r\n // (window).gtag('config', 'UA-103104789-1', { 'page_path': event.urlAfterRedirects });\r\n // }\r\n //});\r\n }\r\n }\r\n\r\n public getUserName() {\r\n if (globals.userName)\r\n return globals.userName;\r\n return null;\r\n }\r\n\r\n public getYear() {\r\n return (new Date()).getFullYear()\r\n }\r\n\r\n public getHours() {\r\n var offset = new Date().getTimezoneOffset();\r\n this.timeZone = \"\";\r\n if (offset < 300)\r\n offset = 300;\r\n else if (offset > 480)\r\n offset = 480;\r\n this.subtractHours = offset / 60 - 5;\r\n switch (offset) {\r\n case 300:\r\n this.timeZone = \"EST\";\r\n break;\r\n case 360:\r\n this.timeZone = \"CST\";\r\n break;\r\n case 420:\r\n default:\r\n this.timeZone = \"MST\";\r\n break;\r\n case 480:\r\n this.timeZone = \"PST\";\r\n break;\r\n }\r\n }\r\n\r\n getWeekdayHours() {\r\n return ((9 - this.subtractHours) + \":00 am - \" + (8 - this.subtractHours) + \":00 pm (\" + this.timeZone + \")\");\r\n }\r\n\r\n getFridayHours() {\r\n return ((11 - this.subtractHours) + \":00 am - \" + (6 - this.subtractHours) + \":30 pm (\" + this.timeZone + \")\");\r\n }\r\n\r\n getSundayHours() {\r\n return ((9 - this.subtractHours) + \":00 am - \" + (((4 - this.subtractHours) == 0) ? 12 : (3 - this.subtractHours)) + \":30 pm (\" + this.timeZone + \")\");\r\n }\r\n\r\n public doLogout() {\r\n LoginComponent.user = null;\r\n this.coursewareService.Logout(globals.token).subscribe(data => {\r\n globals.userName = null;\r\n if (typeof window !== 'undefined') {\r\n localStorage.removeItem('token');\r\n localStorage.removeItem('username');\r\n }\r\n });\r\n }\r\n}","import { Component, AfterViewChecked, OnDestroy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-base',\r\n template: `NO UI TO BE FOUND HERE!`\r\n})\r\nexport class BaseComponent implements AfterViewChecked, OnDestroy {\r\n public totalLazyAds: number = 0;\r\n // public initializedLazyLoad: boolean = false;\r\n // public adObserver: IntersectionObserver = null;\r\n\r\n constructor() {\r\n }\r\n\r\n public ngAfterViewChecked() {\r\n // if (typeof window === 'undefined')\r\n // return;\r\n // this.loadLazyAds();\r\n }\r\n\r\n ngOnDestroy() {\r\n // console.log(\"ngOnDestroy \");\r\n }\r\n /*\r\n public loadLazyAds() {\r\n if (\"IntersectionObserver\" in window) {\r\n let lazyAds = document.querySelectorAll(\".lazy-adsense\");\r\n if (!lazyAds || lazyAds.length === 0 || this.getAds() === 0) {\r\n return;\r\n }\r\n if (lazyAds.length < this.getAds()) {\r\n return;\r\n }\r\n if (this.initializedLazyLoad)\r\n return;\r\n if (lazyAds.length == this.getAds())\r\n this.initializedLazyLoad = true;\r\n console.log(\"loadLazyAds - initializing ads - lazyAds.length=\" + lazyAds.length + \" this.getAds()=\" + this.getAds());\r\n // var adObserver = new IntersectionObserver(function (entries, observer) {\r\n this.adObserver = new IntersectionObserver((entries, observer) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n var ad = entry.target;\r\n console.group(\"intersection happened \" + JSON.stringify(ad));\r\n \r\n ad.classList.remove(\"lazy-adsense\");\r\n this.adObserver.unobserve(ad);\r\n \r\n const p: any = {};\r\n p.google_ad_client = \"ca-pub-8567476900751738\";\r\n try {\r\n const adsbygoogle = (window as any).adsbygoogle;\r\n console.log(\"pushing ad \" + JSON.stringify(adsbygoogle));\r\n adsbygoogle.push(p);\r\n return true;\r\n } catch (e) {\r\n console.log(\"error pushing ad \" + e.message);\r\n }\r\n \r\n }\r\n });\r\n });\r\n \r\n lazyAds.forEach(image => {\r\n console.group(\"adding observer \" + JSON.stringify(image));\r\n this.adObserver.observe(image);\r\n });\r\n }\r\n }\r\n */\r\n public getAds() {\r\n return this.totalLazyAds;\r\n }\r\n\r\n public pushAllAds(theNumberOfAds: number) {\r\n console.log(\"pushAllAds \" + theNumberOfAds);\r\n this.totalLazyAds = theNumberOfAds;\r\n }\r\n\r\n}","import { Injectable, Inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Meta } from '@angular/platform-browser';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class MetaService {\r\n constructor(@Inject(DOCUMENT) private dom, private meta: Meta) { }\r\n\r\n createCanonicalURL(route: string, url?: string) {\r\n //console.log(\"url=\" + url + \" route=\" + route);\r\n if (!url.endsWith(\"/\"))\r\n url += \"/\";\r\n if (!route.endsWith(\"/\"))\r\n route += \"/\";\r\n if ((route.localeCompare(url) === 0)) {\r\n return;\r\n }\r\n // console.log(\"url=\" + url + \" route=\" + route);\r\n url = \"https://lawshelf.com\" + url;\r\n const canURL = url == undefined ? this.dom.URL : url;\r\n this.removeCanonicalURL();\r\n let link: HTMLLinkElement = this.dom.createElement('link');\r\n link.setAttribute('rel', 'canonical');\r\n link.setAttribute('id', 'theCanonLink');\r\n this.dom.head.appendChild(link);\r\n link.setAttribute('href', canURL);\r\n }\r\n\r\n removeTag(id: string) {\r\n if (this.dom.getElementById(id))\r\n this.dom.getElementById(id).remove();\r\n }\r\n\r\n addMetaTags(theUrl: string, description: string, logoUrl: string, title: string, facebookId: string) {\r\n let shortDescription = description;\r\n if (description) {\r\n let endIndex = shortDescription.indexOf(\"

\");\r\n if (endIndex > 0) {\r\n shortDescription = shortDescription.substring(0, endIndex + 4);\r\n } else if (shortDescription.length > 600) {\r\n endIndex = shortDescription.indexOf(\".\");\r\n if (endIndex > 25)\r\n shortDescription = shortDescription.substring(0, endIndex);\r\n }\r\n }\r\n\r\n var ids = ['mt1', 'mt2', 'mt3', 'mt4', 'mt5', 'mt6', 'mt7', 'mt8', 'mt9'];\r\n ids.forEach(theId => this.removeTag(theId));\r\n this.meta.addTag({ id: 'mt1', property: 'og:type', content: 'website' });\r\n if (theUrl)\r\n this.meta.addTag({ id: 'mt2', property: 'og:url', content: theUrl });\r\n if (description) {\r\n this.meta.addTag({ id: 'mt3', name: 'description', property: 'og:description', content: shortDescription });\r\n this.meta.addTag({ id: 'mt9', name: 'twitter:description', content: shortDescription });\r\n }\r\n if (logoUrl) {\r\n this.meta.addTag({ id: 'mt4', property: 'og:image', content: logoUrl });\r\n this.meta.addTag({ id: 'mt8', name: \"twitter:image\", content: logoUrl });\r\n // this.meta.addTag({ id: 'mt10', name: \"twitter:image:src\", content: logoUrl });\r\n }\r\n if (title)\r\n this.meta.addTag({ id: 'mt5', property: 'og:title', name: \"twitter:title\", content: title });\r\n if (facebookId)\r\n this.meta.addTag({ id: 'mt6', property: 'fb:app_id', content: facebookId });\r\n this.meta.addTag({ id: 'mt7', property: 'twitter:card', content: \"summary_large_image\" });\r\n }\r\n\r\n removeCanonicalURL() {\r\n try {\r\n if (this.dom.getElementById(\"theCanonLink\"))\r\n this.dom.getElementById(\"theCanonLink\").remove();\r\n } catch (e) {\r\n console.log(\"caught exception in removeCanonicalURL\");\r\n }\r\n }\r\n\r\n addNoOpenerTag() {\r\n try {\r\n var theLinks = this.dom.getElementsByTagName(\"a\");\r\n var index;\r\n for (index = 0; index < theLinks.length; index++) {\r\n if ((theLinks[index].href.search(\"localhost\") < 0 && theLinks[index].href.search(\"lawshelf\") < 0) || theLinks[index].href.search(\"facebook\") >= 0) {\r\n theLinks[index].rel = \"noopener\";\r\n }\r\n }\r\n\r\n } catch (e) {\r\n console.log(\"caught exception in addNoOpenerTag\");\r\n }\r\n }\r\n\r\n} ","
\r\n \r\n
","import { Component, OnInit, OnDestroy, Sanitizer } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { DomSanitizer, Title } from '@angular/platform-browser';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { AlertService } from '../_alert';\r\nimport { FeaturedContent } from 'src/model/FeaturedContent/FeaturedContent';\r\nimport { Error } from 'src/model/Error';\r\nimport { ContentArea } from 'src/model/FeaturedContent/ContentArea';\r\nimport { globals } from '../shared/globals';\r\nimport { CarouselConfig } from 'ngx-bootstrap/carousel';\r\nimport { MetaService } from 'src/services/MetaService';\r\nimport { BaseComponent } from '../base.component';\r\n\r\n@Component({\r\n selector: 'home',\r\n templateUrl: './home.component.html',\r\n providers: [\r\n { provide: CarouselConfig, useValue: { interval: 10000, noPause: true, showIndicators: true } }],\r\n styleUrls: ['./home.component.css']\r\n})\r\n\r\nexport class HomeComponent extends BaseComponent implements OnInit, OnDestroy {\r\n public featuredContent: FeaturedContent[];\r\n public width: number;\r\n\r\n constructor(private canonicalService: MetaService, private titleService: Title, private _router: Router, private sanitizer: DomSanitizer, private coursewareService: CoursewareService, private alertService: AlertService) {\r\n super();\r\n this.titleService.setTitle(\"LawShelf Educational Media\");\r\n this.canonicalService.addMetaTags(null, \"Our mission is to provide high-quality videos and articles to help people learn about the law. LawShelf is a project of National Paralegal College.\", \"https://lawshelf.com/assets/img/certificates-img.png\", \"Lawshelf Educational Media\", null);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.canonicalService.removeCanonicalURL();\r\n }\r\n\r\n ngOnInit() {\r\n this.pushAllAds(2);\r\n if (typeof window !== 'undefined') {\r\n this.width = window.innerWidth;\r\n }\r\n this.alertService.clear();\r\n this.coursewareService.GetFeaturedContent().subscribe(data => {\r\n this.featuredContent = data;\r\n if (!this.featuredContent || !this.featuredContent.length) {\r\n this.featuredContent = null;\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n }\r\n },\r\n error => this.alertService.error(\"Got an unexpected error when retrieving featured content \" + error.error));\r\n\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/homeview/\");\r\n }\r\n\r\n public getEntryImageUrl(ThumbnailFileName) {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(\"/assets/databaseimages/\" + ThumbnailFileName);\r\n // return this.sanitizer.bypassSecurityTrustResourceUrl(globals.REMOTEHOST + \"/assets/databaseimages/\" + ThumbnailFileName);\r\n }\r\n\r\n public getSlideClass(i) {\r\n if (i === 0) {\r\n return \"carousel-item active\";\r\n }\r\n return \"carousel-item\";\r\n }\r\n\r\n\r\n public getDestination(contentArea: ContentArea, alias: string) {\r\n if (contentArea === 3) {\r\n return this.sanitizer.bypassSecurityTrustUrl(\"/videocoursescontentview/\" + alias);\r\n }\r\n if (contentArea === 2) {\r\n return this.sanitizer.bypassSecurityTrustUrl(\"/shortvideoscontentview/\" + alias);\r\n }\r\n if (contentArea === 1) {\r\n return this.sanitizer.bypassSecurityTrustUrl(\"/blogentryview/\" + alias);\r\n }\r\n }\r\n\r\n}\r\n","import { VendorName } from \"./VendorName\";\r\nimport { ContentEntryPublishRenderDescriptor } from \"../ContentEntryPublishRenderDescriptor\";\r\n\r\nexport class ContentEntryPublishRenderData{\r\n public ContentEntryDescriptor: ContentEntryPublishRenderDescriptor ;\r\n public DigitalBadgeID: string ;\r\n public TopicID: string ;\r\n public HasQuiz: boolean ;\r\n public SocialMediaShareImageBinaryAssetId: string ;\r\n public PremiumFeatureQuizVisibleToUser: boolean ;\r\n public VideoVendor: VendorName ;\r\n public VendorVideoID: string ;\r\n public Html: string ;\r\n public ExternalCitationLink: string ;\r\n public HidePopup: boolean ;\r\n}","export enum ContentAreaEnum {\r\n Courseware = 0,\r\n Blog = 1,\r\n Article = 2,\r\n DigitalBadge = 3\r\n}","import { ModelBase } from './ModelBase';\r\nimport { ContentAreaEnum } from './ContentAreaEnum';\r\n//import { TopicFamilyModel } from './TopicFamilyModel';\r\nimport { ContentInfo } from './ContentInfo';\r\nimport { ContentEntryPublishRenderDescriptor } from './ContentEntryPublishRenderDescriptor'\r\n\r\nexport class TopicLeaf extends ModelBase {\r\n TopicInformation: ContentInfo = null;\r\n ThumbnailImageAssetId: string = '';\r\n Parent: TopicLeaf = null;\r\n Children: TopicLeaf[] = [];\r\n ContentArea: ContentAreaEnum = ContentAreaEnum.Courseware;\r\n contentEntries: ContentEntryPublishRenderDescriptor[] = [];\r\n ThumbnailFilename: string = null;\r\n\r\n public static topicLeaf2ContentInfo(theTopic: TopicLeaf)\r\n {\r\n var contentInfo: ContentInfo = {\r\n Alias: theTopic.TopicInformation.Alias,\r\n Title: theTopic.TopicInformation.Title,\r\n Description: theTopic.TopicInformation.Description\r\n }\r\n return contentInfo;\r\n }\r\n\r\n}\r\n","export class ModelBase {\r\n ID: string = '';\r\n}","import { ContentInfo } from \"../ContentInfo\";\r\nimport { ContentEntryPublishRenderData } from \"./ContentEntryPublishRenderData\";\r\nimport { TopicLeaf } from \"../TopicLeaf\";\r\nimport { ContentEntryPublishRenderDescriptor } from \"../ContentEntryPublishRenderDescriptor\";\r\nimport { ConceptLink } from '../Concept/ConceptLink';\r\n\r\nexport class ContentEntryDisplayData{\r\n public RenderData: ContentEntryPublishRenderData;\r\n public Lineage: ContentInfo[] = [];\r\n public HidePopup: boolean;\r\n public TimeIndex: string;\r\n public FacebookAppId: string;\r\n public LogoUrl: string;\r\n public SeeAlso: ConceptLink[];\r\n\r\n\r\n public static InstantiateContentEntryDisplayData(topic: TopicLeaf, parentTopic: TopicLeaf, theContent: ContentEntryPublishRenderDescriptor)\r\n {\r\n var topic1: ContentInfo = TopicLeaf.topicLeaf2ContentInfo(topic);\r\n var topic2: ContentInfo = TopicLeaf.topicLeaf2ContentInfo(parentTopic);\r\n \r\n var contentEntry: ContentEntryDisplayData = new ContentEntryDisplayData();\r\n contentEntry.Lineage = new Array();\r\n contentEntry.Lineage.push(topic1);\r\n contentEntry.Lineage.push(topic2);\r\n var contentEntryData: ContentEntryPublishRenderData = new ContentEntryPublishRenderData();\r\n contentEntryData.ContentEntryDescriptor = theContent;\r\n contentEntry.RenderData = contentEntryData;\r\n return contentEntry; \r\n }\r\n\r\n public static InstantiateOneLevelContentEntryDisplayData(topic: TopicLeaf, theContent: ContentEntryPublishRenderDescriptor)\r\n {\r\n var topic1: ContentInfo = TopicLeaf.topicLeaf2ContentInfo(topic);\r\n \r\n var contentEntry: ContentEntryDisplayData = new ContentEntryDisplayData();\r\n contentEntry.Lineage = new Array();\r\n contentEntry.Lineage.push(topic1);\r\n var contentEntryData: ContentEntryPublishRenderData = new ContentEntryPublishRenderData();\r\n contentEntryData.ContentEntryDescriptor = theContent;\r\n contentEntry.RenderData = contentEntryData;\r\n return contentEntry; \r\n }\r\n\r\n}","
  • \r\n \r\n {{ topic.TopicInformation.Title }}\r\n \r\n\r\n
    \r\n
    \r\n \r\n 0\" class=\"topic-divider\">|\r\n {{ achild.TopicInformation.Title }} \r\n \r\n 3\" class=\"topic-divider\">|\r\n 3\" (click)=\"showAllChildTopics()\" [routerLink]=\"\">More... \r\n
    \r\n\r\n
    \r\n \r\n {{ achild2.TopicInformation.Title }}
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
  • ","import { Component, OnInit, Input, Output, EventEmitter, ElementRef, ViewEncapsulation } from '@angular/core';\r\nimport { TopicLeaf } from '../../model/TopicLeaf';\r\nimport { ContentEntryDisplayData } from '../../model/ContentEntry/ContentEntryDisplayData';\r\nimport { ContentEntryPublishRenderDescriptor } from '../../model/ContentEntryPublishRenderDescriptor';\r\n\r\n@Component({\r\n selector: 'app-courseware-topic',\r\n templateUrl: './courseware-topic.component.html',\r\n styleUrls: ['./courseware-topic.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class CoursewareTopicComponent implements OnInit {\r\n @Input() topic: TopicLeaf;\r\n @Output() showContentEntry = new EventEmitter();\r\n contentEntry: ContentEntryDisplayData;\r\n shortTopicChildrenListVisibility: boolean = true;\r\n longTopicChildrenListVisibility: boolean = false;\r\n @Input() levelOneAlias: string;\r\n @Input() levelTwoAlias: string;\r\n visibleContentEntries = new Map();\r\n expandedElements = new Map();\r\n theElement: ElementRef = null;\r\n\r\n constructor(myElement: ElementRef) {\r\n this.theElement = myElement;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.levelTwoAlias)\r\n this.visibleContentEntries.set(this.levelTwoAlias, 1);\r\n if (this.levelOneAlias && this.levelOneAlias == this.topic.TopicInformation.Alias) {\r\n this.showAllChildTopics();\r\n // this.theElement.nativeElement.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\r\n }\r\n }\r\n\r\n onShowContentEntry(parentTopic: TopicLeaf, theContent: ContentEntryPublishRenderDescriptor) {\r\n // if (this.topic == null)\r\n // console.log(\"onShowContentEntry: topic is null\" );\r\n this.contentEntry = ContentEntryDisplayData.InstantiateContentEntryDisplayData(this.topic, parentTopic, theContent);\r\n\r\n this.showContentEntry.emit(this.contentEntry);\r\n }\r\n\r\n public getIconClass(alias) {\r\n if (!this.visibleContentEntries.has(alias))\r\n return \"fa fa-plus-square margin-right-5\";\r\n return \"fa fa-minus-square margin-right-5\";\r\n }\r\n\r\n\r\n showAllChildTopics() {\r\n this.shortTopicChildrenListVisibility = false;\r\n this.longTopicChildrenListVisibility = true;\r\n }\r\n\r\n showContentEntries(elementToShow: string) {\r\n if (!this.visibleContentEntries.has(elementToShow))\r\n this.visibleContentEntries.set(elementToShow, 1);\r\n else\r\n this.visibleContentEntries.delete(elementToShow);\r\n }\r\n\r\n getShowContentEntries(currentElement: string, currentHtmlElement: HTMLInputElement) {\r\n if (this.visibleContentEntries.has(currentElement)) {\r\n if (this.levelTwoAlias) {\r\n // currentHtmlElement.scrollIntoView();\r\n this.levelTwoAlias = null;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n showContentEntriesFromShortTopicList(alias) {\r\n this.showAllChildTopics();\r\n this.showContentEntries(alias);\r\n }\r\n\r\n getShortTopicChildrenListVisibiliy() {\r\n return this.shortTopicChildrenListVisibility\r\n }\r\n\r\n getLongTopicChildrenListVisibiliy() {\r\n return this.longTopicChildrenListVisibility;\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Foundations of Law - In-depth online summaries of major law topics

    \r\n

    \r\n Lawshelf Foundations of Law is an organized series of articles written by attorneys on a variety\r\n of legal topics. Foundations of Law, with examples, self tests and citations embedded, is\r\n designed to clearly convey and teach legal rules and concepts in a variety of legal fields.\r\n While sufficiently advanced to constitute college-level law-based coursework, the courseware is\r\n also accessible to the layperson and to the professional who wishes to gain foundational\r\n knowledge in particular areas of law.\r\n

    \r\n
    \r\n
    \r\n
      \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    ","\r\nimport { Component, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { Router, ActivatedRoute, NavigationEnd } from '@angular/router';\r\nimport { TopicLeaf } from '../../model/TopicLeaf';\r\nimport { CoursewareService } from '../../services/CoursewareService';\r\nimport { ContentEntryDisplayData } from '../../model/ContentEntry/ContentEntryDisplayData';\r\nimport { AlertService } from 'src/app/_alert';\r\nimport { Error } from 'src/model/Error';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { MetaService } from 'src/services/MetaService';\r\nimport { BaseComponent } from '../base.component';\r\n\r\n@Component({\r\n selector: 'courseware',\r\n templateUrl: './courseware.component.html',\r\n styleUrls: ['./courseware.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CoursewareComponent extends BaseComponent implements OnInit, OnDestroy {\r\n public courses: TopicLeaf[];\r\n public static cacheCourses: TopicLeaf[];\r\n public levelOneAlias: string;\r\n public levelTwoAlias: string;\r\n navigationSubscription;\r\n\r\n constructor(private canonicalService: MetaService, private titleService: Title, private route: ActivatedRoute, private _router: Router, private coursewareService: CoursewareService, private alertService: AlertService) {\r\n super();\r\n this.titleService.setTitle(\"Foundations of Law - LawShelf Educational Media\");\r\n this.canonicalService.addMetaTags(null, \"Foundations of Law - In-depth online summaries of major law topics\", null, \"Foundations of Law - LawShelf Educational Media\", null);\r\n\r\n this.navigationSubscription = this._router.events.subscribe((e: any) => {\r\n if (e instanceof NavigationEnd) {\r\n this.clearAnswers();\r\n }\r\n });\r\n }\r\n\r\n clearAnswers() {\r\n this.levelOneAlias = this.route.snapshot.paramMap.get('levelonealias');\r\n this.levelTwoAlias = this.route.snapshot.paramMap.get('leveltwoalias');\r\n this.getCourses();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.canonicalService.removeCanonicalURL();\r\n if (this.navigationSubscription) {\r\n this.navigationSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n findTopicDetails() {\r\n if (this.levelOneAlias != \"topic\") {\r\n this.setCanonLink();\r\n return;\r\n }\r\n this.courses.forEach(parentTopic => {\r\n if (this.levelOneAlias != \"topic\") {\r\n this.setCanonLink();\r\n return;\r\n }\r\n let currentParentTopic = parentTopic.TopicInformation.Alias;\r\n if (parentTopic.TopicInformation.Alias == this.levelTwoAlias) {\r\n this.levelOneAlias = this.levelTwoAlias;\r\n this.levelTwoAlias = null;\r\n this.setCanonLink();\r\n return;\r\n }\r\n parentTopic.Children.forEach(childTopic => {\r\n if (childTopic.TopicInformation.Alias == this.levelTwoAlias) {\r\n this.levelOneAlias = currentParentTopic;\r\n this.setCanonLink();\r\n return;\r\n }\r\n })\r\n });\r\n }\r\n\r\n setCanonLink() {\r\n if (!this.levelOneAlias && !this.levelTwoAlias)\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/coursewareview/\");\r\n if (this.levelOneAlias && !this.levelTwoAlias)\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/coursewareview/\" + this.levelOneAlias);\r\n if (this.levelOneAlias && this.levelTwoAlias)\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/coursewareview/\" + this.levelOneAlias + \"/\" + this.levelTwoAlias);\r\n }\r\n\r\n ngOnInit() {\r\n let lastLevelOneAlias = this.levelOneAlias;\r\n let lastLevelTwoAlias = this.levelTwoAlias;\r\n this.levelOneAlias = this.route.snapshot.paramMap.get('levelonealias');\r\n this.levelTwoAlias = this.route.snapshot.paramMap.get('leveltwoalias');\r\n if (this.levelOneAlias != lastLevelOneAlias || this.levelTwoAlias != lastLevelTwoAlias)\r\n this.getCourses();\r\n }\r\n\r\n getCourses() {\r\n this.pushAllAds(2);\r\n if (!CoursewareComponent.cacheCourses) {\r\n this.coursewareService.getCourses().subscribe(data => {\r\n this.courses = CoursewareComponent.cacheCourses = data as TopicLeaf[];\r\n if (!this.courses.length && this.courses.length <= 0) {\r\n let error: Error = data as Error;\r\n this.alertService.error(error.Message);\r\n return;\r\n }\r\n this.findTopicDetails();\r\n });\r\n }\r\n else {\r\n this.courses = CoursewareComponent.cacheCourses;\r\n this.findTopicDetails();\r\n }\r\n }\r\n\r\n onShowContentEntryClicked(theContentEntryClickedOn: ContentEntryDisplayData) {\r\n this._router.navigateByUrl(\"/coursewarecontentview/\" + theContentEntryClickedOn.RenderData.ContentEntryDescriptor.Information.Alias);\r\n //this._router.navigate([\"/coursewarecontentview\", theContentEntryClickedOn.RenderData.ContentEntryDescriptor.Information.Alias]);\r\n }\r\n}","export class TextUtils {\r\n public firstHalf: string;\r\n public secondHalf: string;\r\n\r\n constructor(html: string) {\r\n let convertedHtml: string = html.toLowerCase();\r\n let targetAdPlacementArea: number = Math.floor(convertedHtml.length / 5);\r\n\r\n if (typeof window !== 'undefined') {\r\n const theWidth = window.innerWidth;\r\n\r\n if (theWidth < 400 && targetAdPlacementArea > 800) {\r\n targetAdPlacementArea = 800;\r\n }\r\n if (theWidth >= 400 && theWidth < 500 && targetAdPlacementArea > 1000) {\r\n targetAdPlacementArea = 1000;\r\n }\r\n if (theWidth >= 500 && theWidth < 600 && targetAdPlacementArea > 1200) {\r\n targetAdPlacementArea = 1200;\r\n }\r\n if (theWidth >= 600 && theWidth < 800 && targetAdPlacementArea > 1500) {\r\n targetAdPlacementArea = 1500;\r\n }\r\n if (theWidth >= 800 && theWidth < 1000 && targetAdPlacementArea > 2000) {\r\n targetAdPlacementArea = 2000;\r\n }\r\n if (theWidth >= 1000 && theWidth < 1200 && targetAdPlacementArea > 2500) {\r\n targetAdPlacementArea = 2500;\r\n }\r\n if (theWidth >= 1200 && targetAdPlacementArea > 3000) {\r\n targetAdPlacementArea = 3000;\r\n }\r\n } else {\r\n if (targetAdPlacementArea > 4000) {\r\n targetAdPlacementArea = 4000;\r\n }\r\n }\r\n\r\n\r\n let adPlacementArea: number = convertedHtml.indexOf(\"\", targetAdPlacementArea);\r\n if (adPlacementArea > 500) {\r\n adPlacementArea = adPlacementArea + 7;\r\n this.firstHalf = html.substring(0, adPlacementArea - 1);\r\n this.secondHalf = html.substring(adPlacementArea);\r\n return;\r\n }\r\n }\r\n\r\n if (tableLocation >= 0 && tableLocation < adPlacementArea) {\r\n if (tableLocation < 500 && html.length > 1500) {\r\n let endOftable = convertedHtml.lastIndexOf(\"\");\r\n if (tableLocation < adPlacementArea && endOftable > adPlacementArea) {\r\n adPlacementArea = endOftable;\r\n adPlacementArea = adPlacementArea + 8;\r\n adPlacementArea = convertedHtml.indexOf(\"

    \", adPlacementArea);\r\n }\r\n this.firstHalf = html.substring(0, adPlacementArea);\r\n this.secondHalf = html.substring(adPlacementArea);\r\n return;\r\n } else {\r\n adPlacementArea = tableLocation;\r\n }\r\n }\r\n let endingTagLocation: number = convertedHtml.lastIndexOf(\"\r\n
      \r\n
    1. 0\" class=\"breadcrumb-item\">\r\n {{breadcrumbs[0].Title}}\r\n
    2. \r\n
    3. 2\" class=\"breadcrumb-item\">\r\n {{breadcrumbs[1].Title}}\r\n
    4. \r\n
    5. 3\" class=\"breadcrumb-item\">\r\n {{breadcrumbs[2].Title}}\r\n
    6. \r\n
    7. 0\" class=\"breadcrumb-item active\">\r\n {{breadcrumbs[breadcrumbs.length-1].Title}}\r\n
    8. \r\n
    \r\n","import { Component, OnInit, Input, ViewEncapsulation } from '@angular/core';\r\nimport { Breadcrumb } from 'src/model/Breadcrumb';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'app-breadcrumbs',\r\n templateUrl: './breadcrumbs.component.html',\r\n styleUrls: ['./breadcrumbs.component.css']\r\n})\r\nexport class BreadcrumbsComponent implements OnInit {\r\n @Input() breadcrumbs: Breadcrumb[];\r\n\r\n constructor(private titleService: Title) {\r\n }\r\n\r\n public getBreadcrumbUrl(index: number) {\r\n if (!this.breadcrumbs || index < 0 || index >= this.breadcrumbs.length)\r\n return \"\";\r\n return this.breadcrumbs[index].URL;\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","
    \r\n
    \r\n

    See Also:

    \r\n
    \r\n\r\n
    ","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { ConceptLink } from 'src/model/Concept/ConceptLink';\r\n\r\n@Component({\r\n selector: 'app-see-also',\r\n templateUrl: './see-also.component.html',\r\n styleUrls: ['./see-also.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class SeeAlsoComponent {\r\n @Input() concepts: ConceptLink[];\r\n @Input() displayAmount: number;\r\n\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\n\r\n@Pipe({\r\n name: 'safeHtml',\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer:DomSanitizer){}\r\n\r\n transform(html) {\r\n return this.sanitizer.bypassSecurityTrustHtml(html);\r\n }\r\n}","
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {{getTitle()}}

    \r\n
    \r\n 0\"\r\n [displayAmount]=\"3\" [concepts]=\"contentEntry.SeeAlso\">\r\n \r\n \r\n

    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n 3\"\r\n [displayAmount]=\"100\" [concepts]=\"contentEntry.SeeAlso\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    ","import { Component, OnInit, OnDestroy, PLATFORM_ID, Inject, ViewEncapsulation } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { Breadcrumb } from 'src/model/Breadcrumb';\r\nimport { ArticleEntryDisplayModel } from 'src/model/ContentEntry/ArticleEntryDisplayModel';\r\nimport { Error } from 'src/model/Error';\r\nimport { AlertService } from 'src/app/_alert';\r\nimport { MetaService } from 'src/services/MetaService';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { TextUtils } from '../shared/textutil';\r\nimport { BaseComponent } from '../base.component';\r\n\r\n@Component({\r\n selector: 'app-courseware-topic-entries',\r\n templateUrl: './courseware-topic-entries.component.html',\r\n styleUrls: ['./courseware-topic-entries.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class CoursewareTopicEntriesComponent extends BaseComponent implements OnInit, OnDestroy {\r\n public contentEntry: ArticleEntryDisplayModel;\r\n public breadcrumbs: Breadcrumb[] = [];\r\n public alias = null;\r\n public textPart1: string;\r\n public textPart2: string;\r\n\r\n constructor(@Inject(PLATFORM_ID) private platformId, private _router: Router, private titleService: Title, private canonicalService: MetaService, private route: ActivatedRoute, private coursewareService: CoursewareService, private alertService: AlertService) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.alias = this.route.snapshot.paramMap.get('alias');\r\n this.coursewareService.getCourseEntries(this.alias).subscribe(data => {\r\n this.contentEntry = data;\r\n if (this.contentEntry.ID) {\r\n let textUtils = new TextUtils(this.contentEntry.RenderData.Html);\r\n this.textPart1 = textUtils.firstHalf;\r\n this.textPart2 = textUtils.secondHalf;\r\n this.breadcrumbs = [{ Title: \"Foundations of Law\", URL: \"/coursewareview\" }, { Title: this.contentEntry.Lineage[0].TopicInformation.Title, URL: \"/coursewareview/\" + this.contentEntry.Lineage[0].TopicInformation.Alias }, { Title: this.contentEntry.Lineage[1].TopicInformation.Title, URL: \"/coursewareview/\" + this.contentEntry.Lineage[0].TopicInformation.Alias + \"/\" + this.contentEntry.Lineage[1].TopicInformation.Alias }, { Title: this.contentEntry.RenderData.ContentEntryDescriptor.Information.Title, URL: \"/coursewarecontentview/\" + this.contentEntry.RenderData.ContentEntryDescriptor.Information.Alias }];\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/coursewarecontentview/\" + this.contentEntry.RenderData.ContentEntryDescriptor.Information.Alias);\r\n this.titleService.setTitle(\"Foundations of Law - \" + this.contentEntry.RenderData.ContentEntryDescriptor.Information.Title);\r\n this.canonicalService.addMetaTags(null, this.contentEntry.RenderData.ContentEntryDescriptor.Information.Description, null, this.contentEntry.RenderData.ContentEntryDescriptor.Information.Title, null);\r\n\r\n this.pushAllAds(3);\r\n } else {\r\n this.contentEntry = null;\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.canonicalService.removeCanonicalURL();\r\n }\r\n\r\n public getTitle() {\r\n if (this.contentEntry == null)\r\n return \"\";\r\n return this.contentEntry.RenderData.ContentEntryDescriptor.Information.Title;\r\n }\r\n\r\n public containsData() {\r\n if (!this.contentEntry)\r\n return false;\r\n return true;\r\n }\r\n}","import { BaseComponent } from '../base.component';\r\nimport { AfterViewChecked, Component, AfterViewInit, ViewChildren, QueryList } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'app-lazy-images',\r\n template: `NO UI TO BE FOUND HERE!`\r\n\r\n})\r\nexport class LazyImagesComponent extends BaseComponent implements AfterViewChecked {\r\n public totalImages: number = 0;\r\n public loadedImages: boolean = false;\r\n // @ViewChildren(\".mylazy\") anchors: QueryList;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public reloadImages() {\r\n this.loadedImages = false;\r\n this.loadLazyImages();\r\n }\r\n\r\n public loadLazyImages() {\r\n if (typeof window === 'undefined')\r\n return;\r\n\r\n if (\"IntersectionObserver\" in window && this.loadedImages === false) {\r\n let lazyloadImages = document.querySelectorAll(\".mylazy\");\r\n // console.log(\"LazyImagesComponent.loadLazyImages ENTER \" + this.totalImages + \" === \" + lazyloadImages.length);\r\n if (!lazyloadImages || lazyloadImages.length === 0) {\r\n return;\r\n }\r\n // if (lazyloadImages.length === this.totalLazyImages) {\r\n // return;\r\n // }\r\n if (lazyloadImages.length < this.totalImages) {\r\n return;\r\n }\r\n this.loadedImages = true;\r\n // console.log(\"LazyImagesComponent.loadLazyImages \" + this.totalImages + \" === \" + lazyloadImages.length);\r\n var imageObserver = new IntersectionObserver(function (entries, observer) {\r\n entries.forEach(function (entry) {\r\n if (entry.isIntersecting) {\r\n var image = entry.target;\r\n image.classList.remove(\"mylazy\");\r\n imageObserver.unobserve(image);\r\n }\r\n });\r\n });\r\n\r\n lazyloadImages.forEach(function (image) {\r\n imageObserver.observe(image);\r\n });\r\n }\r\n }\r\n /*\r\n ngAfterViewInit() {\r\n console.log(\"ngAfterViewInit \" + this.totalImages + \" \" + document.querySelectorAll(\".mylazy\").length);\r\n if (typeof window === 'undefined')\r\n return;\r\n this.loadLazyImages();\r\n }\r\n */\r\n\r\n ngAfterViewChecked() {\r\n if (typeof window === 'undefined')\r\n return;\r\n //console.log(\"ngAfterViewChecked \" + this.totalImages + \" \" + document.querySelectorAll(\".mylazy\").length);\r\n\r\n if (document && document.querySelectorAll(\".mylazy\").length >= this.totalImages && this.totalImages > 0)\r\n this.loadLazyImages();\r\n }\r\n\r\n}","\r\n
    \r\n

    {{topic.TopicInformation.Title}}

    \r\n
    \r\n
    \r\n
    ","import { Component, OnInit, Input, SimpleChanges, OnChanges, ViewEncapsulation } from '@angular/core';\r\nimport { TopicLeaf } from '../../model/TopicLeaf';\r\nimport { globals } from '../shared/globals';\r\nimport { SafeStyle, DomSanitizer } from '@angular/platform-browser';\r\nimport { LazyImagesComponent } from '../shared/lazy-images-component';\r\n\r\n@Component({\r\n selector: 'app-display-topic',\r\n templateUrl: './display-topic.component.html',\r\n styleUrls: ['./display-topic.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class DisplayTopicComponent extends LazyImagesComponent implements OnChanges, OnInit {\r\n @Input() topic: TopicLeaf;\r\n @Input() area: string;\r\n\r\n private justTheUrl: string;\r\n public imgUrl: SafeStyle;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n let stringVersion = JSON.stringify(changes.topic.currentValue);\r\n let parsed = JSON.parse(stringVersion);\r\n\r\n if (!parsed.ThumbnailFileName) {\r\n return;\r\n }\r\n this.justTheUrl = '/assets/databaseimages/' + parsed.ThumbnailFileName;\r\n // this.justTheUrl = globals.REMOTEHOST + '/assets/databaseimages/' + parsed.ThumbnailFileName;\r\n this.imgUrl = this.sanitizer.bypassSecurityTrustStyle(\"url(\" + this.justTheUrl + \")\")\r\n }\r\n\r\n constructor(private sanitizer: DomSanitizer) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","\r\n
    \r\n

    {{contentEntry.Information.Title}}

    \r\n
    \r\n
    \r\n
    ","import { Component, OnInit, Input, SimpleChanges, OnChanges, ViewEncapsulation } from '@angular/core';\r\n//import { Component, OnInit, Input, SimpleChanges, OnChanges, Output, EventEmitter } from '@angular/core';\r\nimport { ContentEntryPublishRenderDescriptor } from '../../model/ContentEntryPublishRenderDescriptor';\r\nimport { TopicLeaf } from '../../model/TopicLeaf';\r\n//import { ContentEntryDisplayData } from '../../model/ContentEntry/ContentEntryDisplayData';\r\n//import { DomSanitizer, SafeStyle, Title } from '@angular/platform-browser';\r\nimport { globals } from '../shared/globals';\r\nimport { Router } from '@angular/router';\r\nimport { SafeStyle, DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'app-display-content-entry',\r\n templateUrl: './display-content-entry.component.html',\r\n styleUrls: ['./display-content-entry.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class DisplayContentEntryComponent implements OnInit, OnChanges {\r\n @Input() contentEntry: ContentEntryPublishRenderDescriptor;\r\n @Input() selectedTopic: TopicLeaf;\r\n // @Output() showContentEntry = new EventEmitter();\r\n @Input() area: string;\r\n\r\n\r\n private justTheUrl: string;\r\n private imgUrl: SafeStyle;\r\n theID = \"none\";\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n let stringVersion = JSON.stringify(changes.contentEntry.currentValue);\r\n let parsed = JSON.parse(stringVersion);\r\n\r\n if (!parsed.ThumbnailImageAssetID)\r\n return;\r\n this.justTheUrl = \"/assets/databaseimages/\" + parsed.ThumbnailFilename;\r\n this.imgUrl = this.sanitizer.bypassSecurityTrustStyle(\"url(\" + this.justTheUrl + \")\")\r\n }\r\n /*\r\n ShowContent()\r\n {\r\n var contentEntryData: ContentEntryDisplayData = ContentEntryDisplayData.InstantiateOneLevelContentEntryDisplayData(this.selectedTopic, this.contentEntry);\r\n this.showContentEntry.emit(contentEntryData);\r\n }\r\n */\r\n constructor(private _router: Router, private sanitizer: DomSanitizer) { }\r\n\r\n ngOnInit() {\r\n if (this._router.url.indexOf(\"videocoursesview\") >= 0 || this._router.url.indexOf(\"shortvideosview\") >= 0) {\r\n this.theID = \"thevideocourse\";\r\n }\r\n }\r\n\r\n}\r\n","
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n

    Lawshelf Short Videos - Presentations on a broad range of legal topics

    \r\n
    \r\n\r\n
    \r\n \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    ","import { Component, OnInit, OnDestroy, AfterViewChecked, ViewChildren, QueryList, ViewEncapsulation } from '@angular/core';\r\nimport { TopicLeaf } from '../../model/TopicLeaf';\r\nimport { CoursewareService } from '../../services/CoursewareService';\r\nimport { ContentEntryDisplayData } from '../../model/ContentEntry/ContentEntryDisplayData';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { Breadcrumb } from 'src/model/Breadcrumb';\r\nimport { AlertService } from '../_alert';\r\nimport { Error } from 'src/model/Error';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { MetaService } from 'src/services/MetaService';\r\nimport { BaseComponent } from '../base.component';\r\nimport { LazyImagesComponent } from '../shared/lazy-images-component';\r\n\r\n@Component({\r\n selector: 'app-short-videos',\r\n templateUrl: './short-videos.component.html',\r\n styleUrls: ['./short-videos.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ShortVideosComponent extends LazyImagesComponent implements OnInit, OnDestroy {\r\n public shortVideos: TopicLeaf[];\r\n public static cacheShortVideos: TopicLeaf[];\r\n public currentTopic: TopicLeaf = null;\r\n showTopics: boolean = true;\r\n showContentEntries: boolean = false;\r\n public currentContentEntry: ContentEntryDisplayData;\r\n public breadcrumbs: Breadcrumb[] = [];\r\n public topicArea: string = \"/shortvideosview\";\r\n public contentArea: string = \"/shortvideoscontentview\";\r\n\r\n constructor(private canonicalService: MetaService, private titleService: Title, private _router: Router, private route: ActivatedRoute, private coursewareService: CoursewareService, private alertService: AlertService) {\r\n super();\r\n this.getShortVideos();\r\n this.titleService.setTitle(\"Short Videos - LawShelf Educational Media\");\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.canonicalService.removeCanonicalURL();\r\n }\r\n\r\n\r\n getShortVideos() {\r\n if (!ShortVideosComponent.cacheShortVideos)\r\n this.coursewareService.getShortVideos().subscribe(data => {\r\n this.shortVideos = ShortVideosComponent.cacheShortVideos = data;\r\n if (!this.shortVideos || !this.shortVideos.length) {\r\n ShortVideosComponent.cacheShortVideos = this.shortVideos = null;\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n }\r\n this.initialize();\r\n });\r\n else {\r\n this.shortVideos = ShortVideosComponent.cacheShortVideos;\r\n this.initialize();\r\n }\r\n }\r\n\r\n hasShortVideos() {\r\n if (!this.shortVideos || this.shortVideos.length < 1)\r\n return false;\r\n return true;\r\n }\r\n\r\n ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n initialize() {\r\n this.pushAllAds(2);\r\n let alias = this.route.snapshot.paramMap.get('alias');\r\n if (!alias) {\r\n this.currentTopic = null;\r\n this.showTopics = true;\r\n this.showContentEntries = false;\r\n this.breadcrumbs = null;\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/shortvideosview/\");\r\n if (this.shortVideos)\r\n this.totalImages = this.shortVideos.length;\r\n\r\n } else {\r\n this.showTopics = false;\r\n this.showContentEntries = true;\r\n if (this.shortVideos) {\r\n for (let shortVideo of this.shortVideos) {\r\n if (shortVideo.TopicInformation.Alias == alias) {\r\n this.currentTopic = shortVideo;\r\n this.totalImages = this.currentTopic.contentEntries.length;\r\n }\r\n }\r\n }\r\n if (this.shortVideos && this.shortVideos.length && this.currentTopic == null)\r\n this.alertService.error(\"Error - could not find videos belonging to \" + alias);\r\n if (this.currentTopic) {\r\n this.breadcrumbs = [{ Title: \"Short-Videos\", URL: \"/shortvideosview\" }, { Title: this.currentTopic.TopicInformation.Title, URL: \"/shortvideosview/\" + alias }];\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/shortvideosview/\" + alias);\r\n }\r\n }\r\n this.loadLazyImages();\r\n }\r\n}","
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n

    Lawshelf Blog - Video analyses of law-related news stories

    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n","import { Component, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { TopicLeaf } from '../../model/TopicLeaf';\r\nimport { CoursewareService } from '../../services/CoursewareService';\r\nimport { Router } from '@angular/router';\r\nimport { AlertService } from '../_alert';\r\nimport { Error } from 'src/model/Error';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { Breadcrumb } from 'src/model/Breadcrumb';\r\nimport { MetaService } from 'src/services/MetaService';\r\nimport { BaseComponent } from '../base.component';\r\nimport { LazyImagesComponent } from '../shared/lazy-images-component';\r\n\r\n@Component({\r\n selector: 'app-blogs',\r\n templateUrl: './blogs.component.html',\r\n styleUrls: ['./blogs.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class BlogsComponent extends LazyImagesComponent implements OnInit, OnDestroy {\r\n public shortVideos: TopicLeaf[];\r\n public static cacheShortVideos: TopicLeaf[];\r\n public currentTopic: TopicLeaf = null;\r\n public breadcrumbs: Breadcrumb[] = [];\r\n public area: string = \"/blogentryview\";\r\n\r\n\r\n constructor(private canonicalService: MetaService, private titleService: Title, private coursewareService: CoursewareService, private _router: Router, private alertService: AlertService) {\r\n super();\r\n this.getShortVideos();\r\n this.titleService.setTitle(\"LawShelf's Blog - Lawshelf Educational Media\")\r\n }\r\n\r\n ngOnDestroy() {\r\n this.canonicalService.removeCanonicalURL();\r\n }\r\n\r\n getShortVideos() {\r\n this.pushAllAds(2);\r\n if (!BlogsComponent.cacheShortVideos) {\r\n this.coursewareService.getBlogs().subscribe(data => {\r\n this.shortVideos = BlogsComponent.cacheShortVideos = data;\r\n if (!this.shortVideos || !this.shortVideos.length) {\r\n this.shortVideos = BlogsComponent.cacheShortVideos = null;\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n }\r\n this.totalImages = this.shortVideos.length;\r\n });\r\n }\r\n else\r\n this.shortVideos = BlogsComponent.cacheShortVideos;\r\n }\r\n\r\n hasShortVideos() {\r\n if (this.shortVideos == null || this.shortVideos.length < 1)\r\n return false;\r\n return true;\r\n }\r\n\r\n ngOnInit() {\r\n this.breadcrumbs = [{ Title: \"Short-Videos\", URL: \"/shortvideosview\" }, { Title: \"LawShelf Blog\", URL: \"/blogsview\" }];\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/blogview/\");\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n 1\" [breadcrumbs]=\"breadcrumbs\">\r\n
    \r\n
    \r\n
    \r\n

    Video-Courses

    \r\n
    \r\n\r\n
    \r\n \"Learn\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    ","import { Component, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { TopicLeaf } from '../../model/TopicLeaf';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { CoursewareService } from '../../services/CoursewareService';\r\nimport { IndexModelWithOverview } from '../../model/VideoCourses/IndexModelWithOverview';\r\nimport { Breadcrumb } from 'src/model/Breadcrumb';\r\nimport { AlertService } from '../_alert';\r\nimport { Error } from 'src/model/Error';\r\nimport { DomSanitizer, Title } from '@angular/platform-browser';\r\nimport { globals } from '../shared/globals';\r\nimport { MetaService } from 'src/services/MetaService';\r\nimport { LoginComponent } from '../account/login.component';\r\nimport { BaseComponent } from '../base.component';\r\nimport { LazyImagesComponent } from '../shared/lazy-images-component';\r\n\r\n@Component({\r\n selector: 'app-videocourses',\r\n templateUrl: './videocourses.component.html',\r\n styleUrls: ['./videocourses.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class VideocoursesComponent extends LazyImagesComponent implements OnInit, OnDestroy {\r\n public videoCourses: IndexModelWithOverview;\r\n public static cachevideoCourses: IndexModelWithOverview;\r\n public currentTopic: TopicLeaf = null;\r\n showTopics: boolean = true;\r\n showContentEntries: boolean = false;\r\n public breadcrumbs: Breadcrumb[] = [];\r\n showVideo: boolean = false;\r\n static userCachedFor = null;\r\n\r\n showTopic: boolean = true;\r\n showLatest: boolean = false;\r\n showBadges: boolean = false;\r\n playingVideo: boolean = false;\r\n loading: boolean = true;\r\n public currentLatestCount = 18;\r\n public topicArea: string = \"/videocoursesview\";\r\n public contentArea: string = \"/videocoursescontentview\";\r\n\r\n constructor(private canonicalService: MetaService, private titleService: Title, private route: ActivatedRoute, private _router: Router, private coursewareService: CoursewareService, private alertService: AlertService, private sanitizer: DomSanitizer) {\r\n super();\r\n this.getVideoCourses();\r\n this.titleService.setTitle(\"Video-Courses - Lawshelf Educational Media\");\r\n }\r\n /*\r\n getImages() {\r\n if (!this.videoCourses || !this.videoCourses.indexModel || !this.videoCourses.indexModel.EarnedBadgess)\r\n return 0;\r\n return this.videoCourses.indexModel.EarnedBadgess.length;\r\n }\r\n */\r\n\r\n ngOnDestroy(): void {\r\n this.canonicalService.removeCanonicalURL();\r\n }\r\n\r\n showMoreLatest() {\r\n this.currentLatestCount += 18;\r\n this.loadedImages = false;\r\n this.totalImages = 3;\r\n }\r\n\r\n hasMoreLatest() {\r\n if (this.videoCourses && this.currentLatestCount < this.videoCourses.indexModel.AllDigitalBadges.length) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n hideVideo() {\r\n this.showVideo = false;\r\n this.playingVideo = false;\r\n }\r\n\r\n playTheVideo() {\r\n this.playingVideo = true;\r\n }\r\n\r\n displayTopicTab() {\r\n if (this.showTopic)\r\n return true;\r\n return false;\r\n }\r\n\r\n displayLatestTab() {\r\n if (this.showLatest)\r\n return true;\r\n return false;\r\n }\r\n\r\n displayEarnedTab() {\r\n if (this.showBadges)\r\n return true;\r\n return false;\r\n }\r\n\r\n getImageUrl(aEntry) {\r\n if (aEntry) {\r\n let justTheUrl = '/assets/databaseimages/' + aEntry.ThumbnailFilename;\r\n return this.sanitizer.bypassSecurityTrustStyle(\"url(\" + justTheUrl + \")\")\r\n }\r\n return \"\";\r\n }\r\n\r\n showTheTopicTab() {\r\n this.showTopic = true;\r\n this.showLatest = false;\r\n this.showBadges = false;\r\n this.setNumberOfImages();\r\n this.loadedImages = false;\r\n }\r\n\r\n showTheLatestTab() {\r\n this.showTopic = false;\r\n this.showLatest = true;\r\n this.showBadges = false;\r\n this.setNumberOfImages();\r\n this.loadedImages = false;\r\n }\r\n\r\n showTheBadgesTab() {\r\n this.showTopic = false;\r\n this.showLatest = false;\r\n this.showBadges = true;\r\n this.setNumberOfImages();\r\n this.loadedImages = false;\r\n }\r\n\r\n topicTabClass() {\r\n if (this.showTopic)\r\n return \"active\";\r\n return \"\";\r\n }\r\n\r\n latestClass() {\r\n if (this.showLatest)\r\n return \"active\";\r\n return \"\";\r\n }\r\n\r\n badgesClass() {\r\n if (this.showBadges)\r\n return \"active\";\r\n return \"\";\r\n }\r\n\r\n isLoading() {\r\n if (this.loading)\r\n return \"inline-block\";\r\n return \"none\";\r\n }\r\n\r\n\r\n getVideoCourses() {\r\n this.pushAllAds(2);\r\n if (!VideocoursesComponent.cachevideoCourses || (globals.userName != VideocoursesComponent.userCachedFor)) {\r\n this.loading = true;\r\n this.coursewareService.getVideocourses(globals.token).subscribe(data => {\r\n this.videoCourses = VideocoursesComponent.cachevideoCourses = data;\r\n this.loading = false;\r\n\r\n if (!this.videoCourses.indexModel) {\r\n this.videoCourses = VideocoursesComponent.cachevideoCourses = null;\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n return;\r\n }\r\n VideocoursesComponent.userCachedFor = globals.userName;\r\n this.initialize();\r\n return;\r\n });\r\n return;\r\n }\r\n this.loading = false;\r\n this.videoCourses = VideocoursesComponent.cachevideoCourses;\r\n }\r\n\r\n public getTopicLeaf(alias: string) {\r\n if (!this.videoCourses) {\r\n if (VideocoursesComponent.cachevideoCourses)\r\n this.videoCourses = VideocoursesComponent.cachevideoCourses;\r\n else {\r\n this.getVideoCourses();\r\n return;\r\n }\r\n }\r\n try {\r\n for (let video of this.videoCourses.indexModel.TopicLeaves) {\r\n if (alias == video.TopicInformation.Alias) {\r\n return video;\r\n }\r\n }\r\n } catch (ex) {\r\n console.log(\"getTopicLeaf \" + alias);\r\n }\r\n return null;\r\n }\r\n\r\n ngOnInit() {\r\n this.initialize();\r\n }\r\n\r\n hasBadges() {\r\n if (this.videoCourses && this.videoCourses.indexModel && this.videoCourses.indexModel.EarnedBadgess && this.videoCourses.indexModel.EarnedBadgess.length > 0)\r\n return true;\r\n return false;\r\n }\r\n\r\n initialize() {\r\n let alias = this.route.snapshot.paramMap.get('alias');\r\n let fromBanner = this.route.snapshot.paramMap.get('frombanner');\r\n // if (fromBanner)\r\n // this.showVideo = true;\r\n if (!LoginComponent.user)\r\n this.showVideo = true;\r\n if (!alias) {\r\n this.currentTopic = null;\r\n this.showTopics = true;\r\n this.showContentEntries = false;\r\n this.breadcrumbs = [{ Title: \"Video-Courses\", URL: \"/videocoursesview\" }];\r\n // if (fromBanner)\r\n // this.canonicalService.createCanonicalURL(this._router.url,\"/videocoursesbannerview/frombanner\");\r\n // else\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/videocoursesview/\");\r\n } else {\r\n this.showTopics = false;\r\n this.showContentEntries = true;\r\n this.currentTopic = this.getTopicLeaf(alias);\r\n if (this.currentTopic) {\r\n this.breadcrumbs = [{ Title: \"Video-Courses\", URL: \"/videocoursesview\" }, { Title: this.currentTopic.TopicInformation.Title, URL: \"/videocoursesview/\" + alias }];\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/videocoursesview/\" + alias);\r\n }\r\n }\r\n this.setNumberOfImages();\r\n }\r\n\r\n public setNumberOfImages() {\r\n if (this.displayTopicTab() && this.videoCourses) {\r\n if (!this.currentTopic) {\r\n this.totalImages = this.videoCourses.indexModel.TopicLeaves.length;\r\n } else {\r\n this.totalImages = this.currentTopic.contentEntries.length;\r\n }\r\n } else if (this.displayLatestTab() && this.videoCourses) {\r\n this.totalImages = 18; // we dont show this right away\r\n // this.totalImages = this.videoCourses.indexModel.AllDigitalBadges.length;\r\n } else if (this.displayEarnedTab() && this.videoCourses) {\r\n this.totalImages = this.videoCourses.indexModel.EarnedBadgess.length;\r\n } else if (this.currentTopic && this.showContentEntries) {\r\n this.totalImages = this.currentTopic.contentEntries.length;\r\n }\r\n }\r\n}","import { Component } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { globals } from './globals';\r\n\r\n@Component({\r\n selector: 'app-social-media',\r\n templateUrl: './social-media.component.html',\r\n styleUrls: ['./social-media.component.css']\r\n\r\n})\r\n\r\nexport class SocialMediaComponent {\r\n constructor(private _router: Router ) {}\r\n\r\n public getTheUrl()\r\n {\r\n// console.log(\"SocialMediaComponent theUrl=\" + globals.LOCALHOST + this._router.url);\r\n return globals.LOCALHOST + this._router.url;\r\n }\r\n}\r\n","","
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n

    You have successfully purchased the digital badge !

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {{ content.digitalBadgePublishedDisplayModel.Title }}

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n You have earned this badge.\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n\r\n
    \r\n
     
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n Show More\r\n
    \r\n
    \r\n
    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \"Image\"\r\n\r\n \r\n \r\n
    \r\n
    \r\n

    \r\n {{ aEntry.Information.Title }}\r\n

    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n Final Exam\r\n only needs to be taken by those seeking to earn the\r\n Digital Badge\r\n credentials for this course.\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    ","import { Component, OnInit, Input, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { DigitalBadgePublishedDisplayModelWithOverview } from '../../model/VideoCourses/DigitalBadgePublishedDisplayModelWithOverview';\r\nimport { DomSanitizer, Title } from '@angular/platform-browser';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Breadcrumb } from 'src/model/Breadcrumb';\r\nimport { globals } from '../shared/globals';\r\nimport { AlertService } from '../_alert';\r\nimport { Error } from 'src/model/Error';\r\nimport { EmbedVideoService } from 'ngx-embed-video';\r\nimport { MetaService } from 'src/services/MetaService';\r\nimport { BaseComponent } from '../base.component';\r\nimport { TextUtils } from '../shared/textutil';\r\nimport { json } from 'body-parser';\r\n\r\n@Component({\r\n selector: 'app-videocoursecontent',\r\n templateUrl: './videocoursecontent.component.html',\r\n styleUrls: ['./videocoursecontent.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class VideocoursecontentComponent extends BaseComponent implements OnInit, OnDestroy {\r\n @Input() content: DigitalBadgePublishedDisplayModelWithOverview;\r\n private displayOverview: boolean = true;\r\n private displayFaqs: boolean = false;\r\n private showMore: boolean = false;\r\n public breadcrumbs: Breadcrumb[] = [];\r\n theVideoUrl: any;\r\n overviewHTML: TextUtils = null;\r\n faqsHtml: TextUtils = null;\r\n faqsTitle: string = null;\r\n\r\n constructor(private canonicalService: MetaService, private embedService: EmbedVideoService, private titleService: Title, private _router: Router, private route: ActivatedRoute, private coursewareService: CoursewareService, private sanitizer: DomSanitizer, private alertService: AlertService) {\r\n super();\r\n }\r\n\r\n public getTheVideoUrl() {\r\n this.theVideoUrl = this.embedService.embed_vimeo(this.content.digitalBadgePublishedDisplayModel.DigitalBadgeCourse.VideoID.ID);\r\n }\r\n\r\n public getEntryImageUrl(ThumbnailFileName) {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(\"/assets/databaseimages/\" + ThumbnailFileName);\r\n }\r\n\r\n public getTheUrl() {\r\n return globals.LOCALHOST + this._router.url + \"/\";\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.canonicalService.removeCanonicalURL();\r\n }\r\n\r\n ngOnInit() {\r\n this.displayOverview = true;\r\n this.displayFaqs = false;\r\n this.showMore = false;\r\n\r\n let alias = this.route.snapshot.paramMap.get('alias');\r\n\r\n this.coursewareService.getVideocoursesData(globals.token, alias).subscribe(data => {\r\n this.content = data;\r\n // console.log(\"data is \" + JSON.stringify(data));\r\n if (!this.content)\r\n console.log(\"this.content is null\");\r\n else if (!this.content.digitalBadgePublishedDisplayModel) {\r\n console.log(\"this.content.digitalBadgePublishedDisplayModel is null\");\r\n }\r\n this.overviewHTML = new TextUtils(this.content.digitalBadgePublishedDisplayModel.Summary);\r\n this.faqsHtml = new TextUtils(this.content.digitalBadgeOverviewData.faqs[1].Description);\r\n this.faqsTitle = this.content.digitalBadgeOverviewData.faqs[1].EntryTitle;\r\n if (!this.content.digitalBadgeOverviewData) {\r\n this.content = null;\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n return;\r\n }\r\n let theUrl = this.getTheUrl();\r\n\r\n this.getTheVideoUrl();\r\n this.canonicalService.addMetaTags(theUrl,\r\n this.content.digitalBadgePublishedDisplayModel.Summary,\r\n this.content.digitalBadgePublishedDisplayModel.LogoUrl,\r\n this.content.digitalBadgePublishedDisplayModel.Title,\r\n this.content.digitalBadgePublishedDisplayModel.FacebookAppId);\r\n\r\n this.titleService.setTitle(this.content.digitalBadgePublishedDisplayModel.Title);\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/videocoursescontentview/\" + this.content.digitalBadgePublishedDisplayModel.DigitalBadgeCourse.Information.Alias);\r\n\r\n this.breadcrumbs = [{ Title: \"Video-Courses\", URL: \"/videocoursesview\" }, { Title: this.content.digitalBadgePublishedDisplayModel.Lineage[0].TopicInformation.Title, URL: \"/videocoursesview/\" + this.content.digitalBadgePublishedDisplayModel.Lineage[0].TopicInformation.Alias }, { Title: this.content.digitalBadgePublishedDisplayModel.Title, URL: \"/videocoursesview/\" + this.content.digitalBadgePublishedDisplayModel.DigitalBadgeCourse.Information.Alias }];\r\n this.pushAllAds(2);\r\n\r\n });\r\n }\r\n\r\n showSubscribe() {\r\n if (this.content && !this.content.digitalBadgePublishedDisplayModel.DigitalBadgeCourse.LicensedByUser && !this.content.HasAccess)\r\n return true;\r\n return false;\r\n }\r\n\r\n isLoggedIn() {\r\n if (globals.userName)\r\n return true;\r\n return false;\r\n }\r\n\r\n getDisplayFaqsButton() {\r\n if (this.displayFaqs)\r\n return 'btn btn-block selected-digital-badge-overview-buttons';\r\n return 'btn btn-block digital-badge-overview-buttons';\r\n }\r\n\r\n getDisplayOverviewButton() {\r\n if (this.displayOverview)\r\n return 'btn btn-block selected-digital-badge-overview-buttons';\r\n return 'btn btn-block digital-badge-overview-buttons';\r\n }\r\n\r\n getOverviewHtmlPart1() {\r\n if (this.overviewHTML == null) {\r\n return this.sanitizer.bypassSecurityTrustHtml(\"\");\r\n }\r\n return this.sanitizer.bypassSecurityTrustHtml(this.overviewHTML.firstHalf);\r\n }\r\n\r\n getFaqsHtmlPart1() {\r\n if (this.faqsHtml == null) {\r\n return this.sanitizer.bypassSecurityTrustHtml(\"\");\r\n }\r\n return this.sanitizer.bypassSecurityTrustHtml(this.faqsHtml.firstHalf);\r\n }\r\n\r\n getOverviewHtmlPart2() {\r\n if (this.overviewHTML == null) {\r\n return this.sanitizer.bypassSecurityTrustHtml(\"\");\r\n }\r\n return this.sanitizer.bypassSecurityTrustHtml(this.overviewHTML.secondHalf);\r\n }\r\n\r\n getFaqsHtmlPart2() {\r\n if (this.faqsHtml == null) {\r\n return this.sanitizer.bypassSecurityTrustHtml(\"\");\r\n }\r\n return this.sanitizer.bypassSecurityTrustHtml(this.faqsHtml.secondHalf);\r\n }\r\n\r\n showTest(alias, parentId) {\r\n this._router.navigate([\"/videocoursesmoduleview\", this.content.digitalBadgePublishedDisplayModel.DigitalBadgeCourse.Information.Alias]);\r\n return false;\r\n }\r\n\r\n showFinal(alias, ) {\r\n this._router.navigate([\"/examview\", this.content.digitalBadgePublishedDisplayModel.DigitalBadgeCourse.Information.Alias, JSON.stringify(this.breadcrumbs)]);\r\n return false;\r\n }\r\n\r\n showNothing() {\r\n if (this.showSubscribe)\r\n return false;\r\n if (this.content && this.content.digitalBadgePublishedDisplayModel.DigitalBadgeCourse.LicensedByUser)\r\n return true;\r\n return false;\r\n }\r\n\r\n showLicensed() {\r\n if (this.showSubscribe || this.showNothing)\r\n return false;\r\n if (this.content && this.content.digitalBadgePublishedDisplayModel.PassedExam)\r\n return true;\r\n return false;\r\n }\r\n\r\n showPassedExam() {\r\n if (this.content && this.content.digitalBadgePublishedDisplayModel && this.content.digitalBadgePublishedDisplayModel.PassedExam)\r\n return true;\r\n return false;\r\n }\r\n\r\n}","
    \r\n
    \r\n \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {{modulecontent.Title}}

    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \"Subscribe\r\n \r\n
    \r\n\r\n \r\n
    \r\n \r\n\r\n 0\"\r\n [displayAmount]=\"3\" [concepts]=\"modulecontent.SeeAlso\">\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n 3\"\r\n [displayAmount]=\"100\" [concepts]=\"modulecontent.SeeAlso\">\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    ","import { Component, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { DigitalBadgeEntryDisplayModel } from 'src/model/VideoCourses/DigitalBadgeEntryDisplayModel';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { Breadcrumb } from 'src/model/Breadcrumb';\r\nimport { AlertService } from '../_alert';\r\nimport { Error } from 'src/model/Error';\r\nimport { globals } from '../shared/globals';\r\nimport { EmbedVideoService } from 'ngx-embed-video';\r\nimport { MetaService } from 'src/services/MetaService';\r\nimport { TextUtils } from '../shared/textutil';\r\nimport { BaseComponent } from '../base.component';\r\n\r\n@Component({\r\n selector: 'app-videocoursemodule',\r\n templateUrl: './videocoursemodule.component.html',\r\n styleUrls: ['./videocoursemodule.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class VideocoursemoduleComponent extends BaseComponent implements OnInit, OnDestroy {\r\n modulecontent: DigitalBadgeEntryDisplayModel;\r\n public breadcrumbs: Breadcrumb[] = [];\r\n public timeindex: string;\r\n theVideoUrl: any;\r\n public textPart1: string;\r\n public textPart2: string;\r\n alias = null;\r\n errorMessage: string;\r\n\r\n constructor(private canonicalService: MetaService, private embedService: EmbedVideoService, private titleService: Title, private _router: Router, private route: ActivatedRoute, private coursewareService: CoursewareService, private alertService: AlertService) {\r\n super();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.canonicalService.removeCanonicalURL();\r\n }\r\n\r\n ngOnInit() {\r\n this.alias = this.route.snapshot.paramMap.get('alias');\r\n let parent = this.route.snapshot.paramMap.get('parent');\r\n this.timeindex = this.route.snapshot.paramMap.get('timeindex');\r\n\r\n if (!this.timeindex) {\r\n this.timeindex = this.route.snapshot.queryParams.TimeIndex;\r\n }\r\n\r\n this.coursewareService.getVideocoursesModule(this.alias, parent).subscribe(data => {\r\n this.modulecontent = data;\r\n if (!this.modulecontent.Entry) {\r\n this.modulecontent = null;\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n return;\r\n }\r\n let textUtils = new TextUtils(this.modulecontent.Entry.Html);\r\n this.textPart1 = textUtils.firstHalf;\r\n this.textPart2 = textUtils.secondHalf;\r\n\r\n let theUrl = globals.LOCALHOST + this._router.url + \"/\";\r\n\r\n this.getTheVideoUrl();\r\n\r\n let shortenedTitle = this.modulecontent.Title;\r\n if (shortenedTitle) {\r\n const whereToEndTitle = this.modulecontent.Title.indexOf(\"- Module\");\r\n if (whereToEndTitle > 0)\r\n shortenedTitle = shortenedTitle.substring(0, whereToEndTitle - 1);\r\n }\r\n\r\n this.canonicalService.addMetaTags(theUrl, this.modulecontent.Summary, this.modulecontent.LogoUrl, shortenedTitle, this.modulecontent.FacebookAppId);\r\n\r\n this.titleService.setTitle(shortenedTitle);\r\n\r\n this.breadcrumbs = [{ Title: \"Video-Courses\", URL: \"/videocoursesview\" }, { Title: this.modulecontent.DigitalBadgeCourse.Information.Title, URL: \"/videocoursescontentview/\" + this.modulecontent.DigitalBadgeCourse.Information.Alias }, { Title: this.modulecontent.Entry.ContentEntryDescriptor.Information.Title, URL: \"/videocoursesview/\" + this.modulecontent.Entry.ContentEntryDescriptor.Information.Alias }];\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/videocoursesmoduleview/\" + this.modulecontent.Entry.ContentEntryDescriptor.Information.Alias);\r\n this.pushAllAds(3);\r\n }, error => this.errorMessage = error);\r\n }\r\n\r\n getTheHtml() {\r\n return this.modulecontent.Entry.Html;\r\n }\r\n\r\n public getTheVideoUrl() {\r\n let timeindexstring = \"\";\r\n if (this.timeindex) {\r\n let totalseconds = Number(this.timeindex);\r\n if (totalseconds > 0) {\r\n let minutes = Math.floor(totalseconds / 60);\r\n let seconds = Math.floor(totalseconds % 60);\r\n timeindexstring = \"#t=\" + minutes + \"m\" + seconds + \"s\";\r\n }\r\n }\r\n\r\n this.theVideoUrl = this.embedService.embed_vimeo(this.modulecontent.Entry.VendorVideoID + timeindexstring);\r\n }\r\n}","export enum ConceptTypeLink{\r\n VideoCourse = 0, FoundationsOfLaw = 1, Blog = 2, ShortVideos = 3, Alias = 4\r\n}","
    \r\n\r\n \r\n \r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Concept } from 'src/model/Concept/Concept';\r\nimport { ConceptLink } from 'src/model/Concept/ConceptLink';\r\nimport { ConceptTypeLink } from 'src/model/Concept/ConceptTypeLink';\r\n\r\n@Component({\r\n selector: 'app-research-index-entry',\r\n templateUrl: './research-index-entry.component.html',\r\n styleUrls: ['./research-index-entry.component.css']\r\n})\r\nexport class ResearchIndexEntryComponent implements OnInit {\r\n @Input() concept: Concept;\r\n opened: boolean = false;\r\n\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public getIconClass()\r\n {\r\n if (this.opened)\r\n return \"fa fa-minus-square margin-right-5\";\r\n return \"fa fa-plus-square margin-right-5\";\r\n }\r\n\r\n public getDivStyle()\r\n {\r\n if (this.opened)\r\n return \"inline-block\";\r\n return \"none\";\r\n }\r\n\r\n public showUrls()\r\n {\r\n this.opened = !this.opened;\r\n }\r\n\r\n public getConceptType(conceptLink: ConceptLink)\r\n {\r\n let conceptType: string = ConceptTypeLink[conceptLink.conceptLinkType];\r\n return conceptType;\r\n }\r\n\r\n public isBlog(conceptLink: ConceptLink)\r\n {\r\n if (conceptLink.conceptLinkType == ConceptTypeLink.Blog || conceptLink.conceptLinkType == 2)\r\n return true;\r\n return false;\r\n }\r\n\r\n public isVideoCourse(conceptLink: ConceptLink)\r\n {\r\n if (conceptLink.conceptLinkType == ConceptTypeLink.VideoCourse || conceptLink.conceptLinkType == 0)\r\n return true;\r\n return false;\r\n }\r\n\r\n public isShortVideo(conceptLink: ConceptLink)\r\n {\r\n if (conceptLink.conceptLinkType == ConceptTypeLink.ShortVideos || conceptLink.conceptLinkType == 3)\r\n return true;\r\n return false;\r\n }\r\n\r\n public isFoundationOfLaw(conceptLink: ConceptLink)\r\n {\r\n if (conceptLink.conceptLinkType == ConceptTypeLink.FoundationsOfLaw || conceptLink.conceptLinkType == 1)\r\n return true;\r\n return false;\r\n }\r\n\r\n public isAlias(conceptLink: ConceptLink)\r\n {\r\n if (conceptLink.conceptLinkType == ConceptTypeLink.FoundationsOfLaw || conceptLink.conceptLinkType == 4)\r\n return true;\r\n return false;\r\n }\r\n\r\n public GetHumanReadableTimeIndex(conceptLink: ConceptLink)\r\n {\r\n if (conceptLink.TimeIndex < 1)\r\n return \"\";\r\n return Math.floor(conceptLink.TimeIndex / 60) + \":\" + (conceptLink.TimeIndex % 60);\r\n }\r\n\r\n\r\n\r\n}\r\n","
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n

    Research Index

    \r\n\r\n
    \r\n
    \r\n \r\n \r\n {{letter}}\r\n \r\n  \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n

    \r\n
    \r\n
    ","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { ConceptSearchListModel } from 'src/model/Concept/ConceptSearchListModel';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport {catchError, debounceTime, distinctUntilChanged, tap, switchMap} from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\nimport { AlertService } from '../_alert';\r\nimport { Error } from 'src/model/Error';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { MetaService } from 'src/services/MetaService';\r\nimport { BaseComponent } from '../base.component';\r\n\r\nlet currentInstance = null;\r\n\r\n@Component({\r\n selector: 'app-research-index',\r\n templateUrl: './research-index.component.html',\r\n styleUrls: ['./research-index.component.css']\r\n})\r\n\r\nexport class ResearchIndexComponent extends BaseComponent implements OnInit, OnDestroy {\r\n public alphabet: string[] = [\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\",\"K\",\"L\",\"M\",\"N\",\"O\",\"P\",\"Q\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\"];\r\n public concepts: ConceptSearchListModel;\r\n retrievedData: boolean = false;\r\n public currentSearchTerm: string;\r\n navigationSubscription;\r\n lastSearchTerm = null;\r\n\r\n model: any;\r\n searching = false;\r\n searchFailed = false; \r\n\r\n constructor(private canonicalService: MetaService, private _router: Router, private titleService: Title, private route: ActivatedRoute, private coursewareService: CoursewareService, private alertService: AlertService) { \r\n super();\r\n this.titleService.setTitle(\"Research Index - LawShelf Educational Media\");\r\n currentInstance = this;\r\n// this.navigationSubscription = this._router.events.subscribe((e: any) => {\r\n// if (e instanceof NavigationEnd) {\r\n// this.clearAnswers();\r\n// }\r\n// });\r\n}\r\n\r\nclearAnswers()\r\n{\r\n this.currentSearchTerm = \"\";\r\n this.getResearchIndex(this.currentSearchTerm);\r\n}\r\n\r\nngOnDestroy() {\r\n this.canonicalService.removeCanonicalURL();\r\n if (this.navigationSubscription) { \r\n this.navigationSubscription.unsubscribe();\r\n }\r\n} \r\n\r\npublic getLetter(index: number)\r\n{\r\n return this.alphabet[index];\r\n}\r\n\r\n search = (text$: Observable) =>\r\n text$.pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n tap(() => this.searching = true),\r\n switchMap(term =>\r\n this.coursewareService.getResearchIndexAutocomplete(term).pipe(\r\n tap(() => this.searchFailed = false),\r\n catchError(() => {\r\n this.searchFailed = true;\r\n return null;\r\n //return of([]);\r\n }))\r\n ),\r\n tap(() => this.searching = false)\r\n )\r\n\r\n resultFormatBandListValue(value: any) { \r\n return value;\r\n } \r\n /**\r\n * Initially binds the string value and then after selecting\r\n * an item by checking either for string or key/value object.\r\n */\r\n inputFormatBandListValue(value: any) {\r\n this.currentSearchTerm = value;\r\n currentInstance.getResearchIndex(value);\r\n return value;\r\n } \r\n\r\n public getRetrievedStyle()\r\n {\r\n if (!this.retrievedData)\r\n return \"inline-block\";\r\n return \"none\";\r\n }\r\n\r\n public searchForTerm(searchTerm: HTMLInputElement)\r\n {\r\n this.currentSearchTerm = searchTerm.value;\r\n this.getResearchIndex(searchTerm.value);\r\n }\r\n\r\n public getResearchIndex(searchString: string){\r\n this.currentSearchTerm = searchString;\r\n if (this.concepts)\r\n this.concepts.searchTerm = searchString;\r\n\r\n if (this.lastSearchTerm != null && this.lastSearchTerm == searchString){\r\n return;\r\n }\r\n this.lastSearchTerm = searchString;\r\n this.retrievedData = false;\r\n this.coursewareService.getResearchIndex(searchString, null).subscribe(data => { \r\n let lastConcepts = this.concepts;\r\n this.concepts = data;\r\n this.retrievedData = true;\r\n this.pushAllAds(1);\r\n if (!this.concepts.concepts)\r\n {\r\n this.concepts = lastConcepts;\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n return;\r\n }\r\n });\r\n }\r\n\r\n public getMoreConcepts(searchString: string)\r\n {\r\n if (!this.concepts)\r\n return;\r\n let last = this.concepts.concepts.length - 1;\r\n this.retrievedData = false;\r\n this.coursewareService.getResearchIndex(this.concepts.searchTerm, this.concepts.concepts[last].Name).subscribe(data => {\r\n let lastConcepts = this.concepts;\r\n this.concepts = data;\r\n this.retrievedData = true;\r\n if (!this.concepts.concepts)\r\n {\r\n this.concepts = lastConcepts;\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n return;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.currentSearchTerm = this.route.snapshot.paramMap.get('indexentry');\r\n if (!this.currentSearchTerm)\r\n this.currentSearchTerm = this.route.snapshot.queryParams.startingLetter;\r\n if (!this.currentSearchTerm)\r\n this.currentSearchTerm = \"\";\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/researchindexview/\" + this.currentSearchTerm);\r\n\r\n this.getResearchIndex(this.currentSearchTerm);\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { MetaService } from 'src/services/MetaService';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-terms-of-service',\r\n templateUrl: './terms-of-service.component.html',\r\n styleUrls: ['./terms-of-service.component.css']\r\n})\r\nexport class TermsOfServiceComponent implements OnInit, OnDestroy {\r\n\r\n constructor(private _router: Router, private canonicalService: MetaService,private titleService: Title) { \r\n this.titleService.setTitle(\"LawShelf Educational Media\");\r\n }\r\n\r\n ngOnInit() {\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/termsofserviceview/\");\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.canonicalService.removeCanonicalURL();\r\n }\r\n}\r\n","
    \r\n
    \r\n

    Use of LawShelf Information

    \r\n

    LawShelf is provided to the public on an “as is” basis. LawShelf does not guarantee the accuracy of its content and user utilize LawShelf information at their sole risk. This includes the content of all videos and text on this site including the information presented in all digital badge and certificate programs. By using LawShelf, you agree that your use of the site is at your own risk and you agree, to the maximum extent permitted by law, to hold LawShelf and all of its providers, vendors, successors and assigns harmless from all possible damages whatsoever. LawShelf expressly disclaims any and all warranties, express or implied, regarding its content. The user agrees to indemnify, defend and hold LawShelf and its officers, directors, employees, affiliates, agents, licensors and suppliers harmless from and against all claims, losses, expenses, damages and costs, including reasonable legal fees, resulting from any violation of its terms.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Republication

    \r\n

    Users are welcome to post links to LawShelf content, including pages, articles and presentations. Users may not reproduce or republish content from LawShelf without the express written consent of a LawShelf representative. Anyone wishing to request permission to republish or reproduce any content should contact us.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Links

    \r\n

    The LawShelf home page or any subpage may be linked to from another webpage, so long as the content or information on any LawShelf page is not taken out of context or in any way misrepresented. Moreover, LawShelf reserves the right to request that any links to any LawShelf website be removed from any website. By linking to any LawShelf page, you agree to remove such link upon request by LawShelf.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Cancellation

    \r\n

    Users may cancel their subscriptions at any time.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Termination

    \r\n

    LawShelf may, in its sole discretion and for any reason, terminate any person’s access to LawShelf if the user’s conduct is found to be unlawful, inconsistent with or in violation of, the letter or spirit of these Terms. LawShelf shall not be liable to you or any third party for termination of website access.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Governing Law and Jurisdiction

    \r\n

    These Terms are governed by and construed in accordance with the laws of the State of Arizona, and you agree to submit to the exclusive jurisdiction of the state and federal courts sitting in Arizona. You agree to waive all defenses or objections to such jurisdiction and venue.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Severability of Provisions

    \r\n

    If any provision of these Terms is unlawful, void or unenforceable, then that provision shall be deemed severable from the remaining provisions and shall not affect their validity and enforceability.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Contact Information

    \r\n

    If you have any questions about these Terms, or about the content, information or services on this website, you may contact us via our contact us page.

    \r\n
    \r\n
    ","import { Component, OnInit } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { AlertService } from '../_alert';\r\nimport { Error } from 'src/model/Error';\r\nimport { first } from 'rxjs/operators';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'app-register',\r\n templateUrl: './register.component.html',\r\n styleUrls: ['./register.component.css']\r\n})\r\nexport class RegisterComponent implements OnInit {\r\n public Registered: boolean = false;\r\n\r\n constructor(private titleService: Title, private coursewareService: CoursewareService, private alertService: AlertService) { \r\n this.titleService.setTitle(\"LawShelf Educational Media\");\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public onSubmit(form: NgForm)\r\n {\r\n this.alertService.clear();\r\n let errorMessage: string = this.getFormErrorMessage(form);\r\n if (errorMessage){\r\n this.alertService.error(errorMessage);\r\n return false;\r\n }\r\n\r\n this.coursewareService.Register(form.value.Email, form.value.Password, form.value.FirstName, form.value.LastName, form.value.AcceptTerms).subscribe(data => {\r\n if (data == \"Success\")\r\n {\r\n this.Registered = true;\r\n } else{\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n }\r\n });\r\n }\r\n\r\n public getFormErrorMessage(form: NgForm)\r\n {\r\n if (form.value.ConfirmPassword != form.value.Password)\r\n return \"Both passwords must match.\";\r\n if (form.value.FirstName.length < 2 || form.value.FirstName.length > 128)\r\n return \"First name must be longer than 2 characters and shorter than 128.\";\r\n if (form.value.LastName.length < 2 || form.value.LastName.length > 128)\r\n return \"First name must be longer than 2 characters and shorter than 128.\";\r\n if (!form.value.AcceptTerms)\r\n return \"You must accept the terms of service in order to subscribe\";\r\n return null;\r\n }\r\n\r\n\r\n public customFormVerify(form: NgForm)\r\n {\r\n if (!form.valid)\r\n return false;\r\n let errorMessage: string = this.getFormErrorMessage(form);\r\n if (errorMessage)\r\n return false;\r\n return true;\r\n }\r\n\r\n public getDisplayLogin()\r\n {\r\n if (this.Registered)\r\n return \"none\"\r\n return \"inline\";\r\n }\r\n\r\n public getDisplaySuccess()\r\n {\r\n if (this.Registered)\r\n return \"inline\";\r\n return \"none\"\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n

    We have sent you a confirmation email and it should arrive in your mailbox in a few minutes. Please\r\n check your email and click on the link in order to complete your subscription to Lawshelf. If your\r\n confirmation email has not arrived after a few minutes, check your spam folder.

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Register

    \r\n
    \r\n You must be registered in order to take exams and earn a digital badge credential.\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    LawShelf Terms of Service

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","
    \r\n
    \r\n
    \r\n
    \r\n

    You have successfully confirmed your account. Your subscription is now active

    \r\n
    \r\n
    \r\n

    {{ErrorMessage}}

    \r\n
    \r\n
    \r\n

    Completing Registation. Please wait while we process your subscription...

    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { Error } from 'src/model/Error';\r\nimport { AlertService } from '../_alert';\r\n\r\n@Component({\r\n selector: 'app-complete-registration',\r\n templateUrl: './complete-registration.component.html',\r\n styleUrls: ['./complete-registration.component.css']\r\n})\r\nexport class CompleteRegistrationComponent implements OnInit {\r\n public Registered: boolean = false;\r\n public ErrorMessage: string = null;\r\n\r\n constructor(private route: ActivatedRoute, private coursewareService: CoursewareService) { }\r\n\r\n ngOnInit() {\r\n let memberID = this.route.snapshot.paramMap.get('memberID');\r\n if (!memberID)\r\n memberID = this.route.snapshot.queryParamMap.get('memberID');\r\n if (!memberID)\r\n return;\r\n if (memberID.endsWith(\"/\"))\r\n memberID = memberID.replace(\"/\",\"\");\r\n\r\n if (memberID == null)\r\n return;\r\n this.coursewareService.CompleteRegistration(memberID).subscribe(data => {\r\n if (data == \"Success\")\r\n {\r\n this.Registered = true;\r\n } else{\r\n let error: Error = data;\r\n this.Registered = false;\r\n this.ErrorMessage = error.Message;\r\n }\r\n });\r\n }\r\n}\r\n","
    \r\n
    \r\n

    {{content.RenderData.ContentEntryDescriptor.Information.Title}}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    \r\n 0\" [displayAmount]=\"3\" [concepts]=\"content.SeeAlso\">\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n 3\" [displayAmount]=\"100\" [concepts]=\"content.SeeAlso\">\r\n
    \r\n
    ","import { Component, OnInit, Input, ViewEncapsulation } from '@angular/core';\r\nimport { ContentEntryDisplayData } from '../../model/ContentEntry/ContentEntryDisplayData';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { EmbedVideoService } from 'ngx-embed-video';\r\nimport { TextUtils } from '../shared/textutil';\r\nimport { BaseComponent } from '../base.component';\r\n\r\n@Component({\r\n selector: 'app-display-content-video',\r\n templateUrl: './display-content-video.component.html',\r\n styleUrls: ['./display-content-video.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n\r\n})\r\nexport class DisplayContentVideoComponent implements OnInit {\r\n @Input() content: ContentEntryDisplayData;\r\n @Input() timeindex: string;\r\n theUrl: any;\r\n public textPart1: string;\r\n public textPart2: string;\r\n\r\n constructor(private sanitizer: DomSanitizer, private embedService: EmbedVideoService) {\r\n }\r\n\r\n public getTheVideoUrl() {\r\n let timeindexstring = \"\";\r\n if (this.timeindex) {\r\n let totalseconds = Number(this.timeindex);\r\n if (totalseconds > 0) {\r\n let minutes = Math.floor(totalseconds / 60);\r\n let seconds = Math.floor(totalseconds % 60);\r\n timeindexstring = \"#t=\" + minutes + \"m\" + seconds + \"s\";\r\n }\r\n }\r\n this.theUrl = this.embedService.embed_vimeo(this.content.RenderData.VendorVideoID + timeindexstring);\r\n }\r\n\r\n ngOnInit() {\r\n this.getTheVideoUrl();\r\n if (this.content.RenderData.Html && this.content.RenderData.Html.length > 1500) {\r\n let textUtils = new TextUtils(this.content.RenderData.Html);\r\n this.textPart1 = textUtils.firstHalf;\r\n this.textPart2 = textUtils.secondHalf;\r\n }\r\n }\r\n\r\n}\r\n","
    \r\n
    \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    ","import { Component, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { Breadcrumb } from 'src/model/Breadcrumb';\r\nimport { ArticleEntryDisplayModel } from 'src/model/ContentEntry/ArticleEntryDisplayModel';\r\nimport { AlertService } from '../_alert';\r\nimport { Error } from 'src/model/Error';\r\nimport { globals } from '../shared/globals';\r\nimport { MetaService } from 'src/services/MetaService';\r\nimport { BaseComponent } from '../base.component';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'app-display-short-videos-content-entry',\r\n templateUrl: './display-short-videos-content-entry.component.html',\r\n styleUrls: ['./display-short-videos-content-entry.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class DisplayShortVideosContentEntryComponent extends BaseComponent implements OnInit, OnDestroy {\r\n public currentContentEntry: ArticleEntryDisplayModel;\r\n public breadcrumbs: Breadcrumb[] = [];\r\n public timeindex: string;\r\n\r\n constructor(private titleService: Title, private canonicalService: MetaService, private route: ActivatedRoute, private _router: Router, private coursewareService: CoursewareService, private alertService: AlertService) {\r\n super();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.canonicalService.removeCanonicalURL();\r\n }\r\n\r\n ngOnInit() {\r\n let alias = this.route.snapshot.paramMap.get('alias');\r\n this.timeindex = this.route.snapshot.paramMap.get('timeindex');\r\n if (!this.timeindex) {\r\n this.timeindex = this.route.snapshot.queryParams.TimeIndex;\r\n }\r\n\r\n this.coursewareService.getShortVideoEntry(alias).subscribe(data => {\r\n this.currentContentEntry = data;\r\n if (!this.currentContentEntry.Lineage) {\r\n this.currentContentEntry = null;\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n return;\r\n }\r\n let theUrl = globals.LOCALHOST + this._router.url + \"/\";\r\n\r\n this.canonicalService.addMetaTags(theUrl,\r\n this.currentContentEntry.RenderData.ContentEntryDescriptor.Information.Description,\r\n this.currentContentEntry.LogoUrl,\r\n this.currentContentEntry.Title,\r\n this.currentContentEntry.FacebookAppId);\r\n\r\n this.titleService.setTitle(this.currentContentEntry.Title);\r\n this.breadcrumbs = [{ Title: \"Short-Videos\", URL: \"/shortvideosview\" }, { Title: this.currentContentEntry.Lineage[0].TopicInformation.Title, URL: \"/shortvideosview/\" + this.currentContentEntry.Lineage[0].TopicInformation.Alias }, { Title: this.currentContentEntry.RenderData.ContentEntryDescriptor.Information.Title, URL: \"/shortvideoscontentview/\" + this.currentContentEntry.RenderData.ContentEntryDescriptor.Information.Alias }];\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/shortvideoscontentview/\" + this.currentContentEntry.RenderData.ContentEntryDescriptor.Information.Alias);\r\n this.pushAllAds(3);\r\n\r\n });\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    ","import { Component, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { ContentEntryDisplayData } from 'src/model/ContentEntry/ContentEntryDisplayData';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Breadcrumb } from 'src/model/Breadcrumb';\r\nimport { AlertService } from '../_alert';\r\nimport { Error } from 'src/model/Error';\r\nimport { globals } from '../shared/globals';\r\nimport { MetaService } from 'src/services/MetaService';\r\nimport { BaseComponent } from '../base.component';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'app-display-blog-content-entry',\r\n templateUrl: './display-blog-content-entry.component.html',\r\n styleUrls: ['./display-blog-content-entry.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class DisplayBlogContentEntryComponent extends BaseComponent implements OnInit, OnDestroy {\r\n public currentContentEntry: ContentEntryDisplayData;\r\n public breadcrumbs: Breadcrumb[] = [];\r\n\r\n constructor(private titleService: Title, private canonicalService: MetaService, private _router: Router, private route: ActivatedRoute, private coursewareService: CoursewareService, private alertService: AlertService) {\r\n super();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.canonicalService.removeCanonicalURL();\r\n }\r\n\r\n ngOnInit() {\r\n let alias: string = this.route.snapshot.paramMap.get('alias');\r\n this.coursewareService.getBlogEntry(alias).subscribe(data => {\r\n this.currentContentEntry = data;\r\n if (!this.currentContentEntry.Lineage) {\r\n this.currentContentEntry = null;\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n return;\r\n }\r\n\r\n let theUrl = globals.LOCALHOST + this._router.url + \"/\";\r\n\r\n this.canonicalService.addMetaTags(theUrl,\r\n this.currentContentEntry.RenderData.ContentEntryDescriptor.Information.Description,\r\n this.currentContentEntry.LogoUrl,\r\n this.currentContentEntry.RenderData.ContentEntryDescriptor.Information.Title,\r\n this.currentContentEntry.FacebookAppId);\r\n\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/blogentryview/\" + alias);\r\n this.titleService.setTitle(this.currentContentEntry.RenderData.ContentEntryDescriptor.Information.Title);\r\n\r\n this.breadcrumbs = [{ Title: \"Short-Videos\", URL: \"/shortvideosview\" }, { Title: \"Blogs\", URL: \"/blogview\" }, { Title: this.currentContentEntry.RenderData.ContentEntryDescriptor.Information.Title, URL: \"/blogview/\" + alias }];\r\n\r\n this.pushAllAds(3);\r\n });\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Thank you for submitting your request\r\n

    \r\n Your message was sent successfully.\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    LawShelf Contact Form

    \r\n
    \r\n
    \r\n
    \r\n This contact form is for users who need assistance using the LawShelf web site.

    We do not provide personalized legal advice.\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    Email

    \r\n \r\n
    \r\n \r\n

    From: {{LoginComponent.user.FullName}}

    \r\n
    \r\n \r\n

    Message

    \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n ","import { Component, OnInit, AfterViewInit, Inject, ElementRef, OnDestroy } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { AlertService } from '../_alert';\r\nimport { Error } from 'src/model/Error';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { MetaService } from 'src/services/MetaService';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-contact-us',\r\n templateUrl: './contact-us.component.html',\r\n styleUrls: ['./contact-us.component.css'],\r\n})\r\nexport class ContactUsComponent implements OnInit, AfterViewInit, OnDestroy {\r\n public sent: boolean = false;\r\n\r\n constructor(private _router: Router, private canonicalService: MetaService, private titleService: Title, private coursewareService: CoursewareService, private alertService: AlertService, @Inject(DOCUMENT) private document, private elementRef: ElementRef) { \r\n this.titleService.setTitle(\"Contact Us - LawShelf Educational Media\")\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.canonicalService.removeCanonicalURL();\r\n }\r\n\r\n ngOnInit() {\r\n this.canonicalService.createCanonicalURL(this._router.url,\"/contactusview/\");\r\n }\r\n\r\n ngAfterViewInit() {\r\n const s = this.document.createElement('script');\r\n s.type = 'text/javascript';\r\n s.src = 'https://www.google.com/recaptcha/api.js';\r\n const __this = this; //to store the current instance to call \r\n //afterScriptAdded function on onload event of \r\n //script.\r\n s.onload = function () { \r\n __this.afterScriptAdded(); \r\n };\r\n this.elementRef.nativeElement.appendChild(s);\r\n }\r\n\r\n afterScriptAdded() {\r\n const params= {\r\n width: '350px',\r\n height: '420px',\r\n };\r\n if (typeof (window['functionFromExternalScript']) === 'function') {\r\n window['functionFromExternalScript'](params);\r\n }\r\n }\r\n\r\n public doContactUs(form: NgForm)\r\n {\r\n this.alertService.clear();\r\n let myComment = \"\";\r\n if (form.value.Comment.length == 0 )\r\n {\r\n let theDate = new Date();\r\n myComment = \"\" + (theDate.getFullYear() * 100 + theDate.getMonth() + 1);\r\n }\r\n this.coursewareService.ContactUs(form.value.Email, form.value.Message, myComment).subscribe(data => {\r\n if (data == \"SUCCESS\")\r\n {\r\n this.sent = true;\r\n return;\r\n }\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n });\r\n }\r\n\r\n}\r\n","\r\n
  • \r\n \r\n {{entry.Information.Title}} \r\n
  • \r\n\r\n
    \r\n \r\n
    \r\n\r\n\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { TopicModel } from 'src/model/TopicModel';\r\nimport { DigitalBadgeCourseData } from 'src/model/VideoCourses/DigitalBadgeCourseData';\r\n\r\n@Component({\r\n selector: 'app-site-map-entry',\r\n templateUrl: './site-map-entry.component.html',\r\n styleUrls: ['./site-map-entry.component.css']\r\n})\r\nexport class SiteMapEntryComponent implements OnInit {\r\n @Input() entry: DigitalBadgeCourseData;\r\n openedLink: boolean = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public showUrls()\r\n {\r\n this.openedLink = !this.openedLink;\r\n }\r\n\r\n public showChildren()\r\n {\r\n if (this.openedLink)\r\n return \"inline\";\r\n return \"none\"\r\n }\r\n\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    LawShelf Sitemap

    \r\n
    \r\n
    \r\n

    Video-Courses

    \r\n
      \r\n
    • \r\n \r\n {{ aRootTopic.Title}}\r\n \r\n
        \r\n \r\n
      \r\n
    • \r\n
    \r\n

    Foundations of Law

    \r\n
      \r\n
    • \r\n \r\n {{ aRootTopic.Title}}\r\n \r\n
        \r\n
      • \r\n {{ aSubTopic.Title}}\r\n
      • \r\n
      \r\n
    • \r\n
    \r\n

    Short Videos

    \r\n
      \r\n
    • \r\n \r\n {{ aRootTopic.Title}}\r\n \r\n
    • \r\n
    \r\n

    Blog

    \r\n
      \r\n
    • \r\n \r\n {{ aContentEntry.Information.Title}}\r\n \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { SitemapModel } from 'src/model/SiteMapModel';\r\nimport { AlertService } from '../_alert';\r\nimport { Error } from 'src/model/Error';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { MetaService } from 'src/services/MetaService';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-site-map',\r\n templateUrl: './site-map.component.html',\r\n styleUrls: ['./site-map.component.css']\r\n})\r\nexport class SiteMapComponent implements OnInit, OnDestroy{\r\n public siteMap: SitemapModel;\r\n public retrieved: boolean = false;\r\n\r\n constructor(private _router: Router, private canonicalService: MetaService, private titleService: Title, private coursewareService: CoursewareService,private alertService: AlertService) { \r\n this.titleService.setTitle(\"Site Map - Lawshelf Educational Media\");\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.canonicalService.removeCanonicalURL();\r\n }\r\n\r\n ngOnInit() {\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/sitemapview/\");\r\n this.coursewareService.getTableOfContents().subscribe(data => {\r\n this.siteMap = data; \r\n this.retrieved = true;\r\n if (!this.siteMap.ArticleTopics){\r\n this.siteMap = null;\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n }\r\n });\r\n }\r\n\r\n getRetrievedStyle()\r\n {\r\n if (!this.retrieved)\r\n return \"inline\";\r\n return \"none\"\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-terms-of-service-page',\r\n templateUrl: './terms-of-service-page.component.html',\r\n styleUrls: ['./terms-of-service-page.component.css']\r\n})\r\nexport class TermsOfServicePageComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    LawShelf Terms of Service

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { MetaService } from 'src/services/MetaService';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-about-us',\r\n templateUrl: './about-us.component.html',\r\n styleUrls: ['./about-us.component.css']\r\n})\r\n\r\nexport class AboutUsComponent implements OnInit, OnDestroy {\r\n ngOnInit(): void {\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/aboutusview/\");\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.canonicalService.removeCanonicalURL();\r\n }\r\n\r\n constructor(private _router: Router, private canonicalService: MetaService, private titleService: Title)\r\n {\r\n this.titleService.setTitle(\"About Us - LawShelf Educational Media\");\r\n this.canonicalService.addMetaTags(null, \"Our mission is to provide high-quality videos and articles to help people learn about the law. LawShelf is a project of National Paralegal College.\", null, \"About Us - Lawshelf Educational Media\",null);\r\n }\r\n}","
    \r\n
    \r\n
    \r\n
    \r\n

    Your legal education starts here.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Whether you’re a student or professional whose job requires knowledge\r\n of the law, LawShelf’s comprehensive courses and easy-to-use research tools can help give you the edge\r\n you need to succeed. Produced by attorneys and law professors under the auspices of National Paralegal\r\n College, we’re here to help you learn about the law.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \"Scales\r\n \r\n

    \r\n   A project of National Paralegal College  

    \r\n
    \r\n \"Scales\r\n
    \r\n
    \r\n
    \r\n
    \r\n National Paralegal College has been a leader in online paralegal\r\n education since 2003, educating thousands of students in their pursuit\r\n of career enhancement and professional development. While not all\r\n LawShelf writers are also NPC faculty members, all LawShelf content\r\n goes through a comprehensive multi-tiered review process supervised\r\n by NPC faculty and administration.\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n

    Our video-courses are the heart of LawShelf.

    \r\n
    \r\n
    \r\n Courses typically come with 4-6 animated video modules, each complete with practice multiple-choice\r\n questions to let you self-assess. When you finish a course, you can take a multiple-choice exam and earn a\r\n digital badge as a testament to your achievement.\r\n
    \r\n
    \r\n

    Our hundreds of short videos are 5-to-10 minute animated presentations.

    \r\n
    \r\n
    \r\n These videos are focused on the basics of legal concepts, such as Chapter 7 bankruptcy, real estate sales\r\n contracts and personal income tax filings.\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n

    Our foundations of law section contains hundreds of plain-English articles.

    \r\n
    \r\n
    \r\n These articles come loaded with hypothetical examples and cite cases and statutes for further research.\r\n
    \r\n
    \r\n

    LawShelf has also created a comprehensive research index.

    \r\n
    \r\n
    \r\n It references over 5,000 legal concepts and terms. Just find the term using our search box and we’ll show\r\n you precisely where on our site it’s covered. Use this feature when you’re in a hurry to learn about a\r\n particular concept. You can always take in the full lessons when you have a bit more time.\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \"Scales\r\n \r\n

      Best of\r\n all, it’s completely free! 

    \r\n
    \r\n \"Scales\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Be sure to let us know if you’d like to partner with us to provide legal education or research solutions for\r\n your school, organization or user base. And please reach out with any questions or feedback on where we can do\r\n better.\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Our writing\r\n staff...

    \r\n ...are attorneys and professors who have experience in teaching and practicing law. They are chosen\r\n based on their writing and teaching skills and for expertise in their given subjects. LawShelf has employed a wide\r\n variety of expert contributors and the people referenced below represent our most prolific contributors. If you\r\n would like to write for LawShelf and you are an experienced attorney, writer and/or law professor, please send us\r\n your resume and a writing sample.\r\n
    \r\n
    \r\n
    \r\n Susan Calistri Boesger has over 25 years of experience in wills, trusts, estates and tax law. She\r\n has also been a legal writer for ten years with LexisNexis/Matthew Bender, writing professional manuals and consumer\r\n articles. She taught as an adjunct professor for many years at St. Petersburg College (Florida) where she developed\r\n and taught various courses. Susan holds a J.D. and LLM in Estate Planning from the University of Miami School of\r\n Law.\r\n
    \r\n
    \r\n Jessica Borden is a long-time professor of law at National Paralegal College, earned her J.D. from\r\n the University of Pennsylvania Law School, where she was an associate editor of the Constitutional Law Journal. She\r\n is admitted to the bar in New York, Connecticut and Florida. Jessica practiced litigation at Willkie Farr and\r\n Gallagher LLP, real estate law at Schiff Hardin LLP and in-house product liability law at a large Connecticut-based\r\n pharmaceutical company.\r\n
    \r\n
    \r\n Donald F. Ferland is a law professor at Massachusetts Bay Community College and has taught at other\r\n colleges and universities. He also worked as an Attorney-Advisor/Curriculum Developer in the U.S. Department of\r\n Defense/Defense Institute of International Legal Studies and was awarded the DSCA World of Excellence Award by the\r\n Pentagon. In addition to his JD from University of Connecticut School of Law and LLM from Boston University School\r\n of Law, he holds master’s degrees in American History from Providence College and instructional design from\r\n University of Massachusetts. He also has extensive experience in creation and design of educational tools.\r\n
    \r\n
    \r\n Anthony Fata has extensive law practice experience in the areas of securities, commodities,\r\n derivatives and corporate law. As a law professor at Seton Hall University College of Law, he taught courses in\r\n Securities Regulation, Corporate Finance, Corporate Governance and Corporate Formation. Anthony has also presented\r\n at multiple seminars on the subject of Internal Investigations. As a partner at the Chicago law firm, Cafferty\r\n Clobes Meriwether & Sprengel LLP, Anthony helps investors, traders, brokers and advisors solve difficult regulatory\r\n and litigation problems.\r\n
    \r\n
    \r\n Samantha Joule Fow’s professional writing career is a natural extension of her passion for\r\n teaching, learning from and connecting with others. After completing her undergraduate studies in economics,\r\n Samantha earned her J.D., a Master’s in Energy Regulation and Law and LL.M in Environmental Law from Vermont Law\r\n School. Samantha founded technical and content writing company Axiom Communications in 2017. In additional to\r\n generating high-quality technical writing for enterprise and education, Samantha regularly publishes blogs and\r\n editorials focused how law and society co-evolve in our quickly changing world. Her publications include her\r\n official blog, other articles and a law review article published in the Vermont Journal of Environmental Law.\r\n
    \r\n
    \r\n Robert L. Greenberg received his law degree from the University of Michigan, his Master of Science\r\n in Electrical and Computer Engineering from Rutgers University and his Bachelor of Arts Magna Cum Laude with High\r\n Honors in Economics from Brandeis University. He runs his own law firm in New York. In addition to his firm, he\r\n serves as a Major/Judge Advocate in the New York Guard where he provides free legal services for soldiers, sailors,\r\n airmen, marines, coast guardsmen and their families. He is admitted to practice law in New York, New Jersey, and\r\n Texas, and is also a registered patent attorney.\r\n
    \r\n
    \r\n Stephen Haas is Director of Education for National Paralegal College. He has served in that\r\n capacity since 2003, having led the development of the school’s curriculum throughout its history. Stephen has also\r\n practiced law in the areas of estate planning, real estate and taxation. He graduated in the top 3% of his class\r\n from Pace University School of Law. He is the co-author of Basic Trust Drafting. Stephen is a regular presenter\r\n education conferences, having presented at conferences held by the Distance Education Accrediting Commission, United\r\n States Distance Learning Association and the University of Wisconsin Extension Distance Teaching and Learning\r\n conference.\r\n
    \r\n
    \r\n Alexander Lake has an undergraduate degree in journalism and a J.D. from University of Oregon. He\r\n has over 30 years of experience as an attorney and professional writer. As a contract administrator for Oregon\r\n Ballistic Laboratories, Alexander negotiates, drafts and oversees contracts with governmental and private partners.\r\n His other writing projects have included creating training materials for Fred Meyer Stores in Portland, OR. His law\r\n practice experience includes representation of businesses in domestic and international contracts and business\r\n matters.\r\n
    \r\n
    \r\n Jeremy Rovinsky serves as Dean at National Paralegal College. He graduated with honors from the\r\n George Washington University Law School in Washington, DC. Before attending law school, Mr. Rovinsky was awarded a\r\n Dean's scholarship to study at American University in Washington, DC, graduated magna cum laude with joint degrees\r\n in Philosophy and Political Science and was made a member of the Phi Beta Kappa honor society. Jeremy has worked in\r\n the New York State Assembly, the US Congress, the US Senate and the Department of Justice, and in private law\r\n offices in New York, Washington and overseas. He worked directly under the General Counsel at the DC Office of Human\r\n Rights. Jeremy is been admitted to practice law in a number of jurisdictions and has been published in multiple law\r\n reviews and legal journals, such as the Brigham Young University Education and Law Journal and the Rutgers Conflict\r\n Resolution Law Journal. He has also taught upper-level legal courses at an ABA-accredited law school, helped update\r\n the Rules of Professional Conduct for an American Indian Community Court and served as a Judge Pro Tem at the\r\n Maricopa County Justice Courts.\r\n
    \r\n
    \r\n Elliot Stern earned his JD from the Georgetown University Law Center, and has extensive experience\r\n in legal writing and research in a variety of contexts, including serving as a legal editor for the NY State\r\n Department of Health, a law clerk for the Federal employment agency, the US Merit Systems Protection Board as well\r\n as a speechwriter for a UN ambassador. As a researcher and writer, Elliot has a unique ability to synthesize diffuse\r\n and complex material into clear and accessible prose and produce courses that reflect the reasoned judgment of\r\n multiple contributors. Elliot has also created and updated law courses for Marino Legal Academy.\r\n
    \r\n
    \r\n Richard Weiner is a prolific writer who is a staff writer for the Akron Legal News. He has also\r\n writtern extensively for Chicago Lawyer Magazine the Cleveland Plain Dealer M&A Journal (in Yonkers, NY), Crain’s\r\n and many others. He taught law and English courses at Kent State University and has more than a decade of law\r\n practice experience in areas of personal injury, family law, criminal law and bankruptcy. He holds a J.D. from Ohio\r\n Northern University.\r\n
    \r\n
    \r\n Erika Winston is an attorney and professional writer and copy editor. She has published articles\r\n for the websites of the DC Bar, Urban Views Weekly and various newspapers and law firm websites. In addition to her\r\n J.D., she holds a master’s degree in public policy from New England College. Before becoming a professional writer,\r\n she practiced law as a sole practitioner, handling matters of criminal law, domestic relations and housing. She is\r\n also a professor of political science in the Virginia Community College system.\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Your privacy is important to us. While we automatically collect certain non-personally identifiable\r\n information when you visit our website, including, but not limited to, the type of browser you are using, the type\r\n of operating system you are using, and the domain name of your Internet service provider, the only personal\r\n information that we ever ask for is your name and email address, which we ask for during the registration process.\r\n You need to register only if you would like to earn digital badges or receive communications from us. You do not\r\n need to register to use the site.\r\n
    \r\n
    ","export enum ExamStatus\r\n{\r\n NotStarted,\r\n HasUnansweredQuestions,\r\n AllQuestionsAnswered,\r\n Passed,\r\n Failed,\r\n Cancelled,\r\n}","
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {{digitalBadgeCourseData.Information.Title}}

    \r\n
    \r\n \r\n
    \r\n

    Exam Summary

    \r\n Total Questions: {{digitalBadgeCourseData.TotalFinalExamQuestions}}
    \r\n Time Limit: {{digitalBadgeCourseData.FinalExamTimeLimitMinutes}} minutes
    \r\n
    \r\n Exam timer starts immediately after this screen\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n

    You've already answered all questions

    \r\n
    \r\n
    \r\n \r\n

    You've already passed this Exam

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{examQuestion.Question.Text}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Time Remaining: {{timeRemaining}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Success

    \r\n

    Congratulations! You have completed the exam successfully and earned your digital badge in {{examQuestion.topic}}. Once you accept this badge, you can easily add it to your LinkedIn profile or share your achievement on social media.

    \r\n
    \r\n Accept your digital badge now!\r\n
    \r\n
    \r\n
    \r\n

    Failure

    \r\n

    You have failed this exam. Do not worry - you can take the exam as many times as you like. Better luck next time

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { DigitalBadgeCourseData } from 'src/model/VideoCourses/DigitalBadgeCourseData';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { Breadcrumb } from 'src/model/Breadcrumb';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ExamQuestion } from 'src/model/ExamQuestion';\r\nimport { ExamStatus } from 'src/model/ExamStatus';\r\nimport { globals } from '../shared/globals';\r\nimport { AlertService } from '../_alert';\r\nimport { Error } from 'src/model/Error';\r\nimport { timer } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-exam',\r\n templateUrl: './exam.component.html',\r\n styleUrls: ['./exam.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ExamComponent implements OnInit {\r\n\r\n digitalBadgeCourseData: DigitalBadgeCourseData;\r\n ID: string;\r\n breadcrumbs: Breadcrumb[] = [];\r\n examQuestion: ExamQuestion = null;\r\n answer: string = null;\r\n examId: string = null;\r\n startTime = null;\r\n timeRemaining = null;\r\n\r\n constructor(private route: ActivatedRoute, private coursewareService: CoursewareService, private alertService: AlertService) { }\r\n\r\n ngOnInit() {\r\n this.ID = this.route.snapshot.paramMap.get('id');\r\n this.breadcrumbs = JSON.parse(this.route.snapshot.paramMap.get('breadcrumbs'));\r\n //this.breadcrumbs = (Breadcrumb[])this.route.snapshot.paramMap.get('breadcrumbs');\r\n\r\n this.coursewareService.getExam(this.ID, globals.token).subscribe(data => {\r\n this.digitalBadgeCourseData = data;\r\n if (!this.digitalBadgeCourseData.ID) {\r\n this.digitalBadgeCourseData = null;\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n }\r\n });\r\n }\r\n\r\n canStartExam() {\r\n if (!this.digitalBadgeCourseData)\r\n return false;\r\n // if (this.digitalBadgeCourseData.examStatus == ExamStatus.NotStarted || this.digitalBadgeCourseData.examStatus == ExamStatus.Failed)\r\n return true;\r\n return false;\r\n }\r\n\r\n hasPassed() {\r\n if (!this.digitalBadgeCourseData)\r\n return false;\r\n if (this.digitalBadgeCourseData.examStatus == ExamStatus.Passed)\r\n return true;\r\n return false;\r\n }\r\n\r\n hasAnsweredAllQuestions() {\r\n if (!this.digitalBadgeCourseData)\r\n return false;\r\n if (this.digitalBadgeCourseData.examStatus == ExamStatus.AllQuestionsAnswered)\r\n return true;\r\n return false;\r\n }\r\n\r\n\r\n clickRadio(event) {\r\n var target = event.target || event.srcElement || event.currentTarget;\r\n var idAttr = target.attributes.id;\r\n var value = idAttr.nodeValue;\r\n this.answer = value;\r\n // console.log(\"clickRadio=\" + value);\r\n }\r\n\r\n displayExam() {\r\n if (!this.examQuestion) {\r\n return false;\r\n }\r\n if (this.examQuestion.examStatus == null) {\r\n return false;\r\n }\r\n if (this.examQuestion.examStatus == ExamStatus.HasUnansweredQuestions) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n displayExamOver() {\r\n if (this.examQuestion && this.examQuestion.examStatus && (this.examQuestion.examStatus == ExamStatus.AllQuestionsAnswered || this.examQuestion.examStatus == ExamStatus.Failed || this.examQuestion.examStatus == ExamStatus.Cancelled || this.examQuestion.examStatus == ExamStatus.Passed)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n startExam() {\r\n this.coursewareService.startExam(this.digitalBadgeCourseData.ID, globals.token).subscribe(data => {\r\n let holdExamQuestion = this.examQuestion;\r\n this.examQuestion = data;\r\n if (!this.examQuestion.DigitalBadgeExamID) {\r\n this.examQuestion = holdExamQuestion;\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n }\r\n this.startTime = new Date().getTime() + 3600 * 1000;\r\n const source = timer(1000, 1000);\r\n //output: 0,1,2,3,4,5......\r\n const subscribe = source.subscribe(val => this.calcTimeRemaining());\r\n this.examId = this.examQuestion.DigitalBadgeExamID;\r\n });\r\n }\r\n\r\n SkipQuestion() {\r\n // console.log(\"SkipQuestion\");\r\n this.coursewareService.skipQuestion(this.examId, this.examQuestion.Question.ID, globals.token).subscribe(data => {\r\n let holdExamQuestion = this.examQuestion;\r\n this.examQuestion = data;\r\n // console.log(\"SkipQuestion received data\");\r\n if (!this.examQuestion.examStatus) {\r\n // console.log(\"SkipQuestion got an error\");\r\n this.examQuestion = holdExamQuestion;\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n }\r\n });\r\n }\r\n\r\n calcTimeRemaining() {\r\n let timeDiff = this.startTime - new Date().getTime();\r\n timeDiff = timeDiff / 1000;\r\n if (timeDiff <= 0) {\r\n this.timeRemaining = \"no time remaining\";\r\n return;\r\n }\r\n var seconds = Math.round(timeDiff % 60);\r\n timeDiff = Math.floor(timeDiff / 60);\r\n var minutes = Math.round(timeDiff % 60);\r\n if (seconds < 10)\r\n this.timeRemaining = minutes + \":0\" + seconds;\r\n else if (seconds == 60)\r\n this.timeRemaining = (minutes + 1) + \":00\";\r\n else\r\n this.timeRemaining = minutes + \":\" + seconds;\r\n }\r\n\r\n SubmitQuestion() {\r\n // console.log(\"SubmitQuestion\");\r\n this.coursewareService.submitQuestion(this.examId, this.examQuestion.Question.ID, this.answer, globals.token).subscribe(data => {\r\n let holdExamQuestion = this.examQuestion;\r\n this.examQuestion = data;\r\n this.answer = null;\r\n // console.log(\"SubmitQuestion received data \");\r\n if (!this.examQuestion.examStatus) {\r\n // console.log(\"SubmitQuestion response invalid\");\r\n this.examQuestion = holdExamQuestion;\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n }\r\n });\r\n }\r\n\r\n}","
    \r\n
    \r\n
    \r\n
    \r\n

    Account Settings

    \r\n
    \r\n
    \r\n
    \r\n First Name:\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Last Name:\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Email:\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Change Password

    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n

    Close Account

    \r\n \r\n
    \r\n \r\n \r\n
    \r\n Sorry to hear you want to close your account.
    \r\n Please note that you will you will lose the ability to earn digital badges
    \r\n

    \r\n Are you really sure you want to continue?\r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, OnInit } from '@angular/core';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { MemberUserData } from 'src/model/User/MemberUserData';\r\nimport { Error } from 'src/model/Error';\r\nimport { AlertService } from '../_alert';\r\nimport { NgForm } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { globals } from '../shared/globals';\r\nimport { EditMemberViewModel } from 'src/model/EditMemberViewModel';\r\n\r\n\r\n@Component({\r\n selector: 'app-account',\r\n templateUrl: './account.component.html',\r\n styleUrls: ['./account.component.css']\r\n})\r\nexport class AccountComponent implements OnInit {\r\n public accountSettings: EditMemberViewModel = null;\r\n public isLoaded: boolean = false;\r\n\r\n constructor(private _router: Router, private coursewareService: CoursewareService, private alertService: AlertService) { }\r\n\r\n ngOnInit() {\r\n this.alertService.clear();\r\n this.coursewareService.getSettings(globals.token).subscribe(data => {\r\n this.accountSettings = data as EditMemberViewModel; \r\n this.isLoaded = true;\r\n if (!this.accountSettings.EmailAddress){\r\n let error = data as Error\r\n this.alertService.error(error.Message);\r\n if (error.Message.indexOf(\"Invalid User\") >= 0)\r\n {\r\n globals.token = null;\r\n globals.userName = null;\r\n if (typeof window !== 'undefined') {\r\n localStorage.removeItem('token');\r\n localStorage.removeItem('username');\r\n } \r\n }\r\n }\r\n }, \r\n error => this.alertService.error(\"Got unexpected error when getting account settings from server \" + error.error));\r\n\r\n }\r\n\r\n public doSaveAccountSettings(form: NgForm)\r\n {\r\n this.alertService.clear();\r\n let theFirstName: string = form.value.firstName;\r\n let theLastName: string = form.value.lastName;\r\n let theEmail: string = form.value.email;\r\n if (theFirstName == null || theFirstName.length < 1)\r\n theFirstName = this.accountSettings.FirstName;\r\n if (theLastName == null || theLastName.length < 1)\r\n theLastName = this.accountSettings.LastName;\r\n if (theEmail == null || theEmail.length < 1)\r\n theEmail = this.accountSettings.EmailAddress;\r\n this.coursewareService.updateMemberUser(globals.token, theFirstName, theLastName, theEmail).subscribe(data => {\r\n if (data != \"SUCCESS\")\r\n {\r\n let error = data as Error\r\n this.alertService.error(error.Message);\r\n }\r\n }, \r\n error => this.alertService.error(\"Got unexpected error when saving account settings to server \" + error.error));\r\n }\r\n\r\n public changePassword(form: NgForm)\r\n {\r\n this.alertService.clear();\r\n if (form.value.password == null || form.value.password.length < 1 || form.value.password != form.value.changePassword)\r\n {\r\n this.alertService.error(\"Cannot change password - passwords not be empty and must be identical\");\r\n return\r\n }\r\n this.coursewareService.updatePassword(globals.token, form.value.password).subscribe(data => {\r\n if (data != \"SUCCESS\")\r\n {\r\n let error = data as Error\r\n this.alertService.error(error.Message);\r\n }\r\n }, \r\n error => this.alertService.error(\"Got unexpected error when updating password on the server \" + error.error));\r\n }\r\n\r\n public cancelAccount()\r\n {\r\n this.alertService.clear();\r\n this.coursewareService.closeAccount(globals.token).subscribe(data => {\r\n if (data != \"SUCCESS\")\r\n {\r\n let error = data as Error\r\n this.alertService.error(error.Message);\r\n } else{\r\n globals.token = null;\r\n globals.userName = null;\r\n if (typeof window !== 'undefined') {\r\n localStorage.removeItem('token');\r\n localStorage.removeItem('username');\r\n }\r\n this.alertService.info(\"Your account has been closed.\")\r\n this._router.navigate([\"/homeview\"]);\r\n }\r\n }, \r\n error => this.alertService.error(\"Got unexpected error when updating password on the server \" + error.error));\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n

      Email Sent

      \r\n
    • \r\n
    • \r\n If the e-mail address you entered is associated with an account in our records, you will receive an e-mail from us with instructions\r\n for resetting your password.\r\n
    • \r\n
    • \r\n Back to log in \r\n
    • \r\n
    \r\n
      \r\n
    • \r\n
      \r\n

      Forgot Password

      \r\n
      \r\n Please fill in your information.\r\n
      \r\n
      \r\n \r\n \r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, OnInit } from '@angular/core';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { MemberUserData } from 'src/model/User/MemberUserData';\r\nimport { Error } from 'src/model/Error';\r\nimport { AlertService } from '../_alert';\r\nimport { NgForm } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { globals } from '../shared/globals';\r\n\r\n\r\n@Component({\r\n selector: 'app-forgot-password',\r\n templateUrl: './forgot-password.component.html',\r\n styleUrls: ['./forgot-password.component.css']\r\n})\r\nexport class ForgotPasswordComponent implements OnInit {\r\n public hasSentPassword: boolean = false;\r\n\r\n constructor(private _router: Router, private coursewareService: CoursewareService, private alertService: AlertService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public forgotPassword(form: NgForm) {\r\n this.alertService.clear();\r\n this.coursewareService.ForgotPassword(form.value.email).subscribe(data => {\r\n if (data != null && data == \"SUCCESS\") {\r\n this.hasSentPassword = true;\r\n } else {\r\n let error = data as Error\r\n this.alertService.error(error.Message);\r\n }\r\n },\r\n error => this.alertService.error(\"Caught unexpected error when logging in \" + error.Message));\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Reset Password

    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Cannot reset password from this email. Please go to Log in screen and try to reset your password again

    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, OnInit } from '@angular/core';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { MemberUserData } from 'src/model/User/MemberUserData';\r\nimport { Error } from 'src/model/Error';\r\nimport { AlertService } from '../_alert';\r\nimport { NgForm } from '@angular/forms';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { globals } from '../shared/globals';\r\n\r\n\r\n@Component({\r\n selector: 'app-reset-password',\r\n templateUrl: './reset-password.component.html',\r\n styleUrls: ['./reset-password.component.css']\r\n})\r\nexport class ResetPasswordComponent implements OnInit {\r\n public canResetPassword: boolean = false;\r\n public hasSentResetPasswordRequest: boolean = false;\r\n public badToken: boolean = false;\r\n tokenID: string = null;\r\n\r\n constructor(private _router: Router, private route: ActivatedRoute, private coursewareService: CoursewareService, private alertService: AlertService) { }\r\n\r\n ngOnInit() {\r\n this.tokenID = this.route.snapshot.paramMap.get('tokenID');\r\n if (!this.tokenID) {\r\n this.tokenID = this.route.snapshot.queryParams.tokenID;\r\n }\r\n console.log(\"tokenid \" + this.tokenID);\r\n\r\n\r\n this.alertService.clear();\r\n this.hasSentResetPasswordRequest = true;\r\n this.coursewareService.ResetPassword(this.tokenID).subscribe(data => {\r\n if (data != null && data == \"SUCCESS\") {\r\n this.canResetPassword = true;\r\n } else {\r\n this.badToken = true;\r\n let error = data as Error\r\n this.alertService.error(error.Message);\r\n }\r\n },\r\n error => this.alertService.error(\"Caught unexpected error when logging in \" + error.Message));\r\n }\r\n\r\n public resetPassword(form: NgForm) {\r\n this.alertService.clear();\r\n if (form.value.password == null || form.value.password.length < 1 || form.value.password != form.value.confirmPassword) {\r\n this.alertService.error(\"Cannot change password - The passwords must not be empty and must match each other.\")\r\n return;\r\n }\r\n this.coursewareService.ResetAndChangePassword(this.tokenID, form.value.password).subscribe(data => {\r\n if (data != null && data == \"SUCCESS\") {\r\n this.alertService.info(\"Your password has successfully been changed. Please log in.\");\r\n this._router.navigate([\"/loginview\"]);\r\n } else {\r\n let error = data as Error\r\n this.alertService.error(error.Message);\r\n }\r\n },\r\n error => this.alertService.error(\"Caught unexpected error when logging in \" + error.Message));\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-explainer',\r\n templateUrl: './explainer.component.html',\r\n styleUrls: ['./explainer.component.css']\r\n })\r\n\r\nexport class ExplainerComponent\r\n{\r\n\r\n}","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-backoffice',\r\n templateUrl: './backoffice.component.html'\r\n})\r\n\r\nexport class BackOfficeComponent implements OnInit {\r\n\r\n constructor(@Inject(DOCUMENT) private document: Document) { \r\n }\r\n\r\n ngOnInit() {\r\n this.document.location.href =\"https://www.lawshelf.com:8443/backoffice\";\r\n }\r\n}\r\n","
    \r\n

    Forwarding to back office shortly...

    \r\n
    ","
    \r\n
    \r\n \r\n
    \r\n
    \r\n Correct {{answer.AnswerExplanation}}\r\n
    \r\n
    \r\n Incorrect! {{answer.AnswerExplanation}}\r\n
    \r\n
    \r\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef, ViewChildren, ViewEncapsulation } from '@angular/core';\r\nimport { CoursewareQuizAnswerEditModel } from 'src/model/Test/CoursewareQuizAnswerEditModel';\r\n\r\n@Component({\r\n selector: 'app-quiz-answer',\r\n templateUrl: './quiz-answer.component.html',\r\n styleUrls: ['./quiz-answer.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class QuizAnswer implements OnInit {\r\n @Input() answer: CoursewareQuizAnswerEditModel;\r\n isCorrect: boolean = false;\r\n isIncorrect: boolean = false;\r\n @Output() myEvent = new EventEmitter();\r\n @ViewChildren('myradio') radioBtns: ElementRef[];\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n getCorrectStyle() {\r\n if (this.isCorrect)\r\n return \"block\";\r\n return \"none\"\r\n }\r\n\r\n callParent() {\r\n this.myEvent.emit('eventDesc');\r\n }\r\n\r\n getIncorrectStyle() {\r\n if (this.isIncorrect)\r\n return \"block\";\r\n return \"none\"\r\n }\r\n\r\n showCorrectAnswer() {\r\n this.callParent();\r\n this.isCorrect = true;\r\n this.isIncorrect = false;\r\n this.radioBtns.forEach(element => {\r\n element.nativeElement.checked = true;\r\n });\r\n }\r\n\r\n showIncorrectAnswer() {\r\n this.callParent();\r\n this.isCorrect = false;\r\n this.isIncorrect = true;\r\n this.radioBtns.forEach(element => {\r\n element.nativeElement.checked = true;\r\n });\r\n }\r\n\r\n clearAnswer() {\r\n this.radioBtns.forEach(element => {\r\n element.nativeElement.checked = false;\r\n });\r\n this.isCorrect = this.isIncorrect = false;\r\n }\r\n\r\n}\r\n","
    \r\n
    \r\n
    \r\n

    \r\n Question {{itemNum + 1}}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{item.QuestionText}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    ","import { Component, OnInit, Input, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\r\nimport { CoursewareQuizQuestionEditModel } from 'src/model/Test/CoursewareQuizQuestionEditModel';\r\nimport { QuizAnswer } from './quiz-answer.component';\r\n\r\n@Component({\r\n selector: 'app-quiz-question',\r\n templateUrl: './quiz-question.component.html',\r\n styleUrls: ['./quiz-question.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class QuizQuestion implements OnInit {\r\n @Input() item: CoursewareQuizQuestionEditModel;\r\n @Input() itemNum: number;\r\n @ViewChildren(QuizAnswer) theAnswers: QueryList\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n clearAnswers() {\r\n this.theAnswers.forEach(answerInstance => answerInstance.clearAnswer());\r\n }\r\n\r\n}\r\n","
    \r\n
    \r\n \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    ","import { BrowserModule } from '@angular/platform-browser';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { NgModule, Injectable } from '@angular/core';\r\nimport { NavMenuComponent } from './navmenu/navmenu.component';\r\nimport { APP_BASE_HREF, CommonModule } from '@angular/common';\r\n\r\nimport { FormsModule } from '@angular/forms';\r\nimport { EmbedVideo } from 'ngx-embed-video';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { CarouselModule } from 'ngx-bootstrap/carousel';\r\nimport { AppComponent } from './app.component';\r\nimport { HomeComponent } from './home/home.component';\r\nimport { CoursewareComponent } from './courseware/courseware.component';\r\nimport { CoursewareService } from '../services/CoursewareService';\r\nimport { CoursewareTopicComponent } from './courseware/courseware-topic.component';\r\nimport { CoursewareTopicEntriesComponent } from './courseware/courseware-topic-entries.component';\r\nimport { ShortVideosComponent } from './short-videos/short-videos.component';\r\nimport { DisplayTopicComponent } from './display-topic/display-topic.component';\r\nimport { DisplayContentEntryComponent } from './display-topic/display-content-entry.component';\r\nimport { DisplayContentVideoComponent } from './display-topic/display-content-video.component';\r\nimport { BlogsComponent } from './blogs/blogs.component';\r\nimport { VideocoursesComponent } from './videocourses/videocourses.component';\r\nimport { VideocoursecontentComponent } from './videocourses/videocoursecontent.component';\r\nimport { VideocoursemoduleComponent } from './videocourses/videocoursemodule.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { BreadcrumbsComponent } from './shared/breadcrumbs.component';\r\nimport { ResearchIndexComponent } from './researchindex/research-index.component';\r\nimport { ResearchIndexEntryComponent } from './researchindex/research-index-entry.component';\r\nimport { LoginComponent } from './account/login.component';\r\nimport { RegisterComponent } from './account/register.component';\r\nimport { AlertModule } from './_alert';\r\nimport { TermsOfServiceComponent } from './home/terms-of-service.component';\r\nimport { CompleteRegistrationComponent } from './account/complete-registration.component';\r\nimport { DisplayShortVideosContentEntryComponent } from './short-videos/display-short-videos-content-entry.component';\r\nimport { DisplayBlogContentEntryComponent } from './blogs/display-blog-content-entry.component';\r\nimport { ContactUsComponent } from './home/contact-us.component';\r\nimport { SiteMapComponent } from './home/site-map.component';\r\nimport { TermsOfServicePageComponent } from './home/terms-of-service-page.component';\r\nimport { QuizQuestion } from './quiz/quiz-question.component';\r\nimport { QuizAnswer } from './quiz/quiz-answer.component';\r\nimport { AboutUsComponent } from './home/about-us.component';\r\nimport { ExamComponent } from './exam/exam.component';\r\nimport { HeaderAdComponent } from './shared/header-ad.component';\r\nimport { SiteMapEntryComponent } from './home/site-map-entry.component';\r\nimport { AccountComponent } from './account/account.component';\r\nimport { ForgotPasswordComponent } from './account/forgot-password.component';\r\nimport { ResetPasswordComponent } from './account/reset-password.component';\r\nimport { ExplainerComponent } from './videocourses/explainer.component';\r\nimport { SafeHtmlPipe } from './shared/safe-html-pipe.component';\r\nimport { SeeAlsoComponent } from './videocourses/see-also.component';\r\n//import { JwSocialButtonsModule } from 'jw-angular-social-buttons';\r\nimport { SocialMediaComponent } from './shared/social-media.component';\r\nimport { MetaService } from 'src/services/MetaService';\r\nimport { BackOfficeComponent } from './shared/backoffice.component';\r\n//import { ServiceWorkerModule } from '@angular/service-worker';\r\n//import { CacheLocalStorageModule, CacheModule, MemoryCacheModule } from '@dagonmetric/ng-cache';\r\n//import { Location } from '@angular/common';\r\n\r\nimport { BrowserTransferStateModule } from '@angular/platform-browser';\r\nimport { TransferHttpCacheModule } from '@nguniversal/common';\r\nimport { CoursewareQuizComponent } from './courseware/courseware-quiz.component';\r\nimport { VideocoursemoduleTestComponent } from './videocourses/videocoursemoduletest.component';\r\nimport { PreviousRouteService } from 'src/services/PreviousRouteService';\r\n\r\n\r\nconst routes: Routes = [\r\n { path: 'homeview', component: HomeComponent },\r\n { path: 'home/index', component: HomeComponent },\r\n { path: 'explainerview', component: ExplainerComponent },\r\n { path: 'forgotpasswordview', component: ForgotPasswordComponent },\r\n { path: 'resetpasswordview', component: ResetPasswordComponent },\r\n // { path: 'resetpasswordview/:tokenID', component: ResetPasswordComponent },\r\n { path: 'accountview', component: AccountComponent },\r\n { path: 'examview/:id/:breadcrumbs', component: ExamComponent },\r\n { path: 'courseware', component: CoursewareComponent },\r\n { path: 'courseware/topic/:levelonealias', component: CoursewareComponent },\r\n { path: 'coursewareview', component: CoursewareComponent },\r\n { path: 'coursewareview/:levelonealias', component: CoursewareComponent },\r\n { path: 'coursewareview/:levelonealias/:leveltwoalias', component: CoursewareComponent },\r\n { path: 'courseware/entry/:alias', component: CoursewareTopicEntriesComponent },\r\n { path: 'coursewarecontentview/:alias', component: CoursewareTopicEntriesComponent },\r\n { path: 'coursewarequizview/:alias', component: CoursewareQuizComponent },\r\n { path: 'videos', component: ShortVideosComponent },\r\n { path: 'shortvideosview', component: ShortVideosComponent },\r\n { path: 'videos/topic/:alias', component: ShortVideosComponent },\r\n { path: 'shortvideosview/:alias', component: ShortVideosComponent },\r\n { path: 'videos/entry/:alias', component: DisplayShortVideosContentEntryComponent },\r\n { path: 'shortvideoscontentview/:alias', component: DisplayShortVideosContentEntryComponent },\r\n { path: 'blog', component: BlogsComponent },\r\n { path: 'blogview', component: BlogsComponent },\r\n { path: 'blogentryview/:alias', component: DisplayBlogContentEntryComponent },\r\n { path: 'blog/post/:alias', component: DisplayBlogContentEntryComponent },\r\n { path: 'loginview', component: LoginComponent },\r\n { path: 'account/register', component: RegisterComponent },\r\n { path: 'registerview', component: RegisterComponent },\r\n { path: 'videocourses', component: VideocoursesComponent },\r\n { path: 'videocoursesview', component: VideocoursesComponent },\r\n { path: 'completeregistrationview', component: CompleteRegistrationComponent },\r\n { path: 'completeregistrationview/:memberID', component: CompleteRegistrationComponent },\r\n { path: 'videocourses/topic/:alias', component: VideocoursesComponent },\r\n { path: 'videocoursesview/:alias', component: VideocoursesComponent },\r\n { path: 'videocoursesbannerview/:frombanner', component: VideocoursesComponent },\r\n // { path: 'videocoursesmoduleexamview/:alias', component: VideocoursemoduleTestComponent },\r\n { path: 'videocoursescontentview/:alias', component: VideocoursecontentComponent },\r\n { path: 'videocourses/videocourse/:alias', component: VideocoursecontentComponent },\r\n { path: 'digitalbadges/digitalbadge/:alias', component: VideocoursecontentComponent },\r\n { path: 'videocoursesmoduleview/:alias', component: VideocoursemoduleComponent },\r\n { path: 'videocourses/entry/:alias', component: VideocoursemoduleComponent },\r\n { path: 'digitalbadges/entry/:alias', component: VideocoursemoduleComponent },\r\n\r\n { path: 'researchindexview/:indexentry', component: ResearchIndexComponent },\r\n { path: 'researchindexview', component: ResearchIndexComponent },\r\n { path: 'concept', component: ResearchIndexComponent },\r\n { path: 'concept?startingLetter=:startingLetter', component: ResearchIndexComponent },\r\n\r\n { path: 'contactusview', component: ContactUsComponent },\r\n { path: 'home/contact', component: ContactUsComponent },\r\n { path: 'termsofserviceview', component: TermsOfServicePageComponent },\r\n { path: 'home/termsofservice', component: TermsOfServicePageComponent },\r\n { path: 'sitemapview', component: SiteMapComponent },\r\n { path: 'home/toc', component: SiteMapComponent },\r\n { path: 'aboutusview', component: AboutUsComponent },\r\n { path: 'home/about', component: AboutUsComponent },\r\n { path: 'backoffice', component: BackOfficeComponent },\r\n { path: '**', redirectTo: 'homeview' }\r\n];\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n HomeComponent,\r\n NavMenuComponent,\r\n CoursewareComponent,\r\n CoursewareTopicComponent,\r\n CoursewareTopicEntriesComponent,\r\n CoursewareQuizComponent,\r\n ShortVideosComponent,\r\n DisplayTopicComponent,\r\n DisplayContentEntryComponent,\r\n DisplayContentVideoComponent,\r\n BlogsComponent,\r\n VideocoursesComponent,\r\n VideocoursecontentComponent,\r\n VideocoursemoduleComponent,\r\n VideocoursemoduleTestComponent,\r\n BreadcrumbsComponent,\r\n ResearchIndexComponent,\r\n ResearchIndexEntryComponent,\r\n LoginComponent,\r\n RegisterComponent,\r\n TermsOfServiceComponent,\r\n CompleteRegistrationComponent,\r\n DisplayShortVideosContentEntryComponent,\r\n DisplayBlogContentEntryComponent,\r\n ContactUsComponent,\r\n SiteMapComponent,\r\n TermsOfServicePageComponent,\r\n QuizQuestion,\r\n QuizAnswer,\r\n AboutUsComponent,\r\n ExamComponent,\r\n HeaderAdComponent,\r\n SiteMapEntryComponent,\r\n AccountComponent,\r\n ForgotPasswordComponent,\r\n ResetPasswordComponent,\r\n ExplainerComponent,\r\n SafeHtmlPipe,\r\n SeeAlsoComponent,\r\n SocialMediaComponent,\r\n BackOfficeComponent\r\n ],\r\n imports: [\r\n BrowserModule.withServerTransition({ appId: 'serverApp' }),\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule,\r\n AlertModule,\r\n NgbModule,\r\n BrowserTransferStateModule,\r\n TransferHttpCacheModule,\r\n CarouselModule.forRoot(),\r\n EmbedVideo.forRoot(),\r\n // JwSocialButtonsModule,\r\n // ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }),\r\n // ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }),\r\n RouterModule.forRoot(routes, { onSameUrlNavigation: 'reload', scrollPositionRestoration: \"enabled\", initialNavigation: 'enabled' })\r\n // RouterModule.forRoot(routes, { enableTracing: true, onSameUrlNavigation: 'reload', scrollPositionRestoration: \"enabled\", initialNavigation: 'enabled' })\r\n ],\r\n exports: [RouterModule],\r\n // providers: [ { provide: APP_BASE_HREF, useValue: '/' }, CoursewareService, MetaService, { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, multi: true}]\r\n providers: [{ provide: APP_BASE_HREF, useValue: '/' }, CoursewareService, MetaService, PreviousRouteService],\r\n //providers: [ { provide: 'googleTagManagerId', useValue: 'UA-103104789-1' }, { provide: APP_BASE_HREF, useValue: '/' }, CoursewareService, MetaService],\r\n bootstrap: [AppComponent]\r\n})\r\n\r\nexport class AppModule { }\r\n\r\n","import { Component, OnInit, OnDestroy, PLATFORM_ID, Inject, ViewEncapsulation } from '@angular/core';\r\nimport { ContentEntryDisplayData } from '../../model/ContentEntry/ContentEntryDisplayData';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { CoursewareService } from 'src/services/CoursewareService';\r\nimport { Breadcrumb } from 'src/model/Breadcrumb';\r\nimport { ArticleEntryDisplayModel } from 'src/model/ContentEntry/ArticleEntryDisplayModel';\r\nimport { CoursewareQuizQuestionEditModel } from 'src/model/Test/CoursewareQuizQuestionEditModel';\r\nimport { Error } from 'src/model/Error';\r\nimport { AlertService } from 'src/app/_alert';\r\nimport { MetaService } from 'src/services/MetaService';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'app-courseware-quiz',\r\n templateUrl: './courseware-quiz.component.html',\r\n styleUrls: ['./courseware-quiz.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class CoursewareQuizComponent implements OnInit, OnDestroy {\r\n public contentEntry: ArticleEntryDisplayModel;\r\n public breadcrumbs: Breadcrumb[] = [];\r\n public questions: CoursewareQuizQuestionEditModel[] = [];\r\n public alias = null;\r\n\r\n constructor(@Inject(PLATFORM_ID) private platformId, private _router: Router, private titleService: Title, private canonicalService: MetaService, private route: ActivatedRoute, private coursewareService: CoursewareService, private alertService: AlertService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.alias = this.route.snapshot.paramMap.get('alias');\r\n // TODO - IMPLEMENT CACHING AND/OR ONLY GET NECCESSSARY INFORMATION. WE SHOULD NOT RETREIVE DATA FROM getCourseEntries BOTH HER AND IN CONTENT VIEW\r\n this.coursewareService.getCourseEntries(this.alias).subscribe(data => {\r\n this.contentEntry = data;\r\n if (this.contentEntry.ID) {\r\n this.breadcrumbs = [{ Title: \"Foundations of Law\", URL: \"/coursewareview\" }, { Title: this.contentEntry.Lineage[0].TopicInformation.Title, URL: \"/coursewareview/\" + this.contentEntry.Lineage[0].TopicInformation.Alias }, { Title: this.contentEntry.Lineage[1].TopicInformation.Title, URL: \"/coursewareview/\" + this.contentEntry.Lineage[0].TopicInformation.Alias + \"/\" + this.contentEntry.Lineage[1].TopicInformation.Alias }, { Title: this.contentEntry.RenderData.ContentEntryDescriptor.Information.Title, URL: \"/coursewarecontentview/\" + this.contentEntry.RenderData.ContentEntryDescriptor.Information.Alias }];\r\n this.canonicalService.createCanonicalURL(this._router.url, \"/coursewarecontentview/\" + this.contentEntry.RenderData.ContentEntryDescriptor.Information.Alias);\r\n this.titleService.setTitle(\"Foundations of Law Self Quiz - \" + this.contentEntry.RenderData.ContentEntryDescriptor.Information.Title);\r\n this.canonicalService.addMetaTags(null, this.contentEntry.RenderData.ContentEntryDescriptor.Information.Description, null, this.contentEntry.RenderData.ContentEntryDescriptor.Information.Title, null);\r\n\r\n this.coursewareService.getCourseQuiz(this.contentEntry.ID).subscribe(quizData => {\r\n this.questions = quizData;\r\n if (!this.questions.length) {\r\n this.questions = null;\r\n let error: Error = quizData;\r\n this.alertService.error(error.Message);\r\n }\r\n });\r\n } else {\r\n this.contentEntry = null;\r\n let error: Error = data;\r\n this.alertService.error(error.Message);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.canonicalService.removeCanonicalURL();\r\n }\r\n\r\n endTest() {\r\n this._router.navigate([\"/coursewarecontentview\", this.alias]);\r\n }\r\n\r\n public containsData() {\r\n if (!this.contentEntry)\r\n return false;\r\n return true;\r\n }\r\n}\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n platformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n });\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"zn8P\";"]}