Exemplo n.º 1
0
 /**
  * Signs a user up to the email optin list for Thomas Griffin Media.
  *
  * @since 1.0.0
  */
 public function signup()
 {
     // Validate the fields before loading the API .
     if (!isset($_REQUEST['email']) || isset($_REQUEST['email']) && empty($_REQUEST['email']) || !is_email($_REQUEST['email'])) {
         echo json_encode(array('error' => Tgmsp_Lite_Strings::get_instance()->strings['email_error']));
         die;
     }
     // Add the user to the email newsletter list.
     require_once plugin_dir_path(dirname(dirname(__FILE__))) . 'madmimi/MadMimi.class.php';
     $mimi = new MadMimi('*****@*****.**', '709d4d36e5690d97382f36ee11d7a268');
     // Add to general email list.
     $info = array('email' => $_REQUEST['email'], 'add_list' => 'Soliloquy Lite');
     $mimi->AddUser($info);
     // Ensure that we properly die at the end of processing the request.
     echo json_encode(array('success' => Tgmsp_Lite_Strings::get_instance()->strings['email_success']));
     die;
 }
Exemplo n.º 2
0
 /**
  * Adds contextual help to Soliloquy pages.
  *
  * @since 1.0.0
  *
  * @global object $post The current post object
  */
 public function contextual_help()
 {
     global $post;
     $current_screen = get_current_screen();
     /** Set a 'global' help sidebar for all Soliloquy related pages */
     if (Tgmsp_Lite::is_soliloquy_screen()) {
         $current_screen->set_help_sidebar(sprintf('<p><strong>%1$s</strong></p><p><strong><a href="' . apply_filters('tgmsp_affiliate_url', 'http://soliloquywp.com/pricing/?utm_source=orgrepo&utm_medium=link&utm_campaign=Soliloquy%2BLite') . '" title="%2$s" target="_blank">%2$s</a></strong></p>', Tgmsp_Lite_Strings::get_instance()->strings['sidebar_help_title'], Tgmsp_Lite_Strings::get_instance()->strings['sidebar_help_upgrade']));
     }
     /** Set help for the main edit screen */
     if ('edit-soliloquy' == $current_screen->id && Tgmsp_Lite::is_soliloquy_screen()) {
         $current_screen->add_help_tab(array('id' => 'soliloquy-main-help', 'title' => Tgmsp_Lite_Strings::get_instance()->strings['overview'], 'content' => sprintf('<p>%s</p><p>%s</p><p><strong>%s</strong></p>', Tgmsp_Lite_Strings::get_instance()->strings['main_help'], Tgmsp_Lite_Strings::get_instance()->strings['main_help_two'], sprintf(Tgmsp_Lite_Strings::get_instance()->strings['upgrade_nag'], sprintf('<a href="' . apply_filters('tgmsp_affiliate_url', 'http://soliloquywp.com/pricing/?utm_source=orgrepo&utm_medium=link&utm_campaign=Soliloquy%2BLite') . '" title="%1$s" target="_blank">%1$s</a>', Tgmsp_Lite_Strings::get_instance()->strings['upgrade_nag_link']), ''))));
     }
     /** Set help for the Add New and Edit screens */
     if (Tgmsp_Lite::is_soliloquy_add_edit_screen()) {
         $current_screen->add_help_tab(array('id' => 'soliloquy-add-help', 'title' => Tgmsp_Lite_Strings::get_instance()->strings['overview'], 'content' => sprintf('<p>%s</p>', Tgmsp_Lite_Strings::get_instance()->strings['add_edit_help'])));
         $current_screen->add_help_tab(array('id' => 'soliloquy-advanced-help', 'title' => Tgmsp_Lite_Strings::get_instance()->strings['advanced_help'], 'content' => sprintf('<p><strong>%1$s</strong></p><p><a href="' . apply_filters('tgmsp_affiliate_url', 'http://soliloquywp.com/pricing/?utm_source=orgrepo&utm_medium=link&utm_campaign=Soliloquy%2BLite') . '" title="%2$s" target="_blank"><strong>%2$s</strong></a></p><p><a href="http://demo.soliloquywp.com/wp-admin/" title="%3$s" target="_blank"><em>%3$s</em></a></p>', Tgmsp_Lite_Strings::get_instance()->strings['advanced_help_desc'], Tgmsp_Lite_Strings::get_instance()->strings['advanced_help_up'], Tgmsp_Lite_Strings::get_instance()->strings['advanced_help_demo'])));
     }
 }
