web/wp-content/plugins/gigs-calendar/tours.ajax.php
author hurons@caf4f556-3d62-0410-8435-a86758001935
Tue, 05 Jan 2010 09:48:24 +0000
branchwordpress
changeset 111 6b96085291d7
parent 109 03b0d1493584
permissions -rw-r--r--
install and test "order-categories" plug-in

<?php

require_once 'ajaxSetup.php';
$pageTarget = $folder . 'tours.ajax.php';

switch ($_POST['action']) {
	case 'load':
		$t = new tour();
		$t->search(null, ($options['tours-sort'] == 'custom' ? '`pos`' : '`name`'));
		?>
			<div class="clickable" id="tour-add-trigger">
				<img class="icon" src="<?php echo $folder; ?>images/add.png" /> <?php _e('Add a new tour', $gcd) ?>
			</div>
			
			<div id="tour-add-form" style="display: none;">
				<form id="new-tour" class="new-item" method="post" action="<?php echo $pageTarget; ?>">
					<table>
						<tbody>
							<tr><td colspan="2">
								<h3 class="no-margin"><?php _e('Tour Information', $gcd) ?></h3>
							</td></tr>
							<tr>
							<tr>
								<td><label for="new-name"><?php _e('Tour Name:', $gcd) ?></label></td>
								<td><input type="text" class="name wide" name="name" id="new-name" /></td>
							</tr>
							<tr><td colspan="2">
								<?php _e('Description/Other notes:', $gcd) ?><br />
								<textarea class="notes" name="notes" rows="8" cols="80"></textarea>
							</td></tr>
						</tbody>
					</table>
					<div>
						<input type="submit" class="button" name="" value="<?php _e('Add tour', $gcd) ?>" />
						<input type="reset" class="button cancel" name="" value="<?php _e('Cancel', $gcd) ?>" id="new-tour-reset" />
						<input type="hidden" name="action" value="add" />
						<input type="hidden" name="nonce" value="<?php echo $_POST['nonce']; ?>" />
					</div>
				</form>
			</div>
			
			<table id="tour-list" class="tours widefat">
				<thead>
					<tr>
						<th style="text-align: center;" scope="col"><?php _e('ID', $gcd) ?></th>
						<th scope="col"><?php _e('Name', $gcd) ?></th>
						<th scope="col"><?php _e('Notes', $gcd) ?></th>
						<th style="text-align: center" scope="col"><?php _e('Actions', $gcd) ?></th>
					</tr>
				</thead>
				<tbody>
					<?php while ( $t->fetch() ) : ?>
						<tr id="tour-<?php echo $t->id; ?>" class="tour tour-<?php echo $t->id; ?> <?php echo ++$count % 2 ? "alternate" : "";?>">
							<th style="text-align: center;" scope="row"><?php echo $t->id; ?></th>
							<td class="name"><?php echo $t->name; ?></td>
							<td class="notes"><?php 
								if( strlen( strip_tags($t->notes) ) > 40 ) {
									echo substr( strip_tags($t->notes), 0, 40 ) . '...';
								} else {
									echo strip_tags($t->notes);
								}
							?></td>
							<td class="actions" style="text-align: center; position: relative;">
								<div style="position: relative">
									<img alt="<?php _e('Edit', $gcd) ?>" title="<?php _e('Edit', $gcd) ?>" class="clickable edit" src="<?php echo $folder; ?>images/page_white_edit.png" />
									<?php if ( $v ) : ?>
										<a target="_blank" href="<?php echo $v->getMapLink(); ?>"><img alt="<?php _e('Map', $gcd) ?>" title="<?php _e('Map', $gcd) ?>" class="clickable map" src="<?php echo $folder; ?>images/world.png" /></a>
									<?php endif ?>
									<img alt="<?php _e('Delete', $gcd) ?>" title="<?php _e('Delete', $gcd) ?>" class="clickable delete" src="<?php echo $folder; ?>images/delete.png" />
								</div>
							</td>
						</tr>
						<tr id="tour-panel-<?php echo $t->id; ?>" class="tour tour-<?php echo $t->id; ?> panel <?php echo $count % 2 ? "alternate" : "";?>">
							<td style="background-color: white"></td>
							<td class="panel" colspan="5"></td>
						</tr>
					<?php endwhile; ?>
				</tbody>
			</table>
			
			<script type="text/javascript">
				(function($){
					// Trigger to show the new tour form.
					$("#tour-add-trigger").click(function(){
						$("#tour-add-form:hidden").slideDown(300, function(){
							$("#new-name").focus();
						});
					});
					
					// Reset form button
					$("#new-tour-reset").click(function(){
						$("#tour-add-form table.performance[id!=performance-c1]").parents("tr").remove();
						$("#tour-add-form").slideUp(300);
					});

					// Submit the new tour form via ajax.
					$("#new-tour").ajaxForm({
						url:pageTarget,
						dataType: "json",
						success:function(json){
							tours = $("table#tour-list tbody tr:not(.panel) td.name");
							inserted = false;
							for ( i = 0; i < tours.length; i++ ) {
								if ( json.tour.name < tours.eq(i).html() ) {
									t = tours.eq(i);
									$.post(pageTarget, {
										nonce:nonce,
										action:'getRow',
										id:json.tour.id
									}, function(rsp){
										t.parents("tr").before(rsp);
										resetTableColors("table#tour-list");
										setupEvents();
									});
									inserted = true;
									break;
								}
							}
							if ( !inserted ) {
								$.post(pageTarget, {
									nonce:nonce,
									action:'getRow',
									id:json.tour.id
								}, function(rsp){
									$("table#tour-list tbody").append(rsp);
									resetTableColors("table#tour-list");
									setupEvents();
								});
							}
							$("#new-tour-reset").click();
						}

					});
					
					setupEvents = function() {
						$("img.delete").unbind("click");
						$("img.delete").click(function(){
							if ( confirm("Are you sure you want to delete this tour?") ) {
								id = $(this).parents("tr").attr("id").split("-")[1];
								$.post(pageTarget, {
									nonce:nonce,
									action:'delete',
									id:id
								}, function (rsp){
									console.log(rsp)
								}, "json");
								$(this).parents("tr").next().remove();
								$(this).parents("tr").remove();
								resetTableColors("table#tour-list");
							}
						});
						
						$("img.edit").unbind("click");
						$("img.edit").click(function(){
							row = $(this).parents("tr");
							id = row.attr("id").split("-")[1];
							row.next().children("td.panel").load(pageTarget, {
								nonce:nonce,
								action:"edit",
								id:id
							}, function(){
								row.next().css("display", "table-row");
							});
						});

					};
					
					setupEvents();
				})(jQuery);
			</script>
			<?php /*

			

				
			<script type="text/javascript">
			
					setupEvents = function() {
						
						
						setupPerformances();
					}
					
					setupEvents();

				}(jQuery));
				
			
			
			</script>
		<?php
		*/
		break;
	case 'add':
		$t = new tour();
		
		$t->name = $_POST['name'];
		$t->notes = $_POST['notes'];
		
		if ( $t->save() ) {
			echo '{success:true, tour:' . $t->toJSON() . '}';
		} else {
			echo '{success:false}';
		}
		break;
	case 'getRow':
		$t = new tour($_POST['id']);
		?>
						<tr id="tour-<?php echo $t->id; ?>" class="tour tour-<?php echo $t->id; ?> <?php echo ++$count % 2 ? "alternate" : "";?>">
							<th style="text-align: center;" scope="row"><?php echo $t->id; ?></th>
							<td class="name"><?php echo $t->name; ?></td>
							<td class="notes"><?php 
								if( strlen( strip_tags($t->notes) ) > 40 ) {
									echo substr( strip_tags($t->notes), 0, 40 ) . '...';
								} else {
									echo strip_tags($t->notes);
								}
							?></td>
							<td class="actions" style="text-align: center; position: relative;">
								<div style="position: relative">
									<img alt="<?php _e('Edit', $gcd) ?>" title="<?php _e('Edit', $gcd) ?>" class="clickable edit" src="<?php echo $folder; ?>images/page_white_edit.png" />
									<?php if ( $v ) : ?>
										<a target="_blank" href="<?php echo $v->getMapLink(); ?>"><img alt="<?php _e('Map', $gcd) ?>" title="<?php _e('Map', $gcd) ?>" class="clickable map" src="<?php echo $folder; ?>images/world.png" /></a>
									<?php endif ?>
									<img alt="<?php _e('Delete', $gcd) ?>" title="<?php _e('Delete', $gcd) ?>" class="clickable delete" src="<?php echo $folder; ?>images/delete.png" />
								</div>
							</td>
						</tr>
						<tr id="tour-panel-<?php echo $t->id; ?>" class="tour tour-<?php echo $t->id; ?> panel <?php echo $count % 2 ? "alternate" : "";?>">
							<td style="background-color: white"></td>
							<td class="panel" colspan="5"></td>
						</tr>
		<?php
		break;
	
	case 'delete':
		$t = new tour($_POST['id']);
		$result = $t->delete();
		echo '{"success": ' . ($result ? 'true' : 'false') . ',"action":"delete"' . ($result ? '' : ',"error":"db"') . '}';
		break;
	case 'edit':
		$t = new tour($_POST['id']);
		?>
			<form id="edit-tour-<?php echo $t->id ?>" class="edit-item" method="post" action="<?php echo $pageTarget; ?>">
				<table>
					<tbody>
						<tr><td colspan="2">
							<h3 class="no-margin"><?php _e('Tour Information', $gcd) ?></h3>
						</td></tr>
						<tr>
							<td><label for="edit-name-<?php echo $t->id ?>"><?php _e('Tour Name:', $gcd) ?></label></td>
							<td><input type="text" class="name wide" name="name" id="edit-name-<?php echo $t->id ?>" value="<?php dtcGigs::escapeForInput($t->name); ?>" /></td>
						</tr>
						<tr><td colspan="2">
							<?php _e('Description/Other notes:', $gcd) ?><br />
							<textarea class="notes" name="notes" rows="8" cols="80"><?php dtcGigs::escapeForInput($t->notes); ?></textarea>
						</td></tr>
					</tbody>
				</table>
				<div class="extra-inputs">
					<input type="submit" class="button" name="" value="Save tour" />
					<input type="reset" class="button cancel" name="" value="Cancel" id="edit-tour-reset-<?php echo $t->id ?>" />
					<input type="hidden" name="action" value="save" />
					<input type="hidden" name="id" value="<?php echo $t->id ?>" />
					<input type="hidden" name="nonce" value="<?php echo $_POST['nonce']; ?>" />
				</div>
			</form>
			
			<script type="text/javascript">
				(function($){
					$("#edit-tour-reset-<?php echo $t->id ?>").click(function(){
						$(this).parents("tr.panel").hide();
					});
					
					$("#edit-tour-<?php echo $t->id ?>").ajaxForm({
						url:pageTarget,
						dataType: "json",
						success:function(json){
							row = $("#tour-panel-" + json.tour.id).hide().prev();
							row.children("td.name").html(json.tour.name);
							if ( json.tour.notes.length > 40 ) {
								row.children("td.notes").html(json.tour.notes.substr(0,40) + '...');
							} else {
								row.children("td.notes").html(json.tour.notes);
							}
							
						}
					});
				}(jQuery));
			</script>
		<?php
		break;
		
	case 'save':
		$t = new tour($_POST['id']);

		$t->name = $_POST['name'];
		$t->notes = $_POST['notes'];
				
		$t->save();
		echo '{success:true, tour:' . $t->toJSON() . '}';
		break;
		
	case 'performance-form':
		if ( isset($_POST['id']) ) {
			pForm($_POST['id'], false);
		} else {
			pForm((int) $_POST['count'], true);
		}
		break;
}
?>