From f771c498464c6caaf25fec41f6a5c2c08bd343d6 Mon Sep 17 00:00:00 2001 From: Birendra Date: Fri, 23 Apr 2021 21:14:06 +0530 Subject: [PATCH] creating AOD list --- 400-SOURCECODE/AIAHTML5.API/Controllers/ConfigurationController.cs | 180 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 400-SOURCECODE/AIAHTML5.API/Web.config | 10 ++++++++++ 400-SOURCECODE/AIAHTML5.Web/app/controllers/AODController.js | 466 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------- 400-SOURCECODE/AIAHTML5.Web/app/controllers/HomeController.js | 48 +++++++++++++++++++++++++++++++++++++++++++++--- 400-SOURCECODE/AIAHTML5.Web/app/main/AIA.js | 10 +++++----- 400-SOURCECODE/AIAHTML5.Web/app/views/AOD/AOD-view-detail.html | 11 +++++++++++ 400-SOURCECODE/AIAHTML5.Web/app/views/AOD/AOD-view.html | 326 ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 400-SOURCECODE/AIAHTML5.Web/content/data/json/aod/aod_courselist.json | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 400-SOURCECODE/AIAHTML5.Web/content/data/json/aod/aod_courselist_video.json | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/00016009.jpg | Bin 0 -> 17076 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/01011009.jpg | Bin 0 -> 37416 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/01011109.jpg | Bin 0 -> 43562 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/01011209.jpg | Bin 0 -> 46096 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/02011109.jpg | Bin 0 -> 39796 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/02011209.jpg | Bin 0 -> 46502 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/03011109.jpg | Bin 0 -> 32234 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/03011209.jpg | Bin 0 -> 36349 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/04011109.jpg | Bin 0 -> 38658 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/04011209.jpg | Bin 0 -> 35319 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/05011009.jpg | Bin 0 -> 29937 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/06011109.jpg | Bin 0 -> 41101 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/06011209.jpg | Bin 0 -> 19444 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/07011109.jpg | Bin 0 -> 35145 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/07011209.jpg | Bin 0 -> 40787 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/07029109.jpg | Bin 0 -> 30963 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/09011109.jpg | Bin 0 -> 31031 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/09011209.jpg | Bin 0 -> 39674 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/11014009.jpg | Bin 0 -> 35421 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/12011109.jpg | Bin 0 -> 38159 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/12011209.jpg | Bin 0 -> 17739 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/13011109.jpg | Bin 0 -> 16630 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/13011209.jpg | Bin 0 -> 16458 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/14011109.jpg | Bin 0 -> 34553 bytes 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/14011209.jpg | Bin 0 -> 19906 bytes 34 files changed, 991 insertions(+), 372 deletions(-) create mode 100644 400-SOURCECODE/AIAHTML5.Web/app/views/AOD/AOD-view-detail.html create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/data/json/aod/aod_courselist.json create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/data/json/aod/aod_courselist_video.json create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/00016009.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/01011009.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/01011109.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/01011209.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/02011109.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/02011209.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/03011109.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/03011209.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/04011109.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/04011209.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/05011009.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/06011109.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/06011209.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/07011109.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/07011209.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/07029109.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/09011109.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/09011209.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/11014009.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/12011109.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/12011209.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/13011109.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/13011209.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/14011109.jpg create mode 100644 400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/14011209.jpg diff --git a/400-SOURCECODE/AIAHTML5.API/Controllers/ConfigurationController.cs b/400-SOURCECODE/AIAHTML5.API/Controllers/ConfigurationController.cs index 3eac795..f352dd3 100644 --- a/400-SOURCECODE/AIAHTML5.API/Controllers/ConfigurationController.cs +++ b/400-SOURCECODE/AIAHTML5.API/Controllers/ConfigurationController.cs @@ -6,6 +6,9 @@ using System.Net.Http; using System.Web.Http; using System.Configuration; using Newtonsoft.Json; +using System.Text; +using System.Security.Cryptography; +using System.IO; namespace AIAHTML5.API.Controllers { @@ -23,6 +26,15 @@ namespace AIAHTML5.API.Controllers mconfig.pingInterval = Int32.Parse(ConfigurationManager.AppSettings["PING_INTERVAL"]); mconfig.serverPath = ConfigurationManager.AppSettings["ANIMATION_HOSTING_SERVER"]; mconfig.fileSize = Int32.Parse(ConfigurationManager.AppSettings["UploadMaxFileSize"]); + mconfig.aodSiteUrl = ConfigurationManager.AppSettings["Aod_site_Url"]; + + var plainkey = ConfigurationManager.AppSettings["aiapasskey"]; + + AdamOnDemand aod = new AdamOnDemand(); + + mconfig.aodkeypass = aod.Encrypt(plainkey); + + // var simplekey= aod.Decrypt(mconfig.aodkeypass); responseData = JsonConvert.SerializeObject(mconfig); @@ -38,4 +50,170 @@ public class MyConfig public int pingInterval { get; set; } public string serverPath { get; set; } public int fileSize { get; set; } -} \ No newline at end of file + + public string aodSiteUrl { get; set; } + public string aodkeypass { get; set; } +} + + +public class AdamOnDemand +{ + //Triple Des encription/decription + public string Encrypt(string plainText) + { + string passPhrase = ConfigurationManager.AppSettings["EncryptionKey"].ToString(); + string saltValue = ConfigurationManager.AppSettings["SaltValue"].ToString(); + string hashAlgorithm = ConfigurationManager.AppSettings["HashAlgorithm"].ToString(); + int passwordIterations = Convert.ToInt32(ConfigurationManager.AppSettings["IterationCount"]); + string initVector = ConfigurationManager.AppSettings["InitVector"].ToString(); + int keySize = Convert.ToInt32(ConfigurationManager.AppSettings["KeySize"]); ; + + + return EncryptData(plainText, passPhrase, saltValue, hashAlgorithm,passwordIterations, initVector, keySize); + } + + //Triple Des encription/decription + public string Decrypt(string encryptedText) + { + string passPhrase = ConfigurationManager.AppSettings["EncryptionKey"].ToString(); + string saltValue = ConfigurationManager.AppSettings["SaltValue"].ToString(); + string hashAlgorithm = ConfigurationManager.AppSettings["HashAlgorithm"].ToString(); + int passwordIterations = Convert.ToInt32(ConfigurationManager.AppSettings["IterationCount"]); + string initVector = ConfigurationManager.AppSettings["InitVector"].ToString(); + int keySize = Convert.ToInt32(ConfigurationManager.AppSettings["KeySize"]); ; + + + return DecryptData(encryptedText, passPhrase, saltValue, hashAlgorithm,passwordIterations, initVector, keySize); + } + + private string EncryptData(string plainText, string passPhrase, string saltValue, string hashAlgorithm,int passwordIterations, string initVector, int keySize) + { + // Convert strings into byte arrays. + // Let us assume that strings only contain ASCII codes. + // If strings include Unicode characters, use Unicode, UTF7, or UTF8 + // encoding. + byte[] initVectorBytes = Encoding.ASCII.GetBytes(initVector); + byte[] saltValueBytes = Encoding.ASCII.GetBytes(saltValue); + + // Convert our plaintext into a byte array. + // Let us assume that plaintext contains UTF8-encoded characters. + byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText); + + // First, we must create a password, from which the key will be derived. + // This password will be generated from the specified passphrase and + // salt value. The password will be created using the specified hash + // algorithm. Password creation can be done in several iterations. + PasswordDeriveBytes password = new PasswordDeriveBytes(passPhrase, saltValueBytes, hashAlgorithm, passwordIterations); + + // Use the password to generate pseudo-random bytes for the encryption + // key. Specify the size of the key in bytes (instead of bits). + byte[] keyBytes = password.GetBytes(keySize / 8); + + // Create uninitialized Rijndael encryption object. + RijndaelManaged symmetricKey = new RijndaelManaged(); + + // It is reasonable to set encryption mode to Cipher Block Chaining + // (CBC). Use default options for other symmetric key parameters. + symmetricKey.Mode = CipherMode.CBC; + + // Generate encryptor from the existing key bytes and initialization + // vector. Key size will be defined based on the number of the key + // bytes. + ICryptoTransform encryptor = symmetricKey.CreateEncryptor(keyBytes, initVectorBytes); + + // Define memory stream which will be used to hold encrypted data. + MemoryStream memoryStream = new MemoryStream(); + + // Define cryptographic stream (always use Write mode for encryption). + CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write); + // Start encrypting. + cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length); + + // Finish encrypting. + cryptoStream.FlushFinalBlock(); + + // Convert our encrypted data from a memory stream into a byte array. + byte[] cipherTextBytes = memoryStream.ToArray(); + + // Close both streams. + memoryStream.Close(); + cryptoStream.Close(); + + // Convert encrypted data into a base64-encoded string. + string cipherText = Convert.ToBase64String(cipherTextBytes); + + // Return encrypted string. + return cipherText; + } + + private string DecryptData(string encryptedText, string passPhrase, string saltValue, string hashAlgorithm, int passwordIterations, string initVector, int keySize) + { + try + { + // arrays. Let us assume that strings only contain ASCII codes. + // If strings include Unicode characters, use Unicode, UTF7, or UTF8 + // encoding. + byte[] initVectorBytes = Encoding.ASCII.GetBytes(initVector); + byte[] saltValueBytes = Encoding.ASCII.GetBytes(saltValue); + + // Convert our encryptedvalue into a byte array. + byte[] cipherTextBytes = Convert.FromBase64String(encryptedText); + + // First, we must create a password, from which the key will be + // derived. This password will be generated from the specified + // passphrase and salt value. The password will be created using + // the specified hash algorithm. Password creation can be done in + // several iterations. + PasswordDeriveBytes password = new PasswordDeriveBytes(passPhrase, saltValueBytes, hashAlgorithm, passwordIterations); + + // Use the password to generate pseudo-random bytes for the encryption + // key. Specify the size of the key in bytes (instead of bits). + byte[] keyBytes = password.GetBytes(keySize / 8); + + // Create uninitialized Rijndael encryption object. + RijndaelManaged symmetricKey = new RijndaelManaged(); + + // It is reasonable to set encryption mode to Cipher Block Chaining + // (CBC). Use default options for other symmetric key parameters. + symmetricKey.Mode = CipherMode.CBC; + + // Generate decryptor from the existing key bytes and initialization + // vector. Key size will be defined based on the number of the key + // bytes. + ICryptoTransform decryptor = symmetricKey.CreateDecryptor(keyBytes, initVectorBytes); + + // Define memory stream which will be used to hold encrypted data. + MemoryStream memoryStream = new MemoryStream(cipherTextBytes); + + // Define cryptographic stream (always use Read mode for encryption). + CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read); + + // Since at this point we don't know what the size of decrypted data + // will be, allocate the buffer long enough to hold ciphertext; + // plaintext is never longer than ciphertext. + byte[] plainTextBytes = new byte[cipherTextBytes.Length]; + + // Start decrypting. + int decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length); + + // Close both streams. + memoryStream.Close(); + cryptoStream.Close(); + + // Convert decrypted data into a string. + // Let us assume that the original plaintext string was UTF8-encoded. + string plainText = Encoding.UTF8.GetString(plainTextBytes, 0, decryptedByteCount); + + // Return decrypted string. + return plainText; + + } + catch( Exception ex) + { + return null; + } + // Convert strings defining encryption key characteristics into byte + + } + +} diff --git a/400-SOURCECODE/AIAHTML5.API/Web.config b/400-SOURCECODE/AIAHTML5.API/Web.config index 08f0188..d541683 100644 --- a/400-SOURCECODE/AIAHTML5.API/Web.config +++ b/400-SOURCECODE/AIAHTML5.API/Web.config @@ -58,6 +58,16 @@ + + + + + + + + + + diff --git a/400-SOURCECODE/AIAHTML5.Web/app/controllers/AODController.js b/400-SOURCECODE/AIAHTML5.Web/app/controllers/AODController.js index 0994ae6..b213704 100644 --- a/400-SOURCECODE/AIAHTML5.Web/app/controllers/AODController.js +++ b/400-SOURCECODE/AIAHTML5.Web/app/controllers/AODController.js @@ -1,65 +1,453 @@ -AIA.controller("AODController", ["$scope", "$rootScope", "pages", "$log","$location", -function ($scope, $rootScope, pages, log, $location) { - //$scope.showTabButton = true; - //$scope.IsVisible = function () { - // $scope.scroll(); +'use strict'; - //} +AIA.controller("AODController", ["$scope", "$window", "$rootScope", "$compile", "$http", "$log", "$location", "$timeout","DataService", "ModuleService", "$interval", "AIAConstants", +function ($scope, $window, $rootScope, $compile, $http, log, $location, $timeout,DataService, ModuleService, $interval, AIAConstants) { + $scope.ObjectAttribute=function(windowviewid) + { + var windata={ + 'multiwinid': windowviewid, + 'AODAnimationData': [], + 'moduleName': '', + 'VideoUrl':'', + 'currentViewTitle': '', + 'parentSlugName': '', + 'currentSlug': '', + 'imageId': '' + }; + return windata; + } - $scope.setActiveTab = function (tabToSet) { - $scope.activeTab = tabToSet; - localStorage.setItem("currentAODTabView", $scope.activeTab); - }; + $scope.initializeAODWindowData = function (windowviewid, isOpenWithExistsModule, openPanelNo) { + if (isOpenWithExistsModule || openPanelNo == 0) { + if ($rootScope.AODWindowData != undefined) { + $rootScope.AODWindowData.length = 0; + } + else { + $rootScope.AODWindowData = []; + } + + $rootScope.AODWindowData.push($scope.ObjectAttribute(windowviewid)); + + } + else { + var isNewWindow = true; + for (var k = 0; k < $rootScope.AODWindowData.length; k++) { + if ($rootScope.AODWindowData[k].multiwinid == windowviewid) { + isNewWindow = false; + break; + } + } - $scope.scroll = function () { - // $window.scrollTo(0, 0); - $("html,body").scrollTop(0); - //alert("scroll"); + if (isNewWindow) { + $rootScope.AODWindowData.push($scope.ObjectAttribute(windowviewid)); + } + } } - //$rootScope.currentActiveModuleTitle = pages[10].name; + + $scope.GetAODwindowStoreData = function (windowviewid, keyname) { + for (var x = 0 ; x < $rootScope.AODWindowData.length; x++) { - $scope.$on('$viewContentLoaded', function (event) { + if ($rootScope.AODWindowData[x].multiwinid == windowviewid) { + return $rootScope.AODWindowData[x][keyname]; + } + } + } + + $scope.SetAODwindowStoreData = function (windowviewid, keyname, value) { + for (var x = 0 ; x < $rootScope.AODWindowData.length; x++) { + + if ($rootScope.AODWindowData[x].multiwinid == windowviewid) { + $rootScope.AODWindowData[x][keyname] = value; + } + } + } + + $scope.DisableUI = function () { + + var aniImagePanelConetent = document.getElementsByClassName("jsPanel-content"); + for (var i = 0; i < aniImagePanelConetent.length; i++) { + aniImagePanelConetent[i].style.pointerEvents = "none"; + aniImagePanelConetent[i].style.opacity = "0.7"; + + } + $rootScope.isLoading = true; + $('#spinner').css('visibility', 'visible'); + + // CB module disable all + $('#HomeContainerDiv').css('pointer-events', 'none'); + $('#HomeContainerDiv').css('opacity', '0.7'); + } + + $scope.EnableUI = function () { + + var aniImagePanelConetent = document.getElementsByClassName("jsPanel-content"); + for (var i = 0; i < aniImagePanelConetent.length; i++) { + aniImagePanelConetent[i].style.pointerEvents = "auto"; + aniImagePanelConetent[i].style.opacity = "1"; + } + + $rootScope.isLoading = false; + $('#spinner').css('visibility', 'hidden'); + // CB module enable all + $('#HomeContainerDiv').css('pointer-events', 'auto'); + $('#HomeContainerDiv').css('opacity', '1'); + + } + + $scope.RemoveJSPanel = function (panelid) { + + var len = (panelid).split("_").length; + var windowviewid = (panelid).split("_")[len - 1]; + + // remove old stored data after close panel + for (var index = 0 ; index < $rootScope.AODWindowData.length; index++) { + + if ($rootScope.AODWindowData[index].multiwinid == windowviewid) { + + if (index != -1) { + // remove module which one is loaded + var reffid=$rootScope.AODWindowData[index].imageId; + $rootScope.AODWindowData.splice(index, 1); + //remove also stream/source video from close panel from cb + if($rootScope.collectAnimationSource !=undefined) + { + for (var vdx = 0 ; vdx < $rootScope.collectAnimationSource.length; vdx++) { + if(reffid==$rootScope.collectAnimationSource[vdx].imageId) + $rootScope.collectAnimationSource.splice(vdx, 1); + } + } + if ($('#' + panelid).html() != undefined) { + + $('#' + panelid).remove(); + + } + // $rootScope.resetjsPanelTop(panelid); + } + } + } + } + $scope.PanelActivity = function () { + // close panel + $(document).on("click", "#" + $scope.jsPanelID + " .jsPanel-hdr .jsPanel-hdr-r .jsPanel-btn-close .jsglyph-remove", function (event) { + + var panelid = $(event.target).parent().parent().parent().parent().attr('id'); + + $scope.RemoveJSPanel(panelid); + + }); + } + + + $scope.loadAIModuleById = function (moduleId) { + + $rootScope.MULTI_VIEW_ID += 1 + + if($rootScope.AODWindowData!=undefined) + { + if($rootScope.AODWindowData.length>0) + { + for(var x=0 ;x < $rootScope.AODWindowData.length;x++){ + var winid=$rootScope.AODWindowData[x].multiwinid; + if ($('#aodImagePanel_' + winid).html() != undefined) { + $('#aodImagePanel_' + winid).remove(); + } + } + $rootScope.AODWindowData=[]; + } + } + + $scope.initializeAODWindowData($rootScope.MULTI_VIEW_ID, true, undefined); + + $scope.DisableUI(); if ($rootScope.refreshcheck == null) { $location.path('/'); } - - // code that will be executed ... + // code that will be executed ... // every time this view is loaded - //get current path - var currentURL = $location.path(); - var selectedModuleName = ''; - //set module title - angular.forEach($rootScope.userModules, function (value, key) { - if (value.slug === currentURL.replace('/', '')) { - selectedModuleName = value.name; + + $rootScope.currentActiveModuleTitle = "ADAM ON DEMAND"; + + $scope.SetAODwindowStoreData($rootScope.MULTI_VIEW_ID, 'moduleName', "ADAM ON DEMAND"); + + $scope.LoadAODJsonData($rootScope.MULTI_VIEW_ID); + + setTimeout(function () { + + //call time interval function until load Illustration data + var timeintval = null; + timeintval = $interval(function () { + var AODAnimationData = $scope.GetAODwindowStoreData($rootScope.MULTI_VIEW_ID, 'AODAnimationData'); + if (AODAnimationData.length>0) { + $scope.stopIntervalAOD(); + $scope.loadAODList($rootScope.MULTI_VIEW_ID); + } + else + { + console.log("waiting for aod Data"); + } + }, 100); + + $scope.stopIntervalAOD = function () { + if (angular.isDefined(timeintval)) { + $interval.cancel(timeintval); + timeintval = undefined; } - $rootScope.currentActiveModuleTitle = selectedModuleName; - }) + }; + + }, 200); + }; + + $scope.LoadAODJsonData = function (windowviewid) { + + var promise = DataService.getJson('~/../content/data/json/aod/aod_courselist.json') + promise.then( + function (result) { + + var AODAnimationData = new jinqJs() + .from(result.root.AODData) + .orderBy([{ field: '_BodySystem', sort: 'asc' }]) + .select(); + + $scope.SetAODwindowStoreData(windowviewid, 'AODAnimationData', AODAnimationData); + + }, + function (error) { + $scope.EnableUI(); + + } + ); + + + }; + + $scope.loadAODList = function (windowviewid) { + + var selectedAODListViewData = $scope.GetAODwindowStoreData(windowviewid, 'AODAnimationData'); + + $('#grid-view').empty(); - $scope.showTabButton = true; - $scope.IsVisible = function () { - $scope.scroll(); + angular.forEach(selectedAODListViewData, function (value, key) { + var imagePath = "~/../content/images/aod/thumbnails/" + value._ThumbnailImage; + + var $el = $('').appendTo('#grid-view'); + + $compile($el)($scope); + + $(".sidebar").mCustomScrollbar({ + autoHideScrollbar: true, + //theme:"rounded" + }); + + }); + + $('#' + $rootScope.getLocalStorageValue("currentBodyViewId")).find('.thumbnail').addClass('HightLightThumbnail'); + $timeout(function () { + if ($rootScope.getLocalStorageValue('AODGridViewScroll') !== null && $location.url() == "/ADAM-on-demand") { + + $('html, body').animate({ scrollTop: $rootScope.getLocalStorageValue('AODGridViewScroll') }, 'slow'); + } + }, + 200); + + + $timeout(function () { + $scope.EnableUI(); + $scope.ResetGridListLength(); + }, 400); + + } + $scope.ResetGridListLength=function() + { + var $ua = navigator.userAgent; + + if (($ua.match(/(iPod|iPhone|iPad|android)/i))) { + + if(screen.height<=768) + { + $('#grid-view').css({"height":"660","overflow":"scroll"}); + } + else if(screen.height<=1024) + { + $('#grid-view').css({"height":"910","overflow":"scroll"}); + } + else + { + $('#grid-view').css({"height":"1250","overflow":"scroll"}); + } + } + else + { + $('#grid-view').css({"height":"830","overflow":"scroll"}); } + } - // $rootScope.currentActiveModuleTitle = pages[10].name; + $scope.openView = function ($event) { + var windowviewid = $rootScope.MULTI_VIEW_ID; - //set the local storage + $rootScope.MenuModuleName = "AOD"; + $rootScope.currentBodyViewId = $event.currentTarget.id; + if ($event.currentTarget.textContent !== null && typeof ($event.currentTarget.textContent) !== "undefined") { + var selectedAODListViewData = $scope.GetAODwindowStoreData(windowviewid, 'AODAnimationData'); + var selectedTileData = []; + selectedTileData = new jinqJs() + .from(selectedAODListViewData) + .where('_ImageId = ' + $event.currentTarget.id) + .select(); - var curtab = $rootScope.getLocalStorageValue("currentAODTabView"); - if (curtab == 2) { - $scope.setActiveTab(2); + $rootScope.ViewTitle = selectedTileData[0]._Title; } else { - $scope.setActiveTab(1); + $rootScope.ViewTitle = $event.currentTarget.textContent; } - }); + localStorage.setItem("currentViewTitle", $rootScope.ViewTitle); + localStorage.setItem("currentBodyViewId", $event.currentTarget.id); + + $scope.SetAODwindowStoreData(windowviewid, 'currentViewTitle', $rootScope.ViewTitle); + $scope.SetAODwindowStoreData(windowviewid, 'imageId', $event.currentTarget.id); + + var promise = DataService.getJson('~/../content/data/json/aod/aod_courselist_video.json') + promise.then( + function (result) { + // $scope.AnimationData = result; + $scope.AODlistViewData = result.root.AODData; + var id = $scope.GetAODwindowStoreData(windowviewid, 'imageId'); + var clickedAODVideoData = []; + clickedAODVideoData = new jinqJs() + .from($scope.AODlistViewData) + .where('_ImageId == ' + id) + .select('_VideoUrl'); + + var clickedVideoUrl = clickedAODVideoData[0]._VideoUrl; + + $scope.SetAODwindowStoreData(windowviewid, 'VideoUrl', clickedVideoUrl); + + var AODGridViewScrollPosition = $($window).scrollTop(); + localStorage.setItem('AODGridViewScroll', AODGridViewScrollPosition); + $location.url('/AOD-view-detail'); + + }, + function (error) { + + } + + ); + + + } + + + $scope.openAODBodyViewMain = function () { + $scope.SetAODwindowStoreData($rootScope.MULTI_VIEW_ID, 'parentSlugName', 'ADAM-on-demand'); + $scope.loadAdamVideo($rootScope.MULTI_VIEW_ID); + + } + + $scope.loadAdamVideo = function (windowviewid) { + $scope.DisableUI(); + $scope.jsPanelID = 'aodImagePanel' + '_' + windowviewid; + var tittle = $scope.GetAODwindowStoreData(windowviewid, 'currentViewTitle'); + var videoUrl = $rootScope.aodSiteUrl+ $scope.GetAODwindowStoreData(windowviewid, 'VideoUrl'); + // var videoUrl = "https://adamondemand.com/"+ $scope.GetAODwindowStoreData(windowviewid, 'VideoUrl'); + + $scope.jsPanelWidth = $(window).outerWidth() - 20; + $scope.jsPanelHeight = $(window).outerHeight() - 140; + $scope.jsPanelLeft = 1; + $scope.jsPanelTop = 70; + + if (videoUrl.length > 0 ) { + $scope.jsPanelVideo = $.jsPanel({ + id: $scope.jsPanelID, + selector: '.aodView', + theme: 'success', + currentController: 'AODController', + parentSlug: $scope.GetAODwindowStoreData(windowviewid, 'parentSlugName'), + content: '
' + + // ''+ + '' + + '
', + title: tittle, + position: { + top: $scope.jsPanelTop, + left: $scope.jsPanelLeft + }, + + size: { + width: $scope.jsPanelWidth, + height: $scope.jsPanelHeight + }, + controls: { buttons: 'closeonly' }, + resizable: { + start:function(event, ui) + { + var len = (event.currentTarget.id).split("_").length; + var windowviewid = (event.currentTarget.id).split("_")[len - 1]; + $('#aodvideo_'+windowviewid).css("display",'block'); + + } + }, + + }); + + + $scope.jsPanelVideo.maximize(); + $scope.SetAODwindowStoreData(windowviewid, 'currentSlug', 'AOD-view-detail'); + $('html, body').animate({ scrollTop: 0 }); + + // $.post($rootScope.aodSiteUrl+"/AodHome/CoursePlayerAIAP", { aiakeypass: "as@2$eDu8Jk" }, function (result) { + + // if (result.Success === true) { + // alert('ok') + // $('#aodvideo_' + windowviewid).attr('src', videoUrl+"&type=SCORMPackage&uID=" + 2, "_self") + + // // window.open("https://adamondemand.com/AodHome/CoursePlayerAIATest?courseid=" + ProID + "&type=" + productype + "&uID=" + userid, "_self"); + // } + // else + // { + // alert('failed') + // } + + // }); + + + // $('#aodkey').attr('name',"aiakeypass") + // $('#aodkey').val($rootScope.aodkeypass); + // $('#aodform').attr('action',videoUrl).submit(); -}] + } + $('#AODView').css("height", $(window).outerHeight() - 20); + + $('#AODView').css("width", $(window).outerWidth() - 30); + + //Calling methode for save Js Panel Activity for SaveCB + $scope.PanelActivity(); + + } + + $scope.MyAODvideoOnLoad = function (windowviewid) + { + $scope.EnableUI(); + } + }]); + function MyAODvideoOnLoad(event) { -); \ No newline at end of file + console.log('video loaded') + var scope = angular.element(document.getElementById("AODView")).scope(); + var windowviewid = (event.target.id).split("_")[1]; + + setTimeout(function() + { + scope.$apply(function () { + scope.MyAODvideoOnLoad(windowviewid); + }); + }, 500); + + } \ No newline at end of file diff --git a/400-SOURCECODE/AIAHTML5.Web/app/controllers/HomeController.js b/400-SOURCECODE/AIAHTML5.Web/app/controllers/HomeController.js index b6cdbc2..1034db3 100644 --- a/400-SOURCECODE/AIAHTML5.Web/app/controllers/HomeController.js +++ b/400-SOURCECODE/AIAHTML5.Web/app/controllers/HomeController.js @@ -380,7 +380,7 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data '#Link\\/symptom-navigator{pointer-events: none; opacity: .3} ' + '#Link\\/health-navigator{pointer-events: none; opacity: .3} ' + '#Link\\/wellness-tools{pointer-events: none; opacity: .3} ' + - '#Link\\/aod{pointer-events: none; opacity: .3} ' + + '#ADAM-on-demand{pointer-events: none; opacity: .3} ' + ''; @@ -727,6 +727,9 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data $rootScope.aiaPingInterval = configresult.pingInterval; $rootScope.aiaAnimationPath = configresult.serverPath; $rootScope.MaxOneFileSize = configresult.fileSize; + $rootScope.aodkeypass = configresult.aodkeypass; + $rootScope.aodSiteUrl = configresult.aodSiteUrl; + var loggedInUser = JSON.parse($scope.currentUserDetails); //incase site user login userid is 0 so then using license id //logout site user while reload url without parameter @@ -958,6 +961,8 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data $rootScope.aiaPingInterval = configresult.pingInterval; $rootScope.aiaAnimationPath = configresult.serverPath; $rootScope.MaxOneFileSize = configresult.fileSize; + $rootScope.aodkeypass = configresult.aodkeypass; + $rootScope.aodSiteUrl = configresult.aodSiteUrl; }); } @@ -1202,6 +1207,13 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data $rootScope.userData = result; $rootScope.userModules = result.Modules; + //update slag of aod untill push to PROD + $rootScope.userModules = new jinqJs() + .from($rootScope.userModules) + .update(function (coll, index) { coll[index].slug = 'ADAM-on-demand'; }) + .at("id == " + 17) + .select(); + localStorage.setItem('loggedInUserDetails', JSON.stringify(result)); if (isCommingSoonModel == true) { @@ -1267,6 +1279,13 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data $rootScope.userData = result; $rootScope.userModules = result.Modules; + //update slag of aod untill push to PROD + $rootScope.userModules = new jinqJs() + .from($rootScope.userModules) + .update(function (coll, index) { coll[index].slug = 'ADAM-on-demand'; }) + .at("id == " + 17) + .select(); + //only instructor allowed to change modesty //concurrent user of non-instructor if( result.UserTypeId == 6 && result.EditionId!=1 && result.EditionId!=2) @@ -1482,6 +1501,8 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data $rootScope.aiaPingInterval = configresult.pingInterval; $rootScope.aiaAnimationPath = configresult.serverPath; $rootScope.MaxOneFileSize = configresult.fileSize; + $rootScope.aodkeypass = configresult.aodkeypass; + $rootScope.aodSiteUrl = configresult.aodSiteUrl; userInfo.username = result.LoginId; userInfo.password = result.Password; @@ -1536,6 +1557,8 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data $rootScope.aiaPingInterval = configresult.pingInterval; $rootScope.aiaAnimationPath = configresult.serverPath; $rootScope.MaxOneFileSize = configresult.fileSize; + $rootScope.aodkeypass = configresult.aodkeypass; + $rootScope.aodSiteUrl = configresult.aodSiteUrl; var loggedInUser = JSON.parse($scope.currentUserDetails); //check already login by account number bcz no login id for site login @@ -1683,6 +1706,12 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data $rootScope.userData = result; $rootScope.userModules = result.Modules; + //update slag of aod untill push to PROD + $rootScope.userModules = new jinqJs() + .from($rootScope.userModules) + .update(function (coll, index) { coll[index].slug = 'ADAM-on-demand'; }) + .at("id == " + 17) + .select(); localStorage.setItem('loggedInUserDetails', JSON.stringify(result)); @@ -1732,8 +1761,14 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data } - $rootScope.userData = result; - $rootScope.userModules = result.Modules; + $rootScope.userData = result; + $rootScope.userModules = result.Modules; + //update slag of aod untill push to PROD + $rootScope.userModules = new jinqJs() + .from($rootScope.userModules) + .update(function (coll, index) { coll[index].slug = 'ADAM-on-demand'; }) + .at("id == " + 17) + .select(); //1. set haveRoleAdmin = false because LicenseInfo is not null $rootScope.haveRoleAdmin = false; @@ -1855,6 +1890,13 @@ function ($rootScope, $scope, Modules, $log, $location, $compile, $timeout, Data $rootScope.isVisibleLogin = false; $rootScope.userData = userInfo; $rootScope.userModules = userInfo.Modules; + + //update slag of aod untill push to PROD + $rootScope.userModules = new jinqJs() + .from($rootScope.userModules) + .update(function (coll, index) { coll[index].slug = 'ADAM-on-demand'; }) + .at("id == " + 17) + .select(); // ShowAssignedModulesPopup(userInfo.Modules);; // for reseller type user first need to update profile if (userInfo.UserTypeId == 7 && (userInfo.FirstName == "" || userInfo.EmailId == "" || userInfo.LastName == "")) { diff --git a/400-SOURCECODE/AIAHTML5.Web/app/main/AIA.js b/400-SOURCECODE/AIAHTML5.Web/app/main/AIA.js index 973ea15..7a1c602 100644 --- a/400-SOURCECODE/AIAHTML5.Web/app/main/AIA.js +++ b/400-SOURCECODE/AIAHTML5.Web/app/main/AIA.js @@ -146,11 +146,11 @@ AIA.constant('pages', [ pageController: 'LinkController' }, - { - name: 'A.D.A.M OnDemand', - pageSlug: 'Link/aod', - pageUrl: 'app/views/Link/Link-view.html', - pageController: 'LinkController' + { + name: 'A.D.A.M OnDemand', + pageSlug: 'AOD-view-detail', + pageUrl: 'app/views/AOD/AOD-view-detail.html', + pageController: 'AODController' }, { //id:18, diff --git a/400-SOURCECODE/AIAHTML5.Web/app/views/AOD/AOD-view-detail.html b/400-SOURCECODE/AIAHTML5.Web/app/views/AOD/AOD-view-detail.html new file mode 100644 index 0000000..e4f76a5 --- /dev/null +++ b/400-SOURCECODE/AIAHTML5.Web/app/views/AOD/AOD-view-detail.html @@ -0,0 +1,11 @@ +
+
+
+ + + + +
+ +
+
diff --git a/400-SOURCECODE/AIAHTML5.Web/app/views/AOD/AOD-view.html b/400-SOURCECODE/AIAHTML5.Web/app/views/AOD/AOD-view.html index e348377..65742b7 100644 --- a/400-SOURCECODE/AIAHTML5.Web/app/views/AOD/AOD-view.html +++ b/400-SOURCECODE/AIAHTML5.Web/app/views/AOD/AOD-view.html @@ -1,329 +1,7 @@ 
-
- - -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TitleSystem
1st & 2nd Intercostal SpacesThorax
1st, 3rd, &8th RibsBody Wall and Back
Abdomen at L5 Vertebra (Inf)Abdomen
1st & 2nd Intercostal SpacesThorax
1st, 3rd, &8th RibsBody Wall and Back
Abdomen at L5 Vertebra (Inf)Abdomen
1st & 2nd Intercostal SpacesThorax
1st, 3rd, &8th RibsBody Wall and Back
Abdomen at L5 Vertebra (Inf)Abdomen
1st & 2nd Intercostal SpacesThorax
1st, 3rd, &8th RibsBody Wall and Back
Abdomen at L5 Vertebra (Inf)Abdomen
1st & 2nd Intercostal SpacesThorax
1st, 3rd, &8th RibsBody Wall and Back
Abdomen at L5 Vertebra (Inf)Abdomen
- -
- -
-
- -
-
+
+
diff --git a/400-SOURCECODE/AIAHTML5.Web/content/data/json/aod/aod_courselist.json b/400-SOURCECODE/AIAHTML5.Web/content/data/json/aod/aod_courselist.json new file mode 100644 index 0000000..484ed12 --- /dev/null +++ b/400-SOURCECODE/AIAHTML5.Web/content/data/json/aod/aod_courselist.json @@ -0,0 +1,156 @@ +{ + "root":{ + "AODData":[ + { + "_ImageId":"11014009", + "_Title":"Anatomy and Physiology of the Breast", + "_BodySystem":"Breast", + "_ThumbnailImage":"11014009.jpg" + }, + { + "_ImageId":"02011209", + "_Title":"Understanding the Physiology of the Skin", + "_BodySystem":"Skin", + "_ThumbnailImage":"02011209.jpg" + }, + { + "_ImageId":"14011109", + "_Title":"Understanding the Anatomy of the Urinary System", + "_BodySystem":"Urinary System", + "_ThumbnailImage":"14011109.jpg" + }, + { + "_ImageId":"06011109", + "_Title":"Understanding the Anatomy of the Immune System", + "_BodySystem":"Immune System", + "_ThumbnailImage":"06011109.jpg" + }, + { + "_ImageId":"09011209", + "_Title":"Understanding the Physiology of the Visual System", + "_BodySystem":"Visual System", + "_ThumbnailImage":"09011209.jpg" + }, + { + "_ImageId":"02011109", + "_Title":"Understanding the Anatomy of the Skin", + "_BodySystem":"Skin", + "_ThumbnailImage":"02011109.jpg" + }, + { + "_ImageId":"09011109", + "_Title":"Understanding the Anatomy of the Visual System", + "_BodySystem":"Visual System", + "_ThumbnailImage":"09011109.jpg" + }, + { + "_ImageId":"01011209", + "_Title":"Understanding the Physiology of the Cardiovascular System", + "_BodySystem":"Cardiovascular System", + "_ThumbnailImage":"01011209.jpg" + }, + { + "_ImageId":"13011209", + "_Title":"Understanding the Physiology of the Musculoskeletal System", + "_BodySystem":"Musculoskeletal System", + "_ThumbnailImage":"13011209.jpg" + }, + { + "_ImageId":"04011209", + "_Title":"Understanding the Physiology of the Digestive System", + "_BodySystem":"Digestive System", + "_ThumbnailImage":"04011209.jpg" + }, + { + "_ImageId":"01011109", + "_Title":"Understanding the Anatomy of the Cardiovascular System", + "_BodySystem":"Cardiovascular System", + "_ThumbnailImage":"01011109.jpg" + }, + { + "_ImageId":"13011109", + "_Title":"Understanding the Anatomy of the Musculoskeletal System", + "_BodySystem":"Musculoskeletal System", + "_ThumbnailImage":"13011109.jpg" + }, + { + "_ImageId":"04011109", + "_Title":"Understanding the Anatomy of the Digestive System", + "_BodySystem":"Digestive System", + "_ThumbnailImage":"04011109.jpg" + }, + { + "_ImageId":"07011209", + "_Title":"Understanding the Physiology of the Nervous System", + "_BodySystem":"Nervous System", + "_ThumbnailImage":"07011209.jpg" + }, + { + "_ImageId":"01011009", + "_Title":"Introduction to the Cardiovascular System", + "_BodySystem":"Cardiovascular System", + "_ThumbnailImage":"01011009.jpg" + }, + { + "_ImageId":"12011209", + "_Title":"Understanding the Physiology of the Respiratory System", + "_BodySystem":"Respiratory System", + "_ThumbnailImage":"12011209.jpg" + }, + { + "_ImageId":"03011209", + "_Title":"Understanding the Physiology of the Endocrine System", + "_BodySystem":"Endocrine System", + "_ThumbnailImage":"03011209.jpg" + }, + { + "_ImageId":"07011109", + "_Title":"Understanding the Anatomy of the Nervous System", + "_BodySystem":"Nervous System", + "_ThumbnailImage":"07011109.jpg" + }, + { + "_ImageId":"12011109", + "_Title":"Understanding the Anatomy of the Respiratory System", + "_BodySystem":"Respiratory System", + "_ThumbnailImage":"12011109.jpg" + }, + { + "_ImageId":"03011109", + "_Title":"Understanding the Anatomy of the Endocrine System", + "_BodySystem":"Endocrine System", + "_ThumbnailImage":"03011109.jpg" + }, + { + "_ImageId":"14011209", + "_Title":"Understanding the Physiology of the Urinary System", + "_BodySystem":"Urinary System", + "_ThumbnailImage":"14011209.jpg" + }, + { + "_ImageId":"06011209", + "_Title":"Understanding the Physiology of the Immune System", + "_BodySystem":"Immune System", + "_ThumbnailImage":"06011209.jpg" + }, + { + "_ImageId":"00016009", + "_Title":"Understanding Cell Biology", + "_BodySystem":"1", + "_ThumbnailImage":"00016009.jpg" + }, + { + "_ImageId":"05011009", + "_Title":"Blood Anatomy and Physiology", + "_BodySystem":"2", + "_ThumbnailImage":"05011009.jpg" + }, + { + "_ImageId":"07029109", + "_Title":"Understanding the Physiology of Pain", + "_BodySystem":"3", + "_ThumbnailImage":"07029109.jpg" + } + ] + } +} \ No newline at end of file diff --git a/400-SOURCECODE/AIAHTML5.Web/content/data/json/aod/aod_courselist_video.json b/400-SOURCECODE/AIAHTML5.Web/content/data/json/aod/aod_courselist_video.json new file mode 100644 index 0000000..7084786 --- /dev/null +++ b/400-SOURCECODE/AIAHTML5.Web/content/data/json/aod/aod_courselist_video.json @@ -0,0 +1,156 @@ +{ + "root":{ + "AODData":[ + { + "_id":"1", + "_ImageId":"11014009", + "_Title":"Anatomy and Physiology of the Breast", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=11014009&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"2", + "_ImageId":"02011209", + "_Title":"Understanding the Physiology of the Skin", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=02011209&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"3", + "_ImageId":"14011109", + "_Title":"Understanding the Anatomy of the Urinary System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=14011109&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"4", + "_ImageId":"06011109", + "_Title":"Understanding the Anatomy of the Immune System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=06011109&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"5", + "_ImageId":"09011209", + "_Title":"Understanding the Physiology of the Visual System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=09011209&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"6", + "_ImageId":"02011109", + "_Title":"Understanding the Anatomy of the Skin", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=02011109&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"7", + "_ImageId":"00016009", + "_Title":"Understanding Cell Biology", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=00016009&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"8", + "_ImageId":"05011009", + "_Title":"Blood Anatomy and Physiology", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=05011009&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"9", + "_ImageId":"09011109", + "_Title":"Understanding the Anatomy of the Visual System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=09011109&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"10", + "_ImageId":"01011209", + "_Title":"Understanding the Physiology of the Cardiovascular System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=01011209&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"11", + "_ImageId":"13011209", + "_Title":"Understanding the Physiology of the Musculoskeletal System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=13011209&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"12", + "_ImageId":"04011209", + "_Title":"Understanding the Physiology of the Digestive System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=04011209&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"13", + "_ImageId":"07029109", + "_Title":"Understanding the Physiology of Pain", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=07029109&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"14", + "_ImageId":"01011109", + "_Title":"Understanding the Anatomy of the Cardiovascular System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=01011109&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"15", + "_ImageId":"13011109", + "_Title":"Understanding the Anatomy of the Musculoskeletal System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=13011109&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"16", + "_ImageId":"04011109", + "_Title":"Understanding the Anatomy of the Digestive System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=04011109&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"17", + "_ImageId":"07011209", + "_Title":"Understanding the Physiology of the Nervous System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=07011209&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"18", + "_ImageId":"01011009", + "_Title":"Introduction to the Cardiovascular System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=01011009&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"19", + "_ImageId":"12011209", + "_Title":"Understanding the Physiology of the Respiratory System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=12011209&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"20", + "_ImageId":"03011209", + "_Title":"Understanding the Physiology of the Endocrine System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=03011209&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"21", + "_ImageId":"07011109", + "_Title":"Understanding the Anatomy of the Nervous System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=07011109&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"22", + "_ImageId":"12011109", + "_Title":"Understanding the Anatomy of the Respiratory System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=12011109&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"23", + "_ImageId":"03011109", + "_Title":"Understanding the Anatomy of the Endocrine System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=03011109&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"24", + "_ImageId":"14011209", + "_Title":"Understanding the Physiology of the Urinary System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=14011209&type=SCORMPackage&uID=2,_self" + }, + { + "_id":"25", + "_ImageId":"06011209", + "_Title":"Understanding the Physiology of the Immune System", + "_VideoUrl":"AodHome/CoursePlayerAIA?courseid=06011209&type=SCORMPackage&uID=2,_self" + } + ] + } +} \ No newline at end of file diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/00016009.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/00016009.jpg new file mode 100644 index 0000000..2937548 Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/00016009.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/01011009.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/01011009.jpg new file mode 100644 index 0000000..8bda336 Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/01011009.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/01011109.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/01011109.jpg new file mode 100644 index 0000000..beff9a2 Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/01011109.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/01011209.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/01011209.jpg new file mode 100644 index 0000000..0052344 Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/01011209.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/02011109.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/02011109.jpg new file mode 100644 index 0000000..911d6d5 Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/02011109.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/02011209.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/02011209.jpg new file mode 100644 index 0000000..58c5605 Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/02011209.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/03011109.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/03011109.jpg new file mode 100644 index 0000000..31c082c Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/03011109.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/03011209.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/03011209.jpg new file mode 100644 index 0000000..708a2de Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/03011209.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/04011109.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/04011109.jpg new file mode 100644 index 0000000..b01b6de Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/04011109.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/04011209.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/04011209.jpg new file mode 100644 index 0000000..e747fce Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/04011209.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/05011009.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/05011009.jpg new file mode 100644 index 0000000..181e98b Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/05011009.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/06011109.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/06011109.jpg new file mode 100644 index 0000000..968340e Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/06011109.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/06011209.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/06011209.jpg new file mode 100644 index 0000000..08c487d Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/06011209.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/07011109.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/07011109.jpg new file mode 100644 index 0000000..86765fa Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/07011109.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/07011209.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/07011209.jpg new file mode 100644 index 0000000..0af7204 Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/07011209.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/07029109.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/07029109.jpg new file mode 100644 index 0000000..a90f53d Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/07029109.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/09011109.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/09011109.jpg new file mode 100644 index 0000000..847ae4a Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/09011109.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/09011209.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/09011209.jpg new file mode 100644 index 0000000..62959da Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/09011209.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/11014009.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/11014009.jpg new file mode 100644 index 0000000..a967619 Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/11014009.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/12011109.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/12011109.jpg new file mode 100644 index 0000000..f1339cd Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/12011109.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/12011209.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/12011209.jpg new file mode 100644 index 0000000..75f8e33 Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/12011209.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/13011109.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/13011109.jpg new file mode 100644 index 0000000..c71f62f Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/13011109.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/13011209.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/13011209.jpg new file mode 100644 index 0000000..e8f8311 Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/13011209.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/14011109.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/14011109.jpg new file mode 100644 index 0000000..576173a Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/14011109.jpg differ diff --git a/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/14011209.jpg b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/14011209.jpg new file mode 100644 index 0000000..a3cafda Binary files /dev/null and b/400-SOURCECODE/AIAHTML5.Web/content/images/aod/thumbnails/14011209.jpg differ -- libgit2 0.21.4