Exemplo n.º 3
0
 /**
  * Enqueue custom scripts and styles for the Soliloquy post type.
  *
  * @since 1.0.0
  *
  * @global int $id The current post ID
  * @global object $post The current post object
  */
 public function load_assets()
 {
     global $id, $post;
     /** Load for any Soliloquy screen */
     if (Tgmsp_Lite::is_soliloquy_screen()) {
         wp_enqueue_style('soliloquy-admin');
         /** Send the post ID along with our script */
         if (Tgmsp_Lite::is_soliloquy_add_edit_screen()) {
             $post_id = null === $id ? $post->ID : $id;
         } else {
             $post_id = 0;
         }
         /** Store script arguments in an array */
         $args = apply_filters('tgmsp_slider_object_args', array('alt' => Tgmsp_Lite_Strings::get_instance()->strings['image_alt'], 'ajaxurl' => admin_url('admin-ajax.php'), 'caption' => Tgmsp_Lite_Strings::get_instance()->strings['image_caption'], 'dismissnonce' => wp_create_nonce('soliloquy_dismissing'), 'dismissing' => Tgmsp_Lite_Strings::get_instance()->strings['dismissing'], 'duration' => 600, 'id' => $post_id, 'height' => 300, 'link' => Tgmsp_Lite_Strings::get_instance()->strings['image_link'], 'linknonce' => wp_create_nonce('soliloquy_linking'), 'linktitle' => Tgmsp_Lite_Strings::get_instance()->strings['image_url_title'], 'loading' => Tgmsp_Lite_Strings::get_instance()->strings['loading'], 'metadesc' => Tgmsp_Lite_Strings::get_instance()->strings['image_meta'], 'metanonce' => wp_create_nonce('soliloquy_meta'), 'metatitle' => Tgmsp_Lite_Strings::get_instance()->strings['update_meta'], 'modify' => Tgmsp_Lite_Strings::get_instance()->strings['modify_image'], 'modifytb' => Tgmsp_Lite_Strings::get_instance()->strings['modify_image_tb'], 'nonce' => wp_create_nonce('soliloquy_uploader'), 'remove' => Tgmsp_Lite_Strings::get_instance()->strings['remove_image'], 'removenonce' => wp_create_nonce('soliloquy_remove'), 'removing' => Tgmsp_Lite_Strings::get_instance()->strings['removing'], 'saving' => Tgmsp_Lite_Strings::get_instance()->strings['saving'], 'sortnonce' => wp_create_nonce('soliloquy_sortable'), 'speed' => 7000, 'spinner' => plugins_url('css/images/loading.gif', dirname(dirname(__FILE__))), 'savemeta' => Tgmsp_Lite_Strings::get_instance()->strings['save_meta'], 'upload' => Tgmsp_Lite_Strings::get_instance()->strings['upload_images_tb'], 'tab' => Tgmsp_Lite_Strings::get_instance()->strings['new_tab'], 'title' => Tgmsp_Lite_Strings::get_instance()->strings['image_title'], 'url' => Tgmsp_Lite_Strings::get_instance()->strings['image_url'], 'width' => 600));
         wp_enqueue_script('soliloquy-admin');
         wp_localize_script('soliloquy-admin', 'soliloquy', $args);
     }
     /** Only load for the Soliloquy post type add and edit screens */
     if (Tgmsp_Lite::is_soliloquy_add_edit_screen()) {
         wp_enqueue_script('jquery-ui-sortable');
         add_thickbox();
     }
 }
