forked from science-ation/science-ation
Created a javascript "listSelector" class that can be used to select a list of items from an existing list.
Added a form in schoolschedule.php which uses that class to select students on a team
This commit is contained in:
parent
e02e5ba687
commit
54f6a2e251
232
js/listSelector.js
Normal file
232
js/listSelector.js
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
// a generic tool for doing list selection, passing elements between two divs 'left' and 'right'
|
||||||
|
// the styling needs to be cleaned up a bit, making some options more configurable and others less
|
||||||
|
function listSelector(left, right, globalName){
|
||||||
|
var name;
|
||||||
|
var wrapper;
|
||||||
|
var leftDiv, rightDiv, leftTitle, rightTitle, leftColours, rightColours;
|
||||||
|
var items;
|
||||||
|
var styleTags, boxStyle, itemStyle, rowStyle;
|
||||||
|
|
||||||
|
this.name = globalName;
|
||||||
|
this.leftColours = [];
|
||||||
|
this.rightColours = [];
|
||||||
|
this.rowStyle = "height:1.2em; margin-top:1px; width:100%;";
|
||||||
|
|
||||||
|
this.styleTags = {
|
||||||
|
'height' : '100%',
|
||||||
|
};
|
||||||
|
|
||||||
|
this.boxStyle = {
|
||||||
|
'position' : 'absolute',
|
||||||
|
'width' : '100%',
|
||||||
|
'height' : '100%',
|
||||||
|
'line-height' : '1.2em'
|
||||||
|
};
|
||||||
|
|
||||||
|
this.boxBackdropStyle = {
|
||||||
|
'position' : 'absolute',
|
||||||
|
'width' : '40%',
|
||||||
|
'height' : '90%',
|
||||||
|
'background' : '#FFF',
|
||||||
|
'border' : 'solid 1px',
|
||||||
|
'overflow' : 'hidden'
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
this.itemStyle = {
|
||||||
|
'margin-top' : '1px',
|
||||||
|
'height':'1.2em',
|
||||||
|
'width':'100%'
|
||||||
|
};
|
||||||
|
|
||||||
|
this.headerStyle = {
|
||||||
|
'width' : '50%',
|
||||||
|
'position' : 'absolute',
|
||||||
|
'text-align' : 'center',
|
||||||
|
'font-size' : '120%',
|
||||||
|
'font-weight' : 'bold'
|
||||||
|
};
|
||||||
|
|
||||||
|
this.highlightStyle = {
|
||||||
|
'background-color' : '#25BEFF'
|
||||||
|
};
|
||||||
|
|
||||||
|
this.unhighlightStyle = {
|
||||||
|
'background' : 'none'
|
||||||
|
};
|
||||||
|
|
||||||
|
this.drawLeftColumn = function(){
|
||||||
|
this.leftBackdrop = $('<div id="ls_leftBackdrop"></div>');
|
||||||
|
this.leftBackdrop.css(this.boxBackdropStyle);
|
||||||
|
this.leftBackdrop.css({
|
||||||
|
'top' : '5%',
|
||||||
|
'left' : '5%',
|
||||||
|
});
|
||||||
|
this.leftBackdrop.appendTo(this.wrapper);
|
||||||
|
|
||||||
|
this.leftHighlight = $('<div id="ls_leftHighlight"></div>');
|
||||||
|
this.leftHighlight.css(this.boxStyle);
|
||||||
|
this.leftHighlight.css({'overflow':'auto'});
|
||||||
|
this.leftHighlight.appendTo(this.leftBackdrop);
|
||||||
|
|
||||||
|
this.leftDiv = $('<div id="ls_leftItems"></div>');
|
||||||
|
this.leftDiv.css(this.boxStyle);
|
||||||
|
this.leftDiv.appendTo(this.leftHighlight);
|
||||||
|
|
||||||
|
if(this.leftTitle != undefined){
|
||||||
|
var pos = this.leftDiv.position();
|
||||||
|
var caption = $('<div>' + this.leftTitle + '</div>');
|
||||||
|
caption.appendTo(this.wrapper);
|
||||||
|
caption.css(this.headerStyle);
|
||||||
|
caption.css({
|
||||||
|
'left' : pos.left + 'px',
|
||||||
|
'top' : (pos.top - 15) + 'px'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// if any highlights were added, place them in the column now
|
||||||
|
var m = 0;
|
||||||
|
for(var n in this.leftColours){
|
||||||
|
while(m < n){
|
||||||
|
d = $('<div></div>');
|
||||||
|
d.css(this.itemStyle);
|
||||||
|
this.leftHighlight.append(d);
|
||||||
|
m++;
|
||||||
|
}
|
||||||
|
d = $('<div style="background-color:' + this.leftColours[n] + '"></div>');
|
||||||
|
d.css(this.itemStyle);
|
||||||
|
this.leftHighlight.append(d);
|
||||||
|
|
||||||
|
m = 1.0 * n + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.drawRightColumn = function(){
|
||||||
|
this.rightBackdrop = $('<div id="ls_rightBackdrop"></div>');
|
||||||
|
this.rightBackdrop.css(this.boxBackdropStyle);
|
||||||
|
this.rightBackdrop.css({
|
||||||
|
'top' : '5%',
|
||||||
|
'left' : '55%',
|
||||||
|
});
|
||||||
|
this.rightBackdrop.appendTo(this.wrapper);
|
||||||
|
|
||||||
|
this.rightHighlight = $('<div id="ls_rightHighlight"></div>');
|
||||||
|
this.rightHighlight.css(this.boxStyle);
|
||||||
|
this.rightHighlight.css({'overflow':'auto'});
|
||||||
|
this.rightHighlight.appendTo(this.rightBackdrop);
|
||||||
|
|
||||||
|
this.rightDiv = $('<div id="ls_rightItems"></div>');
|
||||||
|
this.rightDiv.css(this.boxStyle);
|
||||||
|
this.rightDiv.appendTo(this.rightHighlight);
|
||||||
|
|
||||||
|
if(this.rightTitle != undefined){
|
||||||
|
var pos = this.rightDiv.position();
|
||||||
|
var caption = $('<div>' + this.rightTitle + '</div>');
|
||||||
|
caption.appendTo(this.wrapper);
|
||||||
|
caption.css(this.headerStyle);
|
||||||
|
caption.css({
|
||||||
|
'left' : '50%',
|
||||||
|
'top' : (pos.top - 15) + 'px'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// if any highlights were added, place them in the column now
|
||||||
|
var m = 0, d;
|
||||||
|
for(var n in this.rightColours){
|
||||||
|
while(m < n){
|
||||||
|
d = $('<div></div>');
|
||||||
|
d.css(this.itemStyle);
|
||||||
|
this.rightHighlight.append(d);
|
||||||
|
m++;
|
||||||
|
}
|
||||||
|
d = $('<div style="background-color:' + this.rightColours[n] + '"></div>');
|
||||||
|
d.css(this.itemStyle);
|
||||||
|
this.rightHighlight.append(d);
|
||||||
|
|
||||||
|
m = 1.0 * n + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.draw = function(){
|
||||||
|
this.wrapper = $('<div id="ls_wrapper" style="position:relative"></div>');
|
||||||
|
this.wrapper.css(this.styleTags);
|
||||||
|
|
||||||
|
// create the columns
|
||||||
|
this.drawLeftColumn();
|
||||||
|
this.drawRightColumn();
|
||||||
|
|
||||||
|
// build our list of selectable items in each column
|
||||||
|
this.items = [];
|
||||||
|
for(id in left){
|
||||||
|
this.items[id] = $('<div id="ls_item_' + id + '">' + left[id] + '</div>');
|
||||||
|
eval(this.name + '.items[' + id + '].click(function(){' + this.name + '.switch(' + id + ');});');
|
||||||
|
eval(this.name + '.items[' + id + '].mouseenter(function(){' + this.name + '.highlight(' + id + ', true);});');
|
||||||
|
eval(this.name + '.items[' + id + '].mouseleave(function(){' + this.name + '.highlight(' + id + ', false);});');
|
||||||
|
this.items[id].css(this.itemStyle);
|
||||||
|
this.items[id].appendTo(this.leftDiv);
|
||||||
|
this.items[id].data('column', 'left');
|
||||||
|
}
|
||||||
|
|
||||||
|
for(id in right){
|
||||||
|
this.items[id] = $('<div id="ls_item_' + id + '">' + right[id] + '</div>');
|
||||||
|
eval(this.name + '.items[' + id + '].click(function(){' + this.name + '.switch(' + id + ');});');
|
||||||
|
eval(this.name + '.items[' + id + '].mouseenter(function(){' + this.name + '.highlight(' + id + ', true);});');
|
||||||
|
eval(this.name + '.items[' + id + '].mouseleave(function(){' + this.name + '.highlight(' + id + ', false);});');
|
||||||
|
this.items[id].css(this.itemStyle);
|
||||||
|
this.items[id].appendTo(this.rightDiv);
|
||||||
|
this.items[id].data('column', 'right');
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.wrapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.highlight = function(itemId, on){
|
||||||
|
if(on){
|
||||||
|
this.items[itemId].css(this.highlightStyle);
|
||||||
|
}else{
|
||||||
|
this.items[itemId].css(this.unhighlightStyle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.switch = function(itemId){
|
||||||
|
item = this.items[itemId];
|
||||||
|
if(item.data('column') == 'left'){
|
||||||
|
targetDiv = this.rightDiv;
|
||||||
|
item.data('column', 'right');
|
||||||
|
}else{
|
||||||
|
targetDiv = this.leftDiv;
|
||||||
|
item.data('column', 'left');
|
||||||
|
}
|
||||||
|
this.highlight(itemId, false);
|
||||||
|
this.items[itemId].appendTo(targetDiv);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setStyle = function(newTags){
|
||||||
|
for(var n in newTags){
|
||||||
|
this.styleTags[n] = newTags[n];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.getLeftList = function(){
|
||||||
|
return this.getList('left');
|
||||||
|
}
|
||||||
|
|
||||||
|
this.getRightList = function(){
|
||||||
|
return this.getList('right');
|
||||||
|
}
|
||||||
|
|
||||||
|
this.getList = function(side){
|
||||||
|
var returnval = [];
|
||||||
|
var n = 0;
|
||||||
|
for(id in this.items){
|
||||||
|
if(this.items[id].data('column') == side){
|
||||||
|
returnval[n] = id;
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return returnval;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -114,7 +114,7 @@ if($_SESSION['schoolid'] && $_SESSION['schoolaccesscode']){
|
|||||||
$maxteams=$r->somaxteams;
|
$maxteams=$r->somaxteams;
|
||||||
echo i18n("%1 of %2",array($regteams,$maxteams))."<br />";
|
echo i18n("%1 of %2",array($regteams,$maxteams))."<br />";
|
||||||
|
|
||||||
$regq=mysql_query("SELECT so_teams.name
|
$regq=mysql_query("SELECT so_teams.name, schedule_registrations.id
|
||||||
FROM schedule_registrations
|
FROM schedule_registrations
|
||||||
JOIN so_teams ON so_teams_id=so_teams.id
|
JOIN so_teams ON so_teams_id=so_teams.id
|
||||||
WHERE schedule_registrations.conferences_id='{$conference['id']}'
|
WHERE schedule_registrations.conferences_id='{$conference['id']}'
|
||||||
@ -122,7 +122,7 @@ if($_SESSION['schoolid'] && $_SESSION['schoolaccesscode']){
|
|||||||
AND schedule_registrations.schedule_id='$r->id'");
|
AND schedule_registrations.schedule_id='$r->id'");
|
||||||
echo mysql_error();
|
echo mysql_error();
|
||||||
while($regr=mysql_fetch_object($regq)) {
|
while($regr=mysql_fetch_object($regq)) {
|
||||||
echo "<div style=\"padding: 2px; border: 1px solid black; background-color: yellow;\">";
|
echo "<div style=\"padding: 2px; border: 1px solid black; background-color: yellow;\" onclick=\"handleTeamClick(event, {$regr->id}, {$r->events_id});\">";
|
||||||
echo $regr->name;
|
echo $regr->name;
|
||||||
echo "</div>";
|
echo "</div>";
|
||||||
}
|
}
|
||||||
@ -135,19 +135,138 @@ if($_SESSION['schoolid'] && $_SESSION['schoolaccesscode']){
|
|||||||
echo "<script type=\"text/javascript\">\n";
|
echo "<script type=\"text/javascript\">\n";
|
||||||
echo $js;
|
echo $js;
|
||||||
echo "</script>";
|
echo "</script>";
|
||||||
|
}else if($_GET['action']=="loadevent") {
|
||||||
|
|
||||||
|
}else if($_GET['action']=="saveevent") {
|
||||||
|
|
||||||
|
}else if($_GET['action'] == "saveteamlist"){
|
||||||
|
// print_r($_POST);
|
||||||
|
|
||||||
|
// get a list of all students that could be put on this team
|
||||||
|
$query = 'SELECT * FROM users_student';
|
||||||
|
$query .= ' JOIN users ON users_student.users_id = users.uid';
|
||||||
|
$query .= ' JOIN users_conferences_link ucl ON ucl.users_uid = users_student.users_id';
|
||||||
|
$query .= ' WHERE schools_id = ' . $_SESSION['schoolid'];
|
||||||
|
$query .= ' AND ucl.conferences_id=' . $conference['id'];
|
||||||
|
$query .= ' AND users.deleted = "no"';
|
||||||
|
$results = mysql_query($query);
|
||||||
|
$availList = array();
|
||||||
|
while($record = mysql_fetch_array($results)){
|
||||||
|
$availList[$record['uid']] = $record['firstname'] . ' ' . $record['lastname'];
|
||||||
}
|
}
|
||||||
else if($_GET['action']=="loadevent") {
|
|
||||||
|
// let's empty the current list of students for this team
|
||||||
|
$query = "DELETE FROM schedule_registrations_users_link";
|
||||||
|
$query .= " WHERE users_uid IN (";
|
||||||
|
$query .= implode(',', array_keys($availList)) . ')';
|
||||||
|
$query .= " AND schedule_registrations_id = " . (int)$_POST['regId'];
|
||||||
|
$results = mysql_query($query);
|
||||||
|
|
||||||
|
// and now we'll insert only those that were selected
|
||||||
|
$query = "INSERT INTO schedule_registrations_users_link (schedule_registrations_id, users_uid)";
|
||||||
|
$query .= " VALUES ";
|
||||||
|
$valueSet = array();
|
||||||
|
for($n = 0; $n < $_POST['numSelected']; $n++){
|
||||||
|
$valueSet[] = '(' . (int)$_POST['regId'] . ',' . (int)$_POST[$n] .')';
|
||||||
}
|
}
|
||||||
else if($_GET['action']=="saveevent") {
|
$query .= implode(',', $valueSet);
|
||||||
|
$results = mysql_query($query);
|
||||||
|
|
||||||
|
}else if($_GET['action'] == "getteamlist"){
|
||||||
|
// first we'll get the basic info, and do a quick check that the selected team is in this user's domain
|
||||||
|
if(!array_key_exists('regId', $_POST)){
|
||||||
|
echo "error code PEBKAC\n";
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else {
|
$query = "SELECT sr.* FROM schedule_registrations sr";
|
||||||
|
$query .= " JOIN so_teams ON so_teams.id = sr.so_teams_id";
|
||||||
|
$query .= " WHERE sr.id=" . $_POST['regId'];
|
||||||
|
$query .= " AND so_teams.schools_id = " . $_SESSION['schoolid'];
|
||||||
|
|
||||||
|
$results = mysql_query($query);
|
||||||
|
if(!$results){
|
||||||
|
echo 'team not found';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$record = mysql_fetch_array($results);
|
||||||
|
|
||||||
|
// get a list of all students that could be put on this team
|
||||||
|
$query = 'SELECT * FROM users_student';
|
||||||
|
$query .= ' JOIN users ON users_student.users_id = users.uid';
|
||||||
|
$query .= ' JOIN users_conferences_link ucl ON ucl.users_uid = users_student.users_id';
|
||||||
|
$query .= ' WHERE schools_id = ' . $_SESSION['schoolid'];
|
||||||
|
$query .= ' AND ucl.conferences_id=' . $conference['id'];
|
||||||
|
$query .= ' AND users.deleted = "no"';
|
||||||
|
$results = mysql_query($query);
|
||||||
|
$availList = array();
|
||||||
|
while($record = mysql_fetch_array($results)){
|
||||||
|
$availList[$record['uid']] = $record['firstname'] . ' ' . $record['lastname'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// now find out which of these students are already selected
|
||||||
|
$query = "SELECT * FROM schedule_registrations_users_link srul";
|
||||||
|
$query .= " WHERE users_uid IN (";
|
||||||
|
$query .= implode(',', array_keys($availList)) . ')';
|
||||||
|
$query .= " AND schedule_registrations_id = " . $_POST['regId'];
|
||||||
|
$results = mysql_query($query);
|
||||||
|
$selectedList = array();
|
||||||
|
if($results){
|
||||||
|
while($record = mysql_fetch_array($results)){
|
||||||
|
$idx = $record['users_uid'];
|
||||||
|
$selectedList[$idx] = $availList[$idx];
|
||||||
|
unset($availList[$idx]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// get our minimum and maximum number of students for the event
|
||||||
|
$query = "SELECT sominteamsize, somaxteamsize FROM schedule JOIN"
|
||||||
|
. " schedule_registrations sr ON sr.schedule_id = schedule.id WHERE"
|
||||||
|
. " sr.id = " . $_POST['regId'];
|
||||||
|
$results = mysql_fetch_array(mysql_query($query));
|
||||||
|
$minTeamSize = $results['sominteamsize'];
|
||||||
|
$maxTeamSize = $results['somaxteamsize'];
|
||||||
|
|
||||||
|
|
||||||
|
echo '<script type="text/javascript">';
|
||||||
|
echo "minTeamSize = $minTeamSize;";
|
||||||
|
echo "maxTeamSize = $maxTeamSize;";
|
||||||
|
// build our student lists
|
||||||
|
echo "available={";
|
||||||
|
$n = 0;
|
||||||
|
foreach($availList as $id => $name){
|
||||||
|
if($n > 0) echo ',';
|
||||||
|
echo "$id:\"$name\"";
|
||||||
|
$n++;
|
||||||
|
}
|
||||||
|
echo '};';
|
||||||
|
|
||||||
|
echo "selected={";
|
||||||
|
$n = 0;
|
||||||
|
foreach($selectedList as $id => $name){
|
||||||
|
if($n > 0) echo ',';
|
||||||
|
echo "$id:\"$name\"";
|
||||||
|
$n++;
|
||||||
|
}
|
||||||
|
echo '};';
|
||||||
|
|
||||||
|
// pass the additional parameters
|
||||||
|
/*
|
||||||
|
$query = "SELECT default_min_team_size, default_max_team_size FROM events WHERE id=" . $_POST['eventId'];
|
||||||
|
$results = mysql_fetch_array(mysql_query($query));
|
||||||
|
echo "min_size=" . $results['default_min_team_size'] . ';';
|
||||||
|
echo "max_size=" . $results['default_max_team_size'] . ';';
|
||||||
|
*/
|
||||||
|
echo '</script>';
|
||||||
|
}else{
|
||||||
|
|
||||||
send_header("Event Registration",
|
send_header("Event Registration",
|
||||||
array('School Home' => 'schoolaccess.php'),
|
array('School Home' => 'schoolaccess.php'),
|
||||||
"events_scheduling" );
|
"events_scheduling" );
|
||||||
echo "<br />";
|
echo "<br />";
|
||||||
?>
|
?>
|
||||||
|
<script type="text/javascript" src="js/listSelector.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
$(".date").datepicker({ dateFormat: 'yy-mm-dd' });
|
$(".date").datepicker({ dateFormat: 'yy-mm-dd' });
|
||||||
changeDate();
|
changeDate();
|
||||||
@ -170,6 +289,72 @@ if($_SESSION['schoolid'] && $_SESSION['schoolaccesscode']){
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function handleTeamClick(event, regId, eventId){
|
||||||
|
var e = event || window.event;
|
||||||
|
e.stopPropagation();
|
||||||
|
params={
|
||||||
|
'regId' : regId,
|
||||||
|
'eventId' : eventId
|
||||||
|
};
|
||||||
|
|
||||||
|
$("#debug").load("schoolschedule.php?action=getteamlist", params, function(response){
|
||||||
|
// at this point, the arrays "available" and "selected" should be defined, giving
|
||||||
|
// us the corresponding selection elements for this scheduled event
|
||||||
|
|
||||||
|
// create a list selector that can use these lists
|
||||||
|
selector = new listSelector(selected, available, 'selector');
|
||||||
|
selector.setStyle({'height' : '70%', 'margin-top' : '10%'});
|
||||||
|
selector.leftTitle = '<?=i18n("assigned");?>';
|
||||||
|
selector.rightTitle = '<?=i18n("available");?>';
|
||||||
|
var n;
|
||||||
|
for(n = 0; n < minTeamSize; n++){
|
||||||
|
selector.leftColours[n] = '#AFA';
|
||||||
|
}
|
||||||
|
for(;n < maxTeamSize; n++){
|
||||||
|
selector.leftColours[n] = '#FFA';
|
||||||
|
}
|
||||||
|
|
||||||
|
var sdialog = $('<div></div>');
|
||||||
|
// sdialog.append('this is a test');
|
||||||
|
sdialog.append(selector.draw());
|
||||||
|
sdialog.dialog({
|
||||||
|
width : 600,
|
||||||
|
height : 400,
|
||||||
|
resizable: false,
|
||||||
|
draggable: false,
|
||||||
|
buttons: {
|
||||||
|
"<?=i18n("Save")?>": function() {
|
||||||
|
saveTeamList($(this), regId, eventId);
|
||||||
|
},
|
||||||
|
"<?=i18n('Close')?>": function() {
|
||||||
|
$(this).dialog("close");
|
||||||
|
changeDate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function saveTeamList(ddiv, regId, eventId){
|
||||||
|
selectedList = selector.getLeftList();
|
||||||
|
|
||||||
|
//params = selector.getLeftList();
|
||||||
|
params = {
|
||||||
|
'regId' : regId,
|
||||||
|
'eventId' : eventId,
|
||||||
|
'numSelected' : selectedList.length
|
||||||
|
};
|
||||||
|
|
||||||
|
for(var n in selectedList){
|
||||||
|
params[n] = selectedList[n];
|
||||||
|
}
|
||||||
|
|
||||||
|
$("#debug").load("schoolschedule.php?action=saveteamlist", params, function(response){
|
||||||
|
ddiv.dialog("close");
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function changeDate() {
|
function changeDate() {
|
||||||
$("#schedulediv").load("schoolschedule.php?action=loadschedule",{date:$("#date").val()},function() {
|
$("#schedulediv").load("schoolschedule.php?action=loadschedule",{date:$("#date").val()},function() {
|
||||||
placeEvents();
|
placeEvents();
|
||||||
@ -257,6 +442,7 @@ if($_SESSION['schoolid'] && $_SESSION['schoolaccesscode']){
|
|||||||
<div id="event_dialog">
|
<div id="event_dialog">
|
||||||
<? include "schoolschedule_event_dialog.php"; ?>
|
<? include "schoolschedule_event_dialog.php"; ?>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="selector_dialog"></div>
|
||||||
<?
|
<?
|
||||||
|
|
||||||
send_footer();
|
send_footer();
|
||||||
|
Loading…
Reference in New Issue
Block a user