Commit 528471bd22ee86e0db2e338405b8cab65a85570f
Merge branch 'SiteUrlIntegration' of http://gitlab.ebix.com/ADAM/AIAHTML5 into Develop
Showing
21 changed files
with
4143 additions
and
155 deletions
400-SOURCECODE/AIAHTML5+FlexCB/AppStartup.mxml
0 → 100644
1 | +<?xml version="1.0" encoding="utf-8"?> | |
2 | +<mx:Application implements="com.adam.aia.IAppBase,com.magic.mvc.container.IMVCContainer" | |
3 | + xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:kapit="fr.kapit.*" | |
4 | + xmlns:controller="com.adam.aia.appstartup.controller.*" | |
5 | + width="100%" height="100%" layout="absolute" | |
6 | + backgroundColor="#000000" | |
7 | + preinitialize="executePreinitializationTasks()" | |
8 | + creationComplete="onCreationComplete();" | |
9 | + verticalScrollPolicy="off" horizontalScrollPolicy="off"> | |
10 | + <!--<kapit:KapInspect />--> | |
11 | + <mx:Script> | |
12 | + <![CDATA[ | |
13 | + import com.adam.aia.CommonUtil; | |
14 | + import com.adam.aia.IAppBase; | |
15 | + import com.adam.aia.appstartup.event.StartupEventConst; | |
16 | + import com.adam.aia.appstartup.model.UserContextVO; | |
17 | + import com.adam.aia.appstartup.util.StartupOSTConst; | |
18 | + import com.adam.aia.appstartup.view.LoginView; | |
19 | + import com.adobe.cairngorm.business.ServiceLocator; | |
20 | + import com.adobe.cairngorm.events.UMEvent; | |
21 | + import com.magic.flexmdi.manager.MDIModuleWindowManager; | |
22 | + import com.magic.mvc.container.IMVCContainer; | |
23 | + import com.magic.mvc.container.MVCVBox; | |
24 | + import com.magic.mvc.context.IMVCContext; | |
25 | + import com.magic.mvc.context.MVCContextManager; | |
26 | + import com.magic.util.LocaleManager; | |
27 | + import com.magic.util.OSTManager; | |
28 | + import com.magic.util.UriUtil; | |
29 | + import com.magic.util.cache.CacheManager; | |
30 | + | |
31 | + import mx.controls.Alert; | |
32 | + import mx.controls.ProgressBar; | |
33 | + import mx.controls.SWFLoader; | |
34 | + import mx.events.FlexEvent; | |
35 | + import mx.managers.BrowserManager; | |
36 | + import mx.managers.SystemManager; | |
37 | + //import fr.kapit.KapInspect; | |
38 | + | |
39 | + public const LOGIN_SUCCESS:String = "LoginSuccess"; | |
40 | + public const LOAD_LOGIN_APP:String = "LoadLoginApp"; | |
41 | + public const LOAD_ADMIN_APP:String = "LoadAdminApp"; | |
42 | + public const LOAD_MAIN_APP:String = "LoadContainerApp"; | |
43 | + public const GET_USER_CONTEXT:String = "GetUserContext"; | |
44 | + | |
45 | + private const APP_ADMIN:String = "AppAdmin.swf"; | |
46 | + private const APP_MAIN:String = "AppMain.swf"; | |
47 | + private const APP_STARTUP:String = "AppStartup.swf"; | |
48 | + private const LOCALE_XML:String = "locale.xml"; | |
49 | + | |
50 | + | |
51 | + import com.adam.pattern.Request; | |
52 | + import com.adam.pattern.Response; | |
53 | + import com.adam.aia.appstartup.business.AppStartupConst; | |
54 | + import com.adam.aia.appstartup.business.StartupRemoteDelegate; | |
55 | + import com.adam.aia.appstartup.business.StartupRemoteDelegate; | |
56 | + | |
57 | + //****************************************************** | |
58 | + // Public properties | |
59 | + //****************************************************** | |
60 | + | |
61 | + private var _objSwfLoader:SWFLoader; | |
62 | + private var _objProgressBar:ProgressBar; | |
63 | + | |
64 | + private const APPSTARTUP_OST_XML:String = "appstartup_ost.xml"; | |
65 | + private const CONTENT_PATH:String = "content_path"; | |
66 | + private const PATH_SEPARATOR:String="/"; | |
67 | + | |
68 | + | |
69 | + public var _cmpLoginView:LoginView; | |
70 | + | |
71 | + public var objGlobalUserContext:UserContextVO = new UserContextVO(); | |
72 | + | |
73 | + | |
74 | + | |
75 | + /** | |
76 | + * Override of initialized method to defer application initialization | |
77 | + * finish until AFTER the runtime style has been loaded | |
78 | + * | |
79 | + * @param value Has the UIComponent/application been initialized | |
80 | + */ | |
81 | + override public function set initialized(value:Boolean):void | |
82 | + { | |
83 | + // Hold off until the Runtime CSS SWF is done loading. | |
84 | + } | |
85 | + | |
86 | + /** | |
87 | + * This function is responsible for invoking task which needed to be done before initialization. | |
88 | + * Basically the initialize the LocaleManager with the locale info. | |
89 | + * | |
90 | + */ | |
91 | + private function executePreinitializationTasks():void | |
92 | + { | |
93 | + //new KapInspect(); | |
94 | + | |
95 | + setupMVCContextManager(); | |
96 | + // just for the sake of initializing this first | |
97 | + ServiceLocator.getInstance(); | |
98 | + MDIModuleWindowManager.getInstance(); | |
99 | + MVCContextManager.getInstance(); | |
100 | + | |
101 | + LocaleManager.getInstance().addEventListener(Event.COMPLETE,onLocale); | |
102 | + LocaleManager.getInstance().load(UriUtil.getAbsoluteUriFromApplication(LOCALE_XML)); | |
103 | + } | |
104 | + | |
105 | + /** | |
106 | + * Once the locale xml is loaded and initialized the proceed | |
107 | + * | |
108 | + */ | |
109 | + private function onLocale(objEvent:Event):void | |
110 | + { | |
111 | + super.initialized = true; | |
112 | + } | |
113 | + | |
114 | + /** | |
115 | + * Function implementation for IAppBase.doAction() | |
116 | + * This is the only window to the AppBase any call should be made through this only | |
117 | + */ | |
118 | + public function doAction(strActionId:String, ...args):* | |
119 | + { | |
120 | + BrowserManager.getInstance().init("","A.D.A.M. Interactive Anatomy"); | |
121 | + //displayError | |
122 | + switch(strActionId) | |
123 | + { | |
124 | + case LOGIN_SUCCESS: | |
125 | + loadApp(UriUtil.getAbsoluteUriFromApplication(APP_MAIN)); | |
126 | + break; | |
127 | + case LOAD_ADMIN_APP: | |
128 | + loadApp(UriUtil.getAbsoluteUriFromApplication(APP_ADMIN)); | |
129 | + break; | |
130 | + case LOAD_LOGIN_APP: | |
131 | + loadLoginView(); | |
132 | + break; | |
133 | + case GET_USER_CONTEXT: | |
134 | + return objGlobalUserContext; | |
135 | + break; | |
136 | + } | |
137 | + } | |
138 | + | |
139 | + /** | |
140 | + * function to load an application swf. creates a new swf load instance and loads the application in that. | |
141 | + * if there is already another application running then it will first unload that | |
142 | + * @param : strPath - uri to the application swf that needs to be loaded | |
143 | + * @return : void | |
144 | + */ | |
145 | + private function loadApp(strPath:String):void | |
146 | + { | |
147 | + unloadApp(); | |
148 | + var objLoadContext:LoaderContext = new LoaderContext(false, | |
149 | + ApplicationDomain.currentDomain); | |
150 | + _objSwfLoader = new SWFLoader(); | |
151 | + _objSwfLoader.visible = false; | |
152 | + _objSwfLoader.percentHeight = 100; | |
153 | + _objSwfLoader.percentWidth = 100; | |
154 | + _objSwfLoader.showBusyCursor = true; | |
155 | + _objSwfLoader.addEventListener(Event.COMPLETE, onAppLoadComplete); | |
156 | + _objSwfLoader.addEventListener(IOErrorEvent.IO_ERROR, | |
157 | + onAppLoadIOError); | |
158 | + _objSwfLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, | |
159 | + onAppLoadSecurityError); | |
160 | + _objProgressBar = CommonUtil.getProgressBar(this, _objSwfLoader, CommonUtil.APP_LOADER_STRING); | |
161 | + /* | |
162 | + _objProgressBar.width = 300; | |
163 | + _objProgressBar.x = (width-300)/2; | |
164 | + _objProgressBar.y = (height)/2; | |
165 | + _objProgressBar.mode = "pool"; | |
166 | + _objProgressBar.label = APP_LOADER_STRING; | |
167 | + _objProgressBar.source = _objSwfLoader; | |
168 | + */ | |
169 | + addChild(_objSwfLoader); | |
170 | + //addChild(_objProgressBar); | |
171 | + _objSwfLoader.loaderContext = objLoadContext; | |
172 | + _objSwfLoader.source = strPath; | |
173 | + | |
174 | + } | |
175 | + | |
176 | + private function setupMVCContextManager():void | |
177 | + { | |
178 | + MVCContextManager.getInstance().flush(); | |
179 | + //register Global MVC context | |
180 | + MVCContextManager.getInstance().createGlobalContext( | |
181 | + _objModelLocator, | |
182 | + _objViewLocator, | |
183 | + _objFrontController); | |
184 | + } | |
185 | + /** | |
186 | + * unloads the currently loaded application. | |
187 | + * @param : none | |
188 | + * @return : void | |
189 | + */ | |
190 | + private function unloadApp():void | |
191 | + { | |
192 | + unloadLoginView(); | |
193 | + if(_objSwfLoader != null) | |
194 | + { | |
195 | + | |
196 | + cleanupApplication(); | |
197 | + MDIModuleWindowManager.getInstance().flush(); | |
198 | + MVCContextManager.getInstance().flush(); | |
199 | + com.magic.util.CacheManager.getInstance().flush(); | |
200 | + com.magic.util.cache.CacheManager.getInstance().dispose(); | |
201 | + _objSwfLoader.source = null; | |
202 | + removeChild(_objSwfLoader); | |
203 | + _objSwfLoader = null; | |
204 | + | |
205 | + } | |
206 | + } | |
207 | + | |
208 | + /** | |
209 | + * This function retrieves the loaded application and invokes its prepareToUnload function. | |
210 | + * | |
211 | + * @param none | |
212 | + * @return none | |
213 | + */ | |
214 | + private function cleanupApplication():void | |
215 | + { | |
216 | + if(_objSwfLoader.content == null) | |
217 | + { | |
218 | + return; | |
219 | + } | |
220 | + // | |
221 | + var objSystemManager:SystemManager = SystemManager(_objSwfLoader.content); | |
222 | + if(objSystemManager && objSystemManager.application) | |
223 | + { | |
224 | + var objApplication:Object = Object(objSystemManager.application); | |
225 | + if(objApplication.hasOwnProperty("prepareToUnload")) | |
226 | + { | |
227 | + objApplication["prepareToUnload"]() | |
228 | + } | |
229 | + } | |
230 | + } | |
231 | + /** | |
232 | + * event handler on application swf load complete. Remove the progress bar. | |
233 | + * @param : objEvent | |
234 | + * @return : void | |
235 | + */ | |
236 | + private function onAppLoadComplete(objEvent:Event):void | |
237 | + { | |
238 | + if(_objProgressBar != null && _objSwfLoader != null) | |
239 | + { | |
240 | + _objSwfLoader.showBusyCursor = false; | |
241 | + _objSwfLoader.visible = true; | |
242 | + removeChild(_objProgressBar); | |
243 | + _objProgressBar = null; | |
244 | + } | |
245 | + } | |
246 | + | |
247 | + /** | |
248 | + * Event handler of input/output error. prompt the error message to the user. | |
249 | + * @param : none | |
250 | + * @return : void | |
251 | + */ | |
252 | + private function onAppLoadIOError(objEvent:IOErrorEvent):void | |
253 | + { | |
254 | + // display error message | |
255 | + } | |
256 | + | |
257 | + /** | |
258 | + * Event handler of security error. prompt the error message to the user. | |
259 | + * @param : none | |
260 | + * @return : void | |
261 | + */ | |
262 | + private function onAppLoadSecurityError(objEvent:SecurityErrorEvent):void | |
263 | + { | |
264 | + // display error message | |
265 | + } | |
266 | + | |
267 | + /** | |
268 | + * function to load AppStartup.swf on creationComplete event | |
269 | + * @param : none | |
270 | + * @return : void | |
271 | + */ | |
272 | + private function onCreationComplete():void | |
273 | + { | |
274 | + // systemManager.addEventListener(FlexEvent.IDLE, handleApplicationIdle); | |
275 | + //NIKITA 25July18 | |
276 | + //doAction(LOAD_LOGIN_APP); | |
277 | + var un:String = mx.core.Application.application.parameters.username; | |
278 | + var up:String = mx.core.Application.application.parameters.password; | |
279 | + | |
280 | + //Alert.show(un+", "+up); | |
281 | + //Encryption of the password for more security | |
282 | + /*var saltValue:String = 'A1B2C3D4E5F6G7H8I9'; | |
283 | + var password:String = event.data.password + saltValue; | |
284 | + var sha1:SHA1 = new SHA1(); | |
285 | + var src:ByteArray = new ByteArray(); | |
286 | + src.writeUTFBytes(password); | |
287 | + var digest:ByteArray = sha1.hash(src); | |
288 | + var passwordHash:String = Hex.fromArray(digest);*/ | |
289 | + | |
290 | + var objData:Object = new Object(); | |
291 | + objData.loginId = un; | |
292 | + objData.password = up; | |
293 | + | |
294 | + var objEvent:UMEvent = new UMEvent(StartupEventConst.EVENT_LOGIN_CLICK,null,true,false,objData); | |
295 | + objEvent.dispatch(); | |
296 | + | |
297 | + // doAction(LOGIN_SUCCESS); | |
298 | + //25July18 | |
299 | + | |
300 | + //loadApp(UriUtil.getAbsoluteUriFromApplication(APP_STARTUP)); | |
301 | + } | |
302 | + private function handleApplicationIdle(event:FlexEvent):void | |
303 | + { | |
304 | + //Alert.show("IDLE"); | |
305 | + if(event.currentTarget.mx_internal::idleCounter == 480){ | |
306 | + Alert.show("Time out happened"); | |
307 | + ExternalInterface.call("setUserIdleValue"); | |
308 | + } | |
309 | + } | |
310 | + private function loadLoginView():void | |
311 | + { | |
312 | + unloadApp(); | |
313 | + if(_cmpLoginView != null && _cmpLoginView.visible == false) | |
314 | + { | |
315 | + _cmpLoginView.visible = true; | |
316 | + return; | |
317 | + } | |
318 | + | |
319 | + //Intially load the appstartup_ost.xml for the Static UI data | |
320 | + OSTManager.getInstance().addEventListener(Event.COMPLETE,onOstComplete); | |
321 | + var uri:String = CommonUtil.getRelativeContentUri(APPSTARTUP_OST_XML ); | |
322 | + OSTManager.getInstance().load(uri); | |
323 | + } | |
324 | + | |
325 | + | |
326 | + | |
327 | + private function unloadLoginView():void | |
328 | + { | |
329 | + if(_cmpLoginView) | |
330 | + { | |
331 | + _cmpLoginView.visible = false; | |
332 | + removeChild(_cmpLoginView); | |
333 | + | |
334 | + _cmpLoginView = null; | |
335 | + | |
336 | + } | |
337 | + } | |
338 | + | |
339 | + /** | |
340 | + * Function implementation for IMVCContainer.getInherentMvcContext() | |
341 | + * returns the its MVC context. | |
342 | + * | |
343 | + */ | |
344 | + public function getInherentMvcContext():IMVCContext | |
345 | + { | |
346 | + return MVCContextManager.getInstance().getGlobalContext(); | |
347 | + } | |
348 | + /** | |
349 | + * once the appstartup_ost.xml load do action proceed | |
350 | + */ | |
351 | + private function onOstComplete(objEvent:Event):void | |
352 | + { | |
353 | + | |
354 | + OSTManager.getInstance().removeEventListener(Event.COMPLETE,onOstComplete); | |
355 | + CommonUtil.APP_LOADER_STRING = OSTManager.getInstance().getValue(StartupOSTConst.LOADING); | |
356 | + setupMVCContextManager(); | |
357 | + _cmpLoginView = new LoginView(); | |
358 | + _cmpLoginView.percentHeight = 100; | |
359 | + _cmpLoginView.percentWidth = 100; | |
360 | + _cmpLoginView.minWidth = 972; | |
361 | + _cmpLoginView.minHeight = 648; | |
362 | + addChild(_cmpLoginView); | |
363 | + | |
364 | + | |
365 | + } | |
366 | + ]]> | |
367 | + </mx:Script> | |
368 | + | |
369 | + <!-- | |
370 | + Initialize MVC Framework classes | |
371 | + --> | |
372 | + <mx:Style source="css/Global.css"/> | |
373 | + <mx:Style source="css/Toolbars.css"/> | |
374 | + <service:AIAServiceLocator id="_objRemoteService" xmlns:service="com.adam.aia.business.*" /> | |
375 | + | |
376 | + <controller:StartupFrontController id="_objFrontController" xmlns:contoller="com.adam.aia.appstartup.controller.*" /> | |
377 | + <viewlocator:LocalViewLocator id="_objViewLocator" xmlns:viewlocator="com.magic.cairngorm.view.*" /> | |
378 | + <modellocator:StartupModelLocator id="_objModelLocator" xmlns:modellocator="com.adam.aia.appstartup.model.*" /> | |
379 | + <viewhelper:AppStartupViewHelper id="_objViewHelper" xmlns:viewhelper="com.adam.aia.appstartup.view.helper.*" /> | |
380 | + | |
381 | +</mx:Application> | ... | ... |
400-SOURCECODE/AIAHTML5+FlexCB/Default.aspxPassingunamePassForOldCB
0 → 100644
1 | +<%@ Page Language="C#" AutoEventWireup="True" Inherits="_Default" Codebehind="Default.aspx.cs" %> | |
2 | + | |
3 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |
4 | + | |
5 | +<html lang="en"> | |
6 | + | |
7 | + <head> | |
8 | + <title>A.D.A.M. Interactive Anatomy</title> | |
9 | + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |
10 | + <meta http-equiv="X-UA-Compatible" content="IE=11"/> | |
11 | + | |
12 | + <script type="text/javascript"> | |
13 | + //var appVersion = 'v107'; | |
14 | + //Below code is for opening CB directly from AIAHTML5 as CB is not ready | |
15 | + //till Aug2018 and new AIAHTML5 is going live. v1018 is having the code which opens CB with user authentication | |
16 | + var appVersion = 'v1018'; | |
17 | + | |
18 | + </script> | |
19 | + | |
20 | + <script type="text/javascript" src="v1018/js/lib/jquery-1.8.1.min.js?vers=v1018"></script> | |
21 | + <script type="text/javascript" src="v1018/js/AC_OETags.js?vers=v1018"></script> | |
22 | + <script type="text/javascript" src="http://webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject2.js?vers=v1018"></script> | |
23 | + <!--<script type="text/javascript" src="v1018/js/unity3D.js?vers=v1018"></script>--> | |
24 | + <script type="text/javascript" src="v1018/js/dynamicDiv.js?vers=v1018"></script> | |
25 | + <script type="text/javascript" src="v1018/js/functions.js?vers=v1018"></script> | |
26 | + <!--<script type="text/javascript" src="v1018/history/history.js?vers=v1018"></script>--> | |
27 | + <!--<script type="text/javascript" src="v1018/js/maintenanceProperties.js?vers=v1018></script> | |
28 | + <script type="text/javascript" src="v1018/js/messagePopUp.js?vers=v1018"></script>--> | |
29 | +<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script> | |
30 | + <link rel="stylesheet" type="text/css" href="v1018/history/history.css" /> | |
31 | + | |
32 | + <style type="text/css"> | |
33 | + html { height:100%; overflow:hidden; } | |
34 | + body { margin: 0px;padding:0px; height:100%; } | |
35 | + </style> | |
36 | + | |
37 | + <script type='text/VBScript'> | |
38 | + function DetectUnityWebPlayerActiveX | |
39 | + on error resume next | |
40 | + dim tControl | |
41 | + dim res | |
42 | + res = 0 | |
43 | + set tControl = CreateObject("UnityWebPlayer.UnityWebPlayer.1") | |
44 | + if IsObject(tControl) then | |
45 | + res = 1 | |
46 | + end if | |
47 | + DetectUnityWebPlayerActiveX = res | |
48 | + end function | |
49 | + </script> | |
50 | + <script type="text/javascript"> | |
51 | + if (tempTrace == null) { function tempTrace(message) { try { if (console != null && console.log != null) { console.log(message); } } catch (e) { } } } | |
52 | + </script> | |
53 | + <script type="text/javascript"> | |
54 | + | |
55 | + function resizeFlashDivHeight() { | |
56 | + $('#flashDiv').height(window.document.body.offsetHeight); | |
57 | + }; | |
58 | + | |
59 | + window.onresize = function () { setTimeout(resizeFlashDivHeight, 250); }; | |
60 | + $(document).ready(resizeFlashDivHeight); | |
61 | + | |
62 | + function logoutUserNormal() { | |
63 | + tempTrace("Default.aspx * DEBUG logoutUserNormal()"); | |
64 | + // $.post('http://' + window.location.host + '/LogoutUser.aspx', {}, ''); | |
65 | + //return "This request will cause to Logout from the application, You will have to login again to access the application."; | |
66 | + return "Warning: You are leaving this product without logging out. If you continue, your information will be lost and your account will lock for 5 minutes."; | |
67 | + } | |
68 | + function logoutUser(evt) { | |
69 | + tempTrace("Default.aspx * DEBUG logoutUser()"); | |
70 | + if (typeof evt == 'undefined') { | |
71 | + evt = window.event; | |
72 | + } | |
73 | + tempTrace("Default.aspx * DEBUG logoutUser() evt = " + evt); | |
74 | + //if (evt && evt.clientX >= (window.event.screenX - 150) && evt.clientY >= -150 && evt.clientY <= 0) { //NOTE: Chrome did not return any clientX info. | |
75 | + if (evt && evt.clientY >= -150 && evt.clientY <= 0) { //NOTE: Chrome did not return any clientX info. | |
76 | + //$.post('http://' + window.location.host + '/LogoutUser.aspx', {}, ''); | |
77 | + return "Warning: You are leaving this product without logging out. If you continue, your information will be lost and your account will lock for 5 minutes."; | |
78 | + } | |
79 | + } | |
80 | + if (navigator.appVersion.indexOf("MSIE") != -1 && navigator.appVersion.toLowerCase().indexOf("win") != -1) { | |
81 | + window.onbeforeunload = logoutUser;//function () { return logoutUser(); }; | |
82 | + } else { | |
83 | + window.onbeforeunload = logoutUserNormal; | |
84 | + } | |
85 | + | |
86 | + // Function to check the page opener and reload the parent if openner is an iframe. | |
87 | + function checkOpener() { | |
88 | + // Check if page is loading iside an iFrame. | |
89 | + if (top != self) { | |
90 | + parent.location.reload(); | |
91 | + } | |
92 | + } | |
93 | + </script> | |
94 | + <script language="JavaScript" type="text/javascript"> | |
95 | + | |
96 | + // ----------------------------------------------------------------------------- | |
97 | + // Globals | |
98 | + // Major version of Flash required | |
99 | + var requiredMajorVersion = 10; | |
100 | + // Minor version of Flash required | |
101 | + var requiredMinorVersion = 0; | |
102 | + // Minor version of Flash required | |
103 | + var requiredRevision = 0; | |
104 | + // ----------------------------------------------------------------------------- | |
105 | + | |
106 | + //----------------- Unity Player check ---------------------- | |
107 | + function DetectUnityWebPlayer() { | |
108 | + tempTrace("Default.aspx * DEBUG DetectUnityWebPlayer()"); | |
109 | + var tInstalled = false; | |
110 | + if (navigator.appVersion.indexOf("MSIE") != -1 && navigator.appVersion.toLowerCase().indexOf("win") != -1) { | |
111 | + tInstalled = DetectUnityWebPlayerActiveX(); | |
112 | + } | |
113 | + else { | |
114 | + if (navigator.mimeTypes && navigator.mimeTypes["application/vnd.unity"]) { | |
115 | + if (navigator.mimeTypes["application/vnd.unity"].enabledPlugin && navigator.plugins && navigator.plugins["Unity Player"]) { | |
116 | + tInstalled = true; | |
117 | + } | |
118 | + } | |
119 | + } | |
120 | + return tInstalled; | |
121 | + } | |
122 | + | |
123 | + function GetUnityInstallerPath() { | |
124 | + tempTrace("Default.aspx * DEBUG GetUnityInstallerPath()"); | |
125 | + var tDownloadURL = ""; | |
126 | + var hasXpi = navigator.userAgent.toLowerCase().indexOf("firefox") != -1; | |
127 | + | |
128 | + // Use standalone installer | |
129 | + if (navigator.platform == "MacIntel") | |
130 | + tDownloadURL = "http://webplayer.unity3d.com/download_webplayer-3.x/webplayer-i386.dmg"; | |
131 | + else if (navigator.platform == "MacPPC") | |
132 | + tDownloadURL = "http://webplayer.unity3d.com/download_webplayer-3.x/webplayer-ppc.dmg"; | |
133 | + else if (navigator.platform.toLowerCase().indexOf("win") != -1) | |
134 | + tDownloadURL = "http://webplayer.unity3d.com/download_webplayer-3.x/UnityWebPlayer.exe"; | |
135 | + return tDownloadURL; | |
136 | + } | |
137 | + </script> | |
138 | + | |
139 | + </head> | |
140 | +<body> | |
141 | +<script type="text/javascript"> | |
142 | + var maintenancePropertiesJs = document.createElement('script'); | |
143 | + maintenancePropertiesJs.src = appVersion +"/js/maintenanceProperties.js?v="+new Date().getTime(); | |
144 | + var messagePopUpJs = document.createElement('script'); | |
145 | + messagePopUpJs.src = appVersion +"/js/messagePopUp.js?v="+new Date().getTime(); | |
146 | + var head = document.getElementsByTagName('head')[0]; | |
147 | + head.appendChild(maintenancePropertiesJs); | |
148 | + setTimeout(function(){ | |
149 | + head.appendChild(messagePopUpJs); | |
150 | + },100); | |
151 | +</script> | |
152 | +<div id="flashDiv" style="z-index:0"> | |
153 | + <script type="text/javascript"> | |
154 | + | |
155 | + //Below is for opening CB directly from AIAHTML5 as CB is not ready | |
156 | + //till Aug2018 and new AIAHTML5 is going live. | |
157 | + | |
158 | + var UserName = new URL(location.href).searchParams.get('un'); | |
159 | + var UserPassword = new URL(location.href).searchParams.get('up'); | |
160 | + | |
161 | + | |
162 | + var key = CryptoJS.enc.Base64.parse("MTIzNDU2NzgxMjM0NTY3OA"); | |
163 | + var iv = CryptoJS.enc.Base64.parse("EBESExQVFhcYGRobHB0eHw"); | |
164 | + | |
165 | + | |
166 | + var decryptedUserName = (CryptoJS.AES.decrypt(UserName, key, { iv: iv })).toString(CryptoJS.enc.Utf8); | |
167 | + var decryptedPassword = (CryptoJS.AES.decrypt(UserPassword, key, { iv: iv })).toString(CryptoJS.enc.Utf8); | |
168 | + | |
169 | + | |
170 | + | |
171 | + // Version check for the Flash Player that has the ability to start Player Product Install (6.0r65) | |
172 | + var hasProductInstall = DetectFlashVer(6, 0, 65); | |
173 | + | |
174 | + // alert('has Player: ' + hasProductInstall); | |
175 | + | |
176 | + // Version check based upon the values defined in globals | |
177 | + var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision); | |
178 | + | |
179 | + if (hasProductInstall && !hasRequestedVersion) { | |
180 | + // DO NOT MODIFY THE FOLLOWING FOUR LINES | |
181 | + // Location visited after installation is complete if installation is required | |
182 | + var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn"; | |
183 | + var MMredirectURL = window.location; | |
184 | + document.title = document.title.slice(0, 47) + " - Flash Player Installation"; | |
185 | + var MMdoctitle = document.title; | |
186 | + window.location.href = 'http://qa.interactiveanatomy.com/AdobePlayerDownloadLink.html'; | |
187 | + | |
188 | + } else if (hasRequestedVersion) { | |
189 | + tempTrace("Default.aspx * DEBUG hasRequestedVersion write will occur"); | |
190 | + // if we've detected an acceptable version | |
191 | + // embed the Flash Content SWF when all tests are passed | |
192 | + var params = "<%=urlParams%>"; | |
193 | + AC_FL_RunContent( | |
194 | + "src", appVersion + "/AppStartup" + params, | |
195 | + "width", "100%", | |
196 | + "height", "100%", | |
197 | + "align", "middle", | |
198 | + "id", "flashObject", | |
199 | + "quality", "high", | |
200 | + "bgcolor", "#000000", | |
201 | + "name", "flashObject", | |
202 | + "wmode", "opaque", | |
203 | + "allowScriptAccess", "sameDomain", | |
204 | + "type", "application/x-shockwave-flash", | |
205 | + "pluginspage", "http://www.adobe.com/go/getflashplayer", | |
206 | + "FlashVars","username="+decryptedUserName+"&password="+decryptedPassword | |
207 | + | |
208 | + ); | |
209 | + } else | |
210 | + { | |
211 | + // THE CODE ON 15th MACHINE flash is too old or we can't detect the plugin | |
212 | + tempTrace("Default.aspx * DEBUG objNewInstall write will occur"); | |
213 | + window.location.href = 'http://qa.interactiveanatomy.com/AdobePlayerDownloadLink.html'; | |
214 | + | |
215 | + | |
216 | + } | |
217 | + | |
218 | + </script> | |
219 | +<noscript><p>JavaScript is not activated.</p></noscript> | |
220 | + | |
221 | +</div> | |
222 | + <!-- Here Test --> | |
223 | + <div id="myConsole" runat="server"></div> | |
224 | +</body> | |
225 | +</html> | |
0 | 226 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5+FlexCB/ShadowedTextToggleButtonBar.as
0 → 100644
1 | +package com.magic.component | |
2 | +{ | |
3 | + import flash.events.MouseEvent; | |
4 | + | |
5 | + import mx.controls.ToggleButtonBar; | |
6 | + import mx.core.ClassFactory; | |
7 | + import mx.core.IFlexDisplayObject; | |
8 | + import mx.core.IUITextField; | |
9 | + import mx.styles.CSSStyleDeclaration; | |
10 | + import flash.events.KeyboardEvent; | |
11 | + import mx.styles.StyleManager; | |
12 | + | |
13 | + public class ShadowedTextToggleButtonBar extends ToggleButtonBar | |
14 | + { | |
15 | + private var navItemFactory:ClassFactory; | |
16 | + | |
17 | + private var buttonStyleNameProp:String = "buttonStyleName"; | |
18 | + | |
19 | + /** | |
20 | + * @private | |
21 | + * Name of style used to specify buttonStyleName. | |
22 | + * Overridden by TabBar. | |
23 | + */ | |
24 | + private var firstButtonStyleNameProp:String = "firstButtonStyleName"; | |
25 | + | |
26 | + /** | |
27 | + * @private | |
28 | + * Name of style used to specify buttonStyleName. | |
29 | + * Overridden by TabBar. | |
30 | + */ | |
31 | + private var lastButtonStyleNameProp:String = "lastButtonStyleName"; | |
32 | + | |
33 | + /** | |
34 | + * @private | |
35 | + * Name of style used to specify buttonWidth. | |
36 | + * Overridden by TabBar. | |
37 | + */ | |
38 | + private var buttonWidthProp:String = "buttonWidth"; | |
39 | + | |
40 | + /** | |
41 | + * @private | |
42 | + * Name of style used to specify buttonHeight. | |
43 | + * Overridden by TabBar. | |
44 | + */ | |
45 | + private var buttonHeightProp:String = "buttonHeight"; | |
46 | + | |
47 | + private var recalcButtonWidths:Boolean = false; | |
48 | + | |
49 | + /** | |
50 | + * @private | |
51 | + * Flag indicating whether buttons heights should be recalculated. | |
52 | + */ | |
53 | + private var recalcButtonHeights:Boolean = false; | |
54 | + | |
55 | + public function ShadowedTextToggleButtonBar() | |
56 | + { | |
57 | + //TODO: implement function | |
58 | + super(); | |
59 | + navItemFactory = new ClassFactory(ShadowedTextButton); | |
60 | + } | |
61 | + // overridden to block keyboard temporarily. | |
62 | + override protected function keyDownHandler(event:KeyboardEvent):void | |
63 | + { | |
64 | + //do nothing | |
65 | + } | |
66 | + override protected function createNavItem(strLabel:String, clsIcon:Class=null):IFlexDisplayObject | |
67 | + { | |
68 | + var newButton:ShadowedTextButton = ShadowedTextButton(navItemFactory.newInstance()); | |
69 | + // Set tabEnabled to false so individual buttons don't get focus. | |
70 | + newButton.focusEnabled = false; | |
71 | + | |
72 | + var buttonStyleName:String = getStyle(buttonStyleNameProp); | |
73 | + var firstButtonStyleName:String = getStyle(firstButtonStyleNameProp); | |
74 | + var lastButtonStyleName:String = getStyle(lastButtonStyleNameProp); | |
75 | + | |
76 | + if (!buttonStyleName) | |
77 | + buttonStyleName = "ButtonBarButton"; | |
78 | + if (!firstButtonStyleName) | |
79 | + firstButtonStyleName = buttonStyleName; | |
80 | + if (!lastButtonStyleName) | |
81 | + lastButtonStyleName = buttonStyleName; | |
82 | + | |
83 | + var n:int = numChildren; | |
84 | + if (n == 0) | |
85 | + { | |
86 | + newButton.styleName = buttonStyleName; | |
87 | + } | |
88 | + else | |
89 | + { | |
90 | + if(strLabel!="Curriculum Builder"){ | |
91 | + newButton.styleName = lastButtonStyleName; | |
92 | + //var CBuilderButton:ShadowedTextButton = ShadowedTextButton(getChildAt(6)); | |
93 | + //CBuilderButton.setStyle("color","#000000"); | |
94 | + } | |
95 | + else{ | |
96 | + newButton.setStyle("color","#0000FF"); | |
97 | + } | |
98 | + var cssStyleDeclaration:CSSStyleDeclaration = | |
99 | + StyleManager.getStyleDeclaration("." + lastButtonStyleName); | |
100 | + | |
101 | + if (cssStyleDeclaration && | |
102 | + !cssStyleDeclaration.getStyle("focusRoundedCorners")) | |
103 | + { | |
104 | + newButton.setStyle("focusRoundedCorners", "tr br"); | |
105 | + } | |
106 | + | |
107 | + // Refresh the skins for the last button that was in this position. | |
108 | + var first:Boolean = (n == 1); | |
109 | + var lastButton:ShadowedTextButton = ShadowedTextButton(getChildAt(first ? 0 : n - 1)); | |
110 | + | |
111 | + if (first) | |
112 | + { | |
113 | + lastButton.styleName = firstButtonStyleName; | |
114 | + cssStyleDeclaration = | |
115 | + StyleManager.getStyleDeclaration("." + firstButtonStyleName); | |
116 | + | |
117 | + if (cssStyleDeclaration && | |
118 | + !cssStyleDeclaration.getStyle("focusRoundedCorners")) | |
119 | + { | |
120 | + lastButton.setStyle("focusRoundedCorners", "tl bl"); | |
121 | + } | |
122 | + } | |
123 | + else | |
124 | + { | |
125 | + lastButton.styleName = buttonStyleName; | |
126 | + cssStyleDeclaration = | |
127 | + StyleManager.getStyleDeclaration("." + buttonStyleName); | |
128 | + | |
129 | + if (cssStyleDeclaration && | |
130 | + !cssStyleDeclaration.getStyle("focusRoundedCorners")) | |
131 | + { | |
132 | + lastButton.setStyle("focusRoundedCorners", ""); | |
133 | + } | |
134 | + } | |
135 | + | |
136 | + // lastButton.changeSkins(); | |
137 | + lastButton.invalidateDisplayList(); | |
138 | + } | |
139 | + | |
140 | + newButton.label = strLabel; | |
141 | + // newButton.setStyle("icon", icon); | |
142 | + newButton.minHeight=35; | |
143 | + //newButton.maxHeight=38; | |
144 | + newButton.addEventListener(MouseEvent.CLICK, clickHandler); | |
145 | + | |
146 | + this.addChild(newButton); | |
147 | + | |
148 | + recalcButtonWidths = recalcButtonHeights = true; | |
149 | + newButton.addTextFilter(); | |
150 | + return newButton; | |
151 | + } | |
152 | + | |
153 | + } | |
154 | +} | |
0 | 155 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.API/AIAHTML5.API.csproj
... | ... | @@ -120,6 +120,7 @@ |
120 | 120 | <Compile Include="Constants\ErrorHelper.cs" /> |
121 | 121 | <Compile Include="Controllers\AdminAccessController.cs" /> |
122 | 122 | <Compile Include="Controllers\AuthenticateController.cs" /> |
123 | + <Compile Include="Controllers\ClientController.cs" /> | |
123 | 124 | <Compile Include="Controllers\ConfigurationController.cs" /> |
124 | 125 | <Compile Include="Controllers\ForgotUserController.cs" /> |
125 | 126 | <Compile Include="Controllers\LabExerciseController.cs" /> |
... | ... | @@ -131,6 +132,7 @@ |
131 | 132 | <DependentUpon>Global.asax</DependentUpon> |
132 | 133 | </Compile> |
133 | 134 | <Compile Include="Models\DBModel.cs" /> |
135 | + <Compile Include="Models\IPValidator.cs" /> | |
134 | 136 | <Compile Include="Models\LabExercise.cs" /> |
135 | 137 | <Compile Include="Models\PixelLocator.cs" /> |
136 | 138 | <Compile Include="Models\User.cs" /> |
... | ... | @@ -146,7 +148,9 @@ |
146 | 148 | </ItemGroup> |
147 | 149 | <ItemGroup> |
148 | 150 | <Content Include="Logs\AIALogs.log" /> |
149 | - <Content Include="packages.config" /> | |
151 | + <Content Include="packages.config"> | |
152 | + <SubType>Designer</SubType> | |
153 | + </Content> | |
150 | 154 | <None Include="Properties\Settings.settings"> |
151 | 155 | <Generator>SettingsSingleFileGenerator</Generator> |
152 | 156 | <LastGenOutput>Settings.Designer.cs</LastGenOutput> | ... | ... |
400-SOURCECODE/AIAHTML5.API/Constants/AIAConstants.cs
... | ... | @@ -44,5 +44,44 @@ namespace AIAHTML5.API.Constants |
44 | 44 | public const string LAB_EXERCISE_SAVE_SUCCESS = "Your lab exercise attempt is saved."; |
45 | 45 | public const string LAB_EXERCISE_SAVE_FAILURE = "We are unable to save your lab exercise attempt, please try again."; |
46 | 46 | public const string SAVED_LAB_EXERCISE_NOT_FOUND = "Saved Lab Exercise not found."; |
47 | + public const string VALIDATED_CLIENT = "Valid Client."; | |
48 | + public const string INVALID_CLIENT = "InValid Client."; | |
49 | + public const string MSG_NOT_AUTHORIZE_SITE_USER = "User is not authorized."; | |
50 | + | |
51 | + | |
52 | + public const string STATUS_OK = "ok"; | |
53 | + public const string STATUS_NOT_OK = "notok"; | |
54 | + public const int NO_ERROR = 0; | |
55 | + public const int RUN_TIME_EXCEPTION = 10000; | |
56 | + | |
57 | + public const String SITE_IP = "siteIP"; | |
58 | + public const String SITE_ID = "siteId"; | |
59 | + public const String TERM_CONDITION = "termCondition"; | |
60 | + public const String MODESTY_SETTING = "modestySetting"; | |
61 | + | |
62 | + public const Byte SUPER_ADMIN = 1; | |
63 | + public const Byte GENERAL_ADMIN = 2; | |
64 | + public const String USER_NAME = "username"; | |
65 | + public const String PASSWORD = "password"; | |
66 | + public const String ERROR_ID = "errorId"; | |
67 | + public const String LICENSE_ACTIVE = "licenceActive"; | |
68 | + public const String ACCOUNT_NUMBER = "accountNumber"; | |
69 | + public const String LICENSE_TYPE_ID = "licenceTypeId"; | |
70 | + public const String TOTAL_LOGIN = "totalLogin"; | |
71 | + public const String EDITION_ID = "editionId"; | |
72 | + public const String URL_REFERER = "urlReferer"; | |
73 | + public const String USER_CONTEXT = "usercontext"; | |
74 | + | |
75 | + public const Byte CONCURRENT_USER = 6; | |
76 | + public const Byte SINGLE_USER = 5; | |
77 | + public const Byte SITE_USER = 9; | |
78 | + | |
79 | + public const String LICENSE_ID = "licenseId"; | |
80 | + public const Byte LICENSE_TYPE_CONCURRENT = 1; | |
81 | + public const Byte LICENSE_TYPE_SINGLE = 2; | |
82 | + public const Byte LICENSE_TYPE_SITE = 3; | |
83 | + public const Byte LICENSE_TYPE_RESELLER = 4; | |
84 | + public const Byte LICENSE_TYPE_TEST = 5; | |
85 | + | |
47 | 86 | } |
48 | 87 | } |
49 | 88 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.API/Constants/DBConstants.cs
... | ... | @@ -29,6 +29,10 @@ namespace AIAHTML5.API.Constants |
29 | 29 | public const string GET_BLOCKED_USERS_BY_USER_TYPE = "GetBlockedUserByUserType"; |
30 | 30 | public const string SAVE_LAB_EXERCISE_ATTEMPT = "usp_SaveLabExerciseAttempts"; |
31 | 31 | public const string GET_LAB_EXERCISE = "GetLabExcerciseByUserId"; |
32 | + public const string GET_LICENSEINFO_BY_SITE_URL = "GetLicenseIdBySiteUrl"; | |
33 | + public const string GET_LICENSE_BY_SITE_ID = "GetLicenseBySiteId"; | |
34 | + public const string GET_LICENSE_EDITIONS_FOR_MODESTY = "GetLicenseEditionsForModesty"; | |
35 | + public const string GET_PRODUCT_FEATURES = "GetProductFeatures"; | |
32 | 36 | |
33 | 37 | } |
34 | 38 | } |
35 | 39 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.API/Controllers/ClientController.cs
0 → 100644
1 | +using AIAHTML5.API.Constants; | |
2 | +using System; | |
3 | +using System.Collections.Generic; | |
4 | +using System.Linq; | |
5 | +using System.Net; | |
6 | +using System.Net.Http; | |
7 | +using System.Web.Http; | |
8 | +using AIAHTML5.API.Models; | |
9 | +using Newtonsoft.Json.Linq; | |
10 | +using System.Data.SqlClient; | |
11 | +using System.Collections; | |
12 | +using log4net; | |
13 | +using Newtonsoft.Json; | |
14 | + | |
15 | +namespace AIAHTML5.API.Controllers | |
16 | +{ | |
17 | + public class ClientController : ApiController | |
18 | + { | |
19 | + // GET api/client | |
20 | + public IEnumerable<string> Get() | |
21 | + { | |
22 | + return new string[] { "value1", "value2" }; | |
23 | + } | |
24 | + | |
25 | + // GET api/client/5 | |
26 | + public string Get(int id) | |
27 | + { | |
28 | + return "value"; | |
29 | + } | |
30 | + | |
31 | + // POST api/client | |
32 | + public HttpResponseMessage Post([FromBody]JObject siteUrl) | |
33 | + { | |
34 | + ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); | |
35 | + logger.Debug("inside POST in ClientController"); | |
36 | + try{ | |
37 | + HttpResponseMessage response = null; | |
38 | + if (siteUrl != null) | |
39 | + { | |
40 | + if (!string.IsNullOrEmpty(siteUrl["siteIP"].ToString()) && !string.IsNullOrEmpty(siteUrl["remoteIPAddress"].ToString()) && !string.IsNullOrEmpty(siteUrl["accountNumber"].ToString()) && !string.IsNullOrEmpty(siteUrl["edition"].ToString())) | |
41 | + | |
42 | + { | |
43 | + | |
44 | + int siteId = AIAHTML5.API.Models.Users.ValidateLicenseSiteIP(siteUrl["siteIP"].ToString(), siteUrl["remoteIPAddress"].ToString(), siteUrl["accountNumber"].ToString(), Convert.ToByte(siteUrl["edition"].ToString())); | |
45 | + if (siteId > 0) | |
46 | + { | |
47 | + dynamic uerinfo = AIAHTML5.API.Models.Users.ValidateSiteLogin(siteUrl["siteIP"].ToString(), siteUrl["accountNumber"].ToString(), siteUrl["urlReferer"].ToString(), siteUrl["edition"].ToString(), siteId); | |
48 | + if (uerinfo != null) | |
49 | + response = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(JsonConvert.SerializeObject(uerinfo)) }; | |
50 | + else | |
51 | + { | |
52 | + //ser user = new User(); | |
53 | + //user.LoginFailureCauseId = AIAConstants.INVALID_CLIENT; | |
54 | + //dynamic userinfo = user; | |
55 | + //response = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(userInfo) }; | |
56 | + | |
57 | + response = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(AIAConstants.INVALID_CLIENT) }; | |
58 | + } | |
59 | + } | |
60 | + | |
61 | + else | |
62 | + { | |
63 | + response = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(AIAConstants.MSG_NOT_AUTHORIZE_SITE_USER) }; | |
64 | + | |
65 | + } | |
66 | + } | |
67 | + } | |
68 | + else | |
69 | + { | |
70 | + response = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = null }; | |
71 | + | |
72 | + } | |
73 | + | |
74 | + return response; | |
75 | + } | |
76 | + catch (SqlException e) | |
77 | + { | |
78 | + | |
79 | + logger.Fatal("SqlException occured for siteUrl =" + siteUrl["siteIP"].ToString() + " and siteUrl= " + siteUrl["siteIP"].ToString() + " & accountNumber = " + siteUrl["accountNumber"].ToString() + " &edition = " + siteUrl["edition"].ToString() + "Exception= " + e.Message + ", STACKTRACE: " + e.StackTrace); | |
80 | + | |
81 | + ArrayList supportMailList = UserUtility.GetSupportMailList(); | |
82 | + string mailSubject = AIAConstants.SQL_CONNECTION_ERROR_MAIL_SUBJECT; | |
83 | + string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; | |
84 | + UserUtility.SendEmailForException(0, supportMailList, "", mailSubject, mailBody,true,siteUrl); | |
85 | + | |
86 | + return new HttpResponseMessage { StatusCode = HttpStatusCode.InternalServerError, Content = new StringContent(AIAConstants.SQL_CONNECTION_ERROR) }; | |
87 | + } | |
88 | + catch (Exception e) | |
89 | + { | |
90 | + | |
91 | + logger.Fatal("Exception occured for loginId =" + siteUrl["siteIP"].ToString() + " and siteUrl= " + siteUrl["siteIP"].ToString() + " & accountNumber = " + siteUrl["accountNumber"].ToString() + " &edition = " + siteUrl["edition"].ToString() + "Exception= " + e.Message + ", STACKTRACE: " + e.StackTrace); | |
92 | + ArrayList supportMailList = UserUtility.GetSupportMailList(); | |
93 | + string mailSubject = AIAConstants.EXCEPTION_IN_AIAHTML5_MAIL_SUBJECT; | |
94 | + string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; | |
95 | + UserUtility.SendEmailForException(0, supportMailList, "", mailSubject, mailBody, true, siteUrl); | |
96 | + | |
97 | + return new HttpResponseMessage { StatusCode = HttpStatusCode.InternalServerError, Content = new StringContent(AIAConstants.EXCEPTION_OCCURED) }; | |
98 | + | |
99 | + } | |
100 | + } | |
101 | + | |
102 | + // PUT api/client/5 | |
103 | + public void Put(int id, [FromBody]string value) | |
104 | + { | |
105 | + } | |
106 | + | |
107 | + // DELETE api/client/5 | |
108 | + public void Delete(int id) | |
109 | + { | |
110 | + } | |
111 | + } | |
112 | +} | ... | ... |
400-SOURCECODE/AIAHTML5.API/Models/DBModel.cs
... | ... | @@ -980,5 +980,151 @@ namespace AIAHTML5.API.Models |
980 | 980 | // return 1; |
981 | 981 | |
982 | 982 | //} |
983 | + | |
984 | + internal DataTable GetLicenseInfoBySiteUrl(string licenceAccount, int editionId) | |
985 | + { | |
986 | + logger.Debug(" inside GetLicenseIdBySiteUrl for UserId= " + editionId + ",licenceAccount = " + licenceAccount); | |
987 | + | |
988 | + // SiteUrl siteUrl = null; | |
989 | + DataTable dt = null; | |
990 | + | |
991 | + SqlConnection conn = new SqlConnection(dbConnectionString); | |
992 | + SqlCommand cmd = new SqlCommand(); | |
993 | + cmd.Connection = conn; | |
994 | + cmd.CommandText = DBConstants.GET_LICENSEINFO_BY_SITE_URL; | |
995 | + cmd.CommandType = CommandType.StoredProcedure; | |
996 | + cmd.Parameters.AddWithValue("@sLicenseAccount", licenceAccount); | |
997 | + cmd.Parameters.AddWithValue("@iEditionId", editionId); | |
998 | + SqlDataAdapter da = new SqlDataAdapter(); | |
999 | + da.SelectCommand = cmd; | |
1000 | + dt = new DataTable(); | |
1001 | + da.Fill(dt); | |
1002 | + | |
1003 | + //if (dt != null && dt.Rows.Count > 0) | |
1004 | + //{ | |
1005 | + // siteUrl = new SiteUrl(); | |
1006 | + // foreach (DataRow dr in dt.Rows) | |
1007 | + // { | |
1008 | + // siteUrl.Id = Convert.ToInt32(dr["Id"]); | |
1009 | + // siteUrl.SiteIp = dr["SiteIp"].ToString(); | |
1010 | + // siteUrl.SiteIpTo = dr["SiteIpTo"].ToString(); | |
1011 | + // siteUrl.SiteMasterIpTo = dr["SiteMasterIpTo"].ToString(); | |
1012 | + // siteUrl.IsMaster = Convert.ToInt32(dr["IsMaster"]); | |
1013 | + | |
1014 | + // } | |
1015 | + //} | |
1016 | + | |
1017 | + //return siteUrl; | |
1018 | + return dt; | |
1019 | + } | |
1020 | + | |
1021 | + internal DataTable GetLicenseBySiteId(int siteId) | |
1022 | + { | |
1023 | + logger.Debug(" inside GetLicenseBySiteId for siteId= " + siteId); | |
1024 | + | |
1025 | + // SiteUrl siteUrl = null; | |
1026 | + DataTable dt = null; | |
1027 | + | |
1028 | + SqlConnection conn = new SqlConnection(dbConnectionString); | |
1029 | + SqlCommand cmd = new SqlCommand(); | |
1030 | + cmd.Connection = conn; | |
1031 | + cmd.CommandText = DBConstants.GET_LICENSE_BY_SITE_ID; | |
1032 | + cmd.CommandType = CommandType.StoredProcedure; | |
1033 | + cmd.Parameters.AddWithValue("@sSiteId", siteId); | |
1034 | + | |
1035 | + SqlDataAdapter da = new SqlDataAdapter(); | |
1036 | + da.SelectCommand = cmd; | |
1037 | + dt = new DataTable(); | |
1038 | + da.Fill(dt); | |
1039 | + | |
1040 | + //if (dt != null && dt.Rows.Count > 0) | |
1041 | + //{ | |
1042 | + // siteUrl = new SiteUrl(); | |
1043 | + // foreach (DataRow dr in dt.Rows) | |
1044 | + // { | |
1045 | + // siteUrl.Id = Convert.ToInt32(dr["Id"]); | |
1046 | + // siteUrl.SiteIp = dr["SiteIp"].ToString(); | |
1047 | + // siteUrl.SiteIpTo = dr["SiteIpTo"].ToString(); | |
1048 | + // siteUrl.SiteMasterIpTo = dr["SiteMasterIpTo"].ToString(); | |
1049 | + // siteUrl.IsMaster = Convert.ToInt32(dr["IsMaster"]); | |
1050 | + | |
1051 | + // } | |
1052 | + //} | |
1053 | + | |
1054 | + //return siteUrl; | |
1055 | + return dt; | |
1056 | + | |
1057 | + } | |
1058 | + internal DataTable GetEditionsForModesty(int licenceId, int buildingLevelAcc) | |
1059 | + { | |
1060 | + logger.Debug(" inside GetEditionsForModesty for licenceId= " + licenceId); | |
1061 | + | |
1062 | + // SiteUrl siteUrl = null; | |
1063 | + DataTable dt = null; | |
1064 | + | |
1065 | + SqlConnection conn = new SqlConnection(dbConnectionString); | |
1066 | + SqlCommand cmd = new SqlCommand(); | |
1067 | + cmd.Connection = conn; | |
1068 | + cmd.CommandText = DBConstants.GET_LICENSE_EDITIONS_FOR_MODESTY; | |
1069 | + cmd.CommandType = CommandType.StoredProcedure; | |
1070 | + cmd.Parameters.AddWithValue("@iLicenseId", licenceId); | |
1071 | + cmd.Parameters.AddWithValue("@iBuildingLevelId", buildingLevelAcc); | |
1072 | + | |
1073 | + SqlDataAdapter da = new SqlDataAdapter(); | |
1074 | + da.SelectCommand = cmd; | |
1075 | + dt = new DataTable(); | |
1076 | + da.Fill(dt); | |
1077 | + | |
1078 | + //if (dt != null && dt.Rows.Count > 0) | |
1079 | + //{ | |
1080 | + // siteUrl = new SiteUrl(); | |
1081 | + // foreach (DataRow dr in dt.Rows) | |
1082 | + // { | |
1083 | + // siteUrl.Id = Convert.ToInt32(dr["Id"]); | |
1084 | + // siteUrl.SiteIp = dr["SiteIp"].ToString(); | |
1085 | + // siteUrl.SiteIpTo = dr["SiteIpTo"].ToString(); | |
1086 | + // siteUrl.SiteMasterIpTo = dr["SiteMasterIpTo"].ToString(); | |
1087 | + // siteUrl.IsMaster = Convert.ToInt32(dr["IsMaster"]); | |
1088 | + | |
1089 | + // } | |
1090 | + //} | |
1091 | + | |
1092 | + //return siteUrl; | |
1093 | + return dt; | |
1094 | + } | |
1095 | + | |
1096 | + internal Hashtable GetEditionFeatures(byte editionId) | |
1097 | + { | |
1098 | + Hashtable objFeatures = new Hashtable(); | |
1099 | + | |
1100 | + DataTable dt = null; | |
1101 | + | |
1102 | + SqlConnection conn = new SqlConnection(dbConnectionString); | |
1103 | + SqlCommand cmd = new SqlCommand(); | |
1104 | + cmd.Connection = conn; | |
1105 | + cmd.CommandText = DBConstants.GET_PRODUCT_FEATURES; | |
1106 | + cmd.CommandType = CommandType.StoredProcedure; | |
1107 | + cmd.Parameters.AddWithValue("@EditionId", editionId); | |
1108 | + | |
1109 | + SqlDataAdapter da = new SqlDataAdapter(); | |
1110 | + da.SelectCommand = cmd; | |
1111 | + dt = new DataTable(); | |
1112 | + da.Fill(dt); | |
1113 | + | |
1114 | + if (dt != null && dt.Rows.Count > 0) | |
1115 | + { | |
1116 | + foreach (DataRow dr in dt.Rows) | |
1117 | + { | |
1118 | + if (Convert.ToBoolean(dr["IsActive"])) | |
1119 | + { | |
1120 | + objFeatures.Add(dr["Id"], dr["Title"]); | |
1121 | + } | |
1122 | + | |
1123 | + | |
1124 | + } | |
1125 | + } | |
1126 | + | |
1127 | + return objFeatures; | |
1128 | + } | |
983 | 1129 | } |
984 | 1130 | } |
985 | 1131 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.API/Models/IPValidator.cs
0 → 100644
1 | +using System; | |
2 | +using System.Collections.Generic; | |
3 | +using System.Linq; | |
4 | +using System.Text.RegularExpressions; | |
5 | +using System.Web; | |
6 | + | |
7 | +namespace AIAHTML5.API.Models | |
8 | +{ | |
9 | + public class IPValidator | |
10 | + { | |
11 | + public static Double ChangeIpToDouble(String ipVal) | |
12 | + { | |
13 | + String[] resultArray = new String[20]; | |
14 | + //Array resultArray ; | |
15 | + String n = ipVal; | |
16 | + String[] array = n.Split('.'); | |
17 | + for (int i = 0; i < array.Length; i++) | |
18 | + { | |
19 | + if (array[i].Length == 1) | |
20 | + { | |
21 | + array[i] = "00" + array[i]; | |
22 | + resultArray[i] = (array[i]); | |
23 | + } | |
24 | + else if (array[i].Length == 2) | |
25 | + { | |
26 | + array[i] = "0" + array[i]; | |
27 | + resultArray[i] = (array[i]); | |
28 | + } | |
29 | + else | |
30 | + { | |
31 | + array[i] = array[i]; | |
32 | + resultArray[i] = (array[i]); | |
33 | + } | |
34 | + } | |
35 | + | |
36 | + //String theContent = resultArray.ToString(); | |
37 | + String theContent = ""; | |
38 | + | |
39 | + for (int i = 0; i <= resultArray.Length - 1; i++) | |
40 | + { | |
41 | + if (!String.IsNullOrEmpty(resultArray[i])) | |
42 | + theContent += resultArray[i]; | |
43 | + } | |
44 | + theContent = (theContent == "" ? "0" : theContent); | |
45 | + | |
46 | + return Convert.ToDouble(theContent); | |
47 | + //return theContent; | |
48 | + } | |
49 | + | |
50 | + | |
51 | + public static bool ValidateIP(String strSiteIp, String strSiteIPTo, String strSiteMasterIPTo, String strIPToValidate, int intIsMaster) | |
52 | + { | |
53 | + Double dblSiteIP = 0; | |
54 | + Double dblSiteIPTo = 0; | |
55 | + Double dblSiteMIPTo = 0; | |
56 | + Double dblIPToValidate = 0; | |
57 | + bool boolReturn = false; | |
58 | + | |
59 | + try | |
60 | + { | |
61 | + // Convert all IP to double values | |
62 | + dblSiteIP = ChangeIpToDouble(((strSiteIp == "" || IsNumericIP(strSiteIp) == false) ? "0" : strSiteIp)); | |
63 | + dblSiteIPTo = ChangeIpToDouble(((strSiteIPTo == "" || IsNumericIP(strSiteIPTo) == false) ? "0" : strSiteIPTo)); | |
64 | + dblSiteMIPTo = ChangeIpToDouble(((strSiteMasterIPTo == "" || IsNumericIP(strSiteMasterIPTo) == false) ? "0" : strSiteMasterIPTo)); | |
65 | + dblIPToValidate = ChangeIpToDouble(((strIPToValidate == "" || IsNumericIP(strIPToValidate) == false) ? "0" : strIPToValidate)); | |
66 | + | |
67 | + if (intIsMaster > 0) | |
68 | + { | |
69 | + if (dblSiteIP == dblIPToValidate) | |
70 | + boolReturn = true; | |
71 | + | |
72 | + if (dblSiteIPTo > 0 && dblSiteMIPTo > 0) | |
73 | + { | |
74 | + if (isBetween(dblIPToValidate, dblSiteIPTo, dblSiteMIPTo) == true) | |
75 | + { | |
76 | + boolReturn = true; | |
77 | + } | |
78 | + } | |
79 | + else if (dblSiteIPTo > 0) | |
80 | + { | |
81 | + if (dblSiteIPTo == dblIPToValidate) | |
82 | + boolReturn = true; | |
83 | + } | |
84 | + else if (dblSiteMIPTo > 0) | |
85 | + { | |
86 | + if (dblSiteMIPTo == dblIPToValidate) | |
87 | + boolReturn = true; | |
88 | + } | |
89 | + } | |
90 | + else | |
91 | + { | |
92 | + if (dblSiteIP > 0 && dblSiteIPTo > 0) | |
93 | + { | |
94 | + if (isBetween(dblIPToValidate, dblSiteIP, dblSiteIPTo) == true) | |
95 | + { | |
96 | + boolReturn = true; | |
97 | + } | |
98 | + } | |
99 | + else if (dblSiteIP > 0) | |
100 | + { | |
101 | + if (dblSiteIP == dblIPToValidate) | |
102 | + boolReturn = true; | |
103 | + } | |
104 | + else if (dblSiteIPTo > 0) | |
105 | + { | |
106 | + if (dblSiteIPTo == dblIPToValidate) | |
107 | + boolReturn = true; | |
108 | + } | |
109 | + } | |
110 | + | |
111 | + return boolReturn; | |
112 | + } | |
113 | + catch (Exception objExp) | |
114 | + { | |
115 | + return false; | |
116 | + } | |
117 | + } | |
118 | + | |
119 | + public static String FormatURLToIP(String strURL) | |
120 | + { | |
121 | + strURL = strURL.Replace("www.", ""); | |
122 | + strURL = strURL.Replace("http://", ""); | |
123 | + strURL = strURL.Replace("https://", ""); | |
124 | + strURL = strURL.Replace("/", ""); | |
125 | + | |
126 | + if (strURL.IndexOf(":") != -1) | |
127 | + { | |
128 | + char[] delimiters = new char[] { ':' }; | |
129 | + string[] parts = strURL.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); | |
130 | + strURL = parts[0]; | |
131 | + } | |
132 | + | |
133 | + return strURL; | |
134 | + } | |
135 | + | |
136 | + /// <summary> | |
137 | + /// | |
138 | + /// </summary> | |
139 | + /// <param name="iNum"></param> | |
140 | + /// <param name="iFrom"></param> | |
141 | + /// <param name="iTo"></param> | |
142 | + /// <returns></returns> | |
143 | + private static bool isBetween(Double iNum, Double iFrom, Double iTo) | |
144 | + { | |
145 | + if (iNum == 0) | |
146 | + return false; | |
147 | + | |
148 | + if (iNum >= iFrom && iNum <= iTo) | |
149 | + { | |
150 | + return true; | |
151 | + } | |
152 | + return false; | |
153 | + } | |
154 | + | |
155 | + /// <summary> | |
156 | + /// | |
157 | + /// </summary> | |
158 | + /// <param name="text"></param> | |
159 | + /// <returns></returns> | |
160 | + public static bool IsNumericIP(string text) | |
161 | + { | |
162 | + //Regex objRegex = new Regex(@"^[-+]?[0-9]*\.?[0-9]+$"); | |
163 | + Regex objRegex = new Regex(@"^[-+]?[0-9]*\.?[0-9]+$*\.?[0-9]+$*\.?[0-9]+$*\.?[0-9]+$"); | |
164 | + | |
165 | + return objRegex.IsMatch(text); | |
166 | + } | |
167 | + } | |
168 | +} | |
0 | 169 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.API/Models/User.cs
... | ... | @@ -14,6 +14,11 @@ namespace AIAHTML5.API.Models |
14 | 14 | public string EmailId { get; set; } |
15 | 15 | public string LoginId { get; set; } |
16 | 16 | public string Password { get; set; } |
17 | + public string AccountNumber { get; set; } | |
18 | + public byte LicenseTypeId { get; set; } | |
19 | + public bool Modesty { get; set; } | |
20 | + public bool ModestyMode { get; set; } | |
21 | + public Hashtable objEditionFeatures { get; set; } | |
17 | 22 | public int? SecurityQuestionId { get; set; } |
18 | 23 | public string SecurityAnswer { get; set; } |
19 | 24 | public int? CreatorId { get; set; } |
... | ... | @@ -49,6 +54,8 @@ namespace AIAHTML5.API.Models |
49 | 54 | public const string RESELLER = "Reseller"; |
50 | 55 | public const string TEST_ACCOUNT = "Test Account"; |
51 | 56 | public const string SITE_USER = "Site User"; |
57 | + | |
58 | + | |
52 | 59 | } |
53 | 60 | |
54 | 61 | public enum UserType |
... | ... | @@ -113,4 +120,18 @@ namespace AIAHTML5.API.Models |
113 | 120 | public string AccountNumber { get; set; } |
114 | 121 | public DateTime LoginTime { get; set; } |
115 | 122 | } |
123 | + | |
124 | + public class SiteUrl | |
125 | + { | |
126 | + public int Id { get; set; } | |
127 | + public string SiteIp { get; set; } | |
128 | + public string SiteIpTo { get; set; } | |
129 | + public string SiteMasterIpTo { get; set; } | |
130 | + public int IsMaster { get; set; } | |
131 | + | |
132 | + | |
133 | + | |
134 | + | |
135 | + } | |
136 | + | |
116 | 137 | } |
117 | 138 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.API/Models/UserUtility.cs
... | ... | @@ -16,6 +16,7 @@ using System.Configuration; |
16 | 16 | using System.Collections; |
17 | 17 | using System.Data; |
18 | 18 | using System.Reflection; |
19 | +using Newtonsoft.Json.Linq; | |
19 | 20 | |
20 | 21 | namespace AIAHTML5.API.Models |
21 | 22 | { |
... | ... | @@ -216,10 +217,10 @@ namespace AIAHTML5.API.Models |
216 | 217 | } |
217 | 218 | } |
218 | 219 | |
219 | - public static bool SendEmailForException(int userid, ArrayList mailToList, string sender, string mailSubject = "", string mailBody = "") | |
220 | + public static bool SendEmailForException(int userid, ArrayList mailToList, string sender, string mailSubject = "", string mailBody = "", bool isMailForClentSite=false, JObject info=null) | |
220 | 221 | { |
221 | 222 | ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); |
222 | - logger.Debug("Inside SendEmail with userid =" + userid); | |
223 | + // logger.Debug("Inside SendEmail with userid =" + userid); | |
223 | 224 | |
224 | 225 | try |
225 | 226 | { |
... | ... | @@ -235,8 +236,14 @@ namespace AIAHTML5.API.Models |
235 | 236 | lstToAddress.Add(email); |
236 | 237 | } |
237 | 238 | |
238 | - emailMessage = "Unable to process request for userid: " + userid; | |
239 | - | |
239 | + if (isMailForClentSite && info!=null) | |
240 | + { | |
241 | + emailMessage = "Unable to process request for siteUrl =" + info["siteIP"].ToString() + " and siteIP= " + info["siteIP"].ToString() + " & accountNumber = " + info["accountNumber"].ToString() + " &edition = " + info["edition"].ToString() ; | |
242 | + } | |
243 | + else | |
244 | + { | |
245 | + emailMessage = "Unable to process request for userid: " + userid; | |
246 | + } | |
240 | 247 | |
241 | 248 | |
242 | 249 | if (string.IsNullOrEmpty(sender)) |
... | ... | @@ -264,7 +271,13 @@ namespace AIAHTML5.API.Models |
264 | 271 | return true; |
265 | 272 | } |
266 | 273 | catch (Exception ex) |
267 | - { | |
274 | + { | |
275 | + if (isMailForClentSite){ | |
276 | + logger.Fatal("exception in SendEmail for siteUrl =" + info["siteIP"].ToString()+ ". msg= " + ex.Message + ", stacktrace= " + ex.StackTrace); | |
277 | + | |
278 | + } | |
279 | + | |
280 | + else | |
268 | 281 | logger.Fatal("exception in SendEmail for userid"+userid+ ". msg= " + ex.Message + ", stacktrace= " + ex.StackTrace); |
269 | 282 | return false; |
270 | 283 | } | ... | ... |
400-SOURCECODE/AIAHTML5.API/Models/Users.cs
... | ... | @@ -11,7 +11,9 @@ using AIAHTML5.API.Models; |
11 | 11 | using Newtonsoft.Json; |
12 | 12 | using System.Collections; |
13 | 13 | using System.Data.SqlClient; |
14 | - | |
14 | +using System.Net; | |
15 | +using System.Data; | |
16 | +using AIAHTML5.API.Constants; | |
15 | 17 | namespace AIAHTML5.API.Models |
16 | 18 | { |
17 | 19 | public class Users |
... | ... | @@ -22,22 +24,22 @@ namespace AIAHTML5.API.Models |
22 | 24 | logger.Debug("inside AuthenticateUser for loginId =" + credentials["username"].ToString() + " and password= " + credentials["password"].ToString()); |
23 | 25 | dynamic userDetails = null; |
24 | 26 | |
25 | - | |
26 | - User user = DBModel.GetUserDetailsByLoginId(credentials["username"].ToString()); | |
27 | - //string userDetails = DBModel.GetUserDetailsByLoginId2(credentials["username"].ToString()); | |
28 | 27 | |
29 | - if (user != null) | |
30 | - { | |
31 | - logger.Debug("userDetails.loginId= " + user.LoginId); // .loginId); | |
28 | + User user = DBModel.GetUserDetailsByLoginId(credentials["username"].ToString()); | |
29 | + //string userDetails = DBModel.GetUserDetailsByLoginId2(credentials["username"].ToString()); | |
30 | + | |
31 | + if (user != null) | |
32 | + { | |
33 | + logger.Debug("userDetails.loginId= " + user.LoginId); // .loginId); | |
34 | + | |
35 | + userDetails = JsonConvert.SerializeObject(user); | |
36 | + } | |
37 | + else | |
38 | + { | |
39 | + userDetails = AIAConstants.USER_NOT_FOUND; | |
40 | + } | |
32 | 41 | |
33 | - userDetails = JsonConvert.SerializeObject(user); | |
34 | - } | |
35 | - else | |
36 | - { | |
37 | - userDetails = AIAConstants.USER_NOT_FOUND; | |
38 | - } | |
39 | 42 | |
40 | - | |
41 | 43 | return userDetails; |
42 | 44 | } |
43 | 45 | |
... | ... | @@ -45,32 +47,32 @@ namespace AIAHTML5.API.Models |
45 | 47 | { |
46 | 48 | logger.Debug(" inside GetUserByEmail for emailId = " + userInfo["emailId"]); |
47 | 49 | |
48 | - | |
49 | - User objUser = DBModel.GetUserDetailsByEmailId(userInfo["emailId"].ToString()); | |
50 | 50 | |
51 | - //dynamic userDetails; | |
51 | + User objUser = DBModel.GetUserDetailsByEmailId(userInfo["emailId"].ToString()); | |
52 | + | |
53 | + //dynamic userDetails; | |
54 | + | |
55 | + if (objUser != null) | |
56 | + { | |
57 | + logger.Debug("userDetails.loginId= " + objUser.LoginId); | |
58 | + //return userDetails = JsonConvert.SerializeObject(objUser); | |
59 | + return objUser; | |
60 | + } | |
61 | + else | |
62 | + { | |
63 | + return AIAConstants.USER_NOT_FOUND; | |
64 | + } | |
52 | 65 | |
53 | - if (objUser!= null) | |
54 | - { | |
55 | - logger.Debug("userDetails.loginId= " + objUser.LoginId); | |
56 | - //return userDetails = JsonConvert.SerializeObject(objUser); | |
57 | - return objUser; | |
58 | - } | |
59 | - else | |
60 | - { | |
61 | - return AIAConstants.USER_NOT_FOUND; | |
62 | - } | |
63 | - | |
64 | 66 | |
65 | 67 | } |
66 | 68 | |
67 | 69 | internal static dynamic UpdatePassword(Newtonsoft.Json.Linq.JObject userInfo, string sLoginId, string sEmailId) |
68 | 70 | { |
69 | - | |
70 | - int result = DBModel.UpdateUserPassword(userInfo, sLoginId, sEmailId); | |
71 | 71 | |
72 | - return result; | |
73 | - | |
72 | + int result = DBModel.UpdateUserPassword(userInfo, sLoginId, sEmailId); | |
73 | + | |
74 | + return result; | |
75 | + | |
74 | 76 | } |
75 | 77 | |
76 | 78 | internal static dynamic UpdateLicenseTerm(Newtonsoft.Json.Linq.JObject userLicenseInfo) |
... | ... | @@ -83,13 +85,13 @@ namespace AIAHTML5.API.Models |
83 | 85 | |
84 | 86 | userInfo.Add("accountNumber", accountNumber); |
85 | 87 | |
86 | - | |
87 | - result = DBModel.UpdateLicenseTermStatus(accountNumber); | |
88 | 88 | |
89 | - if (result < 0) | |
90 | - { | |
91 | - logger.Fatal("Unable to update LicenseTermAccepted status for AccountNumber =" + accountNumber); | |
92 | - } | |
89 | + result = DBModel.UpdateLicenseTermStatus(accountNumber); | |
90 | + | |
91 | + if (result < 0) | |
92 | + { | |
93 | + logger.Fatal("Unable to update LicenseTermAccepted status for AccountNumber =" + accountNumber); | |
94 | + } | |
93 | 95 | |
94 | 96 | return result; |
95 | 97 | } |
... | ... | @@ -106,10 +108,10 @@ namespace AIAHTML5.API.Models |
106 | 108 | logger.Debug("inside getUserDetails for loginId =" + credentials["username"].ToString() + " and password= " + credentials["password"].ToString()); |
107 | 109 | User userDetails = null; |
108 | 110 | |
109 | - | |
110 | - userDetails = DBModel.GetUserDetailsByLoginId(credentials["username"].ToString()); | |
111 | 111 | |
112 | - return userDetails; | |
112 | + userDetails = DBModel.GetUserDetailsByLoginId(credentials["username"].ToString()); | |
113 | + | |
114 | + return userDetails; | |
113 | 115 | } |
114 | 116 | |
115 | 117 | internal static void getLicenseIdForThisUser(int userId, out int licenseId, out int editionId) |
... | ... | @@ -120,18 +122,18 @@ namespace AIAHTML5.API.Models |
120 | 122 | licenseId = 0; |
121 | 123 | editionId = 0; |
122 | 124 | |
123 | - | |
124 | 125 | |
125 | - DBModel objModel = new DBModel(); | |
126 | - Hashtable licenseEditionHash = objModel.GetLicenseDetailByUserId(userId); | |
127 | 126 | |
128 | - if (licenseEditionHash.ContainsKey(AIAConstants.LICENSE_KEY_ID)) | |
129 | - licenseId = Convert.ToInt32(licenseEditionHash[AIAConstants.LICENSE_KEY_ID]); | |
127 | + DBModel objModel = new DBModel(); | |
128 | + Hashtable licenseEditionHash = objModel.GetLicenseDetailByUserId(userId); | |
129 | + | |
130 | + if (licenseEditionHash.ContainsKey(AIAConstants.LICENSE_KEY_ID)) | |
131 | + licenseId = Convert.ToInt32(licenseEditionHash[AIAConstants.LICENSE_KEY_ID]); | |
132 | + | |
133 | + if (licenseEditionHash.ContainsKey(AIAConstants.EDITION_KEY_ID)) | |
134 | + editionId = Convert.ToInt32(licenseEditionHash[AIAConstants.EDITION_KEY_ID]); | |
135 | + | |
130 | 136 | |
131 | - if (licenseEditionHash.ContainsKey(AIAConstants.EDITION_KEY_ID)) | |
132 | - editionId = Convert.ToInt32(licenseEditionHash[AIAConstants.EDITION_KEY_ID]); | |
133 | - | |
134 | - | |
135 | 137 | } |
136 | 138 | |
137 | 139 | internal static int insertLoginDetails(int userId) |
... | ... | @@ -139,12 +141,12 @@ namespace AIAHTML5.API.Models |
139 | 141 | logger.Debug("inside insertLoginDetails for UserId =" + userId); |
140 | 142 | |
141 | 143 | int result = 0; |
142 | - | |
143 | - DBModel objModel = new DBModel(); | |
144 | 144 | |
145 | - result = objModel.InsertLoginDetails(userId); | |
146 | - | |
147 | - return result; | |
145 | + DBModel objModel = new DBModel(); | |
146 | + | |
147 | + result = objModel.InsertLoginDetails(userId); | |
148 | + | |
149 | + return result; | |
148 | 150 | } |
149 | 151 | |
150 | 152 | internal static bool isUSerActive(User user) |
... | ... | @@ -160,7 +162,7 @@ namespace AIAHTML5.API.Models |
160 | 162 | expirationDate = string.Empty; |
161 | 163 | bool isLicenseExpired = false; |
162 | 164 | |
163 | - if (subscriptionDetail!= null) | |
165 | + if (subscriptionDetail != null) | |
164 | 166 | { |
165 | 167 | DateTime? subscriptionValidThrough = subscriptionDetail.SubscriptionValidThrough; |
166 | 168 | if (subscriptionValidThrough != null && subscriptionValidThrough.Value.Date >= DateTime.Now.Date) |
... | ... | @@ -171,7 +173,7 @@ namespace AIAHTML5.API.Models |
171 | 173 | { |
172 | 174 | isLicenseExpired = true; |
173 | 175 | expirationDate = subscriptionDetail.SubscriptionValidThrough.Value.Date.ToString("MM/dd/yyyy").ToString(); |
174 | - } | |
176 | + } | |
175 | 177 | } |
176 | 178 | return isLicenseExpired; |
177 | 179 | } |
... | ... | @@ -182,13 +184,13 @@ namespace AIAHTML5.API.Models |
182 | 184 | |
183 | 185 | ArrayList licensedModulesList = new ArrayList(); |
184 | 186 | |
185 | - | |
186 | 187 | |
187 | - DBModel objModel = new DBModel(); | |
188 | - licensedModulesList = objModel.GetUserModulesByLicenseId(licenseId); | |
189 | - | |
190 | 188 | |
191 | - return licensedModulesList; | |
189 | + DBModel objModel = new DBModel(); | |
190 | + licensedModulesList = objModel.GetUserModulesByLicenseId(licenseId); | |
191 | + | |
192 | + | |
193 | + return licensedModulesList; | |
192 | 194 | } |
193 | 195 | |
194 | 196 | internal static int deletePastWrongAttempts(int userId) |
... | ... | @@ -197,10 +199,10 @@ namespace AIAHTML5.API.Models |
197 | 199 | |
198 | 200 | int result = 0; |
199 | 201 | |
200 | - | |
201 | - DBModel objModel = new DBModel(); | |
202 | - result = objModel.DeleteIncorrectLoginAttempts(userId); | |
203 | - return result; | |
202 | + | |
203 | + DBModel objModel = new DBModel(); | |
204 | + result = objModel.DeleteIncorrectLoginAttempts(userId); | |
205 | + return result; | |
204 | 206 | } |
205 | 207 | |
206 | 208 | internal static int checkNoOfWrongAttempts(int userId) |
... | ... | @@ -209,10 +211,10 @@ namespace AIAHTML5.API.Models |
209 | 211 | |
210 | 212 | int incorrectLoginAttemptCount = 0; |
211 | 213 | |
212 | - | |
213 | - DBModel objModel = new DBModel(); | |
214 | - incorrectLoginAttemptCount = objModel.GetIncorrectLoginAttempts(userId); | |
215 | - return incorrectLoginAttemptCount; | |
214 | + | |
215 | + DBModel objModel = new DBModel(); | |
216 | + incorrectLoginAttemptCount = objModel.GetIncorrectLoginAttempts(userId); | |
217 | + return incorrectLoginAttemptCount; | |
216 | 218 | } |
217 | 219 | |
218 | 220 | internal static int saveWrongAttemptOfUser(int userId, int previousIncorrectLoginAttempts) |
... | ... | @@ -220,18 +222,18 @@ namespace AIAHTML5.API.Models |
220 | 222 | logger.Debug("inside saveWrongAttemptofUser for UserId =" + userId); |
221 | 223 | int result = 0; |
222 | 224 | |
223 | - | |
224 | - DBModel objModel = new DBModel(); | |
225 | 225 | |
226 | - if (previousIncorrectLoginAttempts < 1) | |
227 | - { | |
228 | - result = objModel.InsertIncorrectLoginAttempts(userId); | |
229 | - } | |
230 | - else | |
231 | - { | |
232 | - result = objModel.UpdateIncorrectLoginAttempts(userId); | |
233 | - } | |
234 | - | |
226 | + DBModel objModel = new DBModel(); | |
227 | + | |
228 | + if (previousIncorrectLoginAttempts < 1) | |
229 | + { | |
230 | + result = objModel.InsertIncorrectLoginAttempts(userId); | |
231 | + } | |
232 | + else | |
233 | + { | |
234 | + result = objModel.UpdateIncorrectLoginAttempts(userId); | |
235 | + } | |
236 | + | |
235 | 237 | |
236 | 238 | return result; |
237 | 239 | } |
... | ... | @@ -241,16 +243,16 @@ namespace AIAHTML5.API.Models |
241 | 243 | logger.Debug("inside isLicenseActive for LicenseId =" + licenseId); |
242 | 244 | bool result = false; |
243 | 245 | |
244 | - DBModel objModel = new DBModel(); | |
245 | - License userLicense = objModel.GetLicenseDetailsByLicenseId(licenseId); | |
246 | + DBModel objModel = new DBModel(); | |
247 | + License userLicense = objModel.GetLicenseDetailsByLicenseId(licenseId); | |
246 | 248 | |
247 | 249 | |
248 | - if (userLicense.IsActive) | |
249 | - result = true; | |
250 | - else | |
251 | - result = false; | |
252 | - | |
253 | - return result; | |
250 | + if (userLicense.IsActive) | |
251 | + result = true; | |
252 | + else | |
253 | + result = false; | |
254 | + | |
255 | + return result; | |
254 | 256 | } |
255 | 257 | |
256 | 258 | internal static License getLicenseDetails(int licenseId) |
... | ... | @@ -259,11 +261,11 @@ namespace AIAHTML5.API.Models |
259 | 261 | |
260 | 262 | License userLicense = null; |
261 | 263 | |
262 | - | |
263 | - DBModel objModel = new DBModel(); | |
264 | - userLicense = objModel.GetLicenseDetailsByLicenseId(licenseId); | |
265 | - | |
266 | - return userLicense; | |
264 | + | |
265 | + DBModel objModel = new DBModel(); | |
266 | + userLicense = objModel.GetLicenseDetailsByLicenseId(licenseId); | |
267 | + | |
268 | + return userLicense; | |
267 | 269 | } |
268 | 270 | |
269 | 271 | internal static LicenseSubscriptionDetails getLicenseSubscriptionDetails(int licenseId) |
... | ... | @@ -272,19 +274,19 @@ namespace AIAHTML5.API.Models |
272 | 274 | |
273 | 275 | LicenseSubscriptionDetails userSubscriptionDetail = null; |
274 | 276 | |
275 | - | |
276 | - DBModel objModel = new DBModel(); | |
277 | - userSubscriptionDetail = objModel.GetLicenseSubscriptionDetailsByLicenseId(licenseId); | |
278 | - | |
277 | + | |
278 | + DBModel objModel = new DBModel(); | |
279 | + userSubscriptionDetail = objModel.GetLicenseSubscriptionDetailsByLicenseId(licenseId); | |
280 | + | |
279 | 281 | return userSubscriptionDetail; |
280 | 282 | } |
281 | 283 | |
282 | 284 | internal static void isCredentialCorrect(Newtonsoft.Json.Linq.JObject credentials, User userInfo, out bool isCorrectLoginId, out bool isCorrectPassword) |
283 | 285 | { |
284 | 286 | isCorrectLoginId = false; |
285 | - isCorrectPassword = false; | |
287 | + isCorrectPassword = false; | |
286 | 288 | |
287 | - if (userInfo.Id> 0) | |
289 | + if (userInfo.Id > 0) | |
288 | 290 | { |
289 | 291 | if (string.Equals(credentials["username"].ToString().ToUpper(), userInfo.LoginId.ToUpper())) |
290 | 292 | isCorrectLoginId = true; |
... | ... | @@ -302,10 +304,10 @@ namespace AIAHTML5.API.Models |
302 | 304 | |
303 | 305 | int result = 0; |
304 | 306 | |
305 | - | |
306 | - DBModel objModel = new DBModel(); | |
307 | - result = objModel.InsertUserLoginLog(accountNumber, failureId, null, edition, null); | |
308 | - | |
307 | + | |
308 | + DBModel objModel = new DBModel(); | |
309 | + result = objModel.InsertUserLoginLog(accountNumber, failureId, null, edition, null); | |
310 | + | |
309 | 311 | return result; |
310 | 312 | } |
311 | 313 | |
... | ... | @@ -316,21 +318,21 @@ namespace AIAHTML5.API.Models |
316 | 318 | |
317 | 319 | ArrayList arrTermsOfService = new ArrayList(); |
318 | 320 | |
319 | - DBModel objModel = new DBModel(); | |
320 | - arrTermsOfService = DBModel.GetTermsAndConditions(); | |
321 | - | |
321 | + DBModel objModel = new DBModel(); | |
322 | + arrTermsOfService = DBModel.GetTermsAndConditions(); | |
323 | + | |
322 | 324 | return arrTermsOfService; |
323 | 325 | } |
324 | 326 | |
325 | 327 | internal static ArrayList getAllModulesList() |
326 | 328 | { |
327 | 329 | logger.Debug("inside getAllModulesList"); |
328 | - ArrayList modulesList = new ArrayList (); | |
330 | + ArrayList modulesList = new ArrayList(); | |
331 | + | |
332 | + | |
333 | + DBModel objModel = new DBModel(); | |
334 | + modulesList = objModel.GetAllModules(); | |
329 | 335 | |
330 | - | |
331 | - DBModel objModel = new DBModel(); | |
332 | - modulesList = objModel.GetAllModules(); | |
333 | - | |
334 | 336 | return modulesList; |
335 | 337 | } |
336 | 338 | |
... | ... | @@ -340,19 +342,261 @@ namespace AIAHTML5.API.Models |
340 | 342 | bool isUserBlocked = false; |
341 | 343 | blockTime = new DateTime(); |
342 | 344 | |
343 | - | |
344 | - DBModel objModel = new DBModel(); | |
345 | - BlockedUser blockedUser = objModel.GetUserBlockedStatusByUserId(userId); | |
346 | 345 | |
347 | - if (blockedUser!= null) | |
346 | + DBModel objModel = new DBModel(); | |
347 | + BlockedUser blockedUser = objModel.GetUserBlockedStatusByUserId(userId); | |
348 | + | |
349 | + if (blockedUser != null) | |
350 | + { | |
351 | + blockTime = blockedUser.LoginTime; | |
352 | + isUserBlocked = true; | |
353 | + } | |
354 | + else | |
355 | + isUserBlocked = false; | |
356 | + | |
357 | + return isUserBlocked; | |
358 | + } | |
359 | + | |
360 | + | |
361 | + | |
362 | + public static int ValidateLicenseSiteIP(string strLicenseSiteIP, string remoteIpAddress, string strAccountNumber, byte editionId) | |
363 | + { | |
364 | + if (strLicenseSiteIP == null) | |
365 | + strLicenseSiteIP = remoteIpAddress; | |
366 | + | |
367 | + int intReturn = 0; | |
368 | + DBModel objDBModel = new DBModel(); | |
369 | + DataTable dtLicense = objDBModel.GetLicenseInfoBySiteUrl(strAccountNumber, (byte)editionId); | |
370 | + | |
371 | + if (dtLicense.Rows.Count > 0) | |
372 | + { | |
373 | + //strLicenseSiteIP | |
374 | + String strSiteIP = ""; | |
375 | + String strSiteIPTo = ""; | |
376 | + String strSiteMIPTo = ""; | |
377 | + | |
378 | + IPAddress[] arrHostIP = new IPAddress[2]; | |
379 | + try | |
348 | 380 | { |
349 | - blockTime = blockedUser.LoginTime; | |
350 | - isUserBlocked = true; | |
381 | + arrHostIP.SetValue(IPAddress.Parse(remoteIpAddress), 0); | |
382 | + arrHostIP.SetValue(IPAddress.Parse(strLicenseSiteIP), 1); | |
351 | 383 | } |
352 | - else | |
353 | - isUserBlocked = false; | |
354 | - | |
355 | - return isUserBlocked; | |
384 | + catch (Exception e) | |
385 | + { | |
386 | + //NOTE: if no domain name found we try to resolve by IP. | |
387 | + //arrHostIP.SetValue(Dns.GetHostAddresses(strLicenseSiteIP),1); //I SHould remove this feature it is useless | |
388 | + }; | |
389 | + | |
390 | + // foreach (IPAddress address in arrHostIP) | |
391 | + foreach (IPAddress address in arrHostIP) | |
392 | + { | |
393 | + if (address == null) | |
394 | + continue; | |
395 | + String ipStr = address.ToString(); | |
396 | + if (ipStr == "::1" || ipStr == "") continue; | |
397 | + foreach (DataRow objLicenseRow in dtLicense.Rows) | |
398 | + { | |
399 | + strSiteIP = (String.IsNullOrEmpty(objLicenseRow["SiteIp"].ToString()) ? "" : objLicenseRow["SiteIp"].ToString()); | |
400 | + strSiteIPTo = (String.IsNullOrEmpty(objLicenseRow["SiteIPTo"].ToString()) ? "" : objLicenseRow["SiteIPTo"].ToString()); | |
401 | + //if (String.IsNullOrEmpty(objLicenseRow.SiteIPTo) == false) | |
402 | + //strSiteIPTo = objLicenseRow.SiteIPTo; | |
403 | + strSiteMIPTo = (String.IsNullOrEmpty(objLicenseRow["SiteMasterIPTo"].ToString()) ? "" : objLicenseRow["SiteMasterIPTo"].ToString()); | |
404 | + if (IPValidator.ValidateIP(strSiteIP.ToLower(), strSiteIPTo.ToLower(), strSiteMIPTo.ToLower(), ipStr.ToLower(), Convert.ToInt16(objLicenseRow["IsMaster"])) == true) | |
405 | + { | |
406 | + intReturn = Convert.ToInt32(objLicenseRow["Id"]); | |
407 | + return intReturn; | |
408 | + } | |
409 | + } | |
410 | + } | |
411 | + | |
412 | + if (IPValidator.IsNumericIP(strLicenseSiteIP) == false) | |
413 | + { | |
414 | + foreach (DataRow objLicenseRow in dtLicense.Rows) | |
415 | + { | |
416 | + strSiteIP = (String.IsNullOrEmpty(objLicenseRow["SiteIp"].ToString()) ? "" : objLicenseRow["SiteIp"].ToString()); | |
417 | + // strSiteIPTo = (String.IsNullOrEmpty(objLicenseRow.SiteIPTo) ? "" : objLicenseRow.SiteIPTo); | |
418 | + if (String.IsNullOrEmpty(objLicenseRow["SiteIPTo"].ToString()) == false) | |
419 | + strSiteIPTo = objLicenseRow["SiteIPTo"].ToString(); | |
420 | + strSiteMIPTo = (String.IsNullOrEmpty(objLicenseRow["SiteMasterIPTo"].ToString()) ? "" : objLicenseRow["SiteMasterIPTo"].ToString()); | |
421 | + // if provided ip is not numeric, then compare directly with all the fields | |
422 | + if ((strLicenseSiteIP.ToLower() == strSiteIP.ToLower()) || | |
423 | + (strLicenseSiteIP.ToLower() == IPValidator.FormatURLToIP(strSiteIP).ToLower()) || | |
424 | + (strLicenseSiteIP.ToLower() == strSiteIPTo.ToLower()) || | |
425 | + (strLicenseSiteIP.ToLower() == IPValidator.FormatURLToIP(strSiteIPTo).ToLower()) || | |
426 | + (strLicenseSiteIP.ToLower() == strSiteMIPTo.ToLower()) || | |
427 | + (strLicenseSiteIP.ToLower() == IPValidator.FormatURLToIP(strSiteMIPTo).ToLower())) | |
428 | + { | |
429 | + intReturn = Convert.ToInt32(objLicenseRow["Id"]); | |
430 | + return intReturn; | |
431 | + } | |
432 | + } | |
433 | + } | |
434 | + } | |
435 | + return intReturn; | |
436 | + } | |
437 | + | |
438 | + public static User ValidateSiteLogin(String strSiteIP, String strAcccountNumber, String strUrlReferer, string strEdition, int intSiteId) | |
439 | + { | |
440 | + Int32 intUserId = 0; | |
441 | + bool isExpired = false; | |
442 | + User userInfo = null; | |
443 | + //try { | |
444 | + Int16 intErrorID = ErrorHelper.E_NO_ERROR; | |
445 | + String strStatus = AIAConstants.STATUS_OK; | |
446 | + | |
447 | + int intLicenseId = 0; | |
448 | + int intEditionId = Convert.ToInt16(strEdition); | |
449 | + | |
450 | + DateTime dtLogDate = DateTime.Now; | |
451 | + //strSiteIP = (String)objRequest.GetData(AIAConstants.SITE_IP); | |
452 | + //strAcccountNumber = (String)objRequest.GetData(AIAConstants.ACCOUNT_NUMBER); | |
453 | + //intEditionId = Convert.ToInt16(objRequest.GetData(AIAConstants.EDITION_ID)); | |
454 | + //strUrlReferer = (String)objRequest.GetData(AIAConstants.URL_REFERER); | |
455 | + //strEdition = (String)objRequest.GetData(AIAConstants.EDITION_ID); | |
456 | + //intSiteId = (Int32)objRequest.GetData(AIAConstants.SITE_ID); | |
457 | + //AdminDAL.AdminDal.GetLicenseBySiteIdDataTable dtLicense = new ADAM.AIA50.AdminDAL.AdminDal.GetLicenseBySiteIdDataTable(); | |
458 | + if (string.IsNullOrEmpty(strAcccountNumber)) | |
459 | + { | |
460 | + //----logAuthenticationTryForAccountNumber(strAcccountNumber, dtLogDate, ErrorHelper.ACCOUNT_NUMBER_NOT_NULL, strSiteIP, strEdition, strUrlReferer); | |
461 | + //intErrorID = ErrorHelper.E_ACCOUNT_NUMBER_NOT_NULL; | |
462 | + //strStatus = AIAConstants.STATUS_NOT_OK; | |
463 | + | |
464 | + userInfo.LoginFailureCauseId = ErrorHelper.E_ACCOUNT_NUMBER_NOT_NULL; | |
465 | + } | |
466 | + else if (string.IsNullOrEmpty(strEdition)) | |
467 | + { | |
468 | + strEdition = "0"; | |
469 | + //----logAuthenticationTryForAccountNumber(strAcccountNumber, dtLogDate, ErrorHelper.EDITION_ID_NOT_NULL, strSiteIP, strEdition, strUrlReferer); | |
470 | + //intErrorID = ErrorHelper.E_EDITION_ID_NOT_NULL; | |
471 | + //strStatus = AIAConstants.STATUS_NOT_OK; | |
472 | + userInfo.LoginFailureCauseId = ErrorHelper.E_EDITION_ID_NOT_NULL; | |
473 | + | |
474 | + } | |
475 | + else | |
476 | + { | |
477 | + DBModel objDBModel = new DBModel(); | |
478 | + DataTable dtLicense = objDBModel.GetLicenseBySiteId(intSiteId); | |
479 | + if (dtLicense.Rows.Count > 0) | |
480 | + { | |
481 | + //foreach (DataRow licRow in dtLicense.Rows) | |
482 | + //{ | |
483 | + DataRow licRow = dtLicense.Rows[0]; | |
484 | + //isExpired = LicenseHelper.IsLicenseExpired(licRow["Id"]); | |
485 | + userInfo = new User(); | |
486 | + userInfo.LicenseInfo = AIAHTML5.API.Models.Users.getLicenseDetails(Convert.ToInt32(licRow["Id"])); | |
487 | + | |
488 | + if (userInfo.LicenseInfo != null) | |
489 | + { | |
490 | + //05.3 get licenseSubscription details | |
491 | + userInfo.LicenseSubscriptions = AIAHTML5.API.Models.Users.getLicenseSubscriptionDetails( userInfo.LicenseInfo.Id); | |
492 | + | |
493 | + //05.4 check the License expiration irespective of either user is active or not because on AIA | |
494 | + //we shows the License expiration message for inactive users too | |
495 | + | |
496 | + | |
497 | + if (userInfo.LicenseSubscriptions != null) | |
498 | + { | |
499 | + DateTime? subscriptionValidThrough = userInfo.LicenseSubscriptions.SubscriptionValidThrough; | |
500 | + if (subscriptionValidThrough != null && subscriptionValidThrough.Value.Date >= DateTime.Now.Date) | |
501 | + { | |
502 | + isExpired = false; | |
503 | + } | |
504 | + else | |
505 | + { | |
506 | + isExpired = true; | |
507 | + } | |
508 | + } | |
509 | + | |
510 | + | |
511 | + | |
512 | + if (!isExpired && Convert.ToBoolean(licRow["IsActive"]) == true) | |
513 | + { | |
514 | + //User objUserContext = new User(); | |
515 | + userInfo.Id = 0; | |
516 | + userInfo.FirstName = licRow["LicenseeFirstName"].ToString(); | |
517 | + userInfo.LastName = licRow["LicenseeLastName"].ToString(); | |
518 | + userInfo.UserTypeId = AIAConstants.SITE_USER; | |
519 | + if (licRow["EmailId"].ToString() != null) | |
520 | + { | |
521 | + userInfo.EmailId = licRow["EmailId"].ToString(); | |
522 | + } | |
523 | + else | |
524 | + { | |
525 | + userInfo.EmailId = null; | |
526 | + } | |
527 | + userInfo.AccountNumber = strAcccountNumber; | |
528 | + userInfo.EditionId = (Byte)intEditionId; | |
529 | + userInfo.LicenseTypeId = (byte)licRow["LicenseTypeId"]; | |
530 | + userInfo.LicenseId = Convert.ToInt32(licRow["Id"]); | |
531 | + userInfo.LoginId = ""; | |
532 | + userInfo.Modesty = (bool)licRow["IsModesty"]; | |
533 | + //Retreive ModestyMode | |
534 | + userInfo.ModestyMode = false; | |
535 | + | |
536 | + intLicenseId = Convert.ToInt32(licRow["Id"]); | |
537 | + | |
538 | + | |
539 | + DataTable dtblEditionForModesty = new DBModel().GetEditionsForModesty(userInfo.LicenseId, 0); | |
540 | + //This table result set should return always have 0 or 1 record if modesty mode is present. | |
541 | + foreach (DataRow drEditionForModesty in dtblEditionForModesty.Rows) | |
542 | + { | |
543 | + if ((bool)drEditionForModesty["IsModesty"]) | |
544 | + { | |
545 | + userInfo.Modesty = true; | |
546 | + userInfo.ModestyMode = true; | |
547 | + } | |
548 | + } | |
549 | + | |
550 | + // get edition features details | |
551 | + userInfo.objEditionFeatures = objDBModel.GetEditionFeatures((Byte)intEditionId); | |
552 | + | |
553 | + | |
554 | + | |
555 | + if (intLicenseId > 0) | |
556 | + userInfo.Modules = getModuleListByLicenseId(intLicenseId); | |
557 | + else | |
558 | + userInfo.Modules = getAllModulesList(); | |
559 | + | |
560 | + // objResponse.AddData(LoginConst.USER_CONTEXT, objUserContext); | |
561 | + | |
562 | + | |
563 | + // Hashtable arrModuleList = LicenseHelper.GetInstance().GetAllModuleByLicenseId(objLicenseRow.Id); | |
564 | + //if (arrModuleList[9].Equals(true)) { | |
565 | + // SessionManager.GetInstance().AddModSession("ModuleNameIP10", "IP10"); | |
566 | + //} | |
567 | + | |
568 | + //logAuthenticationTryForAccountNumber(strAcccountNumber, dtLogDate, 0, strSiteIP, strEdition, strUrlReferer); | |
569 | + } | |
570 | + else | |
571 | + { | |
572 | + // logAuthenticationTryForAccountNumber(strAcccountNumber, dtLogDate, ErrorHelper.LICENSE_INACTIVE, strSiteIP, Convert.ToString(intEditionId), strUrlReferer); | |
573 | + // intErrorID = ErrorHelper.E_LICENCE_IS_INACTIVE; | |
574 | + // strStatus = AIAConstants.STATUS_NOT_OK; | |
575 | + userInfo.LoginFailureCauseId = ErrorHelper.LICENSE_INACTIVE; | |
576 | + } | |
577 | + } | |
578 | + else | |
579 | + { | |
580 | + | |
581 | + // intErrorID = ErrorHelper.E_EDITION_NOT_LINKED_WITH_SITE; | |
582 | + // strStatus = AIAConstants.STATUS_NOT_OK; | |
583 | + userInfo.LoginFailureCauseId = ErrorHelper.E_EDITION_NOT_LINKED_WITH_SITE; | |
584 | + } | |
585 | + //} | |
586 | + } | |
587 | + } | |
588 | + //objResponse.ErrorCode = intErrorID; | |
589 | + //objResponse.Status = strStatus; | |
590 | + //objResponse.ErrorDesc = ErrorHelper.GetInstance().GetErrorDescriptionHelper(intErrorID).ToString(); | |
591 | + //} catch (Exception objExp) { | |
592 | + // objResponse.Status = GlobalConstant.STATUS_NOT_OK; | |
593 | + // objResponse.ErrorCode = GlobalConstant.RUN_TIME_EXCEPTION; | |
594 | + // objResponse.strErrorDesc = objExp.Message; | |
595 | + //} | |
596 | + //if (isExpired != null && (bool)isExpired["result"]) | |
597 | + // objResponse.strErrorDesc = objResponse.strErrorDesc.Replace("{0}", (string)isExpired["date"]); | |
598 | + //return intUserId; | |
599 | + return userInfo; | |
356 | 600 | } |
357 | 601 | } |
358 | 602 | } |
359 | 603 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.Web/AIAHTML5.Web.csproj
... | ... | @@ -45202,7 +45202,8 @@ |
45202 | 45202 | <Content Include="content\scripts\js\custom\main.js" /> |
45203 | 45203 | <Content Include="content\data\json\da\vocab\Swedish\cm_dat_vocabterm_3.json" /> |
45204 | 45204 | <None Include="content\data\json\le\qz_dat_ca.json" /> |
45205 | - <Content Include="index.html" /> | |
45205 | + <Content Include="index.aspx" /> | |
45206 | + <Content Include="index1.html" /> | |
45206 | 45207 | <Content Include="libs\angular-drag-and-drop-lists.js" /> |
45207 | 45208 | <Content Include="libs\angular-ui\css\slider.css" /> |
45208 | 45209 | <Content Include="libs\angular-ui\js\slider.js" /> |
... | ... | @@ -45445,6 +45446,20 @@ |
45445 | 45446 | <HintPath>..\packages\log4net.2.0.7\lib\net45-full\log4net.dll</HintPath> |
45446 | 45447 | <Private>True</Private> |
45447 | 45448 | </Reference> |
45449 | + <Reference Include="System" /> | |
45450 | + <Reference Include="System.Data" /> | |
45451 | + <Reference Include="System.Drawing" /> | |
45452 | + <Reference Include="System.Web" /> | |
45453 | + <Reference Include="System.Xml" /> | |
45454 | + </ItemGroup> | |
45455 | + <ItemGroup> | |
45456 | + <Compile Include="index.aspx.cs"> | |
45457 | + <DependentUpon>index.aspx</DependentUpon> | |
45458 | + <SubType>ASPXCodeBehind</SubType> | |
45459 | + </Compile> | |
45460 | + <Compile Include="index.aspx.designer.cs"> | |
45461 | + <DependentUpon>index.aspx</DependentUpon> | |
45462 | + </Compile> | |
45448 | 45463 | </ItemGroup> |
45449 | 45464 | <PropertyGroup> |
45450 | 45465 | <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> | ... | ... |
400-SOURCECODE/AIAHTML5.Web/Web.config
400-SOURCECODE/AIAHTML5.Web/app/controllers/HomeController.js
... | ... | @@ -92,6 +92,18 @@ function ($rootScope, $scope, Modules, $log, $location, $timeout, DataService, A |
92 | 92 | userLicenseId: 0, |
93 | 93 | licenseeAccountNumber: null |
94 | 94 | }; |
95 | + | |
96 | + $rootScope.siteUrlInfo = { | |
97 | + siteIP: null, | |
98 | + remoteIPAddress:null, | |
99 | + status: null, | |
100 | + accountNumber: null, | |
101 | + edition: null, | |
102 | + urlReferer: null, | |
103 | + calsCreds: null, | |
104 | + userId: null, | |
105 | + password:null | |
106 | + } | |
95 | 107 | $rootScope.userData; |
96 | 108 | $rootScope.userModules; |
97 | 109 | $rootScope.passwordMismatchMessage; |
... | ... | @@ -121,27 +133,32 @@ function ($rootScope, $scope, Modules, $log, $location, $timeout, DataService, A |
121 | 133 | |
122 | 134 | } |
123 | 135 | |
124 | - | |
136 | + | |
125 | 137 | $rootScope.initializeAIA = function () { |
126 | - | |
127 | - if (navigator.cookieEnabled) { | |
128 | - | |
129 | - $rootScope.isLoading = false; | |
138 | + if (params != null && params != undefined && params!="") { | |
130 | 139 | |
131 | - var url = $location.url(); | |
140 | + $scope.ValidateClientSiteUrl(); | |
141 | + } | |
132 | 142 | |
133 | - //unblock user | |
134 | - if (url.indexOf('?unb:') != -1) { | |
143 | + else { | |
144 | + if (navigator.cookieEnabled) { | |
135 | 145 | |
136 | - $rootScope.isVisibleLogin = true; | |
137 | - $rootScope.UnblockUser(); | |
138 | - } | |
139 | - else if (url.indexOf('?em:') != -1) { | |
146 | + $rootScope.isLoading = false; | |
140 | 147 | |
141 | - $rootScope.isVisibleLogin = false; | |
142 | - $rootScope.isVisibleResetPass = true; | |
143 | - } | |
144 | - else { | |
148 | + var url = $location.url(); | |
149 | + | |
150 | + //unblock user | |
151 | + if (url.indexOf('?unb:') != -1) { | |
152 | + | |
153 | + $rootScope.isVisibleLogin = true; | |
154 | + $rootScope.UnblockUser(); | |
155 | + } | |
156 | + else if (url.indexOf('?em:') != -1) { | |
157 | + | |
158 | + $rootScope.isVisibleLogin = false; | |
159 | + $rootScope.isVisibleResetPass = true; | |
160 | + } | |
161 | + else { | |
145 | 162 | |
146 | 163 | $rootScope.isVisibleLogin = true; |
147 | 164 | $rootScope.isVisibleResetPass = false; |
... | ... | @@ -152,7 +169,7 @@ function ($rootScope, $scope, Modules, $log, $location, $timeout, DataService, A |
152 | 169 | AuthenticateAlreadyLoggedInUser(); |
153 | 170 | } |
154 | 171 | var isRememberChecked = $rootScope.getLocalStorageValue('isRememberMeChecked'); |
155 | - | |
172 | + | |
156 | 173 | if ($rootScope.getLocalStorageValue('isRememberMeChecked') != "" && sessionStorage.getItem("loginSession") == null) { |
157 | 174 | sessionStorage.setItem("loginSession", "true"); |
158 | 175 | } |
... | ... | @@ -162,17 +179,18 @@ function ($rootScope, $scope, Modules, $log, $location, $timeout, DataService, A |
162 | 179 | $rootScope.userInfo = { username: $rootScope.getLocalStorageValue('RememberMeLoginId'), password: $rootScope.getLocalStorageValue('RememberMePassword'), rememberChk: true }; |
163 | 180 | }, 800); |
164 | 181 | } |
182 | + } | |
165 | 183 | } |
166 | - } | |
167 | - | |
168 | - else { | |
169 | - | |
170 | - $rootScope.isVisibleLogin = true; | |
171 | 184 | |
172 | - $rootScope.promptUserForCookies(); | |
185 | + else { | |
186 | + | |
187 | + $rootScope.isVisibleLogin = true; | |
188 | + | |
189 | + $rootScope.promptUserForCookies(); | |
190 | + } | |
191 | + | |
192 | + $rootScope.getConfigurationValues(); | |
173 | 193 | } |
174 | - | |
175 | - $rootScope.getConfigurationValues(); | |
176 | 194 | } |
177 | 195 | $rootScope.getConfigurationValues = function () |
178 | 196 | { |
... | ... | @@ -381,6 +399,271 @@ function ($rootScope, $scope, Modules, $log, $location, $timeout, DataService, A |
381 | 399 | |
382 | 400 | } |
383 | 401 | |
402 | + | |
403 | + $scope.ValidateClientSiteUrl = function () { | |
404 | + | |
405 | + debugger | |
406 | + var siteInfo = params.split('&'); | |
407 | + | |
408 | + for (var i = 0; i < siteInfo.length; i++) { | |
409 | + debugger; | |
410 | + if (isCalsCredantialForSIte == "True") { | |
411 | + var paramInfo = siteInfo[i].split('='); | |
412 | + if (paramInfo[0] == 'calsCredantial') { | |
413 | + | |
414 | + $rootScope.siteUrlInfo.calsCreds = paramInfo[1]; | |
415 | + console.log("$rootScope.siteUrlInfo.calsCreds" + $rootScope.siteUrlInfo.calsCreds); | |
416 | + } | |
417 | + else if (paramInfo[0] == 'username') { | |
418 | + | |
419 | + $rootScope.siteUrlInfo.username = paramInfo[1]; | |
420 | + console.log("$rootScope.siteUrlInfo.username" + $rootScope.siteUrlInfo.username); | |
421 | + } | |
422 | + else if (paramInfo[0] == 'password') { | |
423 | + | |
424 | + $rootScope.siteUrlInfo.password = paramInfo[1]; | |
425 | + console.log("$rootScope.siteUrlInfo.password " + $rootScope.siteUrlInfo.password); | |
426 | + } | |
427 | + | |
428 | + $rootScope.userInfo.username = $rootScope.siteUrlInfo.username; | |
429 | + $rootScope.userInfo.password = $rootScope.siteUrlInfo.password; | |
430 | + console.log("$rootScope.userInfo.username" + $rootScope.userInfo.username + " $rootScope.userInfo.password" + $rootScope.userInfo.password); | |
431 | + | |
432 | + | |
433 | + } | |
434 | + else { | |
435 | + var paramInfo = siteInfo[i].split('='); | |
436 | + if (paramInfo[0] == 'siteIP') { | |
437 | + | |
438 | + $rootScope.siteUrlInfo.siteIP = paramInfo[1]; | |
439 | + console.log("$rootScope.siteUrlInfo.siteIP=" + $rootScope.siteUrlInfo.siteIP); | |
440 | + } | |
441 | + else if (paramInfo[0] == 'accountNumber') { | |
442 | + | |
443 | + $rootScope.siteUrlInfo.accountNumber = paramInfo[1]; | |
444 | + console.log("$rootScope.siteUrlInfo.accountNumber=" + $rootScope.siteUrlInfo.accountNumber); | |
445 | + } | |
446 | + else if (paramInfo[0] == 'edition') { | |
447 | + | |
448 | + $rootScope.siteUrlInfo.edition = paramInfo[1]; | |
449 | + console.log("$rootScope.siteUrlInfo.siteIP=" + $rootScope.siteUrlInfo.siteIP); | |
450 | + } | |
451 | + else if (paramInfo[0] == 'urlReferer') { | |
452 | + | |
453 | + $rootScope.siteUrlInfo.urlReferer = paramInfo[1]; | |
454 | + console.log("$rootScope.siteUrlInfo.siteIP" + $rootScope.siteUrlInfo.siteIP); | |
455 | + } | |
456 | + else if (paramInfo[0] == 'remoteIPAddress') { | |
457 | + | |
458 | + $rootScope.siteUrlInfo.remoteIPAddress = paramInfo[1]; | |
459 | + console.log("$rootScope.siteUrlInfo.remoteIPAddress" + $rootScope.siteUrlInfo.remoteIPAddress); | |
460 | + } | |
461 | + | |
462 | + | |
463 | + } | |
464 | + } | |
465 | + if (isCalsCredantialForSIte == "True") { | |
466 | + $rootScope.AuthenticateUser($rootScope.userInfo); | |
467 | + } | |
468 | + else { | |
469 | + | |
470 | + | |
471 | + console.log($rootScope.siteUrlInfo); | |
472 | + | |
473 | + AuthenticationService.validateClientSite($rootScope.siteUrlInfo) | |
474 | + .then( | |
475 | + | |
476 | + function (result) { | |
477 | + debugger; | |
478 | + console.log(result); | |
479 | + if (result != null) { | |
480 | + | |
481 | + | |
482 | + console.log(result); | |
483 | + if (result == LoginConstants.INVALID_CLIENT) { | |
484 | + $rootScope.isVisibleLogin = true; | |
485 | + $rootScope.errorMessage = LoginConstants.INVALID_CLIENT; | |
486 | + $("#messageModal").modal('show'); | |
487 | + } | |
488 | + else if (result == LoginConstants.MSG_NOT_AUTHORIZE_SITE_USER) { | |
489 | + $rootScope.isVisibleLogin = true; | |
490 | + $rootScope.errorMessage = LoginConstants.MSG_NOT_AUTHORIZE_SITE_USER; | |
491 | + $("#messageModal").modal('show'); | |
492 | + } | |
493 | + | |
494 | + else if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_ACCOUNT_NUMBER_NOT_NULL) { | |
495 | + $rootScope.isVisibleLogin = true; | |
496 | + $rootScope.errorMessage = LoginMessageConstants.E_ACCOUNT_NUMBER_NOT_NULL; | |
497 | + $("#messageModal").modal('show'); | |
498 | + } | |
499 | + else if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_EDITION_ID_NOT_NULL) { | |
500 | + $rootScope.isVisibleLogin = true; | |
501 | + $rootScope.errorMessage = LoginMessageConstants.E_EDITION_ID_NOT_NULL; | |
502 | + $("#messageModal").modal('show'); | |
503 | + } | |
504 | + else if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.E_EDITION_NOT_LINKED_WITH_SITE) { | |
505 | + $rootScope.isVisibleLogin = true; | |
506 | + $rootScope.errorMessage = LoginMessageConstants.E_EDITION_NOT_LINKED_WITH_SITE; | |
507 | + $("#messageModal").modal('show'); | |
508 | + } | |
509 | + else if (result.LoginFailureCauseId != undefined && result.LoginFailureCauseId.toString() == LoginConstants.LICENSE_INACTIVE) { | |
510 | + $rootScope.isVisibleLogin = true; | |
511 | + $rootScope.errorMessage = LoginMessageConstants.LICENSE_INACTIVE_MESSAGE; | |
512 | + $("#messageModal").modal('show'); | |
513 | + } | |
514 | + | |
515 | + | |
516 | + else { | |
517 | + if (typeof result.FirstName != undefined || result.FirstName != "" || result.FirstName != null) { | |
518 | + //code for modesty setting | |
519 | + if (result.LicenseInfo != null) { | |
520 | + if (result.Modesty) { | |
521 | + $rootScope.isModestyOn = true; | |
522 | + $rootScope.isModestyOff = false; | |
523 | + localStorage.setItem("globalModesty", "Y"); | |
524 | + $rootScope.formsetting = { | |
525 | + ethnicity: null, | |
526 | + modesty: "Y" | |
527 | + } | |
528 | + $rootScope.UpdateAndCloseSetting($rootScope.formsetting) | |
529 | + } | |
530 | + else { | |
531 | + $rootScope.isModestyOn = false; | |
532 | + $rootScope.isModestyOff = true; | |
533 | + localStorage.setItem("globalModesty", "N"); | |
534 | + $rootScope.formsetting = { | |
535 | + ethnicity: null, | |
536 | + modesty: "N" | |
537 | + } | |
538 | + $rootScope.UpdateAndCloseSetting($rootScope.formsetting) | |
539 | + } | |
540 | + } | |
541 | + else { | |
542 | + $rootScope.isModestyOn = true; | |
543 | + $rootScope.isModestyOff = false; | |
544 | + localStorage.setItem("globalModesty", "Y"); | |
545 | + $rootScope.formsetting = { | |
546 | + ethnicity: null, | |
547 | + modesty: "Y" | |
548 | + } | |
549 | + $rootScope.UpdateAndCloseSetting($rootScope.formsetting) | |
550 | + } | |
551 | + //code for modesty setting | |
552 | + | |
553 | + | |
554 | + | |
555 | + | |
556 | + //LicenseId would be zero for admin that is why we set the haveRoleAdmin = true | |
557 | + if (result.LicenseId == 0) { | |
558 | + $rootScope.haveRoleAdmin = true; | |
559 | + | |
560 | + $rootScope.userData = result; | |
561 | + $rootScope.userModules = result.Modules; | |
562 | + | |
563 | + if ($scope.currentUserDetails == null || $scope.currentUserDetails == undefined || $scope.currentUserDetails == "") { | |
564 | + localStorage.setItem('loggedInUserDetails', JSON.stringify(result)); | |
565 | + } | |
566 | + | |
567 | + if (isCommingSoonModel == true) { | |
568 | + | |
569 | + ShowAssignedModulesPopup(result.Modules); | |
570 | + | |
571 | + //if (userInfo.rememberChk) { | |
572 | + | |
573 | + // $scope.saveRemeberMeDetails(result, userInfo); | |
574 | + //} | |
575 | + | |
576 | + sessionStorage.setItem("loginSession", "true"); | |
577 | + localStorage.setItem('isCommingSoonModel', false); | |
578 | + | |
579 | + $rootScope.isVisibleLogin = false; | |
580 | + } | |
581 | + | |
582 | + | |
583 | + $location.path('/'); | |
584 | + | |
585 | + } | |
586 | + else { | |
587 | + if (result.LicenseInfo != null ) { | |
588 | + //0. | |
589 | + $rootScope.userData = result; | |
590 | + $rootScope.userModules = result.Modules; | |
591 | + | |
592 | + //1. set haveRoleAdmin = false because LicenseInfo is not null | |
593 | + $rootScope.haveRoleAdmin = false; | |
594 | + | |
595 | + //2. | |
596 | + if ($scope.currentUserDetails == null || $scope.currentUserDetails == undefined || $scope.currentUserDetails == "") { | |
597 | + | |
598 | + localStorage.setItem('loggedInUserDetails', JSON.stringify(result)); | |
599 | + } | |
600 | + | |
601 | + // 3.ShowAssignedModulesPopup | |
602 | + //isCommingSoonModel =true only when user comes first time on application and login | |
603 | + //if (isCommingSoonModel == true) { | |
604 | + | |
605 | + // ShowAssignedModulesPopup(result.Modules); | |
606 | + //} | |
607 | + | |
608 | + //4. | |
609 | + //if ($scope.rememberChk) { | |
610 | + | |
611 | + // $scope.saveRemeberMeDetails(result, userInfo); | |
612 | + //} | |
613 | + | |
614 | + //5. | |
615 | + sessionStorage.setItem("loginSession", "true"); | |
616 | + $rootScope.isVisibleLogin = false; | |
617 | + | |
618 | + //6. reset the isCommingSoonModel to false in local storage so that upcomming module pop up would not show again to the user after firts time | |
619 | + // localStorage.setItem('isCommingSoonModel', false); | |
620 | + | |
621 | + $location.path('/'); | |
622 | + | |
623 | + } | |
624 | + else { | |
625 | + if ($('#dvTerms').length > 0) { | |
626 | + $('#dvTerms').html(result.TermsAndConditionsText); | |
627 | + } | |
628 | + $rootScope.isVisibleLogin = true; | |
629 | + $('#dvTermCondition').fadeIn(); | |
630 | + $rootScope.userData = result; | |
631 | + $rootScope.haveRoleAdmin = false; | |
632 | + localStorage.setItem('loggedInUserDetails', JSON.stringify(result)); | |
633 | + $location.path('/'); | |
634 | + } | |
635 | + } | |
636 | + } | |
637 | + | |
638 | + | |
639 | + } | |
640 | + } | |
641 | + | |
642 | + | |
643 | + | |
644 | + }, | |
645 | + | |
646 | + function (error) { | |
647 | + | |
648 | + console.log(' Error in authentication = ' + error.statusText); | |
649 | + // alert(LoginMessageConstants.ERROR_IN_FECTHING_DETAILS); | |
650 | + $rootScope.isVisibleLogin = true; | |
651 | + $rootScope.errorMessage = error; | |
652 | + $("#messageModal").modal('show'); | |
653 | + | |
654 | + } | |
655 | + ) | |
656 | + | |
657 | + } | |
658 | + //$rootScope.siteUrlInfo.siteIP = siteInfo[0]; | |
659 | + //$rootScope.siteUrlInfo.remoteIPAddress = siteInfo[1]; | |
660 | + //$rootScope.siteUrlInfo.accountNumber = siteInfo[2]; | |
661 | + //$rootScope.siteUrlInfo.edition = siteInfo[3]; | |
662 | + //$rootScope.siteUrlInfo.urlReferer = siteInfo[4]; | |
663 | + | |
664 | + | |
665 | + } | |
666 | + | |
384 | 667 | $scope.saveRemeberMeDetails = function (result, userInfo) { |
385 | 668 | |
386 | 669 | localStorage.setItem('RememberMeLoginId', result.LoginId); | ... | ... |
400-SOURCECODE/AIAHTML5.Web/app/main/AIA.js
... | ... | @@ -361,7 +361,9 @@ AIA.constant("LoginConstants", { |
361 | 361 | "ACCOUNT_NUMBER_NOT_EXIST": "1", |
362 | 362 | "EDITION_NOT_EXIST": "3", |
363 | 363 | "MASTER_SITEIP_NOT_EXIST": "2", |
364 | - "LICENSE_INACTIVE": "6" | |
364 | + "LICENSE_INACTIVE": "6", | |
365 | + "INVALID_CLIENT": "Clinet is not valid", | |
366 | + "MSG_NOT_AUTHORIZE_SITE_USER": "User is not authorized.", | |
365 | 367 | }); |
366 | 368 | |
367 | 369 | AIA.constant("LoginMessageConstants", { |
... | ... | @@ -400,6 +402,9 @@ AIA.constant("LoginMessageConstants", { |
400 | 402 | "UNABLE_TO_UNBLOCK": "We are unable to unblock. Please try after sometime.", |
401 | 403 | //"ERROR_IN_FECTHING_DETAILS": "Error in fecthing details.", |
402 | 404 | //"MAIL_NOT_SENT": "Mail not sent." |
405 | + "E_ACCOUNT_NUMBER_NOT_NULL": "Account number cannot be null", | |
406 | + "E_EDITION_ID_NOT_NULL": "Edition Id cannot be zero.", | |
407 | + "E_EDITION_NOT_LINKED_WITH_SITE": "Your credentials are invalid. Please contact the site administrator of your institution.", | |
403 | 408 | |
404 | 409 | }) |
405 | 410 | AIA.constant("AdminConstants", { | ... | ... |
400-SOURCECODE/AIAHTML5.Web/app/services/AuthenticationService.js
... | ... | @@ -22,6 +22,29 @@ |
22 | 22 | return deferred.promise; |
23 | 23 | }, |
24 | 24 | |
25 | + validateClientSite: function (clientInfo) { | |
26 | + var deferred = $q.defer(); | |
27 | + | |
28 | + $http.post('/API/api/Client', JSON.stringify(clientInfo), { | |
29 | + headers: { | |
30 | + 'Content-Type': 'application/json' | |
31 | + } | |
32 | + }) | |
33 | + .success(function (data, status, headers, config) { | |
34 | + console.log('success') | |
35 | + deferred.resolve(data); | |
36 | + }).error(function (data, status, headers, config) { | |
37 | + console.log('error') | |
38 | + deferred.reject(data); | |
39 | + $rootScope.isVisibleLogin = true; | |
40 | + $rootScope.errorMessage = data; | |
41 | + $("#messageModal").modal('show'); | |
42 | + | |
43 | + }); | |
44 | + return deferred.promise; | |
45 | + }, | |
46 | + | |
47 | + | |
25 | 48 | SendMailToUser: function (userInfo, havePassword) { |
26 | 49 | var deferred = $q.defer(); |
27 | 50 | ... | ... |
400-SOURCECODE/AIAHTML5.Web/index.aspx
0 → 100644
1 | +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="ADAM.AIA.index" %> | |
2 | + | |
3 | +<!DOCTYPE html> | |
4 | +<html lang="en" ng-cloak ng-app="AIA"> | |
5 | +<head> | |
6 | + <!--<base href="/AIAHTML5/" />--> | |
7 | + <!--<base href="/AIA/" />--> | |
8 | + <base href="/" /> | |
9 | + <meta charset="utf-8"> | |
10 | + <meta http-equiv="X-UA-Compatible" content="IE=edge"> | |
11 | + <!--<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">--> | |
12 | + <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0 maximum-scale=1.0" /> | |
13 | + <title>A.D.A.M. Interactive Anatomy</title> | |
14 | + | |
15 | + <link href="themes/default/css/bootstrap/3.3.6/bootstrap.css" rel="stylesheet" /> | |
16 | + | |
17 | + | |
18 | + | |
19 | + | |
20 | + <link href="themes/default/css/bootstrap/3.3.6/main.css" rel="stylesheet" /> | |
21 | + | |
22 | + <link href="themes/default/css/bootstrap/3.3.6/secondeffect.css" rel="stylesheet" /> | |
23 | + | |
24 | + <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"> | |
25 | + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:400,800,700,600,400italic"> | |
26 | + | |
27 | + <!--<link rel="styleSheet" href="themes/default/css/uigrid/ui-grid.min.css" />--> | |
28 | + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> | |
29 | + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> | |
30 | + <!--[if lt IE 9]> | |
31 | + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> | |
32 | + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> | |
33 | + <![endif]--> | |
34 | + <link href="themes/default/css/bootstrap/3.3.6/jquery.mCustomScrollbar.css" rel="stylesheet" /> | |
35 | + | |
36 | + <link href="themes/default/css/bootstrap/3.3.6/jquery-ui.css" rel="stylesheet" /> | |
37 | + | |
38 | + <link href="libs/jquery/jquery_plugin/jsPanel/jspanel/jquery.jspanel.css" rel="stylesheet" /> | |
39 | + <link href="libs/video_4_12_11/css/video-js_4_12_11.css" rel="stylesheet" /> | |
40 | + <link href="libs/jquery/jquery_plugin/SpeechBubble/css/bubble.css" rel="stylesheet" /> | |
41 | + <link href="libs/jquery/jquery_plugin/slider-pips/jquery-ui-slider-pips.css" rel="stylesheet" /> | |
42 | + <link href="themes/default/css/bootstrap/3.3.6/jquery.minicolors.css" rel="stylesheet" /> | |
43 | + <link href="content/css/print-main.css" rel="stylesheet" /> | |
44 | + | |
45 | + <!--Annotation Toolbar: Jcanvas--> | |
46 | + <style> | |
47 | + /*.ActiveDefaultColorAnnotation { | |
48 | + background-color: #000000!important; | |
49 | + }*/ | |
50 | + | |
51 | + | |
52 | + #termList option:hover { | |
53 | + background-color: #3399FF !important; | |
54 | + color: #fff !important; | |
55 | + } | |
56 | + | |
57 | + | |
58 | + .ActiveFormattingButtonClass { | |
59 | + background-color: #1B92D0 !important; | |
60 | + } | |
61 | + | |
62 | + .Edittext-btn-css { | |
63 | + background: #4B4B4B; | |
64 | + padding: 4px; | |
65 | + cursor: pointer; | |
66 | + margin-right: 2px; | |
67 | + } | |
68 | + | |
69 | + /*.italic-btn-css { | |
70 | + background: #4B4B4B; | |
71 | + padding: 4px; | |
72 | + cursor: pointer; | |
73 | + margin-right: 2px; | |
74 | + }*/ | |
75 | + | |
76 | + .underline-btn-css { | |
77 | + background: #4B4B4B; | |
78 | + padding: 4px; | |
79 | + cursor: pointer; | |
80 | + margin-right: 5px; | |
81 | + } | |
82 | + | |
83 | + | |
84 | + | |
85 | + .activebtncolor { | |
86 | + background-color: #1B92D0 !important; | |
87 | + border-color: #1B92D0 !important; | |
88 | + color: #ffffff !important; | |
89 | + } | |
90 | + | |
91 | + .btn-black-annotation { | |
92 | + background-color: #4b4b4b; | |
93 | + border-color: #3f3f3f; | |
94 | + color: #ffffff; | |
95 | + } | |
96 | + | |
97 | + /*.btn-black-annotation:hover { | |
98 | + background-color: #1B92D0 !important; | |
99 | + border-color: #1B92D0 !important; | |
100 | + color: #ffffff !important; | |
101 | + }*/ | |
102 | + | |
103 | + .custom-tooltip-annotation { | |
104 | + background-color: #fff; | |
105 | + border: 0 none; | |
106 | + color: #000; | |
107 | + left: -52px; | |
108 | + opacity: 0.9; | |
109 | + padding: 3px 0; | |
110 | + position: absolute; | |
111 | + text-align: center; | |
112 | + top: 41px; | |
113 | + width: 120px; | |
114 | + display: none; | |
115 | + z-index: 10000; | |
116 | + border: 1px solid #000; | |
117 | + color: #000; | |
118 | + border-radius: 0; | |
119 | + } | |
120 | + | |
121 | + /*7931*/ | |
122 | + .custom-tooltip-annotation-edit { | |
123 | + background-color: #fff; | |
124 | + border: 0 none; | |
125 | + color: #000; | |
126 | + left: 80px; | |
127 | + opacity: 0.9; | |
128 | + padding: 3px 0; | |
129 | + position: absolute; | |
130 | + text-align: center; | |
131 | + bottom: 50px; | |
132 | + width: 120px; | |
133 | + display: none; | |
134 | + z-index: 10000; | |
135 | + border: 1px solid #000; | |
136 | + color: #000; | |
137 | + border-radius: 0; | |
138 | + } | |
139 | + | |
140 | + .custom-tooltip-annotation-toolbar { | |
141 | + background-color: #fff; | |
142 | + border: 0 none; | |
143 | + color: #000; | |
144 | + opacity: 0.9; | |
145 | + padding: 3px 0; | |
146 | + position: absolute; | |
147 | + text-align: center; | |
148 | + display: none; | |
149 | + z-index: 10000; | |
150 | + border: 1px solid #000; | |
151 | + color: #000; | |
152 | + border-radius: 0; | |
153 | + } | |
154 | + | |
155 | + .restrict-carret-icon { | |
156 | + font-size: 18px; | |
157 | + position: relative; | |
158 | + top: 1px; | |
159 | + } | |
160 | + | |
161 | + #refreshBtn { | |
162 | + color: #ffffff; | |
163 | + } | |
164 | + </style> | |
165 | + | |
166 | + <script> | |
167 | + var params = "<%=urlParams%>"; | |
168 | + var isCalsCredantialForSIte ="<%=isCalsCredantial%>"; | |
169 | + </script> | |
170 | + | |
171 | +</head> | |
172 | +<body ng-controller="HomeController" id="bo" ng-init="initializeAIA()" ng-keydown="CheckRefresh($event)"> | |
173 | + <div ng-hide="isVisibleResetPass"> | |
174 | + <div id="login" ng-show="isVisibleLogin"> | |
175 | + | |
176 | + <div class="container-fluid loginBg"> | |
177 | + <div class="row"> | |
178 | + <div class="col-xs-12 text-center"> | |
179 | + <a href="index.html" class="loginLogo"><img src="content/images/common/logo-large.png" class="img-responsive" alt=""></a> | |
180 | + <div class="headerBand row"> | |
181 | + <div class="col-xs-12"> | |
182 | + <h1>A.D.A.M. Interactive Anatomy</h1> | |
183 | + <p>The most comprehensive online interactive anatomy learning resource</p> | |
184 | + </div> | |
185 | + </div> | |
186 | + </div> | |
187 | + <!--LOGIN PANEL--> | |
188 | + <div class="col-xs-12 loginPanel"> | |
189 | + <div class="loginBox clearfix"> | |
190 | + <div class="col-xs-12"> | |
191 | + <!--<strong>Login</strong>--> | |
192 | + <form> | |
193 | + <div class="form-group"> | |
194 | + <!--<label for="">User ID</label>--> | |
195 | + <!--input type="email" class="form-control" placeholder="User ID"> | |
196 | + <span class="help-block text-right small"><a href="#" class="color-white">Forgot User ID?</a></span>--> | |
197 | + | |
198 | + | |
199 | + <div class="input-group"> | |
200 | + <span class="input-group-addon"><i class="fa fa-user"></i></span> | |
201 | + <input type="text" class="form-control" placeholder="Username" ng-model="userInfo.username"> | |
202 | + </div> | |
203 | + <span class="help-block text-right small"><a href="#" class="color-white" id="forgotUserIdAnchor" data-toggle="modal" ng-click="forgotUserModalShow()" data-target=".forgot-sm">Forgot User ID?</a></span> | |
204 | + | |
205 | + | |
206 | + </div> | |
207 | + <div class="form-group"> | |
208 | + <!--<label for="">Password</label>--> | |
209 | + <!--<input type="password" class="form-control" placeholder="Password"> | |
210 | + <span class="help-block text-right small "><a href="#" class="color-white">Forgot Password?</a></span>--> | |
211 | + <div class="input-group"> | |
212 | + <span class="input-group-addon"><i class="fa fa-key"></i></span> | |
213 | + <input type="password" id="UserPassword" class="form-control" placeholder="Password" ng-model="userInfo.password"> | |
214 | + </div> | |
215 | + <span class="help-block text-right small "><a class="color-white" style="cursor: pointer;" id="forgotPasswordAnchor" data-toggle="modal" ng-click="forgotPwdModalShow();" data-target=".forgot-sm1">Forgot Password?</a></span> <!--#resetpass" href="/app/views/Home/resetPwd.html"--> | |
216 | + <div class="checkbox"> | |
217 | + <label style="font-size: 85%;color:#fff !important;"><input type="checkbox" ng-model="userInfo.rememberChk" ng-click="RememberMe(this.userInfo.rememberChk)">Remember me</label> | |
218 | + </div> | |
219 | + </div> | |
220 | + <div class="form-group"> | |
221 | + <button class="btn btn-primary pull-right" ng-click="AuthenticateUser(userInfo)">Log In</button> | |
222 | + </div> | |
223 | + </form> | |
224 | + </div> | |
225 | + </div> | |
226 | + <div class="loginExBtn"> | |
227 | + <a href="https://store.adameducation.com/" target="_blank" class="btn btn-primary">Subscribe Now</a> | |
228 | + <a href="http://adameducation.com/aiaonline" target="_blank" class="btn btn-primary pull-right">Learn More</a> | |
229 | + </div> | |
230 | + </div> | |
231 | + </div> | |
232 | + </div> | |
233 | + | |
234 | + <!-- Footer --> | |
235 | + <footer class="dark"> | |
236 | + <div class="container-fluid text-center"> | |
237 | + <img class="browserIcons" src="content/images/common/chrome-icon.png" /> | |
238 | + <img class="browserIcons" src="content/images/common/ie-icon.png" /> | |
239 | + <img class="browserIcons" src="content/images/common/mozilla-icon.png" /> | |
240 | + <img class="browserIcons" src="content/images/common/safari-icon.png" /> | |
241 | + </div> | |
242 | + <div class="container-fluid text-center">Copyright © {{current_year}} Ebix Inc. All rights reserved.</div> | |
243 | + </footer> | |
244 | + </div> | |
245 | + <!-- Forgot User ID (Small modal) --> | |
246 | + <div class="modal fade" id="forgotUserModal" role="dialog" tabindex="-1" aria-labelledby="exampleModalLabel" data-target=".forgot-sm"> | |
247 | + <div class="modal-dialog modal-small" role="document"> | |
248 | + <div class="modal-content"> | |
249 | + <div class="modal-header"> | |
250 | + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> | |
251 | + <h5 class="modal-title" id="exampleModalLabel">Enter your email id to recover User id</h5> | |
252 | + </div> | |
253 | + <div class="modal-body"> | |
254 | + <form id="forgetUSerIdForm"> | |
255 | + <div class="form-group"> | |
256 | + <div class="input-group"> | |
257 | + <span class="input-group-addon"><i class="fa fa-envelope"></i></span> | |
258 | + <input id="btnEmail" class="form-control" placeholder="Email" type="email" ng-model="userInfo.emailId"> | |
259 | + </div> | |
260 | + </div> | |
261 | + </form> | |
262 | + </div> | |
263 | + <div class="modal-footer" style="padding-bottom:10px;"> | |
264 | + <button type="button" class="btn btn-primary btn-block" ng-click="SendMailToUser(userInfo, false)">Send Mail</button> | |
265 | + </div> | |
266 | + <!--<div style="color: maroon; font-weight: bold; " ng-if="message">{{message}}</div>--> | |
267 | + </div> | |
268 | + </div> | |
269 | + </div> | |
270 | + <!-- Forgot Password (Small modal) --> | |
271 | + <div class="modal fade" id="forgotPwdModal" role="dialog" tabindex="-1" aria-labelledby="exampleModalLabel" data-target=".forgot-sm1"> | |
272 | + <div class="modal-dialog modal-small" role="document"> | |
273 | + <div class="modal-content"> | |
274 | + <div class="modal-header"> | |
275 | + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> | |
276 | + <h5 class="modal-title" id="exampleModalLabel">Enter your email id to unblock/ recover Password</h5> | |
277 | + </div> | |
278 | + <div class="modal-body" style="padding: 15px;"> | |
279 | + <form id="forgetPwdForm" class="ng-pristine ng-valid ng-valid-email"> | |
280 | + <div class="form-group"> | |
281 | + <div class=""> | |
282 | + <label class="radio-inline"> | |
283 | + <input name="inlineRadioOptions" id="inlineRadio1" value="unblock" type="radio"> Unblock | |
284 | + </label> | |
285 | + <label class="radio-inline"> | |
286 | + <input name="inlineRadioOptions" id="inlineRadio2" value="forgotpwd" type="radio"> Forgot Password | |
287 | + </label> | |
288 | + </div> | |
289 | + </div> | |
290 | + | |
291 | + | |
292 | + <div class="form-group"> | |
293 | + <div class="input-group" style="margin-top: 8px;"> | |
294 | + <span class="input-group-addon"><i class="fa fa-envelope"></i></span> | |
295 | + <input id="btnEmail2" class="form-control ng-pristine ng-untouched ng-valid ng-valid-email" placeholder="Email" ng-model="userInfo.emailId" type="email"> | |
296 | + </div> | |
297 | + </div> | |
298 | + </form> | |
299 | + </div> | |
300 | + <div class="modal-footer modal-footer-forgot-password" style="padding-bottom:10px;"> | |
301 | + <button type="button" class="btn btn-primary btn-block" ng-click="SendMailToUser(userInfo, true)">Send Mail</button> | |
302 | + </div> | |
303 | + <!--<div style="color: maroon; font-weight: bold; " ng-if="message">{{message}}</div>--> | |
304 | + </div> | |
305 | + </div> | |
306 | + </div> | |
307 | + <div id="index" ng-hide="isVisibleLogin"> | |
308 | + <div class="container-fluid "> | |
309 | + <!--Header--> | |
310 | + | |
311 | + <nav class="navbar navbar-inverse navbar-fixed-top"> | |
312 | + <div class="container-fluid"> | |
313 | + <!-- Brand and toggle get grouped for better mobile display --> | |
314 | + <div class="navbar-header"> | |
315 | + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#topFixedNavbar1" aria-expanded="false"> | |
316 | + <span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span> | |
317 | + </button> | |
318 | + <a class="frameLogo navbar-brand"><img src="content/images/logo-main.png" class="img-responsive" alt=""></a> | |
319 | + </div> | |
320 | + <div ng-include="'app/widget/TopMenu.html'"></div> | |
321 | + </div> | |
322 | + </nav> | |
323 | + <div class="bodyWrap row container-fluid"> | |
324 | + | |
325 | + <div id="spinner" class="spinner" ng-show="isLoading" style="visibility:hidden"> | |
326 | + <img id="img-spinner" src="content/images/common/loading.gif" alt="Loading" /> | |
327 | + </div> | |
328 | + <div ng-view></div> | |
329 | + | |
330 | + </div> | |
331 | + </div> | |
332 | + | |
333 | + | |
334 | + | |
335 | + <div class="modal fade" id="ShowListManager" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" ng-init="tab = 1" style="width:27%;left:50%;overflow:hidden;height:500px;top:100px"> | |
336 | + <div class="modal-dialog" role="document" style="width:400px;"> | |
337 | + <div class="modal-content" style="width:100%;max-width:400px;"> | |
338 | + <div class="modal-header setting-modal-header" style="padding: 5px 10px; border-bottom: 1px solid #e5e5e5;"> | |
339 | + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> | |
340 | + <h4 class="modal-title" id="myModalLabel">Setting</h4> | |
341 | + </div> | |
342 | + <div class="modal-body"> | |
343 | + <div class="row" style="padding-top:20px;"> | |
344 | + <div class="col-sm-12"> | |
345 | + | |
346 | + <div aria-label="..." role="group" class="btn-group btn-group-justified"> | |
347 | + <div role="group" class="btn-group"> | |
348 | + <button class="btn btn-sm btn-success" type="button" ng-click="tab = 1">Appearance</button> | |
349 | + </div> | |
350 | + <div role="group" class="btn-group"> | |
351 | + <button class="btn btn-sm btn-success" type="button" ng-click="tab = 2">Lexicons</button> | |
352 | + </div> | |
353 | + <div role="group" class="btn-group"> | |
354 | + <button class="btn btn-sm btn-success" type="button" ng-click="tab = 3">Dissectible</button> | |
355 | + </div> | |
356 | + </div> | |
357 | + | |
358 | + </div> | |
359 | + | |
360 | + | |
361 | + <div class="col-sm-12" ng-show="tab === 1"> | |
362 | + | |
363 | + | |
364 | + <div class="row"> | |
365 | + <div class="center-block col-md-11" style="float: none; background-color:#E2E2E2;height:300px;"> | |
366 | + <div class="row" style="padding-top: 22px;"> | |
367 | + <div class="center-block col-md-10" style="float: none; "> | |
368 | + <h5><strong>System Font</strong></h5> | |
369 | + | |
370 | + <div style="border:2px solid #ACACAC;float:left;padding:15px;background-color:#CCCCCC;"> | |
371 | + <div class="col-md-3" style="padding-left:0px;"> | |
372 | + Sample | |
373 | + </div> | |
374 | + <div class="col-md-6" style="padding-right:0px;"> | |
375 | + <input type="text" value="" style="width:85%;"> | |
376 | + </div> | |
377 | + <div class="col-md-3" style="padding-left:0px;"> | |
378 | + <button class="btn btn-primary" style="margin-bottom:5px;">Change</button> | |
379 | + <button class="btn btn-primary" style="margin-bottom:5px;">Default</button> | |
380 | + </div> | |
381 | + | |
382 | + </div> | |
383 | + </div> | |
384 | + </div> | |
385 | + | |
386 | + </div> | |
387 | + </div> | |
388 | + | |
389 | + </div> | |
390 | + <div class="col-sm-12" ng-show="tab === 2"> | |
391 | + | |
392 | + | |
393 | + <div class="row"> | |
394 | + <div class="center-block col-md-11" style="float: none; background-color:#E2E2E2;height:300px;"> | |
395 | + <div class="col-md-6"> | |
396 | + <h6><strong>Primary Lexicon</strong></h6> | |
397 | + <input type="text" value="English" style="width:90%;"> | |
398 | + <button class="btn btn-primary" style="float:right;margin-bottom:5px;margin-top:5px;">Change</button> | |
399 | + <h6>Secondry Lexicon</h6> | |
400 | + <textarea style="width:90%;"></textarea> | |
401 | + <button>Change</button> | |
402 | + <button>Change</button> | |
403 | + </div> | |
404 | + <div class="col-md-6"> | |
405 | + <h6>Available Lexicon</h6> | |
406 | + <select multiple class="form-control" id="sel2"> | |
407 | + <option>1</option> | |
408 | + <option>2</option> | |
409 | + <option>3</option> | |
410 | + <option>4</option> | |
411 | + <option>5</option> | |
412 | + </select> | |
413 | + | |
414 | + <p>Note: Some languages require special system fonts to display correctly</p> | |
415 | + </div> | |
416 | + | |
417 | + </div> | |
418 | + </div> | |
419 | + | |
420 | + </div> | |
421 | + <div class="col-sm-12" ng-show="tab === 3"> | |
422 | + | |
423 | + <div class="row"> | |
424 | + <div class="center-block col-md-11" style="float: none; background-color:#E2E2E2;height:300px;"> | |
425 | + <h6>Skin Tones</h6> | |
426 | + <div class="center-block col-md-8" style="float: none;"> | |
427 | + <div class="col-md-6"> | |
428 | + <img class="img-responsive" alt="" src="http://placehold.it/400x300"> | |
429 | + </div> | |
430 | + <div class="col-md-6"> | |
431 | + <img class="img-responsive" alt="" src="http://placehold.it/400x300"> | |
432 | + </div> | |
433 | + <div class="col-md-6"> | |
434 | + <img class="img-responsive" alt="" src="http://placehold.it/400x300"> | |
435 | + </div> | |
436 | + <div class="col-md-6"> | |
437 | + <img class="img-responsive" alt="" src="http://placehold.it/400x300"> | |
438 | + </div> | |
439 | + | |
440 | + </div> | |
441 | + <h6>Modesty Setting</h6> | |
442 | + <div class="col-md-6"> | |
443 | + <div class="col-md-4"> | |
444 | + <img class="img-responsive" alt="" src="http://placehold.it/400x300"> | |
445 | + </div> | |
446 | + <div class="col-md-8"> | |
447 | + | |
448 | + <div class="radio"> | |
449 | + <label><input type="radio" name="optradio" checked>On</label> | |
450 | + </div> | |
451 | + <div class="radio"> | |
452 | + <label><input type="radio" name="optradio">Off</label> | |
453 | + </div> | |
454 | + | |
455 | + </div> | |
456 | + </div> | |
457 | + <div class="col-md-6"> | |
458 | + <h6>Annotaion</h6> | |
459 | + <div class="checkbox"> | |
460 | + <label><input type="checkbox" value="" checked>Erase Annotations when changeing layers</label> | |
461 | + </div> | |
462 | + </div> | |
463 | + </div> | |
464 | + | |
465 | + </div> | |
466 | + | |
467 | + | |
468 | + | |
469 | + </div> | |
470 | + </div> | |
471 | + <div class="modal-footer"> | |
472 | + <button type="button" class="btn btn-primary">Ok</button> | |
473 | + <button type="button" class="btn btn-primary" data-dismiss="modal">Cancle</button> | |
474 | + <button type="button" class="btn btn-primary">Apply</button> | |
475 | + </div> | |
476 | + </div> | |
477 | + </div> | |
478 | + </div> | |
479 | + </div> | |
480 | + | |
481 | + <!--Settings modal--> | |
482 | + <!--<div id="modal-settings" style="z-index: 1000000000; background: white;width: 302px;position:absolute;left:40%;right:0;top:70px;">--> | |
483 | + <div id="modelsettingsbackground" style="background-color: black; bottom: 0; display: none; height: 100%; left: 0; opacity: 0.5; position: fixed; right: 0; top: 0; width: 100%; z-index: 12000000;"></div> | |
484 | + <div id="modal-settings" style="display:none;z-index: 1000000000;height:auto;width: 300px;position:absolute;left:40%;right:0;top:70px;"> | |
485 | + <div role="document"> | |
486 | + <form> | |
487 | + <div ng-init="loadsettings()" class="modal-content" id="setting-modal-dark"> | |
488 | + <div class="modal-header annotation-modal-header"> | |
489 | + <button type="button" class="close" data-dismiss="modal" ng-click="CloseSetting()" aria-label="Close"><span aria-hidden="true">×</span></button> | |
490 | + <h4 class="modal-title" id="myModalLabel2">Settings</h4> | |
491 | + </div> | |
492 | + <div class="modal-body"> | |
493 | + <div class="paddTop15"> | |
494 | + <!-- Nav tabs --> | |
495 | + <ul class="nav nav-tabs" role="tablist"> | |
496 | + <li role="presentation" ng-class="{'active':SettingsTab==1}"><a role="tab" class="padd5" ng-click="SetSettingActiveTab(1)">Appearance</a></li> | |
497 | + <li role="presentation" ng-class="{'active':SettingsTab==2}"><a role="tab" class="padd5" ng-click="SetSettingActiveTab(2);lexiconData()">Lexicons</a></li> | |
498 | + <li role="presentation" ng-class="{'active':SettingsTab==3}"><a role="tab" class="padd5" ng-click="SetSettingActiveTab(3)">Dissectible</a></li> | |
499 | + | |
500 | + </ul> | |
501 | + <!-- Tab panes --> | |
502 | + <div class="tab-content"> | |
503 | + <div role="tabpanel" ng-class="{'tab-pane active' : SettingsTab === 1,'tab-pane' : SettingsTab !==1 }" id="appearance"> | |
504 | + <div class="row"> | |
505 | + <div class="col-sm-12"> | |
506 | + <div class="well well-sm no-margin-btm"> | |
507 | + <h5>System Font</h5> | |
508 | + <div class="form-group"> | |
509 | + <label for="SystemFont" class="font13">Sample</label> | |
510 | + <input type="text" class="form-control" id="SystemFont" value="AaBbYyZz" disabled> | |
511 | + </div> | |
512 | + <button class="btn btn-success btn-sm" data-toggle="modal" data-target="#modal-change">Change</button> | |
513 | + <button class="btn btn-success btn-sm">Default</button> | |
514 | + </div> | |
515 | + </div> | |
516 | + </div> | |
517 | + </div> | |
518 | + <div role="tabpanel" ng-class="{'tab-pane active' : SettingsTab === 2,'tab-pane' : SettingsTab !==2 }" id="lexicons"> | |
519 | + <div class="row paddingTopBtm10"> | |
520 | + <div class="col-sm-6"> | |
521 | + <div class="form-group"> | |
522 | + <label for="SystemFont" class="font13">Primary Lexicon</label> | |
523 | + <input type="text" id="primarylaxican" class="form-control" value="English" name="1" disabled> | |
524 | + <button class="btn btn-sm btn-success btn-block marginTop5" id="laxicanlanguageChagne" disabled>Change</button> | |
525 | + </div> | |
526 | + | |
527 | + <div class="form-group"> | |
528 | + <label for="SystemFont" class="font13">Secondary Lexicons</label> | |
529 | + <!--<textarea class="form-control" rows="3">--> | |
530 | + <select class="form-control" size="5" id="secondLax"></select> | |
531 | + <!--</textarea>--> | |
532 | + </div> | |
533 | + <div class="form-group"> | |
534 | + <button class="btn btn-sm btn-success" id="laxiconLangAdd" disabled>Add</button> | |
535 | + <button class="btn btn-sm btn-success" id="laxiconLangRemove">Remove</button> | |
536 | + </div> | |
537 | + </div> | |
538 | + <div class="col-sm-6" style="padding-left:13px;padding-right:13px;"> | |
539 | + <div class=" form-group"> | |
540 | + <label for="SystemFont" class="font13">Available Lexicons</label> | |
541 | + <select class="form-control" size="8" id="lexiconLangDropdown"></select> | |
542 | + </div> | |
543 | + <p class="font11"><strong>Note :</strong> Some languages require special system fonts to display correctly</p> | |
544 | + </div> | |
545 | + <div class="clearfix"></div> | |
546 | + </div> | |
547 | + </div> | |
548 | + <div role="tabpanel" id="dissectible" ng-class="{'tab-pane active' : SettingsTab === 3,'tab-pane' : SettingsTab !==3 }"> | |
549 | + <div class=""> | |
550 | + <div class="col-sm-12"> | |
551 | + <h5 class="bolder font13 no-margin-top">Skin Tones</h5> | |
552 | + <div class="skin-tones"> | |
553 | + <div align="center"> | |
554 | + <div class="col-sm-5"> | |
555 | + <button id="btnEthnicW" class="thumbnail skinmarginbtm6" ng-model="formsetting.ethnicity" ng-click="ChangeEthnicity(formsetting,'W')"> | |
556 | + <img src="~/../content/images/common/skin1.jpg" alt=""> | |
557 | + </button> | |
558 | + </div> | |
559 | + <div class="col-sm-5"> | |
560 | + <button id="btnEthnicB" class="thumbnail skinmarginbtm6" ng-model="formsetting.ethnicity" ng-click="ChangeEthnicity(formsetting,'B')"> | |
561 | + <img src="~/../content/images/common/skin2.jpg" alt=""> | |
562 | + </button> | |
563 | + </div> | |
564 | + <div class="col-sm-5"> | |
565 | + <button id="btnEthnicL" class="thumbnail skinmarginbtm6" ng-model="formsetting.ethnicity" ng-click="ChangeEthnicity(formsetting,'A')"> | |
566 | + <img src="~/../content/images/common/skin3.jpg" alt=""> | |
567 | + </button> | |
568 | + </div> | |
569 | + <div class="col-sm-5"> | |
570 | + <button id="btnEthnicA" class="thumbnail skinmarginbtm6" ng-model="formsetting.ethnicity" ng-click="ChangeEthnicity(formsetting,'L')"> | |
571 | + <img src="~/../content/images/common/skin4.jpg" alt=""> | |
572 | + </button> | |
573 | + </div> | |
574 | + </div> | |
575 | + </div> | |
576 | + | |
577 | + </div> | |
578 | + </div> | |
579 | + <div class=""> | |
580 | + <div class="col-sm-6"> | |
581 | + <h5 class="font13 bolder">Modesty Settings</h5> | |
582 | + <img src="~/../content/images/common/adam-leaf.png" alt="" class="pull-left marginR5"> | |
583 | + <div class="radio"> | |
584 | + <label> | |
585 | + <input type="radio" ng-checked="isModestyOn" ng-model="formsetting.modesty" value="Y" name="modestyRadios" id="modon" ng-click="ChangeModesty(formsetting,'Y')"> | |
586 | + <span class="">On</span> | |
587 | + </label> | |
588 | + </div> | |
589 | + <div class="radio"> | |
590 | + <label> | |
591 | + <input type="radio" ng-checked="isModestyOff" ng-model="formsetting.modesty" value="N" name="modestyRadios" id="modoff" ng-click="ChangeModesty(formsetting,'N')"> | |
592 | + <span class="">Off</span> | |
593 | + </label> | |
594 | + </div> | |
595 | + </div> | |
596 | + <div class="col-sm-6"> | |
597 | + <h5 class="font13 bolder">Annotation</h5> | |
598 | + <div class="checkbox no-margin"> | |
599 | + <!--Settings > The entire highlighted part should be active--> | |
600 | + <label class="font11 no-margin-btm"> | |
601 | + <input type="checkbox" value="" checked> | |
602 | + Erase Annotations when changing layers | |
603 | + </label> | |
604 | + </div> | |
605 | + </div> | |
606 | + </div> | |
607 | + </div> | |
608 | + </div> | |
609 | + </div> | |
610 | + </div> | |
611 | + <div class="modal-footer"> | |
612 | + <button type="button" class="btn btn-primary" ng-click="UpdateAndCloseSetting(formsetting)">OK</button> | |
613 | + | |
614 | + <!--<button type="button" class="btn btn-primary" data-dismiss="modal">Cancel</button>--> | |
615 | + <button type="button" class="btn btn-primary" ng-click="CloseSetting()">Cancel</button> | |
616 | + <button type="button" class="btn btn-primary" ng-click="UpdateSetting(formsetting)">Apply</button> | |
617 | + </div> | |
618 | + </div> | |
619 | + </form> | |
620 | + </div> | |
621 | + </div> | |
622 | + <div id="setting-spinner" style="display:none;position: fixed; top: 50%; left: 50%; margin-left: -50px; z-index: 15000; overflow: auto; width: 100px;"> | |
623 | + <img id="img-spinner" src="content/images/common/loading.gif" alt="Loading"> | |
624 | + </div> | |
625 | + <!--Annotation Modal--> | |
626 | + <div class="annotationTollbar" style="width: 300px;position: fixed; top: 80px; right: 20px; display: none; z-index: 1200000;"> | |
627 | + <div class="annotationbar"> | |
628 | + <div class="modal-content"> | |
629 | + <div class="modal-header annotation-modal-header"> | |
630 | + <button type="button" class="close" aria-label="Close" ng-click="CloseAnnotationTool()"><span aria-hidden="true">×</span></button> | |
631 | + <h4 class="modal-title" id="myModalLabel">Annotation</h4> | |
632 | + </div> | |
633 | + <div class="modal-body" id="AnnotaionPopupDiv"> | |
634 | + <div class="row"> | |
635 | + <div class="col-sm-12"> | |
636 | + <h5>Mode</h5> | |
637 | + | |
638 | + <div class="btn-group btn-group-justified" role="group" aria-label="..."> | |
639 | + <div class="btn-group" role="group" tooltip> | |
640 | + <div id="identify-block" style="display: none; font-size:13px;">Identify Mode</div> | |
641 | + <button id="OnIdentify" type="button" class="btn btn-sm btn-success" ng-click="OnIdentifyClick()">Identify</button> | |
642 | + </div> | |
643 | + <div class="btn-group" role="group"> | |
644 | + <div id="draw-block" style="display: none; font-size: 13px;">Draw Mode</div> | |
645 | + <button id="DrawMode" type="button" ng-click="DrawingMode()" class="btn btn-sm btn-success">Draw</button> | |
646 | + </div> | |
647 | + </div> | |
648 | + | |
649 | + </div> | |
650 | + <div class="col-sm-12"> | |
651 | + <h5>Tools</h5> | |
652 | + <div class="well well-popup"> | |
653 | + <div class="" aria-label="..."> | |
654 | + <div class="" role="group" align="center"> | |
655 | + <div id="cursor-block" style="display: none; font-size:13px;"></div> | |
656 | + <button type="button" class="btn btn-black-annotation btn-xs mrgnBtm5 btnCursor" ng-mouseover="addToolTip(75, 60, 120, 'Select Cursor(s)')" ng-mouseleave="removeToolTipOnMouseOut()" ng-click="Cursor()"><img src="content/images/icon-identity.png" alt="" title=""></button> | |
657 | + <button type="button" class="btn btn-black-annotation btn-xs mrgnBtm5 btn-annotation btn-annotation-pin" ng-mouseover="addToolTip(75, 100, 120, 'Draw Pin')" ng-mouseleave="removeToolTipOnMouseOut()" ng-click="DrawPin($event)"><img src="content/images/draw-pin.png" alt="" title=""></button> | |
658 | + <button type="button" class="btn btn-black-annotation btn-xs mrgnBtm5 btn-annotation btn-annotation-arrow" ng-mouseover="addToolTip(75, 120, 120, 'Draw Arrow')" ng-mouseleave="removeToolTipOnMouseOut()" ng-click="DrawArrow($event)"><img src="content/images/draw-arrow.png" alt="" title=""></button> | |
659 | + <button type="button" class="btn btn-black-annotation btn-xs mrgnBtm5 btn-annotation btn-annotation-Text" ng-mouseover="addToolTip(75, 140, 120, 'Draw Text')" ng-mouseleave="removeToolTipOnMouseOut()" ng-click="DrawText($event)"><img src="content/images/draw-text.png" alt="" title=""></button> | |
660 | + </div> | |
661 | + <div class="" role="group" align="center"> | |
662 | + <button type="button" class="btn btn-black-annotation btn-xs btn-annotation btn-annotation-line" ng-mouseover="addToolTip(95, 60, 120, 'Draw Line')" ng-mouseleave="removeToolTipOnMouseOut()" ng-click="DrawLine($event)"><img src="content/images/draw-line.png" alt="" title=""></button> | |
663 | + <button type="button" class="btn btn-black-annotation btn-xs btn-annotation btn-annotation-rectangle" ng-mouseover="addToolTip(95, 100, 120, 'Draw Rectangle')" ng-mouseleave="removeToolTipOnMouseOut()" ng-click="DrawRectangle($event)"><img src="content/images/draw-rec.png" alt="" title=""></button> | |
664 | + <button type="button" class="btn btn-black-annotation btn-xs btn-annotation btn-annotation-circle" ng-mouseover="addToolTip(95, 120, 120, 'Draw Circle')" ng-mouseleave="removeToolTipOnMouseOut()" ng-click="DrawCircle($event)"><img src="content/images/draw-cir.png" alt="" title=""></button> | |
665 | + <!--<button type="button" class="btn btn-black-annotation btn-xs btn-annotation" ng-mouseover="addToolTip(95, 140, 120, 'Draw Polygon')" ng-mouseleave="removeToolTipOnMouseOut()" ng-click="DrawPolygon($event)"><img src="content/images/draw-poly.png" alt="" title=""></button>--> | |
666 | + <button type="button" class="btn btn-black-annotation" id="resetBtn" style="padding:1px 7px;display:none;" ng-click="resetDrawing()" ng-mouseover="addToolTip(95, 140, 120, 'Reset')" ng-mouseleave="removeToolTipOnMouseOut()"><i class="fa fa-refresh"></i></button> | |
667 | + </div> | |
668 | + </div> | |
669 | + </div> | |
670 | + <div class="well-popup well blankshapediv" ng-mouseover="addToolTip(200, 170, 120, 'Edit Style')" ng-mouseleave="removeToolTipOnMouseOut()"> | |
671 | + <!--#7931--> | |
672 | + | |
673 | + <div id="edit-block" style="display: none; font-size: 13px;">Edit Shape Style</div> | |
674 | + <div id="previewBorder" class="outlinediv" ng-mouseover="addToolTip(170, 170, 120, 'Edit Style')" ng-mouseleave="removeToolTipOnMouseOut()"> | |
675 | + <div id="shapeStyleDiv" style="background-color: #ffffff;" class="fullcolordiv" ng-click="disableAnnotationtoolOnListManager||enableAnnotationToolBar()"> | |
676 | + | |
677 | + </div> | |
678 | + | |
679 | + </div> | |
680 | + </div> | |
681 | + <div class="well well-popup"> | |
682 | + <div class="" role="group" aria-label="..."> | |
683 | + <div> | |
684 | + <a href="#canvasPaint" data-tool="marker" data-size="1" data-color="#fff" id="annotationpaintbrushsize" ng-mouseover="addToolTip(270, 50, 120, 'Paint')" ng-mouseleave="removeToolTipOnMouseOut()" class="btn btn-black-annotation btn-xs pull-left btn-annotation btn-annotation-brush" role="button" data-placement="top" style="margin-right:1%;" ng-click="paintBrush()"><i class="fa fa-paint-brush"></i></a> | |
685 | + <a href="#canvasPaint" data-tool="eraser" class="btn btn-black-annotation btn-xs pull-left btn-annotation btn-annotation-erase" data-placement="top" data-size=" 1" id="annotationpainteraser" ng-click="EraseDrawing()" ng-mouseover="addToolTip(270, 70, 120, 'Erase')" ng-mouseleave="removeToolTipOnMouseOut()" role="button"><i class=" fa fa-eraser"></i></a> | |
686 | + | |
687 | + <!--<button type="button" id="annotationpainteraser" class="btn btn-black-annotation btn-xs pull-left btn-annotation btn-annotation-erase" data-placement="top" ng-click="EraseDrawing()" ng-mouseover="addToolTip(270, 70, 120, 'Erase')" ng-mouseleave="removeToolTipOnMouseOut()"><i class="fa fa-eraser"></i></button>--> | |
688 | + <div style="width: 80px; margin: 0px 0px 0px 4px; display: inline-block;float:left;"> | |
689 | + <div style="width: 58px; float: left;" ng-mouseover="addToolTip(270, 100, 120, 'Brush Size')" ng-mouseleave="removeToolTipOnMouseOut()"> | |
690 | + <input type="text" id="btnBrushSize" class="form-control" value="1" style="height:32px;border-radius:0;" oninput="Brushsize(this)"> | |
691 | + </div> | |
692 | + <div style="width: 22px; float: left;"> | |
693 | + <div style="width: 100%; float: left; height: 16px;"> | |
694 | + <button type="button" id="btnBrushSizeIncrement" ng-mouseover="addToolTip(270, 100, 120, 'Brush Size')" ng-mouseleave="removeToolTipOnMouseOut()" class="btn btn-default" style="padding:0 5px;border-radius:0;font-size: 10px;vertical-align:top;"> | |
695 | + | |
696 | + <img style="width:10px;height:10px;" src="~/../content/images/DA/angle-up.png"> | |
697 | + </button> | |
698 | + </div> | |
699 | + <div style="width: 100%; float: left; height: 16px;"> | |
700 | + <button type="button" id="btnBrushSizeDecrease" ng-mouseover="addToolTip(270, 100, 120, 'Brush Size')" ng-mouseleave="removeToolTipOnMouseOut()" class="btn btn-default" style="padding:0 5px;border-radius:0;font-size: 10px;vertical-align:top;"> | |
701 | + <img style="width:10px;height:10px;" src="~/../content/images/DA/angle-down.png"> | |
702 | + </button> | |
703 | + </div> | |
704 | + </div> | |
705 | + | |
706 | + </div> | |
707 | + | |
708 | + | |
709 | + <div class="pull-left pl-12" style="width:45%; margin-left:2%;margin-top:5px;"> | |
710 | + <div id="slider-range-min-2" ng-mouseover="addToolTip(270, 170, 120, 'Brush Size')" ng-mouseleave="removeToolTipOnMouseOut()"></div> | |
711 | + </div> | |
712 | + <div class="clearfix"></div> | |
713 | + </div> | |
714 | + | |
715 | + </div> | |
716 | + | |
717 | + | |
718 | + </div> | |
719 | + | |
720 | + </div> | |
721 | + </div> | |
722 | + </div> | |
723 | + | |
724 | + </div> | |
725 | + </div> | |
726 | + </div> | |
727 | + | |
728 | + <!--Modal For Annotation Text Box--> | |
729 | + <div id="annotationTextModal" style="display:none;z-index: 1000000000;width:500px;height:241px;padding-right:0!important;position:fixed;left:0;right:0;top:0px;bottom:0;margin:auto;"> | |
730 | + | |
731 | + <div class="modal-content"> | |
732 | + <div class="modal-header" style="background-color: #808D43;padding:10px;border-bottom:0;"> | |
733 | + <!--<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>--> | |
734 | + <h4 class="modal-title" id="myModalLabel" style="font-weight:bold;">Enter Text to be put in a box</h4> | |
735 | + </div> | |
736 | + <div class="modal-body"> | |
737 | + <div class="col-xs-12" style="padding:20px 0;"> | |
738 | + <div class="form-inline"> | |
739 | + <!--Annotation: Text in different font style is same.--> | |
740 | + <select class="form-control" id="selected-font-family"></select> | |
741 | + <select class="form-control" id="selected-font-size"> | |
742 | + <option>14</option> | |
743 | + <option>16</option> | |
744 | + <option>18</option> | |
745 | + <option>20</option> | |
746 | + <option>22</option> | |
747 | + <option>24</option> | |
748 | + <option>26</option> | |
749 | + <option>28</option> | |
750 | + <option>36</option> | |
751 | + <option>48</option> | |
752 | + <option>72</option> | |
753 | + </select> | |
754 | + <span style="vertical-align:middle;"> | |
755 | + <span id="text-bold" class="Edittext-btn-css"> | |
756 | + <i aria-hidden="true" class="fa fa-bold" style="color: #fff"></i> | |
757 | + </span> | |
758 | + <span id="text-italic" class="Edittext-btn-css"> | |
759 | + <i class="fa fa-italic" aria-hidden="true" style="color: #fff"></i> | |
760 | + | |
761 | + </span> | |
762 | + <span id="text-underline" class="underline-btn-css"> | |
763 | + <i class="fa fa-underline" aria-hidden="true" style="color: #fff"></i> | |
764 | + </span> | |
765 | + </span> | |
766 | + | |
767 | + <div class="form-group" id="font-color" style="display:inline-flex;vertical-align:top;cursor:pointer;margin-right:36px;"> | |
768 | + | |
769 | + <input type="text" id="saturation-demo" class="form-control demo" data-control="saturation" style="display:none;" value="#0088cc"> | |
770 | + </div> | |
771 | + <div class="form-group" id="drawTextBGColorpicker" style="display:inline-flex;vertical-align:top;cursor:pointer;margin-right:36px;"> | |
772 | + <input type="text" id="saturation-demo-background" class="form-control drawTextBG" data-control="saturation" style="display:none;" value="#0088cc"> | |
773 | + </div> | |
774 | + | |
775 | + <span style="vertical-align:middle;"> | |
776 | + <span id="text-left" class="Edittext-btn-css"> | |
777 | + <i aria-hidden="true" class="fa fa-align-left" style="color: #fff"></i> | |
778 | + </span> | |
779 | + <span id="text-center" class="Edittext-btn-css"> | |
780 | + <i class="fa fa-align-center" aria-hidden="true" style="color: #fff"></i> | |
781 | + | |
782 | + | |
783 | + </span> | |
784 | + <span id="text-right" class="underline-btn-css"> | |
785 | + <i class="fa fa-align-right" aria-hidden="true" style="color: #fff"></i> | |
786 | + | |
787 | + | |
788 | + </span> | |
789 | + </span> | |
790 | + | |
791 | + | |
792 | + </div> | |
793 | + </div> | |
794 | + <textarea class="form-control" id="text_area" rows="3" style="font-family: 'Verdana, sans-serif';font-size:14px; font-weight: normal; font-style: normal; color: #000; text-align: left; text-decoration: none;"></textarea> | |
795 | + | |
796 | + <!--code for horizonatl text going out--> | |
797 | + <div id="atTextDiv" style="float:left;"> | |
798 | + <span id="duptextspan" style="float: left; display: none;"></span> | |
799 | + <span id="textspan" style="display:none;"></span> | |
800 | + </div> | |
801 | + <!--code for horizonatl text going out--> | |
802 | + | |
803 | + </div> | |
804 | + <div class="modal-footer"> | |
805 | + <!--<button type="button" class="btn btn-default" ng-click="closeModal()" data-dismiss="modal">Close</button>--> | |
806 | + <button type="button" class="btn btn-default" ng-click="closeModal()" id="closeEditText" data-dismiss="modal">Close</button> | |
807 | + <button type="button" id="saveBtn" class="btn btn-primary" data-dismiss="modal" ng-click="saveText()">Save</button> | |
808 | + </div> | |
809 | + </div> | |
810 | + | |
811 | + </div> | |
812 | + | |
813 | + | |
814 | + | |
815 | + | |
816 | + <!--List manager--> | |
817 | + <!--List manager--> | |
818 | + <style> | |
819 | + #listManager { | |
820 | + background: #fff; | |
821 | + border-radius: 3px; | |
822 | + border: 1px solid #ededed; | |
823 | + -webkit-box-shadow: 0px 0px 2px 1px rgba(173,173,173,1); | |
824 | + -moz-box-shadow: 0px 0px 2px 1px rgba(173,173,173,1); | |
825 | + box-shadow: 0px 0px 2px 1px rgba(173,173,173,1); | |
826 | + width: 350px; | |
827 | + position: absolute; | |
828 | + top: 170px; | |
829 | + left: 140px; | |
830 | + display: none; | |
831 | + z-index: 780000; | |
832 | + height: auto !important; | |
833 | + } | |
834 | + | |
835 | + #listManager .annotation-modal-header { | |
836 | + background: #818f44; | |
837 | + padding: 2px 10px; | |
838 | + } | |
839 | + | |
840 | + #listManager .annotation-modal-header h4 { | |
841 | + color: #fff; | |
842 | + font-size: 15px; | |
843 | + line-height: 20px; | |
844 | + } | |
845 | + | |
846 | + #listManager .modal-header .close { | |
847 | + color: #fff; | |
848 | + margin: 0; | |
849 | + opacity: 10; | |
850 | + text-shadow: none; | |
851 | + } | |
852 | + | |
853 | + #listManager .modal-footer { | |
854 | + padding: 5px 10px; | |
855 | + } | |
856 | + </style> | |
857 | + <div id="listManager" style=""> | |
858 | + <div class="modal-header annotation-modal-header"> | |
859 | + <button type="button" class="close" aria-label="Close" ng-click="CloseListManager()"><span aria-hidden="true">×</span></button> | |
860 | + <h4 class="modal-title" id="myModalLabel">List Manager</h4> | |
861 | + </div> | |
862 | + <div class="modal-body"> | |
863 | + <div class="row paddingTopBtm10"> | |
864 | + <div class="col-sm-12" ng-init="FillListManager()"> | |
865 | + | |
866 | + <div class="form-group"> | |
867 | + <label for="sel1">Window</label> | |
868 | + <select class="form-control" id="viewName" disabled> | |
869 | + <!--<option>Male Lateral</option>--> | |
870 | + | |
871 | + </select> | |
872 | + </div> | |
873 | + <div style=""> | |
874 | + <div class="form-group"> | |
875 | + <div ng-click="restrictBodySystemList()" class="btn btn-success btn-block" style="padding:3px 12px;"> | |
876 | + <i class=" fa fa-caret-right restrict-carret-icon"></i> <span>Restrict List to</span> | |
877 | + </div> | |
878 | + </div> | |
879 | + | |
880 | + <div id="restrictListDiv" style="display:none;"> | |
881 | + <div class="well well-sm marginTopBtm10"> | |
882 | + <div class="form-horizontal"> | |
883 | + <div class="form-group"> | |
884 | + <label class="col-sm-4 control-label" for="System">System</label> | |
885 | + <div class="col-sm-8"> | |
886 | + <select id="bodySystems" class="form-control" onchange="if (typeof (this.selectedIndex) != 'undefined') refreshTermListOnSystem(this.options[this.selectedIndex].id)"></select> | |
887 | + <select id="AABodySystems" class="form-control" onchange="if (typeof (this.selectedIndex) != 'undefined') refreshTermListOnSystemSel(this.options[this.selectedIndex].id)" style="display:none;"></select> | |
888 | + </div> | |
889 | + </div> | |
890 | + <div class="form-group"> | |
891 | + <label class="col-sm-4 control-label" for="inputPassword3">Area</label> | |
892 | + <div class="col-sm-8"> | |
893 | + <select class="form-control" disabled> | |
894 | + <option value="1" selected="">Entire View</option> | |
895 | + </select> | |
896 | + </div> | |
897 | + </div> | |
898 | + </div> | |
899 | + </div> | |
900 | + | |
901 | + | |
902 | + </div> | |
903 | + | |
904 | + <!--DA > List Manager > Multiple structure selection should not be available.--> | |
905 | + <div class="form-group"> | |
906 | + <select id="termList" class="form-control" size="10" onclick="if (typeof (this.selectedIndex) != 'undefined') onListManagerTermSelection(this.options[this.selectedIndex].id, true)"></select> | |
907 | + </div> | |
908 | + | |
909 | + </div> | |
910 | + <div style="clear:both;"></div> | |
911 | + | |
912 | + | |
913 | + | |
914 | + | |
915 | + </div> | |
916 | + </div> | |
917 | + | |
918 | + </div> | |
919 | + <div class="modal-footer" id="totalTerms"> | |
920 | + <!--<span class="pull-left marginTop5">424 Structures</span>--> | |
921 | + <!--<button data-dismiss="modal" class="btn btn-primary" type="button"><i class="fa fa-arrow-circle-right"></i></button>--> | |
922 | + </div> | |
923 | + </div> | |
924 | + | |
925 | + <!--background disable div--> | |
926 | + | |
927 | + <div id="modelbackground"></div> | |
928 | + | |
929 | + | |
930 | + <!--Edit Shape Modal--> | |
931 | + | |
932 | + | |
933 | + <div class="modeleditstyle" id="modeleditstyle" style="z-index: 1000000000; background: white;width: 302px;position:absolute;left:40%;right:0;top:70px;"> | |
934 | + <div class="modal-content"> | |
935 | + <div class="modal-header annotation-modal-header"> | |
936 | + <h4 class="modal-title" id="myModalLabel33">Edit Shape Style</h4> | |
937 | + </div> | |
938 | + <form id="editStyleForm"> | |
939 | + <div class="modal-body"> | |
940 | + <div class="marginTopBtm10"> | |
941 | + <div class="well well-sm no-margin-btm"> | |
942 | + <div class="row"> | |
943 | + <div class="col-sm-12"> | |
944 | + <div class="checkbox no-margin"> | |
945 | + <label> | |
946 | + <input id="fill-option" type="checkbox" checked onclick="enableDisableFillOption()"> Fill Option | |
947 | + </label> | |
948 | + </div> | |
949 | + </div> | |
950 | + <div class="col-sm-6 enableDisableOpacity"> | |
951 | + <!--<div class="radio"> | |
952 | + <label> | |
953 | + <input type="radio" name="filloption" id="filloption1" value="filloption1"> | |
954 | + <span class="">Texture</span> | |
955 | + <img id="editstyleTexture" src="~/../content/images/common/annotation-tool-bar/pattern-picker.png" alt="" class="pattern-picker" data-toggle="modal" data-target="#pattern"> | |
956 | + </label> | |
957 | + </div>--> | |
958 | + <div class="radio"> | |
959 | + <label> | |
960 | + <input type="radio" name="filloption" id="filloption2" value="filloption2" checked style="margin-top:8px;"> | |
961 | + | |
962 | + | |
963 | + <div id="editstylebackgroundcolor" class="form-group" style="display:inline-flex;vertical-align:top;cursor:pointer;margin-right:36px;float:left;"> | |
964 | + <span style="font-weight: normal; float: left; padding-top: 5px; padding-right: 5px;">Color</span> | |
965 | + <input type="text" class="form-control outerBackgroundColor" data-control="saturation" style="display:none;" value="#0088cc"> | |
966 | + </div> | |
967 | + | |
968 | + | |
969 | + </label> | |
970 | + </div> | |
971 | + </div> | |
972 | + <div class="col-sm-6 no-padding marginTop10 enableDisableOpacity"> | |
973 | + <div class="row"> | |
974 | + <label class="pull-left" style="font-weight:normal;">Scale</label> | |
975 | + <div id="edit-slider-3" class="pull-left pl-12" style="width:62%; margin-left:3%; margin-top:2%;"> | |
976 | + <div id="slider-range-min-3"></div> | |
977 | + </div> | |
978 | + </div> | |
979 | + | |
980 | + <div class="row"> | |
981 | + <label class="pull-left" style="font-weight:normal;">Opacity</label> | |
982 | + <div id="edit-slider-4" class="pull-left pl-12" style="width:53%; margin-left:3%; margin-top:2%;"> | |
983 | + <div id="slider-range-min-4"></div> | |
984 | + </div> | |
985 | + </div> | |
986 | + | |
987 | + <div class="clearfix"></div> | |
988 | + | |
989 | + | |
990 | + </div> | |
991 | + </div> | |
992 | + | |
993 | + </div> | |
994 | + </div> | |
995 | + <div class="marginTopBtm10"> | |
996 | + <div class="well well-sm no-margin-btm"> | |
997 | + <div class="row"> | |
998 | + <div class="col-sm-12"> | |
999 | + <div class="checkbox no-margin"> | |
1000 | + <label> | |
1001 | + <input id="Outline-Option" onclick="enableDisableOutline()" type="checkbox" checked> Outline Option | |
1002 | + </label> | |
1003 | + </div> | |
1004 | + </div> | |
1005 | + <div class="col-sm-6 setEnableDisableForEditShapeStyle"> | |
1006 | + <label class="marginTop5"> | |
1007 | + <span style="font-weight: normal; float: left; padding-top: 5px; padding-right: 5px;">Color</span> | |
1008 | + <div class="form-group" id="outlineColor" style="display:inline-flex;vertical-align:top;cursor:pointer;margin-right:36px;float:left;"> | |
1009 | + | |
1010 | + <input type="text" class="form-control borderColorCanvasPreview" data-control="saturation" style="display:none;" value="#0088cc"> | |
1011 | + </div> | |
1012 | + | |
1013 | + | |
1014 | + </label> | |
1015 | + </div> | |
1016 | + | |
1017 | + <div class="col-sm-6 setEnableDisableForEditShapeStyle"> | |
1018 | + <div class="form-horizontal"> | |
1019 | + <div class="form-group"> | |
1020 | + <label class="col-sm-3 control-label" style=" font-weight:normal; padding-top:9px;">Size</label> | |
1021 | + <div class="col-sm-9 marginTop5"> | |
1022 | + <select id="borderWidthCanvasElement" class="form-control input-sm"> | |
1023 | + <option value="1">1</option> | |
1024 | + <option value="2">2</option> | |
1025 | + <option value="3">3</option> | |
1026 | + <option value="4">4</option> | |
1027 | + <option value="5">5</option> | |
1028 | + </select> | |
1029 | + </div> | |
1030 | + </div> | |
1031 | + </div> | |
1032 | + </div> | |
1033 | + | |
1034 | + </div> | |
1035 | + </div> | |
1036 | + </div> | |
1037 | + | |
1038 | + <div class="marginTopBtm10"> | |
1039 | + | |
1040 | + <div class="well well-sm no-margin-btm blankshapediv"> | |
1041 | + <div class="outlinediv" id="outlinedivId" style="border: 1px solid #000000;"> | |
1042 | + <div id="imgOpacity" style="background-color: #ffffff" class="fullcolordiv imgopacity"> | |
1043 | + </div> | |
1044 | + </div> | |
1045 | + </div> | |
1046 | + | |
1047 | + </div> | |
1048 | + </div> | |
1049 | + <div class="modal-footer"> | |
1050 | + <button id="btnShapeStyle" type="button" class="btn btn-primary btn-sm" ng-click="setPropertiesForShapes('imgOpacity')"> | |
1051 | + OK | |
1052 | + </button> | |
1053 | + <button type="button" class="btn btn-primary btn-sm" data-dismiss="modal" ng-click="disableAnnotationToolBar()">Cancel</button> | |
1054 | + </div> | |
1055 | + </form> | |
1056 | + </div> | |
1057 | + </div> | |
1058 | + | |
1059 | + <!--Export Image Modal--> | |
1060 | + <div class="modal fade export-image ui-draggable in" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" | |
1061 | + style="z-index: 1200002;"> | |
1062 | + <div class="modal-dialog modal-sm" role="document"> | |
1063 | + <div class="modal-content"> | |
1064 | + <div class="modal-header annotation-modal-header ui-draggable-handle"> | |
1065 | + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> | |
1066 | + <h4 class="modal-title" id="">Save As</h4> | |
1067 | + </div> | |
1068 | + <div class="modal-body"> | |
1069 | + <div class="row paddTopbtm15"> | |
1070 | + <div class="col-sm-12"> | |
1071 | + <div class="form-group"> | |
1072 | + <label for="filename">Filename:</label> | |
1073 | + <div class="input-group"> | |
1074 | + <input type="text" class="form-control" id="filename" placeholder="" ng-model="filename"> | |
1075 | + <div class="input-group-addon">.jpg</div> | |
1076 | + </div> | |
1077 | + </div> | |
1078 | + </div> | |
1079 | + </div> | |
1080 | + | |
1081 | + </div> | |
1082 | + <div class="modal-footer"> | |
1083 | + <div class="row"> | |
1084 | + <input type="file" id="file1" style="display:none"> | |
1085 | + <!--<a href="data:application/xml;charset=utf-8,your code here" download="filename.html">Save</a--> | |
1086 | + <div class="col-sm-12"><button id="btnSaveEI" class="btn btn-primary" data-dismiss="modal" type="button">Ok</button></div> <!--onclick="makeScreenshot();"--><!--ng-click="dialogs.saveAs()"--><!--ng-click="ShowAlert()"--> | |
1087 | + </div> | |
1088 | + </div> | |
1089 | + | |
1090 | + </div> | |
1091 | + </div> | |
1092 | + </div> | |
1093 | + <div class="modal fade export-image-ipad ui-draggable in" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" | |
1094 | + style="z-index: 1200002;"> | |
1095 | + <div class="modal-dialog modal-sm" role="document"> | |
1096 | + <div class="modal-content"> | |
1097 | + <div class="modal-header annotation-modal-header ui-draggable-handle"> | |
1098 | + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> | |
1099 | + <h4 class="modal-title" id="">Download Export Image</h4> | |
1100 | + </div> | |
1101 | + <div class="modal-body"> | |
1102 | + <div class="row paddTopbtm15"> | |
1103 | + <div class="col-sm-12"> | |
1104 | + <div class="form-group"> | |
1105 | + <label for="filename">Exported image open in next Teb. Please download it</label> | |
1106 | + | |
1107 | + </div> | |
1108 | + </div> | |
1109 | + </div> | |
1110 | + | |
1111 | + </div> | |
1112 | + <div class="modal-footer"> | |
1113 | + <div class="row"> | |
1114 | + <input type="file" id="file1" style="display:none"> | |
1115 | + <!--<a href="data:application/xml;charset=utf-8,your code here" download="filename.html">Save</a--> | |
1116 | + <div class="col-sm-12"><button id="btnPrintPreview" class="btn btn-primary" data-dismiss="modal" type="button">Ok</button></div> <!--onclick="makeScreenshot();"--><!--ng-click="dialogs.saveAs()"--><!--ng-click="ShowAlert()"--> | |
1117 | + </div> | |
1118 | + </div> | |
1119 | + | |
1120 | + </div> | |
1121 | + </div> | |
1122 | + </div> | |
1123 | + <!--Print Active Viewer--> | |
1124 | + <div class="print-box-active portrait-box-active" id="printBox" style="display: none;"> | |
1125 | + <div id="printDivContent"> | |
1126 | + <div class=""> | |
1127 | + <div class="print-col-sm-4" style="top: 10px; position: absolute; left: 10px;"> | |
1128 | + <span class="pull-left font12 print-span-font" id="spnModule"></span> | |
1129 | + </div> | |
1130 | + <div class="print-col-sm-4" style="top: 10px; position: absolute; right: 10px;"> | |
1131 | + <span class="pull-right font12 print-span-font" id="spnBodyViewTitle"></span> | |
1132 | + </div> | |
1133 | + </div> | |
1134 | + <div class=" mar-top-25" align="center" id="dvPortrait" style="text-align: center;"> | |
1135 | + <img src="" alt="" class="logo-image" id="snipImage" style="width: 100%;" /> | |
1136 | + </div> | |
1137 | + <div> | |
1138 | + <div class="print-col-sm-4" style="position: absolute; bottom: 20px;"> | |
1139 | + <span class="pull-left marginTop10 font12 print-span-font">Copyright {{current_year}} A.D.A.M., Inc. All Rights Reserved</span> | |
1140 | + </div> | |
1141 | + <div class="print-col-sm-4" style="position: absolute; bottom: 20px; right: 10px;"> | |
1142 | + <span class="pull-right print-marginTop10 bgnone no-margin"> | |
1143 | + <img class="logo-image" src="content/images/adam-logo-small.png" alt=""> | |
1144 | + </span> | |
1145 | + </div> | |
1146 | + </div> | |
1147 | + <div class="clearfix"></div> | |
1148 | + </div> | |
1149 | + </div> | |
1150 | + | |
1151 | + <!--Print Preview Modal--> | |
1152 | + <div id="dvPrintPreview" style="display: none;"></div> | |
1153 | + </div> | |
1154 | + </div> | |
1155 | + <!--RESET PASSWORD FORM--> | |
1156 | + <div id="passwordReset" ng-show="isVisibleResetPass"> | |
1157 | + <table width="500" border="0" align="center" cellpadding="0" cellspacing="0"> | |
1158 | + <tbody> | |
1159 | + <tr> | |
1160 | + <td align="center" valign="middle" bgcolor="#393939 " style="padding:30px 0 20px 0;"><a href="#"><img src="../content/images/logo.png" alt="AIA" title="AIA" /></a></td> | |
1161 | + </tr> | |
1162 | + <tr> | |
1163 | + <td align="center" valign="top" bgcolor="#808d43" style="padding:20px; overflow:hidden;"> | |
1164 | + <form name="resetPasswordForm" novalidate> | |
1165 | + <table width="100%" border="0" cellspacing="0" cellpadding="0" ng-controller="HomeController"> | |
1166 | + <tbody> | |
1167 | + | |
1168 | + <tr> | |
1169 | + <td style=" font-size:26px; font-weight:bold; color:#fff; font-family:Gotham, 'Helvetica Neue', Helvetica, Arial, sans-serif"><strong>Reset Password</strong></td> | |
1170 | + </tr> | |
1171 | + <tr> | |
1172 | + <td> </td> | |
1173 | + </tr> | |
1174 | + <tr> | |
1175 | + <td style="font-family:Gotham, 'Helvetica Neue', Helvetica, Arial, sans-serif; color:#fff;">New Password </td> | |
1176 | + </tr> | |
1177 | + <tr> | |
1178 | + <td> | |
1179 | + <input class="form-control" name="newPassword" value="*****" type="password" style="padding:3px 5px; height:25px; width:98%;" ng-model="userInfo.newPassword" ng-minlength="8" ng-maxlength="20" required> | |
1180 | + <span style="color: maroon; font-weight:bold" ng-show="resetPasswordForm.newPassword.$touched && resetPasswordForm.newPassword.$invalid && resetPasswordForm.newPassword.$pristine">The password is required.</span> | |
1181 | + <p ng-show="resetPasswordForm.newPassword.$error.minlength" style="font-weight: bold; color: maroon;">Password length must be between 8 - 20 characters.</p> | |
1182 | + <p ng-show="resetPasswordForm.newPassword.$error.maxlength" style="font-weight: bold; color: maroon;">Password length must be between 8 - 20 characters.</p> | |
1183 | + </td> | |
1184 | + </tr> | |
1185 | + <tr> | |
1186 | + <td> </td> | |
1187 | + </tr> | |
1188 | + <tr> | |
1189 | + <td style="font-family:Gotham, 'Helvetica Neue', Helvetica, Arial, sans-serif; color:#fff;">Confirm Password </td> | |
1190 | + </tr> | |
1191 | + | |
1192 | + <tr> | |
1193 | + <td> | |
1194 | + <input class="form-control" name="confirmPassword" value="*****" type="password" style="padding:3px 5px; height:25px; width:98%;" ng-model="userInfo.confirmPassword" required> | |
1195 | + <span style="color: maroon; font-weight: bold; " ng-show="resetPasswordForm.confirmPassword.$touched && resetPasswordForm.confirmPassword.$invalid">Confirm password is required.</span> | |
1196 | + <span style="color: maroon; font-weight: bold; " ng-if="resetPasswordForm.newPassword !== resetPasswordForm.confirmPassword">{{passwordMismatchMessage}}</span> | |
1197 | + </td> | |
1198 | + </tr> | |
1199 | + <tr> | |
1200 | + <td> </td> | |
1201 | + </tr> | |
1202 | + <tr> | |
1203 | + <td> | |
1204 | + <button type="submit" ng-disabled="resetPasswordForm.$invalid" ng-click="ResetUserPassword(userInfo)" style="background: #0072a7; border: 1px solid #005076; cursor: pointer; color: #fff; padding: 5px 10px; font-size: 16px; text-transform: uppercase; text-align: center; text-decoration: none; font-family: gotham, 'Helvetica Neue', helvetica, arial, sans-serif; " id="btnUpdatePassword">Submit</button> <!--ng-submit="submitForm(resetPwdForm.$valid)"--> <!--ng-click="ResetUserPassword(userInfo)"--> | |
1205 | + </td> | |
1206 | + </tr> | |
1207 | + </tbody> | |
1208 | + </table> | |
1209 | + </form> | |
1210 | + </tr> | |
1211 | + | |
1212 | + | |
1213 | + </tbody> | |
1214 | + </table> | |
1215 | + </div> | |
1216 | + | |
1217 | + <div class="modal fade" id="messageModal" role="dialog"> | |
1218 | + <div class="modal-dialog"> | |
1219 | + | |
1220 | + <div class="modal-content"> | |
1221 | + <div class="modal-header"> | |
1222 | + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> | |
1223 | + </div> | |
1224 | + <div class="modal-title"></div> | |
1225 | + <div class="modal-body">{{errorMessage}}</div> | |
1226 | + <div class="modal-footer"> <button type="button" class="btn btn-primary" data-dismiss="modal">OK</button></div> | |
1227 | + </div> | |
1228 | + </div> | |
1229 | + </div> | |
1230 | + | |
1231 | + <!--Admin Form (Under Process)--> | |
1232 | + | |
1233 | + | |
1234 | + <!--Available modules list modal after login--> | |
1235 | + <div class=" fade ui-draggable in" id="dvUserModulesInfo" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" style="padding-left: 17px; display: none; left: 0px !important; z-index: 111111; position: fixed; top: 0; overflow-x: hidden; overflow-y: auto; right: 0px; bottom: 0px; "> | |
1236 | + <div class="modal-dialog" role="document"> | |
1237 | + <div class="modal-content"> | |
1238 | + <div class="modal-header ui-draggable-handle " style="color: #ffffff; background-color: #0095da; border-color: #007ab3;cursor:default;"> | |
1239 | + <!--color: #e5e5e5;--> | |
1240 | + <!--bg-primary--> | |
1241 | + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> | |
1242 | + <h4 class="text-left lhgt19 padd5" style="color:#fff; text-align:left;">Coming Soon...</h4> | |
1243 | + </div> | |
1244 | + | |
1245 | + <div class="modal-body"> | |
1246 | + <div class="panel-body"> | |
1247 | + <!-- form --> | |
1248 | + <form class="form-horizontal"> | |
1249 | + | |
1250 | + <!--<hr style="border: 1px solid;"/>--> | |
1251 | + <!--<hr style="border: 1px solid;" />--> | |
1252 | + <div> | |
1253 | + <div class="form-group" id="moduleDiv7"> | |
1254 | + <div class="col-sm-12"><i>• Curriculum Builder</i></div> <!--(To be available by 09/25/2017)--> | |
1255 | + </div> | |
1256 | + <div class="form-group" id="moduleDiv8"> | |
1257 | + <div class="col-sm-8"><i>• Anatomy Test</i></div> <!--(To be available by 08/28/2017)--> | |
1258 | + </div> | |
1259 | + <div class="form-group" id="moduleDiv13"> | |
1260 | + <div class="col-sm-8">• A.D.A.M Images</div> | |
1261 | + </div> | |
1262 | + </div> | |
1263 | + <div class="form-group"> | |
1264 | + <div style="text-align: center"> | |
1265 | + <button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#mymodal" data-dismiss="modal"><i class="fa fa-check"></i> OK</button> | |
1266 | + </div> | |
1267 | + </div> | |
1268 | + </form> | |
1269 | + </div> | |
1270 | + </div> | |
1271 | + | |
1272 | + </div> | |
1273 | + </div> | |
1274 | + </div> | |
1275 | + | |
1276 | + <!-- Terms & Condition Modal --> | |
1277 | + <div class=" fade ui-draggable in" id="dvTermCondition" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" style="padding-left: 17px; display: none; left: 0px !important; z-index: 111111; position: fixed; top: 0; overflow-x: hidden; overflow-y: auto; right: 0px; bottom: 0px; "> | |
1278 | + <div class="modal-dialog" role="document"> | |
1279 | + <div class="modal-content"> | |
1280 | + <div class="modal-header ui-draggable-handle " style="color: #ffffff; background-color: #0095da; border-color: #007ab3;cursor:default;"> | |
1281 | + <!--color: #e5e5e5;--> | |
1282 | + <h6 class="text-left lhgt19 padd5" style="color:#fff; text-align:left;">Terms and Conditions</h6> | |
1283 | + </div> | |
1284 | + | |
1285 | + <div class="modal-body" style="width: 597px; height: 400px; overflow-x: auto;"> | |
1286 | + <div class="panel-body"> | |
1287 | + <div id="dvTerms" style="font-size: 13px;"></div> | |
1288 | + </div> | |
1289 | + </div> | |
1290 | + <div class="modal-footer ui-draggable-handle " style="color: #ffffff; cursor:default;"> | |
1291 | + <!--background-color: #0095da; border-color: #007ab3;--> | |
1292 | + <!-- form --> | |
1293 | + <form class="form-horizontal"> | |
1294 | + <!--<div class="form-group">--> | |
1295 | + <div style="clear: left; float: left; color: #000;"><input type="checkbox" id="chkAccept" ng-model="checked" style="vertical-align: top;" /> I accept</div> | |
1296 | + <div style="float: right;"><button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#mymodal" ng-disabled="!checked" data-dismiss="modal" ng-click="UpdateLicenseTermStatus()"><i class="fa fa-check"></i> Next</button></div> | |
1297 | + <!--</div>--> | |
1298 | + </form> | |
1299 | + </div> | |
1300 | + </div> | |
1301 | + </div> | |
1302 | + </div> | |
1303 | + <script> | |
1304 | + function enableDisableFillOption() { | |
1305 | + if (document.getElementById('fill-option').checked) { | |
1306 | + // $('#imgOpacity').attr("background-color"); | |
1307 | + //$('#imgOpacity').css({"background-color"}) | |
1308 | + //$("#filloption1").css({ "pointer-events": "auto" }); | |
1309 | + //$("#filloption12").css({ "pointer-events": "auto" }); | |
1310 | + | |
1311 | + var x = $("#editstylebackgroundcolor span.minicolors-swatch-color").css('background-color'); | |
1312 | + $("#imgOpacity").css("background-color", x); | |
1313 | + $("#edit-slider-3").css({ "pointer-events": "auto" }); | |
1314 | + $("#edit-slider-4").css({ "pointer-events": "auto" }); | |
1315 | + $("#editstylebackgroundcolor").css({ "pointer-events": "auto" }); | |
1316 | + $("#editstyleTexture").css({ "pointer-events": "auto" }); | |
1317 | + $(".enableDisableOpacity label").css({ "cursor": "pointer" }); | |
1318 | + $(".enableDisableOpacity").css({ "opacity": "1" }) | |
1319 | + document.getElementById("filloption1").disabled = false; | |
1320 | + document.getElementById("filloption2").disabled = false; | |
1321 | + document.getElementById("filloption1").style.cursor = "default"; | |
1322 | + document.getElementById("filloption2").style.cursor = "default"; | |
1323 | + | |
1324 | + | |
1325 | + | |
1326 | + } | |
1327 | + else { | |
1328 | + $('#imgOpacity').css("background-color", "transparent"); | |
1329 | + //$("#filloption1").css({ "pointer-events": "none" }); | |
1330 | + //$("#filloption2").css({ "pointer-events": "none" }); | |
1331 | + $("#edit-slider-3").css({ "pointer-events": "none" }); | |
1332 | + $("#edit-slider-4").css({ "pointer-events": "none" }); | |
1333 | + $("#editstylebackgroundcolor").css({ "pointer-events": "none" }); | |
1334 | + $("#editstyleTexture").css({ "pointer-events": "none" }); | |
1335 | + $(".enableDisableOpacity label").css({ "cursor": "default" }); | |
1336 | + $(".enableDisableOpacity").css({ "opacity": ".5" }) | |
1337 | + document.getElementById("filloption1").disabled = true; | |
1338 | + document.getElementById("filloption2").disabled = true; | |
1339 | + document.getElementById("filloption1").style.cursor = "default"; | |
1340 | + document.getElementById("filloption2").style.cursor = "default"; | |
1341 | + | |
1342 | + | |
1343 | + | |
1344 | + } | |
1345 | + | |
1346 | + } | |
1347 | + function enableDisableOutline() { | |
1348 | + | |
1349 | + if (document.getElementById('Outline-Option').checked) { | |
1350 | + var x = $("#outlineColor span.minicolors-swatch-color").css('background-color'); | |
1351 | + $(".marginTopBtm10 div.outlinediv").css("border-color", x); | |
1352 | + // var borderWidth = $("#outlineColor span.minicolors-swatch-color").css('border-width'); | |
1353 | + // $("#imgOpacity").css("border-width", borderWidth); | |
1354 | + | |
1355 | + $("#borderWidthCanvasElement").css({ "pointer-events": "auto" }); | |
1356 | + $("#outlineColor").css({ "pointer-events": "auto" }); | |
1357 | + $(".setEnableDisableForEditShapeStyle").css({ "opacity": "1" }) | |
1358 | + } | |
1359 | + else { | |
1360 | + $('.marginTopBtm10 div.outlinediv').css("border-color", "transparent"); | |
1361 | + $("#borderWidthCanvasElement").css({ "pointer-events": "none" }); | |
1362 | + $("#outlineColor").css({ "pointer-events": "none" }); | |
1363 | + $(".setEnableDisableForEditShapeStyle").css({ "opacity": ".5" }) | |
1364 | + } | |
1365 | + } | |
1366 | + | |
1367 | + </script> | |
1368 | + | |
1369 | + <script> | |
1370 | + function Brushsize(object) { | |
1371 | + | |
1372 | + object.value = object.value.replace(/[^0-9]/g, ''); | |
1373 | + if (parseInt(object.value) <= 0) { | |
1374 | + object.value = 1; | |
1375 | + } | |
1376 | + if (parseInt(object.value) >= 1 && parseInt(object.value) <= 60) { | |
1377 | + object.value = object.value; | |
1378 | + } | |
1379 | + if (parseInt(object.value) > 60) { | |
1380 | + object.value = object.value.slice(0, 1); | |
1381 | + | |
1382 | + } | |
1383 | + | |
1384 | + } | |
1385 | + </script> | |
1386 | + | |
1387 | + | |
1388 | + <!--<script src="libs/jquery/1.11.3/jquery.min.js"></script>--> | |
1389 | + <script src="libs/jquery/2.1.3/jquery.min.js"></script> | |
1390 | + <script src="libs/jquery/1.11.4/jquery-ui.js"></script> | |
1391 | + | |
1392 | + <script src="libs/jquery/jquery_plugin/jquery.mCustomScrollbar.concat.min.js"></script> | |
1393 | + <script src="themes/default/scripts/bootstrap/3.3.5/bootstrap.js"></script> | |
1394 | + <script src="libs/angular/1.4.9/angular.min.js"></script> | |
1395 | + <script src="libs/angular/1.4.9/angular-route.min.js"></script> | |
1396 | + <script src="libs/angular/1.4.9/angular-sanitize.min.js"></script> | |
1397 | + <script src="libs/angular/1.4.9/ngStorage.js"></script> | |
1398 | + <script src="content/js/custom/custom.js"></script> | |
1399 | + <!--Annotation Toolbar : jcanvas Library--> | |
1400 | + | |
1401 | + <script src="libs/jcanvas/jcanvas.min.js"></script> | |
1402 | + <script src="libs/jcanvas/jcanvas.handle.min.js"></script> | |
1403 | + | |
1404 | + <script src="libs/jinqJs.js"></script> | |
1405 | + <script src="libs/jquery/jquery_plugin/jsPanel/jspanel/jquery.jspanel.js"></script> | |
1406 | + <script src="libs/video_4_12_11/video_4_12_11.js"></script> | |
1407 | + <script src="libs/jquery/jquery_plugin/SpeechBubble/bubble.js"></script> | |
1408 | + <!--<script src="libs/jquery/jquery_plugin/jsPanel/jspanel/jquery.jspanel.min.js"></script>--> | |
1409 | + <script src="app/main/AIA.js"></script> | |
1410 | + <script src="app/main/Link.js"></script> | |
1411 | + <script src="content/scripts/js/custom/custom.js"></script> | |
1412 | + <script src="app/filters/ColorMatrixFilter.js"></script> | |
1413 | + <script src="app/utility/Matrix.js"></script> | |
1414 | + <script src="app/utility/Point.js"></script> | |
1415 | + <script src="app/utility/Rectangle.js"></script> | |
1416 | + <script src="app/utility/BitmapData.js"></script> | |
1417 | + <script src="app/utility/Paint.js"></script> | |
1418 | + <script src="app/controllers/DAController.js"></script> | |
1419 | + <script src="app/controllers/CIController.js"></script> | |
1420 | + <script src="app/controllers/CAController.js"></script> | |
1421 | + <script src="app/controllers/3dAController.js"></script> | |
1422 | + <script src="app/controllers/CurrBuildController.js"></script> | |
1423 | + <script src="app/controllers/AnatTestController.js"></script> | |
1424 | + <script src="app/controllers/LabExercController.js"></script> | |
1425 | + <script src="app/controllers/ADAMImgController.js"></script> | |
1426 | + <script src="app/controllers/AODController.js"></script> | |
1427 | + <script src="app/controllers/HomeController.js"></script> | |
1428 | + <script src="app/controllers/LinkController.js"></script> | |
1429 | + <script src="app/services/AuthenticationService.js"></script> | |
1430 | + <script src="app/services/ConfigurationService.js"></script> | |
1431 | + <script src="app/services/AdminService.js"></script> | |
1432 | + <script src="app/controllers/TileViewListController.js"></script> | |
1433 | + | |
1434 | + <script src="app/services/ModuleService.js"></script> | |
1435 | + | |
1436 | + <script src="app/services/DataService.js"></script> | |
1437 | + <script src="app/services/TermService.js"></script> | |
1438 | + <script src="libs/jquery/jquery_plugin/jqueryui.js"></script> | |
1439 | + <script src="libs/jquery/jquery_plugin/slider-pips/jquery-ui-slider-pips.js"></script> | |
1440 | + <script src="../app/services/LabExerciseService.js"></script> | |
1441 | + <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui-touch-punch/0.2.3/jquery.ui.touch-punch.min.js"></script> | |
1442 | + | |
1443 | + <script src="libs/jquery/jquery_plugin/color-picker/jquery.minicolors.min.js"></script> | |
1444 | + <!--<script src="libs/colorpicker/jquery.minicolors.min.js"></script>--> | |
1445 | + <!--<script src="libs/color-picker/jquery.minicolors.min.js"></script>--> | |
1446 | + | |
1447 | + <script src="libs/sketch.js"></script> | |
1448 | + | |
1449 | + <!--<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.js"></script>--> | |
1450 | + <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script> | |
1451 | + <script src="libs/html2canvas.js"></script> | |
1452 | + <script src="libs/FileSaver.js"></script> | |
1453 | + <script src="app/services/LabExerciseService.js"></script> | |
1454 | + <!--<script type="text/javascript"> | |
1455 | + $(function () { | |
1456 | + $('#canvas').sketch(); | |
1457 | + }); | |
1458 | + </script>--> | |
1459 | + | |
1460 | + <script> | |
1461 | + | |
1462 | + $(function () { | |
1463 | + $('[data-toggle="tooltip"]').tooltip(); | |
1464 | + }) | |
1465 | + | |
1466 | + </script> | |
1467 | + <script> | |
1468 | + (function ($) { | |
1469 | + $(window).load(function () { | |
1470 | + $(".sidebar").mCustomScrollbar({ | |
1471 | + autoHideScrollbar: true, | |
1472 | + //theme:"rounded" | |
1473 | + }); | |
1474 | + | |
1475 | + }); | |
1476 | + })(jQuery); | |
1477 | + </script> | |
1478 | + <script> | |
1479 | + $(function () { | |
1480 | + $(".modal").draggable(); | |
1481 | + $(".annotationTollbar").draggable(); | |
1482 | + $(".modeleditstyle").draggable(); | |
1483 | + $("#annotationTextModal").draggable(); | |
1484 | + $("#modal-settings").draggable(); | |
1485 | + }); | |
1486 | + </script> | |
1487 | + | |
1488 | + | |
1489 | + | |
1490 | + | |
1491 | + <script type="text/javascript"> | |
1492 | + $(function () { | |
1493 | + | |
1494 | + $("#text-left").on('click', function () { | |
1495 | + | |
1496 | + //Annotation: Formatting buttons color is not change when select. | |
1497 | + | |
1498 | + $("#text-center").removeClass("ActiveFormattingButtonClass"); | |
1499 | + $("#text-right").removeClass("ActiveFormattingButtonClass"); | |
1500 | + $("#text-left").addClass("ActiveFormattingButtonClass"); | |
1501 | + $("#text_area").css("text-align", "left"); | |
1502 | + | |
1503 | + | |
1504 | + }); | |
1505 | + | |
1506 | + | |
1507 | + $("#text-center").on('click', function () { | |
1508 | + | |
1509 | + //Annotation: Formatting buttons color is not change when select. | |
1510 | + | |
1511 | + $("#text-right").removeClass("ActiveFormattingButtonClass"); | |
1512 | + $("#text-left").removeClass("ActiveFormattingButtonClass"); | |
1513 | + $("#text-center").addClass("ActiveFormattingButtonClass"); | |
1514 | + $("#text_area").css("text-align", "center"); | |
1515 | + | |
1516 | + | |
1517 | + }); | |
1518 | + | |
1519 | + | |
1520 | + $("#text-right").on('click', function () { | |
1521 | + | |
1522 | + //Annotation: Formatting buttons color is not change when select. | |
1523 | + | |
1524 | + $("#text-left").removeClass("ActiveFormattingButtonClass"); | |
1525 | + $("#text-center").removeClass("ActiveFormattingButtonClass"); | |
1526 | + $("#text-right").addClass("ActiveFormattingButtonClass"); | |
1527 | + $("#text_area").css("text-align", "right"); | |
1528 | + }); | |
1529 | + | |
1530 | + | |
1531 | + $("#text-bold").on('click', function () { | |
1532 | + | |
1533 | + //Annotation: Formatting buttons color is not change when select. | |
1534 | + $("#text-bold").toggleClass("ActiveFormattingButtonClass"); | |
1535 | + | |
1536 | + if ($("#text-bold").hasClass("ActiveFormattingButtonClass")) { | |
1537 | + $("#text_area").css("font-weight", "bold"); | |
1538 | + } | |
1539 | + else { | |
1540 | + $("#text_area").css("font-weight", "normal"); | |
1541 | + } | |
1542 | + | |
1543 | + | |
1544 | + }); | |
1545 | + | |
1546 | + $("#text-italic").on('click', function () { | |
1547 | + | |
1548 | + //Annotation: Formatting buttons color is not change when select. | |
1549 | + $("#text-italic").toggleClass("ActiveFormattingButtonClass"); | |
1550 | + if ($("#text-italic").hasClass("ActiveFormattingButtonClass")) { | |
1551 | + $("#text_area").css("font-style", "italic"); | |
1552 | + } | |
1553 | + else { | |
1554 | + $("#text_area").css("font-style", "normal"); | |
1555 | + } | |
1556 | + }); | |
1557 | + | |
1558 | + $("#text-underline").on('click', function () { | |
1559 | + | |
1560 | + //Annotation: Formatting buttons color is not change when select. | |
1561 | + $("#text-underline").toggleClass("ActiveFormattingButtonClass"); | |
1562 | + | |
1563 | + if ($("#text-underline").hasClass("ActiveFormattingButtonClass")) { | |
1564 | + $("#text_area").css("text-decoration", "underline"); | |
1565 | + } | |
1566 | + else { | |
1567 | + $("#text_area").css("text-decoration", "none"); | |
1568 | + } | |
1569 | + | |
1570 | + | |
1571 | + }); | |
1572 | + | |
1573 | + | |
1574 | + $("#selected-font-size").change(function () { | |
1575 | + | |
1576 | + $("#text_area").css("font-size", $(this).val() + "px"); | |
1577 | + }); | |
1578 | + | |
1579 | + $("#selected-font-family").change(function () { | |
1580 | + | |
1581 | + $("#text_area").css("font-family", $(this).val()); | |
1582 | + | |
1583 | + }); | |
1584 | + | |
1585 | + | |
1586 | + }); | |
1587 | + | |
1588 | + | |
1589 | + | |
1590 | + </script> | |
1591 | + | |
1592 | + | |
1593 | + <script> | |
1594 | + $(document).ready(function () { | |
1595 | + // $("#font-color .minicolors .minicolors-swatch .minicolors-swatch-color").addClass("ActiveDefaultColorAnnotation"); | |
1596 | + | |
1597 | + var borderWidth = 1; | |
1598 | + var borderColor = "#000"; | |
1599 | + $("#borderWidthCanvasElement").change(function () { | |
1600 | + borderWidth = $(this).val(); | |
1601 | + borderColor = $('#outlineColor .minicolors >.minicolors-swatch > .minicolors-swatch-color').css("background-color"); | |
1602 | + | |
1603 | + if (borderColor != null) { | |
1604 | + document.getElementById("imgOpacity").parentNode.style.border = borderWidth + "px" + " " + "solid" + " " + borderColor; | |
1605 | + //$("#imgOpacity").parent().css("border", borderWidth + "px" + " " + "solid" + borderColor); | |
1606 | + } else { | |
1607 | + | |
1608 | + // $("#imgOpacity").parent().css("border", borderWidth + "px" + " " + "solid"); | |
1609 | + document.getElementById("imgOpacity").parentNode.style.border = borderWidth + "px" + " " + "solid" + " " + borderColor; | |
1610 | + | |
1611 | + } | |
1612 | + }); | |
1613 | + | |
1614 | + | |
1615 | + | |
1616 | + $('.borderColorCanvasPreview').each(function () { | |
1617 | + // $("#font-color .minicolors .minicolors-swatch .minicolors-swatch-color").addClass("ActiveDefaultColorAnnotation"); | |
1618 | + $(this).minicolors({ | |
1619 | + control: $(this).attr('data-control') || 'hue', | |
1620 | + defaultValue: $(this).attr('data-defaultValue') || '', | |
1621 | + format: $(this).attr('data-format') || 'hex', | |
1622 | + keywords: $(this).attr('data-keywords') || '', | |
1623 | + inline: $(this).attr('data-inline') === 'true', | |
1624 | + letterCase: $(this).attr('data-letterCase') || 'lowercase', | |
1625 | + opacity: $(this).attr('data-opacity'), | |
1626 | + position: $(this).attr('data-position') || 'bottom left', | |
1627 | + swatches: $(this).attr('data-swatches') ? $(this).attr('data-swatches').split('|') : [], | |
1628 | + change: function (value, opacity) { | |
1629 | + if (!value) return; | |
1630 | + if (opacity) value += ', ' + opacity; | |
1631 | + if (typeof console === 'object') { | |
1632 | + console.log(value); | |
1633 | + | |
1634 | + borderColor = value; | |
1635 | + //$("#imgOpacity").parent().css("border", borderWidth + "px" + " " + "solid" + borderColor); | |
1636 | + document.getElementById("imgOpacity").parentNode.style.border = borderWidth + "px" + " " + "solid" + " " + borderColor; | |
1637 | + | |
1638 | + | |
1639 | + } | |
1640 | + }, | |
1641 | + theme: 'bootstrap' | |
1642 | + }); | |
1643 | + | |
1644 | + | |
1645 | + }); | |
1646 | + | |
1647 | + | |
1648 | + $('.outerBackgroundColor').each(function () { | |
1649 | + | |
1650 | + $(this).minicolors({ | |
1651 | + control: $(this).attr('data-control') || 'hue', | |
1652 | + defaultValue: $(this).attr('data-defaultValue') || '', | |
1653 | + format: $(this).attr('data-format') || 'hex', | |
1654 | + keywords: $(this).attr('data-keywords') || '', | |
1655 | + inline: $(this).attr('data-inline') === 'true', | |
1656 | + letterCase: $(this).attr('data-letterCase') || 'lowercase', | |
1657 | + opacity: $(this).attr('data-opacity'), | |
1658 | + position: $(this).attr('data-position') || 'bottom left', | |
1659 | + swatches: $(this).attr('data-swatches') ? $(this).attr('data-swatches').split('|') : [], | |
1660 | + change: function (value, opacity) { | |
1661 | + if (!value) return; | |
1662 | + if (opacity) value += ', ' + opacity; | |
1663 | + if (typeof console === 'object') { | |
1664 | + console.log(value); | |
1665 | + $("#imgOpacity").css("background-color", value); | |
1666 | + | |
1667 | + } | |
1668 | + }, | |
1669 | + theme: 'bootstrap' | |
1670 | + }); | |
1671 | + | |
1672 | + }); | |
1673 | + | |
1674 | + | |
1675 | + }); | |
1676 | + </script> | |
1677 | + <script> | |
1678 | + $(function () { | |
1679 | + function onBrushSizeChange() { | |
1680 | + $('.btnCursor').addClass('activebtncolor'); | |
1681 | + $(".btn-annotation").removeClass("activebtncolor"); | |
1682 | + $(".btn-annotation-erase").removeClass("activebtncolor"); | |
1683 | + $(".btn-annotation-erase").removeClass("activebtncolor"); | |
1684 | + $(".annotationpaintbrushsize").removeClass("activebtncolor"); | |
1685 | + var x = $('#canvasPaint').css("z-index"); | |
1686 | + | |
1687 | + var y = $('#canvas').css("z-index"); | |
1688 | + if (x > y) { | |
1689 | + y = parseInt(x) + 1; | |
1690 | + } else { | |
1691 | + y = parseInt(y) + 1; | |
1692 | + } | |
1693 | + $('#canvas').css("z-index", y); | |
1694 | + } | |
1695 | + | |
1696 | + $("#slider-range-min-2").slider({ | |
1697 | + range: "min", | |
1698 | + min: 1, | |
1699 | + max: 60, | |
1700 | + value: 1, | |
1701 | + slide: function (event, ui) { | |
1702 | + | |
1703 | + onBrushSizeChange(); | |
1704 | + | |
1705 | + | |
1706 | + | |
1707 | + $("#btnBrushSize").val(ui.value); | |
1708 | + | |
1709 | + $("#annotationpaintbrushsize").css({ "pointer-events": "auto", "opacity": "1" }); | |
1710 | + $("#annotationpainteraser").css({ "pointer-events": "auto", "opacity": "1" }); | |
1711 | + $("#btnBrushSizeDecrease").css({ "pointer-events": "auto", "opacity": "1" }); | |
1712 | + $("#btnBrushSizeDecrease").css({ "pointer-events": "auto", "opacity": "1" }); | |
1713 | + | |
1714 | + }, | |
1715 | + stop: function (event, ui) { | |
1716 | + | |
1717 | + $("#paintLine").attr("data-size", ui.value); | |
1718 | + | |
1719 | + } | |
1720 | + | |
1721 | + }); | |
1722 | + | |
1723 | + | |
1724 | + $("#btnBrushSize").keydown(function () { | |
1725 | + $("#btnBrushSizeDecrease").css({ "pointer-events": "auto", "opacity": "1" }); | |
1726 | + $("#btnBrushSizeDecrease").css({ "pointer-events": "auto", "opacity": "1" }); | |
1727 | + onBrushSizeChange(); | |
1728 | + var brushSizevalue = this.value; | |
1729 | + | |
1730 | + $("#slider-range-min-2").slider("value", parseInt(brushSizevalue)); | |
1731 | + }); | |
1732 | + $("#btnBrushSize").keyup(function () { | |
1733 | + onBrushSizeChange(); | |
1734 | + var brushSizevalue = this.value; | |
1735 | + if (brushSizevalue == "") { | |
1736 | + | |
1737 | + $("#slider-range-min-2").slider("value", 0); | |
1738 | + | |
1739 | + $("#annotationpaintbrushsize").css({ "pointer-events": "none", "opacity": ".5" }); | |
1740 | + $("#annotationpainteraser").css({ "pointer-events": "none", "opacity": ".5" }); | |
1741 | + } | |
1742 | + else { | |
1743 | + $("#slider-range-min-2").slider("value", parseInt(brushSizevalue)); | |
1744 | + $("#annotationpaintbrushsize").css({ "pointer-events": "auto", "opacity": "1" }); | |
1745 | + $("#annotationpainteraser").css({ "pointer-events": "auto", "opacity": "1" }); | |
1746 | + } | |
1747 | + // $("#slider-range-min-2").slider("value", parseInt(brushSizevalue)); | |
1748 | + }); | |
1749 | + $("#btnBrushSizeIncrement").click(function () { | |
1750 | + if ($("#annotationpaintbrushsize").css('pointer-events') == 'none') { | |
1751 | + $("#annotationpaintbrushsize").css({ "pointer-events": "auto", "opacity": "1" }); | |
1752 | + $("#annotationpainteraser").css({ "pointer-events": "auto", "opacity": "1" }); | |
1753 | + $("#btnBrushSizeDecrease").css({ "pointer-events": "auto", "opacity": "1" }); | |
1754 | + $("#btnBrushSizeDecrease").css({ "pointer-events": "auto", "opacity": "1" }); | |
1755 | + } | |
1756 | + | |
1757 | + onBrushSizeChange(); | |
1758 | + var brushIncrementVar = $("#btnBrushSize").val(); | |
1759 | + if (brushIncrementVar >= 60) { | |
1760 | + $("#slider-range-min-2").slider("value", 60); | |
1761 | + } | |
1762 | + else if (brushIncrementVar == "") { | |
1763 | + var brushIncrementedValue = 1; | |
1764 | + $("#btnBrushSize").val(brushIncrementedValue); | |
1765 | + $("#slider-range-min-2").slider("value", parseInt(brushIncrementedValue)); | |
1766 | + } | |
1767 | + else { | |
1768 | + | |
1769 | + var brushIncrementedValue = parseInt(brushIncrementVar) + 1; | |
1770 | + | |
1771 | + $("#btnBrushSize").val(brushIncrementedValue); | |
1772 | + $("#slider-range-min-2").slider("value", parseInt(brushIncrementedValue)); | |
1773 | + } | |
1774 | + }); | |
1775 | + $("#btnBrushSizeDecrease").click(function () { | |
1776 | + | |
1777 | + onBrushSizeChange(); | |
1778 | + var brushDecreaseVar = $("#btnBrushSize").val(); | |
1779 | + if (brushDecreaseVar == "") { | |
1780 | + | |
1781 | + $("#btnBrushSizeDecrease").css({ "pointer-events": "none", "opacity": ".5" }); | |
1782 | + $("#btnBrushSizeDecrease").css({ "pointer-events": "none", "opacity": ".5" }); | |
1783 | + | |
1784 | + } | |
1785 | + else if (brushDecreaseVar <= 1) { | |
1786 | + $("#slider-range-min-2").slider("value", 1); | |
1787 | + if ($("#annotationpaintbrushsize").css('pointer-events') == 'none') { | |
1788 | + $("#annotationpaintbrushsize").css({ "pointer-events": "auto", "opacity": "1" }); | |
1789 | + $("#annotationpainteraser").css({ "pointer-events": "auto", "opacity": "1" }); | |
1790 | + $("#btnBrushSizeDecrease").css({ "pointer-events": "auto", "opacity": ".5" }); | |
1791 | + $("#btnBrushSizeDecrease").css({ "pointer-events": "auto", "opacity": ".5" }); | |
1792 | + } | |
1793 | + | |
1794 | + } | |
1795 | + else { | |
1796 | + var brushDecrementedValue = parseInt(brushDecreaseVar) - 1; | |
1797 | + if ($("#annotationpaintbrushsize").css('pointer-events') == 'none') { | |
1798 | + $("#annotationpaintbrushsize").css({ "pointer-events": "auto", "opacity": "1" }); | |
1799 | + $("#annotationpainteraser").css({ "pointer-events": "auto", "opacity": "1" }); | |
1800 | + $("#btnBrushSizeDecrease").css({ "pointer-events": "auto", "opacity": "1" }); | |
1801 | + $("#btnBrushSizeDecrease").css({ "pointer-events": "auto", "opacity": "1" }); | |
1802 | + } | |
1803 | + $("#btnBrushSize").val(brushDecrementedValue); | |
1804 | + $("#slider-range-min-2").slider("value", parseInt(brushDecrementedValue)); | |
1805 | + } | |
1806 | + }); | |
1807 | + | |
1808 | + $("#btnBrushSize").val($("#slider-range-min-2").slider("value")); | |
1809 | + }); | |
1810 | + </script> | |
1811 | + | |
1812 | + <script> | |
1813 | + $(function () { | |
1814 | + $("#slider-range-min-3").slider({ | |
1815 | + range: "min", | |
1816 | + min: 0, | |
1817 | + max: 100, | |
1818 | + value: 20, | |
1819 | + change: function (event, ui) { | |
1820 | + | |
1821 | + | |
1822 | + } | |
1823 | + }); | |
1824 | + | |
1825 | + | |
1826 | + | |
1827 | + }); | |
1828 | + </script> | |
1829 | + | |
1830 | + <script> | |
1831 | + $(function () { | |
1832 | + | |
1833 | + | |
1834 | + | |
1835 | + $("#slider-range-min-4").slider( | |
1836 | + { | |
1837 | + range: "min", | |
1838 | + value: .5, | |
1839 | + min: 0, | |
1840 | + max: 1, | |
1841 | + step: .1, | |
1842 | + slide: function (event, ui) { | |
1843 | + | |
1844 | + $(".marginTopBtm10 .imgopacity").css("opacity", ui.value); | |
1845 | + $(".marginTopBtm10 div.outlinediv").css("opacity", ui.value); | |
1846 | + } | |
1847 | + | |
1848 | + } | |
1849 | + | |
1850 | +); | |
1851 | + | |
1852 | + }); | |
1853 | + | |
1854 | + | |
1855 | + | |
1856 | + </script> | |
1857 | + | |
1858 | + | |
1859 | + | |
1860 | + <script> | |
1861 | + $(function () { | |
1862 | + | |
1863 | + | |
1864 | + $("#OnIdentify").on('mouseover', function () { | |
1865 | + $("#identify-block").addClass("custom-tooltip-annotation"); | |
1866 | + $(".custom-tooltip-annotation").css('display', 'block'); | |
1867 | + }).on('mouseout', function () { | |
1868 | + // $("#identify-block").removeClass("custom-tooltip-annotation"); | |
1869 | + $(".custom-tooltip-annotation").css('display', 'none'); | |
1870 | + $("#identify-block").removeClass("custom-tooltip-annotation"); | |
1871 | + }); | |
1872 | + | |
1873 | + | |
1874 | + $("#DrawMode").on('mouseover', function () { | |
1875 | + $("#draw-block").addClass("custom-tooltip-annotation"); | |
1876 | + $(".custom-tooltip-annotation").css('display', 'block'); | |
1877 | + | |
1878 | + }).on('mouseout', function () { | |
1879 | + | |
1880 | + $(".custom-tooltip-annotation").css('display', 'none'); | |
1881 | + $("#draw-block").removeClass("custom-tooltip-annotation"); | |
1882 | + }); | |
1883 | + | |
1884 | + //#7931 | |
1885 | + $("#OnEdtShape").on('mouseover', function () { | |
1886 | + $("#edit-block").addClass("custom-tooltip-annotation-edit"); | |
1887 | + $(".custom-tooltip-annotation-edit").css('display', 'block'); | |
1888 | + | |
1889 | + }).on('mouseout', function () { | |
1890 | + | |
1891 | + $(".custom-tooltip-annotation-edit").css('display', 'none'); | |
1892 | + $("#edit-block").removeClass("custom-tooltip-annotation-edit"); | |
1893 | + }); | |
1894 | + | |
1895 | + }); | |
1896 | + </script> | |
1897 | + <!-- Export Image Save Click--> | |
1898 | + <script> | |
1899 | + $(function () { | |
1900 | + $("#btnPrintPreview").click(function () { | |
1901 | + $("#canvasDiv").append("<img id='exportlogo' class='img-responsive' src='content/images/adam-logo-small.png'/>"); | |
1902 | + html2canvas($("#canvasDiv"), { | |
1903 | + onrendered: function (canvas) { | |
1904 | + var imgsrc = canvas.toDataURL("image/png"); | |
1905 | + console.log(imgsrc); | |
1906 | + var html = '<div id="img"><img src="' + imgsrc + '" id="newimg" style="margin:auto;top:0px;left:0px;right:0px;position:absolute;border:1px solid #ccc;" /></div>'; | |
1907 | + var w = window.open(); | |
1908 | + $(w.document.body).html(html); | |
1909 | + $("#filename").val(""); | |
1910 | + $("#exportlogo").remove(); | |
1911 | + } | |
1912 | + }); | |
1913 | + | |
1914 | + }); | |
1915 | + $("#btnSaveEI").click(function () { | |
1916 | + $("#canvasDiv").append("<img id='exportlogo' class='img-responsive' src='content/images/adam-logo-small.png'/>"); | |
1917 | + html2canvas($("#canvasDiv"), { | |
1918 | + onrendered: function (canvas) { | |
1919 | + theCanvas = canvas; | |
1920 | + var fileName = document.getElementById("filename").value + '.jpg'; | |
1921 | + if (typeof (fileName) == "undefined" || fileName == ".jpg") | |
1922 | + fileName = "Untitled.jpg" | |
1923 | + var dataURL = canvas.toDataURL("image/jpeg"); | |
1924 | + var blob = dataURItoBlob(dataURL); | |
1925 | + console.log(blob); | |
1926 | + saveAs(blob, fileName); | |
1927 | + $("#exportlogo").remove(); | |
1928 | + $("#filename").val(""); | |
1929 | + } | |
1930 | + }); | |
1931 | + $(".export-image").css("display", "none"); | |
1932 | + | |
1933 | + }); | |
1934 | + }); | |
1935 | + function dataURItoBlob(dataURI) { | |
1936 | + var byteString = atob(dataURI.split(',')[1]); | |
1937 | + var ab = new ArrayBuffer(byteString.length); | |
1938 | + var ia = new Uint8Array(ab); | |
1939 | + for (var i = 0; i < byteString.length; i++) { | |
1940 | + ia[i] = byteString.charCodeAt(i); | |
1941 | + } | |
1942 | + return new Blob([ab], { type: 'image/jpeg' }); | |
1943 | + } | |
1944 | + </script> | |
1945 | + <script> | |
1946 | + if (navigator.userAgent.match(/Android/i)) { | |
1947 | + | |
1948 | + $("#bodySystems").click(function () { | |
1949 | + | |
1950 | + $("#listManager").draggable('disable'); | |
1951 | + | |
1952 | + }).blur(function () { | |
1953 | + | |
1954 | + $("#listManager").draggable('enable'); | |
1955 | + | |
1956 | + }); | |
1957 | + | |
1958 | + | |
1959 | + | |
1960 | + $("#termList").click(function () { | |
1961 | + | |
1962 | + $("#listManager").draggable('disable'); | |
1963 | + | |
1964 | + }).blur(function () { | |
1965 | + | |
1966 | + $("#listManager").draggable('enable'); | |
1967 | + | |
1968 | + }); | |
1969 | + | |
1970 | + $("#borderWidthCanvasElement").click(function () { | |
1971 | + | |
1972 | + $("#modeleditstyle").draggable('disable'); | |
1973 | + }).blur(function () { | |
1974 | + $("#modeleditstyle").draggable('enable'); | |
1975 | + }); | |
1976 | + } | |
1977 | + function ResizeImage(sizePercent) { | |
1978 | + var autoWidth = 427; | |
1979 | + var autoHeight = 547; | |
1980 | + var dvAutoSpnFontSize = 12; | |
1981 | + var imgLogoW = 77; | |
1982 | + var fullWidth = 620; //$('#canvasDiv').width(); | |
1983 | + var fullHeight = 876; //$('#canvasDiv').height(); | |
1984 | + | |
1985 | + if (sizePercent == 0) { | |
1986 | + $('#printBoxPor').width(autoWidth).height(autoHeight);//.height(dvPrintBoxPorH * sizePercent); | |
1987 | + $('#printBoxLan').width(autoHeight).height(autoWidth); | |
1988 | + $('#dvPortrait').width(autoWidth); | |
1989 | + $('#dvLandscape').width(autoHeight); | |
1990 | + $('.span-font').attr('style', 'font-size: ' + (dvAutoSpnFontSize * .65).toFixed() + 'px'); | |
1991 | + $(".logo-image").attr('width', imgLogoW * .65); | |
1992 | + } | |
1993 | + | |
1994 | + else if (sizePercent == 1) { | |
1995 | + $('#dvPortrait').width(fullWidth * sizePercent); | |
1996 | + $('#dvLandscape').width(fullHeight * sizePercent); | |
1997 | + $('#printBoxPor').width(fullWidth * sizePercent).height(fullHeight * sizePercent); | |
1998 | + $('#printBoxLan').width(fullHeight * sizePercent).height(fullWidth * sizePercent); | |
1999 | + $('.span-font').attr('style', 'font-size: ' + dvAutoSpnFontSize + 'px'); | |
2000 | + $(".logo-image").attr('width', imgLogoW); | |
2001 | + } | |
2002 | + | |
2003 | + else { | |
2004 | + $('#dvPortrait').width(fullWidth * sizePercent); | |
2005 | + $('#dvLandscape').width(fullHeight * sizePercent); | |
2006 | + $('.span-font').attr('style', 'font-size: ' + (dvAutoSpnFontSize * sizePercent).toFixed() + 'px !important'); | |
2007 | + $(".logo-image").attr('width', (imgLogoW * sizePercent).toFixed()); | |
2008 | + if (sizePercent > 1) { | |
2009 | + $('#printBoxPor').width(fullWidth * sizePercent).height(fullHeight * sizePercent); | |
2010 | + $('#printBoxLan').width(fullHeight * sizePercent).height(fullWidth * sizePercent); | |
2011 | + } | |
2012 | + else { | |
2013 | + $('#printBoxPor').width(fullWidth * sizePercent).height(fullHeight * sizePercent); | |
2014 | + $('#printBoxLan').width(fullHeight * sizePercent).height(fullWidth * sizePercent); | |
2015 | + } | |
2016 | + } | |
2017 | + } | |
2018 | + </script> | |
2019 | + <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-browser/0.1.0/jquery.browser.min.js"></script> | |
2020 | +</body> | |
2021 | + | |
2022 | +</html> | |
0 | 2023 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.Web/index.aspx.cs
0 → 100644
1 | +using System; | |
2 | +using System.Collections.Generic; | |
3 | +using System.Linq; | |
4 | +using System.Web; | |
5 | +using System.Web.UI; | |
6 | +using System.Web.UI.WebControls; | |
7 | + | |
8 | +namespace ADAM.AIA | |
9 | +{ | |
10 | + public partial class index : System.Web.UI.Page | |
11 | + { | |
12 | + public string strIPAddress = ""; | |
13 | + public bool bValidIP = false; | |
14 | + public string strAccountNumber = ""; | |
15 | + public string strEdition = ""; | |
16 | + public string strUrlReferer = ""; | |
17 | + public string strSiteReferer = ""; | |
18 | + public string urlParams = ""; | |
19 | + public string test = ""; | |
20 | + public bool isCalsCredantial = false; | |
21 | + | |
22 | + protected void Page_Load(object sender, EventArgs e) | |
23 | + { | |
24 | + | |
25 | + | |
26 | + if (Request.HttpMethod == "POST") | |
27 | + { | |
28 | + if (Request.Form["calsCredantial"] != null && Request.Form["calsCredantial"].ToString() == "yes") | |
29 | + { | |
30 | + isCalsCredantial = true; | |
31 | + | |
32 | + urlParams = "calsCredantial=" + Request.Form["calsCredantial"].ToString() + "&username=" + Request.Form["calsUsername"].ToString() + "&password=" + Request.Form["calsPassword"].ToString(); | |
33 | + //calsCredantialusername&password | |
34 | + // urlParams = Request.Form["calsCredantial"].ToString() + "&username=" + Request.Form["calsUsername"].ToString() + "&password=" + Request.Form["calsPassword"].ToString(); | |
35 | + | |
36 | + } | |
37 | + } | |
38 | + | |
39 | + string c = "nm"; | |
40 | + if (Request.QueryString["account"] != null) | |
41 | + { | |
42 | + // http://stackoverflow.com/questions/9032005/request-servervariableshttp-referer-is-not-working-in-ie | |
43 | + // http://stackoverflow.com/questions/5643773/http-referrer-not-always-being-passed?rq=1 | |
44 | + // | |
45 | + strSiteReferer = Request.ServerVariables["HTTP_REFERER"]; | |
46 | + strAccountNumber = Request.QueryString["account"]; | |
47 | + strEdition = Request.QueryString["edition"]; | |
48 | + string remoteIPAddress = Request.ServerVariables["REMOTE_ADDR"]; | |
49 | + string strHttpReferer = null; | |
50 | + int intSiteId = 0; | |
51 | + | |
52 | + | |
53 | + | |
54 | + | |
55 | + if (Request.Form["referer"] != null) | |
56 | + { | |
57 | + strUrlReferer = Request.Form["referer"]; | |
58 | + } | |
59 | + else if (Request.QueryString["referer"] == null) | |
60 | + { | |
61 | + strUrlReferer = Request.ServerVariables["HTTP_REFERER"]; | |
62 | + } | |
63 | + else if (Request.Params["referer"] != null) | |
64 | + { | |
65 | + strUrlReferer = Request.Params["referer"]; | |
66 | + } | |
67 | + else | |
68 | + { | |
69 | + | |
70 | + strUrlReferer = Request.QueryString["referer"]; | |
71 | + } | |
72 | + | |
73 | + | |
74 | + if (strUrlReferer != "" && strUrlReferer != null) | |
75 | + { | |
76 | + strHttpReferer = strUrlReferer.ToLower().Replace("http://", "").Replace("https://", "").Replace("www.", "").ToString().Split('/')[0].ToString(); | |
77 | + | |
78 | + if (strHttpReferer.IndexOf(":") != -1) | |
79 | + { | |
80 | + char[] delimiters = new char[] { ':' }; | |
81 | + string[] parts = strHttpReferer.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); | |
82 | + strHttpReferer = parts[0]; | |
83 | + } | |
84 | + } | |
85 | + | |
86 | + try | |
87 | + { | |
88 | + | |
89 | + if (strHttpReferer != "" && strHttpReferer != null) | |
90 | + strIPAddress = strHttpReferer; | |
91 | + if (strIPAddress == "" || strIPAddress == null) | |
92 | + strIPAddress = remoteIPAddress; | |
93 | + | |
94 | + | |
95 | + // intSiteId = LicenseHelper.GetInstance().ValidateLicenseSiteIP(strIPAddress, remoteIPAddress, strAccountNumber, Convert.ToByte(strEdition)); | |
96 | + | |
97 | + } | |
98 | + catch (Exception objEx) | |
99 | + { | |
100 | + | |
101 | + } | |
102 | + //urlParams = "?siteIP=" + strIPAddress + "&status=" + intSiteId + "&accountNumber=" + strAccountNumber + "&edition=" + strEdition + "&urlReferer=" + (strSiteReferer != "" && strSiteReferer != null ? strSiteReferer : ""); | |
103 | + urlParams = "siteIP=" + strIPAddress + "&accountNumber=" + strAccountNumber + "&edition=" + strEdition + "&urlReferer=" + (strSiteReferer != "" && strSiteReferer != null ? strSiteReferer : "") + "&remoteIPAddress=" + remoteIPAddress; | |
104 | + | |
105 | + //For the ease of splitting desgined urlParms in the pattern of | |
106 | + //urlParams = siteIP&accountNumber&remoteIPAddress&edition&urlReferer; without mentioning the variableName | |
107 | + // urlParams = strIPAddress + "&" + remoteIPAddress+"&"+ strAccountNumber + "&" + strEdition + "&" + (strSiteReferer != "" && strSiteReferer != null ? strSiteReferer : ""); | |
108 | + | |
109 | + | |
110 | + } | |
111 | + } | |
112 | + } | |
113 | +} | |
0 | 114 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.Web/index.aspx.designer.cs
0 → 100644
1 | +//------------------------------------------------------------------------------ | |
2 | +// <auto-generated> | |
3 | +// This code was generated by a tool. | |
4 | +// | |
5 | +// Changes to this file may cause incorrect behavior and will be lost if | |
6 | +// the code is regenerated. | |
7 | +// </auto-generated> | |
8 | +//------------------------------------------------------------------------------ | |
9 | + | |
10 | +namespace ADAM.AIA { | |
11 | + | |
12 | + | |
13 | + public partial class index { | |
14 | + } | |
15 | +} | ... | ... |
400-SOURCECODE/AIAHTML5.Web/index.html renamed to 400-SOURCECODE/AIAHTML5.Web/index1.html