Popups, Welcome Bar, Optins and Lead Generation Plugin – Icegram - Version 1.4

Version Description

Many small improvements. Support for analytics added. WordPress 4.0 compatible.

Download this release

Release Info

Developer niravmehta
Plugin Icon 128x128 Popups, Welcome Bar, Optins and Lead Generation Plugin – Icegram
Version 1.4
Comparing to
See all releases

Code changes from version 1.3 to 1.4

addons.php CHANGED
@@ -11,9 +11,6 @@ if ( empty($ig_addons) ) {
11
  <div class="wrap ig_addons_wrap">
12
  <h2>
13
  <?php _e( 'Icegram Add-ons', 'icegram' ); ?>
14
- <?php if (time() < strtotime("31 August 2014")) { ?>
15
- <span class="ig_addons_special_message">25% Discount on All Items till August 30, 2014. Use Coopon <code><a href="http://www.icegram.com/addons/?coupon-code=launch25&utm_source=inapp&utm_campaign=launch&utm_medium=store" target="_blank">LAUNCH25</a></code></span>
16
- <?php } ?>
17
  </h2>
18
  <ul class="addons">
19
  <?php
@@ -23,6 +20,18 @@ if ( empty($ig_addons) ) {
23
  <li class="addon">
24
  <a href="<?php echo $addon->link;?>?utm_source=inapp&utm_campaign=addons&utm_medium=store" target="_blank">
25
  <h3><?php echo $addon->name; ?></h3>
 
 
 
 
 
 
 
 
 
 
 
 
26
  <p>
27
  <?php
28
  if( !empty( $addon->image ) ) {
11
  <div class="wrap ig_addons_wrap">
12
  <h2>
13
  <?php _e( 'Icegram Add-ons', 'icegram' ); ?>
 
 
 
14
  </h2>
15
  <ul class="addons">
16
  <?php
20
  <li class="addon">
21
  <a href="<?php echo $addon->link;?>?utm_source=inapp&utm_campaign=addons&utm_medium=store" target="_blank">
22
  <h3><?php echo $addon->name; ?></h3>
23
+ <?php
24
+ if( !empty( $addon->category ) ) {
25
+ $categories = explode(",", $addon->category);
26
+ if (!empty($categories)) {
27
+ echo "<div class='ig_addon_category'>";
28
+ foreach ($categories as $cat) {
29
+ echo "<span class='{$cat}'>{$cat}</span> ";
30
+ }
31
+ echo "</div>";
32
+ }
33
+ }
34
+ ?>
35
  <p>
36
  <?php
37
  if( !empty( $addon->image ) ) {
assets/css/admin.css CHANGED
@@ -586,6 +586,25 @@ CSS for landing page and Help and Support
586
  .ig_addons_wrap .addons li a:focus, .ig_addons_wrap .addons li a:hover {
587
  background-color: #fff;
588
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
589
  .ig_addons_special_message {
590
  font-size: 60%;
591
  line-height: 60%;
586
  .ig_addons_wrap .addons li a:focus, .ig_addons_wrap .addons li a:hover {
587
  background-color: #fff;
588
  }
589
+ .ig_addons_wrap .addons li .ig_addon_category {
590
+ margin-top: -3.5em;
591
+ float: right;
592
+ text-transform: capitalize;
593
+ font-style: normal;
594
+ margin-right: 1em;
595
+ font-size: 80%;
596
+ }
597
+ .ig_addons_wrap .addons li .ig_addon_category span {
598
+ margin-left: 1.2em;
599
+ padding: 2px 3px;
600
+ background-color: #DEDEDE;
601
+ border-radius: .3em;
602
+ }
603
+ .ig_addons_wrap .addons li .ig_addon_category span.free {
604
+ background-color: #C3D3FF;
605
+ color: #3754a8;
606
+ }
607
+
608
  .ig_addons_special_message {
609
  font-size: 60%;
610
  line-height: 60%;
assets/js/admin.js CHANGED
@@ -227,6 +227,12 @@ jQuery(function() {
227
  jQuery('#where_page_id_chosen').find('input').trigger('click');
228
  }
229
  });
 
 
 
 
 
 
230
 
231
  jQuery('.date-picker').datepicker({
232
  dateFormat: 'yy-mm-dd',
227
  jQuery('#where_page_id_chosen').find('input').trigger('click');
228
  }
229
  });
230
+ jQuery('input#where_sitewide').on('change', function() {
231
+ jQuery('select#exclude_page_id').parent('p').slideToggle();
232
+ if (jQuery(this).is(':checked')) {
233
+ jQuery('#exclude_page_id_chosen').find('input').trigger('click');
234
+ }
235
+ });
236
 
237
  jQuery('.date-picker').datepicker({
238
  dateFormat: 'yy-mm-dd',
assets/js/icegram.js CHANGED
@@ -34,26 +34,33 @@
34
  var i = 0;
35
  this.messages = [];
36
  var self = this;
37
- jQuery.each( this.message_data, function ( i, v ) {
38
- var m = null;
39
- var classname_suffix = v['type'].split('-').join(' ').ucwords().split(' ').join('_');
40
- if (typeof (window['Icegram_Message_Type_' + classname_suffix]) === 'function') {
41
- m = new window['Icegram_Message_Type_' + classname_suffix]( v );
42
- } else {
43
- m = new Icegram_Message_Type( v );
44
- }
45
- self.messages.push( m );
46
- self.map_id_to_index['_'+v['id'] ] = i;
47
- self.map_type_to_index[ v['type'] ] = jQuery.isArray(self.map_type_to_index[ v['type'] ]) ? self.map_type_to_index[ v['type'] ] : new Array();
48
- self.map_type_to_index[ v['type'] ].push(i);
49
- });
 
 
50
 
51
- // Submit event data on unload...
52
  jQuery( window ).unload( function() {
53
  if (typeof(window.icegram.submit_tracking_data) === 'function') {
54
  window.icegram.submit_tracking_data();
55
  }
56
  } );
 
 
 
 
 
57
 
58
  // Trigger event for others!
59
  jQuery( window ).trigger( 'init.icegram', [ this ] );
@@ -127,6 +134,9 @@
127
  data: {
128
  action: 'icegram_event_track',
129
  event_data: this.tracking_data
 
 
 
130
  }
131
  });
132
  }
@@ -205,6 +215,12 @@
205
  this.el.find('.ig_content').css('background-color', this.data.bg_color);
206
  }
207
 
 
 
 
 
 
 
208
  // Hint clickability for buttons / ctas
209
  if (typeof(this.data.link) === 'string' && this.data.link != '') {
210
  this.el.parent().find('.ig_cta, .ig_button').css('cursor', 'pointer');
@@ -218,6 +234,7 @@
218
  // Set up message display trigger
219
  this.set_up_show_trigger();
220
  }
 
221
 
222
  Icegram_Message_Type.prototype.render_template = function ( ) {
223
  if ( typeof(window.icegram.get_template_fn( this.type ) ) !== 'function') {
@@ -354,6 +371,60 @@
354
  });
355
  }
356
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
357
  if (typeof Object.create != 'function') {
358
  (function () {
359
  var F = function () {};
34
  var i = 0;
35
  this.messages = [];
36
  var self = this;
37
+ if (this.message_data.length > 0) {
38
+ jQuery.each( this.message_data, function ( i, v ) {
39
+ var m = null;
40
+ var classname_suffix = v['type'].split('-').join(' ').ucwords().split(' ').join('_');
41
+ if (typeof (window['Icegram_Message_Type_' + classname_suffix]) === 'function') {
42
+ m = new window['Icegram_Message_Type_' + classname_suffix]( v );
43
+ } else {
44
+ m = new Icegram_Message_Type( v );
45
+ }
46
+ self.messages.push( m );
47
+ self.map_id_to_index['_'+v['id'] ] = i;
48
+ self.map_type_to_index[ v['type'] ] = jQuery.isArray(self.map_type_to_index[ v['type'] ]) ? self.map_type_to_index[ v['type'] ] : new Array();
49
+ self.map_type_to_index[ v['type'] ].push(i);
50
+ });
51
+ }
52
 
53
+ // Submit event data on unload and at every 5 seconds...
54
  jQuery( window ).unload( function() {
55
  if (typeof(window.icegram.submit_tracking_data) === 'function') {
56
  window.icegram.submit_tracking_data();
57
  }
58
  } );
59
+ setTimeout( function() {
60
+ if (typeof(window.icegram.submit_tracking_data) === 'function') {
61
+ window.icegram.submit_tracking_data();
62
+ } } , 5 * 1000 );
63
+
64
 
65
  // Trigger event for others!
66
  jQuery( window ).trigger( 'init.icegram', [ this ] );
134
  data: {
135
  action: 'icegram_event_track',
136
  event_data: this.tracking_data
137
+ },
138
+ success: function(data, status, xhr) {
139
+ window.icegram.tracking_data = [];
140
  }
141
  });
142
  }
215
  this.el.find('.ig_content').css('background-color', this.data.bg_color);
216
  }
217
 
218
+ if(this.data.label == undefined || this.data.label == '') {
219
+ this.el.find('.ig_button').hide();
220
+ }else if (this.data.bg_color != undefined && this.data.bg_color != '') {
221
+ var hsl_color = window.icegram.get_complementary_color(this.data.bg_color);
222
+ this.el.find('.ig_button').css('background-color', "hsl(" + hsl_color.h + "," + hsl_color.s + "%," + hsl_color.l + "%)" );
223
+ }
224
  // Hint clickability for buttons / ctas
225
  if (typeof(this.data.link) === 'string' && this.data.link != '') {
226
  this.el.parent().find('.ig_cta, .ig_button').css('cursor', 'pointer');
234
  // Set up message display trigger
235
  this.set_up_show_trigger();
236
  }
237
+
238
 
239
  Icegram_Message_Type.prototype.render_template = function ( ) {
240
  if ( typeof(window.icegram.get_template_fn( this.type ) ) !== 'function') {
371
  });
372
  }
