Changeset - 56b03ab8efe9
[Not reviewed]
Merge default
0 4 0
Nathan Brink (binki) - 15 years ago 2010-09-25 01:05:19
ohnobinki@ohnopublishing.net
merge
4 files changed with 36 insertions and 15 deletions:
0 comments (0 inline, 0 general)
inc/class.page.php
Show inline comments
 
@@ -89,25 +89,25 @@ class page {
 
    foreach ($this->scripts as $i){
 
    	echo $this->headCode["$i"];
 
    }
 

	
 
    echo '</head>
 
	  <body '.$this->bodyargs.' >';
 
    echo $this->top(); // Write out top
 
  }
 

	
 
  public function foot(){
 
    echo '</div>';
 
    $this->pageGenTime = round(microtime(), 3);
 
    echo '<div id="footer"><h5>&copy; '. date('Y').' <a href="http://protofusion.org/~nathang/">Nathan Gelderloos</a><br /> with special thanks to <a href="http://ethanzonca.com">Ethan Zonca</a></h5></div>';
 
    echo '<div id="footer"><h5>&copy; '. date('Y').' <a href="http://protofusion.org/~nathang/">Nathan Gelderloos</a> <br /> <a href="http://ethanzonca.com">Ethan Zonca</a></h5></div>';
 
    echo $this->trackingcode;
 
    echo '</body></html>';
 
  }
 

	
 
  public function secondsToCompound($seconds) {
 
      $ret = "";
 
      $hours = intval(intval($seconds) / 3600);
 
      $ret .= "$hours:";
 
      $minutes = bcmod((intval($seconds) / 60),60);
 
      $ret .= "$minutes:";
 
      $seconds = bcmod(intval($seconds),60);
 
      $ret .= "$seconds";
input.php
Show inline comments
 
@@ -33,32 +33,32 @@ var sectionsOfClass = new Array();
 
  $inputPage->headcode_add('scheduleInput', $my_hc, TRUE);
 
}
 