Exemplo n.º 4
0
 /**
  * Customize the post columns for the Soliloquy post type.
  *
  * @since 1.0.0
  *
  * @param array $columns The default columns provided by WP_List_Table
  */
 public function soliloquy_columns($columns)
 {
     $columns = array('cb' => '<input type="checkbox" />', 'title' => Tgmsp_Lite_Strings::get_instance()->strings['column_title'], 'shortcode' => Tgmsp_Lite_Strings::get_instance()->strings['column_shortcode'], 'template' => Tgmsp_Lite_Strings::get_instance()->strings['column_function'], 'images' => Tgmsp_Lite_Strings::get_instance()->strings['column_number'], 'modified' => Tgmsp_Lite_Strings::get_instance()->strings['column_modified'], 'date' => Tgmsp_Lite_Strings::get_instance()->strings['column_date']);
     return $columns;
 }
Exemplo n.º 5
0
 /**
  * Template tag function for outputting the slider within templates.
  *
  * @since 1.0.0
  *
  * @package Soliloquy Lite
  * @param int $id The Soliloquy slider ID
  * @param bool $return Flag for returning or echoing the slider content
  */
 function soliloquy_slider($id, $return = false)
 {
     $id = absint($id);
     /** Return if no slider ID has been entered or if it is not valid */
     if (!$id) {
         printf('<p>%s</p>', Tgmsp_Lite_Strings::get_instance()->strings['no_id']);
         return;
     }
     $validate = get_post($id, OBJECT);
     if (!$validate || isset($validate->post_type) && 'soliloquy' !== $validate->post_type) {
         printf('<p>%s</p>', Tgmsp_Lite_Strings::get_instance()->strings['invalid_id']);
         return;
     }
     if ($return) {
         return do_shortcode('[soliloquy id="' . $id . '"]');
     } else {
         echo do_shortcode('[soliloquy id="' . $id . '"]');
     }
 }
Exemplo n.º 6
0
 /**
  * Add an extra image meta field to store image links.
  *
  * @since 1.0.0
  *
  * @param array $fields Default array of meta fields for uploads
  * @param object $attachment The current attachment object
  */
 public function add_image_link($fields, $attachment)
 {
     if ($this->is_our_context() || Tgmsp_Lite::is_soliloquy_screen()) {
         $fields['soliloquy_link'] = apply_filters('tgmsp_extra_media_fields_link', array('label' => Tgmsp_Lite_Strings::get_instance()->strings['image_link'], 'input' => 'text', 'value' => get_post_meta($attachment->ID, '_soliloquy_image_link', true)));
         $fields['soliloquy_link_title'] = apply_filters('tgmsp_extra_media_fields_link_title', array('label' => Tgmsp_Lite_Strings::get_instance()->strings['image_link_title'], 'input' => 'text', 'value' => get_post_meta($attachment->ID, '_soliloquy_image_link_title', true)));
         $fields['soliloquy_link_tab'] = apply_filters('tgmsp_extra_media_fields_link_tab', array('label' => Tgmsp_Lite_Strings::get_instance()->strings['new_tab'], 'input' => 'html', 'html' => '<input id="attachments[' . $attachment->ID . '][soliloquy_link_tab]" name="attachments[' . $attachment->ID . '][soliloquy_link_tab]" type="checkbox" value="' . get_post_meta($attachment->ID, '_soliloquy_image_link_tab', true) . '"' . checked(get_post_meta($attachment->ID, '_soliloquy_image_link_tab', true), 1, false) . ' />'));
         $fields = apply_filters('tgmsp_media_fields', $fields, $attachment);
     }
     return $fields;
 }
