Permalink
Browse files

Main JS file for topic - ajax course format (still needs a little cle…

…aning though)
  • Loading branch information...
1 parent be2a520 commit 04b2d74f03d4c75c07c074735ec88c907126d9b9 cap2501 committed Aug 21, 2006
Showing with 207 additions and 0 deletions.
  1. +207 −0 course/format/topics/ajaxcourse-topics.js
@@ -0,0 +1,207 @@
+//set DDM to intersect mode
+//YAHOO.util.DDM.mode = YAHOO.util.DDM.INTERSECT;
+
+//hide content body until done loading(manipulation looks ugly elsewise)
+document.getElementById('content').style.display='none';
+
+//onload object for handling scripts on page load, this insurses they run in my order
+function onload_class(){
+ this.scripts = new Array();
+ this.debug = false;
+}
+
+onload_class.prototype.add = function(script){
+ if(this.debug)YAHOO.log("onload.add - adding "+script,"junk");
+ this.scripts[this.scripts.length] = script;
+ }
+
+onload_class.prototype.load = function(){
+ var scriptcount = this.scripts.length;
+ if(this.debug)YAHOO.log("onload.load - loading "+scriptcount+" scripts","info");
+ for(i=0;i<scriptcount;i++)
+ eval(this.scripts[i]);
+ }
+
+var onload = new onload_class();
+
+
+
+//main page object
+function main_class(){
+ this.portal = new php_portal_class();
+
+ this.blocks = new Array();
+ this.sections = new Array();
+
+ this.leftcolumn = null;
+ this.rightcolumn = null;
+
+ //this.logview = new YAHOO.widget.LogReader(document.body.appendChild(document.createElement('div')));
+ this.icons = [];
+ this.marker = null;
+ //things to process onload
+ onload.add('main.process_document();');
+ onload.add("document.getElementById('content').style.display='block';");
+
+ this.connectQueue = [];
+ this.connectQueueHead = 0;
+ this.connectQueueConnection = null;
+
+ this.debug = true;
+}
+
+
+main_class.prototype.process_blocks = function(){
+ //remove unneeded icons (old school position icons and delete/hide although they will be readded)
+ var rmIconClasses = ['icon up','icon down','icon right','icon left','icon delete','icon hide'];
+ for(var c=0;c<rmIconClasses.length;c++){
+ els = YAHOO.util.Dom.getElementsByClassName(rmIconClasses[c]);
+
+ for(var x=0;x<els.length;x++)
+ els[x].parentNode.removeChild(els[x]);
+ }
+
+ //process the block ids passed from php
+ var blockcount = this.portal.blocks.length;
+ YAHOO.log("main.processBlocks - processing "+blockcount+" blocks","info");
+ for(i=0;i<blockcount;i++){
+ this.blocks[i] = new block_class(this.portal.blocks[i][1],"blocks");
+
+ //put in correct side array also
+ if(this.portal.blocks[i][0] == 'l')
+ main.leftcolumn.add_block(this.blocks[i]);
+ else if(this.portal.blocks[i][0] == 'r')
+ main.rightcolumn.add_block(this.blocks[i]);
+
+ //hide if called for
+ if(this.portal.blocks[i][2] == 1)
+ this.blocks[i].toggle_hide(null,null,true);
+ }
+
+ }
+
+//process the document to get important containers
+main_class.prototype.process_document = function(){
+ YAHOO.log("Processing Document","info");
+ //process columns for blocks
+ this.leftcolumn = new column_class('left-column',"blocks",null,'l');
+ this.rightcolumn = new column_class('right-column',"blocks",null,'r');
+
+ //process sections
+ this.sections[0] = document.getElementById('section-0');
+ var ct = 1;
+ while(document.getElementById('section-'+ct) != null){
+ this.sections[ct]=new section_class('section-'+ct,"sections");
+ this.sections[ct].addToGroup('resources');
+ ct++;
+ }
+ if(this.debug)YAHOO.log("Processed "+ct+" sections");
+
+ }
+
+//return block by id
+main_class.prototype.get_block_index = function(el){
+ var blockcount = this.blocks.length;
+ for(i=0;i<blockcount;i++)
+ if(this.blocks[i] == el)
+ return i;
+ }
+
+main_class.prototype.get_section_index = function(el){
+ var sectioncount = this.sections.length;
+ for(i=0;i<sectioncount;i++)
+ if(this.sections[i] == el)
+ return i;
+ }
+
+main_class.prototype.mk_button = function(tag,imgSrc,attributes,imgAttributes){
+ //create button and return object
+ var container = document.createElement(tag);
+ container.style.cursor = 'pointer';
+ var image = document.createElement('img');
+ image.setAttribute('src',main.portal.wwwroot+imgSrc);
+ container.appendChild(image);
+
+ if(attributes != null)
+ for(var c=0;c<attributes.length;c++)
+ container.setAttribute(attributes[c][0],attributes[c][1]);
+
+ if(imgAttributes != null)
+ for(var c=0;c<attributes.length;c++)
+ image.setAttribute(imgAttributes[c][0],imgAttributes[c][1]);
+
+ return container;
+ }
+
+main_class.prototype.connect = function(method,urlStub,callback,body){
+ if(this.debug)YAHOO.log("Making "+method+" connection to /course/format/topicsajax/commands.php?courseId="+main.portal.id+"&"+urlStub);
+ if(callback == null){
+ callback = {}
+ }
+ return YAHOO.util.Connect.asyncRequest(method,this.portal.wwwroot+"/course/format/topicsajax/commands.php?courseId="+main.portal.id+"&"+urlStub,callback,body);
+
+
+ }
+
+main_class.prototype.connectQueue_add = function(method,urlStub,callback,body){
+ var Qlength = main.connectQueue.length;
+ main.connectQueue[Qlength] = [];
+ main.connectQueue[Qlength]['method'] = method;
+ main.connectQueue[Qlength]['urlStub'] = urlStub;
+ main.connectQueue[Qlength]['body'] = body;
+
+ if(main.connectQueueConnection == null || !YAHOO.util.Connect.isCallInProgress(main.connectQueueConnection))
+ main.connectQueue_fireNext();
+ }
+
+main_class.prototype.connectQueue_fireNext= function(){
+ var head = main.connectQueueHead;
+ if(head >= main.connectQueue.length)
+ return;
+
+ var callback = {
+ success: function(){
+ main.connectQueue_fireNext();
+ }
+ }
+
+ main.connectQueueConnection = main.connect(main.connectQueue[head]['method'],main.connectQueue[head]['urlStub'],callback,main.connectQueue[head]['body'])
+
+ main.connectQueueHead++;
+ }
+
+main_class.prototype.update_marker = function(newMarker){
+ if(this.marker != null)
+ this.marker.toggle_highlight();
+
+ this.marker = newMarker;
+ this.marker.toggle_highlight();
+
+ this.connect('post','class=course&field=marker',null,'value='+this.marker.sectionId);
+ }
+
+
+
+
+var main = new main_class();
+
+
+
+
+//portal to php data
+function php_portal_class(){
+ this.id = null;
+
+ //array of id's of blocks set at end of page load by php
+ this.blocks = new Array();
+ this.imagePath = null;
+
+ //flag for week fomat
+ this.isWeek = false;
+
+ YAHOO.log("instantiated php_portal_class","info");
+}
+
+
+
+

0 comments on commit 04b2d74

Please sign in to comment.