else
 
  $inputPage->headcode_add('schduleInput', '<script type="text/javascript">
 
var classNum = 0;
 
/* holds number of sections for each class */
 
var sectionsOfClass = Array();
 
// </script>', TRUE);
 

	
 
$inputPage->head();
 
$inputPage->showSavedScheds($_SESSION);
 
?>
 

	
 
<p>Welcome to SlatePermutate! To get started, enter in some of your classes, and add available sections for each class.</p>
 
<form method="post" action="process.php" id="scheduleForm">
 
<table>
 
  <tr>
 
    <table id="jsrows">
 
      <tr>
 
	<td colspan="11" style="padding-bottom:2em;">
 
	  <input id="scheduleName" class="defText" type="text" class="required" title="Schedule Name" name="postData[name]"
 
	<td colspan="11">
 
	  <input id="scheduleName" style="margin-bottom: 2em;" class="defText required" type="text" class="required" size="25" title="Schedule Name (e.g., Spring 2011)" name="postData[name]"
 
		 <?php if ($sch) echo 'value="' . str_replace('"', '&quot;', $sch->getName()) . '"'; /*"*/ ?>
 
		 />
 
	  <em>(For example: Fall <?php echo Date("Y"); ?>)</em>
 
	</td>
 
      </tr>
 
      <tr>
 
	<td colspan="11" style="padding-bottom: 2em;">
 
	  <select id="isNumeric" type="text" class="required" name="isnumbered" value="<?php if ($sch) echo $sch->section_format; else echo 'numerous'; ?>" >
 
	    <option value="numerous">Custom Section Labels</option>
 
	    <option value="numbered">Numbered Section Labels</option>
 
	    <option value="lettered">Lettered Section Labels</option>
 
	  </select>
 
@@ -71,34 +71,35 @@ var sectionsOfClass = Array();
 
		<td class="center">End Time</td>
 
		<td class="center">M</td>
 
		<td class="center">Tu</td>
 
		<td class="center">W</td>
 
		<td class="center">Th</td>
 
		<td class="center">F</td>
 
		<td class="center"></td>
 
		<td class="center"></td>
 
	</tr>
 
	<?php if ($sch) echo $sch->input_form_render(); ?>
 
    </table>
 
  </tr>
 
  <tr><td> <span class="gray" style="padding: 0 3.5em 0 3.5em;" id="addclass">Add Class - This row should be just as wide as the one above someday</span></td></tr>
 
  <tr><td> <span class="gray" style="padding: 0 3.5em 0 3.5em;" id="addclass">Add Class</span></td></tr>
 
</table>
 

	
 
<!-- <div class="paddingtop" id="classage"><input type="button" value="Add class" /></div> -->
 
<div class="paddingtop"><input style="float:left;" type="submit" value="Find me a schedule!" /></div>
 
<div class="paddingtop"><input style="float:left;" type="submit" value="Find a schedule" /></div>
 

	
 
</form>
 

	
 
<p>&nbsp;<br /></p>
 

	
 
<p><span id="showadvanced"><a href="#">Show Advanced Options</a></span></p>
 
<span class="advanced">
 
<h3>TODO:</h3>
 

	
 
<ul>
 
	<li>Autoincrement section num/letter/custom labels</li>
 
	<li>Make output and print output formatting look nicer</li>
 
	<li>Make printing work for saved jobs where jobkey != 0</li>
 
	<li>After selecting a start time, set the end time to one hour after the start time</li>
 
        <li><strong>Append</strong> sections</li>
 
        <li>Move the add class button to somewhere nicer, maybe a gray row at the bottom. Make the submit button more obvious.</li>
 
	<li>Form validation to ensure endtime is after starttime, at least one day is checked.</li>
 
	<li>Auto-populate form based on saved schedule?</li>
 
        <li>Grab data from school sites such as <a href="http://www.cedarville.edu/courses/schedule/2010fa_be_bebl.htm" target="_blank">this?</a></li>
scripts/scheduleInput.js
Show inline comments
 
@@ -5,24 +5,39 @@
 

	
 
	jQuery.validator.addMethod( 
 
		"selectNone", 
 
		function(value, element) { 
 
			if (element.value == "none") 
 
			{ 
 
				return false; 
 
			} 
 
			else return true; 
 
		}, 
 
		"<p class=\"error\">Please select a time</p>" 
 
	); 
 
	jQuery.validator.addMethod( 
 
		"daysRequired", 
 
		function(value, element) { 
 
			var checkedCount = 0;
 
			jQuery(element).parent().children('.daysRequired:checked').each( function() {
 
				checkedCount++;
 
			});
 
			if (checkedCount == 0) 
 
			{ 
 
				return false; 
 
			} 
 
			else return true; 
 
		}, 
 
		"<p class=\"error\">Pick a day!</p>" 
 
	); 
 

	
 
/* Doesn't work right now:  */ /*
 
	jQuery.validator.addMethod( 
 
		"daysRequired", 
 
		function(value, element) { 
 
			var numChecked = 0;
 
			jQuery(document).find('.daysRequire').each(function () {
 
				jQuery('#scheduleForm').append('<p>Found something!</p>');
 
				if(this.value != "none")
 
					numChecked++;
 
			});
 
			jQuery('#scheduleForm').append('<p>Finished each loop, found ' + numChecked + ' checked boxes</p>');
 
@@ -32,25 +47,25 @@
 
				return false; 
 
			} 
 
			else return true; 
 
		}, 
 
		"<p class=\"error\">Please select one or more days!.</p>" 
 
	); 
 
*/
 

	
 
	jQuery.validator.addClassRules("selectRequired", {
 
		selectNone: true
 
	});
 
	
 
	jQuery.validator.addClassRules("daysRequire", {
 
	jQuery.validator.addClassRules("daysRequired", {
 
		daysRequired: true
 
	});
 

	
 
    jQuery(document).ready(function() {
 
	//--------------------------------------------------
 
	// Validates the form (pre-submission check)
 
	//--------------------------------------------------
 
		jQuery('#scheduleForm').validate({
 
			debug: false,
 
		}); 
 

	
 

	
 
@@ -63,25 +78,25 @@
 
                                <option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option>\
 
                                <option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option></select></td>\
 
                                </select></td>';
 
        }
 
	function letteredIds(name){
 
		return '<td class="sectionIdentifier">\
 
                                <select name="'+name+'"><option value="-">-</option><option value="A">A</option><option value="B">B</option>\
 
                                <option value="C">C</option><option value="D">D</option><option value="E">E</option><option value="F">F</option><option value="G">G</option>\
 
                                <option value="H">H</option><option value="I">I</option><option value="J">J</option><option value="K">K</option></select></td>\
 
                                </select></td>';
 
	}
 
	function customIds(name){
 
		return '<td class="sectionIdentifier center"><input type="text" size="1" class="required" title="Section Name" name="' + name + '" /></td>';
 
		return '<td class="sectionIdentifier center"><input type="text" size="1" class="required" name="' + name + '" /></td>';
 
	}
 

	
 
	//--------------------------------------------------
 
	// Returns the common inputs for each new section.
 
	//--------------------------------------------------
 
	function getCommonInputs(cnum) {
 
		var snum = sectionsOfClass[cnum];
 

	
 
		var result = '';
 
		if(jQuery('#isNumeric').val() == "lettered"){
 
			result = result + letteredIds('postData[' + cnum + '][' + snum + '][letter]');
 
		}
 
@@ -115,29 +130,29 @@
 
				<option value="1020">10:20 am</option><option value="1050">10:50 am</option>\
 
				<option value="1120">11:20 am</option><option value="1150">11:50 am</option>\
 
				<option value="1220">12:20 pm</option><option value="1250">12:50 pm</option>\
 
				<option value="1320">1:20 pm</option><option value="1350">1:50 pm</option>\
 
				<option value="1420">2:20 pm</option><option value="1450">2:50 pm</option>\
 
				<option value="1520">3:20 pm</option><option value="1550">3:50 pm</option>\
 
				<option value="1620">4:20 pm</option><option value="1650">4:50 pm</option>\
 
				<option value="1720">5:20 pm</option><option value="1750">5:50 pm</option>\
 
				<option value="1820">6:20 pm</option><option value="1850">6:50 pm</option>\
 
				<option value="1920">7:20 pm</option><option value="1950">7:50 pm</option>\
 
				<option value="2020">8:20 pm</option><option value="2050">8:50 pm</option>\
 
				<option value="2120">9:20 pm</option></select></td>\
 
			<td><input type="checkbox" class="daysRequired" name="postData[' + cnum + '][' + snum + '][days][0]" value="1" /></td>\
 
			<td><input type="checkbox" class="daysRequired" name="postData[' + cnum + '][' + snum + '][days][1]" value="1" /></td>\
 
			<td><input type="checkbox" class="daysRequired" name="postData[' + cnum + '][' + snum + '][days][2]" value="1" /></td>\
 
			<td><input type="checkbox" class="daysRequired" name="postData[' + cnum + '][' + snum + '][days][3]" value="1" /></td>\
 
			<td><input type="checkbox" class="daysRequired" name="postData[' + cnum + '][' + snum + '][days][4]" value="1" /></td>';
 
			<td class="cbrow"><input type="checkbox" class="daysRequired" name="postData[' + cnum + '][' + snum + '][days][0]" value="1" /></td>\
 
			<td class="cbrow"><input type="checkbox" class="daysRequired" name="postData[' + cnum + '][' + snum + '][days][1]" value="1" /></td>\
 
			<td class="cbrow"><input type="checkbox" class="daysRequired" name="postData[' + cnum + '][' + snum + '][days][2]" value="1" /></td>\
 
			<td class="cbrow"><input type="checkbox" class="daysRequired" name="postData[' + cnum + '][' + snum + '][days][3]" value="1" /></td>\
 
			<td class="cbrow"><input type="checkbox" class="daysRequired" name="postData[' + cnum + '][' + snum + '][days][4]" value="1" /></td>';
 
	
 
		return result;
 
	}
 

	
 
	//--------------------------------------------------
 
	// Adds a new class to the input.
 
	//--------------------------------------------------
 
	function addRow(){
 
		sectionsOfClass[classNum] = 0; // This is class 0, initialize at 0
 
		jQuery('#jsrows').append('<tr title="' + classNum + '" class="class class' + classNum + '"><td><input type="text" class="required defText" title="Class Name" name="postData[' + classNum + '][name]" /></td><td colspan="8"></td><td class="tdInput"><div class="addSection"><input type="button" value="Add section" /></div></td><td class="tdInput"><div class="deleteClass"><input type="button" value="Remove" /></div></td></tr>');
 
		classNum++;
 
	};
 
@@ -228,16 +243,20 @@
 
      }
 
      else {
 
         /* Replace with custom */
 
         jQuery(".sectionIdentifier").each( function(index) {
 
           var name = jQuery("select", this).attr("name");
 
           jQuery(this).empty();
 
           jQuery(this).append(customIds(name));
 
         });
 

	
 
      }
 

	
 
    });
 
    
 

	
 
  jQuery('.advanced').hide();    
 
  jQuery('#showadvanced').click( function() {
 
    jQuery('#showadvanced').hide();
 
    jQuery('.advanced').slideToggle();
 
  });
 
});
 

	
styles/general.css
Show inline comments
 
@@ -55,19 +55,20 @@
 
		padding-top: 1.5em;
 
	}
 
.tdInput {
 
  background: #fff;
 
}
 

	
 
.addClassRow {
 
  padding: 2px;
 
  width: 30em;
 

	
 
}
 
.gray {
 
  border: 1px dashed #999;
 
  text-align: center!important;
 
  background: #BBB!important;
 
  cursor:default;
 
}
 
.gray:hover {
 
  background: #CCC!important;
 
}
0 comments (0 inline, 0 general)