|
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 |