PluginProbe ʕ •ᴥ•ʔ
Booking Calendar Contact Form / trunk
Booking Calendar Contact Form vtrunk
1.2.66 1.2.65 trunk 1.0.1 1.1.80 1.1.81 1.1.82 1.1.83 1.1.84 1.1.85 1.1.86 1.1.87 1.1.88 1.1.89 1.1.90 1.1.91 1.1.92 1.1.93 1.1.94 1.1.95 1.1.96 1.1.97 1.1.98 1.1.99 1.2.07 1.2.08 1.2.09 1.2.10 1.2.11 1.2.12 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.39 1.2.40 1.2.41 1.2.42 1.2.43 1.2.44 1.2.45 1.2.46 1.2.47 1.2.48 1.2.49 1.2.50 1.2.51 1.2.52 1.2.53 1.2.54 1.2.55 1.2.56 1.2.57 1.2.58 1.2.59 1.2.60 1.2.61 1.2.62 1.2.63 1.2.64
booking-calendar-contact-form / dex_bccf_admin_int_calendar_list.inc.php
booking-calendar-contact-form Last commit date
addons 6 months ago captcha 4 months ago css 5 years ago images 7 years ago js 1 month ago languages 3 years ago README.txt 1 month ago banner.php 1 year ago changelog.txt 9 years ago cp-feedback.php 3 years ago cp_admin_int_add_booking.inc.php 3 years ago cp_admin_int_edition.inc.php 3 years ago dex-publish-wizzard.inc.php 2 years ago dex_bccf.php 1 month ago dex_bccf_admin_int.inc.php 3 years ago dex_bccf_admin_int_bookings_list.inc.php 1 year ago dex_bccf_admin_int_calendar_list.inc.php 2 months ago dex_scheduler.inc.php 4 months ago dex_scheduler_block.inc.php 2 years ago
dex_bccf_admin_int_calendar_list.inc.php
382 lines
1 <?php
2
3 if ( !is_admin() )
4 {
5 echo 'Direct access not allowed.';
6 exit;
7 }
8
9 $current_user = wp_get_current_user();
10
11 global $wpdb;
12 $message = "";
13
14 if (current_user_can('manage_options') && isset($_POST["bccf_fileimport"]) && $_POST["bccf_fileimport"] == 1 && wp_verify_nonce( $_POST['_wpnonce'], 'uname_bccf' ))
15 {
16 if (!wp_verify_nonce( $_REQUEST['_wpnonce'], 'uname_bccf' ))
17 $message = "Access verification error. Cannot update settings.";
18 else
19 {
20 $filename = sanitize_file_name($_FILES['cp_filename']['tmp_name']);
21 $handle = fopen($filename, "r");
22 $contents = fread($handle, filesize($filename));
23 fclose($handle);
24 $params = unserialize($contents);
25 $wpdb->query( $wpdb->prepare( 'DELETE FROM `'.DEX_BCCF_CONFIG_TABLE_NAME.'` WHERE id=%d', $params['id'] ) );
26 unset($params["form_name"]);
27 $wpdb->insert( DEX_BCCF_CONFIG_TABLE_NAME, $params);
28 @unlink($filename);
29 $message = "Backup loaded.";
30 }
31 }
32 else if (current_user_can('manage_options') && isset($_GET['u']) && $_GET['u'] != '')
33 {
34 if (!wp_verify_nonce( $_REQUEST['_wpnonce'], 'uname_bccf' ))
35 $message = "Access verification error. Cannot update settings.";
36 else
37 {
38 $wpdb->query( $wpdb->prepare( 'UPDATE `'.DEX_BCCF_CONFIG_TABLE_NAME.'` SET conwer=%d,`'.TDE_BCCFCALDELETED_FIELD.'`=%d,`'.TDE_BCCFCONFIG_USER.'`=%s WHERE `'.TDE_BCCFCONFIG_ID.'`=%d', sanitize_text_field($_GET["owner"]), sanitize_text_field($_GET["public"]), sanitize_text_field($_GET["name"]), $_GET['u'] ) );
39 $message = "Item updated";
40 }
41 }
42 else if (current_user_can('manage_options') && isset($_GET['ac']) && $_GET['ac'] == 'st')
43 {
44 if (!wp_verify_nonce( $_REQUEST['_wpnonce'], 'uname_bccf' ))
45 $message = "Access verification error. Cannot update settings.";
46 else
47 {
48 update_option( 'CP_BCCF_LOAD_SCRIPTS', ($_GET["scr"]=="1"?"0":"1") );
49 if ($_GET["chs"] != '')
50 {
51 $target_charset = str_replace('`','``',sanitize_text_field($_GET["chs"]));
52 $tables = array( $wpdb->prefix.DEX_BCCF_TABLE_NAME_NO_PREFIX, $wpdb->prefix.DEX_BCCF_CALENDARS_TABLE_NAME_NO_PREFIX, $wpdb->prefix.DEX_BCCF_CONFIG_TABLE_NAME_NO_PREFIX );
53 foreach ($tables as $tab)
54 {
55 $myrows = $wpdb->get_results( "DESCRIBE {$tab}" );
56 foreach ($myrows as $item)
57 {
58 $name = $item->Field;
59 $type = $item->Type;
60 if (preg_match("/^varchar\((\d+)\)$/i", $type, $mat) || !strcasecmp($type, "CHAR") || !strcasecmp($type, "TEXT") || !strcasecmp($type, "MEDIUMTEXT"))
61 {
62 $wpdb->query("ALTER TABLE {$tab} CHANGE {$name} {$name} {$type} COLLATE `{$target_charset}`");
63 }
64 }
65 }
66 }
67 }
68 $message = "Troubleshoot settings updated";
69 }
70
71 $nonce_un = wp_create_nonce( 'uname_bccf' );
72
73 if ($message) echo "<div id='setting-error-settings_updated' class='updated settings-error'><p><strong>".esc_html($message)."</strong></p></div>";
74
75 ?>
76 <div class="wrap">
77 <h1>Booking Calendar Contact Form</h1>
78
79 <script type="text/javascript">
80
81 function cp_updateItem(id)
82 {
83 var calname = document.getElementById("calname_"+id).value;
84 var owner = document.getElementById("calowner_"+id).options[document.getElementById("calowner_"+id).options.selectedIndex].value;
85 if (owner == '')
86 owner = 0;
87 var is_public = "1";
88 document.location = 'admin.php?page=dex_bccf.php&_wpnonce=<?php echo $nonce_un; ?>&u='+id+'&r='+Math.random()+'&public='+is_public+'&owner='+owner+'&name='+encodeURIComponent(calname);
89 }
90
91 function cp_manageSettings(id)
92 {
93 document.location = 'admin.php?page=dex_bccf.php&cal='+id+'&r='+Math.random();
94 }
95
96 function cp_publish(id)
97 {
98 document.location = 'admin.php?page=dex_bccf.php&pwizard=1&cal='+id+'&r='+Math.random();
99 }
100
101 function cp_addbk(id)
102 {
103 document.location = 'admin.php?page=dex_bccf.php&addbk=1&cal='+id+'&r='+Math.random();
104 }
105
106 function cp_BookingsList(id)
107 {
108 document.location = 'admin.php?page=dex_bccf.php&cal='+id+'&list=1&r='+Math.random();
109 }
110
111 function cp_updateConfig()
112 {
113 if (confirm('Are you sure that you want to update these settings?'))
114 {
115 var scr = document.getElementById("ccscriptload").value;
116 var chs = document.getElementById("cccharsets").value;
117 document.location = 'admin.php?page=dex_bccf.php&_wpnonce=<?php echo $nonce_un; ?>&ac=st&scr='+scr+'&chs='+chs+'&r='+Math.random();
118 }
119 }
120
121 function cp_exportItem()
122 {
123 var calname = document.getElementById("exportid").options[document.getElementById("exportid").options.selectedIndex].value;
124 document.location = 'admin.php?page=dex_bccf.php&bccf_export=1&_wpnonce=<?php echo $nonce_un; ?>&r='+Math.random()+'&name='+encodeURIComponent(calname);
125 }
126
127 </script>
128
129
130 <div id="normal-sortables" class="meta-box-sortables">
131
132
133 <div id="metabox_basic_settings" class="postbox" >
134 <h3 class='hndle' style="padding:5px;"><span>Calendar List / Items List</span></h3>
135 <div class="inside">
136
137
138 <table cellspacing="10" cellpadding="6" class="ahb-calendars-list">
139 <tr>
140 <th align="left">ID</th><th align="left">Item Name</th><th align="left">Owner</th><th align="left">Feed</th><th align="left">Options</th><th align="left">Shortcode for Pages &amp; Posts</th>
141 </tr>
142 <?php
143
144 $users = $wpdb->get_results( "SELECT user_login,ID FROM ".$wpdb->users." ORDER BY ID DESC" );
145
146 $myrows = $wpdb->get_results( "SELECT * FROM ".$wpdb->prefix ."bccf_reservation_calendars" );
147 foreach ($myrows as $item)
148 if (cp_bccf_is_administrator() || ($current_user->ID == $item->conwer))
149 {
150 ?>
151 <tr>
152 <td nowrap><?php echo esc_html($item->id); ?></td>
153 <td nowrap><input type="text" style="width:100px;" <?php if (!cp_bccf_is_administrator()) echo ' readonly '; ?>name="calname_<?php echo esc_attr($item->id); ?>" id="calname_<?php echo esc_attr($item->id); ?>" value="<?php echo esc_attr($item->uname); ?>" /></td>
154
155 <?php if (cp_bccf_is_administrator()) { ?>
156 <td nowrap>
157 <select name="calowner_<?php echo esc_attr($item->id); ?>" id="calowner_<?php echo esc_attr($item->id); ?>">
158 <option value="0"<?php if (!$item->conwer) echo ' selected'; ?>></option>
159 <?php foreach ($users as $user) {
160 ?>
161 <option value="<?php echo intval($user->ID); ?>"<?php if ($user->ID."" == $item->conwer) echo ' selected'; ?>><?php echo esc_html($user->user_login); ?></option>
162 <?php } ?>
163 </select>
164 </td>
165 <?php } else { ?>
166 <td nowrap>
167 <?php echo esc_html($current_user->user_login); ?>
168 </td>
169 <?php } ?>
170
171 <input type="hidden" name="calpublic_<?php echo esc_attr($item->id); ?>" id="calpublic_<?php echo esc_attr($item->id); ?>" value="1" />
172 <td nowrap><a href="<?php echo get_site_url(); ?>?dex_bccf=calfeed&id=<?php echo esc_attr($item->id); ?>&verify=<?php echo substr(md5($item->id.get_option('BCCF_RCODE',$_SERVER["DOCUMENT_ROOT"])),0,10); ?>">iCal</a></td>
173 <td>
174 <?php if (cp_bccf_is_administrator()) { ?>
175 <input style="margin:3px" class="button" type="button" name="calupdate_<?php echo esc_attr($item->id); ?>" value="Update Name &amp; Owner" onclick="cp_updateItem(<?php echo esc_attr($item->id); ?>);" />
176 <?php } ?>
177 <input style="margin:3px" class="button-primary button" type="button" name="calmanage_<?php echo esc_attr($item->id); ?>" value="Settings " onclick="cp_manageSettings(<?php echo esc_attr($item->id); ?>);" />
178 <?php if (current_user_can('manage_options')) { ?>
179 <input style="margin:3px" class="button-primary button" type="button" name="calpublish_<?php echo esc_attr($item->id); ?>" value="<?php _e('Publish','booking-calendar-contact-form'); ?>" onclick="cp_publish(<?php echo esc_attr($item->id); ?>);" />
180 <?php } ?>
181 <input style="margin:3px" class="button" type="button" name="caladdbk_<?php echo esc_attr($item->id); ?>" value="<?php _e('Add Booking','booking-calendar-contact-form'); ?>" onclick="cp_addbk(<?php echo esc_attr($item->id); ?>);" />
182 <input style="margin:3px" class="button" type="button" name="calbookings_<?php echo esc_attr($item->id); ?>" value="Bookings / Contacts" onclick="cp_BookingsList(<?php echo esc_attr($item->id); ?>);" />
183 </td>
184 <td style="font-size:11px;"><nobr>[CP_BCCF_FORM calendar="<?php echo esc_attr($item->id); ?>"]</nobr></td>
185 </tr>
186 <?php
187 }
188 ?>
189
190 </table>
191
192 <div style="clearer"></div>
193
194 </div>
195 </div>
196
197 <?php if (cp_bccf_is_administrator()) { ?>
198
199 <div id="metabox_basic_settings" class="postbox" >
200 <h3 class='hndle' style="padding:5px;"><span>New Calendar / Item</span></h3>
201 <div class="inside">
202
203 This version supports one calendar. For a version that supports unlimited calendars upgrade to one of the <a href="https://bccf.dwbooster.com/download">commercial versions</a>.
204
205 </div>
206 </div>
207
208
209 <div id="metabox_basic_settings" class="postbox" >
210 <h3 class='hndle' style="padding:5px;"><span>Troubleshoot Area</span></h3>
211 <div class="inside">
212 <p><strong>Important!</strong>: Use this area <strong>only</strong> if you are experiencing conflicts with third party plugins, with the theme scripts or with the character encoding.</p>
213 <form name="updatesettings">
214 Script load method:<br />
215 <select id="ccscriptload" name="ccscriptload">
216 <option value="0" <?php if (get_option('CP_BCCF_LOAD_SCRIPTS',"1") == "1") echo 'selected'; ?>>Classic (Recommended)</option>
217 <option value="1" <?php if (get_option('CP_BCCF_LOAD_SCRIPTS',"1") != "1") echo 'selected'; ?>>Direct</option>
218 </select><br />
219 <em>* Change the script load method if the form doesn't appear in the public website.</em>
220
221 <br /><br />
222 Character encoding:<br />
223 <select id="cccharsets" name="cccharsets">
224 <option value="">Keep current charset (Recommended)</option>
225 <option value="utf8_general_ci">UTF-8 (try this first)</option>
226 <option value="latin1_swedish_ci">latin1_swedish_ci</option>
227 <option value="hebrew_general_ci">hebrew_general_ci</option>
228 <option value="gb2312_chinese_ci">gb2312_chinese_ci</option>
229 </select><br />
230 <em>* Update the charset if you are getting problems displaying special/non-latin characters. After updated you need to edit the special characters again.</em>
231 <br />
232 <input type="button" onclick="cp_updateConfig();" name="gobtn" value="UPDATE" />
233 <br /><br />
234 </form>
235
236 </div>
237 </div>
238
239
240 <script type="text/javascript">
241 function cp_editArea(id)
242 {
243 document.location = 'admin.php?page=dex_bccf.php&edit=1&cal=1&item='+id+'&r='+Math.random();
244 }
245 </script>
246 <div id="metabox_basic_settings" class="postbox" >
247 <h3 class='hndle' style="padding:5px;"><span>Customization Area</span></h3>
248 <div class="inside">
249 <p>Use this area to add custom CSS styles or custom scripts. These styles and scripts will be keep safe even after updating the plugin.</p>
250 <input type="button" onclick="cp_editArea('css');" name="gobtn3" value="Add Custom Styles" />
251 &nbsp; &nbsp; &nbsp;
252 <input type="button" onclick="cp_editArea('js');" name="gobtn2" value="Add Custom JavaScript" />
253 </div>
254 </div>
255
256
257 <div id="metabox_basic_settings" class="postbox" >
258 <h3 class='hndle' style="padding:5px;"><span>Backup / Restore Area</span></h3>
259 <div class="inside">
260 <p>Use this area <strong>only</strong> to <strong>backup/restore calendar settings</strong>.</p>
261 <hr />
262 <form name="exportitem">
263 Export this form structure and settings:<br />
264 <select id="exportid" name="exportid">
265 <?php
266 foreach ($myrows as $item)
267 echo '<option value="'.$item->id.'">'.$item->uname.'</option>';
268 ?>
269 </select>
270 <input type="button" onclick="cp_exportItem();" name="gobtn" value="Export" />
271 <br /><br />
272 </form>
273 <hr />
274 <form name="importitem" action="admin.php?page=dex_bccf.php" method="post" enctype="multipart/form-data">
275 <input type="hidden" name="bccf_fileimport" id="bccf_fileimport" value="1" />
276 <input type="hidden" name="_wpnonce" value="<?php echo esc_attr($nonce_un); ?>" />
277
278 Import a form structure and settings (will OVERWRITE the related form. Only <em>.bccf</em> files ):<br />
279 <input type="file" name="cp_filename" id="cp_filename" value="" required /> <input type="submit" name="gobtn" value="Import" />
280 <br /><br />
281 </form>
282
283 </div>
284 </div>
285
286 <?php } ?>
287
288
289 <a name="addons-section"></a>
290 <h2>Add-Ons Settings:</h2><hr />
291 <div id="metabox_basic_settings" class="postbox" >
292 <h3 class='hndle' style="padding:5px;"><span>Add-ons Area</span></h3>
293 <div class="inside">
294 <style type="text/css">
295 .cpfieldset {
296 border: 1px groove threedface;
297 padding: 5px;
298 width:400px;
299 margin-right:10px;
300 }
301 .cpfieldset legend { font-weight: bold; color: #009900; }
302 </style>
303 <div><label for="addon-csvImport-20151106" style="font-weight:bold;"><input type="checkbox" disabled id="addon-csvImport-20151106" name="dexbccf_addons" value="addon-csvImport-20151106" >CSV Import</label> <div style="font-style:italic;padding-left:20px;">The add-on allows to import a CSV file with bookings into the bookings list</div></div><div><label for="addon-Excludemeails-20191101" style="font-weight:bold;"><input type="checkbox" disabled id="addon-Excludemeails-20191101" name="dexbccf_addons" value="addon-Excludemeails-20191101" >Exclude Emails from Reminders</label> <div style="font-style:italic;padding-left:20px;">The add-on allows to exclude emails from reminders and follow-up messages.</div></div><div><label for="addon-FrontendLists-20160715" style="font-weight:bold;"><input type="checkbox" disabled id="addon-FrontendLists-20160715" name="dexbccf_addons" value="addon-FrontendLists-20160715" >Frontend Lists Add-on</label> <div style="font-style:italic;padding-left:20px;">The add-on allows to displays list of bookings in the frontend</div></div><div><label for="addon-iCalExport-20170903" style="font-weight:bold;"><input type="checkbox" disabled id="addon-iCalExport-20170903" name="dexbccf_addons" value="addon-iCalExport-20170903" >iCal for Emails</label> <div style="font-style:italic;padding-left:20px;">The add-on adds support for sending iCal files in emails.</div></div><div><label for="addon-iCalImport-20180619" style="font-weight:bold;"><input type="checkbox" disabled id="addon-iCalImport-20180619" name="dexbccf_addons" value="addon-iCalImport-20180619" >iCal Automatic Import</label> <div style="font-style:italic;padding-left:20px;">The add-on adds support for importing iCal files from external websites/services</div></div><div><label for="addon-DataLookup-20180619" style="font-weight:bold;"><input type="checkbox" disabled id="addon-DataLookup-20180619" name="dexbccf_addons" value="addon-DataLookup-20180619" >Data Lookup</label> <div style="font-style:italic;padding-left:20px;">The add-on enables data lookup in previous bookings to auto-fill fields</div></div><div><label for="addon-idealmollie-20160715" style="font-weight:bold;"><input type="checkbox" disabled id="addon-idealmollie-20160715" name="dexbccf_addons" value="addon-idealmollie-20160715" >iDeal Mollie</label> <div style="font-style:italic;padding-left:20px;">The add-on adds support for iDeal via Mollie payments</div></div><div><label for="addon-paypalexpress-20160715" style="font-weight:bold;"><input type="checkbox" disabled id="addon-paypalexpress-20160715" name="dexbccf_addons" value="addon-paypalexpress-20160715" >PayPal Express Checkout</label> <div style="font-style:italic;padding-left:20px;">The add-on adds support for PayPal Express Checkout payments</div></div><div><label for="addon-PostCreation-20160715" style="font-weight:bold;"><input type="checkbox" disabled id="addon-PostCreation-20160715" name="dexbccf_addons" value="addon-PostCreation-20160715" >Post Creation Add-on</label> <div style="font-style:italic;padding-left:20px;">The add-on allows to create Posts with the submitted data</div></div><div><label for="addon-PublicPopup-20180619" style="font-weight:bold;"><input type="checkbox" disabled id="addon-PublicPopup-20180619" name="dexbccf_addons" value="addon-PublicPopup-20180619" >Popup Info for Public Calendar</label> <div style="font-style:italic;padding-left:20px;">The add-on enables popup info for bookings in the public calendar</div></div><div><label for="addon-recaptcha-20151106" style="font-weight:bold;"><input type="checkbox" disabled id="addon-recaptcha-20151106" name="dexbccf_addons" value="addon-recaptcha-20151106" >reCAPTCHA</label> <div style="font-style:italic;padding-left:20px;">The add-on allows to protect the forms with reCAPTCHA service of Google</div></div><div><label for="addon-sabtpv-20160715" style="font-weight:bold;"><input type="checkbox" disabled id="addon-sabtpv-20160715" name="dexbccf_addons" value="addon-sabtpv-20160715" >RedSys TPV</label> <div style="font-style:italic;padding-left:20px;">The add-on adds support for RedSys TPV payments</div></div><div><label for="addon-salesforce-20150311" style="font-weight:bold;"><input type="checkbox" disabled id="addon-salesforce-20150311" name="dexbccf_addons" value="addon-salesforce-20150311" >SalesForce</label> <div style="font-style:italic;padding-left:20px;">The add-on allows create SalesForce leads with the submitted information</div></div><div><label for="addon-stripe-20201230" style="font-weight:bold;"><input type="checkbox" disabled id="addon-stripe-20201230" name="dexbccf_addons" value="addon-stripe-20201230">Stripe</label> <div style="font-style:italic;padding-left:20px;">The add-on adds support for Stripe payments (SCA and Classic)</div></div><div><label for="addon-webhook-20150403" style="font-weight:bold;"><input type="checkbox" disabled id="addon-webhook-20150403" name="dexbccf_addons" value="addon-webhook-20150403" >WebHook</label> <div style="font-style:italic;padding-left:20px;">The add-on allows put the submitted information to a webhook URL, and integrate the forms with the Zapier service</div></div><div><label for="addon-WeekNumber-20151106" style="font-weight:bold;"><input type="checkbox" disabled id="addon-WeekNumber-20151106" name="dexbccf_addons" value="addon-WeekNumber-20151106" >Week Number add-on</label> <div style="font-style:italic;padding-left:20px;">The add-on displays the week number in the public calendar and bookings list</div></div><div><label for="addon-woocommerce-20150309" style="font-weight:bold;"><input type="checkbox" disabled id="addon-woocommerce-20150309" name="dexbccf_addons" value="addon-woocommerce-20150309" >WooCommerce</label> <div style="font-style:italic;padding-left:20px;">The add-on allows integrate the forms with WooCommerce products</div></div>
304 <div style="clear:both"></div>
305
306 <div style="margin-top:20px;"><input class="button-primary button" type="button" style="cursor:pointer;color: #FFFFFF;font-weight:bold;" onclick="window.open('https://bccf.dwbooster.com/download?src=activateaddons');" name="activateAddon" value="Activate Addons" /></div>
307 <div class="clear"></div>
308 * Add-ons are available in <a href="https://bccf.dwbooster.com/download">upgraded versions</a>.
309 </div>
310 </div>
311
312
313 <div id="metabox_basic_settings" class="postbox" <?php if (is_plugin_active('appointment-hour-booking/app-booking-plugin.php') && is_plugin_active('appointment-booking-calendar/cpabc_appointments.php')) echo 'style="display:none"'; ?>>
314 <h3 class='hndle' style="padding:5px;"><span>Need a booking calendar for appointments?</span></h3>
315 <div class="inside">
316
317 <p>With the following plugins you can also have a form for booking appointments selecting specific times into the dates: </p>
318 <div style="clear:both"></div>
319
320 <div class="plugin-card plugin-card-appointment-hour-booking" <?php if (is_plugin_active('appointment-hour-booking/app-booking-plugin.php')) echo 'style="display:none"'; ?> >
321 <div class="plugin-card-top">
322 <div class="name column-name">
323 <h3>
324 <a href="plugin-install.php?tab=plugin-information&amp;plugin=appointment-hour-booking&amp;" class="thickbox open-plugin-details-modal">
325 Appointment Hour Booking <img src="https://ps.w.org/appointment-hour-booking/assets/icon-256x256.png" class="plugin-icon" alt="">
326 </a>
327 </h3>
328 </div>
329 <div class="action-links">
330 <ul class="plugin-action-buttons"><ul class="plugin-action-buttons"><li><a class="install-now button" data-slug="appointment-hour-booking" href="<?php echo wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=appointment-hour-booking'), 'install-plugin_appointment-hour-booking'); ?>" aria-label="Install Appointment Hour Booking" data-name="Appointment Hour Booking">Install Now</a></li><li><a href="plugin-install.php?tab=plugin-information&amp;plugin=appointment-hour-booking" class="thickbox open-plugin-details-modal" aria-label="More information about Appointment Hour Booking" data-title="Appointment Hour Booking">More Details</a></li></ul> </div>
331 <div class="desc column-description">
332 <p>Booking forms for appointments/services with a start time and a defined duration over a schedule. The start time is visually selected by the end user from a set of start times (based in "open" hours and service duration).</p>
333
334 </div>
335 </div>
336 </div>
337
338 <div class="plugin-card plugin-card-appointment-booking-calendar" <?php if (is_plugin_active('appointment-booking-calendar/cpabc_appointments.php')) echo 'style="display:none"'; ?>>
339 <div class="plugin-card-top">
340 <div class="name column-name">
341 <h3>
342 <a href="plugin-install.php?tab=plugin-information&amp;plugin=appointment-booking-calendar&amp;" class="thickbox open-plugin-details-modal">
343 Appointment Booking Calendar <img src="https://ps.w.org/appointment-booking-calendar/assets/icon-256x256.png" class="plugin-icon" alt="">
344 </a>
345 </h3>
346 </div>
347 <div class="action-links">
348 <ul class="plugin-action-buttons"><ul class="plugin-action-buttons"><li><a class="install-now button" data-slug="appointment-booking-calendar" href="<?php echo wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=appointment-booking-calendar'), 'install-plugin_appointment-booking-calendar'); ?>" aria-label="Install Appointment Booking Calendar" data-name="Appointment Booking Calendar">Install Now</a></li><li><a href="plugin-install.php?tab=plugin-information&amp;plugin=appointment-booking-calendar" class="thickbox open-plugin-details-modal" aria-label="More information about Appointment Booking Calendar" data-title="Appointment Booking Calendar">More Details</a></li></ul> </div>
349 <div class="desc column-description">
350 <p>Appointment booking calendar for booking time-slots into dates from a set of available time-slots in a calendar. Includes PayPal payments integration for processing the bookings.</p>
351
352 </div>
353 </div>
354 </div>
355
356 <div style="clear:both"></div>
357
358 </div>
359 </div>
360
361
362 </div>
363
364
365 [<a href="https://wordpress.org/support/plugin/booking-calendar-contact-form#new-post" target="_blank">Support</a>] | [<a href="https://bccf.dwbooster.com/" target="_blank">Documentation</a>]
366 </form>
367 </div>
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382