Advertisement
Guest User

Untitled

a guest
Feb 25th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 72.76 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html >
  3. <head>
  4. <title>BrainHoney Player</title>
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <link rel="icon" href="bee_logo.png" type="image/x-icon">
  7. <link rel="shortcut icon" href="bee_logo.png" type="image/x-icon">
  8. <link rel="apple-touch-icon" href="bee_logo.png">
  9. <link rel="shortcut icon" type="image/vnd.microsoft.icon" href="/favicon.ico" /><link rel="stylesheet" type="text/css" href="/Scripts/ext-3.0.0-2/resources/css/ext-all.css" /><link rel="stylesheet" type="text/css" href="/Styles_vv1D1651E621DCF00.css" /><link rel="stylesheet" type="text/css" href="/StylesOld_vv1D1651E621DCF00.css" /><!--[if IE 6]><link rel="stylesheet" type="text/css" href="/IE6Styles.css" /><![endif]--><link rel="stylesheet" type="text/css" href="/resource/26601612/styles.css" /><script type="text/javascript" src="/Scripts/ext-3.0.0-2/ext-comb13.js"></script><script type="text/javascript" src="/Scripts/ext-3.0.0-2/locale/ext-lang-en.js"></script><script type="text/javascript">Ext.BLANK_IMAGE_URL = '/p';Ext.chart.Chart.CHART_URL='/Scripts/ext-3.0.0-2/resources/charts.swf';</script><script type="text/javascript">function convertLocalTimeToUtcDateTime(date){return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());}</script><script type="text/javascript" language="javascript" src="/Scripts/easyXDM-2.4.12.108/easyXDM.min.js"></script><script type="text/javascript" language="javascript">easyXDM.DomHelper.requiresJSON("/Scripts/easyXDM-2.4.12.108/json2.js");</script>
  10. <script type="text/javascript" language="javascript">
  11. var Privileges={None:0,Participate:1,CreateDomain:16,ReadDomain:32,UpdateDomain:64,DeleteDomain:128,CreateUser:256,ReadUser:512,UpdateUser:1024,DeleteUser:2048,CreateCourse:65536,ReadCourse:131072,UpdateCourse:262144,DeleteCourse:524288,CreateSection:1048576,ReadSection:2097152,UpdateSection:4194304,DeleteSection:8388608,GradeAssignment:16777216,GradeForum:33554432,GradeExam:67108864,SetupGradebook:134217728,ControlDomain:268435456,ControlCourse:536870912,ControlSection:1073741824,ReadGradebook:2147483648,ReportDomain:4294967296,ReportCourse:8589934592,ReportSection:17179869184,PostDomainAnnouncements:34359738368,Proxy:68719476736,UpdateCatalog:137438953472,ReportUser:274877906944,SubmitFinalGrade:549755813888,ControlEnrollment:1099511627776,ReadEnrollment:2199023255552,ReadCourseFull:4398046511104,ControlUser:8796093022208,ReadObjective:17592186044416,UpdateObjective:35184372088832,ReadCredits:70368744177664,UpdateCredits:140737488355328,All:-1};
  12.  
  13. //FrameApi = function(config) {
  14. // // call parent constructor
  15. // FrameApi.superclass.constructor.call(this, config);
  16. //};
  17. FrameApi = Ext.extend(Ext.util.Observable, {
  18.  
  19. /*********Helper methods********/
  20. constructor: function (config) {
  21. Ext.apply(this, config);
  22.  
  23. this.addEvents(
  24. 'componentstatechanged',
  25. 'contentstatechanged',
  26. 'currentenrollmentchanged',
  27. 'helprequested',
  28. 'actionregistered',
  29. 'vieweropening',
  30. 'viewerclosed',
  31. 'editoropening',
  32. 'editorclosed',
  33. 'groupsetupopening',
  34. 'groupsetupclosed',
  35. 'jswindowopening',
  36. 'jswindowclosed',
  37. 'componentsaverequested',
  38. 'componentsaved',
  39. 'componentcancelled'
  40. );
  41.  
  42. this.listeners = config.listeners;
  43. this.componentStates = new Ext.util.MixedCollection();
  44. this.componentMethods = new Ext.util.MixedCollection();
  45. this.contentState = {};
  46. this.actionListeners = new Ext.util.MixedCollection();
  47. this.enrollmentCache = new Ext.util.MixedCollection();
  48.  
  49. FrameApi.superclass.constructor.call(this, config);
  50.  
  51. this.on('closegroupsetupwindow', function (o) {
  52. this.groupEditorClosed(o);
  53. }, this);
  54. // this.on('componentsaved', function(type, id, o) {
  55. // alert('componentsaved:' + type + ',' + id + ',' + o);
  56. // }, this);
  57. // this.on('componentcancelled', function(type, id, o) {
  58. // alert('componentcancelled:' + type + ',' + id + ',' + o);
  59. // }, this);
  60.  
  61. //Override the navToItem function so that links popup in grading (and other) windows that have inline course links
  62. if(typeof(navToItem) == 'undefined') {
  63. navToItem = function (itemId) {
  64. var courseId = FRAME_API.contentState.courseId;
  65. if(!Ext.isEmpty(courseId)) {
  66. var url = '%24APPROOT%24/Component/ActivityPlayer?courseid=' + FRAME_API.contentState.courseId + '&itemid=' + encodeURIComponent(itemId);
  67. window.open(String.escape(url), '', 'scrollbars, resizable, menubar, width=860, height=600');
  68. }
  69. }
  70. }
  71. },
  72.  
  73. findParentApi: function (win) {
  74. if (win.parent != win) {
  75. // locate the API:
  76. try {
  77. if (win.parent.FRAME_API != null) {
  78. // try in this window
  79. return win.parent.FRAME_API;
  80. }
  81. }
  82. catch (e) { }
  83. // try parent
  84. return this.findParentApi(win.parent);
  85. }
  86. // else give up
  87. return null;
  88. },
  89.  
  90. init: function (timeToLive) {
  91. this.recoverPingInterval = null;
  92. this.recoverPingCount = 0;
  93.  
  94. timeToLive = timeToLive || 15;
  95. this.recoverPingMax = timeToLive;
  96.  
  97. setInterval(this.pingServer.createDelegate(this), (timeToLive * 1000 * 28));
  98.  
  99. if (Ext.isIE) {
  100. document.onfocusin = this.pingServer.createDelegate(this);
  101. }
  102. else {
  103. window.onfocus = this.pingServer.createDelegate(this);
  104. }
  105.  
  106. if(this.viewAda) {
  107. Ext.getBody().addClass('ada-color');
  108. }
  109.  
  110. this.loginWindow = null;
  111.  
  112. try {
  113. //Do not call noConflict, as that kills the SameOrigin case
  114. this.easyXDM = easyXDM;//.noConflict('FrameAPI');
  115. this.rpc = new this.easyXDM.Rpc({},
  116. {
  117. local: {
  118. addListeners: function(events, successFn, errorFn){
  119. if(!Ext.isEmpty(events)) {
  120. if(typeof(events) == 'string') {
  121. events = events.split('|');
  122. }
  123. for(var i=0; i<events.length; i++) {
  124. FRAME_API.addListener(events[i], FRAME_API.rpc.onEvent.createDelegate(FRAME_API, [events[i]], 0));
  125. }
  126. }
  127. },
  128. setShowBeforeUnloadPrompts: function(val) {
  129. FRAME_API.setShowBeforeUnloadPrompts(val);
  130. },
  131. fireEvent: function(eventName, args) {
  132. return FRAME_API.fireEvent(eventName, args);
  133. },
  134. saveComponent: function(componentType, id) {
  135. return FRAME_API.saveComponent(componentType, id);
  136. },
  137. navigate: function(url) {
  138. FRAME_API.navigate(url);
  139. },
  140. getComponentState: function(componentType, id) {
  141. return FRAME_API.getComponentState(componentType, id);
  142. },
  143. callComponentMethod: function(componentType, id, name, args) {
  144. return FRAME_API.callComponentMethod(componentType, id, name, args);
  145. },
  146. getProperties: function() {
  147. return {
  148. adminUrl: FRAME_API.adminUrl,
  149. appVersion: FRAME_API.appVersion,
  150. appRoot: FRAME_API.appRoot,
  151. authenticated: FRAME_API.authenticated,
  152. canProxy: FRAME_API.canProxy,
  153. canTeachACourse: FRAME_API.canTeachACourse,
  154. catalogEntries: FRAME_API.catalogEntries,
  155. contentState: FRAME_API.contentState,
  156. currentEnrollment: FRAME_API.currentEnrollment,
  157. enrollments: FRAME_API.enrollments,
  158. domainId: FRAME_API.domainId,
  159. domainName: FRAME_API.domainName,
  160. frameResourceRoot: FRAME_API.frameResourceRoot,
  161. frameRoot: FRAME_API.frameRoot,
  162. isAdmin: FRAME_API.isAdmin,
  163. isProxy: FRAME_API.isProxy,
  164. menuEntries: FRAME_API.menuEntries,
  165. proxyUserId: FRAME_API.proxyUserId,
  166. resourceRoot: FRAME_API.resourceRoot,
  167. rights: FRAME_API.rights,
  168. roles: FRAME_API.roles,
  169. userId: FRAME_API.userId,
  170. userDisplay: FRAME_API.userDisplay,
  171. username: FRAME_API.username,
  172. userspace: FRAME_API.userspace,
  173. proxyUsername: FRAME_API.proxyUsername,
  174. proxyUserspace: FRAME_API.proxyUserspace
  175. };
  176. },
  177. hasRight: function(right, rights) {
  178. return FRAME_API.hasRight(right, rights);
  179. }
  180. },
  181. remote: {
  182. //Called so the containing frame can initialize event listeners, etc.
  183. init:{},
  184. onEvent:{}
  185. }
  186. });
  187.  
  188. this.rpc.init();
  189. }
  190. catch(e) {
  191. }
  192. },
  193.  
  194. pingServer: function () {
  195. if (!this.noforceRelogin) {
  196. Ext.Ajax.request({
  197. url: this.appRoot + "/ping",
  198. params: { checkuserid: FRAME_API.userId, proxyuserid: (!Ext.isEmpty(FRAME_API.proxyUserId) && FRAME_API.proxyUserId != FRAME_API.userId) ? FRAME_API.proxyUserId : '' },
  199. scope: this,
  200. success: function (response) {
  201. var result = eval("(" + response.responseText + ")");
  202. if (!result.authenticated) {
  203. this.displayModalPopup();
  204. }
  205. else {
  206. if (this.loginWindow) {
  207. this.loginWindow.close();
  208. this.loginWindow.destroy();
  209. this.loginWindow = null;
  210. }
  211. this.clearRecoverPing(true);
  212. }
  213. },
  214. failure: function (response) {
  215. this.displayModalPopup();
  216.  
  217. if (this.recoverPingInterval == null && this.recoverPingCount <= 0) {
  218. this.recoverPingInterval = setInterval(this.recoverPingServer.createDelegate(this), 1000 * 60);
  219. }
  220. }
  221. });
  222. }
  223. else {
  224. Ext.Ajax.request({
  225. url: this.appRoot + "/ping",
  226. scope: this,
  227. success: function (response) {
  228. var result = eval("(" + response.responseText + ")");
  229. if (!result.authenticated)
  230. this.statusDisplay.updateStatus(this.getPingText(this.I18N.notLoggedIn));
  231. else
  232. this.statusDisplay.hide();
  233. },
  234. failure: function (response) {
  235. this.statusDisplay.updateStatus(this.getPingText(this.I18N.notConnected));
  236. }
  237. });
  238. }
  239. },
  240.  
  241. getPingText: function (text) {
  242. return String.format(text, ['<a href="#" onclick="FRAME_API.statusDisplay.hide(); window.open(\'',
  243. this.appRoot, '/Login.vp/page.htm?ReturnUrl=',
  244. this.appRoot, '/Close\',\'LoginWindow\',\'width=800, height=600, scrollbars=yes\'); return false;">',
  245. this.I18N.login, '</a>'].join(''))
  246. },
  247.  
  248. displayModalPopup: function () {
  249. if (this.loginWindow == null) {
  250. var passwordField = new Ext.form.TextField({
  251. xtype: 'textfield',
  252. id: 'txtpassword',
  253. inputType: 'password',
  254. allowBlank: false,
  255. hideLabel: true,
  256. cls: 'default_font',
  257. scope: this,
  258. blankText: this.I18N.passwordRequired,
  259. hidden: this.isSSO,
  260. listeners: {
  261. specialkey: function (field, e) {
  262. var key = e.getKey();
  263. if (key == Ext.EventObject.ENTER) {
  264. Ext.get('loginOK').dom.click();
  265. }
  266. }
  267. }
  268. });
  269.  
  270. this.loginWindow = new Ext.Window({
  271. title: this.I18N.login,
  272. layout: 'form',
  273. width: 500,
  274. autoHeight: true,
  275. bodyCls: 'default_font',
  276. bodyStyle: 'padding: 10px 10px 25px 10px;',
  277. closeAction: 'hide',
  278. modal: true,
  279. resizable: false,
  280. shadow: false,
  281. closable: false,
  282. defaultButton: 'loginOK',
  283. items: [{
  284. xtype: 'label',
  285. html: String.format(this.I18N.connectionErrorMessage, FRAME_API.userDisplay, Ext.isEmpty(FRAME_API.proxyUsername) ? FRAME_API.username : FRAME_API.proxyUsername),
  286. forId: "txtpassword",
  287. cls: 'default_font'
  288. },
  289. passwordField, {
  290. xtype: 'label',
  291. id: "lblError",
  292. cls: 'default_font modalPopup-login-error'
  293. }, {
  294. xtype: 'label',
  295. hidden: false,
  296. html: '<iframe id="ssoiframe" name="ssoiframe" style="width:100%;height:200px;overflow:auto;display:none;"></iframe>'
  297. }],
  298. buttons: [{ xtype: 'tbfill' }, {
  299. text: this.I18N.login,
  300. id: 'loginOK',
  301. scope: this,
  302. handler: this.clickLoginOK
  303. }]
  304. });
  305.  
  306. this.loginWindow.show();
  307. }
  308. },
  309.  
  310. clickLoginOK: function () {
  311. if (this.isSSO) {
  312. try {
  313. this.setTimezoneInfoModel();
  314. var returnUrl = this.absoluteAppRoot + '/SSODone.aspx?DlapCookie=%TOKEN%&mode=login&userid=' + this.userId + '&puserid=' + this.proxyUserId + '&standardOffset=' + this.standardOffset + '&daylightOffset=' + this.daylightOffset + '&standardStartTime=' + this.standardStartTime + '&daylightStartTime=' + this.daylightStartTime;
  315. var iframeSrc = this.dlapUrl + '/SSOLogin' + '?domainid=' + encodeURIComponent(this.domainId) + '&url=' + encodeURIComponent(returnUrl) + '&token=' + encodeURIComponent(this.dlaptoken);
  316. document.getElementById('ssoiframe').src = iframeSrc;
  317. Ext.get(document.getElementById('ssoiframe')).show();
  318. }
  319. catch (e) {
  320. Ext.get(document.getElementById('ssoiframe')).setVisibilityMode(Ext.Element.DISPLAY).hide();
  321. if (e && e.message) {
  322. Ext.getCmp("lblError").setText(e.message);
  323. }
  324. else {
  325. Ext.getCmp("lblError").setText(this.I18N.unknownError);
  326. }
  327. if (this.loginWindow) {
  328. this.loginWindow.doLayout();
  329. }
  330. }
  331. }
  332. else if (Ext.getCmp('txtpassword').isValid()) {
  333. //reset the error label
  334. Ext.getCmp("lblError").setText('');
  335.  
  336. this.setTimezoneInfoModel();
  337.  
  338. var requestUserName = FRAME_API.username;
  339. if (!Ext.isEmpty(FRAME_API.proxyUsername)) {
  340. requestUserName = FRAME_API.proxyUserspace + '/' + FRAME_API.proxyUsername + '/' + FRAME_API.userspace + '/' + FRAME_API.username;
  341. }
  342. else if (!Ext.isEmpty(FRAME_API.userspace)) {
  343. requestUserName = FRAME_API.userspace + '/' + FRAME_API.username;
  344. }
  345. else {
  346. requestUserName = FRAME_API.username;
  347. }
  348.  
  349. Ext.Ajax.request({
  350. params: {
  351. username: requestUserName,
  352. password: Ext.get('txtpassword').getValue(),
  353. standardOffset: this.standardOffset,
  354. daylightOffset: this.daylightOffset,
  355. standardStartTime: this.standardStartTime,
  356. daylightStartTime: this.daylightStartTime
  357. },
  358. url: FRAME_API.appRoot + '/Controls/CredentialsUI.ashx?modalPopup=true',
  359. method: 'POST',
  360. scope: this,
  361. callback: this.modalLoginCompleted
  362. });
  363. }
  364. },
  365.  
  366. clickLoginDifferentUser: function(){
  367. if (this.isSSO) {
  368. try {
  369. var returnUrl = this.absoluteAppRoot + '/SSODone.aspx?mode=logout';
  370. var iframeSrc = this.dlapUrl + '/SSOLogout' + '?domainid=' + encodeURIComponent(this.domainId) + '&url=' + encodeURIComponent(returnUrl);
  371. document.getElementById('ssoiframe').src = iframeSrc;
  372. Ext.get(document.getElementById('ssoiframe')).show();
  373. }
  374. catch (e) {
  375. Ext.get(document.getElementById('ssoiframe')).setVisibilityMode(Ext.Element.DISPLAY).hide();
  376. if (e && e.message) {
  377. Ext.getCmp("lblError").setText(e.message);
  378. }
  379. else {
  380. Ext.getCmp("lblError").setText(this.I18N.unknownError);
  381. }
  382. if (this.loginWindow) {
  383. this.loginWindow.doLayout();
  384. }
  385. }
  386. }
  387. else {
  388. FRAME_API.logout();
  389. }
  390. },
  391.  
  392. ssoComplete: function(success, mode, error){
  393. if (success) {
  394. if (this.loginWindow) {
  395. this.loginWindow.close();
  396. this.loginWindow.destroy();
  397. this.loginWindow = null;
  398. }
  399. this.clearRecoverPing(true);
  400.  
  401. if (mode == 'logout') {
  402. FRAME_API.logout();
  403. }
  404. }
  405. else {
  406. Ext.get(document.getElementById('ssoiframe')).setVisibilityMode(Ext.Element.DISPLAY).hide();
  407. Ext.getCmp("lblError").setText(!Ext.isEmpty(error) ? error : this.I18N.unknownError);
  408. if (this.loginWindow) {
  409. this.loginWindow.doLayout();
  410. }
  411. }
  412. },
  413.  
  414. modalLoginCompleted: function (options, success, response) {
  415. if (response && !Ext.isEmpty(response.responseText)) {
  416. if (success && response.responseText == "OK") {
  417. if (this.loginWindow) {
  418. this.loginWindow.close();
  419. this.loginWindow.destroy();
  420. this.loginWindow = null;
  421. }
  422. this.clearRecoverPing(true);
  423. }
  424. else {
  425. Ext.getCmp("lblError").setText(response.responseText);
  426. }
  427. }
  428. else {
  429. Ext.getCmp("lblError").setText(this.I18N.unknownError);
  430. }
  431. },
  432.  
  433. recoverPingServer: function () {
  434. if (!this.noforceRelogin) {
  435. if (this.recoverPingCount >= this.recoverPingMax) {
  436. this.clearRecoverPing(false);
  437. }
  438. else {
  439. this.recoverPingCount++;
  440. this.pingServer();
  441. }
  442. }
  443. },
  444.  
  445. clearRecoverPing: function(resetCount) {
  446. if (this.recoverPingInterval != null) {
  447. clearInterval(this.recoverPingInterval);
  448. this.recoverPingInterval = null;
  449. }
  450. if (resetCount){
  451. this.recoverPingCount = 0;
  452. }
  453. },
  454.  
  455. TimeZoneInfo: function () { var year = new Date().getFullYear(); var beginDate = new Date(year, 0, 1, 0, 0, 0, 0); var begin = beginDate.getTime(); var end = new Date(year, 11, 31, 23, 59, 59, 999).getTime(); var currentOffset = beginDate.getTimezoneOffset(); this.standardOffset = currentOffset; this.daylightOffset = null; this.daylightStartTime = null; this.standardStartTime = null; for (var day = begin; day < end; day += 86400000) { var testDay = new Date(day); if (currentOffset != testDay.getTimezoneOffset()) { for (var hour = day - 86400000; hour < day; hour += 3600000) { var testHour = new Date(hour); if (currentOffset != testHour.getTimezoneOffset()) { for (var minute = hour - 3600000; minute < hour; minute += 60000) { var testMinute = new Date(minute); if (currentOffset != testMinute.getTimezoneOffset()) { if (currentOffset > testMinute.getTimezoneOffset()) { this.daylightStartTime = testMinute; this.daylightOffset = testMinute.getTimezoneOffset(); this.standardOffset = currentOffset; } else { this.standardStartTime = testMinute; this.standardOffset = testMinute.getTimezoneOffset(); this.daylightOffset = currentOffset; } currentOffset = testDay.getTimezoneOffset(); } } } } } } },
  456. setTimezoneInfoModel: function () {
  457. var DateToJson = function (date) { var f = function f(n) { return n < 10 ? '0' + n : n; }; return isFinite(date.valueOf()) ? date.getUTCFullYear() + '-' + f(date.getUTCMonth() + 1) + '-' + f(date.getUTCDate()) + 'T' + f(date.getUTCHours()) + ':' + f(date.getUTCMinutes()) + ':' + f(date.getUTCSeconds()) + 'Z' : null; };
  458. var zone = new this.TimeZoneInfo();
  459. this.standardOffset = zone.standardOffset;
  460. if (zone.daylightOffset) {
  461. this.daylightOffset = zone.daylightOffset;
  462. this.standardStartTime = DateToJson(zone.standardStartTime);
  463. this.daylightStartTime = DateToJson(zone.daylightStartTime);
  464. }
  465. },
  466.  
  467. statusDisplay: function () {
  468. var msgCt;
  469. var message;
  470. var currentText = "";
  471.  
  472. function createBox(text) {
  473. return ['<div class="gradebook_statusdisplay highlight_color" >', text, '</div>'].join('');
  474. }
  475. return {
  476. updateStatus: function (text) {
  477. currentText = text;
  478. if (!msgCt) {
  479. msgCt = Ext.DomHelper.append(document.body, { id: 'msg-div', style: "position:absolute;z-index:20001" }, true);
  480. }
  481. var slideIn = false;
  482. if (!message) {
  483. message = Ext.DomHelper.append(msgCt, { html: createBox(text) }, true);
  484. slideIn = true;
  485. msgCt.alignTo(document, 't-t');
  486. }
  487. else {
  488. message.update(createBox(text));
  489. msgCt.alignTo(document, 't-t');
  490. message.frame();
  491. }
  492.  
  493. if (slideIn) message.slideIn('t');
  494. },
  495. hide: function () {
  496. currentText = "";
  497. if (message) {
  498. message.ghost("t", { remove: true });
  499. message = null;
  500. }
  501. },
  502. getText: function () {
  503. return currentText;
  504. }
  505. };
  506. } (),
  507.  
  508. checkViewClose: function (frame, win) {
  509. frame.un('load', this.checkViewClose);
  510. if (frame.dom.contentWindow.location.href == 'about:blank') {
  511. win.hide();
  512. }
  513. },
  514.  
  515. resizeViewWindow: function () {
  516. if (this.viewWindow == null) return;
  517. if (this.viewWindow.hidden) return;
  518. var pageSizeObj = Ext.get(document.body).getSize();
  519. this.viewWindow.setSize(pageSizeObj.width - 64, pageSizeObj.height - 64);
  520. },
  521.  
  522. resizeEditWindow: function () {
  523. if (this.editWindow == null) return;
  524. if (this.editWindow.hidden) return;
  525.  
  526. var pageSizeObj = Ext.get(document.body).getSize();
  527.  
  528. this.editWindow.setSize(pageSizeObj.width - 32, pageSizeObj.height - 24);
  529. },
  530.  
  531. resizeGroupEditWindow: function () {
  532. if (this.groupEditorWindow == null) return;
  533. if (this.groupEditorWindow.hidden) return;
  534.  
  535. var pageSizeObj = Ext.get(document.body).getSize();
  536.  
  537. this.groupEditorWindow.setSize(pageSizeObj.width - 32, pageSizeObj.height - 24);
  538. },
  539.  
  540. editorClosed: function (o) {
  541. if (typeof o == 'boolean') {
  542. o = { refreshAll: o };
  543. }
  544. if (this.editWindow && this.editWindow.isVisible()) {
  545. this.editWindow.hide();
  546. }
  547. this.fireEvent('editorclosed', o);
  548. this.fireEvent('jswindowclosed');
  549. },
  550.  
  551. groupEditorClosed: function (o) {
  552. if (this.groupEditorWindow && this.groupEditorWindow.isVisible()) {
  553. this.groupEditorWindow.hide();
  554. }
  555. this.fireEvent('groupsetupclosed', o);
  556. this.fireEvent('jswindowclosed');
  557. },
  558.  
  559. /*********Public methods********/
  560. hasRight: function (right, flags) {
  561. flags = flags || this.rights;
  562. flags = flags * 1.0;
  563. if (flags == -1 || flags == -2) {
  564. flags = 0xffffff0ff0;
  565. }
  566.  
  567. if (right >= 0x100000000) {
  568. var flagsHigher = Math.floor(flags / 0x100000000);
  569. var rightHigher = Math.floor(right / 0x100000000);
  570. return (rightHigher & flagsHigher) ? true : false;
  571. }
  572. else {
  573. return (right & flags) ? true : false;
  574. }
  575. },
  576.  
  577. executeCommand: function (cmd, params, options) {
  578. Ext.Ajax.request(Ext.apply(options, {
  579. url: this.adminUrl,
  580. params: Ext.apply(params || {}, {
  581. cmd: cmd
  582. }),
  583. userCallback: options.callback,
  584. userScope: options.scope,
  585. scope: this,
  586. callback: null,
  587. success: function (response, options) {
  588. if(!options) {
  589. options = response.request.options;
  590. }
  591. if (options.userCallback) {
  592. var success = true;
  593. var details = [];
  594. var responses = response.responseXML.getElementsByTagName('response');
  595. if (Ext.isEmpty(responses)) {
  596. success = false;
  597. }
  598. else {
  599. for (var i = 0; i < responses.length; i++) {
  600. var detail = {
  601. code: responses[i].getAttribute('code'),
  602. message: responses[i].getAttribute('message'),
  603. detailedMessage: responses[i].textContent
  604. };
  605. details.push(detail);
  606. if (detail.code != 'OK') {
  607. success = false;
  608. }
  609. }
  610. }
  611. response.details = details;
  612. options.userCallback.call(options.userScope || this, options, success, response);
  613. }
  614. },
  615. failure: function (response, options) {
  616. if(!options) {
  617. options = response.request.options;
  618. }
  619. if (options.userCallback) {
  620. options.userCallback.call(options.userScope || this, options, false, response);
  621. }
  622. }
  623. }));
  624. },
  625.  
  626. findEnrollment: function (enrollmentId) {
  627. for (var i = 0; i < this.enrollments.length; i++) {
  628. var enrollment = this.enrollments[i];
  629. if (!Ext.isEmpty(enrollment.id) && enrollment.id == enrollmentId) {
  630. return enrollment;
  631. }
  632. }
  633. if (this.enrollmentCache.containsKey(enrollmentId)) {
  634. return this.enrollmentCache.get(enrollmentId);
  635. }
  636. return null;
  637. },
  638.  
  639. setComponentMethod: function(componentType, id, name, fn, scope) {
  640. if(Ext.isEmpty(name) || Ext.isEmpty(componentType) || Ext.isEmpty(id) || typeof(fn) != 'function') {
  641. return;
  642. }
  643. componentType = componentType.toLowerCase();
  644. id = id.toLowerCase();
  645. name = name.toLowerCase();
  646. var key = componentType + '|' + id + '|' + name;
  647.  
  648. //Update the hash of component properties
  649. this.componentMethods.replace(key, { fn: fn, scope: scope });
  650. },
  651.  
  652. callComponentMethod: function(componentType, id, name, args) {
  653. if(Ext.isEmpty(name) || Ext.isEmpty(componentType) || Ext.isEmpty(id)) {
  654. return;
  655. }
  656. componentType = componentType.toLowerCase();
  657. id = id.toLowerCase();
  658. name = name.toLowerCase();
  659. var key = componentType + '|' + id + '|' + name;
  660. if (!this.componentMethods.containsKey(componentType)) {
  661. var obj = this.componentMethods.get(key);
  662. return obj.fn.apply(obj.scope || this, args);
  663. }
  664. },
  665.  
  666. setComponentState: function (componentType, id, o) {
  667. componentType = componentType || '';
  668. id = id || '';
  669. o = o || {};
  670.  
  671. //Update the hash of component properties
  672. componentType = componentType.toLowerCase();
  673. id = id.toLowerCase();
  674. if (!this.componentStates.containsKey(componentType)) {
  675. this.componentStates.add(componentType, new Ext.util.MixedCollection());
  676. }
  677. var stateList = this.componentStates.get(componentType);
  678. if (stateList.containsKey(id)) {
  679. o = Ext.apply(stateList.get(id), o);
  680. }
  681. stateList.replace(id, o);
  682.  
  683. //Update the main content properties
  684. if (id == 'framecontent') {
  685. this.contentState = o;
  686. this.contentState.type = componentType;
  687. if (!Ext.isEmpty(o.enrollmentId) &&
  688. (this.currentEnrollment == null || this.currentEnrollment.id != o.enrollmentId)) {
  689. if (this.enrollmentCache.containsKey(o.enrollmentId)) {
  690. this.currentEnrollment = this.enrollmentCache.get(o.enrollmentId);
  691. this.fireEvent('currentenrollmentchanged', this.currentEnrollment);
  692. }
  693. else {
  694. Ext.Ajax.request({
  695. url: this.appRoot + "/FrameHelper.ashx",
  696. params: {
  697. cmd: 'getenrollment',
  698. enrollmentid: o.enrollmentId
  699. },
  700. scope: this,
  701. callback: function (options, success, response) {
  702. if (success && !Ext.isEmpty(response.responseText)) {
  703. this.currentEnrollment = Ext.util.JSON.decode(response.responseText);
  704. this.enrollmentCache.replace(o.enrollmentId, this.currentEnrollment);
  705. if (this.currentEnrollment.id != o.enrollmentId) {
  706. this.enrollmentCache.replace(this.currentEnrollment.id, this.currentEnrollment);
  707. }
  708. this.fireEvent('currentenrollmentchanged', this.currentEnrollment);
  709. }
  710. }
  711. });
  712. }
  713. }
  714. this.fireEvent('contentstatechanged', this.contentState);
  715. }
  716.  
  717. //Fire the event for this component
  718. this.fireEvent('componentstatechanged', componentType, id, o);
  719. },
  720.  
  721. getComponentState: function (componentType, id) {
  722. componentType = componentType.toLowerCase();
  723. id = id.toLowerCase();
  724. var o = null;
  725. if (this.componentStates.containsKey(componentType)) {
  726. var stateList = this.componentStates.get(componentType);
  727. if (stateList.containsKey(id)) {
  728. o = stateList.get(id);
  729. }
  730. }
  731. return o;
  732. },
  733.  
  734. registerAction: function (componentType, id, action, f, scope) {
  735. //Update the hash of component properties
  736. componentType = componentType.toLowerCase();
  737. id = id.toLowerCase();
  738. action = action.toLowerCase();
  739.  
  740. if (id == 'framecontent') {
  741. this.actionListeners.replace(action, { handler: f, scope: scope });
  742. this.fireEvent('actionregistered', action, f, scope);
  743. }
  744. },
  745.  
  746. getRegisteredActions: function () {
  747. var list = [];
  748. this.actionListeners.eachKey(function (key, item) {
  749. list.push(Ext.apply(item, { action: key }));
  750. }, this);
  751. return list;
  752. },
  753.  
  754. setShowBeforeUnloadPrompts: function(val) {
  755. this.showBeforeUnloadPrompts = val;
  756. },
  757.  
  758. addEvent: function (name) {
  759. this.addEvents(name);
  760. },
  761.  
  762. logout: function (returnUrl) {
  763. this.fireEvent('beforelogout');
  764. var url = this.appRoot + '/SignOff.ashx';
  765. if(returnUrl) {
  766. url += '?ReturnUrl=' + encodeURIComponent(returnUrl);
  767. }
  768. // Ensure the player frame has had a chance to unload, and allow SCOs to save their data, record time spent, etc.
  769. setTimeout(function () {
  770. window.location = url;
  771. }, 1000);
  772. },
  773.  
  774. proxy: function (name) {
  775. this.navigate('/Component/Proxy?proxy=' + encodeURIComponent(name));
  776. },
  777. unproxy: function () {
  778. this.navigate('/Component/Proxy');
  779. },
  780. navigate: function (url) {
  781. window.location = this.frameRoot + url;
  782. },
  783.  
  784. saveComponent: function(componentType, id) {
  785. componentType = componentType.toLowerCase();
  786. id = id.toLowerCase();
  787. return this.fireEvent('componentsaverequested', componentType, id);
  788. },
  789.  
  790. launchHelp: function (token) {
  791. if (this.hasListener('helprequested')) {
  792. this.fireEvent('helprequested', token);
  793. }
  794. else {
  795. if (Ext.isEmpty(token)) {
  796. token = 'root';
  797. var o = this.contentState;
  798. if (o != null && !Ext.isEmpty(o.helpToken)) {
  799. token = o.helpToken;
  800. }
  801. }
  802. window.open(this.helpRoot + token, 'bhHelp', 'scrollbars, resizable, toolbar, width=950, height=600');
  803. }
  804. },
  805.  
  806. viewItem: function (enrollmentId, itemId, title, params) {
  807. if (this.viewWindow == null) {
  808. var pageSizeObj = Ext.get(document.body).getSize();
  809. this.viewWindow = new Ext.Window({
  810. width: pageSizeObj.width - 64,
  811. height: pageSizeObj.height - 64,
  812. layout: 'fit',
  813. plain: false,
  814. buttonAlign: 'center',
  815. shim: true,
  816. x: 32,
  817. y: 32,
  818. modal: true,
  819. frame: true,
  820. closable: true,
  821. closeAction: "hide",
  822. resizable: true,
  823. draggable: true,
  824. listeners: {
  825. beforehide: function () {
  826. var frame = this.viewFrame.el.child('iframe', false);
  827. if (frame.dom.contentWindow.location.href != 'about:blank') {
  828. frame.on('load', this.checkViewClose.createDelegate(this, [frame, this.viewWindow], false));
  829. frame.dom.contentWindow.location.replace('about:blank');
  830. return false;
  831. }
  832. return true;
  833. },
  834. hide: function () {
  835. this.fireEvent('viewerclosed');
  836. this.fireEvent('jswindowclosed');
  837. },
  838. scope: this
  839. }
  840. });
  841. }
  842. else {
  843. this.viewWindow.remove(this.viewFrame, true);
  844. }
  845.  
  846. var url = this.appRoot + '/Component/ActivityPlayer?id=frameviewitem&showheader=false&enrollmentid=' + enrollmentId + '&itemid=' + itemId;
  847. if (params != null) {
  848. for (prop in params) {
  849. url += '&' + prop + '=' + params[prop];
  850. }
  851. }
  852.  
  853. this.viewFrame = new Ext.Panel({
  854. layout: 'fit',
  855. //autoScroll: true,
  856. monitorResize: true,
  857. html: '<iframe class="x-panel-body page_color default_font" style="width:100%;height:100%;" frameborder="0" src="' + url + '" title="' + this.I18N.ItemViewerFrame + '"></iframe>'
  858. });
  859. this.viewWindow.add(this.viewFrame);
  860.  
  861. this.fireEvent('jswindowopening');
  862. this.fireEvent('vieweropening');
  863. this.viewWindow.show();
  864. this.viewWindow.setTitle(Ext.util.Format.htmlEncode(title));
  865. this.resizeViewWindow();
  866. Ext.EventManager.onWindowResize(this.resizeViewWindow, this);
  867. return false;
  868. },
  869.  
  870. editItem: function (enrollmentId, itemId, title, params) {
  871. var pageSizeObj = Ext.get(document.body).getSize();
  872. if (this.editWindow == null) {
  873. this.editWindow = new Ext.Window({
  874. width: pageSizeObj.width - 32,
  875. height: pageSizeObj.height - 24,
  876. layout: 'fit',
  877. plain: false,
  878. buttonAlign: 'center',
  879. shim: true,
  880. x: 16,
  881. y: 4,
  882. modal: true,
  883. frame: true,
  884. closable: false,
  885. closeAction: "hide",
  886. resizable: true,
  887. constrain: true,
  888. draggable: true
  889. });
  890. }
  891. else {
  892. this.editWindow.remove(this.editFrame, true);
  893. this.editFrame = null;
  894. }
  895.  
  896. var url = this.appRoot + "/Component/ItemEditor?id=FrameItemEditor&closable=true&enrollmentid=" + enrollmentId + '&itemid=' + itemId;
  897. if (params != null) {
  898. for (prop in params) {
  899. url += '&' + prop + '=' + params[prop];
  900. }
  901. }
  902.  
  903. this.editFrame = new Ext.Panel({
  904. xtype: 'panel',
  905. layout: 'fit',
  906. //autoScroll: true,
  907. monitorResize: true,
  908. id: 'hdEditFrame',
  909. html: '<iframe class="x-panel-body page_color default_font" style="width:100%;height:100%;" frameborder="0" src="' + url + '" title="' + this.I18N.ItemEditorFrame + '"></iframe>'
  910. });
  911. this.editWindow.add(this.editFrame);
  912.  
  913. this.fireEvent('jswindowopening');
  914. this.fireEvent('editoropening');
  915. this.editWindow.show();
  916. this.editWindow.setTitle(Ext.util.Format.htmlEncode(title));
  917.  
  918. this.resizeEditWindow();
  919. Ext.EventManager.onWindowResize(this.resizeEditWindow, this);
  920. },
  921.  
  922. editGroupSet: function (enrollmentId, setId, title, params) {
  923. var pageSizeObj = Ext.get(document.body).getSize();
  924. if (this.groupEditorWindow == null) {
  925. this.groupEditorWindow = new Ext.Window({
  926. width: pageSizeObj.width - 32,
  927. height: pageSizeObj.height - 24,
  928. layout: 'fit',
  929. plain: false,
  930. buttonAlign: 'center',
  931. shim: true,
  932. x: 16,
  933. y: 4,
  934. modal: true,
  935. frame: true,
  936. closable: false,
  937. closeAction: "hide",
  938. resizable: true,
  939. constrain: true,
  940. draggable: true
  941. });
  942. }
  943. else {
  944. this.groupEditorWindow.remove(this.groupEditorFrame, true);
  945. this.groupEditorFrame = null;
  946. }
  947.  
  948. var url = this.appRoot + "/Component/GroupSetup?enrollmentId=" + enrollmentId + '&setid=' + setId;
  949. if (params != null) {
  950. for (prop in params) {
  951. url += '&' + prop + '=' + params[prop];
  952. }
  953. }
  954.  
  955. this.groupEditorFrame = new Ext.Panel({
  956. xtype: 'panel',
  957. layout: 'fit',
  958. //autoScroll: true,
  959. monitorResize: true,
  960. id: 'hdGroupEditFrame',
  961. html: '<iframe class="x-panel-body page_color default_font" style="width:100%;height:100%;" frameborder="0" src="' + url + '" title="' + this.I18N.GroupSetupFrame + '"></iframe>'
  962. });
  963. this.groupEditorWindow.add(this.groupEditorFrame);
  964.  
  965. this.fireEvent('jswindowopening');
  966. this.fireEvent('groupsetupopening');
  967. this.groupEditorWindow.show();
  968. this.groupEditorWindow.setTitle(title);
  969.  
  970. this.resizeGroupEditWindow();
  971. Ext.EventManager.onWindowResize(this.resizeGroupEditWindow, this);
  972. },
  973.  
  974. sendEmail: function (enrollmentId) {
  975. var height = Math.min(400, screen.height);
  976. var width = Math.min(600, screen.width);
  977. var features = 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,height=' + height + ',width=' + width;
  978. var contextQuery = '';
  979. var newWindow = window.open(this.appRoot + "/Learn/Email.aspx?appendcontext=1&enrollmentid=" + enrollmentId + contextQuery, "", features);
  980. newWindow.focus();
  981. return false;
  982. },
  983.  
  984. launchConferencing: function () {
  985. var height = Math.min(600, screen.height);
  986. var width = Math.min(800, screen.width);
  987. var features = 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,height=' + height + ',width=' + width;
  988. var newWindow = window.open(this.appRoot + "/CommCenter", "communications_center", features);
  989. newWindow.focus();
  990. return false;
  991. },
  992.  
  993. fireEvent: function () {
  994. var args, name;
  995. name = arguments[0], args = 2 <= arguments.length ? [].slice.call(arguments, 1) : [];
  996. // Allow component hosted in an iframe to listen to the messages
  997. if (window.parent && (window !== window.parent)) {
  998. window.parent.postMessage({ eventName: name, args: args }, '*');
  999. }
  1000. FrameApi.superclass.fireEvent.apply(this, arguments);
  1001. }
  1002. });
  1003.  
  1004. FRAME_API = new FrameApi({
  1005. appVersion: '2016.2.1286',
  1006. appVersionMode: 'Annual',
  1007. authenticated: true,
  1008. appRoot: '',
  1009. frameRoot: '/Frame',
  1010. resourceRoot: '',
  1011. frameResourceRoot: '/Frame',
  1012. adminUrl: '/Admin/Admin.ashx',
  1013. domainId: '26601612',
  1014. domainName: 'Houston - The Woodlands',
  1015. userId: '30479071',
  1016. proxyUserId: '30479071',
  1017. proxyUsername: '',
  1018. proxyUserspace: '',
  1019. isProxy: false,
  1020. userspace: 'fusion-houstonthewoodlands',
  1021. username: 'cseberino',
  1022. userDisplay: 'Christian Seberino',
  1023. rights: 4398049854208,
  1024. roles: [{ entityType: 'D', name: 'Administrator', privileges: -1},{ entityType: 'D', name: 'Course Coordinator', privileges: 9127788576},{ entityType: 'D', name: 'User Coordinator', privileges: 343597387552},{ entityType: 'D', name: 'Section Coordinator', privileges: 570424295456},{ entityType: 'D', name: 'Cache Server', privileges: 2228224},{ entityType: 'D', name: 'Technical Support', privileges: 927444438816},{ entityType: 'D', name: 'Teacher', privileges: 3343104},{ entityType: 'C', name: 'Owner', privileges: 4950739255296},{ entityType: 'C', name: 'Author', privileges: 4398046904320},{ entityType: 'C', name: 'Teacher', privileges: 4950201860096},{ entityType: 'C', name: 'Teaching Assistant', privileges: 4400311566336},{ entityType: 'C', name: 'Student', privileges: 131073},{ entityType: 'C', name: 'Auditor', privileges: 131072},{ entityType: 'S', name: 'Owner', privileges: 553239183360},{ entityType: 'S', name: 'Teacher', privileges: 552157052928},{ entityType: 'S', name: 'Teaching Assistant', privileges: 2267021312},{ entityType: 'S', name: 'Student', privileges: 2097153},{ entityType: 'S', name: 'Auditor', privileges: 2097152}],
  1025. isAdmin: false,
  1026. canConference: false,
  1027. canProxy: false,
  1028. canTeachACourse: true,
  1029. currentEnrollment: null,
  1030. helpRoot: '/Docs/',
  1031. homeLabel: 'Home',
  1032. hideObjectives: false,
  1033. hideSections: true,
  1034. menuEntries: [{ id: 'tes-support-portal', type: 'Admin', text: 'TES Support Portal', url: 'https://tesconnected.freshdesk.com/solution/categories', target: '_blank', features: '', icon: '', domainRights: 0, domainRoles: '', enrollmentRights: 0,enrollmentRoles:'', submenus: [] },{ id: 'go-to-genius', type: 'Course', text: 'Go to Genius', url: 'http://fusion.geniussis.com/ActiveStudents.aspx', target: '_blank', features: '', icon: '', domainRights: 0, domainRoles: '', enrollmentRights: 0,enrollmentRoles:'', submenus: [] },{ id: 'go-to-genius', type: 'Home', text: 'Go to Genius', url: 'http://fusion.geniussis.com/ActiveStudents.aspx', target: '_blank', features: '', icon: '', domainRights: 0, domainRoles: '', enrollmentRights: 0,enrollmentRoles:'', submenus: [] },{ id: 'go-to-genius', type: 'Admin', text: 'Go to Genius', url: 'http://fusion.geniussis.com/ActiveStudents.aspx', target: '_blank', features: '', icon: '', domainRights: 0, domainRoles: '', enrollmentRights: 0,enrollmentRoles:'', submenus: [] },{ id: 'dld_topmenu', type: 'Top', text: 'Digital Library Dashboard', url: 'Frame/Resource/14727157/dld.vhtml', target: '', features: '', icon: 'Frame/Resource/14727157/icon_diglib_menu.png', domainRights: 0, domainRoles: 'Administrator|Teacher', enrollmentRights: 0,enrollmentRoles:'', submenus: [] },{ id: 'sharedContent', type: 'Top', text: 'Shared Content', url: 'Frame/Component/AdminDomainDetail?domainid=45256042', target: '', features: '', icon: 'Images/catalog_active.png', domainRights: 0, domainRoles: '', enrollmentRights: 0,enrollmentRoles:'', submenus: [] }],
  1035. catalogEntries: [],
  1036. enrollments: [{id: '45469737',courseEnrollment: false,domainId: '26601612',enrollmentStatus: 1,enrollmentStart: '2016-01-11 18:00:00',enrollmentEnd: '2016-05-31 19:00:00',rights: 4950201860096,sectionRights: 0,courseRights: -1895432192,currentUser: true,userId: '30479071',userFirstName: '',userLastName: '',courseId: '45469735',courseTitle: '112 Algebra 2 A TX (Desdin, Brett)',courseDisplay: '112 Algebra 2 A TX (Desdin, Brett)',courseReference: '',courseType: 'Range',courseDays: 365,isTeacher: true,isStudent: false,isTestStudent: false,canEdit: true,canConference: false,canReportGrades: true},{id: '46024685',courseEnrollment: false,domainId: '26601612',enrollmentStatus: 1,enrollmentStart: '2016-01-28 18:00:00',enrollmentEnd: '2016-05-31 19:00:00',rights: 4950201860096,sectionRights: 0,courseRights: -1895432192,currentUser: true,userId: '30479071',userFirstName: '',userLastName: '',courseId: '46024683',courseTitle: '112 Algebra 2 B TX (Atkins, Caroline)',courseDisplay: '112 Algebra 2 B TX (Atkins, Caroline)',courseReference: '',courseType: 'Range',courseDays: 365,isTeacher: true,isStudent: false,isTestStudent: false,canEdit: true,canConference: false,canReportGrades: true},{id: '46489298',courseEnrollment: false,domainId: '26601612',enrollmentStatus: 1,enrollmentStart: '2016-02-24 18:00:00',enrollmentEnd: '2016-06-30 19:00:00',rights: 4950201860096,sectionRights: 0,courseRights: -1895432192,currentUser: true,userId: '30479071',userFirstName: '',userLastName: '',courseId: '46489296',courseTitle: '112 Algebra 2 B TX (Desdin, Brett)',courseDisplay: '112 Algebra 2 B TX (Desdin, Brett)',courseReference: '',courseType: 'Range',courseDays: 365,isTeacher: true,isStudent: false,isTestStudent: false,canEdit: true,canConference: false,canReportGrades: true},{id: '34536036',courseEnrollment: false,domainId: '26601612',enrollmentStatus: 1,enrollmentStart: '2015-09-20 00:00:00',enrollmentEnd: '2016-02-27 23:59:00',rights: 4950201860096,sectionRights: 0,courseRights: -1895432192,currentUser: true,userId: '30479071',userFirstName: '',userLastName: '',courseId: '34536033',courseTitle: '112H Algebra 2 Honors A TX (Fargo , Katie)',courseDisplay: '112H Algebra 2 Honors A TX (Fargo , Katie)',courseReference: '',courseType: 'Range',courseDays: 365,isTeacher: true,isStudent: false,isTestStudent: false,canEdit: true,canConference: false,canReportGrades: true},{id: '42279202',courseEnrollment: false,domainId: '26601612',enrollmentStatus: 1,enrollmentStart: '2015-11-29 18:00:00',enrollmentEnd: '2025-11-29 18:00:00',rights: 4950201860096,sectionRights: 0,courseRights: -1895432192,currentUser: true,userId: '30479071',userFirstName: '',userLastName: '',courseId: '42208734',courseTitle: '112H Algebra 2 Honors B TX (Mulrooney, Dylan)',courseDisplay: '112H Algebra 2 Honors B TX (Mulrooney, Dylan)',courseReference: '',courseType: 'Range',courseDays: 365,isTeacher: true,isStudent: false,isTestStudent: false,canEdit: true,canConference: false,canReportGrades: true},{id: '45030522',courseEnrollment: false,domainId: '26601612',enrollmentStatus: 1,enrollmentStart: '2015-12-29 18:00:00',enrollmentEnd: '2016-05-30 19:00:00',rights: 4950201860096,sectionRights: 0,courseRights: -1895432192,currentUser: true,userId: '30479071',userFirstName: '',userLastName: '',courseId: '45030519',courseTitle: '207 Science 7 B TX (Sos, Stephanie)',courseDisplay: '207 Science 7 B TX (Sos, Stephanie)',courseReference: '',courseType: 'Range',courseDays: 365,isTeacher: true,isStudent: false,isTestStudent: false,canEdit: true,canConference: false,canReportGrades: true},{id: '44625573',courseEnrollment: false,domainId: '26601612',enrollmentStatus: 1,enrollmentStart: '2015-12-15 18:00:00',enrollmentEnd: '2016-04-30 19:00:00',rights: 4950201860096,sectionRights: 0,courseRights: -1895432192,currentUser: true,userId: '30479071',userFirstName: '',userLastName: '',courseId: '44625570',courseTitle: '208 Science 8 B TX (Henry, Sam )',courseDisplay: '208 Science 8 B TX (Henry, Sam )',courseReference: '',courseType: 'Range',courseDays: 365,isTeacher: true,isStudent: false,isTestStudent: false,canEdit: true,canConference: false,canReportGrades: true},{id: '45871963',courseEnrollment: false,domainId: '26601612',enrollmentStatus: 1,enrollmentStart: '2016-01-21 18:00:00',enrollmentEnd: '2016-05-31 19:00:00',rights: 4950201860096,sectionRights: 0,courseRights: -1895432192,currentUser: true,userId: '30479071',userFirstName: '',userLastName: '',courseId: '45871961',courseTitle: '221 Biology A TX (Spearman, Anthony)',courseDisplay: '221 Biology A TX (Spearman, Anthony)',courseReference: '',courseType: 'Range',courseDays: 365,isTeacher: true,isStudent: false,isTestStudent: false,canEdit: true,canConference: false,canReportGrades: true},{id: '45433568',courseEnrollment: false,domainId: '26601612',enrollmentStatus: 1,enrollmentStart: '2016-01-10 18:00:00',enrollmentEnd: '2016-05-31 19:00:00',rights: 4950201860096,sectionRights: 0,courseRights: -1895432192,currentUser: true,userId: '30479071',userFirstName: '',userLastName: '',courseId: '45433565',courseTitle: '241 Chemistry A TX (Desdin, Isabella)',courseDisplay: '241 Chemistry A TX (Desdin, Isabella)',courseReference: '',courseType: 'Range',courseDays: 365,isTeacher: true,isStudent: false,isTestStudent: false,canEdit: true,canConference: false,canReportGrades: true},{id: '46489321',courseEnrollment: false,domainId: '26601612',enrollmentStatus: 1,enrollmentStart: '2016-02-24 18:00:00',enrollmentEnd: '2016-06-30 19:00:00',rights: 4950201860096,sectionRights: 0,courseRights: -1895432192,currentUser: true,userId: '30479071',userFirstName: '',userLastName: '',courseId: '46489319',courseTitle: '241 Chemistry B TX (Desdin, Isabella)',courseDisplay: '241 Chemistry B TX (Desdin, Isabella)',courseReference: '',courseType: 'Range',courseDays: 365,isTeacher: true,isStudent: false,isTestStudent: false,canEdit: true,canConference: false,canReportGrades: true},{id: '45030559',courseEnrollment: false,domainId: '26601612',enrollmentStatus: 1,enrollmentStart: '2015-12-29 18:00:00',enrollmentEnd: '2016-05-30 19:00:00',rights: 4950201860096,sectionRights: 0,courseRights: -1895432192,currentUser: true,userId: '30479071',userFirstName: '',userLastName: '',courseId: '45030556',courseTitle: 'MS Course 2 B TX (Sos, Stephanie)',courseDisplay: 'MS Course 2 B TX (Sos, Stephanie)',courseReference: '',courseType: 'Range',courseDays: 365,isTeacher: true,isStudent: false,isTestStudent: false,canEdit: true,canConference: false,canReportGrades: true},{id: '44533776',courseEnrollment: false,domainId: '26601612',enrollmentStatus: 1,enrollmentStart: '2015-12-13 18:00:00',enrollmentEnd: '2016-04-30 19:00:00',rights: 4950201860096,sectionRights: 0,courseRights: -1895432192,currentUser: true,userId: '30479071',userFirstName: '',userLastName: '',courseId: '44533773',courseTitle: 'MS Course 3 B TX (Scott, Bryson)',courseDisplay: 'MS Course 3 B TX (Scott, Bryson)',courseReference: '',courseType: 'Range',courseDays: 365,isTeacher: true,isStudent: false,isTestStudent: false,canEdit: true,canConference: false,canReportGrades: true},{id: '45956550',courseEnrollment: false,domainId: '26601612',enrollmentStatus: 1,enrollmentStart: '2016-01-25 18:00:00',enrollmentEnd: '2016-08-31 19:00:00',rights: 4950201860096,sectionRights: 0,courseRights: -1895432192,currentUser: true,userId: '30479071',userFirstName: '',userLastName: '',courseId: '45956548',courseTitle: 'TM (Heil, Michael)',courseDisplay: 'TM (Heil, Michael)',courseReference: '',courseType: 'Range',courseDays: 365,isTeacher: true,isStudent: false,isTestStudent: false,canEdit: true,canConference: false,canReportGrades: true},{id: '35068009',courseEnrollment: false,domainId: '26601612',enrollmentStatus: 3,enrollmentStart: '2015-10-11 19:00:00',enrollmentEnd: '2016-01-30 18:00:00',rights: 4950201860096,sectionRights: 0,courseRights: -1895432192,currentUser: true,userId: '30479071',userFirstName: '',userLastName: '',courseId: '35067999',courseTitle: 'TMA TX (Henry, Leland)',courseDisplay: 'TMA TX (Henry, Leland)',courseReference: '',courseType: 'Range',courseDays: 365,isTeacher: true,isStudent: false,isTestStudent: false,canEdit: true,canConference: false,canReportGrades: true},{id: '35603527',courseEnrollment: false,domainId: '26601612',enrollmentStatus: 3,enrollmentStart: '2015-10-25 19:00:00',enrollmentEnd: '2016-01-30 18:00:00',rights: 4950201860096,sectionRights: 0,courseRights: -1895432192,currentUser: true,userId: '30479071',userFirstName: '',userLastName: '',courseId: '35603524',courseTitle: 'TMA TX (Varughese, Nicole)',courseDisplay: 'TMA TX (Varughese, Nicole)',courseReference: '',courseType: 'Range',courseDays: 365,isTeacher: true,isStudent: false,isTestStudent: false,canEdit: true,canConference: false,canReportGrades: true},{id: '35603536',courseEnrollment: false,domainId: '26601612',enrollmentStatus: 3,enrollmentStart: '2015-10-25 19:00:00',enrollmentEnd: '2016-01-30 18:00:00',rights: 4950201860096,sectionRights: 0,courseRights: -1895432192,currentUser: true,userId: '30479071',userFirstName: '',userLastName: '',courseId: '35603533',courseTitle: 'TMA TX (Varughese, Nicole)',courseDisplay: 'TMA TX (Varughese, Nicole)',courseReference: '',courseType: 'Range',courseDays: 365,isTeacher: true,isStudent: false,isTestStudent: false,canEdit: true,canConference: false,canReportGrades: true}],
  1037. showBeforeUnloadPrompts: true,
  1038.  
  1039. viewAda: false,
  1040. showMobileViewMenuItem: false,
  1041. mobileViewEnabled: false,
  1042. noforceRelogin: false,
  1043. dlaptoken: '~fLR0BAAAAAgR443xiRCqtA.N3hqQfwiH4YEsBQIeaYR2B',
  1044. isSSO: true,
  1045. dlapUrl: '//gls.agilix.com',
  1046. absoluteAppRoot: 'https://fusion-houstonthewoodlands.brainhoney.com',
  1047.  
  1048. objectiveOptions: {
  1049. setowner: 'CA_ASN,CA_edgate,TX_edgate,NY_edgate,NJ_edgate,CCSS',
  1050. lowgrade: 'K',
  1051. highgrade: '12'
  1052. },
  1053.  
  1054. // Strings
  1055. I18N : {
  1056. ItemViewerFrame: 'Item Viewer Frame',
  1057. ItemEditorFrame: 'Item Editor Frame',
  1058. GroupSetupFrame: 'Group Setup Frame',
  1059. notLoggedIn: 'You are no longer logged in.\u003cbr /\u003ePlease click {0} now.',
  1060. notConnected: 'You have been disconnected.\u003cbr /\u003ePlease connect and click {0}.',
  1061. login: 'Login',
  1062. unknownError: 'Unknown error.',
  1063. passwordRequired:'Password is required',
  1064. connectionErrorMessage:'You have lost your connection. Please log in again so that you can resume your last session and not lose your work.\u003cbr/\u003e',
  1065. loginAsDifferentUser:'Login As a Different User'
  1066. }
  1067. });
  1068. Ext.onReady(function() {
  1069. if (typeof (Ext.QuickTips) != 'undefined') {
  1070. Ext.QuickTips.init();
  1071. }
  1072. var parentApi = FRAME_API.findParentApi(window);
  1073. if(parentApi != null) {
  1074. FRAME_API = parentApi;
  1075. }
  1076. else {
  1077. FRAME_API.init(15);
  1078. }
  1079. });
  1080. </script>
  1081.  
  1082. <style type="text/css">
  1083. html, body
  1084. {
  1085. overflow: hidden;
  1086. }
  1087.  
  1088. #frame-prev-link
  1089. {
  1090. float: left;
  1091. margin-left: 8px;
  1092. margin-right: 2px;
  1093. background: url(/Images/nav_back_normal.gif) no-repeat;
  1094. height: 30px;
  1095. width: 24px;
  1096. cursor:pointer;
  1097. background-position: 4px 2px;
  1098. }
  1099.  
  1100. #frame-next-link
  1101. {
  1102. float: left;
  1103. margin-right: 4px;
  1104. background: url(/Images/nav_next_normal.gif) no-repeat;
  1105. height: 30px;
  1106. width: 24px;
  1107. cursor:pointer;
  1108. background-position: 4px 2px;
  1109. }
  1110.  
  1111. #frame-header-border
  1112. {
  1113. position: absolute;
  1114. top: 97px;
  1115. height: 2px;
  1116. left: 0px;
  1117. right: 0px;
  1118. }
  1119.  
  1120. </style>
  1121. <link rel="apple-touch-icon" href="/apple-touch-icon.png" />
  1122. </head>
  1123. <body class="page_color default_font">
  1124. <div class="global_header">
  1125. <div class="top_header">
  1126. <div class="top_left_header no-print"></div>
  1127. <div id="frame-top-right-header" class="top_right_header no-print"></div>
  1128. <div id="frame-top-header-buttons" class="top_header_buttons no-print">
  1129. <div id="h-home-btn" style="display:none;" class="top_header_button">
  1130. <div class="top_header_button_img top_header_home_button" ext:qtip="Home" data-label="Home"></div>
  1131. </div>
  1132. <div id="h-course-btn" style="display:none;position:relative;" class="top_header_button">
  1133. <div class="top_header_button_img top_header_courses_button" ext:qtip="Courses" data-label="Courses"></div>
  1134. <div id="h-course-btn-dropdown" class="sub_header_dropdown" style="position:absolute;right:0px;bottom:2px;"></div>
  1135. </div>
  1136. <div id="h-catalog-btn" style="display:none;" class="top_header_button">
  1137. <div class="top_header_button_img top_header_catalog_button" ext:qtip="Catalog" data-label="Catalog"></div>
  1138. </div>
  1139. <div id="h-admin-btn" style="display:none;" class="top_header_button">
  1140. <div class="top_header_button_img top_header_admin_button" ext:qtip="Administration" data-label="Administration"></div>
  1141. </div> </div>
  1142. </div>
  1143. <div id="frame-sub-header" class="sub_header">
  1144. <div id="sh-home" style="display:none">
  1145. <div class="sub_header_list"></div>
  1146. <div id="frame-view-home" class="sub_header_list">
  1147. <a class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1148. <div id="h-home-link" class="no_underline_link"></div>
  1149. </a>
  1150. </div>
  1151. <div id="frame-calendar" class="sub_header_list">
  1152. <a class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1153. <div class="no_underline_link">Calendar</div>
  1154. </a>
  1155. </div>
  1156. <div id="frame-teachacourse" class="sub_header_list" style="display:none">
  1157. <a class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1158. <div class="no_underline_link">Teach a Course</div>
  1159. </a>
  1160. </div>
  1161. </div>
  1162. <div id="sh-courses" style="display:none">
  1163. <div id="frame-view-course" class="sub_header_list" style="display:none">
  1164. <a class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1165. <div class="no_underline_link">Student View</div>
  1166. </a>
  1167. </div>
  1168. <div id="frame-view-syllabus" class="sub_header_list" style="display:none">
  1169. <a class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1170. <div class="no_underline_link">Syllabus</div>
  1171. </a>
  1172. </div>
  1173. <div id="frame-view-gradebook" class="sub_header_list" style="display:none">
  1174. <a class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1175. <div class="no_underline_link">Gradebook</div>
  1176. </a>
  1177. </div>
  1178. <div id="frame-view-grades" class="sub_header_list" style="display:none">
  1179. <a class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1180. <div class="no_underline_link">Grades</div>
  1181. </a>
  1182. </div>
  1183. <div id="frame-view-objectives" class="sub_header_list" style="display:none">
  1184. <a class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1185. <div class="no_underline_link">Objectives</div>
  1186. </a>
  1187. </div>
  1188. <div id="frame-view-testanalytics" class="sub_header_list" style="display:none">
  1189. <a class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1190. <div class="no_underline_link">_</div>
  1191. </a>
  1192. </div>
  1193. <div id="frame-view-activity" class="sub_header_list" style="display:none">
  1194. <a class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1195. <div class="no_underline_link">_</div>
  1196. </a>
  1197. </div>
  1198. <div id="frame-view-finalgrades" class="sub_header_list" style="display:none">
  1199. <a class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1200. <div class="no_underline_link">Final Grades</div>
  1201. </a>
  1202. </div>
  1203. </div>
  1204. <div id="sh-common" style="display:none">
  1205. <div id="frame-communicate" class="sub_header_list" style="display:none">
  1206. <a class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1207. <div class="no_underline_link">Communicate</div>
  1208. <div class="sub_header_dropdown"></div>
  1209. </a>
  1210. </div>
  1211. </div>
  1212. <div id="sh-catalog" style="display:none">
  1213. </div>
  1214. <div id="sh-admin" style="display:none">
  1215. <div id="frame-admin-dashboard" class="sub_header_list">
  1216. <a class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1217. Dashboard
  1218. </a>
  1219. </div>
  1220. <div id="frame-admin-domaindetail" class="sub_header_list">
  1221. <a class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1222. Administration
  1223. </a>
  1224. </div>
  1225. <div id="frame-admin-users" class="sub_header_list">
  1226. <a class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1227. Users
  1228. </a>
  1229. </div>
  1230. <div id="frame-admin-courses" class="sub_header_list">
  1231. <a class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1232. Courses
  1233. </a>
  1234. </div>
  1235. <div id="frame-admin-sections" class="sub_header_list">
  1236. <a class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1237. Sections
  1238. </a>
  1239. </div>
  1240. </div>
  1241. <div class="sub_header_user">
  1242. <a id="frame-account" class="no_underline_link" href="javascript:void(0)" onclick="return false;">
  1243. <div id="userDropdown" class="no_underline_link"></div>
  1244. <div class="sub_header_dropdown">
  1245. </div>
  1246. </a>
  1247. <a id="frame-logout" class="no_underline_link" style="margin-left: 4px" href="javascript:void(0);" onclick="return false;">
  1248. Log Out
  1249. </a>
  1250. </div>
  1251. </div>
  1252. <div id="hdPageHeader">
  1253. <div class="page_header">
  1254. <span id="hdPageTitle" class="page_title"></span><span id="hdPageTitleSeparator" style="display: none;" class="page_title_separator">:&nbsp;</span><span id="hdCourseTitle" class="course_title"></span><span id="hdCourseSeparator" style="display: none;" class="course_separator">&nbsp;-&nbsp;</span><span id="hdSectionTitle" class="section_title"></span>
  1255. </div>
  1256. <div class="header_top_right">
  1257. <span id="headerTopRight" style="float:left">
  1258. <div id="frame-edit-link" class="hover_link" style="display: none; float: left; margin-top: 4px"><a class="hover_link" href="javascript:void(0)" onclick="return false;">Edit</a></div>
  1259. <div id="frame-prev-link" ext:qtip="Previous" style="display:none;float:left"></div>
  1260. <div id="frame-next-link" ext:qtip="Next" style="display:none;float:left"></div>
  1261. </span>
  1262. <div id="hdHelp" style="float:left">
  1263. <div class="help_button" ext:qtip='Help'>
  1264. </div>
  1265. </div>
  1266. </div>
  1267. </div>
  1268. </div>
  1269. <div class="main_content">
  1270.  
  1271. <!-- Ext CSS and Libs -->
  1272. <style type="text/css">
  1273. .module_header
  1274. {
  1275. text-align: center;
  1276. font-weight: bold;
  1277. height: 20px;
  1278. padding-top:2px;
  1279. white-space: nowrap;
  1280. }
  1281. .module_table table.x-table-layout {
  1282. width: 100%;
  1283. }
  1284. .module_table td {
  1285. vertical-align:top;
  1286. }
  1287. .module_lo_list {
  1288. border-left:0px;
  1289. border-top:0px;
  1290. border-bottom:0px;
  1291. width: 200px;
  1292. min-width: 200px;
  1293. }
  1294. .module_lo_list div
  1295. {
  1296. width: 200px;
  1297. overflow: hidden;
  1298. }
  1299.  
  1300. .module_activity_list {
  1301. }
  1302.  
  1303. .x-tree-node-leaf .x-tree-node-icon {
  1304. background-image: url(/Images/document_plain.png);
  1305. }
  1306.  
  1307. .lo_info
  1308. {
  1309. font-style: italic;
  1310. color: Gray;
  1311. }
  1312.  
  1313. .lo_used
  1314. {
  1315. color: Green;
  1316. }
  1317.  
  1318. .lo_warning
  1319. {
  1320. color: Maroon;
  1321. }
  1322.  
  1323. .upload-input
  1324. {
  1325. margin: 10px 10px 0px 10px;
  1326. }
  1327.  
  1328. .category_ed_cat_row.x-grid3-row td
  1329. {
  1330. font-weight: bold;
  1331. font-size: 10pt;
  1332. }
  1333.  
  1334. .category_ed_grid div.x-grid3-cell-inner
  1335. {
  1336. height: 20px;
  1337. text-align: right;
  1338. }
  1339. .category_ed_grid_total
  1340. {
  1341. height: 24px;
  1342. text-align: right;
  1343. font-weight: bold;
  1344. }
  1345. .category_ed_grid div.x-grid3-cell-inner div,
  1346. .category_ed_grid input,
  1347. .category_ed_grid_total_cell
  1348. {
  1349. padding-top: 3px;
  1350. }
  1351.  
  1352. .category_ed_grid div.x-grid3-cell-inner div.loading-indicator
  1353. {
  1354. height: 14px;
  1355. margin-left: 50px;
  1356. }
  1357.  
  1358. .category_ed_grid div.x-grid-editor
  1359. {
  1360. padding-top: 2px;
  1361. }
  1362.  
  1363. .category_ed_cat_row
  1364. {
  1365. /*border-top: solid 1px #ddd;*/
  1366. border-top-width: 1px;
  1367. border-bottom-width: 0px;
  1368. border-left-width: 0px;
  1369. border-right-width: 0px;
  1370. }
  1371. .query-checkbox
  1372. {
  1373. white-space:nowrap;
  1374. margin-left:5px;
  1375. }
  1376. .query-font
  1377. {
  1378. font-size: 8pt;
  1379. }
  1380. .query-cf-checkbox
  1381. {
  1382. margin-top: 3px;
  1383. }
  1384. .extra-credit-checkbox .x-form-checkbox
  1385. {
  1386. margin-top: 4px;
  1387. }
  1388.  
  1389. .agx-dt-list
  1390. {
  1391. font-size: 8pt;
  1392. font-weight: normal !important;
  1393. font-style: italic;
  1394. margin-top: 3px;
  1395. white-space: nowrap;
  1396. }
  1397.  
  1398. .x-date-inner a {
  1399. text-align:left;
  1400. }
  1401. .x-date-inner th {
  1402. text-align:center !important;
  1403. }
  1404. .x-date-inner td {
  1405. border-left:0px;
  1406. border-top:0px;
  1407. border-right: solid 1px #777;
  1408. border-bottom: solid 1px #777;
  1409. vertical-align: top;
  1410. }
  1411.  
  1412. .x-syllabus-group-row .x-grid3-col-title
  1413. {
  1414. font-weight: bold;
  1415. font-size: 11pt;
  1416. }
  1417.  
  1418. .x-syllabus-group-row .x-grid3-row-body
  1419. {
  1420. margin-left:20px;
  1421. }
  1422.  
  1423. .x-syllabus-group
  1424. {
  1425. margin-bottom: 6px;
  1426. white-space: pre-wrap;
  1427. }
  1428. .x-syllabus-group-name
  1429. {
  1430. font-weight: bold;
  1431. }
  1432. .x-syllabus-group-members
  1433. {
  1434. font-style: italic;
  1435. }
  1436.  
  1437. </style>
  1438.  
  1439.  
  1440. <div id="viewportPanel_FrameContent" class="x-hidden" style="overflow:hidden;">
  1441.  
  1442. <div id="loPanel_FrameContent">
  1443. <table id="loHeader_FrameContent" width="100%" cellpadding="0" cellspacing="0">
  1444. <tr class="color_header panel_header" >
  1445. <td style="white-space:nowrap;width:100%">Objectives</td>
  1446. <td><a class="hover_link" href="javascript:void(0);" onclick="syllabus_FrameContent.configureLOs(); return false;">Edit</a></td>
  1447. </tr>
  1448. </table>
  1449. <div id="loList_FrameContent"></div>
  1450. </div>
  1451. <div id="assetPanel_FrameContent">
  1452. <div id="resourcesHeader_FrameContent">
  1453. <table width="100%" cellpadding="0" cellspacing="0">
  1454. <tr class="color_header panel_header">
  1455. <td style="white-space:nowrap;width:100%" colspan="2">Resources</td>
  1456. </tr>
  1457. </table>
  1458. </div>
  1459. <div id="myFiles_FrameContent">
  1460. <table width="100%" cellpadding="0" cellspacing="0">
  1461. <tr>
  1462. <td colspan="2">
  1463. <div id="queryPanel_FrameContent"></div>
  1464. </td>
  1465. </tr>
  1466. <tr>
  1467. <td colspan="2" align="right">
  1468. <div id="goButton_FrameContent" style="float:right;display:inline;padding-right:7px;padding-bottom:5px"></div>
  1469. <div id="clearButton_FrameContent" style="float:right;display:inline;padding-right:7px;padding-bottom:5px"></div>
  1470. </td>
  1471. </tr>
  1472. <tr class="results_header color_medium">
  1473. <td style="white-space:nowrap;width:100%;padding-left:3px" colspan="2">Results<span id="filteredAssets_FrameContent" style="font-weight:normal;color:Red;cursor:default;display:none;"> (*first 500 shown)</span></td>
  1474. </tr>
  1475. </table>
  1476. </div>
  1477. </div>
  1478. <table id="assemblyHeader_FrameContent" width="100%" cellpadding="0" cellspacing="0">
  1479. <tr class="color_header panel_header">
  1480. <td style="white-space:nowrap;">Syllabus/Schedule&nbsp;&nbsp;&nbsp;<img style="vertical-align:middle;cursor:pointer;" ext:qtip="Restore Deleted Items" height="16" width="16" src="/Images/garbage.png" onclick="return syllabus_FrameContent.restoreItems();" /></td>
  1481. <td style="padding-top:0px !important; padding-bottom:0px !important;width:100%"><div id="viewComboEl_FrameContent"></div></td>
  1482. <td style="white-space:nowrap;"><a class="hover_link" href="javascript:void(0);" onclick="syllabus_FrameContent.configureCourse(); return false;">Course Settings</a></td>
  1483. </tr>
  1484. </table>
  1485. <div id="assemblyNodes_FrameContent">
  1486. </div>
  1487. <!-- Dialog for Upload Course Assets-->
  1488. <div id="uploadContentDialog_FrameContent" class="x-hidden">
  1489. <div class="x-window-header">Upload File</div>
  1490. </div>
  1491. <div id="uploadPackageDialog_FrameContent" class="x-hidden">
  1492. <div class="x-window-header">IMS Common Cartridge or SCORM Package</div>
  1493. </div>
  1494.  
  1495. </div>
  1496. <div id="syllabus_FrameContent" class="default_font page_color default_border" style="position:absolute; top:0px; bottom:0px; left:0px; right:0px; border-left-width: 0; border-right-width: 0; border-bottom-width: 0;"></div>
  1497.  
  1498. <script type="text/javascript" src="/Scripts/MediaLoader_vv1D1651E621DCF00.js"></script><script type="text/javascript" src="/Scripts/SearchResults_vv1D1651E621DCF00.js"></script><script type="text/javascript" src="/Scripts/CourseAssembly_vv1D1651E621DCF00.js"></script>
  1499. <script type="text/javascript" language="javascript">
  1500. var assemblyApi = null;
  1501. var syllabus_FrameContent;
  1502. Ext.onReady(function() {
  1503. syllabus_FrameContent = new Syllabus({
  1504. cid: 'FrameContent',
  1505.  
  1506. appRoot: '',
  1507. enrollmentId: '46024685',
  1508. courseId: '46024683',
  1509. courseTitle: '112 Algebra 2 B TX (Atkins, Caroline)',
  1510. blankImg: '/p',
  1511. zoomItemId: '',
  1512.  
  1513. invalidFileChars: '\"\u003c\u003e|
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement