Changeset 3268378
- Timestamp:
- 04/08/2025 07:46:46 AM (12 months ago)
- Location:
- zooza
- Files:
-
- 24 added
- 26 edited
- 1 copied
-
tags/1.1.0 (copied) (copied from zooza/trunk)
-
tags/1.1.0/README.txt (modified) (3 diffs)
-
tags/1.1.0/admin/class-zooza-admin.php (modified) (14 diffs)
-
tags/1.1.0/admin/partials/zooza-admin-display.php (modified) (1 diff)
-
tags/1.1.0/includes/class-zooza-activator.php (modified) (1 diff)
-
tags/1.1.0/includes/class-zooza-deactivator.php (modified) (1 diff)
-
tags/1.1.0/includes/class-zooza.php (modified) (3 diffs)
-
tags/1.1.0/languages/zooza-cs_CZ.mo (added)
-
tags/1.1.0/languages/zooza-cs_CZ.po (added)
-
tags/1.1.0/languages/zooza-de_DE.mo (added)
-
tags/1.1.0/languages/zooza-de_DE.po (added)
-
tags/1.1.0/languages/zooza-en_US.mo (modified) (previous)
-
tags/1.1.0/languages/zooza-en_US.po (modified) (1 diff)
-
tags/1.1.0/languages/zooza-hu_HU.mo (added)
-
tags/1.1.0/languages/zooza-hu_HU.po (added)
-
tags/1.1.0/languages/zooza-it_IT.mo (added)
-
tags/1.1.0/languages/zooza-it_IT.po (added)
-
tags/1.1.0/languages/zooza-pl_PL.mo (added)
-
tags/1.1.0/languages/zooza-pl_PL.po (added)
-
tags/1.1.0/languages/zooza-ro_RO.mo (added)
-
tags/1.1.0/languages/zooza-ro_RO.po (added)
-
tags/1.1.0/languages/zooza-sk_SK.mo (modified) (previous)
-
tags/1.1.0/languages/zooza-sk_SK.po (modified) (1 diff)
-
tags/1.1.0/languages/zooza.pot (modified) (1 diff)
-
tags/1.1.0/public/class-zooza-public.php (modified) (5 diffs)
-
tags/1.1.0/zooza.php (modified) (2 diffs)
-
trunk/README.txt (modified) (3 diffs)
-
trunk/admin/class-zooza-admin.php (modified) (14 diffs)
-
trunk/admin/partials/zooza-admin-display.php (modified) (1 diff)
-
trunk/includes/class-zooza-activator.php (modified) (1 diff)
-
trunk/includes/class-zooza-deactivator.php (modified) (1 diff)
-
trunk/includes/class-zooza.php (modified) (3 diffs)
-
trunk/languages/zooza-cs_CZ.mo (added)
-
trunk/languages/zooza-cs_CZ.po (added)
-
trunk/languages/zooza-de_DE.mo (added)
-
trunk/languages/zooza-de_DE.po (added)
-
trunk/languages/zooza-en_US.mo (modified) (previous)
-
trunk/languages/zooza-en_US.po (modified) (1 diff)
-
trunk/languages/zooza-hu_HU.mo (added)
-
trunk/languages/zooza-hu_HU.po (added)
-
trunk/languages/zooza-it_IT.mo (added)
-
trunk/languages/zooza-it_IT.po (added)
-
trunk/languages/zooza-pl_PL.mo (added)
-
trunk/languages/zooza-pl_PL.po (added)
-
trunk/languages/zooza-ro_RO.mo (added)
-
trunk/languages/zooza-ro_RO.po (added)
-
trunk/languages/zooza-sk_SK.mo (modified) (previous)
-
trunk/languages/zooza-sk_SK.po (modified) (1 diff)
-
trunk/languages/zooza.pot (modified) (1 diff)
-
trunk/public/class-zooza-public.php (modified) (5 diffs)
-
trunk/zooza.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
zooza/tags/1.1.0/README.txt
r3140565 r3268378 2 2 Contributors: zooza 3 3 Donate link: https://zooza.online 4 Tags: zooza, widgets4 Tags: booking, class booking, kids activities, course registration, parent portal, student portal, afterschool, management,zooza, widgets, class booking, education, franchise, children, kids classes, activities, calendar, booking system, attendance, scheduling, event management, registration 5 5 Requires at least: 3.0.1 6 6 Tested up to: 6.5.0 7 Stable tag: 1. 0.97 Stable tag: 1.1.0 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html 10 10 11 This plugin enables integration of Zooza widgets to your website. Existing Zooza account is required for this plugin to work.11 This plugin enables integration of Zooza widgets to your website. An existing Zooza account is required for this plugin to work. 12 12 13 13 == Description == 14 14 15 Simple integration of Zooza widgets for your website. 16 17 Supported widgets: 18 19 * "Registration" used for registering new clients to courses 20 * "Profle" displays user's profile 21 * "Calendar" displays your courses and events in calendar form 22 * "Video" displays purchased videos 23 * "Checkout" provides checkout form for purchasing products 24 25 The widgets will be shown below the main content of selected pages. Plugin will also synchronize URL's of selected widget pages back to Zooza. 15 **Zooza: All-in-One Class Booking, Registration, and Payment Plugin for Kids' Activities, Afterschool Clubs, and Franchises** 16 17 Looking for an all-in-one solution to manage your kids' classes, afterschool activities, or franchise operations? Zooza's WordPress plugin makes it easier than ever to embed powerful booking, registration, scheduling, and payment tools directly into your website—no code required. 18 19 Whether you're a local children’s activity provider, a growing franchise, or a school offering in-person extracurricular courses, Zooza gives you everything you need to manage registrations, attendance, client communications, and payments—all in one place. 20 21 == What Is Zooza? == 22 23 Zooza is a modern SaaS platform designed for in-person class and activity providers who work with children. From dance and football classes to coding camps, tutoring programs, or language courses, Zooza helps you scale your operations with ease. 24 25 Our WordPress plugin brings the core power of Zooza directly into your site. You can embed fully responsive and interactive components, including: 26 27 - Booking Calendar 28 - Registration Form 29 - Client/Parent Zone 30 - Customizable Checkout Forms 31 - Google Map for Locations 32 33 All embeddable with simple shortcodes. 34 35 == Who Is It For? == 36 37 Zooza is trusted by: 38 39 - Afterschool activity providers 40 - Kids’ class businesses (e.g., dance, sports, music, art, STEM) 41 - Education franchises 42 - Day camps and seasonal programs 43 - Tutoring and enrichment centers 44 - Language schools 45 - New or growing franchises looking for scalable booking infrastructure 46 47 Whether you're starting your business or expanding across multiple locations, Zooza grows with you. 48 49 == Core Features == 50 51 ✅ **Class Booking System** 52 Embed a booking calendar for single or recurring sessions. Parents can view schedules, choose time slots, and book instantly. 53 54 ✅ **Online Registration Forms** 55 Custom registration forms that match your brand and collect the exact information you need. 56 57 ✅ **Client & Parent Zone** 58 Give parents access to view their bookings, manage payments, track attendance, and reschedule if needed. 59 60 ✅ **Automated Reminders & Communication** 61 Send SMS/email reminders, confirmations, and attendance updates to parents automatically. 62 63 ✅ **Integrated Payments** 64 Collect payments upfront or per session with Stripe, card, or bank transfer options. Setup recurring invoices for term-based classes. 65 66 ✅ **Attendance Management** 67 Track attendance with ease—let instructors mark present/absent and keep parents updated. 68 69 ✅ **Reporting & Insights** 70 Track income, registration trends, class occupancy, and more—all in one place. 71 72 ✅ **Multi-location & Multi-instructor Ready** 73 Manage classes across different branches or cities with tailored views and permissions. 74 75 == Smart Embeds for Your Website (No Coding Required) == 76 77 Use shortcodes to embed the following into your website: 78 79 80 `[zooza type=calendar]` – Embed a full class booking calendar 81 `[zooza type=registration]` – Display a branded registration form 82 `[zooza type=map]` – Show a map of your class locations 83 `[zooza type=checkout]` – Provide a custom checkout experience 84 `[zooza type=profile]` – Give parents access to their bookings 85 `[zooza type=video]` – Preview lessons or informational videos 86 87 Every element is mobile-friendly, fast-loading, and styled to match your branding. 88 89 90 == Why Zooza? == 91 92 Most plugins only do one thing: booking, attendance, or payments. Zooza does it all. 93 94 It’s more than just a WordPress plugin—it’s your operations dashboard. Built specifically for in-person children’s classes, Zooza understands the unique needs of this industry: recurring schedules, parent communication, one-time events, attendance reporting, and group management. 95 96 == SEO Keyword-Optimized Use Cases == 97 98 Zooza is ideal if you’re searching for: 99 100 - "class booking plugin for kids" 101 - "wordpress plugin for afterschool classes" 102 - "manage course registration wordpress" 103 - "child activity scheduling system" 104 - "parent booking system for clubs" 105 - "attendance tracker for group classes" 106 - "payment plugin for children’s activities" 107 - "wordpress calendar for kids events" 108 - "plugin for tutoring registration" 109 - "kids class management system" 110 - "course booking and payments plugin" 111 - "franchise class management software" 112 - "all-in-one registration and attendance tool" 113 114 If you typed any of those into Google—you just found your answer. 115 116 == More Than a Plugin: The Zooza Platform == 117 118 Want to go even further? Zooza’s full SaaS platform gives you access to: 119 120 - Multi-language interface & localization 121 - Customized admin dashboards for staff & instructors 122 - GDPR-compliant data handling 123 - API & integration options 124 - Franchise dashboards and royalty tracking 125 - Bulk import of client data 126 - Marketing tools & lead tracking 127 128 You can learn more about the full Zooza platform here: https://zooza.online 129 130 == Get Started == 131 132 Install the plugin, connect your Zooza account, and embed your tools in minutes. You can manage everything from your Zooza dashboard while giving your website visitors a seamless booking and registration experience. 133 134 Join hundreds of businesses and franchises across Europe who trust Zooza to manage their operations and grow with confidence. 135 136 Website: https://zooza.online 137 Support: support@zooza.online 138 139 **Zooza – Built for the Chaos of Kids' Activities. Trusted by the Calm in It.** 26 140 27 141 == Installation == 28 142 29 1. Upload `zooza.php` to the `/wp-content/plugins/` directory 30 2. Activate the plugin through the 'Plugins' menu in WordPress 31 3. Setup widgets in 'Main Settings ' > 'Zooza' 143 1. In your WordPress admin dashboard, go to **Plugins > Add New**. 144 2. Search for **Zooza**, then click **Install Now** and **Activate**. 145 3. After activation, go to **Settings > Zooza**. 146 4. Paste your **Zooza API key** (available in your Zooza account). 147 5. Choose where you'd like the widgets to appear (which page). 148 6. Save your settings and you're done! 149 150 Alternatively, you can use shortcodes to place widgets anywhere on your site: 151 152 - `[zooza type=calendar]` 153 - `[zooza type=registration]` 154 - `[zooza type=map]` 155 - `[zooza type=checkout]` 156 - `[zooza type=profile]` 157 - `[zooza type=video]` 158 159 == Screenshots == 160 161 1. **Booking Calendar Embed** 162 Display a fully responsive class booking calendar integrated seamlessly into your website. 163 164 2. **Registration Form** 165 A branded registration form embedded on your page to collect user information easily. 166 167 3. **Parent/Client Zone** 168 A screenshot of the client zone where parents can manage their bookings, view attendance, and reschedule if needed. 169 170 4. **Checkout Form** 171 Fully customizable checkout form for streamlined payment collection. 172 173 5. **Google Map of Class Locations** 174 A map showcasing your class locations for ease of navigation. 175 176 6. **Zooza Settings Page** 177 Settings page in WordPress to configure API key and adjust widget settings. 178 179 7. **Instructor Dashboard** *(Optional)* 180 Showcase the dashboard used by instructors to mark attendance and view class details. 32 181 33 182 == Changelog == … … 37 186 38 187 = 1.0.2 = 39 * Fixed loading of Calendar, Video and Checkout widgets188 * Fixed loading of Calendar, Video, and Checkout widgets 40 189 41 190 = 1.0.3 = … … 46 195 47 196 = 1.0.5 = 48 * Migrat ingto zooza.app197 * Migrated to zooza.app 49 198 50 199 = 1.0.6 = 51 * Fix administration exception200 * Fixed administration exception 52 201 53 202 = 1.0.7 = 54 * Fix remaining administration exception203 * Fixed remaining administration exception 55 204 56 205 = 1.0.9 = 57 206 * Transition to new API endpoints 58 207 59 = 1.0.9 = 60 * Transition to new API endpoints 61 208 = 1.1.0 = 209 * Added Map widget 210 * Introduced multi-language support 211 * Added shortcode support for flexible widget placement and customization -
zooza/tags/1.1.0/admin/class-zooza-admin.php
r3140565 r3268378 23 23 class Zooza_Admin { 24 24 25 /**26 * The ID of this plugin.27 *28 * @since 1.0.029 * @access private30 * @var string $plugin_name The ID of this plugin.31 */32 private $plugin_name;33 34 /**35 * The version of this plugin.36 *37 * @since 1.0.9 38 * @access private39 * @var string $version The current version of this plugin.40 */41 private $version;42 43 /**44 * Initialize the class and set its properties.45 *46 * @since 1.0.047 * @param string $plugin_name The name of this plugin.48 * @param string $version The version of this plugin.49 */50 public function __construct( $plugin_name, $version ) {51 52 $this->plugin_name = $plugin_name;53 $this->version = $version;54 55 }25 /** 26 * The ID of this plugin. 27 * 28 * @since 1.0.0 29 * @access private 30 * @var string $plugin_name The ID of this plugin. 31 */ 32 private $plugin_name; 33 34 /** 35 * The version of this plugin. 36 * 37 * @since 1.1.0 38 * @access private 39 * @var string $version The current version of this plugin. 40 */ 41 private $version; 42 43 /** 44 * Initialize the class and set its properties. 45 * 46 * @since 1.0.0 47 * @param string $plugin_name The name of this plugin. 48 * @param string $version The version of this plugin. 49 */ 50 public function __construct( $plugin_name, $version ) { 51 52 $this->plugin_name = $plugin_name; 53 $this->version = $version; 54 55 } 56 56 57 57 public function admin_init() { … … 59 59 register_setting( 'zooza', 'zooza_api_key' ); 60 60 register_setting( 'zooza', 'zooza_client_secret' ); 61 register_setting( 'zooza', 'zooza_api_url' ); 61 62 register_setting( 'zooza', 'zooza_registration_page_id' ); 62 63 register_setting( 'zooza', 'zooza_profile_page_id' ); … … 64 65 register_setting( 'zooza', 'zooza_video_page_id' ); 65 66 register_setting( 'zooza', 'zooza_checkout_page_id' ); 67 register_setting( 'zooza', 'zooza_map_page_id' ); 66 68 67 69 add_settings_section( … … 72 74 ); 73 75 74 add_settings_section(75 'zooza_section_general',76 __( 'General settings', 'zooza' ),77 array( $this, 'section_general' ),78 'zooza'79 );80 76 81 77 add_settings_section( … … 87 83 88 84 add_settings_field( 89 'zooza_api_key_field', 90 __( 'API kľúč', 'zooza' ), 91 array( $this, 'field_api_key' ), 92 'zooza', 93 'zooza_section_general' 85 'zooza_api_key_field', 86 __( 'API kľúč', 'zooza' ), 87 array( $this, 'field_api_key' ), 88 'zooza', 89 'zooza_section_general' 90 ); 91 add_settings_field( 92 'zooza_api_key_field', 93 __( 'API key', 'zooza' ), 94 array( $this, 'field_api_key' ), 95 'zooza', 96 'zooza_section_general' 94 97 ); 95 98 … … 101 104 'zooza_section_general' 102 105 ); 106 add_settings_field( 107 'zooza_api_url_field', 108 __( 'API URL', 'zooza' ), 109 array( $this, 'field_api_url' ), 110 'zooza', 111 'zooza_section_general' 112 ); 103 113 104 114 add_settings_field( … … 141 151 'zooza_section_widgets' 142 152 ); 153 add_settings_field( 154 'zooza_map_page_id', 155 __( 'Map', 'zooza' ), 156 array( $this, 'field_zooza_map_page_id' ), 157 'zooza', 158 'zooza_section_widgets' 159 ); 143 160 144 161 } 145 162 146 163 function section_general() { 147 var_dump(get_locale());164 // var_dump(get_locale()); 148 165 ?> 149 166 <p><?=__( 'Postup ako získať API kľúč a tajný kľúč:', 'zooza' );?></p> … … 173 190 'video' => get_permalink( get_option( 'zooza_video_page_id' ) ), 174 191 'checkout' => get_permalink( get_option( 'zooza_checkout_page_id' ) ), 192 'map' => get_permalink( get_option( 'zooza_map_page_id' ) ), 175 193 ); 176 194 … … 183 201 184 202 $prefix = ''; 185 $endpoint = sprintf( 'https://api%s.zooza.app/v1%s/applications', $prefix, $prefix ); 203 $api_url = get_option( 'zooza_api_url', 'https://api.zooza.app/' ); 204 $endpoint = sprintf( $api_url . '/v1%s/applications', $prefix ); 186 205 $response = wp_remote_post( $endpoint, $args ); 187 206 … … 192 211 $setting = get_option( 'zooza_registration_page_id' ); 193 212 wp_dropdown_pages(array( 194 'id' => 'zooza_registration_page_id',195 'name' => 'zooza_registration_page_id',196 'selected' => $setting,197 )); 198 199 } 200 213 'id' => 'zooza_registration_page_id', 214 'name' => 'zooza_registration_page_id', 215 'selected' => $setting, 216 )); 217 218 } 219 201 220 public function field_zooza_profile_page_id() { 202 221 … … 231 250 232 251 } 233 252 234 253 public function field_zooza_checkout_page_id() { 235 254 … … 243 262 } 244 263 264 public function field_zooza_map_page_id() { 265 266 $setting = get_option( 'zooza_map_page_id' ); 267 wp_dropdown_pages(array( 268 'id' => 'zooza_map_page_id', 269 'name' => 'zooza_map_page_id', 270 'selected' => $setting, 271 )); 272 273 } 274 245 275 public function field_api_key() { 246 276 … … 260 290 261 291 } 292 public function field_api_url() { 293 $setting = get_option('zooza_api_url' , 'https://api.zooza.app/'); 294 295 $options = array( 296 'https://api.zooza.app' => 'Europe', 297 'https://uk.api.zooza.app' => 'United Kingdom' 298 ); 299 ?> 300 <select name="zooza_api_url"> 301 <?php foreach ($options as $value => $label): ?> 302 <option value="<?php echo esc_attr($value); ?>" <?php selected($setting, $value); ?>> 303 <?php echo esc_html($label); ?> 304 </option> 305 <?php endforeach; ?> 306 </select> 307 <?php 308 } 262 309 263 310 public function admin_menu() { … … 273 320 } 274 321 275 /**276 * Register the stylesheets for the admin area.277 *278 * @since 1.0.0279 */280 public function enqueue_styles() {281 282 /**283 * This function is provided for demonstration purposes only.284 *285 * An instance of this class should be passed to the run() function286 * defined in Zooza_Loader as all of the hooks are defined287 * in that particular class.288 *289 * The Zooza_Loader will then create the relationship290 * between the defined hooks and the functions defined in this291 * class.292 */293 294 wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/zooza-admin.css', array(), $this->version, 'all' );295 296 }297 298 /**299 * Register the JavaScript for the admin area.300 *301 * @since 1.0.0302 */303 public function enqueue_scripts() {304 305 /**306 * This function is provided for demonstration purposes only.307 *308 * An instance of this class should be passed to the run() function309 * defined in Zooza_Loader as all of the hooks are defined310 * in that particular class.311 *312 * The Zooza_Loader will then create the relationship313 * between the defined hooks and the functions defined in this314 * class.315 */316 317 wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/zooza-admin.js', array( 'jquery' ), $this->version, false );318 319 }322 /** 323 * Register the stylesheets for the admin area. 324 * 325 * @since 1.0.0 326 */ 327 public function enqueue_styles() { 328 329 /** 330 * This function is provided for demonstration purposes only. 331 * 332 * An instance of this class should be passed to the run() function 333 * defined in Zooza_Loader as all of the hooks are defined 334 * in that particular class. 335 * 336 * The Zooza_Loader will then create the relationship 337 * between the defined hooks and the functions defined in this 338 * class. 339 */ 340 341 wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/zooza-admin.css', array(), $this->version, 'all' ); 342 343 } 344 345 /** 346 * Register the JavaScript for the admin area. 347 * 348 * @since 1.0.0 349 */ 350 public function enqueue_scripts() { 351 352 /** 353 * This function is provided for demonstration purposes only. 354 * 355 * An instance of this class should be passed to the run() function 356 * defined in Zooza_Loader as all of the hooks are defined 357 * in that particular class. 358 * 359 * The Zooza_Loader will then create the relationship 360 * between the defined hooks and the functions defined in this 361 * class. 362 */ 363 364 wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/zooza-admin.js', array( 'jquery' ), $this->version, false ); 365 366 } 320 367 321 368 } -
zooza/tags/1.1.0/admin/partials/zooza-admin-display.php
r3036912 r3268378 23 23 <?php do_settings_sections( 'zooza' );?> 24 24 <hr/> 25 <?php submit_button( 'Uložiť', 'primary', 'submit' );?>25 <?php submit_button( __('Uložiť', 'zooza'), 'primary', 'submit' );?> 26 26 </form> 27 27 </div> -
zooza/tags/1.1.0/includes/class-zooza-activator.php
r3001670 r3268378 39 39 add_option( 'zooza_video_page_id', '' ); 40 40 add_option( 'zooza_checkout_page_id', '' ); 41 add_option( 'zooza_calendar_map_id', '' ); 41 42 42 43 } -
zooza/tags/1.1.0/includes/class-zooza-deactivator.php
r3001670 r3268378 39 39 delete_option( 'zooza_video_page_id' ); 40 40 delete_option( 'zooza_checkout_page_id' ); 41 delete_option( 'zooza_map_page_id' ); 41 42 42 43 } -
zooza/tags/1.1.0/includes/class-zooza.php
r3140565 r3268378 23 23 * version of the plugin. 24 24 * 25 * @since 1. 0.925 * @since 1.1.0 26 26 * @package Zooza 27 27 * @subpackage Zooza/includes … … 52 52 * The current version of the plugin. 53 53 * 54 * @since 1. 0.954 * @since 1.1.0 55 55 * @access protected 56 56 * @var string $version The current version of the plugin. … … 71 71 $this->version = ZOOZA_VERSION; 72 72 } else { 73 $this->version = '1. 0.9';73 $this->version = '1.1.0'; 74 74 } 75 75 $this->plugin_name = 'zooza'; -
zooza/tags/1.1.0/languages/zooza-en_US.po
r3140354 r3268378 5 5 "Content-Transfer-Encoding: 8bit\n" 6 6 "X-Generator: POEditor.com\n" 7 "X-Domain: zooza\n" 7 8 "Project-Id-Version: WP Plugin\n" 8 9 "Language: en\n" 9 10 10 11 #: 11 msgid "General settings"12 msgid "General Settings" 12 13 msgstr "General Settings" 13 14 15 #. Plugin Name of the plugin 16 #. Author of the plugin 17 #: zooza.php admin/partials/zooza-admin-display.php:18 18 msgid "Zooza" 19 msgstr "Zooza" 20 21 #. Plugin URI of the plugin 22 #: zooza.php 23 msgid "https://zooza.online/wordpress-plugin" 24 msgstr "https://zooza.online/wordpress-plugin" 25 26 #. Description of the plugin 27 #: zooza.php 28 msgid "Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov." 29 msgstr "Plugin for Zooza platform customers for easy setup of registration forms." 30 31 #. Author URI of the plugin 32 #: zooza.php 33 msgid "https://zooza.online" 34 msgstr "https://zooza.online" 35 36 #: admin/class-zooza-admin.php:70 37 msgid "Všeobecné nastavenia" 38 msgstr "General Settings" 39 40 #: admin/class-zooza-admin.php:84 41 msgid "Registračné formuláre" 42 msgstr "Registration form" 43 44 #: admin/class-zooza-admin.php:91 45 msgid "API kľúč" 46 msgstr "Api key" 47 48 #: admin/class-zooza-admin.php:98 49 msgid "API key" 50 msgstr "Api key" 51 52 #: admin/class-zooza-admin.php:106 53 msgid "Tajný kľúč" 54 msgstr "Secret key" 55 56 #: admin/class-zooza-admin.php:114 57 msgid "Registračný formulár" 58 msgstr "Registration form" 59 60 #: admin/class-zooza-admin.php:122 61 msgid "Kalendár" 62 msgstr "Calendar" 63 64 #: admin/class-zooza-admin.php:130 65 msgid "Zákaznícky profil" 66 msgstr "Profile" 67 68 #: admin/class-zooza-admin.php:138 69 msgid "Videá" 70 msgstr "Video" 71 72 #: admin/class-zooza-admin.php:146 73 msgid "Objednávkový formulár" 74 msgstr "Checkout" 75 76 #: admin/class-zooza-admin.php:153 77 msgid "Map" 78 msgstr "Map" 79 80 #: admin/class-zooza-admin.php:164 81 msgid "Postup ako získať API kľúč a tajný kľúč:" 82 msgstr "How to get the API key and secret key:" 83 84 #: admin/class-zooza-admin.php:165 85 msgid "<ol><li><a href=\"https://app.zooza.app/\" target=\"_blank\">Prihláste sa</a> do aplikácie Zooza.</li><li>Navštívte stránku nastavení - <a href=\"https://app.zooza.app/#settings/widgets\">Registračné formuláre</a></li><li>Skopírujte si váš API kľúč a tajný kľúč.</li></ol>" 86 msgstr "<ol><li><a href=\"https://zooza.app/\" target=\"_blank\">Login to</a> Zooza app.</li><li>Go to publish - <a href=\"https://zooza.app/#widgets\">Wordpress</a></li><li>Copy your Api key and Secret key </li></ol>" 87 88 #: admin/class-zooza-admin.php:175 89 msgid "Vyberte stránky, na ktorých chcete mať umiestnené registračné formuláre. Samotný formulár bude automaticky vložený na koniec stránky." 90 msgstr "Select the pages where you want the registration forms to be placed. The form itself will automatically be inserted at the bottom of the page." 91 92 #: admin/partials/zooza-admin-display.php:25 93 msgid "Uložiť" 94 msgstr "Save" 95 -
zooza/tags/1.1.0/languages/zooza-sk_SK.po
r3140354 r3268378 5 5 "Content-Transfer-Encoding: 8bit\n" 6 6 "X-Generator: POEditor.com\n" 7 "X-Domain: zooza\n" 7 8 "Project-Id-Version: WP Plugin\n" 8 9 "Language: sk\n" 9 10 10 11 #: 11 msgid "General settings"12 msgid "General Settings" 12 13 msgstr "Všeobecné nastavenia" 13 14 15 #. Plugin Name of the plugin 16 #. Author of the plugin 17 #: zooza.php admin/partials/zooza-admin-display.php:18 18 msgid "Zooza" 19 msgstr "Zooza" 20 21 #. Plugin URI of the plugin 22 #: zooza.php 23 msgid "https://zooza.online/wordpress-plugin" 24 msgstr "https://zooza.online/wordpress-plugin" 25 26 #. Description of the plugin 27 #: zooza.php 28 msgid "Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov." 29 msgstr "Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov." 30 31 #. Author URI of the plugin 32 #: zooza.php 33 msgid "https://zooza.online" 34 msgstr "https://zooza.online" 35 36 #: admin/class-zooza-admin.php:70 37 msgid "Všeobecné nastavenia" 38 msgstr "Všeobecné nastavenia" 39 40 #: admin/class-zooza-admin.php:84 41 msgid "Registračné formuláre" 42 msgstr "Registračné formuláre" 43 44 #: admin/class-zooza-admin.php:91 45 msgid "API kľúč" 46 msgstr "API kľúč" 47 48 #: admin/class-zooza-admin.php:98 49 msgid "API key" 50 msgstr "API kľúč" 51 52 #: admin/class-zooza-admin.php:106 53 msgid "Tajný kľúč" 54 msgstr "Tajný kľúč" 55 56 #: admin/class-zooza-admin.php:114 57 msgid "Registračný formulár" 58 msgstr "Registračný formulár" 59 60 #: admin/class-zooza-admin.php:122 61 msgid "Kalendár" 62 msgstr "Kalendár" 63 64 #: admin/class-zooza-admin.php:130 65 msgid "Zákaznícky profil" 66 msgstr "Zákaznícky profil" 67 68 #: admin/class-zooza-admin.php:138 69 msgid "Videá" 70 msgstr "Videá" 71 72 #: admin/class-zooza-admin.php:146 73 msgid "Objednávkový formulár" 74 msgstr "Objednávkový formulár" 75 76 #: admin/class-zooza-admin.php:153 77 msgid "Map" 78 msgstr "Mapa" 79 80 #: admin/class-zooza-admin.php:164 81 msgid "Postup ako získať API kľúč a tajný kľúč:" 82 msgstr "Postup ako získať API kľúč a tajný kľúč:" 83 84 #: admin/class-zooza-admin.php:165 85 msgid "<ol><li><a href=\"https://app.zooza.app/\" target=\"_blank\">Prihláste sa</a> do aplikácie Zooza.</li><li>Navštívte stránku nastavení - <a href=\"https://app.zooza.app/#settings/widgets\">Registračné formuláre</a></li><li>Skopírujte si váš API kľúč a tajný kľúč.</li></ol>" 86 msgstr "<ol><li><a href=\"https://zooza.app/\" target=\"_blank\">Prihláste sa</a> do aplikácie Zooza.</li><li>Navštívte stránku nastavení - <a href=\"https://zooza.app/#widgets\">Registračné formuláre</a></li><li>Skopírujte si váš API kľúč a tajný kľúč.</li></ol>" 87 88 #: admin/class-zooza-admin.php:175 89 msgid "Vyberte stránky, na ktorých chcete mať umiestnené registračné formuláre. Samotný formulár bude automaticky vložený na koniec stránky." 90 msgstr "Vyberte stránky, na ktorých chcete mať umiestnené registračné formuláre. Samotný formulár bude automaticky vložený na koniec stránky." 91 92 #: admin/partials/zooza-admin-display.php:25 93 msgid "Uložiť" 94 msgstr "Uložiť" 95 -
zooza/tags/1.1.0/languages/zooza.pot
r3140354 r3268378 5 5 "Content-Transfer-Encoding: 8bit\n" 6 6 "X-Generator: POEditor.com\n" 7 "X-Domain: zooza\n" 7 8 "Project-Id-Version: WP Plugin\n" 8 "Language: en\n"9 "Language: sk\n" 9 10 10 11 #: 11 msgid "General settings"12 msgid "General Settings" 12 13 msgstr "" 13 14 15 #. Plugin Name of the plugin 16 #. Author of the plugin 17 #: zooza.php admin/partials/zooza-admin-display.php:18 18 msgid "Zooza" 19 msgstr "" 20 21 #. Plugin URI of the plugin 22 #: zooza.php 23 msgid "https://zooza.online/wordpress-plugin" 24 msgstr "" 25 26 #. Description of the plugin 27 #: zooza.php 28 msgid "Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov." 29 msgstr "" 30 31 #. Author URI of the plugin 32 #: zooza.php 33 msgid "https://zooza.online" 34 msgstr "" 35 36 #: admin/class-zooza-admin.php:70 37 msgid "Všeobecné nastavenia" 38 msgstr "" 39 40 #: admin/class-zooza-admin.php:84 41 msgid "Registračné formuláre" 42 msgstr "" 43 44 #: admin/class-zooza-admin.php:91 45 msgid "API kľúč" 46 msgstr "" 47 48 #: admin/class-zooza-admin.php:98 49 msgid "API key" 50 msgstr "" 51 52 #: admin/class-zooza-admin.php:106 53 msgid "Tajný kľúč" 54 msgstr "" 55 56 #: admin/class-zooza-admin.php:114 57 msgid "Registračný formulár" 58 msgstr "" 59 60 #: admin/class-zooza-admin.php:122 61 msgid "Kalendár" 62 msgstr "" 63 64 #: admin/class-zooza-admin.php:130 65 msgid "Zákaznícky profil" 66 msgstr "" 67 68 #: admin/class-zooza-admin.php:138 69 msgid "Videá" 70 msgstr "" 71 72 #: admin/class-zooza-admin.php:146 73 msgid "Objednávkový formulár" 74 msgstr "" 75 76 #: admin/class-zooza-admin.php:153 77 msgid "Map" 78 msgstr "" 79 80 #: admin/class-zooza-admin.php:164 81 msgid "Postup ako získať API kľúč a tajný kľúč:" 82 msgstr "" 83 84 #: admin/class-zooza-admin.php:165 85 msgid "<ol><li><a href=\"https://app.zooza.app/\" target=\"_blank\">Prihláste sa</a> do aplikácie Zooza.</li><li>Navštívte stránku nastavení - <a href=\"https://app.zooza.app/#settings/widgets\">Registračné formuláre</a></li><li>Skopírujte si váš API kľúč a tajný kľúč.</li></ol>" 86 msgstr "" 87 88 #: admin/class-zooza-admin.php:175 89 msgid "Vyberte stránky, na ktorých chcete mať umiestnené registračné formuláre. Samotný formulár bude automaticky vložený na koniec stránky." 90 msgstr "" 91 92 #: admin/partials/zooza-admin-display.php:25 93 msgid "Uložiť" 94 msgstr "" 95 -
zooza/tags/1.1.0/public/class-zooza-public.php
r3140565 r3268378 1 1 <?php 2 if ( ! defined( 'ABSPATH' )) exit;2 if (!defined('ABSPATH')) exit; 3 3 /** 4 4 * The public-facing functionality of the plugin. … … 21 21 * @author Zooza <hello@zooza.sk> 22 22 */ 23 class Zooza_Public { 24 25 /** 26 * The ID of this plugin. 27 * 28 * @since 1.0.0 29 * @access private 30 * @var string $plugin_name The ID of this plugin. 31 */ 32 private $plugin_name; 33 34 /** 35 * The version of this plugin. 36 * 37 * @since 1.0.9 38 * @access private 39 * @var string $version The current version of this plugin. 40 */ 41 private $version; 42 43 /** 44 * Initialize the class and set its properties. 45 * 46 * @since 1.0.0 47 * @param string $plugin_name The name of the plugin. 48 * @param string $version The version of this plugin. 49 */ 50 public function __construct( $plugin_name, $version ) { 51 52 $this->plugin_name = $plugin_name; 53 $this->version = $version; 54 55 } 56 57 public function the_content( $content ) { 58 59 if ( ! is_main_query() ) { 23 class Zooza_Public 24 { 25 26 /** 27 * The ID of this plugin. 28 * 29 * @since 1.0.0 30 * @access private 31 * @var string $plugin_name The ID of this plugin. 32 */ 33 private $plugin_name; 34 35 /** 36 * The version of this plugin. 37 * 38 * @since 1.1.0 39 * @access private 40 * @var string $version The current version of this plugin. 41 */ 42 private $version; 43 44 /** 45 * Initialize the class and set its properties. 46 * 47 * @param string $plugin_name The name of the plugin. 48 * @param string $version The version of this plugin. 49 * @since 1.0.0 50 */ 51 public function __construct($plugin_name, $version) 52 { 53 54 $this->plugin_name = $plugin_name; 55 $this->version = $version; 56 add_action('init', array($this, 'register_shortcodes')); 57 58 } 59 60 public function the_content($content) 61 { 62 63 if (!is_main_query()) { 60 64 return $content; 61 65 } 62 66 63 $api_key = get_option( 'zooza_api_key', false ); 64 65 if( !$api_key ) { 67 68 $api_key = get_option('zooza_api_key', false); 69 70 if (!$api_key) { 66 71 return $content; 67 72 } … … 69 74 $ID = get_the_ID(); 70 75 71 if ( is_null( $ID ) ){76 if (is_null($ID)) { 72 77 return $content; 73 78 } 74 79 75 80 $widgets = array( 76 'registration_new' => get_option( 'zooza_registration_page_id' ), 77 'profile' => get_option( 'zooza_profile_page_id' ), 78 'calendar' => get_option( 'zooza_calendar_page_id' ), 79 'video' => get_option( 'zooza_video_page_id' ), 80 'checkout' => get_option( 'zooza_checkout_page_id' ), 81 'registration_new' => get_option('zooza_registration_page_id'), 82 'profile' => get_option('zooza_profile_page_id'), 83 'calendar' => get_option('zooza_calendar_page_id'), 84 'video' => get_option('zooza_video_page_id'), 85 'checkout' => get_option('zooza_checkout_page_id'), 86 'map' => get_option('zooza_map_page_id'), 81 87 ); 82 88 83 foreach ( $widgets as $widget => $page_id ){84 85 if ( $page_id == $ID ){86 87 return $content . $this->get_code( $widget, $api_key);89 foreach ($widgets as $widget => $page_id) { 90 91 if ($page_id == $ID) { 92 93 return $content . $this->get_code($widget, $api_key); 88 94 89 95 } … … 95 101 } 96 102 97 private function get_code( $widget, $api_key ) { 103 private function get_code($widget, $api_key) 104 { 98 105 99 106 $version = 'v1'; 100 107 101 $v2 = array( 'calendar', 'video', 'checkout');102 103 if ( in_array( $widget, $v2 ) ){108 $v2 = array('calendar', 'video', 'checkout', 'map'); 109 110 if (in_array($widget, $v2)) { 104 111 $version = 'v2'; 105 112 } 106 107 return sprintf( "<script data-embedded_by='zoozawp' data-version='%s' data-widget-id='zooza' id='%s' type='text/javascript'> 113 $api_url = get_option('zooza_api_url'); 114 115 return sprintf("<script data-embedded_by='zoozawp' data-version='%s' data-widget-id='zooza' id='%s' type='text/javascript'> 108 116 ( function() { 109 117 function async_load(){ 110 118 var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; 111 var url = ' https://api.zooza.app/widgets/%s/';119 var url = '%s/widgets/%s/'; 112 120 s.src = url + ( url.indexOf( '?' ) >= 0 ? '&' : '?' ) + 'ref=' + encodeURIComponent( window.location.href ) + '&type=%s'; 113 121 var embedder = document.getElementById( '%s' ); … … 120 128 } 121 129 } )(); 122 </script>", $version, $api_key, $version, $widget, $api_key ); 123 124 } 125 126 /** 127 * Register the stylesheets for the public-facing side of the site. 128 * 129 * @since 1.0.0 130 */ 131 public function enqueue_styles() { 132 133 /** 134 * This function is provided for demonstration purposes only. 135 * 136 * An instance of this class should be passed to the run() function 137 * defined in Zooza_Loader as all of the hooks are defined 138 * in that particular class. 139 * 140 * The Zooza_Loader will then create the relationship 141 * between the defined hooks and the functions defined in this 142 * class. 143 */ 144 145 wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/zooza-public.css', array(), $this->version, 'all' ); 146 147 } 148 149 /** 150 * Register the JavaScript for the public-facing side of the site. 151 * 152 * @since 1.0.0 153 */ 154 public function enqueue_scripts() { 155 156 /** 157 * This function is provided for demonstration purposes only. 158 * 159 * An instance of this class should be passed to the run() function 160 * defined in Zooza_Loader as all of the hooks are defined 161 * in that particular class. 162 * 163 * The Zooza_Loader will then create the relationship 164 * between the defined hooks and the functions defined in this 165 * class. 166 */ 167 168 wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/zooza-public.js', array( 'jquery' ), $this->version, false ); 169 170 } 130 </script>", $version, $api_key, $version, $api_url,$widget, $api_key); 131 132 } 133 134 /** 135 * Register the stylesheets for the public-facing side of the site. 136 * 137 * @since 1.0.0 138 */ 139 public function enqueue_styles() 140 { 141 142 /** 143 * This function is provided for demonstration purposes only. 144 * 145 * An instance of this class should be passed to the run() function 146 * defined in Zooza_Loader as all of the hooks are defined 147 * in that particular class. 148 * 149 * The Zooza_Loader will then create the relationship 150 * between the defined hooks and the functions defined in this 151 * class. 152 */ 153 154 wp_enqueue_style($this->plugin_name, plugin_dir_url(__FILE__) . 'css/zooza-public.css', array(), $this->version, 'all'); 155 156 } 157 158 /** 159 * Register the JavaScript for the public-facing side of the site. 160 * 161 * @since 1.0.0 162 */ 163 public function enqueue_scripts() 164 { 165 166 /** 167 * This function is provided for demonstration purposes only. 168 * 169 * An instance of this class should be passed to the run() function 170 * defined in Zooza_Loader as all of the hooks are defined 171 * in that particular class. 172 * 173 * The Zooza_Loader will then create the relationship 174 * between the defined hooks and the functions defined in this 175 * class. 176 */ 177 178 wp_enqueue_script($this->plugin_name, plugin_dir_url(__FILE__) . 'js/zooza-public.js', array('jquery'), $this->version, false); 179 180 } 181 182 public function register_shortcodes() 183 { 184 add_shortcode('zooza', array($this, 'render_shortcode')); 185 } 186 187 public function render_shortcode( $atts ) { 188 $atts = shortcode_atts( 189 array( 190 'type' => 'registration_new', 191 'multistep' => 'false', 192 'filter_courses' => '', 193 'filter_places' => '', 194 'age_range' => '', 195 'api_key' => '', 196 ), 197 $atts, 198 'zooza' 199 ); 200 201 $multistep = $atts['multistep'] === 'true' ? 'true' : 'false'; 202 $shortcode_api_key = $atts['api_key']; 203 204 $courses = array_filter( array_map( 'trim', explode( '|', $atts['filter_courses'] ) ) ); 205 $places = array_filter( array_map( 'trim', explode( '|', $atts['filter_places'] ) ) ); 206 207 $courses_js = json_encode( array_map( 'intval', $courses ) ); 208 $places_js = json_encode( array_map( 'intval', $places ) ); 209 210 $age_range = []; 211 212 if ( $atts['age_range'] ) { 213 $items = array_filter( array_map( 'trim', explode( '|', $atts['age_range'] ) ) ); 214 215 foreach ( $items as $item ) { 216 if ( preg_match( '/(\d+)([my])-(\d+)([my])/', $item, $matches ) ) { 217 $from = ( $matches[2] === 'y' ) ? (int)$matches[1] * 12 : (int)$matches[1]; 218 $to = ( $matches[4] === 'y' ) ? (int)$matches[3] * 12 : (int)$matches[3]; 219 $age_range[] = [ 220 'value' => "{$from}-{$to}", 221 'label' => $item 222 ]; 223 } 224 } 225 } 226 227 $age_range_js = json_encode( $age_range ); 228 229 $widget = $atts['type']; 230 $widget_id = get_option('zooza_api_key'); 231 if($shortcode_api_key){ 232 $widget_id = $shortcode_api_key; 233 } 234 $version = in_array($widget, array('calendar', 'video', 'checkout', 'map')) ? 'v2' : 'v1'; 235 $api_url = get_option('zooza_api_url', 'https://api.zooza.app' ); 236 ob_start(); 237 ?> 238 <script type="text/javascript"> 239 window.ZOOZA = { 240 multi_step_form: <?php echo $multistep; ?>, 241 242 }; 243 document.zooza = { 244 filter_courses: <?php echo $courses_js; ?>, 245 filter_places: <?php echo $places_js; ?>, 246 age_range: <?php echo $age_range_js; ?> 247 }; 248 </script> 249 250 <script data-version="<?php echo esc_attr($version); ?>" data-widget-id="zooza" id="<?php echo esc_attr($widget_id); ?>" type="text/javascript"> 251 (function() { 252 function async_load(){ 253 document.body.setAttribute('data-zooza-api-url', "<?php echo$api_url;?>"); 254 var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; 255 s.src = document.body.getAttribute('data-zooza-api-url') + 256 '/widgets/<?php echo esc_attr($version); ?>/?type=<?php echo esc_attr($widget); ?>&ref=' + encodeURIComponent(window.location.href); 257 var embedder = document.getElementById('<?php echo esc_attr($widget_id); ?>'); 258 embedder.parentNode.insertBefore(s, embedder); 259 } 260 if (window.attachEvent) { 261 window.attachEvent('onload', async_load); 262 } else { 263 window.addEventListener('load', async_load, false); 264 } 265 })(); 266 </script> 267 <?php 268 return ob_get_clean(); 269 } 171 270 172 271 } 272 -
zooza/tags/1.1.0/zooza.php
r3140565 r3268378 17 17 * Plugin URI: https://zooza.online/wordpress-plugin 18 18 * Description: Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov. 19 * Version: 1. 0.919 * Version: 1.1.0 20 20 * Author: Zooza 21 21 * Author URI: https://zooza.online … … 36 36 * Rename this for your plugin and update it as you release new versions. 37 37 */ 38 define( 'ZOOZA_VERSION', '1. 0.9' );38 define( 'ZOOZA_VERSION', '1.1.0' ); 39 39 40 40 /** -
zooza/trunk/README.txt
r3140565 r3268378 2 2 Contributors: zooza 3 3 Donate link: https://zooza.online 4 Tags: zooza, widgets4 Tags: booking, class booking, kids activities, course registration, parent portal, student portal, afterschool, management,zooza, widgets, class booking, education, franchise, children, kids classes, activities, calendar, booking system, attendance, scheduling, event management, registration 5 5 Requires at least: 3.0.1 6 6 Tested up to: 6.5.0 7 Stable tag: 1. 0.97 Stable tag: 1.1.0 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html 10 10 11 This plugin enables integration of Zooza widgets to your website. Existing Zooza account is required for this plugin to work.11 This plugin enables integration of Zooza widgets to your website. An existing Zooza account is required for this plugin to work. 12 12 13 13 == Description == 14 14 15 Simple integration of Zooza widgets for your website. 16 17 Supported widgets: 18 19 * "Registration" used for registering new clients to courses 20 * "Profle" displays user's profile 21 * "Calendar" displays your courses and events in calendar form 22 * "Video" displays purchased videos 23 * "Checkout" provides checkout form for purchasing products 24 25 The widgets will be shown below the main content of selected pages. Plugin will also synchronize URL's of selected widget pages back to Zooza. 15 **Zooza: All-in-One Class Booking, Registration, and Payment Plugin for Kids' Activities, Afterschool Clubs, and Franchises** 16 17 Looking for an all-in-one solution to manage your kids' classes, afterschool activities, or franchise operations? Zooza's WordPress plugin makes it easier than ever to embed powerful booking, registration, scheduling, and payment tools directly into your website—no code required. 18 19 Whether you're a local children’s activity provider, a growing franchise, or a school offering in-person extracurricular courses, Zooza gives you everything you need to manage registrations, attendance, client communications, and payments—all in one place. 20 21 == What Is Zooza? == 22 23 Zooza is a modern SaaS platform designed for in-person class and activity providers who work with children. From dance and football classes to coding camps, tutoring programs, or language courses, Zooza helps you scale your operations with ease. 24 25 Our WordPress plugin brings the core power of Zooza directly into your site. You can embed fully responsive and interactive components, including: 26 27 - Booking Calendar 28 - Registration Form 29 - Client/Parent Zone 30 - Customizable Checkout Forms 31 - Google Map for Locations 32 33 All embeddable with simple shortcodes. 34 35 == Who Is It For? == 36 37 Zooza is trusted by: 38 39 - Afterschool activity providers 40 - Kids’ class businesses (e.g., dance, sports, music, art, STEM) 41 - Education franchises 42 - Day camps and seasonal programs 43 - Tutoring and enrichment centers 44 - Language schools 45 - New or growing franchises looking for scalable booking infrastructure 46 47 Whether you're starting your business or expanding across multiple locations, Zooza grows with you. 48 49 == Core Features == 50 51 ✅ **Class Booking System** 52 Embed a booking calendar for single or recurring sessions. Parents can view schedules, choose time slots, and book instantly. 53 54 ✅ **Online Registration Forms** 55 Custom registration forms that match your brand and collect the exact information you need. 56 57 ✅ **Client & Parent Zone** 58 Give parents access to view their bookings, manage payments, track attendance, and reschedule if needed. 59 60 ✅ **Automated Reminders & Communication** 61 Send SMS/email reminders, confirmations, and attendance updates to parents automatically. 62 63 ✅ **Integrated Payments** 64 Collect payments upfront or per session with Stripe, card, or bank transfer options. Setup recurring invoices for term-based classes. 65 66 ✅ **Attendance Management** 67 Track attendance with ease—let instructors mark present/absent and keep parents updated. 68 69 ✅ **Reporting & Insights** 70 Track income, registration trends, class occupancy, and more—all in one place. 71 72 ✅ **Multi-location & Multi-instructor Ready** 73 Manage classes across different branches or cities with tailored views and permissions. 74 75 == Smart Embeds for Your Website (No Coding Required) == 76 77 Use shortcodes to embed the following into your website: 78 79 80 `[zooza type=calendar]` – Embed a full class booking calendar 81 `[zooza type=registration]` – Display a branded registration form 82 `[zooza type=map]` – Show a map of your class locations 83 `[zooza type=checkout]` – Provide a custom checkout experience 84 `[zooza type=profile]` – Give parents access to their bookings 85 `[zooza type=video]` – Preview lessons or informational videos 86 87 Every element is mobile-friendly, fast-loading, and styled to match your branding. 88 89 90 == Why Zooza? == 91 92 Most plugins only do one thing: booking, attendance, or payments. Zooza does it all. 93 94 It’s more than just a WordPress plugin—it’s your operations dashboard. Built specifically for in-person children’s classes, Zooza understands the unique needs of this industry: recurring schedules, parent communication, one-time events, attendance reporting, and group management. 95 96 == SEO Keyword-Optimized Use Cases == 97 98 Zooza is ideal if you’re searching for: 99 100 - "class booking plugin for kids" 101 - "wordpress plugin for afterschool classes" 102 - "manage course registration wordpress" 103 - "child activity scheduling system" 104 - "parent booking system for clubs" 105 - "attendance tracker for group classes" 106 - "payment plugin for children’s activities" 107 - "wordpress calendar for kids events" 108 - "plugin for tutoring registration" 109 - "kids class management system" 110 - "course booking and payments plugin" 111 - "franchise class management software" 112 - "all-in-one registration and attendance tool" 113 114 If you typed any of those into Google—you just found your answer. 115 116 == More Than a Plugin: The Zooza Platform == 117 118 Want to go even further? Zooza’s full SaaS platform gives you access to: 119 120 - Multi-language interface & localization 121 - Customized admin dashboards for staff & instructors 122 - GDPR-compliant data handling 123 - API & integration options 124 - Franchise dashboards and royalty tracking 125 - Bulk import of client data 126 - Marketing tools & lead tracking 127 128 You can learn more about the full Zooza platform here: https://zooza.online 129 130 == Get Started == 131 132 Install the plugin, connect your Zooza account, and embed your tools in minutes. You can manage everything from your Zooza dashboard while giving your website visitors a seamless booking and registration experience. 133 134 Join hundreds of businesses and franchises across Europe who trust Zooza to manage their operations and grow with confidence. 135 136 Website: https://zooza.online 137 Support: support@zooza.online 138 139 **Zooza – Built for the Chaos of Kids' Activities. Trusted by the Calm in It.** 26 140 27 141 == Installation == 28 142 29 1. Upload `zooza.php` to the `/wp-content/plugins/` directory 30 2. Activate the plugin through the 'Plugins' menu in WordPress 31 3. Setup widgets in 'Main Settings ' > 'Zooza' 143 1. In your WordPress admin dashboard, go to **Plugins > Add New**. 144 2. Search for **Zooza**, then click **Install Now** and **Activate**. 145 3. After activation, go to **Settings > Zooza**. 146 4. Paste your **Zooza API key** (available in your Zooza account). 147 5. Choose where you'd like the widgets to appear (which page). 148 6. Save your settings and you're done! 149 150 Alternatively, you can use shortcodes to place widgets anywhere on your site: 151 152 - `[zooza type=calendar]` 153 - `[zooza type=registration]` 154 - `[zooza type=map]` 155 - `[zooza type=checkout]` 156 - `[zooza type=profile]` 157 - `[zooza type=video]` 158 159 == Screenshots == 160 161 1. **Booking Calendar Embed** 162 Display a fully responsive class booking calendar integrated seamlessly into your website. 163 164 2. **Registration Form** 165 A branded registration form embedded on your page to collect user information easily. 166 167 3. **Parent/Client Zone** 168 A screenshot of the client zone where parents can manage their bookings, view attendance, and reschedule if needed. 169 170 4. **Checkout Form** 171 Fully customizable checkout form for streamlined payment collection. 172 173 5. **Google Map of Class Locations** 174 A map showcasing your class locations for ease of navigation. 175 176 6. **Zooza Settings Page** 177 Settings page in WordPress to configure API key and adjust widget settings. 178 179 7. **Instructor Dashboard** *(Optional)* 180 Showcase the dashboard used by instructors to mark attendance and view class details. 32 181 33 182 == Changelog == … … 37 186 38 187 = 1.0.2 = 39 * Fixed loading of Calendar, Video and Checkout widgets188 * Fixed loading of Calendar, Video, and Checkout widgets 40 189 41 190 = 1.0.3 = … … 46 195 47 196 = 1.0.5 = 48 * Migrat ingto zooza.app197 * Migrated to zooza.app 49 198 50 199 = 1.0.6 = 51 * Fix administration exception200 * Fixed administration exception 52 201 53 202 = 1.0.7 = 54 * Fix remaining administration exception203 * Fixed remaining administration exception 55 204 56 205 = 1.0.9 = 57 206 * Transition to new API endpoints 58 207 59 = 1.0.9 = 60 * Transition to new API endpoints 61 208 = 1.1.0 = 209 * Added Map widget 210 * Introduced multi-language support 211 * Added shortcode support for flexible widget placement and customization -
zooza/trunk/admin/class-zooza-admin.php
r3140565 r3268378 23 23 class Zooza_Admin { 24 24 25 /**26 * The ID of this plugin.27 *28 * @since 1.0.029 * @access private30 * @var string $plugin_name The ID of this plugin.31 */32 private $plugin_name;33 34 /**35 * The version of this plugin.36 *37 * @since 1.0.9 38 * @access private39 * @var string $version The current version of this plugin.40 */41 private $version;42 43 /**44 * Initialize the class and set its properties.45 *46 * @since 1.0.047 * @param string $plugin_name The name of this plugin.48 * @param string $version The version of this plugin.49 */50 public function __construct( $plugin_name, $version ) {51 52 $this->plugin_name = $plugin_name;53 $this->version = $version;54 55 }25 /** 26 * The ID of this plugin. 27 * 28 * @since 1.0.0 29 * @access private 30 * @var string $plugin_name The ID of this plugin. 31 */ 32 private $plugin_name; 33 34 /** 35 * The version of this plugin. 36 * 37 * @since 1.1.0 38 * @access private 39 * @var string $version The current version of this plugin. 40 */ 41 private $version; 42 43 /** 44 * Initialize the class and set its properties. 45 * 46 * @since 1.0.0 47 * @param string $plugin_name The name of this plugin. 48 * @param string $version The version of this plugin. 49 */ 50 public function __construct( $plugin_name, $version ) { 51 52 $this->plugin_name = $plugin_name; 53 $this->version = $version; 54 55 } 56 56 57 57 public function admin_init() { … … 59 59 register_setting( 'zooza', 'zooza_api_key' ); 60 60 register_setting( 'zooza', 'zooza_client_secret' ); 61 register_setting( 'zooza', 'zooza_api_url' ); 61 62 register_setting( 'zooza', 'zooza_registration_page_id' ); 62 63 register_setting( 'zooza', 'zooza_profile_page_id' ); … … 64 65 register_setting( 'zooza', 'zooza_video_page_id' ); 65 66 register_setting( 'zooza', 'zooza_checkout_page_id' ); 67 register_setting( 'zooza', 'zooza_map_page_id' ); 66 68 67 69 add_settings_section( … … 72 74 ); 73 75 74 add_settings_section(75 'zooza_section_general',76 __( 'General settings', 'zooza' ),77 array( $this, 'section_general' ),78 'zooza'79 );80 76 81 77 add_settings_section( … … 87 83 88 84 add_settings_field( 89 'zooza_api_key_field', 90 __( 'API kľúč', 'zooza' ), 91 array( $this, 'field_api_key' ), 92 'zooza', 93 'zooza_section_general' 85 'zooza_api_key_field', 86 __( 'API kľúč', 'zooza' ), 87 array( $this, 'field_api_key' ), 88 'zooza', 89 'zooza_section_general' 90 ); 91 add_settings_field( 92 'zooza_api_key_field', 93 __( 'API key', 'zooza' ), 94 array( $this, 'field_api_key' ), 95 'zooza', 96 'zooza_section_general' 94 97 ); 95 98 … … 101 104 'zooza_section_general' 102 105 ); 106 add_settings_field( 107 'zooza_api_url_field', 108 __( 'API URL', 'zooza' ), 109 array( $this, 'field_api_url' ), 110 'zooza', 111 'zooza_section_general' 112 ); 103 113 104 114 add_settings_field( … … 141 151 'zooza_section_widgets' 142 152 ); 153 add_settings_field( 154 'zooza_map_page_id', 155 __( 'Map', 'zooza' ), 156 array( $this, 'field_zooza_map_page_id' ), 157 'zooza', 158 'zooza_section_widgets' 159 ); 143 160 144 161 } 145 162 146 163 function section_general() { 147 var_dump(get_locale());164 // var_dump(get_locale()); 148 165 ?> 149 166 <p><?=__( 'Postup ako získať API kľúč a tajný kľúč:', 'zooza' );?></p> … … 173 190 'video' => get_permalink( get_option( 'zooza_video_page_id' ) ), 174 191 'checkout' => get_permalink( get_option( 'zooza_checkout_page_id' ) ), 192 'map' => get_permalink( get_option( 'zooza_map_page_id' ) ), 175 193 ); 176 194 … … 183 201 184 202 $prefix = ''; 185 $endpoint = sprintf( 'https://api%s.zooza.app/v1%s/applications', $prefix, $prefix ); 203 $api_url = get_option( 'zooza_api_url', 'https://api.zooza.app/' ); 204 $endpoint = sprintf( $api_url . '/v1%s/applications', $prefix ); 186 205 $response = wp_remote_post( $endpoint, $args ); 187 206 … … 192 211 $setting = get_option( 'zooza_registration_page_id' ); 193 212 wp_dropdown_pages(array( 194 'id' => 'zooza_registration_page_id',195 'name' => 'zooza_registration_page_id',196 'selected' => $setting,197 )); 198 199 } 200 213 'id' => 'zooza_registration_page_id', 214 'name' => 'zooza_registration_page_id', 215 'selected' => $setting, 216 )); 217 218 } 219 201 220 public function field_zooza_profile_page_id() { 202 221 … … 231 250 232 251 } 233 252 234 253 public function field_zooza_checkout_page_id() { 235 254 … … 243 262 } 244 263 264 public function field_zooza_map_page_id() { 265 266 $setting = get_option( 'zooza_map_page_id' ); 267 wp_dropdown_pages(array( 268 'id' => 'zooza_map_page_id', 269 'name' => 'zooza_map_page_id', 270 'selected' => $setting, 271 )); 272 273 } 274 245 275 public function field_api_key() { 246 276 … … 260 290 261 291 } 292 public function field_api_url() { 293 $setting = get_option('zooza_api_url' , 'https://api.zooza.app/'); 294 295 $options = array( 296 'https://api.zooza.app' => 'Europe', 297 'https://uk.api.zooza.app' => 'United Kingdom' 298 ); 299 ?> 300 <select name="zooza_api_url"> 301 <?php foreach ($options as $value => $label): ?> 302 <option value="<?php echo esc_attr($value); ?>" <?php selected($setting, $value); ?>> 303 <?php echo esc_html($label); ?> 304 </option> 305 <?php endforeach; ?> 306 </select> 307 <?php 308 } 262 309 263 310 public function admin_menu() { … … 273 320 } 274 321 275 /**276 * Register the stylesheets for the admin area.277 *278 * @since 1.0.0279 */280 public function enqueue_styles() {281 282 /**283 * This function is provided for demonstration purposes only.284 *285 * An instance of this class should be passed to the run() function286 * defined in Zooza_Loader as all of the hooks are defined287 * in that particular class.288 *289 * The Zooza_Loader will then create the relationship290 * between the defined hooks and the functions defined in this291 * class.292 */293 294 wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/zooza-admin.css', array(), $this->version, 'all' );295 296 }297 298 /**299 * Register the JavaScript for the admin area.300 *301 * @since 1.0.0302 */303 public function enqueue_scripts() {304 305 /**306 * This function is provided for demonstration purposes only.307 *308 * An instance of this class should be passed to the run() function309 * defined in Zooza_Loader as all of the hooks are defined310 * in that particular class.311 *312 * The Zooza_Loader will then create the relationship313 * between the defined hooks and the functions defined in this314 * class.315 */316 317 wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/zooza-admin.js', array( 'jquery' ), $this->version, false );318 319 }322 /** 323 * Register the stylesheets for the admin area. 324 * 325 * @since 1.0.0 326 */ 327 public function enqueue_styles() { 328 329 /** 330 * This function is provided for demonstration purposes only. 331 * 332 * An instance of this class should be passed to the run() function 333 * defined in Zooza_Loader as all of the hooks are defined 334 * in that particular class. 335 * 336 * The Zooza_Loader will then create the relationship 337 * between the defined hooks and the functions defined in this 338 * class. 339 */ 340 341 wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/zooza-admin.css', array(), $this->version, 'all' ); 342 343 } 344 345 /** 346 * Register the JavaScript for the admin area. 347 * 348 * @since 1.0.0 349 */ 350 public function enqueue_scripts() { 351 352 /** 353 * This function is provided for demonstration purposes only. 354 * 355 * An instance of this class should be passed to the run() function 356 * defined in Zooza_Loader as all of the hooks are defined 357 * in that particular class. 358 * 359 * The Zooza_Loader will then create the relationship 360 * between the defined hooks and the functions defined in this 361 * class. 362 */ 363 364 wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/zooza-admin.js', array( 'jquery' ), $this->version, false ); 365 366 } 320 367 321 368 } -
zooza/trunk/admin/partials/zooza-admin-display.php
r3036912 r3268378 23 23 <?php do_settings_sections( 'zooza' );?> 24 24 <hr/> 25 <?php submit_button( 'Uložiť', 'primary', 'submit' );?>25 <?php submit_button( __('Uložiť', 'zooza'), 'primary', 'submit' );?> 26 26 </form> 27 27 </div> -
zooza/trunk/includes/class-zooza-activator.php
r3001670 r3268378 39 39 add_option( 'zooza_video_page_id', '' ); 40 40 add_option( 'zooza_checkout_page_id', '' ); 41 add_option( 'zooza_calendar_map_id', '' ); 41 42 42 43 } -
zooza/trunk/includes/class-zooza-deactivator.php
r3001670 r3268378 39 39 delete_option( 'zooza_video_page_id' ); 40 40 delete_option( 'zooza_checkout_page_id' ); 41 delete_option( 'zooza_map_page_id' ); 41 42 42 43 } -
zooza/trunk/includes/class-zooza.php
r3140565 r3268378 23 23 * version of the plugin. 24 24 * 25 * @since 1. 0.925 * @since 1.1.0 26 26 * @package Zooza 27 27 * @subpackage Zooza/includes … … 52 52 * The current version of the plugin. 53 53 * 54 * @since 1. 0.954 * @since 1.1.0 55 55 * @access protected 56 56 * @var string $version The current version of the plugin. … … 71 71 $this->version = ZOOZA_VERSION; 72 72 } else { 73 $this->version = '1. 0.9';73 $this->version = '1.1.0'; 74 74 } 75 75 $this->plugin_name = 'zooza'; -
zooza/trunk/languages/zooza-en_US.po
r3140354 r3268378 5 5 "Content-Transfer-Encoding: 8bit\n" 6 6 "X-Generator: POEditor.com\n" 7 "X-Domain: zooza\n" 7 8 "Project-Id-Version: WP Plugin\n" 8 9 "Language: en\n" 9 10 10 11 #: 11 msgid "General settings"12 msgid "General Settings" 12 13 msgstr "General Settings" 13 14 15 #. Plugin Name of the plugin 16 #. Author of the plugin 17 #: zooza.php admin/partials/zooza-admin-display.php:18 18 msgid "Zooza" 19 msgstr "Zooza" 20 21 #. Plugin URI of the plugin 22 #: zooza.php 23 msgid "https://zooza.online/wordpress-plugin" 24 msgstr "https://zooza.online/wordpress-plugin" 25 26 #. Description of the plugin 27 #: zooza.php 28 msgid "Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov." 29 msgstr "Plugin for Zooza platform customers for easy setup of registration forms." 30 31 #. Author URI of the plugin 32 #: zooza.php 33 msgid "https://zooza.online" 34 msgstr "https://zooza.online" 35 36 #: admin/class-zooza-admin.php:70 37 msgid "Všeobecné nastavenia" 38 msgstr "General Settings" 39 40 #: admin/class-zooza-admin.php:84 41 msgid "Registračné formuláre" 42 msgstr "Registration form" 43 44 #: admin/class-zooza-admin.php:91 45 msgid "API kľúč" 46 msgstr "Api key" 47 48 #: admin/class-zooza-admin.php:98 49 msgid "API key" 50 msgstr "Api key" 51 52 #: admin/class-zooza-admin.php:106 53 msgid "Tajný kľúč" 54 msgstr "Secret key" 55 56 #: admin/class-zooza-admin.php:114 57 msgid "Registračný formulár" 58 msgstr "Registration form" 59 60 #: admin/class-zooza-admin.php:122 61 msgid "Kalendár" 62 msgstr "Calendar" 63 64 #: admin/class-zooza-admin.php:130 65 msgid "Zákaznícky profil" 66 msgstr "Profile" 67 68 #: admin/class-zooza-admin.php:138 69 msgid "Videá" 70 msgstr "Video" 71 72 #: admin/class-zooza-admin.php:146 73 msgid "Objednávkový formulár" 74 msgstr "Checkout" 75 76 #: admin/class-zooza-admin.php:153 77 msgid "Map" 78 msgstr "Map" 79 80 #: admin/class-zooza-admin.php:164 81 msgid "Postup ako získať API kľúč a tajný kľúč:" 82 msgstr "How to get the API key and secret key:" 83 84 #: admin/class-zooza-admin.php:165 85 msgid "<ol><li><a href=\"https://app.zooza.app/\" target=\"_blank\">Prihláste sa</a> do aplikácie Zooza.</li><li>Navštívte stránku nastavení - <a href=\"https://app.zooza.app/#settings/widgets\">Registračné formuláre</a></li><li>Skopírujte si váš API kľúč a tajný kľúč.</li></ol>" 86 msgstr "<ol><li><a href=\"https://zooza.app/\" target=\"_blank\">Login to</a> Zooza app.</li><li>Go to publish - <a href=\"https://zooza.app/#widgets\">Wordpress</a></li><li>Copy your Api key and Secret key </li></ol>" 87 88 #: admin/class-zooza-admin.php:175 89 msgid "Vyberte stránky, na ktorých chcete mať umiestnené registračné formuláre. Samotný formulár bude automaticky vložený na koniec stránky." 90 msgstr "Select the pages where you want the registration forms to be placed. The form itself will automatically be inserted at the bottom of the page." 91 92 #: admin/partials/zooza-admin-display.php:25 93 msgid "Uložiť" 94 msgstr "Save" 95 -
zooza/trunk/languages/zooza-sk_SK.po
r3140354 r3268378 5 5 "Content-Transfer-Encoding: 8bit\n" 6 6 "X-Generator: POEditor.com\n" 7 "X-Domain: zooza\n" 7 8 "Project-Id-Version: WP Plugin\n" 8 9 "Language: sk\n" 9 10 10 11 #: 11 msgid "General settings"12 msgid "General Settings" 12 13 msgstr "Všeobecné nastavenia" 13 14 15 #. Plugin Name of the plugin 16 #. Author of the plugin 17 #: zooza.php admin/partials/zooza-admin-display.php:18 18 msgid "Zooza" 19 msgstr "Zooza" 20 21 #. Plugin URI of the plugin 22 #: zooza.php 23 msgid "https://zooza.online/wordpress-plugin" 24 msgstr "https://zooza.online/wordpress-plugin" 25 26 #. Description of the plugin 27 #: zooza.php 28 msgid "Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov." 29 msgstr "Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov." 30 31 #. Author URI of the plugin 32 #: zooza.php 33 msgid "https://zooza.online" 34 msgstr "https://zooza.online" 35 36 #: admin/class-zooza-admin.php:70 37 msgid "Všeobecné nastavenia" 38 msgstr "Všeobecné nastavenia" 39 40 #: admin/class-zooza-admin.php:84 41 msgid "Registračné formuláre" 42 msgstr "Registračné formuláre" 43 44 #: admin/class-zooza-admin.php:91 45 msgid "API kľúč" 46 msgstr "API kľúč" 47 48 #: admin/class-zooza-admin.php:98 49 msgid "API key" 50 msgstr "API kľúč" 51 52 #: admin/class-zooza-admin.php:106 53 msgid "Tajný kľúč" 54 msgstr "Tajný kľúč" 55 56 #: admin/class-zooza-admin.php:114 57 msgid "Registračný formulár" 58 msgstr "Registračný formulár" 59 60 #: admin/class-zooza-admin.php:122 61 msgid "Kalendár" 62 msgstr "Kalendár" 63 64 #: admin/class-zooza-admin.php:130 65 msgid "Zákaznícky profil" 66 msgstr "Zákaznícky profil" 67 68 #: admin/class-zooza-admin.php:138 69 msgid "Videá" 70 msgstr "Videá" 71 72 #: admin/class-zooza-admin.php:146 73 msgid "Objednávkový formulár" 74 msgstr "Objednávkový formulár" 75 76 #: admin/class-zooza-admin.php:153 77 msgid "Map" 78 msgstr "Mapa" 79 80 #: admin/class-zooza-admin.php:164 81 msgid "Postup ako získať API kľúč a tajný kľúč:" 82 msgstr "Postup ako získať API kľúč a tajný kľúč:" 83 84 #: admin/class-zooza-admin.php:165 85 msgid "<ol><li><a href=\"https://app.zooza.app/\" target=\"_blank\">Prihláste sa</a> do aplikácie Zooza.</li><li>Navštívte stránku nastavení - <a href=\"https://app.zooza.app/#settings/widgets\">Registračné formuláre</a></li><li>Skopírujte si váš API kľúč a tajný kľúč.</li></ol>" 86 msgstr "<ol><li><a href=\"https://zooza.app/\" target=\"_blank\">Prihláste sa</a> do aplikácie Zooza.</li><li>Navštívte stránku nastavení - <a href=\"https://zooza.app/#widgets\">Registračné formuláre</a></li><li>Skopírujte si váš API kľúč a tajný kľúč.</li></ol>" 87 88 #: admin/class-zooza-admin.php:175 89 msgid "Vyberte stránky, na ktorých chcete mať umiestnené registračné formuláre. Samotný formulár bude automaticky vložený na koniec stránky." 90 msgstr "Vyberte stránky, na ktorých chcete mať umiestnené registračné formuláre. Samotný formulár bude automaticky vložený na koniec stránky." 91 92 #: admin/partials/zooza-admin-display.php:25 93 msgid "Uložiť" 94 msgstr "Uložiť" 95 -
zooza/trunk/languages/zooza.pot
r3140354 r3268378 5 5 "Content-Transfer-Encoding: 8bit\n" 6 6 "X-Generator: POEditor.com\n" 7 "X-Domain: zooza\n" 7 8 "Project-Id-Version: WP Plugin\n" 8 "Language: en\n"9 "Language: sk\n" 9 10 10 11 #: 11 msgid "General settings"12 msgid "General Settings" 12 13 msgstr "" 13 14 15 #. Plugin Name of the plugin 16 #. Author of the plugin 17 #: zooza.php admin/partials/zooza-admin-display.php:18 18 msgid "Zooza" 19 msgstr "" 20 21 #. Plugin URI of the plugin 22 #: zooza.php 23 msgid "https://zooza.online/wordpress-plugin" 24 msgstr "" 25 26 #. Description of the plugin 27 #: zooza.php 28 msgid "Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov." 29 msgstr "" 30 31 #. Author URI of the plugin 32 #: zooza.php 33 msgid "https://zooza.online" 34 msgstr "" 35 36 #: admin/class-zooza-admin.php:70 37 msgid "Všeobecné nastavenia" 38 msgstr "" 39 40 #: admin/class-zooza-admin.php:84 41 msgid "Registračné formuláre" 42 msgstr "" 43 44 #: admin/class-zooza-admin.php:91 45 msgid "API kľúč" 46 msgstr "" 47 48 #: admin/class-zooza-admin.php:98 49 msgid "API key" 50 msgstr "" 51 52 #: admin/class-zooza-admin.php:106 53 msgid "Tajný kľúč" 54 msgstr "" 55 56 #: admin/class-zooza-admin.php:114 57 msgid "Registračný formulár" 58 msgstr "" 59 60 #: admin/class-zooza-admin.php:122 61 msgid "Kalendár" 62 msgstr "" 63 64 #: admin/class-zooza-admin.php:130 65 msgid "Zákaznícky profil" 66 msgstr "" 67 68 #: admin/class-zooza-admin.php:138 69 msgid "Videá" 70 msgstr "" 71 72 #: admin/class-zooza-admin.php:146 73 msgid "Objednávkový formulár" 74 msgstr "" 75 76 #: admin/class-zooza-admin.php:153 77 msgid "Map" 78 msgstr "" 79 80 #: admin/class-zooza-admin.php:164 81 msgid "Postup ako získať API kľúč a tajný kľúč:" 82 msgstr "" 83 84 #: admin/class-zooza-admin.php:165 85 msgid "<ol><li><a href=\"https://app.zooza.app/\" target=\"_blank\">Prihláste sa</a> do aplikácie Zooza.</li><li>Navštívte stránku nastavení - <a href=\"https://app.zooza.app/#settings/widgets\">Registračné formuláre</a></li><li>Skopírujte si váš API kľúč a tajný kľúč.</li></ol>" 86 msgstr "" 87 88 #: admin/class-zooza-admin.php:175 89 msgid "Vyberte stránky, na ktorých chcete mať umiestnené registračné formuláre. Samotný formulár bude automaticky vložený na koniec stránky." 90 msgstr "" 91 92 #: admin/partials/zooza-admin-display.php:25 93 msgid "Uložiť" 94 msgstr "" 95 -
zooza/trunk/public/class-zooza-public.php
r3140565 r3268378 1 1 <?php 2 if ( ! defined( 'ABSPATH' )) exit;2 if (!defined('ABSPATH')) exit; 3 3 /** 4 4 * The public-facing functionality of the plugin. … … 21 21 * @author Zooza <hello@zooza.sk> 22 22 */ 23 class Zooza_Public { 24 25 /** 26 * The ID of this plugin. 27 * 28 * @since 1.0.0 29 * @access private 30 * @var string $plugin_name The ID of this plugin. 31 */ 32 private $plugin_name; 33 34 /** 35 * The version of this plugin. 36 * 37 * @since 1.0.9 38 * @access private 39 * @var string $version The current version of this plugin. 40 */ 41 private $version; 42 43 /** 44 * Initialize the class and set its properties. 45 * 46 * @since 1.0.0 47 * @param string $plugin_name The name of the plugin. 48 * @param string $version The version of this plugin. 49 */ 50 public function __construct( $plugin_name, $version ) { 51 52 $this->plugin_name = $plugin_name; 53 $this->version = $version; 54 55 } 56 57 public function the_content( $content ) { 58 59 if ( ! is_main_query() ) { 23 class Zooza_Public 24 { 25 26 /** 27 * The ID of this plugin. 28 * 29 * @since 1.0.0 30 * @access private 31 * @var string $plugin_name The ID of this plugin. 32 */ 33 private $plugin_name; 34 35 /** 36 * The version of this plugin. 37 * 38 * @since 1.1.0 39 * @access private 40 * @var string $version The current version of this plugin. 41 */ 42 private $version; 43 44 /** 45 * Initialize the class and set its properties. 46 * 47 * @param string $plugin_name The name of the plugin. 48 * @param string $version The version of this plugin. 49 * @since 1.0.0 50 */ 51 public function __construct($plugin_name, $version) 52 { 53 54 $this->plugin_name = $plugin_name; 55 $this->version = $version; 56 add_action('init', array($this, 'register_shortcodes')); 57 58 } 59 60 public function the_content($content) 61 { 62 63 if (!is_main_query()) { 60 64 return $content; 61 65 } 62 66 63 $api_key = get_option( 'zooza_api_key', false ); 64 65 if( !$api_key ) { 67 68 $api_key = get_option('zooza_api_key', false); 69 70 if (!$api_key) { 66 71 return $content; 67 72 } … … 69 74 $ID = get_the_ID(); 70 75 71 if ( is_null( $ID ) ){76 if (is_null($ID)) { 72 77 return $content; 73 78 } 74 79 75 80 $widgets = array( 76 'registration_new' => get_option( 'zooza_registration_page_id' ), 77 'profile' => get_option( 'zooza_profile_page_id' ), 78 'calendar' => get_option( 'zooza_calendar_page_id' ), 79 'video' => get_option( 'zooza_video_page_id' ), 80 'checkout' => get_option( 'zooza_checkout_page_id' ), 81 'registration_new' => get_option('zooza_registration_page_id'), 82 'profile' => get_option('zooza_profile_page_id'), 83 'calendar' => get_option('zooza_calendar_page_id'), 84 'video' => get_option('zooza_video_page_id'), 85 'checkout' => get_option('zooza_checkout_page_id'), 86 'map' => get_option('zooza_map_page_id'), 81 87 ); 82 88 83 foreach ( $widgets as $widget => $page_id ){84 85 if ( $page_id == $ID ){86 87 return $content . $this->get_code( $widget, $api_key);89 foreach ($widgets as $widget => $page_id) { 90 91 if ($page_id == $ID) { 92 93 return $content . $this->get_code($widget, $api_key); 88 94 89 95 } … … 95 101 } 96 102 97 private function get_code( $widget, $api_key ) { 103 private function get_code($widget, $api_key) 104 { 98 105 99 106 $version = 'v1'; 100 107 101 $v2 = array( 'calendar', 'video', 'checkout');102 103 if ( in_array( $widget, $v2 ) ){108 $v2 = array('calendar', 'video', 'checkout', 'map'); 109 110 if (in_array($widget, $v2)) { 104 111 $version = 'v2'; 105 112 } 106 107 return sprintf( "<script data-embedded_by='zoozawp' data-version='%s' data-widget-id='zooza' id='%s' type='text/javascript'> 113 $api_url = get_option('zooza_api_url'); 114 115 return sprintf("<script data-embedded_by='zoozawp' data-version='%s' data-widget-id='zooza' id='%s' type='text/javascript'> 108 116 ( function() { 109 117 function async_load(){ 110 118 var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; 111 var url = ' https://api.zooza.app/widgets/%s/';119 var url = '%s/widgets/%s/'; 112 120 s.src = url + ( url.indexOf( '?' ) >= 0 ? '&' : '?' ) + 'ref=' + encodeURIComponent( window.location.href ) + '&type=%s'; 113 121 var embedder = document.getElementById( '%s' ); … … 120 128 } 121 129 } )(); 122 </script>", $version, $api_key, $version, $widget, $api_key ); 123 124 } 125 126 /** 127 * Register the stylesheets for the public-facing side of the site. 128 * 129 * @since 1.0.0 130 */ 131 public function enqueue_styles() { 132 133 /** 134 * This function is provided for demonstration purposes only. 135 * 136 * An instance of this class should be passed to the run() function 137 * defined in Zooza_Loader as all of the hooks are defined 138 * in that particular class. 139 * 140 * The Zooza_Loader will then create the relationship 141 * between the defined hooks and the functions defined in this 142 * class. 143 */ 144 145 wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/zooza-public.css', array(), $this->version, 'all' ); 146 147 } 148 149 /** 150 * Register the JavaScript for the public-facing side of the site. 151 * 152 * @since 1.0.0 153 */ 154 public function enqueue_scripts() { 155 156 /** 157 * This function is provided for demonstration purposes only. 158 * 159 * An instance of this class should be passed to the run() function 160 * defined in Zooza_Loader as all of the hooks are defined 161 * in that particular class. 162 * 163 * The Zooza_Loader will then create the relationship 164 * between the defined hooks and the functions defined in this 165 * class. 166 */ 167 168 wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/zooza-public.js', array( 'jquery' ), $this->version, false ); 169 170 } 130 </script>", $version, $api_key, $version, $api_url,$widget, $api_key); 131 132 } 133 134 /** 135 * Register the stylesheets for the public-facing side of the site. 136 * 137 * @since 1.0.0 138 */ 139 public function enqueue_styles() 140 { 141 142 /** 143 * This function is provided for demonstration purposes only. 144 * 145 * An instance of this class should be passed to the run() function 146 * defined in Zooza_Loader as all of the hooks are defined 147 * in that particular class. 148 * 149 * The Zooza_Loader will then create the relationship 150 * between the defined hooks and the functions defined in this 151 * class. 152 */ 153 154 wp_enqueue_style($this->plugin_name, plugin_dir_url(__FILE__) . 'css/zooza-public.css', array(), $this->version, 'all'); 155 156 } 157 158 /** 159 * Register the JavaScript for the public-facing side of the site. 160 * 161 * @since 1.0.0 162 */ 163 public function enqueue_scripts() 164 { 165 166 /** 167 * This function is provided for demonstration purposes only. 168 * 169 * An instance of this class should be passed to the run() function 170 * defined in Zooza_Loader as all of the hooks are defined 171 * in that particular class. 172 * 173 * The Zooza_Loader will then create the relationship 174 * between the defined hooks and the functions defined in this 175 * class. 176 */ 177 178 wp_enqueue_script($this->plugin_name, plugin_dir_url(__FILE__) . 'js/zooza-public.js', array('jquery'), $this->version, false); 179 180 } 181 182 public function register_shortcodes() 183 { 184 add_shortcode('zooza', array($this, 'render_shortcode')); 185 } 186 187 public function render_shortcode( $atts ) { 188 $atts = shortcode_atts( 189 array( 190 'type' => 'registration_new', 191 'multistep' => 'false', 192 'filter_courses' => '', 193 'filter_places' => '', 194 'age_range' => '', 195 'api_key' => '', 196 ), 197 $atts, 198 'zooza' 199 ); 200 201 $multistep = $atts['multistep'] === 'true' ? 'true' : 'false'; 202 $shortcode_api_key = $atts['api_key']; 203 204 $courses = array_filter( array_map( 'trim', explode( '|', $atts['filter_courses'] ) ) ); 205 $places = array_filter( array_map( 'trim', explode( '|', $atts['filter_places'] ) ) ); 206 207 $courses_js = json_encode( array_map( 'intval', $courses ) ); 208 $places_js = json_encode( array_map( 'intval', $places ) ); 209 210 $age_range = []; 211 212 if ( $atts['age_range'] ) { 213 $items = array_filter( array_map( 'trim', explode( '|', $atts['age_range'] ) ) ); 214 215 foreach ( $items as $item ) { 216 if ( preg_match( '/(\d+)([my])-(\d+)([my])/', $item, $matches ) ) { 217 $from = ( $matches[2] === 'y' ) ? (int)$matches[1] * 12 : (int)$matches[1]; 218 $to = ( $matches[4] === 'y' ) ? (int)$matches[3] * 12 : (int)$matches[3]; 219 $age_range[] = [ 220 'value' => "{$from}-{$to}", 221 'label' => $item 222 ]; 223 } 224 } 225 } 226 227 $age_range_js = json_encode( $age_range ); 228 229 $widget = $atts['type']; 230 $widget_id = get_option('zooza_api_key'); 231 if($shortcode_api_key){ 232 $widget_id = $shortcode_api_key; 233 } 234 $version = in_array($widget, array('calendar', 'video', 'checkout', 'map')) ? 'v2' : 'v1'; 235 $api_url = get_option('zooza_api_url', 'https://api.zooza.app' ); 236 ob_start(); 237 ?> 238 <script type="text/javascript"> 239 window.ZOOZA = { 240 multi_step_form: <?php echo $multistep; ?>, 241 242 }; 243 document.zooza = { 244 filter_courses: <?php echo $courses_js; ?>, 245 filter_places: <?php echo $places_js; ?>, 246 age_range: <?php echo $age_range_js; ?> 247 }; 248 </script> 249 250 <script data-version="<?php echo esc_attr($version); ?>" data-widget-id="zooza" id="<?php echo esc_attr($widget_id); ?>" type="text/javascript"> 251 (function() { 252 function async_load(){ 253 document.body.setAttribute('data-zooza-api-url', "<?php echo$api_url;?>"); 254 var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; 255 s.src = document.body.getAttribute('data-zooza-api-url') + 256 '/widgets/<?php echo esc_attr($version); ?>/?type=<?php echo esc_attr($widget); ?>&ref=' + encodeURIComponent(window.location.href); 257 var embedder = document.getElementById('<?php echo esc_attr($widget_id); ?>'); 258 embedder.parentNode.insertBefore(s, embedder); 259 } 260 if (window.attachEvent) { 261 window.attachEvent('onload', async_load); 262 } else { 263 window.addEventListener('load', async_load, false); 264 } 265 })(); 266 </script> 267 <?php 268 return ob_get_clean(); 269 } 171 270 172 271 } 272 -
zooza/trunk/zooza.php
r3140565 r3268378 17 17 * Plugin URI: https://zooza.online/wordpress-plugin 18 18 * Description: Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov. 19 * Version: 1. 0.919 * Version: 1.1.0 20 20 * Author: Zooza 21 21 * Author URI: https://zooza.online … … 36 36 * Rename this for your plugin and update it as you release new versions. 37 37 */ 38 define( 'ZOOZA_VERSION', '1. 0.9' );38 define( 'ZOOZA_VERSION', '1.1.0' ); 39 39 40 40 /**
Note: See TracChangeset
for help on using the changeset viewer.