web/wp-content/plugins/gigs-calendar/tours.ajax.php
branchwordpress
changeset 109 03b0d1493584
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/wp-content/plugins/gigs-calendar/tours.ajax.php	Wed Dec 23 17:55:33 2009 +0000
@@ -0,0 +1,312 @@
+<?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;
+}
+?>
\ No newline at end of file