Files
        @ da99c618fb18
    
        
              Branch filter: 
        
    Location: SlatePermutate/scripts/displayTables.js
        
            
            da99c618fb18
            4.0 KiB
            text/javascript
        
        
    
    Genericize the registration codes dialogue's link.
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128  | /*
 * Copyright 2010 Nathan Gelderloos, Ethan Zonca, Nathan Phillip Brink
 *
 * This file is part of SlatePermutate.
 *
 * SlatePermutate is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * SlatePermutate is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with SlatePermutate.  If not, see <http://www.gnu.org/licenses/>.
 */
/**
 * \brief
 *   Handle changes to the input elements under #show-box.
 */
function show_box_change()
{
    var name = jQuery(this).attr('name');
    if (name && name.indexOf('-'))
	{
	    /* convert from 'show-prof' back to 'prof' */
	    var css_class = name.substr(name.indexOf('-') + 1);
	    if (jQuery('#' + name + ':checked').size())
		{
		    jQuery('.' + css_class).show();
		}
	    else
		{
		    jQuery('.' + css_class).hide();
		}
	}
    return false;
}
/**
 * \brief
 *   Do an AJAX loading of data with arbitrary error handling.
 *
 * \param target
 *   The jQuery object which should be populated with an error message
 *   or the result of loading.
 * \param data
 *   The data to send as a request.
 * \param handler
 *   A function with the signature handler(target, data) which is called upon
 *   a successful response. There is a default handler which uses
 *   .html() to load the data.data.html into target.
 * \param error_handler
 *   A function with the signature handler(target, status_text, data)
 *   which is called upon an error. The default error_handler will
 *   store an error message in target, possibly provided by
 *   data.message if the HTTP request itself was successful but the
 *   server still claimed there is an error. The third argument, data,
 *   will be null if the error is at the HTTP level.
 */
function slate_permutate_load(target, data, handler, error_handler)
{
    if (jQuery.type(handler) == 'undefined')
	handler = function(target, data)
	    {
		target.html(data.html);
	    }
    if (jQuery.type(error_handler) == 'undefined')
	error_handler = function(target, status_text, data)
	    {
		if (data)
		    if (data.message)
			target.html(data.message);
		    else
			target.html('<div class="error">Unknown error.</div>');
		else
		    target.html('<div class="error">HTTP error: ' + status_text + '</div>');
	    }
    jQuery.ajax({
                url: 'ajax.php',
		data: data,
		success: function(data, status_text, xhr)
		{
		    if (data && data.success && jQuery.type(data.data) != 'undefined')
			handler(target, data.data);
		    else
			error_handler(target, status_text, data);
		},
		dataType: 'json',
		error: function(xhr_jq, status_text, error)
		{
		    error_handler(target, status_text, null);
		}
		});
}
jQuery(document).ready( function()
  {
      jQuery('#show-box input').change(show_box_change);
      jQuery('#show-box input').change();
      jQuery("#regDialog").dialog({ modal: true, width: 550, resizable: false, draggable: false, autoOpen: false });   
      jQuery('#regCodes').click( function() {
        jQuery('#regDialog-content').html('<p>Loading registration information...</p>');
	/* hmm... why isn't this information just stored in a global JS variable? */
	var tab_i = jQuery('#tabs').tabs('option','selected');
	var tab_fragment_i = /-([^-]+)$/.exec(jQuery('#the-tabs li:eq(' + tab_i + ') a').attr('href'))[1];
        var tab_course_data_json_selector = '.course-data-' + tab_fragment_i;
	
        var tab_course_data_json = jQuery(tab_course_data_json_selector).text();
        var tab_course_data = eval('(' + tab_course_data_json + ')');
	slate_permutate_load(jQuery('#regDialog-content'), {school_registration_html: true, courses: tab_course_data});
        jQuery("#regDialog").dialog('open');
	return false;
      });
  }
);
 |