Exemplo n.º 7
0
    /**
     * Outputs the jQuery and HTML necessary to insert a slider when the user
     * uses the button added to the media buttons above TinyMCE.
     *
     * @since 1.0.0
     *
     * @global string $pagenow The current page slug
     */
    public function admin_footer()
    {
        global $pagenow;
        /** Only run in post/page creation and edit screens */
        if (in_array($pagenow, array('post.php', 'page.php', 'post-new.php', 'post-edit.php'))) {
            /** Get all published sliders */
            $sliders = get_posts(array('post_type' => 'soliloquy', 'posts_per_page' => -1, 'post_status' => 'publish'));
            ?>
			<script type="text/javascript">
				function insertSlider() {
					var id = jQuery('#select-soliloquy-slider').val();

					/** Return early if no slider is selected */
					if ( '' == id ) {
						alert('<?php 
            echo esc_js(Tgmsp_Lite_Strings::get_instance()->strings['slider_select']);
            ?>
');
						return;
					}

					/** Send the shortcode to the editor */
					window.send_to_editor('[soliloquy id="' + id + '"]');
				}
			</script>

			<div id="choose-soliloquy-slider" style="display: none;">
				<div class="wrap" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;">
					<div id="icon-soliloquy" class="icon32" style="background: url(<?php 
            echo plugins_url('css/images/title-icon.png', dirname(dirname(__FILE__)));
            ?>
) no-repeat scroll 0 50%; height: 36px; width: 36px;"><br></div>
					<h2><?php 
            echo Tgmsp_Lite_Strings::get_instance()->strings['slider_choose'];
            ?>
</h2>
					<?php 
            do_action('tgmsp_before_slider_insertion', $sliders);
            ?>
					<p style="font-weight: bold; padding-bottom: 10px;"><?php 
            echo Tgmsp_Lite_Strings::get_instance()->strings['slider_select_desc'];
            ?>
</p>
					<select id="select-soliloquy-slider" style="clear: both; display: block; margin-bottom: 1em;">
					<?php 
            foreach ($sliders as $slider) {
                echo '<option value="' . absint($slider->ID) . '">' . esc_attr($slider->post_title) . '</option>';
            }
            ?>
					</select>

					<input type="button" id="soliloquy-insert-slider" class="button-primary" value="<?php 
            echo esc_attr(Tgmsp_Lite_Strings::get_instance()->strings['slider_select_insert']);
            ?>
" onclick="insertSlider();" />
					<a id="soliloquy-cancel-slider" class="button-secondary" onclick="tb_remove();" title="<?php 
            echo esc_attr(Tgmsp_Lite_Strings::get_instance()->strings['slider_select_cancel']);
            ?>
"><?php 
            echo Tgmsp_Lite_Strings::get_instance()->strings['slider_select_cancel'];
            ?>
</a>
					<?php 
            do_action('tgmsp_after_slider_insertion', $sliders);
            ?>
				</div>
			</div>
			<?php 
        }
    }
