Esempio n. 1
0
 /** 
  * Called via AJAX to submit the subscribe form. 
  *
  * @since 1.5.2
  * @return string The JSON encoded response.
  */
 public function submit()
 {
     $name = isset($_POST['name']) ? sanitize_text_field($_POST['name']) : false;
     $email = isset($_POST['email']) ? sanitize_email($_POST['email']) : false;
     $node_id = isset($_POST['node_id']) ? sanitize_text_field($_POST['node_id']) : false;
     $result = array('action' => false, 'error' => false, 'message' => false, 'url' => false);
     if ($email && $node_id) {
         $module = FLBuilderModel::get_module($node_id);
         $settings = $module->settings;
         // Subscribe.
         $instance = FLBuilderServices::get_service_instance($settings->service);
         $response = $instance->subscribe($settings, $email, $name);
         // Check for an error from the service.
         if ($response['error']) {
             $result['error'] = $response['error'];
         } else {
             $result['action'] = $settings->success_action;
             if ('message' == $settings->success_action) {
                 $result['message'] = $settings->success_message;
             } else {
                 $result['url'] = $settings->success_url;
             }
         }
     } else {
         $result['error'] = __('There was an error subscribing. Please try again.', 'fl-builder');
     }
     echo json_encode($result);
     die;
 }
 /**
  * Returns an array of partial refresh data.
  *
  * @since 1.7
  * @access private
  * @return array
  */
 private static function get_partial_refresh_data()
 {
     // Get the data if it's not cached.
     if (!self::$partial_refresh_data) {
         $post_data = FLBuilderModel::get_post_data();
         $partial_refresh = false;
         // Check for partial refresh if we have a node ID.
         if (isset($post_data['node_id'])) {
             // Get the node.
             $node_id = $post_data['node_id'];
             $node = FLBuilderModel::get_node($post_data['node_id']);
             // Check a module for partial refresh.
             if ($node && 'module' == $node->type) {
                 $node = FLBuilderModel::get_module($node_id);
                 $node_type = 'module';
                 $partial_refresh = $node->partial_refresh;
             } else {
                 if ($node) {
                     $node_type = $node->type;
                     $partial_refresh = self::node_modules_support_partial_refresh($node);
                 }
             }
         }
         // Clear the node data if we're not doing a partial refresh.
         if (!$partial_refresh) {
             $node_id = null;
             $node = null;
             $node_type = null;
         }
         // Cache the partial refresh data.
         self::$partial_refresh_data = array('is_partial_refresh' => $partial_refresh, 'node_id' => $node_id, 'node' => $node, 'node_type' => $node_type);
     }
     // Return the data.
     return self::$partial_refresh_data;
 }
 /**
  * Render the markup for service specific fields. 
  *
  * Called via the fl_ajax_fl_builder_render_service_fields action.
  *
  * @since 1.5.4
  * @return string The JSON encoded response.
  */
 public static function render_fields()
 {
     $post_data = FLBuilderModel::get_post_data();
     $module = FLBuilderModel::get_module($post_data['node_id']);
     $instance = self::get_service_instance($post_data['service']);
     $response = $instance->render_fields($post_data['account'], $module->settings);
     echo json_encode($response);
     die;
 }
 /**
  * Renders the settings lightbox for a module.
  *
  * @since 1.0
  * @param string $node_id The module node ID.
  * @param string $type The type of module.
  * @param string $parent_id The parent column node ID.
  * @param bool $return Whether to return the layout data or echo it.
  * @return void
  */
 public static function render_module_settings($node_id = null, $type = null, $parent_id = null, $return = false)
 {
     $post_data = FLBuilderModel::get_post_data();
     $node_id = isset($post_data['node_id']) ? $post_data['node_id'] : $node_id;
     $type = isset($post_data['type']) ? $post_data['type'] : $type;
     $parent_id = isset($post_data['parent_id']) ? $post_data['parent_id'] : $parent_id;
     $buttons = array();
     // Get the module and settings.
     if ($node_id) {
         $module = FLBuilderModel::get_module($node_id);
         $settings = $module->settings;
     } else {
         $module = FLBuilderModel::$modules[$type];
         $settings = FLBuilderModel::get_module_defaults($type);
     }
     // Is this module global?
     $global = FLBuilderModel::is_node_global($module);
     // Add the Save As button?
     if (!$global && !FLBuilderModel::is_post_node_template() && FLBuilderModel::node_templates_enabled()) {
         $buttons[] = 'save-as';
     }
     // Render the settings CSS/JS.
     if (file_exists($module->dir . 'css/settings.css')) {
         echo '<link class="fl-builder-settings-css" rel="stylesheet" href="' . $module->url . 'css/settings.css" />';
     }
     if (file_exists($module->dir . 'js/settings.js')) {
         echo '<script class="fl-builder-settings-js" src="' . $module->url . 'js/settings.js"></script>';
     }
     // Render the form.
     echo self::render_settings(array('class' => 'fl-builder-module-settings fl-builder-' . $type . '-settings', 'attrs' => 'data-node="' . $node_id . '" data-parent="' . $parent_id . '" data-type="' . $type . '"', 'title' => sprintf(_x('%s Settings', '%s stands for module name.', 'fl-builder'), $module->name), 'badges' => $global ? array('global' => _x('Global', 'Indicator for global node templates.', 'fl-builder')) : array(), 'tabs' => $module->form, 'buttons' => $buttons), $settings, $return);
 }
