Initial commit
							
								
								
									
										64
									
								
								api.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						| @@ -0,0 +1,64 @@ | |||||||
|  | <?php | ||||||
|  | /** | ||||||
|  |  * Cognito Forms WordPress Plugin. | ||||||
|  |  * | ||||||
|  |  * The Cognito Forms WordPress Plugin is free software; you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU General Public License, version 2, as | ||||||
|  |  * published by the Free Software Foundation. | ||||||
|  |  * | ||||||
|  |  * The Cognito Forms WordPress Plugin is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU General Public License | ||||||
|  |  * along with this program; if not, write to the Free Software | ||||||
|  |  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | // Cognito API access | ||||||
|  | class CognitoAPI { | ||||||
|  | 	public static $servicesBase = 'https://services.cognitoforms.com/'; | ||||||
|  | 	public static $formsBase = 'https://www.cognitoforms.com/'; | ||||||
|  | 	 | ||||||
|  | 	// Fetches all forms for an organization | ||||||
|  | 	// $api_key - API Key for the organization | ||||||
|  | 	public static function get_forms($api_key) { | ||||||
|  | 		$response = wp_remote_fopen(self::$servicesBase . 'forms/api/' . $api_key . '/forms'); | ||||||
|  |  | ||||||
|  | 		return $response; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	// Fetches organization information for a given member | ||||||
|  | 	// $session_token - Valid session token | ||||||
|  | 	public static function get_organization($session_token) { | ||||||
|  | 		$response = wp_remote_fopen(self::$servicesBase . 'member/admin/organization?token=' . urlencode($session_token));	 | ||||||
|  | 		$organization = json_decode($response); | ||||||
|  |  | ||||||
|  | 		return $organization; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	// Builds form embed script | ||||||
|  | 	public static function get_form_embed_script($public_key, $formId) { | ||||||
|  | 		$base = self::$servicesBase; | ||||||
|  | 		return <<< EOF | ||||||
|  | 			<div class="cognito"> | ||||||
|  | 				<script src="{$base}session/script/{$public_key}"></script> | ||||||
|  | 				<script>Cognito.load("forms", { id: "{$formId}" });</script> | ||||||
|  | 			</div> | ||||||
|  | EOF; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// Builds Cognito module embed script | ||||||
|  | 	public static function get_embed_script($key, $module) { | ||||||
|  | 		$base = self::$servicesBase; | ||||||
|  | 		return <<< EOF | ||||||
|  | 			<div class="cognito"> | ||||||
|  | 				<script src="{$base}session/script/{$key}"></script> | ||||||
|  | 				<script>Cognito.load("{$module}");</script> | ||||||
|  | 			</div> | ||||||
|  | EOF; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | ?> | ||||||
							
								
								
									
										
											BIN
										
									
								
								cogicon.ico
									
									
									
									
									
										Executable file
									
								
							
							
						
						| After Width: | Height: | Size: 1.1 KiB | 
							
								
								
									
										
											BIN
										
									
								
								gear.ico
									
									
									
									
									
										Executable file
									
								
							
							
						
						| After Width: | Height: | Size: 1.1 KiB | 
							
								
								
									
										188
									
								
								plugin.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						| @@ -0,0 +1,188 @@ | |||||||
|  | <?php | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | Plugin Name: Cognito Forms | ||||||
|  | Plugin URI: http://wordpress.org/plugins/cognito-forms/ | ||||||
|  | Description: Cognito Forms is a free online form builder that integrates seemlessly with WordPress. Create contact forms, registrations forms, surveys, and more! | ||||||
|  | Version: 1.1.8 | ||||||
|  | Author: Cognito Apps | ||||||
|  | Author URI: https://www.cognitoforms.com | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Cognito Forms WordPress Plugin. | ||||||
|  |  * | ||||||
|  |  * The Cognito Forms WordPress Plugin is free software; you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU General Public License, version 2, as | ||||||
|  |  * published by the Free Software Foundation. | ||||||
|  |  * | ||||||
|  |  * The Cognito Forms WordPress Plugin is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU General Public License | ||||||
|  |  * along with this program; if not, write to the Free Software | ||||||
|  |  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | require_once dirname(__FILE__) . '/api.php'; | ||||||
|  |  | ||||||
|  | // The Cognito Plugin! | ||||||
|  | class Cognito_Plugin { | ||||||
|  | 	// Initialization actions | ||||||
|  | 	private static $actions = array( | ||||||
|  | 		'admin_init', | ||||||
|  | 		'admin_menu', | ||||||
|  | 		'wp_ajax_fetch_api_keys', | ||||||
|  | 		'wp_ajax_get_forms', | ||||||
|  | 		'wp_enqueue_scripts' | ||||||
|  | 	); | ||||||
|  | 	 | ||||||
|  | 	// Supported shortcodes | ||||||
|  | 	private static $shortcodes = array( | ||||||
|  | 		'Cognito' => 'renderCognitoShortcode', | ||||||
|  | 		'cognito' => 'renderCognitoShortcode', | ||||||
|  | 		'CognitoForms' => 'renderCognitoFormsShortcode', | ||||||
|  | 		'cognitoforms' => 'renderCognitoFormsShortcode' | ||||||
|  | 	); | ||||||
|  | 	 | ||||||
|  | 	// Entrypoint | ||||||
|  | 	public function __construct() { | ||||||
|  | 		$this->addActions(self::$actions); | ||||||
|  | 		$this->addShortcodes(self::$shortcodes); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	// 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'); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		// Add tinyMCE plug-in | ||||||
|  |         if(get_user_option('rich_editing') == 'true') { | ||||||
|  | 			$this->addfilters(array(  | ||||||
|  | 				'mce_buttons', | ||||||
|  | 				'mce_external_plugins'                 | ||||||
|  |             )); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// Register required scripts | ||||||
|  | 	public function wp_enqueue_scripts() { | ||||||
|  | 		wp_enqueue_script('jquery'); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	// Ajax callback to allow fetching of API keys based on session token | ||||||
|  | 	public function wp_ajax_fetch_api_keys() { | ||||||
|  | 		$organization = CognitoAPI::get_organization($_POST['token']); | ||||||
|  |  | ||||||
|  | 		if (!is_null($organization)) { | ||||||
|  | 			delete_option('cognito_api_key'); | ||||||
|  | 			delete_option('cognito_admin_key'); | ||||||
|  | 			delete_option('cognito_public_key'); | ||||||
|  | 			delete_option('cognito_organization'); | ||||||
|  | 		 | ||||||
|  | 			update_option('cognito_api_key', $organization->apiKey); | ||||||
|  | 			update_option('cognito_admin_key', $organization->adminKey); | ||||||
|  | 			update_option('cognito_public_key', $organization->publicKey); | ||||||
|  | 			update_option('cognito_organization', $organization->code); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		die; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	// Ajax callback to allow fetching of forms for a given organization | ||||||
|  | 	public function wp_ajax_get_forms() { | ||||||
|  | 		$api_key = get_option('cognito_api_key'); | ||||||
|  | 		 | ||||||
|  | 		if ($api_key) { | ||||||
|  | 			$forms = CognitoAPI::get_forms($api_key); | ||||||
|  |  | ||||||
|  | 			echo $forms;		 | ||||||
|  | 		}		 | ||||||
|  | 		 | ||||||
|  | 		die; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	// Initialize administration menu (left-bar) | ||||||
|  | 	public function admin_menu() { | ||||||
|  | 		add_menu_page('Cognito Forms', 'Cognito Forms', 'manage_options', 'Cognito', array($this, 'main_page'), '../wp-content/plugins/cognito-forms/cogicon.ico'); | ||||||
|  | 		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')); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | 	// Called when a 'Cognito' shortcode is encountered, renders embed script | ||||||
|  | 	public function renderCognitoShortcode($atts, $content = null, $code = '') { | ||||||
|  | 		// Default to key setting, unless overridden in shortcode (allows for modules from multiple orgs) | ||||||
|  | 		$key = empty($atts['key']) ? get_option('cognito_public_key') : $atts['key']; | ||||||
|  | 		if (empty($atts['module']) || empty($atts['key'])) return ''; | ||||||
|  | 		 | ||||||
|  | 		return CognitoAPI::get_embed_script($key, $atts['module']); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	// Called when a 'CognitoForms' shortcode is encountered, renders form embed script | ||||||
|  | 	public function renderCognitoFormsShortcode($atts, $content = null, $code = '') { | ||||||
|  | 		// Default to key setting, unless overridden in shortcode (allows for modules from multiple orgs) | ||||||
|  | 		$key = empty($atts['key']) ? get_option('cognito_public_key') : $atts['key']; | ||||||
|  | 		if (empty($atts['id']) || empty($key)) return ''; | ||||||
|  | 		 | ||||||
|  | 		return CognitoAPI::get_form_embed_script($key, $atts['id']); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// Entrypoint for Cognito Forms access | ||||||
|  | 	public function main_page() {		 | ||||||
|  | 		include 'tmpl/main.php'; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	public function options_page() { | ||||||
|  | 		include 'tmpl/options.php'; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	// Set up tinyMCE buttons | ||||||
|  | 	public function mce_buttons($buttons) { | ||||||
|  | 		array_push($buttons, '|', 'cognito'); | ||||||
|  | 		return $buttons; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// Initialize tinyMCE plug-in | ||||||
|  | 	public function mce_external_plugins($plugins) { | ||||||
|  | 		$plugins['cognito'] = plugin_dir_url( __FILE__ ) . 'tinymce/plugin.js'; | ||||||
|  | 		return $plugins; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// Registers plug-in actions | ||||||
|  |     private function addActions($actions) { | ||||||
|  |         foreach($actions as $action) | ||||||
|  |             add_action($action, array($this, $action)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | 	// Registers shortcodes | ||||||
|  |     private function addShortcodes($shortcodes) { | ||||||
|  |         foreach($shortcodes as $tag => $func) | ||||||
|  |             add_shortcode($tag, array($this, $func)); | ||||||
|  |     } | ||||||
|  | 	 | ||||||
|  | 	// Registers tinyMCE filters | ||||||
|  | 	private function addFilters($filters) { | ||||||
|  | 		foreach($filters as $filter) | ||||||
|  | 			add_filter($filter, array($this, $filter)); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | new Cognito_Plugin; | ||||||
|  | ?> | ||||||
							
								
								
									
										93
									
								
								readme.txt
									
									
									
									
									
										Executable file
									
								
							
							
						
						| @@ -0,0 +1,93 @@ | |||||||
|  | === Cognito Forms === | ||||||
|  | Contributors: cognitoapps | ||||||
|  | Donate link: https://www.cognitoforms.com | ||||||
|  | Tags: form, forms, cognito, cognito forms, create form, create forms, form builder, form creator, form generator, html form, online form, online form builder, online forms, registration, survey, surveys, web form, web forms, embed, anti-spam, email form, email, responsive, payment | ||||||
|  | Requires at least: 3.5 | ||||||
|  | Tested up to: 5.6 | ||||||
|  | Stable tag: 1.1.8 | ||||||
|  | License: GPLv2 or later | ||||||
|  | License URI: http://www.gnu.org/licenses/gpl-2.0.html | ||||||
|  |  | ||||||
|  | Create responsive contact forms, order forms, registration forms and more. For free and without ever leaving WordPress. | ||||||
|  |  | ||||||
|  | == Description == | ||||||
|  | Basic or advanced, we have all the features you need to quickly create powerful online forms. | ||||||
|  |  | ||||||
|  | FREE Features: | ||||||
|  | ----------- | ||||||
|  |  | ||||||
|  | [Unlimited Forms & Fields](https://www.cognitoforms.com/features/unlimited-forms-fields)   | ||||||
|  | Collect all the data you need, no matter what - make as many forms as you want, with as many fields as you want.   | ||||||
|  | [Calculations](https://www.cognitoforms.com/features/calculations)   | ||||||
|  | Let us do the math for you - build forms with powerful calculations that can total costs, compare dates and so much more.   | ||||||
|  | [Conditional Logic](https://www.cognitoforms.com/features/conditional-logic)   | ||||||
|  | Take each of your users on a unique path through your forms and control what they see with Conditional Logic.   | ||||||
|  | [Countries, Languages & Currencies](https://www.cognitoforms.com/features/countries-languages-currencies)   | ||||||
|  | 18 languages. 121 countries. 137 currencies. Awesome forms.   | ||||||
|  | [Email Notifications](https://www.cognitoforms.com/features/email-notifications)   | ||||||
|  | Create custom autoresponder emails that include all the details of your customer's purchase or entry so they can review their order at any time.   | ||||||
|  | [Entry Management](https://www.cognitoforms.com/features/entry-management)   | ||||||
|  | Sort, filter, and organize your form submissions to help you smoothly run your business or organization. | ||||||
|  | [File Uploads](https://www.cognitoforms.com/features/file-uploads)   | ||||||
|  | Capturing multiple files at once, setting file size and type limits - it all comes free with every single Cognito Forms account.   | ||||||
|  | [Form Confirmations](https://www.cognitoforms.com/features/form-confirmations)   | ||||||
|  | Create a personalized message to confirm a user's submission and allow them to review their order or entry data.   | ||||||
|  | [Multi-Page Forms](https://www.cognitoforms.com/features/multi-page-forms)   | ||||||
|  | Get more responses to your complex surveys and long forms with page breaks, progress bars and conditional pages.   | ||||||
|  | [Payment](https://www.cognitoforms.com/features/payment)   | ||||||
|  | Secure credit and debit card payment processing through Stripe. Or upgrade to use PayPal.   | ||||||
|  | [Rating Scales](https://www.cognitoforms.com/features/rating-scales)   | ||||||
|  | Give your customers an outlet for feedback right on your forms with customizable rating scales.   | ||||||
|  | [Repeating Sections & Tables](https://www.cognitoforms.com/features/repeating-sections)   | ||||||
|  | Collect as much or as little data as your customers can give, without any extra work or adding a lot of clutter.   | ||||||
|  | [SPAM Prevention](https://www.cognitoforms.com/features/spam-prevention)   | ||||||
|  | Keep your forms easy-to-use while eliminating rogue entries with our powerful, automatic spam prevention.   | ||||||
|  | [Template Sharing](https://www.cognitoforms.com/features/template-sharing)   | ||||||
|  | Made an awesome form? Share your form as a template so others can bask in your awesomeness.   | ||||||
|  |  | ||||||
|  | **Premium Features**   | ||||||
|  | [Data Encryption](https://www.cognitoforms.com/features/data-encryption)   | ||||||
|  | Keep your form data safe and sound.   | ||||||
|  | [Document Merging](https://www.cognitoforms.com/features/document-merging)   | ||||||
|  | Create PDF and Word docs from your entry data, completely customized the way you want.   | ||||||
|  | [Electronic Signatures](https://www.cognitoforms.com/features/electronic-signatures)   | ||||||
|  | Collect signatures on every form and on any device.   | ||||||
|  | [Entry Sharing](https://www.cognitoforms.com/features/entry-sharing)   | ||||||
|  | Give your users the ability to update their entries even after they've already been submitted. | ||||||
|  | [HIPAA Compliance](https://www.cognitoforms.com/features/hipaa-compliance)   | ||||||
|  | Easily create secure forms to engage with your patients and protect their data. | ||||||
|  | [Save & Resume](https://www.cognitoforms.com/features/save-resume)   | ||||||
|  | Allow users to pick up right where they left off by saving their progress on partially completed form responses.   | ||||||
|  | [Saved Entry Views](https://www.cognitoforms.com/features/entry-management#saved)   | ||||||
|  | After you sort and filter your entry data, save those settings to create a unique entry view.    | ||||||
|  |  | ||||||
|  | Learn more at [cognitoforms.com](https://www.cognitoforms.com). | ||||||
|  |  | ||||||
|  | == Installation == | ||||||
|  |  | ||||||
|  | 1. Install and activate the plugin through the "Plugins" menu in WordPress. | ||||||
|  | 2. If you have not already done so, install and activate the "Classic Editor" plugin from the WordPress store. | ||||||
|  |  | ||||||
|  | == Frequently Asked Questions == | ||||||
|  |  | ||||||
|  | = Is Cognito Forms cloud-hosted? = | ||||||
|  |  | ||||||
|  | Yes, your forms and your submissions are securely stored in the cloud. | ||||||
|  |  | ||||||
|  | = How do I create a form? = | ||||||
|  |  | ||||||
|  | In order to create a form, you need to create a Cognito Forms account through the plugin. Once you design your form, you can embed it onto a post or a page by using the Cognito Forms icon, the orange cog, that shows up on the editor toolbar. We'll automatically add the short code for you. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | == Screenshots == | ||||||
|  |  | ||||||
|  | 1. After activation, the Cognito Forms plugin will appear in your menu. Click on the plugin to be taken to Cognito Forms. | ||||||
|  | 2. Click on the menu icon in the upper right to log in or sign up. | ||||||
|  | 3. Once logged in, build a new form from a template or from scratch. | ||||||
|  | 4. Build your form and click "Save". | ||||||
|  | 5. In your WordPress menu, add a new Page or Post. | ||||||
|  | 6. In the editor, click on the orange Cog icon for Cognito Forms. | ||||||
|  | 7. Select the form name from the drop down and click "Insert Form". | ||||||
|  | 8. The plugin inserts the Cognito Forms short code for you. | ||||||
|  | 9. Preview or post your new form! | ||||||
|  |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								screenshot-1.png
									
									
									
									
									
										Executable file
									
								
							
							
						
						| After Width: | Height: | Size: 94 KiB | 
							
								
								
									
										
											BIN
										
									
								
								screenshot-2.png
									
									
									
									
									
										Executable file
									
								
							
							
						
						| After Width: | Height: | Size: 71 KiB | 
							
								
								
									
										
											BIN
										
									
								
								screenshot-3.png
									
									
									
									
									
										Executable file
									
								
							
							
						
						| After Width: | Height: | Size: 105 KiB | 
							
								
								
									
										
											BIN
										
									
								
								screenshot-4.png
									
									
									
									
									
										Executable file
									
								
							
							
						
						| After Width: | Height: | Size: 85 KiB | 
							
								
								
									
										
											BIN
										
									
								
								screenshot-5.png
									
									
									
									
									
										Executable file
									
								
							
							
						
						| After Width: | Height: | Size: 94 KiB | 
							
								
								
									
										
											BIN
										
									
								
								screenshot-6.png
									
									
									
									
									
										Executable file
									
								
							
							
						
						| After Width: | Height: | Size: 70 KiB | 
							
								
								
									
										
											BIN
										
									
								
								screenshot-7.png
									
									
									
									
									
										Executable file
									
								
							
							
						
						| After Width: | Height: | Size: 68 KiB | 
							
								
								
									
										
											BIN
										
									
								
								screenshot-8.png
									
									
									
									
									
										Executable file
									
								
							
							
						
						| After Width: | Height: | Size: 70 KiB | 
							
								
								
									
										
											BIN
										
									
								
								screenshot-9.png
									
									
									
									
									
										Executable file
									
								
							
							
						
						| After Width: | Height: | Size: 31 KiB | 
							
								
								
									
										
											BIN
										
									
								
								tinymce/cogicon.ico
									
									
									
									
									
										Executable file
									
								
							
							
						
						| After Width: | Height: | Size: 1.1 KiB | 
							
								
								
									
										103
									
								
								tinymce/dialog.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						| @@ -0,0 +1,103 @@ | |||||||
|  | <?php | ||||||
|  | /** | ||||||
|  |  * Cognito Forms WordPress Plugin. | ||||||
|  |  * | ||||||
|  |  * The Cognito Forms WordPress Plugin is free software; you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU General Public License, version 2, as | ||||||
|  |  * published by the Free Software Foundation. | ||||||
|  |  * | ||||||
|  |  * The Cognito Forms WordPress Plugin is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU General Public License | ||||||
|  |  * along with this program; if not, write to the Free Software | ||||||
|  |  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA | ||||||
|  |  */ | ||||||
|  |  ?> | ||||||
|  | <!DOCTYPE html> | ||||||
|  | <html> | ||||||
|  | 	<head> | ||||||
|  | 		<style> | ||||||
|  | 			body { overflow: hidden; } | ||||||
|  | 			button{margin-top:20px;color: #fff !important;text-shadow: 0 1px 1px rgba(0,0,0,.3);outline: none;cursor: pointer;text-align: center;text-decoration: none;font: 14px/100% 'Open Sans Condensed', sans-serif !important;font-weight: 700 !important;padding: 5px 15px 6px;border: solid 1px #95ba14;background: #aed136;} | ||||||
|  | 			.clearlooks2 .mceTop .mceLeft, .clearlooks2 .mceTop .mceRight{background:#00B4AC;padding:20px;font-family: 'Open Sans Condensed', Arial, Helvetica, sans-serif;font-size: 18px;font-weight: 700;color: #fff;} | ||||||
|  | 			body{padding: 10px 20px!important;font-family: 'Open Sans', Arial, Helvetica, sans-serif;font-size: 14px;font-weight: 400;} | ||||||
|  | 			h3 {margin-bottom:20px!important;color:#444!important;} | ||||||
|  | 		</style> | ||||||
|  | 		<script src="../../../../wp-includes/js/jquery/jquery.js"></script> | ||||||
|  | 		<script src="../../../../wp-includes/js/tinymce/tiny_mce_popup.js"></script> | ||||||
|  | 		<script src="../../../../wp-includes/js/tinymce/utils/mctabs.js"></script> | ||||||
|  | 		<script src="../../../../wp-includes/js/tinymce/utils/form_utils.js"></script> | ||||||
|  | 		<title>Cognito Forms</title> | ||||||
|  | 		<script> | ||||||
|  | 			var titleElements = tinyMCEPopup.getWin().document.querySelectorAll('.mceTop .mceLeft, .mceTop .mceRight, .mce-title'); | ||||||
|  | 			for (var i = 0; i < titleElements.length; i++) { | ||||||
|  | 				titleElements[i].style.background = '#00B4AC'; | ||||||
|  | 				titleElements[i].style.color = '#fff'; | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			var closeElement = tinyMCEPopup.getWin().document.querySelector('.mceClose, .mce-close'); | ||||||
|  | 			if (closeElement) closeElement.style.color = '#fff'; | ||||||
|  | 			 | ||||||
|  | 			function cognito_submit() { | ||||||
|  | 				var formSelect = document.getElementById('formSelect'); | ||||||
|  | 				var shortcode = '[CognitoForms id="' + formSelect.value + '"]'; | ||||||
|  | 				 | ||||||
|  | 				if (window.tinyMCE) { | ||||||
|  | 					if (window.tinyMCE.execInstanceCommand) { | ||||||
|  | 						window.tinyMCE.execInstanceCommand('content', 'mceInsertContent', false, shortcode); | ||||||
|  | 						tinyMCEPopup.editor.execCommand('mceRepaint'); | ||||||
|  | 					} | ||||||
|  | 					else if (window.tinyMCE.focusedEditor) { | ||||||
|  | 						window.tinyMCE.focusedEditor.insertContent(shortcode); | ||||||
|  | 					} | ||||||
|  | 					 | ||||||
|  | 					tinyMCEPopup.close(); | ||||||
|  | 				} | ||||||
|  | 				 | ||||||
|  | 				return false; | ||||||
|  | 			} | ||||||
|  | 			 | ||||||
|  | 			jQuery(function() { | ||||||
|  | 				var data = { | ||||||
|  | 					action: "get_forms" | ||||||
|  | 				}; | ||||||
|  | 				jQuery.post(tinyMCEPopup.params.ajax_url, data, function(response) {  | ||||||
|  | 					if (response) { | ||||||
|  | 						var forms = JSON.parse(response); | ||||||
|  | 						 | ||||||
|  | 						var formSelect = jQuery("#formSelect"); | ||||||
|  | 						jQuery.each(forms, function() { | ||||||
|  | 							formSelect.append(jQuery("<option></option>") | ||||||
|  | 								.attr("value", this.Id) | ||||||
|  | 								.text(this.Name)); | ||||||
|  | 						}); | ||||||
|  | 						 | ||||||
|  | 						jQuery("#form-list").show(); | ||||||
|  | 					} else { | ||||||
|  | 						jQuery("#no-forms").show(); | ||||||
|  | 					} | ||||||
|  | 				}); | ||||||
|  | 			});			 | ||||||
|  | 		</script> | ||||||
|  | 	</head> | ||||||
|  | 	 | ||||||
|  | 	<body> | ||||||
|  | 		<div id="no-forms" style="display:none;"> | ||||||
|  | 			<h3>You are not logged into your Cognito Forms account.</h3> | ||||||
|  | 			<p>Please click on the "Cognito Forms" link in the menu on the left and log in to register this plug-in with your account.</p> | ||||||
|  | 		</div> | ||||||
|  | 		 | ||||||
|  | 		<div id="form-list" style="display:none;"> | ||||||
|  | 			<h3>Embed a Form</h3> | ||||||
|  | 			<form method="post" action=""> | ||||||
|  | 				<label for="formSelect">Choose a form</label> | ||||||
|  | 				<select id="formSelect"> | ||||||
|  | 				</select><br/> | ||||||
|  | 				<button id="cognito-insert-form" type="button" onclick="cognito_submit();">Insert Form</button> | ||||||
|  | 			</form> | ||||||
|  | 		</div> | ||||||
|  | 	</body> | ||||||
|  | </html> | ||||||
							
								
								
									
										
											BIN
										
									
								
								tinymce/gear.ico
									
									
									
									
									
										Executable file
									
								
							
							
						
						| After Width: | Height: | Size: 1.1 KiB | 
							
								
								
									
										24
									
								
								tinymce/plugin.js
									
									
									
									
									
										Executable file
									
								
							
							
						
						| @@ -0,0 +1,24 @@ | |||||||
|  | (function(){ | ||||||
|  |     tinymce.create('tinymce.plugins.cognito', { | ||||||
|  |         init : function(ed, url) { | ||||||
|  |             ed.addCommand('cognito_embed_window', function() { | ||||||
|  |                 ed.windowManager.open({ | ||||||
|  |                     file   : url + '/dialog.php', | ||||||
|  |                     width  : 400, | ||||||
|  |                     height : 160, | ||||||
|  |                     inline: 1 | ||||||
|  |                 }, { plugin_url : url, ajax_url: ajaxurl }); | ||||||
|  |             }); | ||||||
|  |              | ||||||
|  |             ed.addButton('cognito', { | ||||||
|  |                 title : 'Cognito Forms', | ||||||
|  | 				cmd : 'cognito_embed_window', | ||||||
|  | 				image : url + '/cogicon.ico' | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     tinymce.PluginManager.add('cognito', tinymce.plugins.cognito); | ||||||
|  |  | ||||||
|  | })() | ||||||
|  |  | ||||||
							
								
								
									
										81
									
								
								tmpl/main.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						| @@ -0,0 +1,81 @@ | |||||||
|  | <?php | ||||||
|  | /** | ||||||
|  |  * Cognito Forms WordPress Plugin. | ||||||
|  |  * | ||||||
|  |  * The Cognito Forms WordPress Plugin is free software; you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU General Public License, version 2, as | ||||||
|  |  * published by the Free Software Foundation. | ||||||
|  |  * | ||||||
|  |  * The Cognito Forms WordPress Plugin is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU General Public License | ||||||
|  |  * along with this program; if not, write to the Free Software | ||||||
|  |  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | require_once dirname(__FILE__) . '/../api.php'; | ||||||
|  |  | ||||||
|  | $url = CognitoAPI::$formsBase; | ||||||
|  |  | ||||||
|  | if ($_GET['page'] == 'CognitoCreateForm') { | ||||||
|  | 	$url = $url . 'forms/new'; | ||||||
|  | } elseif ($_GET['page'] == "CognitoTemplates") { | ||||||
|  | 	$url = $url . 'forms/templates'; | ||||||
|  | } else { | ||||||
|  | 	$url = $url . 'forms'; | ||||||
|  | } | ||||||
|  | ?> | ||||||
|  |  | ||||||
|  | <iframe id="cognito-frame" src="<?php print $url; ?>" style="width:100%; overflow-x: hidden;"></iframe> | ||||||
|  |  | ||||||
|  | <style> | ||||||
|  | 	body { overflow: hidden; } | ||||||
|  | </style> | ||||||
|  |  | ||||||
|  | <script language="javascript"> | ||||||
|  | 	var element = document.getElementById('cognito-frame'); | ||||||
|  | 	for (; element; element = element.previousSibling) { | ||||||
|  | 		if (element.nodeType === 1 && element.id !== 'cognito-frame') { | ||||||
|  | 			element.style.display = 'none'; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	var adminheight = document.getElementById('wpadminbar').clientHeight; | ||||||
|  | 	document.getElementById('cognito-frame').height = (document.body.clientHeight - adminheight) + "px"; | ||||||
|  | 	window.addEventListener("message", messageListener); | ||||||
|  | 	window.addEventListener('resize', resizeListener); | ||||||
|  | 	 | ||||||
|  | 	// Handler to watch for window resize to correctly update iframe height | ||||||
|  | 	function resizeListener(event) { | ||||||
|  | 		var adminheight = document.getElementById('wpadminbar').clientHeight; | ||||||
|  |  | ||||||
|  | 		document.getElementById('cognito-frame').height = (document.body.clientHeight) + "px"; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	// Handler to listen for session tokens being broadcast from the Cognito iframe | ||||||
|  | 	function messageListener(event) { | ||||||
|  | 		var data = event.data; | ||||||
|  |  | ||||||
|  | 		var found = data.indexOf("token:"); | ||||||
|  | 		if (found == 0) { | ||||||
|  | 			var token = data.substring("token:".length); | ||||||
|  | 			 | ||||||
|  | 			// If a session token was received, and no api key is present, update | ||||||
|  | 			fetchApiKey(token); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	// Posts token to a hidden iframe so that a separate script can fetch necessary keys | ||||||
|  | 	function fetchApiKey(token) { | ||||||
|  | 		if (!token) return; | ||||||
|  | 		var data = { | ||||||
|  | 			action: "fetch_api_keys", | ||||||
|  | 			token: token | ||||||
|  | 		}; | ||||||
|  | 		 | ||||||
|  | 		jQuery.post(ajaxurl, data, function(response) { }); | ||||||
|  | 	}	 | ||||||
|  | </script> | ||||||
							
								
								
									
										29
									
								
								tmpl/options.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						| @@ -0,0 +1,29 @@ | |||||||
|  | <h2>Cognito Forms</h2> | ||||||
|  |  | ||||||
|  | <form method="post" action="options.php"> | ||||||
|  |     <?php settings_fields('cognito_plugin'); ?> | ||||||
|  | 	 | ||||||
|  |     <table class="form-table"> | ||||||
|  |         <tr valign="top"> | ||||||
|  |         <th scope="row">API Key</th> | ||||||
|  |         <td><input type="text" name="cognito_api_key" style="width:300px;" value="<?php echo get_option('cognito_api_key'); ?>" /></td> | ||||||
|  |         </tr> | ||||||
|  |         <tr valign="top"> | ||||||
|  |         <th scope="row">Admin API Key</th> | ||||||
|  |         <td><input type="text" name="cognito_admin_key" style="width:300px;" value="<?php echo get_option('cognito_admin_key'); ?>" /></td> | ||||||
|  |         </tr> | ||||||
|  |         <tr valign="top"> | ||||||
|  |         <th scope="row">Public API Key</th> | ||||||
|  |         <td><input type="text" name="cognito_public_key" style="width:300px;" value="<?php echo get_option('cognito_public_key'); ?>" /></td> | ||||||
|  |         </tr> | ||||||
|  |         <tr valign="top"> | ||||||
|  |         <th scope="row">Organization Code</th> | ||||||
|  |         <td><input type="text" name="cognito_organization" style="width:300px;" value="<?php echo get_option('cognito_organization'); ?>" /></td> | ||||||
|  |         </tr> | ||||||
|  |     </table> | ||||||
|  |      | ||||||
|  |     <p class="submit"> | ||||||
|  |     <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" /> | ||||||
|  |     </p> | ||||||
|  |  | ||||||
|  | </form> | ||||||