addActions(self::$actions); } public function init() { // Initialize Gutenberg Block $this->block_init(); } // Initialize plug-in public function admin_init() { if(!current_user_can('edit_posts') && !current_user_can('edit_pages')) return; register_setting('cognito_plugin', 'cognito_api_key'); register_setting('cognito_plugin', 'cognito_admin_key'); register_setting('cognito_plugin', 'cognito_public_key'); register_setting('cognito_plugin', 'cognito_organization'); // If the flag to delete options was passed-in, delete them if (isset($_GET['cog_clear']) && $_GET['cog_clear'] == '1') { delete_option('cognito_api_key'); delete_option('cognito_admin_key'); delete_option('cognito_public_key'); delete_option('cognito_organization'); } // Initialize TinyMCE Plugin $this->tinymce_init(); } // Initialize block public function block_init() { $dir = dirname( __FILE__ ); $asset_file = include( plugin_dir_path( __FILE__ ) . 'dist/index.asset.php'); // Register global block styles wp_register_style( 'cognito-block-global-css', // Handle. plugins_url( 'dist/style.css', __FILE__ ), is_admin() ? array( 'wp-editor' ) : null, // Dependency to include the CSS after it. null // filemtime( plugin_dir_path( __DIR__ ) . 'dist/blocks.style.build.css' ) // Version: File modification time. ); // Register block editor script for backend wp_register_script( 'cognito-block-editor-js', plugins_url( 'dist/index.js', __FILE__ ), $asset_file['dependencies'], $asset_file['version'] ); // Register block editor styles for backend. wp_register_style( 'cognito-block-editor-css', // Handle. plugins_url( 'dist/editor.css', __FILE__ ), // Block editor CSS. array( 'wp-edit-blocks' ), // Dependency to include the CSS after it. null // filemtime( plugin_dir_path( __DIR__ ) . 'dist/blocks.editor.build.css' ) // Version: File modification time. ); register_block_type( 'cognito-forms/cognito-embed', array( // Enqueue global block styles on both frontend and backend 'style' => 'cognito-block-global-css', // Enqueue block js in the editor only 'editor_script' => 'cognito-block-editor-js', // Enqueue editor block styles in the editor only 'editor_style' => 'cognito-block-editor-css' ) ); } // Initialize classic editor (TinyMCE) public function tinymce_init() { if(get_user_option('rich_editing') == 'true') { $this->addFilters(array( 'mce_buttons', 'mce_external_plugins' )); } } // Set up TinyMCE buttons public function mce_buttons($buttons) { array_push($buttons, '|', 'cognito'); return $buttons; } // Initialize TinyMCE plug-in public function mce_external_plugins( $plugin_array ) { $plugin_array['cognito_mce_plugin'] = plugins_url( '/tinymce/plugin.js', __FILE__ ); return $plugin_array; } // Initialize administration menu (left-bar) public function admin_menu() { add_menu_page('Cognito Forms', 'Cognito Forms', 'manage_options', 'Cognito', array($this, 'main_page'), "data:image/svg+xml;base64," . base64_encode( '' ) ); add_submenu_page('Cognito', 'Cognito Forms', 'View Forms', 'manage_options', 'Cognito', array($this, 'main_page')); add_submenu_page('Cognito', 'Create Form', 'New Form', 'manage_options', 'CognitoCreateForm', array($this, 'main_page')); add_submenu_page('Cognito', 'Templates', 'Templates', 'manage_options', 'CognitoTemplates', array($this, 'main_page')); add_options_page('Cognito Options', 'Cognito Forms', 'manage_options', 'CognitoOptions', array($this, 'options_page')); } // Entrypoint for Cognito Forms access public function main_page() { include 'templates/main.php'; } public function options_page() { include 'templates/options.php'; } } new CognitoFormsPlugin; }