Exemplo n.º 8
0
 /**
  * Outputs slider data in a shortcode called 'soliloquy'.
  *
  * @since 1.0.0
  *
  * @global array $soliloquy_data An array of data for the current Soliloquy ID
  * @global int $soliloquy_count Incremental variable for each Soliloquy on current page
  * @param array $atts Array of shortcode attributes
  * @return string $slider Concatenated string of slider data
  */
 public function shortcode($atts)
 {
     /** Create global variables to store all soliloquy ID's and meta on the current page */
     $soliloquy_data = array();
     $soliloquy_count = 0;
     global $soliloquy_data, $soliloquy_count;
     /** Extract shortcode atts */
     extract(shortcode_atts(array('id' => 0), $atts));
     /** Return if no slider ID has been entered or if it is not valid */
     if (!$id) {
         printf('<p>%s</p>', Tgmsp_Lite_Strings::get_instance()->strings['no_id']);
         return;
     }
     $validate = get_post($id, OBJECT);
     if (!$validate || isset($validate->post_type) && 'soliloquy' !== $validate->post_type) {
         printf('<p>%s</p>', Tgmsp_Lite_Strings::get_instance()->strings['invalid_id']);
         return;
     }
     /** Ok, we have a valid slider ID - store all data in one variable and get started */
     $soliloquy_data[absint($soliloquy_count)]['id'] = $id;
     $soliloquy_data[absint($soliloquy_count)]['meta'] = get_post_meta($id, '_soliloquy_settings', true);
     $slider = '';
     $images = $this->get_images($id, $soliloquy_data[absint($soliloquy_count)]['meta']);
     $i = 1;
     $preloader = false;
     /** Only proceed if we have images to output */
     if ($images) {
         /** Make sure jQuery is loaded and load script and slider */
         wp_enqueue_script('soliloquy-script');
         wp_enqueue_style('soliloquy-style');
         add_action('wp_footer', array($this, 'slider_script'), 99);
         /** Allow devs to circumvent the entire slider if necessary - beware, this filter is powerful - use with caution */
         $pre = apply_filters('tgmsp_pre_load_slider', false, $id, $images, $soliloquy_data, $soliloquy_count, $slider);
         if ($pre) {
             return $pre;
         }
         do_action('tgmsp_before_slider_output', $id, $images, $soliloquy_data, $soliloquy_count, $slider);
         /** If a custom size is chosen, all image sizes will be cropped the same, so grab width/height from first image */
         $width = $soliloquy_data[absint($soliloquy_count)]['meta']['width'] ? $soliloquy_data[absint($soliloquy_count)]['meta']['width'] : $images[0]['width'];
         $width = $ratio_width = apply_filters('tgmsp_slider_width', $width, $id);
         $width = preg_match('|%$|', trim($width)) ? trim($width) . ';' : absint($width) . 'px;';
         $height = $soliloquy_data[absint($soliloquy_count)]['meta']['height'] ? $soliloquy_data[absint($soliloquy_count)]['meta']['height'] : $images[0]['height'];
         $height = $ratio_height = apply_filters('tgmsp_slider_height', $height, $id);
         $height = preg_match('|%$|', trim($height)) ? trim($height) . ';' : absint($height) . 'px;';
         // If the user wants a preloader image, store the aspect ratio for dynamic height calculation.
         if (isset($soliloquy_data[absint($soliloquy_count)]['meta']['preloader']) && $soliloquy_data[absint($soliloquy_count)]['meta']['preloader']) {
             $preloader = true;
             $ratio_width = preg_match('|%$|', trim($ratio_width)) ? str_replace('%', '', $ratio_width) : absint($ratio_width);
             $ratio_height = preg_match('|%$|', trim($ratio_height)) ? str_replace('%', '', $ratio_height) : absint($ratio_height);
             $soliloquy_data[absint($soliloquy_count)]['ratio'] = $ratio_width / $ratio_height;
             add_action('tgmsp_callback_start_' . $id, array($this, 'preloader'));
             add_filter('tgmsp_slider_classes', array($this, 'preloader_class'));
         }
         /** Output the slider info */
         $slider = apply_filters('tgmsp_before_slider', $slider, $id, $images, $soliloquy_data, absint($soliloquy_count));
         $slider .= '<div id="soliloquy-container-' . esc_attr($id) . '" ' . $this->get_custom_slider_classes() . ' style="' . apply_filters('tgmsp_slider_width_output', 'max-width: ' . $width, $width, $id) . ' ' . apply_filters('tgmsp_slider_height_output', 'max-height: ' . $height, $height, $id) . ' ' . apply_filters('tgmsp_slider_container_style', '', $id) . '">';
         $slider .= '<div id="soliloquy-' . esc_attr($id) . '" class="soliloquy">';
         $slider .= '<ul id="soliloquy-list-' . esc_attr($id) . '" class="soliloquy-slides">';
         foreach ($images as $image) {
             $alt = empty($image['alt']) ? apply_filters('tgmsp_no_alt', '', $id, $image) : $image['alt'];
             $title = empty($image['title']) ? apply_filters('tgmsp_no_title', '', $id, $image) : $image['title'];
             $link_title = empty($image['linktitle']) ? apply_filters('tgmsp_no_link_title', '', $id, $image) : $image['linktitle'];
             $link_target = empty($image['linktab']) ? apply_filters('tgmsp_no_link_target', '', $id, $image) : 'target="_blank"';
             $slide = '<li id="soliloquy-' . esc_attr($id) . '-item-' . $i . '" class="soliloquy-item" style="' . apply_filters('tgmsp_slider_item_style', 'display: none;', $id, $image, $i) . '" ' . apply_filters('tgmsp_slider_item_attr', '', $id, $image, $i) . '>';
             if (!empty($image['link'])) {
                 $slide .= apply_filters('tgmsp_link_output', '<a href="' . esc_url($image['link']) . '" title="' . esc_attr($link_title) . '" ' . $link_target . '>', $id, $image, $link_title, $link_target);
             }
             $slide .= apply_filters('tgmsp_image_output', '<img class="soliloquy-item-image" src="' . esc_url($image['src']) . '" alt="' . esc_attr($alt) . '" title="' . esc_attr($title) . '" />', $id, $image, $alt, $title);
             if (!empty($image['link'])) {
                 $slide .= '</a>';
             }
             if (!empty($image['caption'])) {
                 $slide .= apply_filters('tgmsp_caption_output', '<div class="soliloquy-caption"><div class="soliloquy-caption-inside">' . $image['caption'] . '</div></div>', $id, $image);
             }
             $slide .= '</li>';
             $slider .= apply_filters('tgmsp_individual_slide', $slide, $id, $image, $i);
             $i++;
         }
         $slider .= '</ul>';
         $slider = apply_filters('tgmsp_inside_slider', $slider, $id, $images, $soliloquy_data, absint($soliloquy_count));
         $slider .= '</div>';
         $slider = apply_filters('tgmsp_inside_slider_container', $slider, $id, $images, $soliloquy_data, absint($soliloquy_count));
         $slider .= '</div>';
         $slider = apply_filters('tgmsp_after_slider', $slider, $id, $images, $soliloquy_data, absint($soliloquy_count));
         // If we are adding a preloading icon, do it now.
         if ($preloader) {
             $slider .= '<style type="text/css">.soliloquy-container.soliloquy-preloader{background: url("' . plugins_url("css/images/preloader.gif", dirname(dirname(__FILE__))) . '") no-repeat scroll 50% 50%;}@media only screen and (-webkit-min-device-pixel-ratio: 1.5),only screen and (-o-min-device-pixel-ratio: 3/2),only screen and (min--moz-device-pixel-ratio: 1.5),only screen and (min-device-pixel-ratio: 1.5){.soliloquy-container.soliloquy-preloader{background-image: url("' . plugins_url("css/images/preloader@2x.gif", dirname(dirname(__FILE__))) . '");background-size: 16px 16px;}}</style>';
         }
     }
     /** Increment the counter in case there are multiple slider instances on the same page */
     $soliloquy_count++;
     return apply_filters('tgmsp_slider_shortcode', $slider, $id, $images);
 }
