Plugin Directory

Changeset 3268378


Ignore:
Timestamp:
04/08/2025 07:46:46 AM (12 months ago)
Author:
zooza
Message:

Update to version 1.1.0 from GitHub

Location:
zooza
Files:
24 added
26 edited
1 copied

Legend:

Unmodified
Added
Removed
  • zooza/tags/1.1.0/README.txt

    r3140565 r3268378  
    22Contributors: zooza
    33Donate link: https://zooza.online
    4 Tags: zooza, widgets
     4Tags: 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
    55Requires at least: 3.0.1
    66Tested up to: 6.5.0
    7 Stable tag: 1.0.9
     7Stable tag: 1.1.0
    88License: GPLv2 or later
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
    1010
    11 This plugin enables integration of Zooza widgets to your website. Existing Zooza account is required for this plugin to work.
     11This plugin enables integration of Zooza widgets to your website. An existing Zooza account is required for this plugin to work.
    1212
    1313== Description ==
    1414
    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
     17Looking 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
     19Whether 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
     23Zooza 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
     25Our 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
     33All embeddable with simple shortcodes.
     34
     35== Who Is It For? ==
     36
     37Zooza 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
     47Whether you're starting your business or expanding across multiple locations, Zooza grows with you.
     48
     49== Core Features ==
     50
     51✅ **Class Booking System**
     52Embed a booking calendar for single or recurring sessions. Parents can view schedules, choose time slots, and book instantly.
     53
     54✅ **Online Registration Forms**
     55Custom registration forms that match your brand and collect the exact information you need.
     56
     57✅ **Client & Parent Zone**
     58Give parents access to view their bookings, manage payments, track attendance, and reschedule if needed.
     59
     60✅ **Automated Reminders & Communication**
     61Send SMS/email reminders, confirmations, and attendance updates to parents automatically.
     62
     63✅ **Integrated Payments**
     64Collect payments upfront or per session with Stripe, card, or bank transfer options. Setup recurring invoices for term-based classes.
     65
     66✅ **Attendance Management**
     67Track attendance with ease—let instructors mark present/absent and keep parents updated.
     68
     69✅ **Reporting & Insights**
     70Track income, registration trends, class occupancy, and more—all in one place.
     71
     72✅ **Multi-location & Multi-instructor Ready**
     73Manage classes across different branches or cities with tailored views and permissions.
     74
     75== Smart Embeds for Your Website (No Coding Required) ==
     76
     77Use 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
     87Every element is mobile-friendly, fast-loading, and styled to match your branding.
     88
     89
     90== Why Zooza? ==
     91
     92Most plugins only do one thing: booking, attendance, or payments. Zooza does it all.
     93
     94It’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
     98Zooza 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
     114If you typed any of those into Google—you just found your answer.
     115
     116== More Than a Plugin: The Zooza Platform ==
     117
     118Want 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
     128You can learn more about the full Zooza platform here: https://zooza.online
     129
     130== Get Started ==
     131
     132Install 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
     134Join hundreds of businesses and franchises across Europe who trust Zooza to manage their operations and grow with confidence.
     135
     136Website: https://zooza.online
     137Support: support@zooza.online
     138
     139**Zooza – Built for the Chaos of Kids' Activities. Trusted by the Calm in It.**
    26140
    27141== Installation ==
    28142
    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'
     1431. In your WordPress admin dashboard, go to **Plugins > Add New**.
     1442. Search for **Zooza**, then click **Install Now** and **Activate**.
     1453. After activation, go to **Settings > Zooza**.
     1464. Paste your **Zooza API key** (available in your Zooza account).
     1475. Choose where you'd like the widgets to appear (which page).
     1486. Save your settings and you're done!
     149
     150Alternatively, 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
     1611. **Booking Calendar Embed**
     162   Display a fully responsive class booking calendar integrated seamlessly into your website.
     163
     1642. **Registration Form**
     165   A branded registration form embedded on your page to collect user information easily.
     166
     1673. **Parent/Client Zone**
     168   A screenshot of the client zone where parents can manage their bookings, view attendance, and reschedule if needed.
     169
     1704. **Checkout Form**
     171   Fully customizable checkout form for streamlined payment collection.
     172
     1735. **Google Map of Class Locations**
     174   A map showcasing your class locations for ease of navigation.
     175
     1766. **Zooza Settings Page**
     177   Settings page in WordPress to configure API key and adjust widget settings.
     178
     1797. **Instructor Dashboard** *(Optional)*
     180   Showcase the dashboard used by instructors to mark attendance and view class details.
    32181
    33182== Changelog ==
     
    37186
    38187= 1.0.2 =
    39 * Fixed loading of Calendar, Video and Checkout widgets
     188* Fixed loading of Calendar, Video, and Checkout widgets
    40189
    41190= 1.0.3 =
     
    46195
    47196= 1.0.5 =
    48 * Migrating to zooza.app
     197* Migrated to zooza.app
    49198
    50199= 1.0.6 =
    51 * Fix administration exception
     200* Fixed administration exception
    52201
    53202= 1.0.7 =
    54 * Fix remaining administration exception
     203* Fixed remaining administration exception
    55204
    56205= 1.0.9 =
    57206* Transition to new API endpoints
    58207
    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  
    2323class Zooza_Admin {
    2424
    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 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    }
    5656
    5757    public function admin_init()    {
     
    5959        register_setting( 'zooza', 'zooza_api_key' );
    6060        register_setting( 'zooza', 'zooza_client_secret' );
     61        register_setting( 'zooza', 'zooza_api_url' );
    6162        register_setting( 'zooza', 'zooza_registration_page_id' );
    6263        register_setting( 'zooza', 'zooza_profile_page_id' );
     
    6465        register_setting( 'zooza', 'zooza_video_page_id' );
    6566        register_setting( 'zooza', 'zooza_checkout_page_id' );
     67        register_setting( 'zooza', 'zooza_map_page_id' );
    6668
    6769        add_settings_section(
     
    7274        );
    7375
    74         add_settings_section(
    75             'zooza_section_general',
    76             __( 'General settings', 'zooza' ),
    77             array( $this, 'section_general' ),
    78             'zooza'
    79         );
    8076
    8177        add_settings_section(
     
    8783
    8884        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'
    9497        );
    9598
     
    101104            'zooza_section_general'
    102105        );
     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        );
    103113
    104114        add_settings_field(
     
    141151            'zooza_section_widgets'
    142152        );
     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        );
    143160
    144161    }
    145162
    146163    function section_general()  {
    147         var_dump(get_locale());
     164//        var_dump(get_locale());
    148165        ?>
    149166        <p><?=__( 'Postup ako získať API kľúč a tajný kľúč:', 'zooza' );?></p>
     
    173190            'video' => get_permalink( get_option( 'zooza_video_page_id' ) ),
    174191            'checkout' => get_permalink( get_option( 'zooza_checkout_page_id' ) ),
     192            'map' => get_permalink( get_option( 'zooza_map_page_id' ) ),
    175193        );
    176194
     
    183201
    184202        $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 );
    186205        $response = wp_remote_post( $endpoint, $args );
    187206
     
    192211        $setting = get_option( 'zooza_registration_page_id' );
    193212        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
    201220    public function field_zooza_profile_page_id() {
    202221
     
    231250
    232251    }
    233    
     252
    234253    public function field_zooza_checkout_page_id() {
    235254
     
    243262    }
    244263
     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
    245275    public function field_api_key() {
    246276
     
    260290
    261291    }
     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    }
    262309
    263310    public function admin_menu()    {
     
    273320    }
    274321
    275     /**
    276     * Register the stylesheets for the admin area.
    277     *
    278     * @since    1.0.0
    279     */
    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() function
    286         * defined in Zooza_Loader as all of the hooks are defined
    287         * in that particular class.
    288         *
    289         * The Zooza_Loader will then create the relationship
    290         * between the defined hooks and the functions defined in this
    291         * 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.0
    302     */
    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() function
    309         * defined in Zooza_Loader as all of the hooks are defined
    310         * in that particular class.
    311         *
    312         * The Zooza_Loader will then create the relationship
    313         * between the defined hooks and the functions defined in this
    314         * 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    }
    320367
    321368}
  • zooza/tags/1.1.0/admin/partials/zooza-admin-display.php

    r3036912 r3268378  
    2323        <?php do_settings_sections( 'zooza' );?>
    2424        <hr/>
    25         <?php submit_button( 'Uložiť', 'primary', 'submit' );?>
     25        <?php submit_button( __('Uložiť', 'zooza'), 'primary', 'submit' );?>
    2626    </form>
    2727</div>
  • zooza/tags/1.1.0/includes/class-zooza-activator.php

    r3001670 r3268378  
    3939        add_option( 'zooza_video_page_id', '' );
    4040        add_option( 'zooza_checkout_page_id', '' );
     41        add_option( 'zooza_calendar_map_id', '' );
    4142
    4243    }
  • zooza/tags/1.1.0/includes/class-zooza-deactivator.php

    r3001670 r3268378  
    3939        delete_option( 'zooza_video_page_id' );
    4040        delete_option( 'zooza_checkout_page_id' );
     41        delete_option( 'zooza_map_page_id' );
    4142
    4243    }
  • zooza/tags/1.1.0/includes/class-zooza.php

    r3140565 r3268378  
    2323 * version of the plugin.
    2424 *
    25  * @since      1.0.9
     25 * @since      1.1.0
    2626 * @package    Zooza
    2727 * @subpackage Zooza/includes
     
    5252     * The current version of the plugin.
    5353     *
    54      * @since    1.0.9
     54     * @since    1.1.0
    5555     * @access   protected
    5656     * @var      string    $version    The current version of the plugin.
     
    7171            $this->version = ZOOZA_VERSION;
    7272        } else {
    73             $this->version = '1.0.9';
     73            $this->version = '1.1.0';
    7474        }
    7575        $this->plugin_name = 'zooza';
  • zooza/tags/1.1.0/languages/zooza-en_US.po

    r3140354 r3268378  
    55"Content-Transfer-Encoding: 8bit\n"
    66"X-Generator: POEditor.com\n"
     7"X-Domain: zooza\n"
    78"Project-Id-Version: WP Plugin\n"
    89"Language: en\n"
    910
    1011#:
    11 msgid "General settings"
     12msgid "General Settings"
    1213msgstr "General Settings"
    1314
     15#. Plugin Name of the plugin
     16#. Author of the plugin
     17#: zooza.php admin/partials/zooza-admin-display.php:18
     18msgid "Zooza"
     19msgstr "Zooza"
     20
     21#. Plugin URI of the plugin
     22#: zooza.php
     23msgid "https://zooza.online/wordpress-plugin"
     24msgstr "https://zooza.online/wordpress-plugin"
     25
     26#. Description of the plugin
     27#: zooza.php
     28msgid "Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov."
     29msgstr "Plugin for Zooza platform customers for easy setup of registration forms."
     30
     31#. Author URI of the plugin
     32#: zooza.php
     33msgid "https://zooza.online"
     34msgstr "https://zooza.online"
     35
     36#: admin/class-zooza-admin.php:70
     37msgid "Všeobecné nastavenia"
     38msgstr "General Settings"
     39
     40#: admin/class-zooza-admin.php:84
     41msgid "Registračné formuláre"
     42msgstr "Registration form"
     43
     44#: admin/class-zooza-admin.php:91
     45msgid "API kľúč"
     46msgstr "Api key"
     47
     48#: admin/class-zooza-admin.php:98
     49msgid "API key"
     50msgstr "Api key"
     51
     52#: admin/class-zooza-admin.php:106
     53msgid "Tajný kľúč"
     54msgstr "Secret key"
     55
     56#: admin/class-zooza-admin.php:114
     57msgid "Registračný formulár"
     58msgstr "Registration form"
     59
     60#: admin/class-zooza-admin.php:122
     61msgid "Kalendár"
     62msgstr "Calendar"
     63
     64#: admin/class-zooza-admin.php:130
     65msgid "Zákaznícky profil"
     66msgstr "Profile"
     67
     68#: admin/class-zooza-admin.php:138
     69msgid "Videá"
     70msgstr "Video"
     71
     72#: admin/class-zooza-admin.php:146
     73msgid "Objednávkový formulár"
     74msgstr "Checkout"
     75
     76#: admin/class-zooza-admin.php:153
     77msgid "Map"
     78msgstr "Map"
     79
     80#: admin/class-zooza-admin.php:164
     81msgid "Postup ako získať API kľúč a tajný kľúč:"
     82msgstr "How to get the API key and secret key:"
     83
     84#: admin/class-zooza-admin.php:165
     85msgid "<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>"
     86msgstr "<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
     89msgid "Vyberte stránky, na ktorých chcete mať umiestnené registračné formuláre. Samotný formulár bude automaticky vložený na koniec stránky."
     90msgstr "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
     93msgid "Uložiť"
     94msgstr "Save"
     95
  • zooza/tags/1.1.0/languages/zooza-sk_SK.po

    r3140354 r3268378  
    55"Content-Transfer-Encoding: 8bit\n"
    66"X-Generator: POEditor.com\n"
     7"X-Domain: zooza\n"
    78"Project-Id-Version: WP Plugin\n"
    89"Language: sk\n"
    910
    1011#:
    11 msgid "General settings"
     12msgid "General Settings"
    1213msgstr "Všeobecné nastavenia"
    1314
     15#. Plugin Name of the plugin
     16#. Author of the plugin
     17#: zooza.php admin/partials/zooza-admin-display.php:18
     18msgid "Zooza"
     19msgstr "Zooza"
     20
     21#. Plugin URI of the plugin
     22#: zooza.php
     23msgid "https://zooza.online/wordpress-plugin"
     24msgstr "https://zooza.online/wordpress-plugin"
     25
     26#. Description of the plugin
     27#: zooza.php
     28msgid "Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov."
     29msgstr "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
     33msgid "https://zooza.online"
     34msgstr "https://zooza.online"
     35
     36#: admin/class-zooza-admin.php:70
     37msgid "Všeobecné nastavenia"
     38msgstr "Všeobecné nastavenia"
     39
     40#: admin/class-zooza-admin.php:84
     41msgid "Registračné formuláre"
     42msgstr "Registračné formuláre"
     43
     44#: admin/class-zooza-admin.php:91
     45msgid "API kľúč"
     46msgstr "API kľúč"
     47
     48#: admin/class-zooza-admin.php:98
     49msgid "API key"
     50msgstr "API kľúč"
     51
     52#: admin/class-zooza-admin.php:106
     53msgid "Tajný kľúč"
     54msgstr "Tajný kľúč"
     55
     56#: admin/class-zooza-admin.php:114
     57msgid "Registračný formulár"
     58msgstr "Registračný formulár"
     59
     60#: admin/class-zooza-admin.php:122
     61msgid "Kalendár"
     62msgstr "Kalendár"
     63
     64#: admin/class-zooza-admin.php:130
     65msgid "Zákaznícky profil"
     66msgstr "Zákaznícky profil"
     67
     68#: admin/class-zooza-admin.php:138
     69msgid "Videá"
     70msgstr "Videá"
     71
     72#: admin/class-zooza-admin.php:146
     73msgid "Objednávkový formulár"
     74msgstr "Objednávkový formulár"
     75
     76#: admin/class-zooza-admin.php:153
     77msgid "Map"
     78msgstr "Mapa"
     79
     80#: admin/class-zooza-admin.php:164
     81msgid "Postup ako získať API kľúč a tajný kľúč:"
     82msgstr "Postup ako získať API kľúč a tajný kľúč:"
     83
     84#: admin/class-zooza-admin.php:165
     85msgid "<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>"
     86msgstr "<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
     89msgid "Vyberte stránky, na ktorých chcete mať umiestnené registračné formuláre. Samotný formulár bude automaticky vložený na koniec stránky."
     90msgstr "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
     93msgid "Uložiť"
     94msgstr "Uložiť"
     95
  • zooza/tags/1.1.0/languages/zooza.pot

    r3140354 r3268378  
    55"Content-Transfer-Encoding: 8bit\n"
    66"X-Generator: POEditor.com\n"
     7"X-Domain: zooza\n"
    78"Project-Id-Version: WP Plugin\n"
    8 "Language: en\n"
     9"Language: sk\n"
    910
    1011#:
    11 msgid "General settings"
     12msgid "General Settings"
    1213msgstr ""
    1314
     15#. Plugin Name of the plugin
     16#. Author of the plugin
     17#: zooza.php admin/partials/zooza-admin-display.php:18
     18msgid "Zooza"
     19msgstr ""
     20
     21#. Plugin URI of the plugin
     22#: zooza.php
     23msgid "https://zooza.online/wordpress-plugin"
     24msgstr ""
     25
     26#. Description of the plugin
     27#: zooza.php
     28msgid "Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov."
     29msgstr ""
     30
     31#. Author URI of the plugin
     32#: zooza.php
     33msgid "https://zooza.online"
     34msgstr ""
     35
     36#: admin/class-zooza-admin.php:70
     37msgid "Všeobecné nastavenia"
     38msgstr ""
     39
     40#: admin/class-zooza-admin.php:84
     41msgid "Registračné formuláre"
     42msgstr ""
     43
     44#: admin/class-zooza-admin.php:91
     45msgid "API kľúč"
     46msgstr ""
     47
     48#: admin/class-zooza-admin.php:98
     49msgid "API key"
     50msgstr ""
     51
     52#: admin/class-zooza-admin.php:106
     53msgid "Tajný kľúč"
     54msgstr ""
     55
     56#: admin/class-zooza-admin.php:114
     57msgid "Registračný formulár"
     58msgstr ""
     59
     60#: admin/class-zooza-admin.php:122
     61msgid "Kalendár"
     62msgstr ""
     63
     64#: admin/class-zooza-admin.php:130
     65msgid "Zákaznícky profil"
     66msgstr ""
     67
     68#: admin/class-zooza-admin.php:138
     69msgid "Videá"
     70msgstr ""
     71
     72#: admin/class-zooza-admin.php:146
     73msgid "Objednávkový formulár"
     74msgstr ""
     75
     76#: admin/class-zooza-admin.php:153
     77msgid "Map"
     78msgstr ""
     79
     80#: admin/class-zooza-admin.php:164
     81msgid "Postup ako získať API kľúč a tajný kľúč:"
     82msgstr ""
     83
     84#: admin/class-zooza-admin.php:165
     85msgid "<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>"
     86msgstr ""
     87
     88#: admin/class-zooza-admin.php:175
     89msgid "Vyberte stránky, na ktorých chcete mať umiestnené registračné formuláre. Samotný formulár bude automaticky vložený na koniec stránky."
     90msgstr ""
     91
     92#: admin/partials/zooza-admin-display.php:25
     93msgid "Uložiť"
     94msgstr ""
     95
  • zooza/tags/1.1.0/public/class-zooza-public.php

    r3140565 r3268378  
    11<?php
    2 if( ! defined( 'ABSPATH' ) ) exit;
     2if (!defined('ABSPATH')) exit;
    33/**
    44 * The public-facing functionality of the plugin.
     
    2121 * @author     Zooza <hello@zooza.sk>
    2222 */
    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() ) {
     23class 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()) {
    6064            return $content;
    6165        }
    6266
    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) {
    6671            return $content;
    6772        }
     
    6974        $ID = get_the_ID();
    7075
    71         if( is_null( $ID ) )    {
     76        if (is_null($ID)) {
    7277            return $content;
    7378        }
    7479
    7580        $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'),
    8187        );
    8288
    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);
    8894
    8995            }
     
    95101    }
    96102
    97     private function get_code( $widget, $api_key )    {
     103    private function get_code($widget, $api_key)
     104    {
    98105
    99106        $version = 'v1';
    100107
    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)) {
    104111            $version = 'v2';
    105112        }
    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'>
    108116( function() {
    109117function async_load(){
    110118    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/';
    112120    s.src = url + ( url.indexOf( '?' ) >= 0 ? '&' : '?' ) + 'ref=' + encodeURIComponent( window.location.href ) + '&type=%s';
    113121    var embedder = document.getElementById( '%s' );
     
    120128}
    121129} )();
    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    }
    171270
    172271}
     272
  • zooza/tags/1.1.0/zooza.php

    r3140565 r3268378  
    1717 * Plugin URI:        https://zooza.online/wordpress-plugin
    1818 * Description:       Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov.
    19  * Version:           1.0.9
     19 * Version:           1.1.0
    2020 * Author:            Zooza
    2121 * Author URI:        https://zooza.online
     
    3636 * Rename this for your plugin and update it as you release new versions.
    3737 */
    38 define( 'ZOOZA_VERSION', '1.0.9' );
     38define( 'ZOOZA_VERSION', '1.1.0' );
    3939
    4040/**
  • zooza/trunk/README.txt

    r3140565 r3268378  
    22Contributors: zooza
    33Donate link: https://zooza.online
    4 Tags: zooza, widgets
     4Tags: 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
    55Requires at least: 3.0.1
    66Tested up to: 6.5.0
    7 Stable tag: 1.0.9
     7Stable tag: 1.1.0
    88License: GPLv2 or later
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
    1010
    11 This plugin enables integration of Zooza widgets to your website. Existing Zooza account is required for this plugin to work.
     11This plugin enables integration of Zooza widgets to your website. An existing Zooza account is required for this plugin to work.
    1212
    1313== Description ==
    1414
    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
     17Looking 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
     19Whether 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
     23Zooza 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
     25Our 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
     33All embeddable with simple shortcodes.
     34
     35== Who Is It For? ==
     36
     37Zooza 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
     47Whether you're starting your business or expanding across multiple locations, Zooza grows with you.
     48
     49== Core Features ==
     50
     51✅ **Class Booking System**
     52Embed a booking calendar for single or recurring sessions. Parents can view schedules, choose time slots, and book instantly.
     53
     54✅ **Online Registration Forms**
     55Custom registration forms that match your brand and collect the exact information you need.
     56
     57✅ **Client & Parent Zone**
     58Give parents access to view their bookings, manage payments, track attendance, and reschedule if needed.
     59
     60✅ **Automated Reminders & Communication**
     61Send SMS/email reminders, confirmations, and attendance updates to parents automatically.
     62
     63✅ **Integrated Payments**
     64Collect payments upfront or per session with Stripe, card, or bank transfer options. Setup recurring invoices for term-based classes.
     65
     66✅ **Attendance Management**
     67Track attendance with ease—let instructors mark present/absent and keep parents updated.
     68
     69✅ **Reporting & Insights**
     70Track income, registration trends, class occupancy, and more—all in one place.
     71
     72✅ **Multi-location & Multi-instructor Ready**
     73Manage classes across different branches or cities with tailored views and permissions.
     74
     75== Smart Embeds for Your Website (No Coding Required) ==
     76
     77Use 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
     87Every element is mobile-friendly, fast-loading, and styled to match your branding.
     88
     89
     90== Why Zooza? ==
     91
     92Most plugins only do one thing: booking, attendance, or payments. Zooza does it all.
     93
     94It’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
     98Zooza 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
     114If you typed any of those into Google—you just found your answer.
     115
     116== More Than a Plugin: The Zooza Platform ==
     117
     118Want 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
     128You can learn more about the full Zooza platform here: https://zooza.online
     129
     130== Get Started ==
     131
     132Install 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
     134Join hundreds of businesses and franchises across Europe who trust Zooza to manage their operations and grow with confidence.
     135
     136Website: https://zooza.online
     137Support: support@zooza.online
     138
     139**Zooza – Built for the Chaos of Kids' Activities. Trusted by the Calm in It.**
    26140
    27141== Installation ==
    28142
    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'
     1431. In your WordPress admin dashboard, go to **Plugins > Add New**.
     1442. Search for **Zooza**, then click **Install Now** and **Activate**.
     1453. After activation, go to **Settings > Zooza**.
     1464. Paste your **Zooza API key** (available in your Zooza account).
     1475. Choose where you'd like the widgets to appear (which page).
     1486. Save your settings and you're done!
     149
     150Alternatively, 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
     1611. **Booking Calendar Embed**
     162   Display a fully responsive class booking calendar integrated seamlessly into your website.
     163
     1642. **Registration Form**
     165   A branded registration form embedded on your page to collect user information easily.
     166
     1673. **Parent/Client Zone**
     168   A screenshot of the client zone where parents can manage their bookings, view attendance, and reschedule if needed.
     169
     1704. **Checkout Form**
     171   Fully customizable checkout form for streamlined payment collection.
     172
     1735. **Google Map of Class Locations**
     174   A map showcasing your class locations for ease of navigation.
     175
     1766. **Zooza Settings Page**
     177   Settings page in WordPress to configure API key and adjust widget settings.
     178
     1797. **Instructor Dashboard** *(Optional)*
     180   Showcase the dashboard used by instructors to mark attendance and view class details.
    32181
    33182== Changelog ==
     
    37186
    38187= 1.0.2 =
    39 * Fixed loading of Calendar, Video and Checkout widgets
     188* Fixed loading of Calendar, Video, and Checkout widgets
    40189
    41190= 1.0.3 =
     
    46195
    47196= 1.0.5 =
    48 * Migrating to zooza.app
     197* Migrated to zooza.app
    49198
    50199= 1.0.6 =
    51 * Fix administration exception
     200* Fixed administration exception
    52201
    53202= 1.0.7 =
    54 * Fix remaining administration exception
     203* Fixed remaining administration exception
    55204
    56205= 1.0.9 =
    57206* Transition to new API endpoints
    58207
    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  
    2323class Zooza_Admin {
    2424
    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 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    }
    5656
    5757    public function admin_init()    {
     
    5959        register_setting( 'zooza', 'zooza_api_key' );
    6060        register_setting( 'zooza', 'zooza_client_secret' );
     61        register_setting( 'zooza', 'zooza_api_url' );
    6162        register_setting( 'zooza', 'zooza_registration_page_id' );
    6263        register_setting( 'zooza', 'zooza_profile_page_id' );
     
    6465        register_setting( 'zooza', 'zooza_video_page_id' );
    6566        register_setting( 'zooza', 'zooza_checkout_page_id' );
     67        register_setting( 'zooza', 'zooza_map_page_id' );
    6668
    6769        add_settings_section(
     
    7274        );
    7375
    74         add_settings_section(
    75             'zooza_section_general',
    76             __( 'General settings', 'zooza' ),
    77             array( $this, 'section_general' ),
    78             'zooza'
    79         );
    8076
    8177        add_settings_section(
     
    8783
    8884        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'
    9497        );
    9598
     
    101104            'zooza_section_general'
    102105        );
     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        );
    103113
    104114        add_settings_field(
     
    141151            'zooza_section_widgets'
    142152        );
     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        );
    143160
    144161    }
    145162
    146163    function section_general()  {
    147         var_dump(get_locale());
     164//        var_dump(get_locale());
    148165        ?>
    149166        <p><?=__( 'Postup ako získať API kľúč a tajný kľúč:', 'zooza' );?></p>
     
    173190            'video' => get_permalink( get_option( 'zooza_video_page_id' ) ),
    174191            'checkout' => get_permalink( get_option( 'zooza_checkout_page_id' ) ),
     192            'map' => get_permalink( get_option( 'zooza_map_page_id' ) ),
    175193        );
    176194
     
    183201
    184202        $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 );
    186205        $response = wp_remote_post( $endpoint, $args );
    187206
     
    192211        $setting = get_option( 'zooza_registration_page_id' );
    193212        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
    201220    public function field_zooza_profile_page_id() {
    202221
     
    231250
    232251    }
    233    
     252
    234253    public function field_zooza_checkout_page_id() {
    235254
     
    243262    }
    244263
     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
    245275    public function field_api_key() {
    246276
     
    260290
    261291    }
     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    }
    262309
    263310    public function admin_menu()    {
     
    273320    }
    274321
    275     /**
    276     * Register the stylesheets for the admin area.
    277     *
    278     * @since    1.0.0
    279     */
    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() function
    286         * defined in Zooza_Loader as all of the hooks are defined
    287         * in that particular class.
    288         *
    289         * The Zooza_Loader will then create the relationship
    290         * between the defined hooks and the functions defined in this
    291         * 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.0
    302     */
    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() function
    309         * defined in Zooza_Loader as all of the hooks are defined
    310         * in that particular class.
    311         *
    312         * The Zooza_Loader will then create the relationship
    313         * between the defined hooks and the functions defined in this
    314         * 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    }
    320367
    321368}
  • zooza/trunk/admin/partials/zooza-admin-display.php

    r3036912 r3268378  
    2323        <?php do_settings_sections( 'zooza' );?>
    2424        <hr/>
    25         <?php submit_button( 'Uložiť', 'primary', 'submit' );?>
     25        <?php submit_button( __('Uložiť', 'zooza'), 'primary', 'submit' );?>
    2626    </form>
    2727</div>
  • zooza/trunk/includes/class-zooza-activator.php

    r3001670 r3268378  
    3939        add_option( 'zooza_video_page_id', '' );
    4040        add_option( 'zooza_checkout_page_id', '' );
     41        add_option( 'zooza_calendar_map_id', '' );
    4142
    4243    }
  • zooza/trunk/includes/class-zooza-deactivator.php

    r3001670 r3268378  
    3939        delete_option( 'zooza_video_page_id' );
    4040        delete_option( 'zooza_checkout_page_id' );
     41        delete_option( 'zooza_map_page_id' );
    4142
    4243    }
  • zooza/trunk/includes/class-zooza.php

    r3140565 r3268378  
    2323 * version of the plugin.
    2424 *
    25  * @since      1.0.9
     25 * @since      1.1.0
    2626 * @package    Zooza
    2727 * @subpackage Zooza/includes
     
    5252     * The current version of the plugin.
    5353     *
    54      * @since    1.0.9
     54     * @since    1.1.0
    5555     * @access   protected
    5656     * @var      string    $version    The current version of the plugin.
     
    7171            $this->version = ZOOZA_VERSION;
    7272        } else {
    73             $this->version = '1.0.9';
     73            $this->version = '1.1.0';
    7474        }
    7575        $this->plugin_name = 'zooza';
  • zooza/trunk/languages/zooza-en_US.po

    r3140354 r3268378  
    55"Content-Transfer-Encoding: 8bit\n"
    66"X-Generator: POEditor.com\n"
     7"X-Domain: zooza\n"
    78"Project-Id-Version: WP Plugin\n"
    89"Language: en\n"
    910
    1011#:
    11 msgid "General settings"
     12msgid "General Settings"
    1213msgstr "General Settings"
    1314
     15#. Plugin Name of the plugin
     16#. Author of the plugin
     17#: zooza.php admin/partials/zooza-admin-display.php:18
     18msgid "Zooza"
     19msgstr "Zooza"
     20
     21#. Plugin URI of the plugin
     22#: zooza.php
     23msgid "https://zooza.online/wordpress-plugin"
     24msgstr "https://zooza.online/wordpress-plugin"
     25
     26#. Description of the plugin
     27#: zooza.php
     28msgid "Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov."
     29msgstr "Plugin for Zooza platform customers for easy setup of registration forms."
     30
     31#. Author URI of the plugin
     32#: zooza.php
     33msgid "https://zooza.online"
     34msgstr "https://zooza.online"
     35
     36#: admin/class-zooza-admin.php:70
     37msgid "Všeobecné nastavenia"
     38msgstr "General Settings"
     39
     40#: admin/class-zooza-admin.php:84
     41msgid "Registračné formuláre"
     42msgstr "Registration form"
     43
     44#: admin/class-zooza-admin.php:91
     45msgid "API kľúč"
     46msgstr "Api key"
     47
     48#: admin/class-zooza-admin.php:98
     49msgid "API key"
     50msgstr "Api key"
     51
     52#: admin/class-zooza-admin.php:106
     53msgid "Tajný kľúč"
     54msgstr "Secret key"
     55
     56#: admin/class-zooza-admin.php:114
     57msgid "Registračný formulár"
     58msgstr "Registration form"
     59
     60#: admin/class-zooza-admin.php:122
     61msgid "Kalendár"
     62msgstr "Calendar"
     63
     64#: admin/class-zooza-admin.php:130
     65msgid "Zákaznícky profil"
     66msgstr "Profile"
     67
     68#: admin/class-zooza-admin.php:138
     69msgid "Videá"
     70msgstr "Video"
     71
     72#: admin/class-zooza-admin.php:146
     73msgid "Objednávkový formulár"
     74msgstr "Checkout"
     75
     76#: admin/class-zooza-admin.php:153
     77msgid "Map"
     78msgstr "Map"
     79
     80#: admin/class-zooza-admin.php:164
     81msgid "Postup ako získať API kľúč a tajný kľúč:"
     82msgstr "How to get the API key and secret key:"
     83
     84#: admin/class-zooza-admin.php:165
     85msgid "<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>"
     86msgstr "<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
     89msgid "Vyberte stránky, na ktorých chcete mať umiestnené registračné formuláre. Samotný formulár bude automaticky vložený na koniec stránky."
     90msgstr "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
     93msgid "Uložiť"
     94msgstr "Save"
     95
  • zooza/trunk/languages/zooza-sk_SK.po

    r3140354 r3268378  
    55"Content-Transfer-Encoding: 8bit\n"
    66"X-Generator: POEditor.com\n"
     7"X-Domain: zooza\n"
    78"Project-Id-Version: WP Plugin\n"
    89"Language: sk\n"
    910
    1011#:
    11 msgid "General settings"
     12msgid "General Settings"
    1213msgstr "Všeobecné nastavenia"
    1314
     15#. Plugin Name of the plugin
     16#. Author of the plugin
     17#: zooza.php admin/partials/zooza-admin-display.php:18
     18msgid "Zooza"
     19msgstr "Zooza"
     20
     21#. Plugin URI of the plugin
     22#: zooza.php
     23msgid "https://zooza.online/wordpress-plugin"
     24msgstr "https://zooza.online/wordpress-plugin"
     25
     26#. Description of the plugin
     27#: zooza.php
     28msgid "Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov."
     29msgstr "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
     33msgid "https://zooza.online"
     34msgstr "https://zooza.online"
     35
     36#: admin/class-zooza-admin.php:70
     37msgid "Všeobecné nastavenia"
     38msgstr "Všeobecné nastavenia"
     39
     40#: admin/class-zooza-admin.php:84
     41msgid "Registračné formuláre"
     42msgstr "Registračné formuláre"
     43
     44#: admin/class-zooza-admin.php:91
     45msgid "API kľúč"
     46msgstr "API kľúč"
     47
     48#: admin/class-zooza-admin.php:98
     49msgid "API key"
     50msgstr "API kľúč"
     51
     52#: admin/class-zooza-admin.php:106
     53msgid "Tajný kľúč"
     54msgstr "Tajný kľúč"
     55
     56#: admin/class-zooza-admin.php:114
     57msgid "Registračný formulár"
     58msgstr "Registračný formulár"
     59
     60#: admin/class-zooza-admin.php:122
     61msgid "Kalendár"
     62msgstr "Kalendár"
     63
     64#: admin/class-zooza-admin.php:130
     65msgid "Zákaznícky profil"
     66msgstr "Zákaznícky profil"
     67
     68#: admin/class-zooza-admin.php:138
     69msgid "Videá"
     70msgstr "Videá"
     71
     72#: admin/class-zooza-admin.php:146
     73msgid "Objednávkový formulár"
     74msgstr "Objednávkový formulár"
     75
     76#: admin/class-zooza-admin.php:153
     77msgid "Map"
     78msgstr "Mapa"
     79
     80#: admin/class-zooza-admin.php:164
     81msgid "Postup ako získať API kľúč a tajný kľúč:"
     82msgstr "Postup ako získať API kľúč a tajný kľúč:"
     83
     84#: admin/class-zooza-admin.php:165
     85msgid "<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>"
     86msgstr "<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
     89msgid "Vyberte stránky, na ktorých chcete mať umiestnené registračné formuláre. Samotný formulár bude automaticky vložený na koniec stránky."
     90msgstr "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
     93msgid "Uložiť"
     94msgstr "Uložiť"
     95
  • zooza/trunk/languages/zooza.pot

    r3140354 r3268378  
    55"Content-Transfer-Encoding: 8bit\n"
    66"X-Generator: POEditor.com\n"
     7"X-Domain: zooza\n"
    78"Project-Id-Version: WP Plugin\n"
    8 "Language: en\n"
     9"Language: sk\n"
    910
    1011#:
    11 msgid "General settings"
     12msgid "General Settings"
    1213msgstr ""
    1314
     15#. Plugin Name of the plugin
     16#. Author of the plugin
     17#: zooza.php admin/partials/zooza-admin-display.php:18
     18msgid "Zooza"
     19msgstr ""
     20
     21#. Plugin URI of the plugin
     22#: zooza.php
     23msgid "https://zooza.online/wordpress-plugin"
     24msgstr ""
     25
     26#. Description of the plugin
     27#: zooza.php
     28msgid "Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov."
     29msgstr ""
     30
     31#. Author URI of the plugin
     32#: zooza.php
     33msgid "https://zooza.online"
     34msgstr ""
     35
     36#: admin/class-zooza-admin.php:70
     37msgid "Všeobecné nastavenia"
     38msgstr ""
     39
     40#: admin/class-zooza-admin.php:84
     41msgid "Registračné formuláre"
     42msgstr ""
     43
     44#: admin/class-zooza-admin.php:91
     45msgid "API kľúč"
     46msgstr ""
     47
     48#: admin/class-zooza-admin.php:98
     49msgid "API key"
     50msgstr ""
     51
     52#: admin/class-zooza-admin.php:106
     53msgid "Tajný kľúč"
     54msgstr ""
     55
     56#: admin/class-zooza-admin.php:114
     57msgid "Registračný formulár"
     58msgstr ""
     59
     60#: admin/class-zooza-admin.php:122
     61msgid "Kalendár"
     62msgstr ""
     63
     64#: admin/class-zooza-admin.php:130
     65msgid "Zákaznícky profil"
     66msgstr ""
     67
     68#: admin/class-zooza-admin.php:138
     69msgid "Videá"
     70msgstr ""
     71
     72#: admin/class-zooza-admin.php:146
     73msgid "Objednávkový formulár"
     74msgstr ""
     75
     76#: admin/class-zooza-admin.php:153
     77msgid "Map"
     78msgstr ""
     79
     80#: admin/class-zooza-admin.php:164
     81msgid "Postup ako získať API kľúč a tajný kľúč:"
     82msgstr ""
     83
     84#: admin/class-zooza-admin.php:165
     85msgid "<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>"
     86msgstr ""
     87
     88#: admin/class-zooza-admin.php:175
     89msgid "Vyberte stránky, na ktorých chcete mať umiestnené registračné formuláre. Samotný formulár bude automaticky vložený na koniec stránky."
     90msgstr ""
     91
     92#: admin/partials/zooza-admin-display.php:25
     93msgid "Uložiť"
     94msgstr ""
     95
  • zooza/trunk/public/class-zooza-public.php

    r3140565 r3268378  
    11<?php
    2 if( ! defined( 'ABSPATH' ) ) exit;
     2if (!defined('ABSPATH')) exit;
    33/**
    44 * The public-facing functionality of the plugin.
     
    2121 * @author     Zooza <hello@zooza.sk>
    2222 */
    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() ) {
     23class 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()) {
    6064            return $content;
    6165        }
    6266
    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) {
    6671            return $content;
    6772        }
     
    6974        $ID = get_the_ID();
    7075
    71         if( is_null( $ID ) )    {
     76        if (is_null($ID)) {
    7277            return $content;
    7378        }
    7479
    7580        $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'),
    8187        );
    8288
    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);
    8894
    8995            }
     
    95101    }
    96102
    97     private function get_code( $widget, $api_key )    {
     103    private function get_code($widget, $api_key)
     104    {
    98105
    99106        $version = 'v1';
    100107
    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)) {
    104111            $version = 'v2';
    105112        }
    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'>
    108116( function() {
    109117function async_load(){
    110118    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/';
    112120    s.src = url + ( url.indexOf( '?' ) >= 0 ? '&' : '?' ) + 'ref=' + encodeURIComponent( window.location.href ) + '&type=%s';
    113121    var embedder = document.getElementById( '%s' );
     
    120128}
    121129} )();
    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    }
    171270
    172271}
     272
  • zooza/trunk/zooza.php

    r3140565 r3268378  
    1717 * Plugin URI:        https://zooza.online/wordpress-plugin
    1818 * Description:       Plugin pre zákazníkov platformy Zooza pre jednoduché nastavenie registračných formulárov.
    19  * Version:           1.0.9
     19 * Version:           1.1.0
    2020 * Author:            Zooza
    2121 * Author URI:        https://zooza.online
     
    3636 * Rename this for your plugin and update it as you release new versions.
    3737 */
    38 define( 'ZOOZA_VERSION', '1.0.9' );
     38define( 'ZOOZA_VERSION', '1.1.0' );
    3939
    4040/**
Note: See TracChangeset for help on using the changeset viewer.