web/wp-content/plugins/gigs-calendar/venues.ajax.php
branchwordpress
changeset 109 03b0d1493584
equal deleted inserted replaced
-1:000000000000 109:03b0d1493584
       
     1 <?php
       
     2 
       
     3 require_once 'ajaxSetup.php';
       
     4 $pageTarget = $folder . 'venues.ajax.php';
       
     5 
       
     6 switch ($_POST['action']) {
       
     7 	case 'load':
       
     8 		//$categories = $wpdb->get_results('SELECT * FROM `' . TABLE_CATS . '` ORDER BY `' . $options['categorySortColumn'] .'` ' . $options['categorySortDirection']);
       
     9 		$v = new venue();
       
    10 		$v->search('deleted = 0', 'name');
       
    11 		?>
       
    12 			<div class="clickable" id="venue-add-trigger">
       
    13 				<img class="icon" src="<?php echo $folder; ?>images/add.png" /> <?php _e('Add a new venue', $gcd) ?>
       
    14 			</div>
       
    15 			<div id="venue-add-form" style="<?php if ( !isset($_GET['new']) ) echo 'display: none;' ?>">
       
    16 				<form id="new-venue-form" class="new-item" method="post" action="<?php echo $pageTarget; ?>">
       
    17 					<table>
       
    18 						<tbody>
       
    19 							<tr><td><label for="new-name"><?php _e('Name:', $gcd) ?></label></td><td><input type="text" class="name wide" name="name" id="new-name" /></td></tr>
       
    20 							<tr><td valign="top"><label for="new-address"><?php _e('Address:', $gcd) ?></label></td><td><textarea class="address wide" name="address" id="new-address"></textarea></td></tr>
       
    21 							<tr><td><label for="new-city"><?php _e('City:', $gcd) ?></label></td><td><input type="text" class="city wide" name="city" id="new-city" /></td></tr>
       
    22 							<tr><td><label for="new-state"><?php _e('State/Province:', $gcd) ?></label></td><td><input type="text" class="state wide" name="state" id="new-state" /></td></tr>
       
    23 							<tr><td><label for="new-country"><?php _e('Country:', $gcd) ?></label></td><td><input type="text" class="country wide" name="country" id="new-country" /></td></tr>
       
    24 							<tr><td><label for="new-postalCode"><?php _e('Postal Code:', $gcd) ?></label></td><td><input type="text" class="postalCode" name="postalCode" id="new-postalCode" /></td></tr>
       
    25 							<tr><td><label for="new-customMap"><?php _e('Custom location for Google Maps <abbr title="Will override the automatic address unless you leave it blank.">(?)</abbr>', $gcd) ?>:</label></td><td><input type="text" class="customMap wide" name="customMap" id="new-customMap" /></td></tr>
       
    26 							<tr><td><label for="new-contact"><?php _e('Primary Contact:', $gcd) ?></label></td><td><input type="text" class="contact wide" name="contact" id="new-contact" /></td></tr>
       
    27 							<tr><td><label for="new-phone"><?php _e('Phone:', $gcd) ?></label></td><td><input type="text" class="phone wide" name="phone" id="new-phone" /></td></tr>
       
    28 							<tr><td><label for="new-email"><?php _e('Email:', $gcd) ?></label></td><td><input type="text" class="email wide" name="email" id="new-email" /></td></tr>
       
    29 							<tr><td><label for="new-link"><?php _e('Homepage:', $gcd) ?></label></td><td><input type="text" class="link wide" name="link" id="new-link" /></td></tr>
       
    30 						</tbody>
       
    31 					</table>
       
    32 					<div>
       
    33 						<label for="new-private"><?php _e('Hide information about this venue from the public:', $gcd) ?> <input type="checkbox" value="1" name="private" id="new-private" /></label>
       
    34 					</div>
       
    35 					<div>
       
    36 						<?php _e('Description/Other notes:', $gcd) ?><br />
       
    37 						<textarea class="notes" name="notes" rows="7" cols="80"></textarea>
       
    38 					</div>
       
    39 					<div>
       
    40 						<input type="submit" class="button" name="" value="<?php _e('Add Venue', $gcd) ?>" />
       
    41 						<input type="reset" class="button cancel" name="" value="<?php _e('Cancel', $gcd) ?>" id="new-venue-reset" />
       
    42 						<input type="hidden" name="action" value="add" />
       
    43 						<input type="hidden" name="nonce" value="<?php echo $_POST['nonce']; ?>" />
       
    44 					</div>
       
    45 				</form>
       
    46 			</div>
       
    47 			
       
    48 			<table id="venue-list" class="venues widefat">
       
    49 				<thead>
       
    50 					<tr>
       
    51 						<th style="text-align: center;" scope="col"><?php _e('ID', $gcd) ?></th>
       
    52 						<th scope="col"><?php _e('Name', $gcd) ?></th>
       
    53 						<th scope="col"><?php _e('City', $gcd) ?></th>
       
    54 						<th scope="col"><?php _e('Phone', $gcd) ?></th>
       
    55 						<th scope="col"><?php _e('Email', $gcd) ?></th>
       
    56 						<th style="text-align: center" scope="col"><?php _e('Actions', $gcd) ?></th>
       
    57 					</tr>
       
    58 				</thead>
       
    59 				<tbody>
       
    60 					<?php while ( $v->fetch() ) : ?>
       
    61 						<tr id="venue-<?php echo $v->id; ?>" class="venue-<?php echo $v->id; ?> <?php echo ++$count % 2 ? "alternate" : "";?>">
       
    62 							<th style="text-align: center;" scope="row"><?php echo $v->id; ?></th>
       
    63 							<td class="name"><?php echo $v->name; ?></td>
       
    64 							<td class="city"><?php echo $v->city . (!empty($v->state) ? ', ' . $v->state :  '') ?></td>
       
    65 							<td class="phone"><?php echo $v->phone ?></td>
       
    66 							<td class="email"><?php echo !empty($v->email) ? '<a href="mailto:' . $v->email . '">' . $v->email . '</a>' : '' ?></td>
       
    67 							<td class="actions" style="text-align: center; position: relative;">
       
    68 								<div style="position: relative">
       
    69 									<img alt="<?php _e('Edit', $gcd) ?>" title="<?php _e('Edit', $gcd) ?>" class="clickable edit" src="<?php echo $folder; ?>images/page_white_edit.png" />
       
    70 									<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>
       
    71 									<?php if ( !empty($v->link) ) : ?>
       
    72 										<a target="_blank" href="<?php echo $v->link ?>"><img alt="<?php _e('Homepage', $gcd) ?>" title="<?php _e('Homepage', $gcd) ?>" class="clickable homepage" src="<?php echo $folder ?>images/link.png" /></a>
       
    73 									<?php endif ?>
       
    74 									<img alt="<?php _e('Delete', $gcd) ?>" title="<?php _e('Delete', $gcd) ?>" class="clickable delete" src="<?php echo $folder; ?>images/delete.png" />
       
    75 								</div>
       
    76 							</td>
       
    77 						</tr>
       
    78 						<tr id="venue-panel-<?php echo $v->id; ?>" class="venue-<?php echo $v->id; ?> panel <?php echo $count % 2 ? "alternate" : "";?>">
       
    79 							<td style="background-color: white"></td>
       
    80 							<td class="panel" colspan="5"></td>
       
    81 						</tr>
       
    82 					<?php endwhile; ?>
       
    83 				</tbody>
       
    84 			</table>
       
    85 				
       
    86 			<script type="text/javascript">
       
    87 			
       
    88 				(function($){
       
    89 					//init = function() {
       
    90 					$("#venue-add-trigger").click(function(){
       
    91 						$("#venue-add-form:hidden").slideDown(300, function(){
       
    92 							$("#new-name").focus();
       
    93 						});
       
    94 					});
       
    95 					
       
    96 					$("#new-venue-reset").click(function(){
       
    97 						$("#venue-add-form").slideUp(300);
       
    98 					});
       
    99 					
       
   100 					$("#new-venue-form").ajaxForm({
       
   101 						url:pageTarget,
       
   102 						dataType: "json",
       
   103 						success:function(json){
       
   104 							venues = $("table#venue-list tbody tr:not(.panel) td.name");
       
   105 							inserted = false;
       
   106 							for ( i = 0; i < venues.length; i++ ) {
       
   107 								if ( json.venue.name.toLowerCase() < venues.eq(i).html().toLowerCase() ) {
       
   108 									v = venues.eq(i);
       
   109 									$.post(pageTarget, {
       
   110 										nonce:nonce,
       
   111 										action:'getRow',
       
   112 										id:json.venue.id
       
   113 									}, function(rsp){
       
   114 										v.parents("tr").before(rsp);
       
   115 										resetTableColors("table#venue-list");
       
   116 										setupEvents();
       
   117 									});
       
   118 									inserted = true;
       
   119 									break;
       
   120 								}
       
   121 							}
       
   122 							if ( !inserted ) {
       
   123 								$.post(pageTarget, {
       
   124 									nonce:nonce,
       
   125 									action:'getRow',
       
   126 									id:json.venue.id
       
   127 								}, function(rsp){
       
   128 									$("table#venue-list tbody").append(rsp);
       
   129 									resetTableColors("table#venue-list");
       
   130 									setupEvents();
       
   131 								});
       
   132 							}
       
   133 							$("#new-venue-reset").click();
       
   134 						}
       
   135 					});
       
   136 					
       
   137 					setupEvents = function() {
       
   138 						$("img.delete").unbind("click");
       
   139 						$("img.delete").click(function(){
       
   140 							id = $(this).parents("tr").attr("id").split("-")[1];
       
   141 							$.post(pageTarget, {
       
   142 								nonce:nonce,
       
   143 								action:'delete',
       
   144 								id:id
       
   145 							});
       
   146 							$(this).parents("tr").next().remove();
       
   147 							$(this).parents("tr").remove();
       
   148 							resetTableColors("table#venue-list");
       
   149 						});
       
   150 						
       
   151 						$("img.edit").unbind("click");
       
   152 						$("img.edit").click(function(){
       
   153 							row = $(this).parents("tr");
       
   154 							id = row.attr("id").split("-")[1];
       
   155 							row.next().children("td.panel").load(pageTarget, {
       
   156 								nonce:nonce,
       
   157 								action:"edit",
       
   158 								id:id
       
   159 							}, function(){
       
   160 								row.next().css("display", "table-row");
       
   161 							});
       
   162 						});
       
   163 					}
       
   164 					
       
   165 					setupEvents();
       
   166 				}(jQuery));
       
   167 				
       
   168 			
       
   169 			
       
   170 			</script>
       
   171 		<?php
       
   172 		break;
       
   173 	case 'add':
       
   174 		$v = new venue();
       
   175 		$args = $_POST;
       
   176 		unset($args['nonce'],$args['action']);
       
   177 		foreach ( $args as $key => $value ) {
       
   178 			$v->$key = $value;
       
   179 		}
       
   180 		if ( $v->save() ) {
       
   181 			echo '{success:true, venue:' . $v->toJSON() . '}';
       
   182 		} else {
       
   183 			echo '{success:false}';
       
   184 		}
       
   185 		break;
       
   186 	case 'map':
       
   187 		//$v = new venue($_GET['id']);
       
   188 	case 'getRow':
       
   189 		$v = new venue($_POST['id']);
       
   190 		?>
       
   191 			<tr id="venue-<?php echo $v->id; ?>" class="song-<?php echo $v->id; ?>">
       
   192 				<th style="text-align: center;" scope="row"><?php echo $v->id; ?></th>
       
   193 				<td class="name"><?php echo $v->name; ?></td>
       
   194 				<td class="city"><?php echo $v->city . (!empty($v->state) ? ', ' . $v->state :  '') ?></td>
       
   195 				<td class="phone"><?php echo $v->phone ?></td>
       
   196 				<td class="email"><?php echo !empty($v->email) ? '<a href="mailto:' . $v->email . '">' . $v->email . '</a>' : '' ?></td>
       
   197 				<td class="actions" style="text-align: center; position: relative;">
       
   198 					<div style="position: relative">
       
   199 						<img alt="<?php _e('Edit', $gcd) ?>" title="<?php _e('Edit', $gcd) ?>" class="clickable edit" src="<?php echo $folder; ?>images/page_white_edit.png" />
       
   200 						<a target="_blank" href="http://maps.google.com/?q=<?php echo urlencode($v->getAddress(true)); ?>"><img alt="<?php _e('Map', $gcd) ?>" title="<?php _e('Map', $gcd) ?>" class="clickable map" src="<?php echo $folder; ?>images/world.png" /></a>
       
   201 						<?php if ( !empty($v->link) ) : ?>
       
   202 							<a target="_blank" href="<?php echo $v->link ?>"><img alt="<?php _e('Homepage', $gcd) ?>" title="<?php _e('Homepage', $gcd) ?>" class="clickable homepage" src="<?php echo $folder ?>images/link.png" /></a>
       
   203 						<?php endif ?>
       
   204 						<img alt="<?php _e('Delete', $gcd) ?>" title="<?php _e('Delete', $gcd) ?>" class="clickable delete" src="<?php echo $folder; ?>images/delete.png" />
       
   205 					</div>
       
   206 				</td>
       
   207 			</tr>
       
   208 			<tr id="venue-panel-<?php echo $v->id; ?>" class="song-<?php echo $v->id; ?> panel <?php echo $count % 2 ? "alternate" : "";?>">
       
   209 				<td style="background-color: white"></td>
       
   210 				<td class="panel" colspan="5"></td>
       
   211 			</tr>
       
   212 		<?php
       
   213 		break;
       
   214 	
       
   215 	case 'delete':
       
   216 		$v = new venue($_POST['id']);
       
   217 		$result = $v->delete();
       
   218 		echo '{"success": ' . ($result ? 'true' : 'false') . ',"action":"delete"' . ($result ? '' : ',"error":"db"') . '}';
       
   219 		break;
       
   220 		
       
   221 	case 'edit':
       
   222 		$v = new venue($_POST['id']);
       
   223 		?>
       
   224 			<form id="edit-venue-<?php echo $v->id ?>" class="edit-item venue-<?php echo $v->id ?>" method="post" action="<?php echo $pageTarget; ?>">
       
   225 				<table>
       
   226 					<tbody>
       
   227 						<tr><td><label for="edit-name-<?php echo $v->id ?>"><?php _e('Name:', $gcd) ?></label></td><td><input type="text" class="name wide" name="name" id="edit-name-<?php echo $v->id ?>" value="<?php echo dtcGigs::escapeForInput($v->name) ?>" /></td></tr>
       
   228 						<tr><td valign="top"><label for="edit-address-<?php echo $v->id ?>"><?php _e('Address:', $gcd) ?></label></td><td><textarea class="address wide" name="address" id="edit-address-<?php echo $v->id ?>"><?php echo dtcGigs::escapeForInput($v->address) ?></textarea></td></tr>
       
   229 						<tr><td><label for="edit-city-<?php echo $v->id ?>"><?php _e('City:', $gcd) ?></label></td><td><input type="text" class="city wide" name="city" id="edit-city-<?php echo $v->id ?>" value="<?php echo dtcGigs::escapeForInput($v->city) ?>" /></td></tr>
       
   230 						<tr><td><label for="edit-state-<?php echo $v->id ?>"><?php _e('State/Province:', $gcd) ?></label></td><td><input type="text" class="state wide" name="state" id="edit-state-<?php echo $v->id ?>" value="<?php echo dtcGigs::escapeForInput($v->state) ?>" /></td></tr>
       
   231 						<tr><td><label for="edit-country-<?php echo $v->id ?>"><?php _e('Country:', $gcd) ?></label></td><td><input type="text" class="country wide" name="country" id="edit-country-<?php echo $v->id ?>" value="<?php echo dtcGigs::escapeForInput($v->country) ?>" /></td></tr>
       
   232 						<tr><td><label for="edit-postalCode-<?php echo $v->id ?>"><?php _e('Postal Code:', $gcd) ?></label></td><td><input type="text" class="postalCode" name="postalCode" id="edit-postalCode-<?php echo $v->id ?>" value="<?php echo dtcGigs::escapeForInput($v->postalCode) ?>" /></td></tr>
       
   233 						<tr><td><label for="edit-customMap-<?php echo $v->id ?>"><?php _e('Custom location for Google Maps <abbr title="Will override the automatic address unless you leave it blank.">(?)</abbr>', $gcd) ?>:</label></td><td><input type="text" class="customMap wide" name="customMap" id="edit-customMap-<?php echo $v->id ?>" value="<?php echo dtcGigs::escapeForInput($v->customMap) ?>" /></td></tr>
       
   234 						<tr><td><label for="edit-contact-<?php echo $v->id ?>"><?php _e('Primary Contact:', $gcd) ?></label></td><td><input type="text" class="contact wide" name="contact" id="edit-contact-<?php echo $v->id ?>" value="<?php echo dtcGigs::escapeForInput($v->contact) ?>" /></td></tr>
       
   235 						<tr><td><label for="edit-phone-<?php echo $v->id ?>"><?php _e('Phone:', $gcd) ?></label></td><td><input type="text" class="phone wide" name="phone" id="edit-phone-<?php echo $v->id ?>" value="<?php echo dtcGigs::escapeForInput($v->phone) ?>" /></td></tr>
       
   236 						<tr><td><label for="edit-email-<?php echo $v->id ?>"><?php _e('Email:', $gcd) ?></label></td><td><input type="text" class="email wide" name="email" id="edit-email-<?php echo $v->id ?>" value="<?php echo dtcGigs::escapeForInput($v->email) ?>" /></td></tr>
       
   237 						<tr><td><label for="edit-link-<?php echo $v->id ?>"><?php _e('Homepage:', $gcd) ?></label></td><td><input type="text" class="link wide" name="link" id="edit-link-<?php echo $v->id ?>" value="<?php echo dtcGigs::escapeForInput($v->link) ?>" /></td></tr>
       
   238 					</tbody>
       
   239 				</table>
       
   240 				<div>
       
   241 					<label for="edit-private-<?php echo $v->id ?>"><?php _e('Hide information about this venue from the public:', $gcd) ?> <input <?php if ( $v->private ) echo 'checked="checked"' ?> type="checkbox" value="1" name="private" id="edit-private-<?php echo $v->id ?>" /></label>
       
   242 				</div>
       
   243 				<div>
       
   244 					<?php _e('Description/Other notes:', $gcd) ?><br />
       
   245 					<textarea class="notes" name="notes" rows="7" cols="80"><?php echo dtcGigs::escapeForInput($v->notes) ?></textarea>
       
   246 				</div>
       
   247 				<div>
       
   248 					<input type="submit" class="button" name="" value="<?php _e('Save Changes', $gcd); ?>" />
       
   249 					<input type="reset" class="button cancel" name="" value="<?php _e('Cancel', $gcd); ?>" id="edit-venue-reset-<?php echo $v->id ?>" />
       
   250 					<input type="hidden" name="id" value="<?php echo $v->id ?>" />
       
   251 					<input type="hidden" name="action" value="save" />
       
   252 					<input type="hidden" name="nonce" value="<?php echo $_POST['nonce']; ?>" />
       
   253 				</div>
       
   254 			</form>
       
   255 			
       
   256 			<script type="text/javascript">
       
   257 				(function($){
       
   258 					$("#edit-venue-reset-<?php echo $v->id ?>").click(function(){
       
   259 						$(this).parents("tr.panel").hide();
       
   260 					});
       
   261 					
       
   262 					$("#edit-venue-<?php echo $v->id ?>").ajaxForm({
       
   263 						url:pageTarget,
       
   264 						dataType: "json",
       
   265 						success:function(json){
       
   266 							$("#venue-panel-" + json.venue.id).hide();
       
   267 							row = $("#venue-" + json.venue.id);
       
   268 							row.children("td.name").html(json.venue.name);
       
   269 							row.children("td.phone").html(json.venue.phone);
       
   270 							
       
   271 							city = json.venue.city;
       
   272 							if ( json.venue.state != "" ) {
       
   273 								if ( city != "" ) {
       
   274 									city += ", ";
       
   275 								}
       
   276 								city += json.venue.state;
       
   277 							}
       
   278 							row.children("td.city").html(city);
       
   279 							
       
   280 							if ( json.venue.email != "" ) {
       
   281 								row.children("td.email").html("<a href=\"mailto:" + json.venue.email + "\">" + json.venue.email + "</a>");
       
   282 							}
       
   283 						}
       
   284 					});
       
   285 				}(jQuery));
       
   286 			</script>
       
   287 		<?php
       
   288 		break;
       
   289 		
       
   290 	case 'save':
       
   291 		$v = new venue($_POST['id']);
       
   292 		$args = $_POST;
       
   293 		unset($args['nonce'],$args['action'],$args['id']);
       
   294 		if ( !isset($_POST['private']) ) $args['private'] = 0;
       
   295 		foreach ( $args as $key => $value ) {
       
   296 			$v->$key = $value;
       
   297 		}
       
   298 		if ( $v->save() ) {
       
   299 			echo '{success:true, venue:' . $v->toJSON() . '}';
       
   300 		} else {
       
   301 			echo '{success:false}';
       
   302 		}
       
   303 		break;
       
   304 }
       
   305 
       
   306