373
 
374
+ Icegram.prototype.get_complementary_color = function (hex) {
375
+
376
+ hex = hex.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i , function(m, r, g, b) {
377
+ return r + r + g + g + b + b;
378
+ });
379
+
380
+ var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
381
+ if(result){
382
+ var r = parseInt(result[1], 16);
383
+ var g = parseInt(result[2], 16);
384
+ var b = parseInt(result[3], 16);
385
+ var brightness = Math.sqrt(r * r * .241 + g * g * .691 + b * b * .068);
386
+ r /= 255;
387
+ g /= 255;
388
+ b /= 255;
389
+
390
+ var maxColor = Math.max(r, g, b);
391
+ var minColor = Math.min(r, g, b);
392
+ //Calculate L:
393
+ var L = (maxColor + minColor) / 2 ;
394
+ var S = 0;
395
+ var H = 0;
396
+ if(maxColor != minColor){
397
+ //Calculate S:
398
+ S = (L < 0.5) ? (maxColor - minColor) / (maxColor + minColor) : (maxColor - minColor) / (2.0 - maxColor - minColor) ;
399
+ //Calculate H:
400
+ if(r == maxColor){
401
+ H = (g - b) / (maxColor - minColor);
402
+ }else if(g == maxColor){
403
+ H = 2.0 + (b - r) / (maxColor - minColor);
404
+ }else{
405
+ H = 4.0 + (r - g) / (maxColor - minColor);
406
+ }
407
+ }
408
+
409
+ L = Math.floor(L * 100);
410
+ S = Math.floor(S * 100);
411
+ H = Math.floor(H * 60);
412
+ if(H<0){
413
+ H += 360;
414
+ }
415
+ if(brightness > 130){
416
+ S -= 15;
417
+ L -= 25;
418
+ }else{
419
+ S += 15;
420
+ L += 25;
421
+ }
422
+
423
+ return {h: H, s: S, l: L};
424
+ } // result if
425
+ return null;
426
+ }
427
+
428
  if (typeof Object.create != 'function') {
429
  (function () {
430
  var F = function () {};
classes/class-icegram-campaign-admin.php CHANGED
@@ -33,7 +33,7 @@ if ( !class_exists( 'Icegram_Campaign_Admin' ) ) {
33
  // Initialize campaign metabox
34
  function add_campaigns_metaboxes() {
35
  $meta_box_title = __( 'Message', 'icegram' );
36
- add_meta_box( 'campaign_data', $meta_box_title, array( &$this, 'campaign_data_content' ), 'ig_campaign', 'normal', 'high' );
37
  add_meta_box( 'campaign_target_rules', __( 'Targeting Rules', 'icegram' ), array( &$this, 'campaign_target_rules_content' ), 'ig_campaign', 'normal' );
38
  }
39
 
@@ -147,6 +147,20 @@ if ( !class_exists( 'Icegram_Campaign_Admin' ) ) {
147
  <?php _e( 'Sitewide', 'icegram' ); ?>
148
  </label>
149
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
  <p class="form-field">
151
  <label class="options_header">&nbsp;</label>
152
  <label for="where_homepage">
@@ -427,6 +441,10 @@ if ( !class_exists( 'Icegram_Campaign_Admin' ) ) {
427
  $campaign_target_rules['page_id'] = $_POST['page_id'];
428
  update_post_meta( $post_id, 'icegram_campaign_target_pages', $_POST['page_id'] );
429
  }
 
 
 
 
430
 
431
  if ( count( $campaign_target_rules ) > 0 ) {
432
  update_post_meta( $post_id, 'icegram_campaign_target_rules', $campaign_target_rules );
33
  // Initialize campaign metabox
34
  function add_campaigns_metaboxes() {
35
  $meta_box_title = __( 'Message', 'icegram' );
36
+ add_meta_box( 'campaign_data', $meta_box_title, array( &$this, 'campaign_data_content' ), 'ig_campaign', 'normal', 'default' );
37
  add_meta_box( 'campaign_target_rules', __( 'Targeting Rules', 'icegram' ), array( &$this, 'campaign_target_rules_content' ), 'ig_campaign', 'normal' );
38
  }
39
 
147
  <?php _e( 'Sitewide', 'icegram' ); ?>
148
  </label>
149
  </p>
150
+ <p class="form-field" <?php echo ( !empty( $campaign_target_rules['sitewide'] ) && $campaign_target_rules['sitewide'] == 'yes' ) ? '' : 'style="display: none;"'; ?>>
151
+ <label class="options_header"></label>
152
+ <?php
153
+ echo '<select name="exclude_page_id[]" id="exclude_page_id" data-placeholder="' . __( 'Select pages to exclude&hellip;', 'icegram' ) . '" style="min-width:300px;" class="icegram_chosen_page" multiple>';
154
+ foreach ( get_pages() as $page ) {
155
+ echo '<option value="' . $page->ID . '"';
156
+ if( !empty( $campaign_target_rules['exclude_page_id'] ) ) {
157
+ echo selected( in_array( $page->ID, $campaign_target_rules['exclude_page_id'] ) );
158
+ }
159
+ echo '>' . $page->post_title . '</option>';
160
+ }
161
+ echo '</select>';
162
+ ?>
163
+ </p>
164
  <p class="form-field">
165
  <label class="options_header">&nbsp;</label>
166
  <label for="where_homepage">
441
  $campaign_target_rules['page_id'] = $_POST['page_id'];
442
  update_post_meta( $post_id, 'icegram_campaign_target_pages', $_POST['page_id'] );
443
  }
444
+ if ( isset( $_POST['exclude_page_id'] ) ) {
445
+ $campaign_target_rules['exclude_page_id'] = $_POST['exclude_page_id'];
446
+ update_post_meta( $post_id, 'icegram_campaign_target_pages', $_POST['exclude_page_id'] );
447
+ }
448
 
449
  if ( count( $campaign_target_rules ) > 0 ) {
450
  update_post_meta( $post_id, 'icegram_campaign_target_rules', $campaign_target_rules );
classes/class-icegram-campaign.php CHANGED
@@ -21,7 +21,6 @@ if ( !class_exists( 'Icegram_Campaign' ) ) {
21
  $this->title = $this->_post->post_title;
22
  $this->messages = get_post_meta( $this->_post->ID, 'messages', true );
23
  $this->rules = get_post_meta( $this->_post->ID, 'icegram_campaign_target_rules', true );
24
-
25
  $this->rules_summary['where'] = array(
26
  'homepage' => ( !empty( $this->rules['homepage'] ) ) ? $this->rules['homepage'] : '',
27
  'other_page' => ( !empty( $this->rules['other_page'] ) && $this->rules['other_page'] == 'yes' && !empty( $this->rules['page_id'] ) ) ? $this->rules['page_id'] : '',
@@ -112,16 +111,20 @@ if ( !class_exists( 'Icegram_Campaign' ) ) {
112
  }
113
 
114
  function _is_valid_page( $campaign_valid, $campaign, $options ) {
 
115
  if( !$campaign_valid || !empty($options['skip_page_check']) ) {
116
  return $campaign_valid;
117
  }
118
- if ( !empty( $campaign->rules_summary['where']['sitewide'] ) && $campaign->rules_summary['where']['sitewide'] == 'yes' ) {
 
 
 
119
  return true;
 
120
  }
121
  if ( !empty( $campaign->rules_summary['where']['homepage'] ) && $campaign->rules_summary['where']['homepage'] == 'yes' && ( is_home() || is_front_page() ) ) {
122
  return true;
123
  }
124
- $page_id = Icegram::get_current_page_id();
125
  if ( !empty( $page_id ) ) {
126
  if ( !empty( $campaign->rules_summary['where']['other_page'] ) && in_array( $page_id, $campaign->rules_summary['where']['other_page'] ) ) {
127
  return true;
21
  $this->title = $this->_post->post_title;
22
  $this->messages = get_post_meta( $this->_post->ID, 'messages', true );
23
  $this->rules = get_post_meta( $this->_post->ID, 'icegram_campaign_target_rules', true );
 
24
  $this->rules_summary['where'] = array(
25
  'homepage' => ( !empty( $this->rules['homepage'] ) ) ? $this->rules['homepage'] : '',
26
  'other_page' => ( !empty( $this->rules['other_page'] ) && $this->rules['other_page'] == 'yes' && !empty( $this->rules['page_id'] ) ) ? $this->rules['page_id'] : '',
111
  }
112
 
113
  function _is_valid_page( $campaign_valid, $campaign, $options ) {
114
+ $page_id = Icegram::get_current_page_id();
115
  if( !$campaign_valid || !empty($options['skip_page_check']) ) {
116
  return $campaign_valid;
117
  }
118
+ if ( (!empty( $campaign->rules_summary['where']['sitewide'] ) && $campaign->rules_summary['where']['sitewide'] == 'yes' )) {
119
+ if (!empty($campaign->rules['exclude_page_id']) && in_array($page_id, $campaign->rules['exclude_page_id'])){
120
+ return false;
121
+ }else{
122
  return true;
123
+ }
124
  }
125
  if ( !empty( $campaign->rules_summary['where']['homepage'] ) && $campaign->rules_summary['where']['homepage'] == 'yes' && ( is_home() || is_front_page() ) ) {
126
  return true;
127
  }
 
128
  if ( !empty( $page_id ) ) {
129
  if ( !empty( $campaign->rules_summary['where']['other_page'] ) && in_array( $page_id, $campaign->rules_summary['where']['other_page'] ) ) {
130
  return true;
classes/class-icegram-message-admin.php CHANGED
@@ -280,7 +280,7 @@ if ( !class_exists( 'Icegram_Message_Admin' ) ) {
280
  // Used to save the settings which are being made in the message form and added to message page appropriately
281
  function update_message_settings( $post_id, $post ) {
282
 
283
- if (empty( $post_id ) || empty( $post ) || empty( $_POST )) return;
284
  if (defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE) return;
285
  if (is_int( wp_is_post_revision( $post ) )) return;
286
  if (is_int( wp_is_post_autosave( $post ) )) return;
280
  // Used to save the settings which are being made in the message form and added to message page appropriately
281
  function update_message_settings( $post_id, $post ) {
282
 
283
+ if (empty( $post_id ) || empty( $post ) || empty( $_POST['message_data'] ) || empty( $_POST['message_data'][$post_id] ) ) return;
284
  if (defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE) return;
285
  if (is_int( wp_is_post_revision( $post ) )) return;
286
  if (is_int( wp_is_post_autosave( $post ) )) return;
icegram.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Icegram
4
  * Plugin URI: http://www.icegram.com/
5
  * Description: All in one solution to inspire, convert and engage your audiences. Action bars, Popup windows, Messengers, Toast notifications and more. Awesome themes and powerful rules.
6
- * Version: 1.3
7
  * Author: Icegram
8
  * Author URI: http://www.icegram.com/
9
  *
@@ -33,7 +33,7 @@ class Icegram {
33
 
34
  function __construct() {
35
 
36
- $this->version = "1.3";
37
  $this->shortcode_instances = array();
38
  $this->plugin_url = untrailingslashit( plugins_url( '/', __FILE__ ) );
39
  $this->plugin_path = untrailingslashit( plugin_dir_path( __FILE__ ) );
@@ -51,6 +51,7 @@ class Icegram {
51
 
52
  add_action( 'icegram_settings_after', array( &$this, 'klawoo_subscribe_form' ) );
53
  add_action( 'icegram_about_changelog', array( &$this, 'klawoo_subscribe_form' ) );
 
54
  } else {
55
  add_action( 'wp_footer', array( &$this, 'display_messages' ) );
56
  //add_action( 'wp_head', array( &$this, 'nofollow_noindex' ) );
@@ -70,6 +71,7 @@ class Icegram {
70
  add_action( 'wp_ajax_icegram_event_track', array( &$this, 'icegram_event_track' ) );
71
  add_action( 'wp_ajax_nopriv_icegram_event_track', array( &$this, 'icegram_event_track' ) );
72
  add_action( 'wp_ajax_klawoo_subscribe', array( &$this, 'klawoo_subscribe' ) );
 
73
  }
74
 
75
  }
@@ -79,12 +81,12 @@ class Icegram {
79
  <div class="wrap">
80
  <?php
81
  if ( stripos(get_current_screen()->base, 'settings') !== false ) {
82
- echo "<h2>".__( 'Get Updates', 'icegram' )."</h2>";
83
  }
84
  ?>
85
  <table class="form-table">
86
  <tr>
87
- <th scope="row"><?php _e( 'Join our newsletter', 'icegram' ) ?></th>
88
  <td>
89
  <form name="klawoo_subscribe" action="#" method="POST" accept-charset="utf-8">
90
  <input class="ltr" type="text" name="name" id="name" placeholder="Name"/>
@@ -126,6 +128,7 @@ class Icegram {
126
  <?php
127
  }
128
 
 
129
  public function klawoo_subscribe() {
130
  $url = 'http://app.klawoo.com/subscribe';
131
 
@@ -167,6 +170,96 @@ class Icegram {
167
  exit();
168
  }
169
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
170
  public function icegram_event_track() {
171
 
172
  if( !empty( $_POST['event_data'] ) ) {
@@ -216,12 +309,10 @@ class Icegram {
216
  }
217
 
218
  function db_update() {
219
-
220
  $current_db_version = get_option( 'icegram_db_version' );
221
  if ( !$current_db_version || version_compare( $current_db_version, '1.2', '<' ) ) {
222
  include( 'updates/icegram-update-1.2.php' );
223
  }
224
-
225
  }
226
 
227
  public function admin_menus() {
@@ -421,11 +512,11 @@ class Icegram {
421
  'powered_by_text' => __( 'Powered by Icegram', 'icegram' )
422
  ) );
423
  $messages = apply_filters( 'icegram_messages_to_show', $messages );
424
- $icegram = array ( 'messages' => array_values( $messages ),
425
  'ajax_url' => admin_url( 'admin-ajax.php' ),
426
  'preview_id' => !empty( $_GET['campaign_preview_id'] ) ? $_GET['campaign_preview_id'] : '',
427
  'defaults' => $icegram_default
428
- );
429
  if (empty($icegram['preview_id'])) {
430
  unset($icegram['preview_id']);
431
  }
@@ -549,6 +640,7 @@ class Icegram {
549
  global $wpdb;
550
 
551
  $message_data = array();
 
552
  $meta_key = $preview ? 'icegram_message_preview_data' : 'icegram_message_data';
553
  $message_data_query = "SELECT post_id, meta_value FROM {$wpdb->prefix}postmeta WHERE meta_key LIKE '$meta_key'";
554
  if ( !empty( $message_ids ) && is_array( $message_ids ) ) {
@@ -557,7 +649,9 @@ class Icegram {
557
  $wpml_settings = get_option('icl_sitepress_settings');
558
  $original_if_missing = (is_array($wpml_settings) && array_key_exists('show_untranslated_blog_posts', $wpml_settings) && !empty($wpml_settings['show_untranslated_blog_posts']) ) ? true : false;
559
  foreach ($message_ids as $i=>$id ) {
560
- $message_ids[ $i ] = icl_object_id( $id, 'ig_message', $original_if_missing );
 
 
561
  }
562
  }
563
  $message_ids = array_filter(array_unique($message_ids));
@@ -566,6 +660,10 @@ class Icegram {
566
  $message_data_results = $wpdb->get_results( $message_data_query, 'ARRAY_A' );
567
  foreach ( $message_data_results as $message_data_result ) {
568
  $message_data[$message_data_result['post_id']] = maybe_unserialize( $message_data_result['meta_value'] );
 
 
 
 
569
  }
570
  }
571
  }
@@ -629,11 +727,12 @@ class Icegram {
629
  $message_data['campaign_id'] = ($preview_mode) ? $_GET['campaign_preview_id'] : '';
630
 
631
  // Pull display time and retargeting rule from campaign if possible
632
- if (!empty($message_campaign_map[ $id ])) {
633
- $message_data['campaign_id'] = $message_campaign_map[ $id ];
 
634
  $campaign = $valid_campaigns[ $message_data['campaign_id'] ];
635
  if (!empty($campaign) && $campaign instanceof Icegram_Campaign) {
636
- $message_meta_from_campaign = $campaign->get_message_meta_by_id( $id );
637
  if (!empty($message_meta_from_campaign['time'])) {
638
  $message_data['delay_time'] = $message_meta_from_campaign['time'];
639
  }
@@ -1044,6 +1143,7 @@ class Icegram {
1044
  global $post, $wpdb;
1045
 
1046
  $obj = get_queried_object();
 
1047
  if( !empty( $obj->has_archive ) ) {
1048
  $id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type='page'", $obj->has_archive ) );
1049
  } elseif( is_object( $post ) && isset( $post->ID ) ) {
3
  * Plugin Name: Icegram
4
  * Plugin URI: http://www.icegram.com/
5
  * Description: All in one solution to inspire, convert and engage your audiences. Action bars, Popup windows, Messengers, Toast notifications and more. Awesome themes and powerful rules.
6
+ * Version: 1.4
7
  * Author: Icegram
8
  * Author URI: http://www.icegram.com/
9
  *
33
 
34
  function __construct() {
35
 
36
+ $this->version = "1.4";
37
  $this->shortcode_instances = array();
38
  $this->plugin_url = untrailingslashit( plugins_url( '/', __FILE__ ) );
39
  $this->plugin_path = untrailingslashit( plugin_dir_path( __FILE__ ) );
51
 
52
  add_action( 'icegram_settings_after', array( &$this, 'klawoo_subscribe_form' ) );
53
  add_action( 'icegram_about_changelog', array( &$this, 'klawoo_subscribe_form' ) );
54
+ add_action( 'icegram_settings_after', array( &$this, 'icegram_houskeeping' ) );
55
  } else {
56
  add_action( 'wp_footer', array( &$this, 'display_messages' ) );
57
  //add_action( 'wp_head', array( &$this, 'nofollow_noindex' ) );
71
  add_action( 'wp_ajax_icegram_event_track', array( &$this, 'icegram_event_track' ) );
72
  add_action( 'wp_ajax_nopriv_icegram_event_track', array( &$this, 'icegram_event_track' ) );
73
  add_action( 'wp_ajax_klawoo_subscribe', array( &$this, 'klawoo_subscribe' ) );
74
+ add_action( 'wp_ajax_icegram_run_housekeeping', array( &$this, 'run_housekeeping' ) );
75
  }
76
 
77
  }
81
  <div class="wrap">
82
  <?php
83
  if ( stripos(get_current_screen()->base, 'settings') !== false ) {
84
+ echo "<h2>".__( 'Free Add-ons, Proven Marketing Tricks and Updates', 'icegram' )."</h2>";
85
  }
86
  ?>
87
  <table class="form-table">
88
  <tr>
89
+ <th scope="row"><?php _e( 'Get add-ons and tips...', 'icegram' ) ?></th>
90
  <td>
91
  <form name="klawoo_subscribe" action="#" method="POST" accept-charset="utf-8">
92
  <input class="ltr" type="text" name="name" id="name" placeholder="Name"/>
128
  <?php
129
  }
130
 
131
+
132
  public function klawoo_subscribe() {
133
  $url = 'http://app.klawoo.com/subscribe';
134
 
170
  exit();
171
  }
172
 
173
+ public function icegram_houskeeping(){
174
+ ?>
175
+ <div class="wrap">
176
+ <?php
177
+ if ( stripos(get_current_screen()->base, 'settings') !== false ) {
178
+ ?>
179
+ <form name="icegram_housekeeping" action="#" method="POST" accept-charset="utf-8">
180
+ <h2><?php _e( 'Housekeeping', 'icegram' ) ?></h2>
181
+ <p class="ig_housekeeping">
182
+ <label for="icegram_remove_shortcodes">
183
+ <input type="checkbox" name="icegram_remove_shortcodes" value="yes" />
184
+ <?php _e( 'Remove all Icegram shortcodes', 'icegram' ); ?>
185
+ </label>
186
+ <br/><br/>
187
+ <label for="icegram_remove_all_data">
188
+ <input type="checkbox" name="icegram_remove_all_data" value="yes" />
189
+ <?php _e( 'Remove all Icegram campaigns and messages', 'icegram' ); ?>
190
+ </label>
191
+ <br/><br/>
192
+ <img alt="" src="<?php echo admin_url( 'images/wpspin_light.gif' ) ?>" class="ig_loader" style="vertical-align:middle;display:none" />
193
+ <input type="submit" name="submit" id="submit" class="button button-primary" value="<?php _e( 'Clean Up', 'icegram' ); ?>">
194
+ <div id="icegram_housekeeping_response"></div>
195
+ </p>
196
+ </form>
197
+
198
+ </div>
199
+ <script type="text/javascript">
200
+ jQuery(function () {
201
+ jQuery("form[name=icegram_housekeeping]").submit(function (e) {
202
+ if(confirm("<?php _e( 'You won\'t be able to recover this data once you proceed. Do you really want to perform this action?', 'icegram' ); ?>") == true){
203
+ e.preventDefault();
204
+ jQuery('.ig_loader').show();
205
+ jQuery('#icegram_housekeeping_response').text("");
206
+ params = jQuery("form[name=icegram_housekeeping]").serializeArray();
207
+ params.push( {name: 'action', value: 'icegram_run_housekeeping' });
208
+
209
+ jQuery.ajax({
210
+ method: 'POST',
211
+ type: 'text',
212
+ url: "<?php echo admin_url( 'admin-ajax.php' ); ?>",
213
+ data: params,
214
+ success: function(response) {
215
+ jQuery('.ig_loader').hide();
216
+ jQuery('#icegram_housekeeping_response').text("<?php _e('Done!', 'icegram'); ?>");
217
+ }
218
+ });
219
+ }
220
+ });
221
+ });
222
+ </script>
223
+ <?php
224
+ }
225
+ }
226
+ public function run_housekeeping() {
227
+ global $wpdb;
228
+ $params = $_POST;
229
+ $_POST = array();
230
+
231
+ if(!empty($params['icegram_remove_shortcodes']) && $params['icegram_remove_shortcodes'] == 'yes') {
232
+ // first get all posts with [icegram] shortcode in them
233
+ $sql = "SELECT * FROM `$wpdb->posts` WHERE `post_content` LIKE '%[icegram %]%' and `post_type` != 'revision' ";
234
+ $posts = $wpdb->get_results($sql, OBJECT);
235
+ if ( !empty($posts) && is_array($posts) ) {
236
+ foreach ($posts as $post) {
237
+ $post_content = $post->post_content;
238
+ // remove shortcode with regexp now
239
+ $re = "/\\[icegram(.)*\\]/i";
240
+ $post_content = preg_replace($re, '', $post_content);
241
+ // save post content back
242
+ if ($post_content && $post_content != $post->post_content) {
243
+ wp_update_post( array ( 'ID' => $post->ID,
244
+ 'post_content' => $post_content
245
+ ) );
246
+ }
247
+ }
248
+ }
249
+ }
250
+
251
+ if(!empty($params['icegram_remove_all_data']) && $params['icegram_remove_all_data'] == 'yes') {
252
+ $posts = get_posts( array( 'post_type' => array( 'ig_campaign', 'ig_message' ) ) );
253
+ if ( !empty($posts) && is_array($posts) ) {
254
+ foreach ($posts as $post) {
255
+ wp_delete_post( $post->ID, true);
256
+ }
257
+ }
258
+ do_action('icegram_remove_all_data');
259
+ }
260
+ $_POST = $params;
261
+ }
262
+
263
  public function icegram_event_track() {
264
 
265
  if( !empty( $_POST['event_data'] ) ) {
309
  }
310
 
311
  function db_update() {
 
312
  $current_db_version = get_option( 'icegram_db_version' );
313
  if ( !$current_db_version || version_compare( $current_db_version, '1.2', '<' ) ) {
314
  include( 'updates/icegram-update-1.2.php' );
315
  }
 
316
  }
317
 
318
  public function admin_menus() {
512
  'powered_by_text' => __( 'Powered by Icegram', 'icegram' )
513
  ) );
514
  $messages = apply_filters( 'icegram_messages_to_show', $messages );
515
+ $icegram = apply_filters( 'icegram_data', array ( 'messages' => array_values( $messages ),
516
  'ajax_url' => admin_url( 'admin-ajax.php' ),
517
  'preview_id' => !empty( $_GET['campaign_preview_id'] ) ? $_GET['campaign_preview_id'] : '',
518
  'defaults' => $icegram_default
519
+ ));
520
  if (empty($icegram['preview_id'])) {
521
  unset($icegram['preview_id']);
522
  }
640
  global $wpdb;
641
 
642
  $message_data = array();
643
+ $original_message_id_map = array();
644
  $meta_key = $preview ? 'icegram_message_preview_data' : 'icegram_message_data';
645
  $message_data_query = "SELECT post_id, meta_value FROM {$wpdb->prefix}postmeta WHERE meta_key LIKE '$meta_key'";
646
  if ( !empty( $message_ids ) && is_array( $message_ids ) ) {
649
  $wpml_settings = get_option('icl_sitepress_settings');
650
  $original_if_missing = (is_array($wpml_settings) && array_key_exists('show_untranslated_blog_posts', $wpml_settings) && !empty($wpml_settings['show_untranslated_blog_posts']) ) ? true : false;
651
  foreach ($message_ids as $i=>$id ) {
652
+ $translated = icl_object_id( $id, 'ig_message', $original_if_missing );
653
+ $message_ids[ $i ] = $translated;
654
+ $original_message_id_map[ $translated ] = $id;
655
  }
656
  }
657
  $message_ids = array_filter(array_unique($message_ids));
660
  $message_data_results = $wpdb->get_results( $message_data_query, 'ARRAY_A' );
661
  foreach ( $message_data_results as $message_data_result ) {
662
  $message_data[$message_data_result['post_id']] = maybe_unserialize( $message_data_result['meta_value'] );
663
+ // For WPML compatibility
664
+ if (!empty( $original_message_id_map[ $message_data_result['post_id'] ])) {
665
+ $message_data[$message_data_result['post_id']]['original_message_id'] = $original_message_id_map[ $message_data_result['post_id'] ];
666
+ }
667
  }
668
  }
669
  }
727
  $message_data['campaign_id'] = ($preview_mode) ? $_GET['campaign_preview_id'] : '';
728
 
729
  // Pull display time and retargeting rule from campaign if possible
730
+ $message_id = (!empty($message_data['original_message_id'])) ? $message_data['original_message_id'] : $id;
731
+ if (!empty($message_campaign_map[ $message_id ])) {
732
+ $message_data['campaign_id'] = $message_campaign_map[ $message_id ];
733
  $campaign = $valid_campaigns[ $message_data['campaign_id'] ];
734
  if (!empty($campaign) && $campaign instanceof Icegram_Campaign) {
735
+ $message_meta_from_campaign = $campaign->get_message_meta_by_id( $message_id );
736
  if (!empty($message_meta_from_campaign['time'])) {
737
  $message_data['delay_time'] = $message_meta_from_campaign['time'];
738
  }
1143
  global $post, $wpdb;
1144
 
1145
  $obj = get_queried_object();
1146
+ $id = 0;
1147
  if( !empty( $obj->has_archive ) ) {
1148
  $id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type='page'", $obj->has_archive ) );
1149
  } elseif( is_object( $post ) && isset( $post->ID ) ) {
message-types/action-bar/default.css CHANGED
@@ -113,4 +113,13 @@ div.icegram .action_bar form {
113
  }
114
  div.icegram .action_bar input, div.icegram .action_bar label {
115
  display: inline-block;
 
 
 
 
 
 
 
 
 
116
  }
113
  }
114
  div.icegram .action_bar input, div.icegram .action_bar label {
115
  display: inline-block;
116
+ }
117
+
118
+ div.icegram .action_bar .clear:after {
119
+ content: ".";
120
+ display: block;
121
+ clear: both;
122
+ visibility: hidden;
123
+ line-height: 0;
124
+ height: 0;
125
  }
message-types/action-bar/main.js CHANGED
@@ -11,7 +11,7 @@ Icegram_Message_Type_Action_Bar.prototype.constructor = Icegram_Message_Type_Act
11
  Icegram_Message_Type_Action_Bar.prototype.get_template_default = function () {
12
  return '<div class="icegram action_bar_{{=id}}" >'+
13
  '<div class="action_bar ig_container {{=theme}}" id="icegram_message_{{=id}}">'+
14
- '<div class="ig_content">'+
15
  '<div class="ig_arrow_block" id="action_bar_close_{{=id}}">'+
16
  '<span class="ig_arrow"></span>'+
17
  '</div>'+
@@ -34,9 +34,6 @@ Icegram_Message_Type_Action_Bar.prototype.post_render = function ( ) {
34
  var message_button = this.el.find('.ig_button');
35
  this.el.find('.ig_data').append(message_button);
36
  }
37
- if ( this.data.theme == 'air-mail') {
38
- this.el.find('.ig_content').css('background-color', this.data.bg_color);
39
- }
40
  };
41
 
42
  Icegram_Message_Type_Action_Bar.prototype.set_position = function ( ) {
@@ -58,7 +55,7 @@ Icegram_Message_Type_Action_Bar.prototype.is_visible = function ( ) {
58
  };
59
 
60
  Icegram_Message_Type_Action_Bar.prototype.show = function ( options, silent ) {
61
- //if ( this.is_visible() ) return; TODO:: we are not hiding action bar we are sliding up with css need to check
62
  var anim_delay = silent !== true ? 1000 : 0;
63
  switch(this.data.position) {
64
  case "21":
@@ -113,7 +110,7 @@ Icegram_Message_Type_Action_Bar.prototype.add_powered_by = function ( pb ) {
113
  };
114
 
115
  Icegram_Message_Type_Action_Bar.prototype.hide = function ( options, silent ) {
116
- //if ( !this.is_visible() ) return; //TODO:: need to check this this is not workig for action bar
117
  var self = this;
118
  var anim_delay = silent !== true ? 1000 : 0;
119
  switch(this.data.position) {
11
  Icegram_Message_Type_Action_Bar.prototype.get_template_default = function () {
12
  return '<div class="icegram action_bar_{{=id}}" >'+
13
  '<div class="action_bar ig_container {{=theme}}" id="icegram_message_{{=id}}">'+
14
+ '<div class="ig_content clear">'+
15
  '<div class="ig_arrow_block" id="action_bar_close_{{=id}}">'+
16
  '<span class="ig_arrow"></span>'+
17
  '</div>'+
34
  var message_button = this.el.find('.ig_button');
35
  this.el.find('.ig_data').append(message_button);
36
  }
 
 
 
37
  };
38
 
39
  Icegram_Message_Type_Action_Bar.prototype.set_position = function ( ) {
55
  };
56
 
57
  Icegram_Message_Type_Action_Bar.prototype.show = function ( options, silent ) {
58
+ if ( this.is_visible() ) return; //TODO:: we are not hiding action bar we are sliding up with css need to check
59
  var anim_delay = silent !== true ? 1000 : 0;
60
  switch(this.data.position) {
61
  case "21":
110
  };
111
 
112
  Icegram_Message_Type_Action_Bar.prototype.hide = function ( options, silent ) {
113
+ if ( !this.is_visible() ) return; //TODO:: need to check this this is not workig for action bar
114
  var self = this;
115
  var anim_delay = silent !== true ? 1000 : 0;
116
  switch(this.data.position) {
message-types/action-bar/themes/air-mail.css CHANGED
@@ -57,42 +57,32 @@
57
  .action_bar.air-mail .ig_data {
58
  max-width: 75%;
59
  display: inline-block;
 
60
  }
61
 
62
  .action_bar.air-mail .ig_button, .action_bar.air-mail input[type="submit"], .action_bar.air-mail input[type="button"] {
63
- letter-spacing: 1px;
64
- vertical-align: text-bottom;
 
 
 
 
 
 
 
65
  text-align: center;
 
66
  display: inline-block;
67
- color: #FFF;
68
- background: hsl(216, 46%, 50%);
69
- white-space: nowrap;
70
- border: 2px solid #fff !important;
71
- font-weight: 500;
72
- font-style: normal;
73
- position: relative;
74
- -moz-border-radius: 2px;
75
- -webkit-border-radius: 2px;
76
- border-radius: 2px;
77
- padding: .7em 2em;
78
  }
79
 
80
  .action_bar.air-mail .ig_button:hover, .action_bar.air-mail input[type="submit"]:hover, .action_bar.air-mail input[type="button"]:hover {
81
- color: rgb(242, 245, 250);
82
- background: hsl(216, 50%, 47%);
83
- text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.1);
84
- border: 2px solid #4472b9 !important;
85
  }
86
 
87
  .action_bar.air-mail .ig_button:active, .action_bar.air-mail input[type="submit"]:active, .action_bar.air-mail input[type="button"]:active {
88
- -moz-transform: translate(1px, 4px);
89
- -ms-transform: translate(1px, 4px);
90
- -o-transform: translate(1px, 4px);
91
- -webkit-transform: translate(1px, 4px);
92
- transform: translate(1px, 4px);
93
- -moz-box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.5);
94
- -webkit-box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.5);
95
- box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.5);
96
  }
97
 
98
  .action_bar.air-mail .ig_close {
57
  .action_bar.air-mail .ig_data {
58
  max-width: 75%;
59
  display: inline-block;
60
+ float: left;
61
  }
62
 
63
  .action_bar.air-mail .ig_button, .action_bar.air-mail input[type="submit"], .action_bar.air-mail input[type="button"] {
64
+ background: hsl(6, 78%, 57%) !important;
65
+ -moz-border-radius: 5px;
66
+ -webkit-border-radius: 5px;
67
+ border-radius: 5px;
68
+ border-bottom: 3px solid hsl(6, 63%, 46%);
69
+ color: hsl(0, 0%, 100%);
70
+ text-transform: uppercase;
71
+ font-family: "Open Sans", sans-serif;
72
+ font-weight: 600;
73
  text-align: center;
74
+ margin: 0 auto;
75
  display: inline-block;
76
+ padding: .5em 2em;
77
+
 
 
 
 
 
 
 
 
 
78
  }
79
 
80
  .action_bar.air-mail .ig_button:hover, .action_bar.air-mail input[type="submit"]:hover, .action_bar.air-mail input[type="button"]:hover {
81
+ margin-top: -3px;
82
+ border-bottom: 6px solid #c0392b;
 
 
83
  }
84
 
85
  .action_bar.air-mail .ig_button:active, .action_bar.air-mail input[type="submit"]:active, .action_bar.air-mail input[type="button"]:active {
 
 
 
 
 
 
 
 
86
  }
87
 
88
  .action_bar.air-mail .ig_close {
message-types/action-bar/themes/bold.css CHANGED
@@ -38,20 +38,19 @@
38
  .action_bar.bold .ig_data {
39
  max-width: 75%;
40
  display: inline-block;
 
41
  }
42
 
43
  .action_bar.bold .ig_button, .action_bar.bold input[type="submit"], .action_bar.bold input[type="button"] {
44
- background: hsl(145, 82%, 30%);
45
- color: hsl(0, 100%, 100%);
46
  display: inline-block;
47
  font-size: 1em;
48
  letter-spacing: 1px;
49
  vertical-align: text-bottom;
50
  font-weight: 700;
51
  text-align: center;
52
- -moz-box-shadow: inset 0 -3px 1px rgba(0, 0, 0, 0.45), 0 2px 2px rgba(0, 0, 0, 0.25);
53
- -webkit-box-shadow: inset 0 -3px 1px rgba(0, 0, 0, 0.45), 0 2px 2px rgba(0, 0, 0, 0.25);
54
- box-shadow: inset 0 -3px 1px rgba(0, 0, 0, 0.45), 0 2px 2px rgba(0, 0, 0, 0.25);
55
  -moz-border-radius: 3px;
56
  -webkit-border-radius: 3px;
57
  border-radius: 3px;
@@ -62,16 +61,13 @@
62
  .action_bar.bold .ig_button:active, .action_bar.bold input[type="submit"]:active, .action_bar.bold input[type="button"]:active {
63
  position: relative;
64
  top: 3px;
65
- -moz-box-shadow: inset 0 -3px 1px #2ECC70, inset 0 0 3px #2ECC70;
66
- -webkit-box-shadow: inset 0 -3px 1px #2ECC70, inset 0 0 3px #2ECC70;
67
- box-shadow: inset 0 -3px 1px #2ECC70, inset 0 0 3px #2ECC70;
68
  }
69
 
70
  .action_bar.bold .ig_arrow_block.border {
71
  border: 3px solid #fff;
72
- -moz-box-shadow: 0 0 5px hsla(0, 0%, 0%, 0.35);
73
- -webkit-box-shadow: 0 0 5px hsla(0, 0%, 0%, 0.35);
74
- box-shadow: 0 0 5px hsla(0, 0%, 0%, 0.35);
75
  -moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.35);
76
  -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.35);
77
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.35);
@@ -90,4 +86,4 @@
90
  -webkit-border-radius: 0 0 5px 5px;
91
  border-radius: 0 0 5px 5px;
92
  padding: .8em .4em;
93
- }
38
  .action_bar.bold .ig_data {
39
  max-width: 75%;
40
  display: inline-block;
41
+ float: left;
42
  }
43
 
44
  .action_bar.bold .ig_button, .action_bar.bold input[type="submit"], .action_bar.bold input[type="button"] {
 
 
45
  display: inline-block;
46
  font-size: 1em;
47
  letter-spacing: 1px;
48
  vertical-align: text-bottom;
49
  font-weight: 700;
50
  text-align: center;
51
+ -moz-box-shadow: inset 0 -3px 1px rgba(0, 0, 0, 0.35), 0 2px 2px rgba(0, 0, 0, 0.25);
52
+ -webkit-box-shadow: inset 0 -3px 1px rgba(0, 0, 0, 0.35), 0 2px 2px rgba(0, 0, 0, 0.25);
53
+ box-shadow: inset 0 -3px 1px rgba(0, 0, 0, 0.35), 0 2px 2px rgba(0, 0, 0, 0.25);
54
  -moz-border-radius: 3px;
55
  -webkit-border-radius: 3px;
56
  border-radius: 3px;
61
  .action_bar.bold .ig_button:active, .action_bar.bold input[type="submit"]:active, .action_bar.bold input[type="button"]:active {
62
  position: relative;
63
  top: 3px;
64
+ -moz-box-shadow: none;
65
+ -webkit-box-shadow: none;
66
+ box-shadow: none;
67
  }
68
 
69
  .action_bar.bold .ig_arrow_block.border {
70
  border: 3px solid #fff;
 
 
 
71
  -moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.35);
72
  -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.35);
73
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.35);
86
  -webkit-border-radius: 0 0 5px 5px;
87
  border-radius: 0 0 5px 5px;
88
  padding: .8em .4em;
89
+ }
message-types/action-bar/themes/hello.css CHANGED
@@ -82,9 +82,6 @@
82
 
83
  .action_bar.hello .ig_arrow_block.border {
84
  border: 3px solid #fff;
85
- -moz-box-shadow: 0 0 5px hsla(0, 0%, 0%, 0.35);
86
- -webkit-box-shadow: 0 0 5px hsla(0, 0%, 0%, 0.35);
87
- box-shadow: 0 0 5px hsla(0, 0%, 0%, 0.35);
88
  -moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.35);
89
  -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.35);
90
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.35);
82
 
83
  .action_bar.hello .ig_arrow_block.border {
84
  border: 3px solid #fff;
 
 
 
85
  -moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.35);
86
  -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.35);
87
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.35);
message-types/action-bar/themes/solid.css CHANGED
@@ -29,11 +29,10 @@
29
  .action_bar.solid .ig_data {
30
  max-width: 75%;
31
  display: inline-block;
 
32
  }
33
 
34
  .action_bar.solid .ig_button, .action_bar.solid input[type="submit"], .action_bar.solid input[type="button"] {
35
- background: #02612B;
36
- color: hsl(0, 100%, 100%);
37
  display: inline-block;
38
  font-size: 1em;
39
  letter-spacing: .1em;
@@ -46,7 +45,9 @@
46
  }
47
 
48
  .action_bar.solid .ig_button:hover, .action_bar.solid input[type="submit"]:hover, .action_bar.solid input[type="button"]:hover {
49
- background-color: #25a25a;
 
 
50
  }
51
 
52
  .action_bar.solid.top .ig_arrow_block.border, .action_bar.solid.bottom .ig_arrow_block {
29
  .action_bar.solid .ig_data {
30
  max-width: 75%;
31
  display: inline-block;
32
+ float: left;
33
  }
34
 
35
  .action_bar.solid .ig_button, .action_bar.solid input[type="submit"], .action_bar.solid input[type="button"] {
 
 
36
  display: inline-block;
37
  font-size: 1em;
38
  letter-spacing: .1em;
45
  }
46
 
47
  .action_bar.solid .ig_button:hover, .action_bar.solid input[type="submit"]:hover, .action_bar.solid input[type="button"]:hover {
48
+ -moz-box-shadow: inset 0 -4em 0 rgba(255, 255, 255, 0.15);
49
+ -webkit-box-shadow: inset 0 -4em 0 rgba(255, 255, 255, 0.15);
50
+ box-shadow: inset 0 -4em 0 rgba(255, 255, 255, 0.15);
51
  }
52
 
53
  .action_bar.solid.top .ig_arrow_block.border, .action_bar.solid.bottom .ig_arrow_block {
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === Icegram ===
2
  Contributors: storeapps, nareshvachhani, niravmehta, ratnakardubey, putler
3
- Donate link:http://www.icegram.com/
4
- Tags: popup, window, hellobar, action bar, header bar, footer bar, notification, messenger, targeting, rules, auto responder, icegram, responsive, slide
5
  Requires at least: 3.9
6
- Tested up to: 3.9.1
7
- Stable tag: 1.3
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -14,17 +14,24 @@ All in one solution to inspire, convert and engage your audiences. Action bars,
14
 
15
  **The Ultimate Plugin To Capture Leads And Connect With Your Audience**
16
 
 
 
17
  = Includes: =
18
  * Popups, header / footer bars, notifications, messengers
19
  * Powerful targeting rules
20
  * All-in-one, fully integrated WordPress plugin
21
  * Compatible with auto responders, other plugins and themes
22
 
23
- = Beautiful, Customizable Theme Designs Proven to Engage & Convert =
 
 
 
 
 
24
  Icegram comes with 20 beautiful themes. They integrate well with your favorite WordPress theme and do not slow down your site. When you want to customize override styling with custom CSS.
25
 
26
- = Complete Control Over Message Content =
27
- Icegram gives you the fully powered WordPress editor for your content. You can use any layout and formatting for content within each message container.
28
 
29
  * Continue using powerful **short codes your theme provides** for layout and styling
30
  * Add **HD Videos / Audio or any other multimedia** content
@@ -36,6 +43,7 @@ Icegram gives you the fully powered WordPress editor for your content. You can u
36
  = Learn More =
37
 
38
  * **[Discover all features and see demos on official Icegram website](http://www.icegram.com/)**
 
39
  * Follow us on Twitter [@icegram](https://twitter.com/icegram/)
40
 
41
 
@@ -86,6 +94,9 @@ Contact Us, provide as much detail of the problem as you can. We will try to sol
86
 
87
  == Upgrade Notice ==
88
 
 
 
 
89
  = 1.3 =
90
  7 premium addons available now. Plus lot of improvements. Recommended upgrade.
91
 
@@ -103,6 +114,12 @@ Initial Release
103
 
104
 
105
  == Changelog ==
 
 
 
 
 
 
106
 
107
  = 1.3 =
108
  * NEW: 7 Premium add-ons available
1
  === Icegram ===
2
  Contributors: storeapps, nareshvachhani, niravmehta, ratnakardubey, putler
3
+ Donate link: http://www.icegram.com/
4
+ Tags: popup, window, hellobar, optin, lead capture, marketing, header, footer, notification, messenger, targeting, segment, responsive
5
  Requires at least: 3.9
6
+ Tested up to: 4.0
7
+ Stable tag: 1.4
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
14
 
15
  **The Ultimate Plugin To Capture Leads And Connect With Your Audience**
16
 
17
+ Decrease bounce rates, increase engagement and grab your visitors' attention with this unique marketing plugin.
18
+
19
  = Includes: =
20
  * Popups, header / footer bars, notifications, messengers
21
  * Powerful targeting rules
22
  * All-in-one, fully integrated WordPress plugin
23
  * Compatible with auto responders, other plugins and themes
24
 
25
+ [youtube http://www.youtube.com/watch?v=89N0SXDDvOI]
26
+
27
+ = Proven to Engage & Convert =
28
+ Icegram is based on time tested marketing and behavior science principles. Icegram messages have given phenomenal 60% click through rates to people and they never fail to deliver. When you use Icegram, you don't need to learn all those marketing secrets.. Icegram does that for you...
29
+
30
+ = Beautiful, Customizable Theme Designs =
31
  Icegram comes with 20 beautiful themes. They integrate well with your favorite WordPress theme and do not slow down your site. When you want to customize override styling with custom CSS.
32
 
33
+ = Complete Control Over Message Delivery & Content =
34
+ Determine where, when and how to show on-site marketing messages to visitors. Use fine grained targeting rules for niche segmentation. Plus, Icegram gives you the fully powered WordPress editor for your content. You can use any layout and formatting for content within each message container.
35
 
36
  * Continue using powerful **short codes your theme provides** for layout and styling
37
  * Add **HD Videos / Audio or any other multimedia** content
43
  = Learn More =
44
 
45
  * **[Discover all features and see demos on official Icegram website](http://www.icegram.com/)**
46
+ * **[Free and paid add-ons](http://www.icegram.com/addons/)**
47
  * Follow us on Twitter [@icegram](https://twitter.com/icegram/)
48
 
49
 
94
 
95
  == Upgrade Notice ==
96
 
97
+ = 1.4 =
98
+ Many small improvements. Support for analytics added. WordPress 4.0 compatible.
99
+
100
  = 1.3 =
101
  7 premium addons available now. Plus lot of improvements. Recommended upgrade.
102
 
114
 
115
 
116
  == Changelog ==
117
+ = 1.4 =
118
+ * NEW: Targeting Rule: "Exclude pages" from a site wide campaign
119
+ * NEW: Options to cleanup Icegram data and remove shortcodes from content
120
+ * NEW: CTA button color is automatically determined based on background color
121
+ * NEW: FREE Analytics add-on (available from www.icegram.com)
122
+ * Update: This version is compatible with WordPress 4.0
123
 
124
  = 1.3 =
125
  * NEW: 7 Premium add-ons available