Exemplo n.º 9
0
 /**
  * Outputs any error messages when verifying license keys.
  *
  * @since 1.0.0
  */
 public function admin_notices()
 {
     if (Tgmsp_Lite::is_soliloquy_screen() && current_user_can('manage_options')) {
         /** If a user hasn't dismissed the notice yet, output it for them to upgrade */
         if (!get_user_meta(get_current_user_id(), 'soliloquy_dismissed_notice', true)) {
             add_settings_error('tgmsp', 'tgmsp-upgrade-soliloquy', sprintf(Tgmsp_Lite_Strings::get_instance()->strings['upgrade_nag'], sprintf('<a href="' . apply_filters('tgmsp_affiliate_url', 'http://soliloquywp.com/pricing/?utm_source=orgrepo&utm_medium=link&utm_campaign=Soliloquy%2BLite') . '" title="%1$s" target="_blank">%1$s</a>', Tgmsp_Lite_Strings::get_instance()->strings['upgrade_nag_link']), sprintf('<a id="soliloquy-dismiss-notice" href="#" title="%1$s">%1$s</a>', Tgmsp_Lite_Strings::get_instance()->strings['upgrade_nag_dismiss'])), 'updated');
         }
         /** Allow settings notices to be filtered */
         apply_filters('tgmsp_output_notices', settings_errors('tgmsp'));
     }
 }