Esempio n. 5
0
 /**
  * Renders the JavaScript for a single module.
  *
  * @since 1.7
  * @param string|object $module_id A module ID or object.
  * @param array $compiled An array of module types that have already has frontend.js compiled.
  * @return string
  */
 public static function render_module_js($module_id, &$compiled = array())
 {
     $module = is_object($module_id) ? $module_id : FLBuilderModel::get_module($module_id);
     $global_settings = FLBuilderModel::get_global_settings();
     $js = '';
     // Global module JS
     $file = $module->dir . 'js/frontend.js';
     if (file_exists($file) && !in_array($module->settings->type, $compiled)) {
         $js .= "\n" . file_get_contents($file);
         $compiled[] = $module->settings->type;
     }
     // Instance module JS
     $file = $module->dir . 'includes/frontend.js.php';
     $settings = $module->settings;
     $id = $module->node;
     if (file_exists($file)) {
         ob_start();
         include $file;
         $js .= ob_get_clean();
     }
     // Return the JS.
     return $js;
 }
 /**
  * Renders the settings lightbox for a module.
  *
  * @since 1.0
  * @param string $node_id The module node ID.
  * @param string $type The type of module.
  * @param string $parent_id The parent column node ID.
  * @param bool $return Whether to return the layout data or echo it.
  * @return void
  */
 public static function render_module_settings($node_id = null, $type = null, $parent_id = null, $return = false)
 {
     $post_data = FLBuilderModel::get_post_data();
     $node_id = isset($post_data['node_id']) ? $post_data['node_id'] : $node_id;
     $type = isset($post_data['type']) ? $post_data['type'] : $type;
     $parent_id = isset($post_data['parent_id']) ? $post_data['parent_id'] : $parent_id;
     if ($node_id) {
         $module = FLBuilderModel::get_module($node_id);
         $settings = $module->settings;
     } else {
         $module = FLBuilderModel::$modules[$type];
         $settings = FLBuilderModel::get_module_defaults($type);
     }
     if (file_exists($module->dir . 'css/settings.css')) {
         echo '<link class="fl-builder-settings-css" rel="stylesheet" href="' . $module->url . 'css/settings.css" />';
     }
     if (file_exists($module->dir . 'js/settings.js')) {
         echo '<script class="fl-builder-settings-js" src="' . $module->url . 'js/settings.js"></script>';
     }
     echo self::render_settings(array('class' => 'fl-builder-module-settings fl-builder-' . $type . '-settings', 'attrs' => 'data-node="' . $node_id . '" data-parent="' . $parent_id . '" data-type="' . $type . '"', 'title' => sprintf(_x('%s Settings', '%s stands for module name.', 'fl-builder'), $module->name), 'tabs' => $module->form), $settings, $return);
 }